Info

今更だけど、最近IRCを使う機会が増えてきて、ちょっといじってみた。MSN, Skypeとか今時のメッセンジャーと違って、メッセージログが保存されない、自分のステータスとか相手に伝わらない。それに致命的のが自分がオフラインの時にメンバーがなに喋ったかがわからない。これらの弱点を補うのがZNCだ
http://znc.in

1. CentOSにインストール

$ sudo yum update
$ sudo yum search znc
$ sudo yum install znc
$ which znc
/usr/bin/znc

$ znc -v
ZNC 1.0 - http://znc.in
IPv6: yes, SSL: yes, DNS: threads
$ 

2. 設定&起動

$ znc --makeconf
[ ok ] Checking for list of available modules… 
[ ** ] Building new config
[ ** ] 
[ ** ] First let's start with some global settings…
[ ** ] 
[ ?? ] What port would you like ZNC to listen on? (1025 to 65535): 6667
[ ?? ] Would you like ZNC to listen using SSL? (yes/no) [no]: 
[ ?? ] Would you like ZNC to listen using ipv6? (yes/no) [yes]: 
[ ?? ] Listen Host (Blank for all ips): 
[ ok ] Verifying the listener… 
[ ** ] 
[ ** ] -- Global Modules --
[ ** ] 
[ ** ] +-----------+----------------------------------------------------------+
[ ** ] | Name | Description |
[ ** ] +-----------+----------------------------------------------------------+
[ ** ] | partyline | Internal channels and queries for users connected to znc |
[ ** ] | webadmin | Web based administration module |
[ ** ] +-----------+----------------------------------------------------------+
[ ** ] And 9 other (uncommon) modules. You can enable those later.
[ ** ] 
[ ?? ] Load global module <partyline>? (yes/no) [no]: 
[ ?? ] Load global module <webadmin>? (yes/no) [no]: yes
[ ** ] 
[ ** ] Now we need to set up a user…
[ ** ] 
[ ?? ] Username (AlphaNumeric): dongri
[ ?? ] Enter Password: 
[ ?? ] Confirm Password: 
[ ?? ] Would you like this user to be an admin? (yes/no) [yes]: 
[ ?? ] Nick [dongri]: 
[ ?? ] Alt Nick [dongri_]: 
[ ?? ] Ident [dongri]: 
[ ?? ] Real Name [Got ZNC?]: Dongri Jin
[ ?? ] Bind Host (optional): 
[ ?? ] Number of lines to buffer per channel [50]: 
[ ?? ] Would you like to clear channel buffers after replay? (yes/no) [yes]: 
[ ?? ] Default channel modes [+stn]: 
[ ** ] 
[ ** ] -- User Modules --
[ ** ] 
[ ** ] +--------------+------------------------------------------------------------------------------------------+
[ ** ] | Name | Description |
[ ** ] +--------------+------------------------------------------------------------------------------------------+
[ ** ] | chansaver | Keep config up-to-date when user joins/parts |
[ ** ] | controlpanel | Dynamic configuration through IRC. Allows editing only yourself if you're not ZNC admin. |
[ ** ] | perform | Keeps a list of commands to be executed when ZNC connects to IRC. |
[ ** ] +--------------+------------------------------------------------------------------------------------------+
[ ** ] And 22 other (uncommon) modules. You can enable those later.
[ ** ] 
[ ?? ] Load module <chansaver>? (yes/no) [no]: 
[ ?? ] Load module <controlpanel>? (yes/no) [no]: 
[ ?? ] Load module <perform>? (yes/no) [no]: 
[ ** ] 
[ ?? ] Would you like to set up a network? (yes/no) [no]: 
[ ** ] 
[ ?? ] Would you like to set up another user? (yes/no) [no]: 
[ ok ] Writing config [/home/dongri/.znc/configs/znc.conf]… 
[ ** ] 
[ ** ] To connect to this ZNC you need to connect to it as your IRC server
[ ** ] using the port that you supplied. You have to supply your login info
[ ** ] as the IRC server password like this: user/network:pass.
[ ** ] 
[ ** ] Try something like this in your IRC client…
[ ** ] /server <znc_server_ip> 6667 dongri:<pass>
[ ** ] And this in your browser…
[ ** ] http://<znc_server_ip>:6667/
[ ** ] 
[ ?? ] Launch ZNC now? (yes/no) [yes]: 
[ ok ] Opening config [/home/dongri/.znc/configs/znc.conf]… 
[ ok ] Loading global module [webadmin]... [/usr/lib64/znc/webadmin.so]
[ ok ] Binding to port [6667]… 
[ ** ] Loading user [dongri]
[ ok ] Forking into the background... [pid: 16861]
[ ** ] ZNC 1.0 - http://znc.in

3. クライアント設定
クライアントはLimeChatを使ってるので
menu -> Server -> Add Server…
znc add server

4. ステータス設定
awaynick設定
http://wiki.znc.in/Awaynick
メッセージ入力欄に以下のコマンドを入力

/znc LoadMod awaynick [enter]
/msg *awaynick set dognri_ooO [enter]
/msg *awaynick show [enter]

これでdisconnectした時に自分のニックネームが設定した名前になる。

5. その他 module, command
http://wiki.znc.in/Modules
http://wiki.znc.in/Using_commands

sakura vps ちょっと弄ってみた。
環境:CentOS 6.3, Nginx 1.2.3

phpインストール
デフォルトでphp入ってたので削除

既存のphpをアンインストール

$ sudo yum remove php*
・・・
Remove        6 Package(s)
Installed size: 15 M
Is this ok [y/N]: y

標準のリポジトリにはphp-fpmがないため、REMIレポジトリを追加する。

$ wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
$ sudo rpm -ivh remi-release-6.rpm 

必要なライブラリをインストール

$ sudo yum install php php-fpm php-devel php-cli php-xml  php-mbstring php-gd --enablerepo=remi

バージョン確認

$ php -v
PHP 5.3.16 (cli) (built: Sep  4 2012 15:23:10)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

$ php-fpm -v
PHP 5.3.16 (fpm-fcgi) (built: Sep  4 2012 15:25:35)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

php-fpm 起動

$ sudo /etc/init.d/php-fpm start

nginx confファイル編集

location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
}

php-mysql インストール

$ sudo yum install php-mysql --enablerepo=remi

phpinfoで確認してみる

<?php
phpinfo();
?>

http://forum.xda-developers.com/showthread.php?t=1737849

上のリンクから bigxie_maguro_OTA_JOP40C_odexed-signed.zip をダウンロードする
ダウンロードしたファイルを nexus の sdcardにコピー

$ adb push bigxie_maguro_OTA_JOP40C_odexed-signed.zip /sdcard/
$ adb reboot bootloader

1. CWM(ClockWorkMod)リカバリを起動して、「install zip from sdcard」を選ぶ。
2. 「choose zip from sdcard」を選ぶ。
3. 「bigxie_maguro_OTA_JOP40C_odexed-signed.zip」を選ぶ。
4. 「Yes – Install bigxie_maguro_OTA_JOP40C_odexed-signed.zip」を選ぶ。
5. 「Install from sdcard complete.」と表示されれば、Root化済みAndroid 4.2のROMのインストールは完了です。
6. wipe data/factory reset、wipe cacheを実施します。
7. 「reboot system now」でGalaxy Nexus(SC-04D)を再起動させ正常に起動すれば、Android 4.2 Root化済みROMの導入は完了です。

Android 4.2で「開発者向けオプション」を表示する方法:
$ adb shell でnexusに入ろうとすると「error: device not found」
「ビルド番号」と書かれた領域を7回連続でタップ。
”これでデベロッパーになりました!”
というメッセージが表示されます。
これでひとまず終わり。

古いネタですが、メモ用で書いときます。

開発時はNSLogを有効にして、Enterprise, Release時には無効にしたい。
既に大量に書いたNSLogをそのままにしたい。DLog、ALogとかに書き換えたくない。

1. {ProjectName}_Prefix.pchファイルを開いて以下のコード追加

#ifdef NS_BLOCK_ASSERTIONS
#ifndef NSLog
#define NSLog( m, args... )
#endif
#else
#ifndef NSLog
#define NSLog( m, args... ) NSLog( m, ##args )
#endif
#endif

2. ターゲットのBuild SettingのPreprocessing
Enterprise, Release に NS_BLOCK_ASSERTIONS=1 追加

以上で、SchemeがDebug時のみNSLogが出力されて、Enterprise, Release時は無視されるようになる。

昨日 新しい iOS 6 SDK beta 出たよのメール来たので、xcodeバージョンアップしてみた。シュミレーター起動してみると、デバイスのところに iPhone Retina (4-inch) が出て来て、既存のアプリを起動してみた。上と下が黒!

iPhone5対応!
1. Launch Images 設定
以下のように、Retina (4-inch) にイメージ設定

2. height再設定
プロジェクトで480で固定にしたところ検索。
iPhone5のheightは568なんだけど、480を568にしちゃうとiPhone4で正しく表示されない。
AppDelegateで self.window.frame.size.height で現在デバイスの高さを取得して処理する。

結果:Waiting For Review

https://developers.google.com/android/nexus/images#yakjujro03c
から4.1.1 (JRO03C)ダウンロード。(f946a4120eb1.signed-yakju-JRO03C-from-IMM76I.f946a412)

$ cd yakju-jro03c
$ adb reboot bootloader
$ ./flash-all.sh

roo化
$ adb push CWM-SuperSU-v0.93.zip sdcard/
4455 KB/s (669800 bytes in 0.146s)
$ adb reboot bootloader
$ fastboot boot recovery-clockwork-5.5.0.2-maguro.img
downloading ‘boot.img’…
OKAY [ 0.708s]
booting…
OKAY [ 0.329s]
finished. total time: 1.037s
$

CWM-SuperSU-v0.93.zipを選択してインストール!
これでroot化完了。

今日はPlayと遊んでみた。

1. Playインストール
http://www.playframework.org/
で最新版ダウンロード
適当などころに解凍してパスを通す

2. プロジェクト作成

$ play new playhub
$ run

3. heroku app 作成

$ heroku create -s cedar playhub
$ git init
$ git remote add heroku git@heroku.com:playhub.git
$ git add .
$ git commit -m init
$ git push heroku master

$ heroku open

ページが表示されてることを確認

4. プロジェクトをeclipseで開発できるようにする

$ play
[playhub] $ eclipse[info] About to create Eclipse project files for your project(s).
[info] Compiling 1 Scala source to /Users/dongriab/Desktop/playhub/target/scala-2.9.1/classes...
[info] Successfully created Eclipse project files for project(s): playhub
[playhub] $

5. eclipseからインポート

6. ScalaTodoList
http://www.playframework.org/documentation/2.0.2/ScalaTodoList
ここに書いてある通りにやるけど、どうもherokuでのpostgresqlが気に入らなくて、mysqlにしてみる。
Persist the tasks in a database
herokuでaddonのcleardbを追加。

$ heroku addons:add cleardb:ignite
$ heroku addons
cleardb:ignite
shared-database:5mb
$ heroku config

CLEARDB_DATABASE_URL確認
DATABASE_URL に postgresが書いてあるがそれをmysqlに変更

$ heroku config:add DATABASE_URL=mysql://********:*********@us-cdbr-east.cleardb.com/heroku_*******?reconnect=true

conf/application.confファイル編集

db.default=mysql
db.default.url="jdbc:mysql://us-cdbr-east.cleardb.com/heroku_***?useUnicode=true&characterEncoding=UTF8"
db.default.driver=com.mysql.jdbc.Driver
db.default.user=******
db.default.password=******
db.default.partitionCount=1
db.default.maxConnectionsPerPartition=5
db.default.minConnectionsPerPartition=5
db.default.minSize=1
db.default.maxSize=9

途中でconnectionエラーとかいろいろあったけどコピーするの忘れた。

最近Scalaに興味を持つようになって、ちょっと勉強しようかと思ってherokuに hello world的なものを作ってみた。手順をメモ。
herokuに関しては割愛。

1. scala のインストール

$ brew search scala
scala      scalate
$ brew install scala
==> Downloading http://www.scala-lang.org/downloads/distrib/files/scala-2.9.1-1.tgz
・・・
$ scala -version
Scala code runner version 2.9.1-1 -- Copyright 2002-2011, LAMP/EPFL

2. sbt インストール

$ brew install sbt

3. scala on heroku
https://devcenter.heroku.com/articles/scala
ここに書いてある通りにやる。
と、とりあえずheroku上で 「Hello from Scala!」はできた。
しかし、rubyでもないしメモ帳でscala書くちょっとあれなんでeclipseに入れてみる。
そのまま入れるとsbtのbuild.sbtで定義した依存パッケージがeclipseのビルドパスに反映されない。

4. sbtelipseを入れる
~/.sbt/pluginsにplugin.sbtを作成

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.0.0")

5. eclipse設定
プロジェクトディレクトリまで行って

$ sbt
> eclipse

参照ライブラリに依存パッケージが反映される。

6. sbtでrunしてみる

$ sbt
$ run
[error] {file:/Users/dongriab/Dropbox/Developers/cloud/heroku/workspace/scalahub/}default-2648c8/compile:run: Nonzero exit code: 1
[error] Total time: 15 s, completed Jul 14, 2012 7:06:17 PM
> run
[info] Compiling 1 Scala source to /Users/dongriab/Dropbox/Developers/cloud/heroku/workspace/scalahub/target/scala-2.8.1/classes...
[error] java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space
[error] Use 'last' for the full log.

OutOfMemoryErrorが発生。
sbt起動する時にjavaヒープサイズを1024mに設定して起動

$ env JAVA_OPTS="-Xmx1024m" sbt
> run
[info] Running Web debug
Starting on port:8080
Start

問題なく起動できた。
以上で、eclipseでscala, herokuの開発できるようなった。

追加:ソース編集してサーバー再起動しないと反映されない。デバッグ方法わかる方教えてください

これ、何ヶ月ぶりのブログ更新だろう?半年か!

先日 Galaxy Nexus (docomo) の OTA で Android 4.0.4になってテザリングが標準に付いてきた。
今まではroot取って、WiFi Tether for Root Usersを使ってが、動かなくなった。Androidのアップグレードでroot化されたやつが可笑しくなったみたい。
試しに標準のテザリングをやってみたら、案の定パケ放題のほかにFOMAの通信料が追加されてた。これはテザリングの料金だな。。。
調べてみたら、通常の3G SPモードの時のIPアドレスとテザリングの時のIPアドレスが違う。おそらくdocomoがテザリングの時にAPNを変えただろうと。
テザリング契約してないユーザには接続させないのが普通だような。。。やり方が汚い!!!
どうしてもじゃないけど、無料でテザリングしたい(実際はほとんどやってない)。単にdocomoに勝ちたい?という気持ちでちょっとやったことをメモ。
root取ったり、カスタムROM入れたりしてNexusが汚くなったので今回奇麗にしたいのも一つの理由

1. 初期化
AOKP ROMを入れてたの端末での初期化したら AOKPの初期化になってNexusの初期化になってない。
ROM Managerでバッグアップ取ったGalaxy Nexus ROMで復元する。
1. Power + Volume 上下ボタンを当時に押して、BootLoader画面を出す。
2. Recorvery Mode選択してPowerボタン
3. Backup and Restoreを選択して、ROM Manager でバックアップしたROMを復元する。

adb shellで中に入ってみると以下のディレクトリにあった。
# cd /sdcard/clockworkmod/backup/
CyanogenMon/ Galaxy_Nexus/ Team_Kang/

Galaxy_Nexusを選択して復元する。

復元はしたけどゴミが残ってみるみたいでROMのインストールでどうも可笑しい動きがしてきたので、docomoの純正ROMに戻してみる。
データが全部飛んじゃうのでバックアップが必要。自分は全部クラウドにあるので必要なし。

https://www.dropbox.com/sh/c7z1l0hai098u82/LOn7Kachfu
URLから docomo-romをダウンロードする。

$ cd docomo-rom
# bootloaderで起動 Power + Volume ↑↓と同じ
docomo-rom dongriab$ adb reboot bootloader  
docomo-rom dongriab$ fastboot erase system -w
docomo-rom dongriab$ fastboot erase boot
docomo-rom dongriab$ fastboot flash system system-ITL41D-SC04D0MKKD.img
docomo-rom dongriab$ fastboot flash boot boot.img
docomo-rom dongriab$ fastboot reboot
docomo-rom dongriab$ 

Googleロゴが二回出たあと正常に起動される。

端末情報を見るとAndroid 4.0.1になった。これは買う時のバージョンだね。。。
それでアプリケーション一覧に Super Userがなくなった。これはもう完全な初期状態だ。よっし!
1分ぐらい待つとOTAが来る、おそらく4.0.4だろう。
OTAは来たが再起動するところで失敗した。
端末初期化ボタンを押してもう一度待つ。
来たけどもう一回失敗。
しょうがなく手動してアップグレードすることにした。

上のリンクから OTA ファイルダウンロードする。
7f97fbc19417.signed-yakju-IMM76D-from-ICL53F.7f97fbc1.zip ファイルをダウンロードして install しようとしても失敗。

Google サイトでimageファイルを直接ダウンロードすることに

https://developers.google.com/android/nexus/images
docomoのやつはこれっぽい
https://developers.google.com/android/nexus/images#yakju

https://www.dropbox.com/sh/ac9ruf65aneolfq/L5HvGLUD4G
yakju-imm76i-factory-8001e72f.tgz ダウンロード

解凍して bootloaderにして flash-all.shを実行

yakju-imm76i dongriab$ adb reboot bootloader
yakju-imm76i dongriab$ ./flash-all.sh 
yakju-imm76i dongriab$ 

終わったら再起動。

今度はデフォルト言語が英語になってた。
試しにテザリングして見たが、APNが変わってなかった。当然だよなdocomoの純正romのアップグレードじゃないんだから。

2. rootを取る
https://www.dropbox.com/sh/hojofhhvgpd44wf/YVgAggxVlC

$ adb push su.zip sdcard/
$ adb reboot bootloader
$ fastboot flash recovery recovery-clockwork-5.5.0.4-toro.img

Recovery mode 選択して install zip from sdcard
su.zip を選択して install su.zip
終わったら go back , restart system now

再起動してアプリケーション一覧に Superuserが現れた。

3. ROMを入れる
ROM Manager を play からインストール
ROM Manager 起動してclockworkなんとかをインストール(GSM)

CyanogenModを使ってたがバッテリーが半日も持てなかったので Team Kangを入れる。

以上でNexusも奇麗になって、あの汚いdocomoを騙してテザリングも可能に!

これ書く必要ないですが、自己責任でお願いします