タグ

ブックマーク / blog.kyanny.me (11)

  • highscalability.com の Tumblr のアーキテクチャについての記事を読んだ - @kyanny's blog

    High Scalability - High Scalability - Tumblr Architecture - 15 Billion Page Views a Month and Harder to Scale than Twitter を読んだ。すごく面白かった。 Kindle で引用したところを中心にメモ。 Tumblr のソーシャルグラフの特徴 The graph for Tumblr users has hundreds of followers. This is different than any other social network and is what makes Tumblr so challenging to scale. Tumblr だと follower が数百人いるユーザーはザラにいる。 follower の多いユーザーの post は多くのユーザ

    highscalability.com の Tumblr のアーキテクチャについての記事を読んだ - @kyanny's blog
    takaesu
    takaesu 2016/11/28
    tumblrのアーキテクチャ
  • Solarized Light / Dark themes for Quiver - @kyanny's blog

    I made Solarized Light / Dark themes for Quiver. github.com I've used Solarized themes sometimes in my favorite editors (Vim, Emacs and RubyMine). I like it. Now I'm using Quiver, so why not use Solarized? Unfortunately, Solarized themes didn't exist for Quiver. Fortunately, Quiver allows me to make custom theme, and Solarized makes its color scheme public, so why not create theme? It was a really

    Solarized Light / Dark themes for Quiver - @kyanny's blog
    takaesu
    takaesu 2016/11/14
    マークダウンエディタ
  • Google API Client (Ruby) で Refresh Token を使って Access Token を発行するサンプルコード - @kyanny's blog

    google-api-client-example/refresh_token.rb Signet::OAuth2::Client#new の引数に refresh_token を渡して、そのインスタンスを Google::APIClient#authorization= に入れて、 Signet::OAuth2::Client#refresh! (または fetch_access_token!)を呼ぶと新しいアクセストークンが取得できる。 client = Google::APIClient.new client.authorization = Signet::OAuth2::Client.new( ...snip... refresh_token: refresh_token ) client.authorization.refresh! アクセストークンそのものが文字列で欲しい場合は

    Google API Client (Ruby) で Refresh Token を使って Access Token を発行するサンプルコード - @kyanny's blog
  • Capybara (Selenium WebDriver) で select2 バージョン 4 以降を操作する - @kyanny's blog

    普通に Capybara の select が使える。 StackOverflow でいろいろ小難しいやり方が出てくるが、古いバージョン用なので無視してよい テキスト検索するやつだけちょっと工夫が必要 まずテキストフィールドを表示させるために .select2-selection__arrow を click してセレクトボックスを開く。他の select2 な要素と誤爆しないように within で囲う必要があるかもしれない 次にテキストフィールドに文字を入力する。このときテキストフィールドは .select2-selection__arrow を包含するコンテナ要素の中ではなく、 DOM ツリーでいうともっと外側の </body> 直前にある。 within の中からはアクセスできないので注意すること ユーザー入力テキストの値に応じて Ajax でデータを取得するタイプのセレクトボック

    Capybara (Selenium WebDriver) で select2 バージョン 4 以降を操作する - @kyanny's blog
  • BOM つき UTF-8 ファイルの作り方・確認方法・削除方法 - @kyanny's blog

    CSV ファイルを一行ずつ処理するプログラムを実行したら一行目のデータでエラーになったが、ログをみてもファイルをエディタや cat(1) でみてもおかしなところはない、ということがあって、 BOM かな?と思ったけど BOM つきかどうか確認するのに手間取ったので、次回(何年後だろう)のためにメモ。 BOM がついてるか確認する more(1) か less(1) で開いてみてファイル先頭に <U+FEFF> があったらビンゴ。 file(1) でも教えてもらえる。 Emacs でファイルを開いて BOM を確認する・表示させるのはやり方を見つけられなかった。 hexdump(1) でファイル先頭に? ef bb bf あるか見るのでももちろんよいが、普段からバイナリファイルのダンプを見慣れていないと見てもとっさに BOM つきであることがわからないので、一目見て明らかにおかしいとわかる

    BOM つき UTF-8 ファイルの作り方・確認方法・削除方法 - @kyanny's blog
    takaesu
    takaesu 2016/03/16
    UTF8のBOM付き、よくハマる。。lessかmoreでみればいいんだ
  • GitHub Label Drill Down Viewer - @kyanny's blog

    「このラベルがついているイシューはどんなラベルがついてるんだっけ?」というのをドリルダウンしながら見たくなったので、そういうビューアを作った。 関連のあるラベルだけを絞り込んでいくので、「『キャンペーン/マーケティング』ラベルがついてるイシューは大量にあるけど、『bug』ラベルは一個もついてないから急いでやる必要はなさそうだな」みたいな俯瞰的な見方をするのに便利かもしれない。 github.com

    GitHub Label Drill Down Viewer - @kyanny's blog
  • 最近読んだもの - @kyanny's blog

    情報処理2015年12月号特集記事「20年目のRubyの真実」インタビュー-情報処理学会 「rspec の should_not be とかだいぶ予想外」「マクロが無くても rsepc を書けるので(Lisp の)マクロは無くてもいいかな」のあたりが面白かった。「ふううのコンピューターの CPU コア数がこんなに増えたのも、メモリが案外増えなくて未だにボトルネックになってるのも予想外」というあたりは非常に興味深かった。そして昨年末の RubyKaigi で mruby 触ろうと思ったものの仕事が忙しくてすっかり忘れていたので今年こそ触ろう。 持ち場で頑張ることを誇りにしている人の話 - ベンチャー役員三界に家なし 題とずれた話だが、おれは「真面目で自分の持ち場意識が高い人」こそが組織を官僚化させると思っている。その人個人に罪はない。真面目で(良いことだ)、与えられた仕事に忠実で(良いこと

    最近読んだもの - @kyanny's blog
  • Quipperで2年働いてわかった、グローバル企業で求められる英語力の現実 - @kyanny's blog

    Quipperに入社して2年経った。 転職するにあたり、最も心配だったのは英語だ。当時は英検もTOEICも受験した経験すらなく、自分の英語力がどの程度のものなのか客観的に知る術がなかった。日常的に英語を使う機会も乏しく、果たして当に外資系企業でやっていけるのか甚だ不安だった。 2年働いてみて、なんとかやってこれたと思うし、今後もやっていけそうだという手応えもある。2年間の振り返りとして、自分が体験した「グローバル企業で求められる英語力の現実」を綴ってみたい。 前提と特有の事情 仕事英語にまつわる話を見聞きするときいつも、「帰国子女とか海外留学とか長期出張・駐在とかの経験がある、とかいう人たち、元々普通に比べて英語力が高かったんだからチートじゃんか」と感じていた。自分はそういう経験が一切ない。Quipperで働き始めるまで外国人と仕事をしたことはないし、海外旅行すら一度しか行ったことがな

    Quipperで2年働いてわかった、グローバル企業で求められる英語力の現実 - @kyanny's blog
  • Redis の maxmemory-policy について - @kyanny's blog

    Redis をキャッシュストレージとして利用する場合、 maxmemory によって利用可能なメモリの最大値を指定できる。 maxmemory の値を超えるデータの追加が発生した場合の振る舞いを maxmemory-policy によって指定できる。デフォルトの maxmemory-policy は volatile-lru で、 LRU アルゴリズムに従って古いキーの値が優先的に破棄される。 maxmemory-policy は数種類から選べるが、そのうち noeviction を選んだ場合、古いキーの値は破棄されず、新規追加はエラーとなる allkeys-lru または allkeys-random を選んだ場合、 expire の有無に関わらず、全てのキーの中から破棄対象が選ばれる その他を選んだ場合、 expire がセットされているキーのみが破棄対象となる という違いがある。実装

    Redis の maxmemory-policy について - @kyanny's blog
  • bundle のなかで bundle する - @kyanny's blog

    Bundler.with_clean_env と bundle install --gemfile について追記しました bundle exec した環境下でさらに bundle exec したいことがある。 bundle exec rake resque:work で起動した Resque ワーカーのなかで system("bundle exec rake spec") のような外部コマンドを呼び出すとか。ありますよね。ぼくは最近ありました。そしてハマった (そしてググりづらかった) のでこれ以上犠牲者を増やさないためにブログに書く。 bundler は実行時にいくつかの環境変数を定義するが、この場合問題になるのは BUNDLE_GEMFILE と GEM_HOME だ。 BUNDLE_GEMFILE は bundler が参照する Gemfile のパスで、 GEM_HOME は ge

    bundle のなかで bundle する - @kyanny's blog
    takaesu
    takaesu 2013/11/13
    rails newするときなどでもbudnle のなかで bundleする
  • curl(1) で POST する際の --data と --form の違いについて - @kyanny's blog

    調べてみた。動作確認用のサーバは plackup で立てている。 app.psgi の中身は一番最後に。 --data (-d, --data-ascii) application/x-www-form-urlencoded 形式で POST する。 @/path/to/file のように value の先頭が @ ではじまっているとファイルを読み込んで改行文字を取り除く。パラメータや @ つきで指定したファイルの中身はすべて URL エンコードされていることが期待される。つまり curl(1) は URL エンコードしてくれない。 -d を複数回指定するとすべてのパラメータが & で連結される。 @ でファイルを指定する場合、 -d 'file=@sale.txt' のようにすると中身が展開されないので注意 (file=@sale.txt という文字列が渡される) $ curl -d '

    curl(1) で POST する際の --data と --form の違いについて - @kyanny's blog
  • 1