15:32:50
nmcli で隠されたSSIDに接続する
1 | nmcli device wifi connect "essid" password "password" hidden yes private no |
nmtuiだとできないっぽい。
Page 1 of 6
1 | nmcli device wifi connect "essid" password "password" hidden yes private no |
nmtuiだとできないっぽい。
昨日、Trailblazer::Tokyo #1 という勉強会を主催しました。
apotonick先生 Trailblazer の勉強会でした。
数ヶ月前に僕がたまたま Trailblazer本 を読んで以来 Trailblazer の思想に夢中になっていて、 色んな所ですごいすごい言っていたんだけどいまいち伝わっていなくて、今回の勉強会で自分が感じている「すごい」をほかの人にも伝えられてよかった。
3週間ほど前、たまたま飲みに行った @yuukigoodman に Trailblazer の話をしたら 次の日くらいから彼の TL に Trailblazer の文字が流れていて意識の高さに驚いて、僕も嬉しくなって勢いで勉強会開いた。 やってよかったと思う。
急な勉強会の開催にもかかわらず会場の提供と発表をして頂いた @yuukigoodman に圧倒的感謝!!
Trailblazer::Tokyo
というRubyの名前空間っぽいイベント名前も @yuukigoodman のアイディアでした。
とても Trailblazer
らしい良い名前だと思います。
勉強会は発表だけだと時間が余る気がして、座談会みたいな感じでやりたくて、わりと参加者から質疑応答がたくさん出たのでいい感じに話ができてよかった。 やはり業務で使うにはどうするかをイメージしてみんなはなしを聞いたり考えたりしていたようで、 それは僕も同じで自分が今仕事で実践している話ができたのも具体例を示せてよかったように思う。 あと、会のはじめにチェックインとして自己紹介してもらったのも、話しやすい空気を作れたんじゃないかなぁという気がする。
ここ数年間、というか社会人になってから、ずっとLTしかして来なかったので、人前で長い時間発表するのは久しぶりで 発表中は自分の説明が伝わっているかどうか少し不安になりながら発表していた。 でも終わってみると、 Trailblazer をプラスに捉えてくれる人が多くてよかった。
Trailblazer は小さく作られているのでフルセットで入れなくても導入できるし、 Rails への依存も極力抑えられているというのが伝えられたので満足している。
Trailblazer::Tokyo は今後も Ruby コミュニティのひとつとして活動していきたい。 (僕が東京を離れる可能性がちょっと高いけど)
Trailblazer::Tokyo #2 では実際に Trailblazer を使ってアプリ開発をした話ができる(or 聞ける)といいなぁ。 月1で開催してもちゃんとした話題になるような活動ができる気がしないけど、半年に一度だと熱が冷めそうでやだなあ。 3ヶ月に1度くらいがいいのかなぁ。
start_at
と end_at
が重複しないようにするとか)過去の記事のアーカイブ
基本的な 7 つのルーティングを作成する。
1 2 3 4 5 6 7 8 9 | resources :photos # GET /photos index photos_path # GET /photos/new new new_photo_path # POST /photos create photos_path # GET /photos/:id show photo_path(:id) # GET /photos/:id/edit edit edit_photo_path(:id) # PUT /photos/:id update photo_path(:id) # DELETE /photos/:id destroy photo_path(:id) |
resource は resources に比べて id を伴わず、 index を作らない。 ただし、 controller は複数形にする。
1 2 3 4 5 6 7 8 | resource :profile # GET /profile/new new new_profile_path # POST /profile create profile_path # GET /profile show profile_path # GET /profile/edit edit edit_profile_path # PUT /profile update profile_path # DELETE /profile destroy profile_path |
namespace を使うと path とcontroller にプレフィックスを付けることが出来る。
1 2 3 4 5 6 7 8 | namespace :admin do # コントローラは Admin::PhotosController resources :photos end # GET /admin/photos index admin_photos_path # GET /admin/photos/new new new_admin_photo_path # 省略... |
次のようにすると controller にのみプレフィックスを付けることが出来る。
1 2 3 4 5 6 7 8 9 10 11 12 | scope module: 'admin' do # コントローラは Admin::PhotosController resources :photos end # または resources :photos, module: "admin" # path は変わらない # GET /photos index admin_photos_path # GET /photos/new new new_admin_photo_path # 省略... |
次のようにすると path のみプレフィックスを付けることが出来る。
1 2 3 4 5 6 7 8 9 10 11 | scope '/admin' do resources :photos end # または resources :potos, path: '/admin/photos' # pathが下記のように変わる。 controller は変わらない。 # GET /admin/photos index photos_path # GET /admin/photos/new new new_photo_path # 省略... |
member か collection を使う。 member は id あり、 collection は id なし。
1 2 3 4 5 6 7 8 9 10 | # GET /photos/:id/preview で preview アクションを呼ぶ resources :photos do member do get 'preview' end # または get 'preview', on: :member end |
1 2 3 4 5 6 7 8 9 10 | # GET /photos/search で search アクションを呼ぶ resources :photos do collection do get 'search' end # または get 'search', on: :collection end |
match は HTTPメソッドを指定せずにルーティングを設定する。
1 | match 'hoge' => 'hoges#show' |
とすれば http://ホスト名/hoge
にアクセスした時に hoges コントローラの show メソッドを呼ぶ。
メソッドを指定するときは
1 | matche 'hoge' => 'hoges#show', via: :get |
と書くけど、長いので
1 | get 'hoge' => 'hoges#show' |
でいい。 post
, put
, delete
も同様。
ただし、複数メソッドをつけるときは下記のようにする。
1 | matche 'hoge' => 'hoges#show', via: [:get, :post] |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # id が必須 match 'photos/:id' => 'photos#show' # id は省略可能 match 'photos/(:id)' => 'photos#show' # パラメータに正規表現をかけてチェックすることができる。 # 下記では id が数字の場合のみルーティングを設定する。 # 数字以外の場合ルーティングエラーになる。 match 'photos/:id' => 'photos#show', id: /\d/ # ワイルドカード # # 'songs/rock/classic/stairway-to-heaven' sets # params[:category] = 'rock/classic' # params[:title] = 'stairway-to-heaven' match 'songs/*category/:title' => 'songs#show' |
いつも忘れるのでメモ書き。
usermod でもできるけどこっちの方が余計なこと考えなくて楽
1 | # gpasswd -a USER_NAME GROUP_NAME |
1 | # gpasswd -d USER_NAME GROUP_NAME |
Cucumber や Turnip 等でセッションやクッキーに関するテストを書くときに、 時々ブラウザを再起動したい時がある。 そのような場合には show_me_the_cookies が便利。
show_me_the_cookies
の expire_cookies
というメソッドを使うとブラウザを再起動した状態を再現できる。
1 2 3 4 | # Turnip のステップの例 step 'ブラウザを再起動する' do expire_cookies end |
ThinkPad x240 に Debian jessie を入れた際、音声ドライバをうまく認識できていなかったらしく音がならなかったので、以下の方法で対処した。
まず /proc/asound/cards
で id とインデックスを調べる。
1 2 3 4 5 6 | 0 [PCH_1 ]: HDA-Intel - HDA Intel PCH HDA Intel PCH at 0xf0634000 irq 65 1 [PCH ]: HDA-Intel - HDA Intel HDMI HDA Intel HDMI at 0xf0630000 irq 66 29 [ThinkPadEC ]: ThinkPad EC - ThinkPad Console Audio Control ThinkPad Console Audio Control at EC reg 0x30, fw unknown |
上記だと id=PCH_1 index=0 となる。 (設定前は id=HDMI index=0 , id=PCH index=1 だったんだけど何故か変わってしまったようだ…)
/etc/modprobe.d/alsa-base.conf
の末尾に次を追加。
サウンドドライバとして snd-hda-intel を使うように設定する。
1 2 | options snd-hda-intel id=HDMI index=0 options snd-hda-intel id=PCH index=1 |
参考 https://bbs.archlinux.org/viewtopic.php?pid=1045829#p1045829 https://bbs.archlinux.org/viewtopic.php?id=137653 http://superuser.com/questions/613016/debian-sound-on-hdmi-instead-of-jack http://lists.debian.or.jp/debian-users/201108/msg00070.html https://wiki.debian.org/InstallingDebianOn/Apple/MacBookAir/6-1 https://wiki.debian.org/ALSA
おおまかに次の2つのどちらかになりそう
方針として、 Rack層を利用して Rails の外側で行うほうが良さそう。
rescue_from
は以前やったことあるけど大変だった。
基本的に rspec
の feature
テストで Rack::Test
等でテストを書けば良さそう。
JSON Schema を rspec の matcher として使えるようにする gem もあるようだ。
ただ、どちらかと言えば JSON Schema は実装で用いたほうが良さそう。 JSON Schema でリクエストの妥当性を検証するような仕組みを作っておいて、そのテストは愚直に RSpec で書く。 これによりサーバーサイドでのAPIと Schema の仕様をテストで担保しておく。 JSON Schema はクライアントやドキュメント生成で使うので、この方針のほうが筋が良いように思う。
apotonick先生が好きなので roar かなぁ
middleman しか使ったことなかったので jekyll を素振りしていた。 github pages の上で動かすことを考えれば middleman よりもシンプルだと思った。 blog 機能もデフォルトであるし。
ただ slim とか bourbon のような github pages が想定していないものを gem とかで 使おうとすると middleman と変わらなくなってくるような気がした。 (サポートしてるのかなぁ???)
簡単なページを github pages で作るだけなら jekyll のほうがファイルが少なくなるので良いかも。
あと atom も触り始めた。 デフォルトの機能は sublime text より多いようなので、なるべく設定を変えずに使っていきたいなぁ。。。 設定厨の自覚はあるんだけど少しずつ疲れているというか、デフォルトに合わせたくなってきた。
久しぶりに Mac を触っていた。
homebrew-cask とか homebrew-file とかが便利だったので、ソフトウェアのインストールは基本的に homebrew で一元管理することにした。
ただ、 Apple store で入れる必要があるものは brewfile には記録できるものの自動でインストールするのはできないようだ。
brewfile はオワコンみたいな記事がいくつかあったけど、homebrew と別プロジェクト切り離されただけっぽいので、使ってみたら便利だった。
brew file init
を実行すると現状 brew でインストールしている一覧を brewfile に書き込んでくれるのが楽だった。
そのため、日常的に気軽に brew install
して気が向いた時に brew file init && brew file push
するようにしている。
(当然 brewfile は github で管理するようにしたため)
https://github.com/rcmdnk/homebrew-file#use-github-or-any-git-repository-for-brewfile-management がちょっと良くわからなかったけど、 http://www.task-notes.com/entry/20150316/1426474800 のブログ記事がわかりやすかった。
homebrew は良く出来ていると思う。
良い機会なのでエディタを atom
にした。
前々から atom
にしたいとはずっと思っていたんだけど、なぜか僕の Debian 環境だとうまく動かなかったので放置していた。
(おそらく node 等を自分で入れているせいなので、 Debian を入れなおして環境を綺麗にすれば動くと思う)
SublimeText3 は Linux だと日本語が入力できないこと以外は特に不満ないけど、もはやユーザーは atom に移っていると思うので、私も完全 atom 以降したい。
ターミナルははじめは標準のでもいいかなと思っていたけど、tmux と合わせて使った時に細かいところが気に入らなかったので、結局 iterm2
をいれた。
mac のターミナルで command と control がぐちゃぐちゃになる感じがあるんだけど、あれはどうも気に入らないなぁ。。。やっぱり。
macでターミナル使う人はあのへんはあきらめているんだろうか。
mac と linux を併用しているとだいぶ辛いんだけど…。
結局僕の場合、 iterm2
上だけは command と control を入れ替えているけど、それはそれで使うにくいという…。
この辺は諦めたほうが良さそうかなぁ。
あと全体的に Home と End の挙動が Linux と違うのだいぶ面倒くさい…。
Rails の開発環境として DB や Node.js などをいれる必要があるけど、この辺は docker-compose でまとめていく予定。 docker が苦しいケースでは vagrant を使うとか、適当に調整したい。 もはや必要なソフトウェアのバージョンがシビアになる開発環境まわりをローカルに直接入れたくないので、この辺はすべて仮想環境で動かせるようにしたい。 できれば gem や ruby も仮想環境に入れてしまったほうが良い気がする。 メモリとかディスク容量は無駄になる部分もあるけど、その程度で依存関係が切れになるならそっちのほうがいいし、気軽に再構築できる開発環境はやはり便利。 ただ、Linux 環境なら vagrant-lxc のような手段もあるわけで… この辺もあるものでなんとかしよう。docker を積極的に使いたい。
Linux が一番使いやすいな〜と思いつつ、 mac や windows でしか動かないソフトも結構あるが悩みどころ。 以前ほどではないとは思いつつ…。
mac はまだ細かいところを諦めれば使えるのでまーいいかー。
面倒なのは .zshrc
などの設定ファイルを mac 用と linux 用を用意する必要があって、管理が面倒くさいこと。。。
共通して使える部分は1ファイルにしておいて、 各OSの .zshrc
から source で読み込むのが筋が良さそう。
prezto
になるべく寄せたいけど、これもあんまりうまくいってない…。
環境周りはそろそろ作り直しの時期なのかもしれない。 もーひたすらに面倒くさい。 やってると時間だけ過ぎていくし…。