タグ

ブックマーク / blog.dealforest.net (26)

  • cocoapods で homepage を開くコマンドを作ったお話

    みなさん cocoapods を使って久しいかと思います。 僕がよくやるのが pod seach で検索して Homepage(大体githubのページ) を開いて README, 履歴, コードをざっと確認してそのライブラリを使うかどうか確認していました。 ただこれがいくつもあるとコピペで繰り返すのは面倒くさい作業でした。 pod try PODNAMEとすると、/tmp/CocoaPods/Try/ に(リポジトリにxcodあれば)サンプルプロジェクトをダウンロードしてXcodeで開くまでやってくれる。そのライブラリがすぐに試せるってこと。 — kishikawa katsumi (@k_katsumi) December 26, 2013 このツイートを見て try くそ便利だなと。 コマンドで browser を開ければいけてるやん!! と思って早速調べてみました。 cocoapo

    cocoapods で homepage を開くコマンドを作ったお話
    kamipo
    kamipo 2013/12/28
  • “サーバとiOSアプリのデータのやり取りを〇〇倍高速化する方法”を見て計測してみた

    サーバとiOSアプリのデータのやり取りを〇〇倍高速化する方法をみて messagepack も含めてパース部分だけのベンチを計測したくなったのでやっちゃいましたというお話です。 今回 JSON のパーサーには Apple JSON framework を使用しました。 そこそこ速くて iOS5 以上で使用できるので個人的にはよく使ってます。 他の JSON パーサーとの比較はiOS-JSON-Performanceが参考になります。 データ作成 パースするデータは元記事を参考に作成しました。 response_data = { :info => { :total => 1000, :count => 1000 }, :results => (1..1000).map { |i| { :name => "name#{i}", :age => i } } } #json response_da

    “サーバとiOSアプリのデータのやり取りを〇〇倍高速化する方法”を見て計測してみた
    kamipo
    kamipo 2012/12/23
  • 初めて gem(ratchet-rails) を作ったお話

    今日はエヴァQをみにいく予定なのに爆睡してしまっていました。 関係者各位申し訳ございませんでした。 気持ちをいれかえ、みなさん今話題?の Ratchet をご存じでしょうか? 一言でいうと Twitter Bootstrap のスマートフォン版といったものですね。 それを rails で簡単に扱えるような gem を作ったというお話です。 使い方 TODO Rails 3.1 以前のもの(Assets pipeline 未使用)を対応 以下は少しつかってよさそうなのがあれば組み込みます。 helper layout scafoold にデザインを反映できるようにする include 用の parts をつくる まとめ twitter-bootstrap-rails のコードを参考にさせてもらいました。 seyhunak/twitter-bootstrap-rails ratchet 自体が

    初めて gem(ratchet-rails) を作ったお話
    kamipo
    kamipo 2012/11/19
  • Rails.env.development? がどうやってるか調べてみた

    Rails.env が String のインスタンスだと思ってたのけどれど、どうやってるのか気になったので調べてみたお話。 機能自体は ActiveSupport::StringInquirer の method_missing で実装されています。 末尾が ? で、それ以前の文字列が一致するかで判断してるようです。 なるほど。 ActiveSupport が require されている状況でこの機能が使えるというわけですね。 [1] 1.9.3-p125(main)> str = "hoge".inquiry => "hoge" [2] 1.9.3-p125(main)> str.fuga? => false [3] 1.9.3-p125(main)> str.hoge? => true [4] 1.9.3-p125(main)> str = ActiveSupport::StringI

    Rails.env.development? がどうやってるか調べてみた
    kamipo
    kamipo 2012/11/16
  • rbenv 環境で whenever を使ったバッチ処理 | Supernova

    rbenv 環境下で whenever を使ったメモ 導入は「WheneverでRailsのバッチ処理」をみれば十分かと思います。 whenever が一番いけてるなと思ったのが role を用いてサーバーの役割によって crontab への登録を変えれるところですね。 追記 2012-11-02 01:54:26 role の機能は現時点の最新版 0.7.3 ではまだリリースしてない機能みたいです。 github 上のコードのみ使えるみたいですね。 0.8.0 では含まれてるみたいなのでこうご期待!といった感じです 追記 おわり job_type を定義しといてやれば rails runner や rake や環境依存の処理を簡単に実行できるのもいけてます。 タイトルの通り rbenv 環境下で config/schedule.rb job_type :rbenv_bundle_runn

    rbenv 環境で whenever を使ったバッチ処理 | Supernova
  • ActiveRecord で生SQLを実行し Hash のリストでうけとる

    DBI で言うところの selectrow_arrayref で取得してるのを seletrow_hashref で取得したい!! そんな感じですね。 とりあえずコードを読んでてやり方がわかりました。 version 3.2.8 の ActiveRecord::Base::ConnectionAdapters::Mysql2Adapter の中に FIXME があり、そこにこの書き方がされていましたとさ。 気をつけないといけないのが一度 each を実行すると結果がキャッシュされてしまいます。 いけたりいけなかったりでここが地味にはまった。 reulsts は Mysql2::Result の instance であって、こいつは Enumerable を継承してるだけだから、:as => :hash って Enumerable の機能なのかな。 眠いから今日はこれ以上はおわない 追記 そ

    ActiveRecord で生SQLを実行し Hash のリストでうけとる
    kamipo
    kamipo 2012/11/01
  • RAILS_ENV 依存の定数管理に settingslogic をつかってみた

    どうも。最近は Rails ばかりさわってます。結構楽しいもんですね。 今回は定数管理(OAuth に使用する consumer key とか)で実際あった話をかいてみます。 結論から言うと settingslogic を使うことにしました。 settingslogicで定数を管理するがわかりやすいです。 というかこのまんま使ってます。 何か他に良いやり方や変なところがあればおしえてくださーい。 constant values in Rails 最初このやり方で定数管理をやってんたんですけど RAILS_ENV で定数の値を変えたりしようとすると条件分岐が入り可読性が下がるのが嫌だったのでパス。というか定数ファイルで条件分岐が入ってたりすると、大丈夫かな、、、という気持ちになりますね。 以下、経緯。 OAuth を利用する際にステージング環境とプロダクション環境とで consumer ke

    RAILS_ENV 依存の定数管理に settingslogic をつかってみた
  • Twitter の bootstrap を使ったメモ

    ドキュメント自体が bootstrap で作られていて、それがサンプルも兼ねていてそっから少しいじったメモ。以下、bootstrap の version 1.2.0 での話です。 使い方 bootstrap を使用しようとすると2通りの方法があります。 1. less.js を使用し less ファイルを読み込む方法。(こんな感じ)(※1) 2. css をファイルを読み込む。github に置かれています。 (※1)sass 的なやつです。less ファイルをコンパイルして css ファイルを作ることもできます。 これは npm でインストールする必要があるので node 環境が必要になってきます。 less と sass が分からない場合は”CSS拡張メタ言語「SCSS(Sass)」と「LESS」の比較“がわかりやすかったです。 画面上を16カラムで分割されていて、そこをどう使うかでレ

    Twitter の bootstrap を使ったメモ
  • Debian Squeeze を RAID 下でインストール

    HDD 2台でハードウェア RAID0 を組んだ状態で インストーラーを起動しインストールをすすめていくと パーティションの設定をする際に HDD が複数みえてしまって RAID が組めてない??とはまったのでそのメモ。 結論から言うとインストーラー起動時の GRUB にオプションを渡さないといけなかったみたい。 FreeBSD をいれた時は何もなかったのになぁ。。。 とりあえずこれでいけた 詳細は下記URLからどうぞ。 DebianInstaller/SataRaid – Debian Wiki 追記 2011/08/01 11:48 正確にはハードウェアRAID下ではなくフェイクRAIDでした。 フェイクRAIDのため、ソフトウェアRAIDとして扱わないといけなかったみたい。 というわけで起動オプションに”dmraid=true”というオプションが必要だったみたいです。 ということは

    Debian Squeeze を RAID 下でインストール
  • objective-c で websocket クライアント

    ktat さんの記事を見て iPhone から試してみた zimt ってライブラリを見つけたので、それを使用。 esad さんの master だと WebSocket の draft75 の対応までしかないけど fork してるのだと draft76 にも対応してることがわかったので、そっちから clone してくる。 何個か fork してるのがあったけど mikebevz さんのが一番よさげだったのでそれを使用。 また簡単なチャットサーバーのサンプルも入ってる。

    objective-c で websocket クライアント
  • svn propset について調べてみた(svn:external, svn:ignore, svn:executable)

    svn のリポジトリに外部リポジトリを追加する Subversionのsvn:externalsというプロパティ を参考にして、大元のリポジトリに違うリポジトリを追加(シンボリックリンクみたいなイメージ)してみた。 svn:externals 自体は簡単ですぐにできた。 これできれば Project 単位でリポジトリ作成しておいて、 自分用のリポジトリにもこれで同期できるし、これ便利。 というわけで、さっそく試してみた。 svn propset svn:external 'Hoge http://svn.example.com/hoge' . svn propset svn:external '[checkout 後のフォルダ名] [リポジトリ URL]' [checkout する場所]

    svn propset について調べてみた(svn:external, svn:ignore, svn:executable)
  • XML::Simple で RSS の entry を順番通りに取り出す方法

    <?xml version="1.0" encoding="utf-8"?> <feed> <entry> <key>blog1</key> <title>blog1-title</title> <content>blog1-content</content> </entry> <entry> <key>blog2</key> <title>blog2-title</title> <content>blog2-content</content> </entry> <entry> <key>blog3</key> <title>blog3-title</title> <content>blog3-content</content> </entry> <entry> <key>blog4</key> <title>blog4-title</title> <content>blog4-conte

    XML::Simple で RSS の entry を順番通りに取り出す方法
    kamipo
    kamipo 2009/11/19
  • リバースプロキシ後の webDAV に https で mv できない

    サーバーの構成はこんな感じ LB に pound (http, https 使える状態) webDAV に mod_dav_svn を使って http で apche がたっている。 で、今回の問題が https で checkout したリポジトリに対して mv や rename すると svn COPY 502 bad gateway over HTTPS と言われてコミットできない。 http だと問題なく mv, rename がコミットできる。 以下 http://www.digilib.org/modules/bwiki/index.php?Subversion#zca25176 より引用 これはHTTPS超えて、SVNを管理する場合、ファイル移動する際発生する問題。 davのモジュールは相対ではなく、絶対パスで管理するから。 Subversion付属のsvnserveなら問題

    リバースプロキシ後の webDAV に https で mv できない
  • Gist を Vim から操作する Gist.vim が相当便利

    nnoremap <silent> ,gn :Gist<cr> nnoremap <silent> ,gl :Gist -l<cr> nnoremap <silent> ,ga :Gist -a<cr> nnoremap <silent> ,ge :Gist -e<cr> nnoremap <silent> ,gp :Gist -p<cr> nnoremap <silent> ,gr :Gist nnoremap <silent> ,gu :Gist -l こんな感じでショートカットを作ってます パッチ 実際に使っていて凄い便利。 ただ :Gist xxxx がどーしても動かなかったので gist.vim を修正した。 @@ -391,7 +398,7 @@ elseif arg =~ '^\(-e\|--edit\)$' && bufname =~ bufnamemx let editp

    Gist を Vim から操作する Gist.vim が相当便利
  • モジュールに定義されている関数名一覧を取得

    よく忘れるのでメモ。 シンボルテーブルの一覧を取得するには以下の方法で取得できます。 ポイントはモジュール名の後に :: をつけること。 これよく忘れます。 %モジュール::; で、これだと変数なのか関数なのかが判断できません。 そこで便利なのが Devel::Symdump です。 @array = Devel::Symdump->functions(@packs); これだけで関数一覧が取得できます。 関数だけでなく hash や scalar が取得できたり diff とれたり HTML で出力できたり地味に便利です。

    モジュールに定義されている関数名一覧を取得
    kamipo
    kamipo 2009/06/09
    Devel::Symdump
  • github のフィードを Growl で表示する GitHubGrowler が便利

    id:typester さんの発言 を見て github-growler なるものがあることを知る。宮川さん作。 で、さっそく設定をしてみた。 ソースは github からダウンロード。(ここ) git clone http://github.com/miyagawa/github-growler.git cd github-growler perl github-growler.pl [userID] [APIキー] (※APIキーは [home] => [account] に書いてあります) これで動くようになればok. これ自身がデーモンなので、そのまま放置しとくと新しい動きだけを表示してくれる。 毎回 UserID と APIキー の入力がめんどい場合は git config で登録しておけばよい。

    github のフィードを Growl で表示する GitHubGrowler が便利
  • Samba を使って TimeMachine の環境を整えたメモ

    なぜいまさら TimeMachine を使おうとしだしたかというと OS アップデート中に停電。 そして OS の挙動がおかしくなり、システムをいれなおすも変にメモリリークおこす始末。 で、環境構築しなおすはめに。めんどくさくてしたくないから TimeMachine を導入してみた。 これで安心。やっぱりバックアップは大切ね。 何箇所かハマったので、それのメモ。 実際の作業は分かりやすくまとめているサイトがあるのでそれらを見てもらえればと。 ネットワーク越しTimeMachineをセットアップ Samba を使って TimeMachine の環境を構築する 一連の流れだけまとめとくと ディスクユーティリティで空の新規イメージを作成。 その際に容量は 100M で作り、smb に移動した後にサイズ変更。 あとはボリュームを mac 側にマウントし TimeMachine を実行。 大体こんな

    Samba を使って TimeMachine の環境を整えたメモ
  • FileHandle に書き込んでいたデータの出力先を変数にしてくれるIO::Scalar

    タイトルの通り今回したかったのはファイルハンドルを使って ファイルへ出力していたコードの出力先を変数にしたかった。 そういうことをしてくれる小粋なモジュール IO::Scalar を使って対応しました。 これがまた便利で、数行書き換えるだけでよくてパフォーマンスは使う前と後で、それほど差異はありませんでした。 通常の FileHandle を使ったコード #!/usr/bin/perl use strict; use warnings; open my $fh, '>', 'file' or die $! print $fh 'hoge'; #この時点で file とう名前のファイルがカレントディレクトリにつくられます。 1; IO::Scalar を使って出力先を変数にしたコード #!/usr/bin/perl use strict; use warnings; use IO::Scal

    FileHandle に書き込んでいたデータの出力先を変数にしてくれるIO::Scalar
    kamipo
    kamipo 2009/05/01
  • Tweetie を Growl に対応させる SIMBL プラグイン

    最近 Twitter client に Tweetie を使ってます。 広告がたまに表示されるけど、気にならない程度。個人的には一番自分に合う。 iphonetwitter クライアントもつかいやすいのでとても気に入っています。 いけてなかったのが growl に対応していいなかったこと。 それを差し引いても使いやすいからいいんだけど。 そのうち対応するだろうなーとと思ってたら Tweetie を Growl に対応させる SIMBLE プラグインを発見!!! Tweetie for MacにGrowlを追加(仮) これ当にほしかったから相当うれしい。 同じように Tweetie 使って Growl に表示されない!!って思ってた人は試してみては。 (一時的な急場しのぎのプラグイン(仮)とのことです) SIMBL プラグインもちょっと試してみたい今日この頃。

    Tweetie を Growl に対応させる SIMBL プラグイン
  • snippetsEmu から snipMate に移行したまとめ

    id:dann さんの記事 「snipMateのsnippetが書きやすい件」で snipMate.vim が紹介されてて試してみた。 snipettsEmu.vim は snippets の追加がめんどくさかったってのもあるし 入力がタイポしてたりすると編集後に次の場所に移動できなかったりとか (1)入力後 => (2)に移動といったことをしようとすると html_snippets.vim を書き直す必要があった。 snipMate は sunppets の追加が簡単そうだったので乗り換えてみた。 インストール snipMate.vim をダウンロードしてきて .vim ディレクトリ以下で解凍すれば終了。 使い方は snipettsEmu と同じです。 snippetsの構造 $ tree html snippets |-- html.snippet <- filetype $ tree

    snippetsEmu から snipMate に移行したまとめ