タグ

ブックマーク / postd.cc (100)

  • 開発者がビッグデータ分析にPythonを使う時によくやる間違い | POSTD

    システムの構築、新しい技術の習得、PythonやDevOpsなどに情熱を注ぐソフトウェア開発者です。現在はチューリッヒを拠点とするビッグデータのスタートアップで働いており、データ分析およびデータ管理ソリューションのためのPython技術を磨いています。 1 はじめに Python は開発時間を短縮できるという点で一般的に評価の高い言語です。しかし、Pythonを使って効率よくデータ分析をするには、思わぬ落とし穴があります。動的かつオープンソースのシステムであるという特徴は、初めは開発を容易にしてくれますが、大規模システムの破綻の原因になり得ます。ライブラリが複雑で実行時間が遅く、データの完全性を考慮した設計になっていないので、開発時間の短縮どころか、すぐに時間を使い果たしてしまう可能性があるのです。 この記事ではPythonやビッグデータで作業をする時に、最も時間を無駄にしがちな事柄につ

    開発者がビッグデータ分析にPythonを使う時によくやる間違い | POSTD
    vanbraam
    vanbraam 2015/02/28
    多少参考になったのはCythonのところか
  • 勝利のためのD言語 | POSTD

    私は転向しました。新たな言語を見出したのです! そうそう、ぜひ パート2 も読んでくださいね。 さて、ご存知のとおり、Pythonには様々な良いところがあり、非常に多くの分野で目覚ましい働きをします。しかし増え続けるこの業界の需要を満たすように作られたものではありません。もちろん、Pythonで大規模なプロジェクトを構築することはできます(私も構築したことがあります)。しかし検討段階から実際の開発段階に入ると、ものすごくコストがかかります。当に高いのです。CPUの1サイクルあたりの仕事で換算すると、途方もない額になります。 C10M問題 は、 C10K問題 の繰り返しです。つまり、現在のコモディティ・ハードウェアは1秒に数百万パケットの処理が可能となっていますが、実際にそんな数字に達することはめったにありません。例えば、私が一時期働いていた会社はAWSを使用しており、要求を受け入れログを

    勝利のためのD言語 | POSTD
    vanbraam
    vanbraam 2015/02/11
    15年くらい前の印象だと,Dはcompilerが弱い(効率的なnative codeを吐けない(C/C++比),所々バグがある)という話だった記憶がある;次の言語は,RustかDか;http://benchmarksgame.alioth.debian.org/ にDが入ってると嬉しいのだが
  • プログラマを悩ませること Top 10 | POSTD

    10. 「何か」は分かるが「なぜ」が分からないコメント プログラミング入門コースでは、早い段階かつ頻繁にコメントを記述することを生徒に教えます。プログラムを書き始めた初期段階(ごく単純なコードであっても、時に理解し難いことがあります)では、これは実際に役立つことなのですが、習慣にとらわれてしまうプログラマが多くいます。 上記のコードが何をするのか分かりますか? 私は分かりません。 問題は、多くのコメントがそのコードが 何をする のかを説明していますが、 なぜ そのコードが書かれているかが説明されていません。では、異なるコメントが書かれた同じコードを見てみましょう。 こちらの方が分かりやすいですね。何が起きているのかを完全に理解できるとは言えませんが、最低でもなぜこのコードが必要なのかが文脈から判断することができます。 コメントは、構文を理解してもらうためにではなく、読み手がコードを理解しや

    プログラマを悩ませること Top 10 | POSTD
    vanbraam
    vanbraam 2015/01/29
    最後のは自分が訳すなら"6か月後に見る自分のコード"かな;ドキュメントは,ソースコードが代わりに提供されてればなくてもOK.どっちも出さないのは論外;今自分を悩ませてるのは"自分の頭で考えようとしない人"
  • Java 8とScala ‐アプローチの違いと相互イノベーション | POSTD

    ScalaJava 8に関する プレゼンテーション が、他の似た内容のものよりも多くリツイートされ、大変うれしく思います。だから、こうして皆さんにブログでも書いてお伝えすることにしました。ScalaJavaとの違いと、それぞれの重要性についてお話しします。両者は相互にイノベーションしています。言語間でお互いに取り入れています。では、Javaが使える場合であっても、Scalaを学ぶ必要があるのでしょうか? もちろんです。より多くの言語を知れば知るほど、あなたはさらにプロフェッショナルになっていきます。 もし、ScalaエンジニアScalaJavaとの基的な違いについて尋ねたとしても、おそらくその人はラムダ関数とトレイトに関する違いを全て言うことはないでしょう。代わりに次のような例を出すはずです。 public class Person { private String firstN

    Java 8とScala ‐アプローチの違いと相互イノベーション | POSTD
    vanbraam
    vanbraam 2015/01/22
    マクロって必ずしもいいことばかりじゃないと思う.少なくとも可理解性(そのような言葉があるとして)は落ちる
  • 私がコーディングで垂直方向にそろえるインデントをとる理由 | POSTD

    先週、 Hacker News上で興味深い議論が行われました 。テーマは Linux Kernelのコーディングスタイル についてです。 議論の中で私は、 コーディングで垂直方向にそろえるインデントをとるべきか というささやかな聖戦を仕掛けました。私は全面的に賛成です。理由を説明しましょう。 垂直方向にそろえるインデントをとるとは? 簡単な例を挙げてみます。 int robert_age = 32; int annalouise_age = 25; int bob_age = 250; int dorothy_age = 56; ちょっと見ただけで、「bob_age」がおかしいと分かるでしょう。また、目視であちこち探さなくても、全ての値が整数であることが簡単に確認できます。 この考え方は 一般的に 共有 されているわけではありません。ですので、なぜ 多くの 人たち がこれを有効なスタイルガ

    私がコーディングで垂直方向にそろえるインデントをとる理由 | POSTD
    vanbraam
    vanbraam 2015/01/20
    揃える派が多くて驚き;記事の様な単純なものだけならまだしも,派生ケース(ハッシュやJSON,YAMLの区切り,他の演算記号(+-*/.%^等),それらの混合)の判断が面倒すぎるので手動では絶対にやらない.完全自動(例:Go)なら拒否はしない
  • RESTのベストプラクティス | POSTD

    現在ではREST APIはとても一般的な話題です。ほとんどすべてのWebアプリケーションの一部分となっています。シンプルで一貫性があり実際的なインターフェースは必須です。これは皆さんのAPIを他の人が使うことをとても容易にします。皆さんにとってはRESTの実践が日常的に感じられるかもしれませんが、RESTをあまり尊重しない人々もよく見かけます。これがRESTについて投稿するきっかけでした。 この記事にはRESTfulなAPIを設計する時に考慮すべきベストプラクティスがあります。 注意 : ここでのベストプラクティスは、私が過去の経験に基づいて良いと考える事例です。もし違う考えをお持ちであれば、お気軽にメールをくだされば意見交換できると思います。 APIのバージョンを示す APIのバージョンは必須であるべきです。これがあると時間が経ってAPIが変わっても影響を受けません。その方法の1つはUR

    RESTのベストプラクティス | POSTD
    vanbraam
    vanbraam 2015/01/05
    Roy FieldingのRESTのオリジナルの概念と,その実現(の一つ)と言われているRESTful APIとは同じものではない(そもそも抽象度が違う).だからCRUD型のAPIを指す場合はRESTful APIと言う方が正確
  • コーディング ファスト&スロー: 開発者と自信過剰の心理 | POSTD

    今日は、開発者が見積もりを作成している時に脳内でどんなことが起きているのか話してみたいと思います。なぜこんなにも見積もり作業が難しいのか、そして、私の見積もり精度は相変わらずひどいものですが、私がどうやって(非常に幸せな事業主の方々に向けて)ソフトウェアを書いて生計を立てる術を編み出してきたのかについてお話ししたいと思います。 まずは昔話をひとつ。 あれは<私がものすごく年寄りには見えない程度の年代をここに挿入>頃でした、私は年若き開発者でした ^(1) 。大学のコーディング演習では優秀な成績を修め、若手開発者として誰がどんな問題を提示してきても解決し、想像を絶する速さでどしどしコードを量産していました。新しい言語は週末の間に習得し、書けるようになっていました(少なくともそう信じていました)。 それで自然な流れとして自分でプロジェクトを取り仕切ることになりました。アカウント・マネージャが大

    コーディング ファスト&スロー: 開発者と自信過剰の心理 | POSTD
    vanbraam
    vanbraam 2014/12/31
    "着手する時には目に見えてない部分に問題が隠れており、それをあなたは完全に理解していない"->"仕様の段階でもっと慎重に定義しよう"->"でも、これが大きな間違い";"どのくらい自信を持ってやれるか"->"見積もりに換算"
  • “型”を語る際の7つの重大な誤り | POSTD

    私の小論 “In Search of Types” では、プログラミングで使われる“型”という言葉の概念や目的、考え方について、公平な批評を心がけました。所々で、私の真剣さを感じ取っていただけるはずです。このブログ記事では逆に、思い切って堂々と批評していきます。いくつかの意見や考え方に、私は苛立ちを隠せません。先日参加したStrange Loopでも、このような状況に陥りました(補足しますが、すばらしいコンファレンスでした)。この機会に、“型”について多くの人が(誤って)語った“重大な誤り”をリストアップしていきます。 ここで話す内容は、説得力のあるものです。私が苛立ちを覚えるのは、人々が正当かつ透明性のある議論を行っていないことに対してです。結論に誤りがあってはいけません。私は、OCamlである程度の数のプログラミングを行っており、それは型チェックから多くの価値を得ることができるシンプル

    “型”を語る際の7つの重大な誤り | POSTD
    vanbraam
    vanbraam 2014/12/27
    元の英文ももってまわった言い回しが多くて読みづらいが,この翻訳は酷い
  • Git活用法 ー コードはいつも1行ごとにドキュメント化されている | POSTD

    コードには1行ごとに隠しドキュメントがあります。 次のコードスニペットの4行目を書いた人は、何か理由があってDOMノードの clientLeft プロパティにアクセスしたのでしょうが、結果的に何もしていません。これはかなり不可解です。なぜこうしたのか、あなたは説明できますか? 今後、この呼び出しを変更したり削除したりしても安全でしょうか? // ... if (duration > 0) this.bind(endEvent, wrappedCallback) this.get(0).clientLeft this.css(cssValues) 私ではなく他の人があなたにこのコードを見せたとして、誰がこの行を記述したのか、どんな理由があったのか、このままの状態にしなければいけないのか、あなたはおそらく説明できないでしょう。ただし、プロジェクトを進めているときは大抵の場合、バージョン管理シス

    Git活用法 ー コードはいつも1行ごとにドキュメント化されている | POSTD
    vanbraam
    vanbraam 2014/12/19
    'git log -S' と 'git churn' か.覚えておこう
  • デベロッパからマネージャへの転向 | POSTD

    デベロッパなら誰しも、自分の将来を決断すべき時が来ます。このままデベロッパ、またはシニアデベロッパのキャリアに留まってコードに専念するか、チームの管理を担うリードデベロッパや開発マネージャといった管理職の世界に飛び込むかの選択です。 ディルバート:プログラマからスーパーバイザへ 私自身も2011年に同じような決断をしました。ある大手インターネット銀行のシニアデベロッパだった私は、直属の部下はいなかったものの、数人をメンタリングしていました。当時私は、大学生に職場を世話して1年間のトレーニングを提供するアカデミーのプログラムに携わっていました。最初はメンターを担っていたのですが、最終的には、通常のシニアデベロッパの職と並行しつつ、そのアカデミーの管理を任されるようになりました。厳密な意味で、私が複数の人たちを直接管理したのは、この時が初めてで、私はその仕事を心から楽しみました。その後、私は消

    デベロッパからマネージャへの転向 | POSTD
    vanbraam
    vanbraam 2014/11/29
    "メンバーを解雇する覚悟を持とう"これが一番きつい気がする.少なくとも今の自分にその覚悟はない
  • 「ほとんどのユニットテストが役に立たない理由」を読んで | POSTD

    数ヶ月前、私はJames O Coplienの ほとんどのユニットテストが役に立たない理由 という記事に出会いました。Jamesはほとんどのユニットテストは無意味であると考えていて、タイトルは内容をそのまま正確に表しています。彼は 追加記事 で議論をさらに展開しています。私は彼の議論に大変興味をそそられました。というのは、私はユニットテストから多くの利益を得ているからです。私たちはどうしてこのような異なる見解を持つに至ったのでしょうか? 私が何かを見逃したのでしょうか? 結局のところ私は彼の見解に賛成できませんでした。以下は彼の記事に対する私の意見です。 ユニットテストが必要な場合 私の経験では、ユニットテストはアルゴリズムロジックに対して行う時に最も有益です。結合度の高いコードについてはその性質から特に有益ではありません。結合度が高いコードはユニットテストのために多くのモックオブジェクト

    「ほとんどのユニットテストが役に立たない理由」を読んで | POSTD
    vanbraam
    vanbraam 2014/11/26
    全体のテストだけで十分,部品のテストはしなくていい,と言われると気持ち悪い.理由は1)その部品がどう使われるかわからない,2)設計の妥当性が見えなくなる(テストが落ちたときの原因究明コストが高い)
  • パイプとフィルタ ~ソフトウェア工学における有用なアーキテクチャ~ | POSTD

    パイプライン は、最近のソフトウェアエンジニアリングにおいて、非常に便利な(そして驚くほど活用されていない)アーキテクチャパターンです。ソフトウェアでデータの流れを制御するためにパイプとフィルタを用いる考え方は、最初のUNIXシェルが作られた1970年代からあります。もしターミナルエミュレータでパイプ” | ”を使ったことがあるなら、”パイプとフィルタ”を活用できていることになります。以下の例を見てみましょう。 cat /usr/share/dict/words | # Read in the system's dictionary. grep purple | # Find words containing 'purple' awk '{print length($1), $1}' | # Count the letters in each word sort -n | # Sort l

    パイプとフィルタ ~ソフトウェア工学における有用なアーキテクチャ~ | POSTD
    vanbraam
    vanbraam 2014/11/21
    最後の分散パイプラインの話が面白い.昔から研究も実装もあったが,最近実用的になってきたのか:beanstalkd,celery,pressure;PowerShellはパイプライン型言語だと思う
  • ソフトウェアエンジニアがたどる成長過程と失敗の行きつく先 | POSTD

    これからご紹介する私の試みはなかなか難しい側面があり、物議をかもすかもしれません。また、お見せするのは初めてなので完璧とは言えないかもしれません。私はソフトウェアエンジニアのスキルとその影響力を評価するシステムを開発しようとしています。少なくとも、プログラマが成長していく理想的な成長過程を大まかに描いてみようと思います。評価スコアは0.0から3.0まであり、それぞれの数字は専門能力を開発していく際の出発点を表しています。 このシステムは主にビジネスの観点から見た、ソフトウェア業界が求めるものに基づく 実務的な スケールです。数学的な才能や高速アルゴリズムを書く能力、Linuxカーネルの内部構造に関するプログラマの理解の深さなどを評価するスケールではありません。もちろんこうした能力は重要ですし、通常、エンジニアのスキルとともに伸びていく能力ですが、私のシステムが焦点を当てたいのはそこではあり

    ソフトウェアエンジニアがたどる成長過程と失敗の行きつく先 | POSTD
    vanbraam
    vanbraam 2014/11/17
    最初に思った事:コードを書く能力ばかりが語られていて,読む能力に全くと言っていいくらい触れていない;この人の基準では,Goslingも2.0は超えてないって事? 単なるanti-Javaか.阿呆らし
  • フリーランスが払う代償について | POSTD

    ちょうど1年前に、フルタイムの仕事探しをやめ、フリーランスで生きていくことを決めてから、私の生活は一変しました。最近では娘の面倒は全て私が見ているので、私は娘と朝から晩まで生活するようになりました。フリーランスへの転身にはちょうどいい時期だったと思います。 この自由さのおかげで、娘のそばで 成長を手助けすることができるのです。また、が足の手術をした際には回復するまで付き添うことができましたし、家の修繕中も私が応対できました。 フリーランスでいることの自由さは些細なことにも表れます。日中に買い物に行き、夕の材料を買うことができるし、娘の初めての校外学習に付き添うこともできます。それに、宅配業者が来てもすぐに受け取ることができます。 フリーランスになってから、まだ1年しか経っていませんが、もう会社勤めには戻れそうにありません。理由はその自由さだけではありません。 私は人に指図されるのが嫌い

    フリーランスが払う代償について | POSTD
    vanbraam
    vanbraam 2014/11/14
    ワインバーグのこれを思い出した->"もし読者が,時間の4分の1をマーケティングに,またもう4分の1を余裕にあてるとすれば(中略)ほしい給料の5倍の請求をしなければならない"
  • 就職面接でプログラムの解読を求められた! | POSTD

    長文ですが、よかったら読んでください。 就職面接でプログラムの解読を求められました。そして、就職が決まりました。 皆さん、こんにちは。新しいブログを開設したので、私は今とても張り切っています。週に何度か記事を投稿するつもりです。 タイトルを見れば大体の話の内容は分かると思いますが、これから書くのは、トルコのアンカラで受けた就職面接の話です。 私が応募した職は「ソフトウェアセキュリティエンジニア」でした。面接中、面接官たちは非常に専門性が低い質問をしてきましたが、分かることもあれば分からないこともありました。 その後、その企業からメールが届き、保護および暗号化されたバイナリファイルが添付されていました(「解読してみろ」ということでしょう)。 帰宅後にファイルをダウンロードすると、ファイルを開くために聞かれたのはパスワードだけでした。面接官が私に課した課題は、そのパスワードを探すことでした。

    就職面接でプログラムの解読を求められた! | POSTD
    vanbraam
    vanbraam 2014/11/14
    こういうのなんて言うんだっけ? "Binary Hack"?; 合ってた; いきなり実行するのは怖いって自分も思ったけど,たぶん箱庭的な仮想環境だと思う
  • それでも独自のCSVを書くつもりですか? | POSTD

    一部誤訳の指摘があったため、修正しました!ご迷惑おかけして申し訳ございません! あなたは自分でCSVを書いてみたいですか? フィールドはコンマで区切り、行は改行で分けます。簡単ですよね。数行書けば勝手が分かるというものです。 でも、ちょっと待ってください。 フィールド内にコンマがある場合は? ダブルクォート(”)で、該当のフィールドを囲みましょう。簡単ですね。 では、ダブルクォートで囲めるフィールドに例外はあるのでしょうか? フィールド内にダブルクォートがある場合は? フィールド内の各ダブルクォートに対して、ダブルクォートを二重化して適用しましょう。そうすれば元のダブルクォートをエスケープすることができます。 なお、二重化したダブルクォートと空フィールドを囲んでいるダブルクォート( ...,"",... )を勘違いしないように気を付けてください。 フィールド内に改行がある場合は? その場合

    それでも独自のCSVを書くつもりですか? | POSTD
    vanbraam
    vanbraam 2014/11/12
    まず中身を読む前に書く.私はTSVが好き;読んだ.TSV⊂CSVというtaxonomyの文脈だった.RFC4180はTSVを含んでいないように見えるけど..;TSVでも同様の問題は残るな.特に改行.CRLFが正規の改行で,CRがvalue内改行に統一すればいいのに
  • マイクロサービス – 分散された大きな泥だんご | POSTD

    モノリシックがダメだからといって、マイクロサービスが解決策になるわけではない ソフトウェア開発業界は流行に左右されやすいという証拠に、今マイクロサービスが、いたるところで大騒ぎされています。”次の大ブーム”だと思う人もいるでしょう。また、(10年前に”上出来”と見なされたような)大型のSOA、サービス指向アーキテクチャが単に軽量化して進化したものだと捉える人もいるでしょう。私は現在のマイクロサービスアーキテクチャに関しては好意的に見ています。しかし、だからといってこのアーキテクチャは決して万能薬ではありません。言うまでもないことかもしれませんが、多くの人が間違った理由でマイクロサービスに飛び付いているように思えるのです。 これは私の講演でよくお見せするスライドで、 以前ブログにも書きましたた が、ソフトウェアシステムを開発するにはいろいろな方法があります。まず、昔ながらのモノリシック(一枚

    マイクロサービス – 分散された大きな泥だんご | POSTD
    vanbraam
    vanbraam 2014/11/07
    microservicesはarchitecture論ではなくteam管理&governance論だと思う;極端な比喩で言うと,単一のgovernanceの下に完結する鎖国国家(=monolithic)か,様々な国/企業のgovenanceの下で相互に依存するglobal経済圏(=microservices)か,みたいな
  • 今までで最高の仕事を私が辞める理由 | POSTD

    今年の夏の初め頃、テレビジャーナリストのMatt Lauerは、GMのCEOであるMary Barraに、母親であることとCEOであることのバランスをうまく取れるかどうかについて質問をしました。また、The Atlanticの記者も、PepsiCoの女性CEOであるIndra Nooyiに対して、似たような質問を以前にしています。一方で、男性のCEOである私が質問されることといえば、乗っている車や好きな音楽の種類についてであり、父親とCEOのバランスをどのように取るかなんてことは、ついぞ聞かれた試しはありません。 マスコミが全く興味を示すことのないこの質問ですが、私自身は機会があるごとに自問しています。まずは私の状況をお伝えしましょう。 私には、14歳、12歳、そして9歳になる素晴らしい子供たちがいます。彼らと過ごす時間は私の何よりの楽しみで、一緒にスキーや料理、ボードゲーム、水泳、映画

    今までで最高の仕事を私が辞める理由 | POSTD
    vanbraam
    vanbraam 2014/10/22
    これはとても率直で深い記事だと思う;ブクマの少なさが不思議
  • ソフトウェアエンジニアリングにおける認知バイアス5つ | POSTD

    人間の論理は、私たちがプログラミングして毎日使っているマシンの論理とは違って完璧ではありません。人間は間違えますし、悪い精神的習慣を確立してしまいますし、エンジニアとして成功するための能力に悪影響を及ぼす認知バイアスをたくさん持っています。ソフトウェアエンジニアとして定期的に目にする一般的なバイアスのうち5つを見ていきたいと思います。 1. 根的な帰属の誤り 根的な帰属の誤りは、個人の行動を説明するにあたって、気質的または個性的な面を重視しすぎて、状況的な面を軽視しすぎる傾向を言う。対応バイアスとも。 (参照) これは私のお気に入りの認知バイアスです。”至る所で”見られるからです。道で誰かに行く手を遮られると、その人を完全に嫌なヤツだと思ってしまいますが、自分が同じことをしてしまう時は、相手が見えていなかったとか、会議があって遅刻できなくて急いでいたといった理由があります。誰かがバグを

    ソフトウェアエンジニアリングにおける認知バイアス5つ | POSTD
    vanbraam
    vanbraam 2014/10/21
    本当は5つ以上あるんだろうし,"ソフトウェアエンジニアリング"に限った話ではないんだろうけど,"ソフトウェアエンジニアリング"だとこういうシーンでよく見られる,という例も述べられていて参考になった
  • サーバの適切な名前の付け方 | POSTD

    現在、 MNX ではクラウドホスティングサービスの新しいデータセンタを立ち上げているところで、とてもバタバタしています。クラウドホスティングサービスは、今の私たちの主な業務ですが、この会社が始まった当初は、Linux管理のコンサルティングサービスを中心としていました。そのサービスを通じて、たくさんの顧客環境を目の当たりにしましたし、それと同じ数だけの、顧客ごとに異なるデバイス名の指定方法も見てきました。そしてもちろん、その全ての指定方法をいいなと思ったわけではありません。名前の付け方は、コンピュータ草創期からの問題ですよね。おのおのがホスト名の指定方法について一家言持っていました。でも、それらの方法は最初のうちはうまくいっても、時を経てシステムインフラが拡大し、状況に応じて変更を余儀なくされるようになると、すぐに扱いにくくなってしまうものがほとんどでした。 そこで今回は、先述した私たちのデ

    サーバの適切な名前の付け方 | POSTD
    vanbraam
    vanbraam 2014/08/09
    単語リストの日本語版が欲しい