Glide Note

glidenote's blog

Octopressで構築されているCoolなサイト8選

Octopressの唯一の弱点とも言えるのがデザインテンプレートの少なさ。自分で作れば下記みたいなシャレオツなサイトが構築できます。

テンプレートをいじるとHTML5+CSS3+SASSの勉強にもなります。
Wordpressのデザインテーマと比較するとかなり見劣りしますが、Octopressが普及すればもっといろんなシャレオツなサイトが出てくるでしょう。

Sony Ericsson mini(S51SE)をRootedのまま4.0.2.A.0.61へアップデート

以前、Sony Ericsson mini(S51SE)のroot権限を取得 - Glide Note - グライドノートで Sony Ericsson mini(S51SE)のroot権限を取得していたのですが、4.0.2.A.0.61にアップデートしたらroot権限が無くなってしまい、 再度root権限取得のために作業したのでメモ。毎度のことながら自己責任で。

細かい手順は端折りますが、下記のような流れでうまくいきました。下記の作業はWindowsじゃないと作業が出来ません。

  1. WotanServer.comに登録
  2. Sony Ericsson Xperia mini S51SE Unlock Toolから下記2ツールをダウンロード
    • USB Flash Driver
    • WotanClient 3
  3. WotanClient 3を利用して、Sony Ericsson miniを工場出荷時の4.0.2.A.0.58に戻す(当然ですがデータが全部消えます)
  4. DooMLoRD’s Easy Rooting Toolkitを用いて以前と同じ手順でroot権限取得
  5. root権限取得したら、Sony Ericsson mini単体で4.0.2.A.0.61にアップデートする(輝度調整無効のためにファイル差し替えとかしてるとアップデートが出来なかったので、デフォの状態でアップデートをかける)
  6. 4.0.2.A.0.61のなってもrootedの状態なのを確認
  7. Titanium Backup(要root権限)で取得しておいたバックアップからアプリのデータを復元で以前の以前のRootedの状態に元通り

ちなみにWotanServerからS51SEのファームウェアは登録が必要ですが無料で取得できます。

関連記事

Rudixを利用して、Xcodeの無いMacにUnix系ソフトウェアを導入する

Rudix: The hassle-free way to get Unix programs on Mac OS X

MacでUnix系のソフトウェアを利用するときはHomebrewかMacPortsなどを利用するのが一般的かと思いますが、 両方ともXCodeを必要として、MBAといったディスク容量の少ないモデルだと、容量バカ食いのXCodeを入れるのはためらわれます。

私自身、HDD容量に余裕のあるMac miniにはXCodeとHomebrewを入れていますが、MBAにはディスク容量の問題からXcodeを入れていません。 (そもそも外部サーバにssh接続して、作業しているのでMacでコンパイル作業しないってのもありますが)

しかしながらXcodeを入れてないMacでもrsync3系やtmuxなど、Unix系のソフトウェアを利用したい事が少なからずあるので、 そんな時に利用するのがRudixです。

Rudixの仕組みとしてはあらかじめMac用にコンパイルされたUnix系ソフトのpkg、dmgファイルを用いてソフトウェアを導入するので 非常に軽快に動作し、Xcode自体も不要です。

Rudixの特徴

Rudixの特徴としては下記のような事項が挙げられています。

  • LionとSnow Leopard用に設計
  • すべてのパッケージが依存関係を解決している(必要なライブラリなどはパッケージに含まれているので、インストールするだけで利用可能)
  • 幅広いパッケージの選択肢
  • パッケージがすぐに利用可能(コンパイル作業不要)
  • Webとコマンドラインの両方で利用可能

イメージとしては私が普段利用しているRHEL系OSのyumに近いです。

Rudixの導入

1
2
3
4
mkdir ~/src
cd ~/src
curl -O http://rudix.googlecode.com/hg/Ports/rudix/rudix.py
sudo python rudix.py install rudix

zshの場合は下記を実行して、rudixを認識させましょう

1
exec $SHELL

Rudixの利用方法

ソフトウェアの検索

1
sudo rudix search <package-name>

たとえばrsyncを検索してみると下記のような感じ。

1
sudo rudix search rsync

ソフトウェアのインストール

1
sudo rudix install <package-name>

Rudixを利用してrsyncを導入してみた場合は下記のような感じ。 あらかじめコンパイルされたパッケージを導入しているので、早いです。

1
2
3
4
5
6
7
8
sudo rudix install rsync

Downloading rudix.googlecode.com/files/rsync-3.0.9-0.pkg
######################################################################## 100.0%
installer: Package name is Rsync 3.0.9
installer: Installing at base path /
installer: The install was successful.
All done

すると/usr/local/bin/ の下に導入されます。

zshを利用している場合は

1
exec $SHELL

とか実行しないとpathを認識しないです。

Rudixで管理しているソフト一覧表示

1
sudo rudix list

ソフトウェアのアンインストール

1
sudo rudix remove パッケージ名
1
2
3
4
5
sudo rudix remove rsync

もしくは

sudo rudix remove org.rudix.pkg.rsync

Rudixのオプション

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Rudix Package Manager -- RPM ;D

Usage:
rudix [help|version|list|remove-all|verify-all|update|interactive]
      [info <package-id>|files <package-id>|install <package-id>|remove <package-id>|search <package-id>|owner <path>|verify <package-id>|fix <package-id>]

rudix [-h|-v|-l|-R|-K|-u|-z]
      [-I <package-id>|-L <package-id>|-i <package-id>|-r <package-id>|-s <package-id>|-S <path>|-V <package-id>|-f <package-id>|-n <package-id>]

List all installed packages (package-id) unless options are given, like:
  -h    This help message
  -v    Print version
  -l    List all installed packages (package-id, version and install date)
  -I    Print package information (package-id, version and install date)
  -L    List package content
  -i    Install package (download if not a file)
  -r    Remove package
  -R    Remove *all* Rudix packages installed (ask to confirm)
  -s    List available versions for package-id
  -S    Search for <path> in all packages and print if matched
  -V    Verify package
  -K    Verify all installed packages
  -f    Fix (repair) package
  -n    Download and install package (remote install)
  -u    Download and install all updated packages (remote update)
  -z    Interactive mode (type exit to quit)

Where <package-id> is either org.rudix.pkg.<name> or <name>.

パッケージ数がHomebrewに比べると少ないですが、下記のようにもっとパッケージ欲しいなら他のパッケージ管理システムを利用しろと公式でも書いてありますし、 主要なUnix系のソフトはRudixに揃っているので、私はだいたいはこれで十分です。

I dislike Rudix. Is there any alternative?

We recommend Homebrew if you need more packages than we have or just dislike Rudix. There are other package systems for Mac OS X if you want also:

* MacPorts
* Fink

また下記ページから各種pkgとdmgの検索とダウンロードも出来ます。

yumやaptのような使い方でわかりやすいですし、Xcodeも必要無いので、ローカル環境をクリーンに保つという意味でもSSD容量の少ないMacBook Airでめちゃくちゃ重宝してます。

DynamicDNSを利用し、iptablesとhosts.allowのルールに自宅IPを自動で追加する

最近急に自宅のIPがころころ変わるようになって、さくらのVPSでhosts.allowとiptablesで接続元のIP制限をかけてると ssh接続出来なくなるので自動でルールが変更になるように対応。環境はCentOS 5.7です

やりたいこと

  • iptablesとhosts.allowの両方で接続元のIPを制限したい
  • 自宅に割り当てられているIPが変更になったら自動でルールを変更

前提条件

私はダイナミックDNSを利用して、自宅IPとドメインを紐付けしているので、ISPから割り当てられているIPが変わっても、 ダイナミックDNSで利用しているドメインは変わりません。以前書いているので、参考にしてください。
そのほかにsshd.configやiptablesの設定は完了済みです。

/etc/hosts.allow の動的変更

@tnmtに教えてもらった、hosts.allowのinclude設定を利用して、自宅IPを動的に登録

/etc/hosts.allow にinclude設定

hosts.allowを下記のように設定。hosts.allowを直接変更するのではなく、includeしているファイルに変更をかけます。

cronに下記のように設定。hostコマンドで自宅IPを割り出し、ファイルに書き込み。 hogehoge.comは自分のダイナミックDNSで利用しているドメインを指定

1
00 * * * * /usr/bin/host hogehoge.com | awk '{print $4}' > /etc/hosts.allow.d/my_home_ip

iptablesのルールを動的に追加

下記のようなスクリプトを用意し、これもcronに追加

cronの設定は下記のような感じ

1
2
@reboot    /bin/sh /root/bin/allow_ip.sh
00 * * * * /bin/sh /root/bin/allow_ip.sh

これで自宅IPが変わっても、iptablesとhosts.allowで許可されるようになりました。

参考

/etc/hosts.deny, missing newline or line too long

普段iptablesとTCP Wrapperrでアクセス制限をかけているんですが、hosts.denyの設定見直しをしていて、 /var/log/secureに下記のようなログが吐かれて動作していないサーバがあったのでメモ

1
sshd[20929]: warning: /etc/hosts.deny, line 0: missing newline or line too long

/etc/hosts.denyの設定

問題のhosts.denyは下記のような設定で一見問題が無さそうに見える

1
ALL : ALL

機能しなかった原因

原因は下記の通り、設定行に改行コードが含まれていないことが原因でした

ホストアクセスファイルの最後の行が、改行マーク([Enter]キーを 押して出るマーク)でなければ、そのファイル内の最後の規則は、失敗してエラーが /var/log/messages又は/var/log/secureに ログされます。これは、規則の行が逆スラッシュを使用することなく、複数行に跨ぐ場合にも 同様の問題となります。以下の例では、以上のどちらかの状況による規則違反のログメッセージ の関連する部分を表示しています:

修正後の/etc/hosts.deny

下記のように改行を入れて

1
2
ALL : ALL

としたらちゃんと動作してくれました。調べていたら改行コードがLFでない場合でも発生するようです。