if文をずらずら書かないために
rubyだけじゃないんだけど。
変数の値を繰り替えしif文の条件にする場合
|
|
だったらこう書いた方がいいよね。
|
|
他に良い案ありますか?
rubyだけじゃないんだけど。
変数の値を繰り替えしif文の条件にする場合
|
|
だったらこう書いた方がいいよね。
|
|
他に良い案ありますか?
ログとかファイル監視する時とかは何も考えずに
tail -f debugger.txt
とかってしちゃう人いると思うんですが。
表示する内容が少ない場合なら、watchってのがある。
watch cat debugger.txt
でデフォルトの2秒起きにcat debugger.txtが実行されます(表示は画面に収まるまで)
秒数変えたければ(下記例は60秒)
watch -n 60 cat debugger.txt
コマンドに-dをつければ変更箇所を毎回ハイライトしてくれる。
watch -d cat debugger.txt
cumulativeを指定すれば、watchし始めてからの変更をハイライトしてくれる。
watch -d=cumulative cat test.txt
もちろんコマンドも可能
watch -d ls -la
ロックファイルとか、ファイルが作成されたことの確認したい時とかに便利かもしれません。
開発中にログファイルに特定の文言が出たか知りたい場合とかにも便利。
例えば「error」と「fatal」がログに出た場合に、watch使えばすぐ気づける。
watch grep -n -e error -e fatal app.log
ってやると行番号付きでerrorかfatalが発生したことがわかる。
コマンドの繋ぎ方は
パイプ(|)とかファイルに書き込むリダイレクション( > もしくは > > もしくは <)が有名ですが。
ps aux | grep postfix
他にもあるんですね。
下の例のコマンド自体は意味のないコマンドですが。
1 cd /var/www/app/log/ ; scp app.log 192.168.X.XX:/home/user
2 cd /var/www/app/log/ && scp app.log 192.168.X.XX:/home/user
3 cd /var/www/app/log/ || scp app.log 192.168.X.XX:/home/user
1がコマンドを実行した後に次のコマンドを実行する方法。
2が移動に成功した場合のみ次のコマンドを実行する方法。
3が移動に失敗した場合のみ次のコマンドを実行する方法。
cronで指定するコマンドや、postfixのエイリアスで標準入力にメールの内容渡してプログラムを起動する際に使ったり。
例えばrailsのスクリプトランナー使いたい場合に。
cd rails appのルートディレクトリ ; rails runner "Calender.generated" RAILS_ENV=production
ルートに移動してからスクリプトランナー起動。
とか。
珍しく休日にPCを起動した。
何年ぶりだろう。
自宅PCはWindows7とUbuntuのデュアルブートにしているのだけど、Ubuntuを11.04から11.10にしたら無線が遅い。
ネットには接続されるし、IPもふられてるんだけど通信速度が異常に出ない。
なんじゃこりゃ。
このフォーラム Wireless Internet Connection so slow after upgrade to 11.10のとおりにコマンド打ったら、解決した。
sudo rmmod iwlagn
sudo modprobe iwlagn 11n_disable=1
注意)以下の作業はやる前に、バックアップを取ってからやってください。
Ubuntu(OS関係あるのか不明)で、Android(IS04)のSDカードをマウントして、ファイル削除したけどSDカードの容量が増えない。゚ヽ(゚´Д`)ノ゚
よく見ると
.Trash-1000
とかってゴミ箱的なフォルダがあって、そこに削除したファイルが移動してた。
んでそこのフォルダ内のファイル全部選択して削除したけど、ファイルが一向に消えないヽ( ̄д ̄;)ノ
ここ見て、ubuntuのゴミ箱を全て空にしたら消えた(´・ω・`)
http://www.google.com/support/forum/p/android/thread?tid=60747a992c0a473b&hl=en
そして再び携帯に戻ったら、破損したSDカードとか出るようになってフォーマットしますかの一択となった。
色々やってたから、なんかまずいの消したのか?
それともまさか上の操作がNGなんだろうか?
めんどいので調査しないけど。
っていう投げっぱなしのどうしようもない記事。
初期値を指定して配列を作りたいならこうできる。
|
|
んで、指定した値で要素数Nの配列を要素数Mにしたい場合。
|
|
で出来る。
例)とりあえずMを5とする場合。
|
|
ちなみにfillは!ついてないけど破壊的メソッドなので、レシーバの値変わってしまうのがちょっと注意。
|
|
リアルタイムなchatを作りたい。
そんな欲求誰にでもあるものです。
時間のない主婦の方にも手軽にパパっとチャットシステムを作る方法を紹介しようと思います。
材料は
rails
pusher
作る料理は
チャットシステム(現在の参加者表示機能付き)
の二つです。
変なテンションな書き方はここまで。
今日の記事は全面的にここを参考にさせていだきました。
Yuno
pusherはWebSocketsを利用したAPIです。
Leader in realtime technologies| Pusher
わかりやすい図はっときます。
例えばブラウザがpostリクエスト投げると、それを受け取ったサーバからpusherにそのデータを加工してパス。
するとブラウザにpushしてくれるというイメージ。
pusher利用にはユーザ登録で得られるAPI Credentialsが必要です。
まずはpusherのサイトでユーザ登録して、
app _id
key
secret
をゲットしてください。
今日の記事は実際に作ったものからコピペで書いていますが。
view部分はhamlで書いてるので、見ずらくてすいません。
erbメインの方は脳内で変換かけてください。
とりあえずGemfileに記述
|
|
bundle install後、config/initializers内にpusher.rb作成
|
|
config/route.rbにauthアクションへのルーティング追加
|
|
現在の参加者を取得するためには、pusherの
Presence
Channelsを使用しなければなりません。
Presence
Channelsを使用するためには、認証を受けること・channel名のprefixにpresence-つけないといけません。
view
|
|
フォームとリストの部分テンプレートは割愛。
railsのobserverでユーザ情報とプロフィール情報を監視していて、
例えば1つのフォームにユーザ情報とプロフィール情報の編集項目があった場合。
after _saveでフックした際には
after _saveは2回。それぞれのモデルで呼ばれる。
んでその二つ呼ばれたafter _saveが同じ処理で呼ばれたのかってわかんないと思っていた。
先日入れたuserstampの処理がどうなっているのだろうかと見たら、
ActionControllerのbefore _filterでThread.currentにuserのIDを押し込んでいた。
実際のソースは以下のとおり。
|
|
キーにはobject _id(デフォルトではUserのobject _id)使ってる。
controller側で毎回Thread.currentに操作者のidを保存して、それをmodelで取り出している。
んでobserverで同一の処理で呼ばれたのか判定する方法は。
同じようにThread.currentに設定してるキーと値を任意の値にすれば良さそう。
ActionControllerのbefore _filterでキーはuserstampと同じようにobject _idを使って、適当にkey _とかprefixつけてみる。
んで値はユニークな値を設定する。
|
|
observerでは
|
|
で同じ値が取得できた場合には同一の操作から呼ばれたものと考えられる。
去年スマフォサイト作りました。
railsつかってます。
jQuery Mobileも使ってます。
mobileinitイベント内で
|
|
でAjaxオフにしてます。
でもたまにページロード完了後に、
勝手にローディング画像が出てきて、全然自分が見たいページとは違うページに飛ばされることがあります。
調べた結果Android端末の沢山とiPhone4以外(というか3GS?)で起きる現状でした。
上記現象が起こる操作は
Aページ- >[Bページへのリンクをクリック]- >Bページ- >[端末のブラウザバック]- >Aページ- >[Cページをクリック]- >Cページ読み込み完了後にBページに飛ばされる。
対策としては
|
|
でpushStateオフにしたら直りましたっていうお話。
またまたRubyネタ。
Rails抜きでNヶ月前の月から今日までの月を求める必要があったので考えてみました。
すっごい遠回りして考えてるかもしれません。
rubyの配列はインデックスにマイナスを指定することができます。
その場合、参照する先は後ろから数えた値となります。
今日のコードはirbだけで試せます。
REPL最高。
|
|
とりあえずNは3として、今月を含めて3ヶ月前を求めるには
|
|
1月ならば11月が帰ってきます。
2月ならば12月。3月なら1月となります。
インデックスは0始まりなのでそのあたりを考慮しないとあかんですね。
以上です。と書こうとしたけど、3ヶ月前から今日までの月でしたね。
|
|
先ほど述べたようにインデックスが0始まりなので-1してます。
配列で欲しいなら
|
|
かなぁ?