macのターミナルのBEEP音を消す方法

この前、ボリューム変更の音を消したばかりですがこっちも気になります。
よくファイル名の補完の為に[TAB]キーを押しますがその度にピヨッてなるのが気になる。

方法ですがググったらすぐに出てきました。ホームディレクトリの.inputrcに「set bell-style none」を追記するだけでした、

私の環境では.inputrcファイルは無かったのですが以下のコマンドをターミナルから打ち込んでターミナルを再起動すれば以後ピヨりません。

echo "set bell-style none" >> ~/.inputrc

この方法には抜け道がありました。。。
ssh等で他のサーバにログインした場合は意味を成さなくなります。
そうするとサウンド設定かターミナルの設定で探すしか無いと見てみたら普通にありました。。。

termsetup

ターミナル→環境設定→設定タブのオーディオベルのチェックを外すだけでした。またビジュアルベルがどんなものか試したら一瞬ターミナルがフラッシュする効果でしたのでこちらを採用することにしました。

それでは快適なmacライフを。

iOSアプリの価格表示にあるプラス記号は何?

app
iOSアプリの価格表示部分にあるプラスですが、最初はApp内課金のことだと思っていました。
でもよく見ると「App内での購入あり」の表記と+記号が一致していないアプリもあったりしてどうやら違う意味のようだと思いググってみましたら、なんとユニバーサルアプリの表示でした。
・・・すごい分かりにくいです。

確かに、iPhoneアプリでもiPadで動作するものであれば互換性のところに表記が入っていて見分けがつかないことが有ります。

iPhoneアプリまたはユニバーサルアプリでの互換性の表記
「iOS 7.0 以降。iPhone、iPad および iPod touch 対応。iPhone5 用に最適化済み」

iPad専用アプリでの互換性の表記
「iOS 7.0 以降。iPad 対応。」

iPadでは基本的にiPhoneアプリを動作させることができるので大体上記の2種類に集約されます。
つまり説明文だけではユニバーサルなのかどうかがわからないからプラス記号で表現のようです。だったらUって書くか「App内での購入あり」の部分に「ユニバーサルアプリ」って併記してほしかったな。。。

App Storeのレビューで本名を出さない方法

レビューしたこと無いけどこれは設定しておいたほうがよさそうですね。

iTunesを起動。
iTunes Storeへアクセスして、左上の※自分のメールアドレスがあるボタンをクリック
またはメニューのStoreからアカウント(※自分のメールアドレス)を表示
設定の欄にニックネームの項目があります。

「新しいカスタマーレビューを投稿する、またはこれまでに匿名で投稿したレビューを再投稿するには、ニックネームを作成してください。」

と書いてありました。

その横に「ニックネームを作成する」のリンクがあるのでそれをクリック。
一度設定すると上記のメッセージはニックネームに、リンクは「ニックネームを編集する」に変わりました。

情報元:ライフハッカー
App Storeのレビューでニックネームを設定する方法

Macの音量調整の時の音を消す方法

情報元はライフハッカーからですが、今まで困っていながら対応しようとしてなかった。簡単にできるので早速適用。

「システム環境設定」を起動
「サウンド」をクリック
「サウンドエフェクト」タブを選択
「音量を変更するときにフィードバックを再生」のボックスのチェックを外す

情報元:ライフハッカー
Macで音量を上げ下げするときの「ポン」音を消す方法

iOSデベロッパプログラム更新 2013年版

昨年に初めてiOSデベロッパプログラムのメンバーシップに登録したのですが、更新が近くなったので更新方法を探してみました。

実は更新が近づいたら通知が来るものだと思っていたら期限一ヶ月を切っても来ない!これはどうしようと調べたところ古い情報が検索されて、ちょっと違う?みたいな感じになりましたが、現在2013年末〜2014年初現在では以下のページの案内で更新出来ました。

Program Renewals – iOS Developer Program – Support – Apple Developer
https://developer.apple.com/jp/support/ios/program-renewals.html

タイトルは英語ですが、日本語で表示されたので心配はないと思います。決済手続きが完了すると24時間以内にアクティベーションの案内が届きますので、メール本文のリンクからジャンプしアクティベーションを完了すれば手続きは完了です。

失念してたのですがCertificatesは期限が別なのでこれも新しい期限で作り直しが必要のようです。(まだ着手してないです)

まだ一つもアプリ作って無かったりするので結構グダグダな更新になってますが今年こそは!と気合入れて行きたいと思います。

SSH接続ユーザの強制ログアウト方法

ずっとログインしたままのユーザが居ると聞いてwコマンドで確認。
fオプションは接続元IPを非表示にします。これは最初から接続元が分かっているのであれば不要なのと実行中のコマンド内容が右端で切れてしまうのでそれを防ぐためにつけています。
実験的にVMのCentOS6.4で試してみました。

[root@CentOS64 ~]# w -f
08:40:57 up 15 min, 3 users, load average: 0.00, 0.03, 0.08
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 08:40 0.00s 0.05s 0.03s w -f
user1 pts/1 26Nov13 21days 0.01s 0.01s -bash
user2 pts/2 26Nov13 21days 0.01s 0.01s -bash

2人のユーザがログインしたまま放置されていました。全くけしからん。
次にpsコマンドの結果からsshdを抽出し対象のプロセスIDを調べます。

[root@CentOS64 ~]# ps ax | grep sshd
1093 ? Ss 0:00 /usr/sbin/sshd
1252 ? Ss 0:00 sshd: user1 [priv]
1256 ? S 0:00 sshd: user1@pts/1
1272 ? Ss 0:00 sshd: user2 [priv]
1276 ? S 0:00 sshd: user2@pts/2
1349 ? Ss 0:00 sshd: root@pts/0
1368 pts/0 S+ 0:00 grep sshd

ここで見るのはptsとついた行になります。
もっと絞り込めば、こんな感じでしょうか。

[root@CentOS64 ~]# ps ax | grep "sshd: .*@pts/"
1256 ? S 0:00 sshd: user1@pts/1
1276 ? S 0:00 sshd: user2@pts/2
1349 ? Ss 0:00 sshd: root@pts/0
1393 pts/0 S+ 0:00 grep sshd: .*@pts/

こうすれば対象のプロセスIDが1256と1276であることが分かります。

それでは殺しましょうw

[root@CentOS64 ~]# kill 1256
[root@CentOS64 ~]# kill 1276

これでログインしたままのユーザを強制排除できました。さっそく確認しましょう。

[root@CentOS64 ~]# ps ax | grep "sshd: .*@pts/"
1349 ? Ss 0:00 sshd: root@pts/0
1395 pts/0 S+ 0:00 grep sshd: .*@pts/

ね、生きていないですねw

用法は
・メンテしたいのでユーザに出て行って欲しい時
・不審な接続の排除
・通信切れ等で残ったゴミ接続の掃除
となります。

因みにユーザ権限では他のユーザを追い出すことは出来ませんのでご心配なく。

ポートフォワードを使って踏み台先のサーバにFileZillaでファイル送受信する

WinSCPはトンネルの設定があり単体で踏み台経由の接続ができますが、残念な事にこのツールがWindows版しか無い為、他のOSでは別の方法をとる必要があります。

その一例としてsshコマンドによるポートフォワードを使った接続を紹介します。

1.ターミナルを立ちあげてポートフォワードを行う

ssh -L <ローカルポート>:<転送先ホスト>:<転送先ポート> <踏み台ホスト>

ローカルポート:FileZillaに設定したいポート番号
転送先ホスト:踏み台からアクセスするサーバー
転送先ポート:踏み台からアクセス先のサーバーへ接続するポート

例えば普段SSHで以下のように接続する場合

ssh user1@172.16.33.43 (踏み台)
ssh user2@192.168.1.6 (転送先)

割り当てるローカルポート番号を10022とすると
ssh -L 10022:192.168.1.6:22 user1@172.16.33.43 -p 22

この状態でlocalhost:10022は172.16.33.43経由で192.168.1.6:22に接続される。
注意点としては上記コマンドを実行して172.16.33.43にログインした後は、FileZillaの作業が終わるまで閉じないこと。

2.FileZilla で接続する。
ホスト名に localhost、ポートに 設定したポート番号、ユーザ名はuser2
(上記の例で行くと 10022 を設定する)

WordPressの子テーマを作成しAdsenseを貼る

今まで直接テーマを書き換えていたためかテーマ更新の度に同じ作業をしていたので、面倒だなと思いつつ何か良い方法が無いか調べたところ今更ですが子テーマを作って継承するという方法を見つけました。

今回このブログで行った手順を説明します。(パーミッションの変更とかの細かいところは省略しました。その辺はサーバー環境に合わせて調整して下さい)

子テーマ作成の仕様についてはここでは省略しますので、仕様についてはこちらを参考にしてください。子テーマ – WordPress Codex 日本語版

  1. テーマのディレクトリに移動して子テーマのディレクトリを作成する
    例として小テーマのディレクトリをkidにしました
    # cd /var/www/htdocs/wp-content/themes/
    # mkdir kid
  2. style.cssを作成する
    # cd kid
    # vi style.css
    中身はこんな感じ(親テーマをtwentytenにしています)
    @charset “utf-8”;
    /*
    Theme Name: kid
    Theme URI: http: //example.com/
    Description: Twenty Ten theme の子テーマ
    Author: Anonymous
    Author URI: http: //example.com/about/
    Template: twentyten
    Version: 0.1.0
    */
    @import url(‘../twentyten/style.css’);ここで大事なのはTemplateの部分とimport urlの部分です。ここを間違えるとうまく継承できません。また親テーマと違うスタイルにする場合はこのファイルに追記します。
  3. 編集するテンプレートを親テーマからコピーする
    メニュー下とトップの記事のループそして個別ページの記事の下の部分に広告を付け加えるため以下3つをコピーしました。メニューはheader.php、トップの記事はloop.php、個別ページの記事はloop-single.phpです。
    cp -p ../twentyten/header.php ./
    cp -p ../twentyten/loop.php ./
    cp -p ../twentyten/loop-single.php ./
  4. Adsense用に編集する
    WordPressで有効にする為、管理画面のインストールされているテーマでリストから有効にする。
    それぞれのテンプレートにAdsenseのコードを追記します。
    例では
    メニュー下のテキスト広告 header.php </div><!– #access –>の次
    記事ループ中広告 loop.php 一番下の</div><!– #nav-below –>の手前
    個別ページ広告 loop-single.php </div><!– #nav-below –>の次
    にしました。
    あとはブログのテーマを子テーマに変更して終了です。

追記:サイドメニューの広告はウィジェットのテキストで直接Adsenseコードを貼り付けるだけで出来ます。テーマの編集は不要でした。

iPhoneアプリでUpside Downを有効にする

582587_443897552347814_1766475393_n

iOSアプリで画像の様にUpside Downも有効にすれば逆さにした時に回転するだろうと思ったらiPhoneアプリでは何故か無反応。iPadアプリの方は設定通り回転します。

どうやら回転の判定方法にマスクがかけてあって
iPadは
「UIInterfaceOrientationMaskAll」
だけどiPhoneは
「UIInterfaceOrientationMaskAllButUpsideDown」
で下向きだけ反応しないようになっているようです。

それでは下向きで回転したい場合はどうするかというと
ViewController.mに以下を追記すると下向きも反応するようになりました。

– (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskAll;
}