Subscribed unsubscribe Subscribe Subscribe

ジャバ・ザ・ハットリの日記

日本→シンガポール→ベルリンへと家族と共に流れ着き、ベルリンのスタートアップで働くソフトウェアエンジニアの日記

Chef client-server入門 <男は黙ってChef client-server>

Chef client-serverモデルの入門者向け解説。いまだになぜなのかはよく分からないが、Chef-soloや Knife-soloの解説はよくあるのにChef client-server版の解説があまり見当たらない。英語で検索すればたくさんヒットするし、英語圏でChefはclient-server版が…

テキトー実装だとハッカー攻撃の恰好の的になりがちなRubyライブラリopen-uri

open-uriってちゃんと実装しないとなにかと危険な香りがしますな、という話。module OpenURI (Ruby 2.4.0)例えば外部のAPIを叩く必要があって require "open-uri" として使っていたとする。 フォームから受け取ったパラメータを入れてopen(なんやら)とする場…

ITエンジニアの海外転職で出された技術問題をそのままここに貼り付ける - その1

エンジニアが海外転職をする際に必ず出されるのが技術問題で、それらは本当に玉石混交。いい問題もあれば、なんかしっくりこないクソ問題もある。私が現職で応募者に技術問題を出す際にはいつも「外部のネットに書いたり、人に問題の内容を教えたりしないで…

動的計画法(Dynamic Programming)をサルでも分かるように説明する - その1(フィボナッチ数列)

「動的計画法(Dynamic Programming、以下DP)をどんな人にも分かるように丁寧に解説する」というこれまで何人もの優秀な方々が挑戦した内容にあえてまた参戦することにした。「動的計画法」とか「Dynamic Programming」でググると山のように解説ページがヒ…

天才プログラマーと自分との実力差をカンタンに測定する方法

天才プログラマーと自分との実力差をカンタンに測定する方法を発見しましたよ、という話。結論から言うと、いろんなところで過去に開催されたプログラミングコンテストの入賞者の結果を見て、その問題を同じ条件で解いてみること。あるウェブサイトに201…

オブジェクト指向設計実践ガイド 「Practical Object-Oriented Design in Ruby」待望の日本語版がついに発売

本ブログで絶賛オススメしていた 「Practical Object-Oriented Design in Ruby」の日本語版がついに発売された。こちらの記事でオススメを書いたのだが、アクセスはたくさんあってもアマゾンのアソシエイトプログラムを通して購入にいたるケースは少なかった…

RubyのEnumeratorとEnumerator::怠惰(Lazy)の使い所とベンチマーク

RubyのEnumeratorとEnumerator::Lazyの使い所とベンチマークをまとめた。使うと意外と便利なのがEnumerator。 Enumeratorの基礎動作 irbを起動して配列のeachの後にブロックを渡さないでおくと、それはそのままEnumeratorオブジェクトにして返される。 ~ $ i…

5000件の解答者登録達成!ほとんどのエンジニアには解けるパズル1

ほとんどのエンジニアには解けるが、下位10%のダメなエンジニアにだけ解けないパズル?などというITパズルを作成して、それが解けたら解答者登録できる仕組みにしておいたら、8ヶ月かかってやっと5000件に到達した。「だからナニ?」と言われてもそれま…

RubyのリファクタリングでNull Objectを使ってコードをスッキリさせる方法

前回、Rubyのリファクタリングでイケてないコードを美しいオブジェクト指向設計のコードへ改良するための方法という記事を書いて、いい反響をいただいたので第2弾を書いた。Ben Orenstein氏の講演で話されていた前回のとはまた別のリファクタリング方法。元…

Rubyのリファクタリングでイケてないコードを美しいオブジェクト指向設計のコードへ改良するための方法 - その3

前回からの続き。 Rubyのリファクタリングでオブジェクト指向設計に沿った美しいコードになるまでの方法を書いた。 「イケてない」から「マシ」にするためのリファクタリング 「マシ」から「いいね」にするためのリファクタリング 「いいね」から「スゲーい…

Rubyのリファクタリングでイケてないコードを美しいオブジェクト指向設計のコードへ改良するための方法 - その2

前回からの続き。 Rubyのリファクタリングでオブジェクト指向設計に沿った美しいコードになるまでの方法を書いた。 「イケてない」から「マシ」にするためのリファクタリング 「マシ」から「いいね」にするためのリファクタリング 「いいね」から「スゲーい…

Rubyのリファクタリングでイケてないコードを美しいオブジェクト指向設計のコードへ改良するための方法 - その1

Rubyのリファクタリングでオブジェクト指向設計に沿った美しいコードになるまでの方法を書いた。元ネタはこちらのBen Orenstein氏のリファクタリングで、そこに私なりの解説とコードを加えた。かなり追加したのでOrenstein氏の原型とはだいぶ違う箇所もある…

英語圏のITスタートアップにおいて日本人であることの唯一のメリットを転職で活かす方法

もうぶっちゃけて言ってしまえば英語圏のITスタートアップで働く場合に日本人であることのメリットなんてほとんど無い。日々の業務で実感できることなんて皆無だ。ほとんどの情報は英語で発信されているし、会議もランチ中の会話も英語。ジリ貧状態の日本市…

初心者でもカンタンにRailsの中身のコードをコードリーディングする方法

ここで言う「Railsの中身のコード」というのはRailsを使ったRailsアプリのコードのことではない。Railsそのもののコード。DHHが書いたRailsのコード。$ rails new AppNameとかのコマンドが動く仕組みが書かれたコードのこと。 これって職場の同僚と英語で話…

履歴書の技術欄にRailsとかのフレームワークを書くならせめて自分のGitHubアカウントにフォークしとけば多少なりとも印象あがりまっせという話

香港人の若くて可愛いインターンのJ(男)が「就職活動する時になんかいい方法ありますか?」と聞いてきて、その時なにげに答えた内容がまーまーマシな回答だったな、と思ったのでここにも書くことにした。それは「もし履歴書の技術欄にRailsって書くなら、…

RailsでMicrosoftのFace APIを使って写真の顔認識をする方法

写真の顔認識はいろんなプロジェクトで地味に実装されていて、まーまー重要な機能のひとつになってきた。いろんな方法があるが今のところMicrosoftのFace APIに一日の長を感じる。精度が高くまた無料枠でもいい感じに使えるからだ。しかしなぜかドキュメント…

海外転職の面接の時に英語で聞かれるRubyとRailsの基礎質問を徹底マスターしておく方法

海外転職の技術面談の形式に関してはこのブログに何度か書いたので、今回はその具体的な対策を書いた。ずばり「RubyとRailsに関する英語の基礎質問と解答例」書類選考をみごとに通過したら次は電話面談かもしくはオフィスでの面談になる。いづれにしても採用…

難しいと思ってたパフォーマンス・チューニングがちょっとしたことで劇的に改善できた話

前から任されたら嫌だなーと思っていたパフォーマンス・チューニングのタスクがまわってきて「ついに来たー!イヤー!」と思ったのに、ちょっとしたことで劇的にパフォーマンスが改善して一瞬で終わりましたよ、でも大して自慢にならんね、という話。そのプ…

Reactのコード事例から学ぶ初心者向けReact入門と事例集

Reactを使い出した時にまず思ったのが「もっと動いている事例を見せてくれんかな?」だった。事例が少なく感じたので、自分で入門者向けに事例集を作った。 初学者が勉強する時はまずは公式サイトのチュートリアルが一番よくできていると思う。それでも誰も…

公開鍵暗号とRSA暗号の仕組み

公開鍵暗号の仕組みをまとめることにした。 先日作成して公開したエンジニア向けのパズル8は公開鍵暗号の仕組みを使っている。RSA暗号のコード書いてデバッグして、暗号の仕組みをかなり理解したので、せっかくだからまとめた。 公開鍵暗号 金庫の中にに大…

RailsにGoogleのreCAPTCHAを入れる

GoogleのreCAPTCHAとはこれのこと。登録の際にロボットと人間を区別するやつ。 いまだに分かりにくいグニャっとした文字を読ませて入力する形式のCAPTCHAが使われているのが散見される。でもアレってロボットが98%の確率で正解させられるとか聞くし、ユー…

エンジニアとしての仕事観を揺さぶられる本『サッカー データ革命』

本書を読んで、エンジニアとしての仕事観を大いに揺さぶられた。もちろんいい意味で。 内容はサッカーにビッグデータの分析を持ち込んで活躍するデータサイエンティスト達の成果とその手法だ。サッカー データ革命 ロングボールは時代遅れか作者: クリス・ア…

『ほとんどのエンジニアには解けるが、下位10%のダメなエンジニアにだけ解けないパズル?』の結果報告

先日『ほとんどのエンジニアには解けるが、下位10%のダメなエンジニアにだけ解けないパズル?』なるものを作って、しばらく様子を見ていたら想像以上にパズルを解いてコメントいただけたのでその結果報告をする。内容は黒い画面にPlease call my APIs.(私の…

【パズル1】ほとんどのエンジニアには解けるが、下位10%のダメなエンジニアにだけ解けないパズル?

半年ほど前にソフトウェアエンジニア向けの求人募集ページに簡単なプログラミング系のパズルを出して、それが解けた人だけ応募できる仕組みにしよう、という話になった。その時期は求人を拡大募集していたのだが、あまりにハズレな人が多かった。私もいくつ…

他人のコード読むのが好きじゃない私だが、いくつかのRailsのコードだけはよく読んで参考にしている

他人の書いたコード読むのがあまり好きじゃない私だが、いくつかのRailsプロジェクトのコードだけは自分のフォルダにクローンしてよく読んで参考にしている。「この世でもっとも理想的なRailsプロジェクトのソースコードってどんなのだ?」「どこかにそうい…

海外の技術職への転職の際に英語で行われる技術面談対策はこのサイトでやっておいて損はない

英語圏のエンジニア職に転職しようとする際に避けては通れないのが技術面談。何度かこのブログでも紹介しているが、もし海外のエンジニア職への挑戦をお考えの方が居ればこれは十分に対策をとっておいた方がいい。きっと思っているよりも実際にやるとその難…

世界のエンジニアの状況を示すスタックオーバーフローの調査結果は驚きの連続だった

元ネタはこれstackoverflow.comご存知スタックオーバーフローが全世界のエンジニアの状況をアンケート調査した結果。対象はもちろん全世界。 結果は想定通りのものと「え?そうなの?」と予想を裏切るものがあった。こういうのは自分の肌感覚より精密なデー…

Devise で Sign Out が Routing Error になる問題の対処方(method の delete が get になる)Rails 4.x

RailsでDeviseを使っていて、ログアウトした際になぜかRouting Errorになったり、もしくはまったく意図していないRouteに行ってしまう問題の対処方。以下のブログにも同じ問題について言及しているが、deleteをgetにしてしまっているので、なにか消化不良が…

海外転職の際の技術面談にある意外な落とし穴とそれを突破するコツ

海外の会社にエンジニアとして転職する際には必ず技術系質問を何時間も受ける面談がある。そうした技術面談の際には意外な落とし穴がある。(ただしネイティブとまったく同レベルで英語ができる人は別)その落とし穴とは 技術質問を英語で聞かれて英語で答え…

英語とプログラミングが勉強できる動画集

YouTubeには英語でプログラミングを解説する動画が山ほどある。これらは英語のリスニングの勉強と同時にプログラミング知識も身につくので重宝している。私は常に50本近くのこれらのビデオファイルをiPhoneの中に入れておき、ちょっとしたすきま時間に視聴…

Rubyのリファクタリング:「聞くな、言え」の法則

元ネタはこちら。 Tell, Don't Askキャッチフレーズから非常に分かりやすい。 Tell, Don't Ask 言え!、聞くな理想的なオブジェクト指向設計においてはオブジェクトに対してただやって欲しいことを「言う」だけ。 こちらでどうればいいのか聞いたり、判断し…

オブジェクト指向設計を実現するためのドMなコーディングルール

ちょっと古いブログだけど、オブジェクト指向設計を誰でもカンタンに実現するための4ルールを見つけた。 Sandi Metz' Rules For Developersブログ記事は「Practical Object-Oriented Design in Ruby」の著者が提唱しているコーディングルールをthoughtbot社…

Deviseの認証メールをカスタマイズする方法

Deviseの認証メールをカスタマイズする方法がググっても日本語ではあまり出てこないので書いた。Deviseをconfirmableにした場合、デフォルトだととても簡素なメールでの認証になってしまう。 ユーザーにとってはただの1回だけの認証メールで「リンクを押せ…

rbenvのリストが最新に更新されない場合の対処法

Ruby 2.2.2がリリース(2015年の4月)されて、古いバージョンのRubyをバージョンアップする時の極めて地味な問題。リストに最新版が出ない場合。 $ rbenv install --list Available versions: 1.8.6-p383 1.8.6-p420 1.8.7-p249 : : 2.2.1 :なんで2.2.2がず…

やっぱブログはコツコツ書いた方がいいわとrailsでリロードしないとJavaScriptが挙動しない問題で思った

後から考えればしょーもないことでもその問題にハマっている時は「この状況を助けだしてくれるモノなら藁でも掴むわ!」となっている。で、それがコーディングに関する問題になると往々にして救い出してくれるのはどこかのエンジニアが書いた、小さなブログ…

エンジニアが海外で生き残るには流行りモノより基礎技術

職場の同僚エンジニアAに対して抱いた思いは「コイツよく分かってるなー」だった。Aはその分野ではもちろん重宝されている人材。今はシンガポールで暮らしているが、持ち前の技術力で世界の気に入った国を見つけてそこでエンジニアとして働いて、国々を移り…

chefとvagrant のインストール方法ってマチマチだが、正攻法でやった方がいいと断言する

まずはchefのインストール。安易にgemでインストールするとknifeが入ってない、とか不完全なまま放置される可能性があるので以下のようなgemコマンドで入れる方法はオススメしない。 $ gem install chefとするよりも ここからとった方がいい。 Chef Developm…

英語とプログラミングを同時に勉強するなら「Practical Object-Oriented Design in Ruby」の一択

短時間で効果的に英語とプログラミングを同時に勉強したい、となったらその方法として「英語でプログラミングの本を読むこと」がある。ただこれで私は何度も失敗した。失敗の原因は「本選びが悪い」に尽きるが、その主な理由として3つある。 英語が難し過ぎ…

Rails4.1から列挙型enumが使えるが「いなーむ」とか発音すんのやめ

Rails4.1からActiveRecord::Enumが使えるようになった。よく使う事例はUserモデルにrole(役割種別)があって、データはIntegerで0ならguest, 1ならuser, 2ならadminの3種類にするって場合。何の説明もなしにuser.role = 1 とかして「1? なに?どういう意味…

Rubyでクローラーを作る その1

Rubyでクローラーを作りましたので、その方法の解説。まずウェブサイトを巡回してデータ集めるプログラムのことをクローラーと言ったり、スクレイパーと言ったりしますがその定義は以下。 クローラー:ウェブサイトを巡回的にまわってデータを集める。ページ…

omniauth-twitter でOAuth::Unauthorized 401 Unauthorizedが出たら

RailsのウェブアプリにTwitterアカウントを使ったログイン機能を入れようとして、omniauth-twitterを実装したらOAuth::Unauthorized 401 Unauthorizedが出て1日悩んだ。 原因は単純であっさり解決したけど、「最初からちゃんと説明しといてや!」という気持…