タグ

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

  • モダンWebにおけるキャッシングのための新HTTP標準 | POSTD

    一般ユーザー向けの大規模なWebサイトや、モダンWeb上で動作するWebアプリケーションを運営する場合、CDNなどのキャッシングサービスによって静的コンテンツをキャッシュすることが極めて重要です。 しかしこうしたサービスは、非常に複雑で分かりにくいものです。 幸い、IETF(Internet Engineering Task Force)のHTTPワーキンググループがこの状況を改善すべく、HTTPの新標準策定に取り組んでいます。 最近、同ワーキンググループでは、キャッシングのデバッグとキャッシュ設定の管理を容易にすることを目的とした、HTTPヘッダに関する2つの新標準案の発表に向けて活発な動きがありました。 このことが何を意味し、どのように機能するのか、そしてWeb制作に携わる開発者全てがなぜ注目すべきなのかについて見ていきます。 新標準 この記事で取り上げる標準案は以下の2つです。 Ca

    モダンWebにおけるキャッシングのための新HTTP標準 | POSTD
    koda3
    koda3 2022/08/31
  • プログラマの採用面接で聞かれる、データ構造とアルゴリズムに関する50以上の質問 | POSTD

    情報科学科の卒業生やプログラマの中には、UberやNetflixのような新興企業や、 AmazonMicrosoftGoogle のような大企業や、InfosysやLuxsoftのようなサービスを基とする企業で、プログラミング、コーディング、ソフトウェア開発の仕事に就きたいと考える人が大勢います。しかし、実際にそういった企業で面接を受ける場合、大半の人が プログラミングに関してどのような質問をされるか 見当もつきません。 この記事では、 新卒生からプログラマになって1〜2年までの 経験値が異なる人たち向けに、それぞれの プログラミングの面接でよく聞かれる質問 をいくつか紹介していきます。 コーディングの面接では、主に データ構造とアルゴリズムに基づいた質問 がされますが、 一時変数を使わずにどのように2つの整数をスワップするのか 、というような論理的な質問もされるでしょう。

    プログラマの採用面接で聞かれる、データ構造とアルゴリズムに関する50以上の質問 | POSTD
  • 製品ロードマップの使用をやめて、GISTプランニングを試すべき理由 | POSTD

    何年にも渡り、私は相応量の製品戦略、ロードマップ、プロジェクトガントチャートを作成しました。しかし、もうこれらの資料を作ることはありません。以下に説明する優れた代替策を見つけたからです。 まず、以前のやり方はこちらです。 注釈: 戦略 ロードマップ プロジェクトプラン 実行 アジャイル このプランニング方式だと膨大な仕事が必要です。株主全員の同意を得るだけでも大変だと言うのにROIはかなり低くなります。プランはあっという間に現実と一致しなくなり、期間が長いほど、乖離も大きくなります。私の作ったすてきなロードマップやプロジェクトガントチャートが公開する時点で既に古くなっていると気づいたのは、少し経ってからでした。このプランニングもウォーターフォールのひとつなので(有名な ウォーターフォール・モデル とは異なります)、即応性はほとんど期待できません。トップで変更があると、それが波及しボトムでの

    製品ロードマップの使用をやめて、GISTプランニングを試すべき理由 | POSTD
  • Dockerコンテナが遅くなるもう一つの原因 | POSTD

    前回の ブログ記事 では、Kubernetesの話と、 ThoughtSpot がKubernetesを開発インフラのニーズに合わせてどのように取り入れたかをご紹介しました。今回はその続報として、最近の興味深いデバッグ経験について少々駆け足になりますがお話ししていきます。記事も「コンテナ化と仮想化はノットイコールである」という事実に基づいており、たとえcgroupの上限がどれも高くない値に設定されホストマシンで十分な演算能力が利用できるとしても、コンテナ化されたプロセス同士がリソースの競合を起こす場合があることを示したいと思います。 ThoughtSpotでは内部のKubernetesクラスタで 多数のCI/CDや開発関連のワークフロー を稼働させており、ある1点を除いては全てが順調でした。唯一問題だったのは、ドッカー化された製品コピーを起動すると、パフォーマンスが期待を極端に下回るレベ

    Dockerコンテナが遅くなるもう一つの原因 | POSTD
  • 非難なき事後分析と公正な企業文化 | POSTD

    先週、Owen Thomas が Business Insider に、Etsyでのエラーとミスの取り扱いについて素晴らしい記事を投稿しました。それについて、私たちが実際にどうやっているのか、またその理由について詳しく説明したいと思います。 規模の大小に関わらず、テクノロジー関連の仕事をしていれば、誰でも失敗はよく経験します。失敗は、あなたが取り組むアーキテクチャ設計や、書いたりレビューしたりするコード、入念に調べる警告やメトリクスが何であれ、お構いなしです。 そして、失敗が起こります。これは、複雑なシステムでの作業では必然の結果なのです。でも、個人の作為(または、場合によっては無作為)が引き起こす失敗についてはどうでしょうか。皆を困らせる、こんな不注意な人をどうしましょう? クビにすべきでしょうか。それとも、そういう危ないプログラムには二度と触らせないようにすべき? もっとトレーニングを

    非難なき事後分析と公正な企業文化 | POSTD
  • POSTD | ニジボックスが運営するエンジニアに向けたキュレーションメディア

    POSTD は、ニジボックスが運営する、エンジニアに向けたキュレーションメディアです。ニジボックスはWebサービスの企画、制作、開発、運用を一貫して担うリクルートの100%子会社です。 リクルートグループのオンラインサービスをはじめ、様々な業種・業界・業態のサービス開発を行っております。

    POSTD | ニジボックスが運営するエンジニアに向けたキュレーションメディア
  • モノリシックなバージョン管理の利点 | POSTD

    以下は、私がよく交わす会話の一例です。 人物A:FacebookやGoogleは、巨大なモノリシックリポジトリ(モノレポ)を使っているんだってよ。 私:みたいだね。あれは当に便利だと思う。 人物A:僕に言わせれば最悪の愚行さ。全てのコードを単一のリポジトリに入れるのがヒドイ考えだと、FacebookやGoogleはなぜ思わないんだろうか。 私:FacebookやGoogleエンジニアたちも小さなリポジトリには精通しているだろうけど( 濱野純(Junio Hamano) 氏はGoogle勤務だし)、単一の大きなリポジトリの方が、きっと”ある理由”で好みなんだよ。 人物A:なるほどね。僕としては、まだちょっと違和感はあるけど、モノレポが使われる理由は分かったような気がするよ。 “ある理由”はかなり長いので、同じ会話を何度も繰り返さなくていいように、ここに書き留めておこうと思います。 シンプ

    モノリシックなバージョン管理の利点 | POSTD
  • 技術ドキュメンテーションのためのreStructuredTextとMarkdownを比較する | POSTD

    Markdown と reStructuredText はどちらもマークアップ言語で、どのテキストエディタを使っても簡単に入力できるように設計されたプレーンテキスト形式構文です。どちらにもマークアップされたテキストをHTMLPDFなどの出版形式に変換できるツールが多数あります。 これらのマークアップ言語は多くのドキュメンテーションシステムの基礎となるため、昨今のソフトウェア開発者はマークアップ言語をよく知っておく必要があります。この記事ではプログラマ視点でMarkdownとreStructuredTextのトレードオフを分析します。 Markdownが輝きを放つ場所 テキスト入力による豊富な書式設定で複雑なドキュメント構造を記述することができるマークアップ言語は長く輝かしい歴史を持っており、その歴史は少なくとも1970年代初めの troff とTeXまで遡ることができます。 これらの形式

    技術ドキュメンテーションのためのreStructuredTextとMarkdownを比較する | POSTD
  • 正式リリースされたES8の主な新機能 ???? | POSTD

    EcmaScript仕様第8版の新機能 EcmaScript 8もしくはEcmaScript 2017が、6月末にTC39から正式にリリースされました。私たちはこの1年、EcmaScriptについて色々と議論しているようですが、それは無駄なことではありません。現在、ES標準は新しい仕様のバージョンが年1回公開されています。ES6は2015年、ES7は2016年に公開されましたが、ES5のリリース時期をご記憶でしょうか。JavaScriptが魔法のように普及する以前の、2009年のことでした。 つまり私たちは、安定した言語としてJavaScriptの開発上の変化をたどっており、今や自分の語彙にES8を加える必要があるのです。 ES2017 (the 8th edition of the JavaScript Spec) was officially released and publishe

    正式リリースされたES8の主な新機能 ???? | POSTD
  • GraphQLはWeb APIの次のフロンティアか? | POSTD

    RESTの規約。URLはリソースであり、CRUDはHTTP動詞にマップされる。 RESTの規約に1つ問題があるとすれば、規約が十分でないということでしょう。上記で”通常”、”多くの場合”、”時に”という表現を使ったのは、これらのやり方は仕様で推奨されているものの守られるとは限らないためです。実世界では、大抵のAPIはRESTishがせいぜいです。例えばStripeでは、リソース更新に PUT ではなく PATCH を使うべきですが、歴史的理由でそうはなっておらず、おそらく現時点では変更に値しないでしょう。いずれにしても開発者はドキュメントを読む必要があり、その時、 POST メソッドのユビキタスな使い方があることに気づくのです。 RESTには他の問題もあります。必要なものだけでなく全てが返ってくるため、リソースのペイロードが非常に大きくなることがあるのです。そして多くの場合、クライアントが

    GraphQLはWeb APIの次のフロンティアか? | POSTD
    koda3
    koda3 2017/06/28
  • Webデベロッパのためのセキュリティ・チェックリスト | POSTD

    安全で堅牢なWebアプリケーションをクラウドで開発するのは 非常に困難 です。それを簡単だと思っているような人は、例えばとんでもない頭脳をお持ちというなら別ですが、遠からず痛い目を見ることになるでしょう。 もし MVP(Minimal Viable Product:必要最低限の機能を備えた製品) のコンセプトを鵜呑みにして、有益かつ安全な製品を1ヶ月で作成できると考えているようなら、プロトタイプを立ち上げる前に一度考え直した方がいいと思います。以下に挙げたチェックリストをご覧いただければ、セキュリティに関するクリティカルな問題の多くをスキップしていることが分かるはずです。あるいは少なくとも、潜在的なユーザに対しては 誠実 であるように心がけ、製品が完全ではないこと、そしてセキュリティが不十分な製品を提供していることを伝えるようにしてください。 このチェックリストはシンプルなもので、決して完

    Webデベロッパのためのセキュリティ・チェックリスト | POSTD
    koda3
    koda3 2017/06/22
  • コーディングに対する考え方を変える6つのプログラミングパラダイム | POSTD

    私は時折、コーディングに対する考え方を変えさせられるような、従来と非常に異なるプログラミング言語に出会います。記事では、その中でも特に気に入っている発見をいくつかご紹介したいと思います。 これは、先賢による「関数型プログラミングは世界を変える!」的な投稿ではありません。記事で挙げるのは、もっと「知る人ぞ知る」的なリストです。多くの読者の方にとって、以下の言語やパラダイムは聞いたことのないものが大半だと思いますので、私が経験したように、これらの新しい概念を学ぶ楽しさを感じていただければ幸いです。 注:私は以下の言語の多くに関して最低限の経験しかありません。その発想に引き込まれたのであって、専門的知識は持ち合わせていないため、訂正すべき点や誤りがあればどうぞご指摘ください。また、記事で取り上げていない新しいパラダイムや概念に出会った方は、ぜひお知らせください。 最新情報:記事が r/p

    コーディングに対する考え方を変える6つのプログラミングパラダイム | POSTD
  • オーバーエンジニアリングの正体とその向き合い方 | POSTD

    (編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) 問題は細部(あるいはその欠如)にあり。 議論とは、ソフトウェア開発の基的な構成要素であり、スケーラビリティを向上させるためには避けられない摩擦であると言えます。議論を通して私たちは出来上がるものの品質に影響を与え得るような問題を早い段階で浮かび上がらせることができるのです。その1つがオーバーエンジニアリングの問題です。 ウィキペディアによると、オーバーエンジニアリングとは下記のとおりです。 十分な 安全率 や十分な機能の確保のためか、あるいはデザイン上の誤りのどちらかの理由から、アプリケーションが必要とする以上に強固で複雑なプロダクトがデザインされてしまうこと。 また、ウィキペディアには、オーバーエンジニアリングが好ましい場合として、さらに、このようなことも書いてあります。 ある特定の基準の下で安全

    オーバーエンジニアリングの正体とその向き合い方 | POSTD
  • 機械学習のための仮説検定 | POSTD

    統計学者は、さまざまな機械学習のモデルに関して、複雑な推論を行うべく多くの時間を費やしてきましたが、実は、これを完全に一般化できる非常に簡単で単純な方法があります。テストセットにある2つのモデルのパフォーマンスを、対応のあるt検定を使って比較するのです。 以下に詳細を記載します。 ある真の分散 $ (X,Y) $ から独立同分布で導かれた $n$ 対の $ (x,y) $ があるとしましょう。 “機械学習” は、 $ (x,y) $ の例が与えられた時、 $ x $ を使って $ y $ を推定しようとする問題です。 最終的に、 $ y $ の妥当な推定と思われる関数 $ f(x) $ を生成します。 典型的には損失関数 $ L(y,f(x)) $ を有していますが、この損失関数とは、推定がどれほど良好かを表すものです。 推定量は、期待損失 $ L(f)=E[L(Y,f(X))] $ によ

    機械学習のための仮説検定 | POSTD
  • JOSE(JavaScriptオブジェクトへの署名と暗号化)は、絶対に避けるべき悪い標準規格である | POSTD

    注: 稿は元はJSON Web Tokens(JWT)について書いたものですが、JWTはJavascript Object Signing and Encryption(JOSE)のサブセットであるため、以下の批評はどちらかというとJOSE全体に焦点を当てています。 もし既にJavascript Object Signing and Encryption(JOSE)を実装することを決めているなら、それがJSON Web Tokens、JSON Web Encryption(JWE)、JSON Web Signatures(JWS)のいずれであっても、その決断に疑問を持つべきです。間違いを犯そうとしている可能性があります。 この投稿に書いたことはすべて、RFC 7519、RFC 7515、そしてRFC 7516に則っています。将来、新規のRFCでは以下に挙げるような欠陥はなくなっている可能

    JOSE(JavaScriptオブジェクトへの署名と暗号化)は、絶対に避けるべき悪い標準規格である | POSTD
  • UIデザインにおけるボタン:スタイルの進化とベストプラクティス | POSTD

    ボタンはごく普通の、インタラクションデザインの日常的な要素です。ボタンはとてもシンプルなUI要素に見えますが、過去数十年間でそのデザインはかなり変わってきました。しかし今でもボタンのUXデザインは認識しやすさと明確さについて言及されています。 この記事ではボタンデザインの発展を辿りながら、有効なボタンを作るために何が最も重要で最適なのかを見つけて行きたいと思います。 スタイルの発展 3Dボタン 初期からオペレーティング用のボタンは、周りのコンテキストと区別するために、浮き彫りと影に依存していました。この設計の解決策は枠、グラデーション、ドロップシャドウを使用して、要素を背景やコンテンツから目立たせ、クリック可能な要素だと簡単に認識できるようにするといった単純な原則に基づいていました。 ボタンが浮かび上がっているように見えます。 このWindows95のダイアログボックスは、濃い影とハイライ

    UIデザインにおけるボタン:スタイルの進化とベストプラクティス | POSTD
    koda3
    koda3 2017/04/06
  • RethinkDBとPostgreSQLの比較:私の個人的な経験より – 前編 | POSTD

    導入 最初は RethinkDB社の業務停止 と RethinkDBのライセンスの状況(私の仕事のある部分を阻害するもの) が発端となり、 Hacker Newsでのこのディスカッション に触発されたことで、RethinkDBの代わりにPostgreSQLを使いSageMathCloud(SMC)のリアルタイムとデータベースコンポーネントを全面的に書き直すために、2カ月間必死に働きました。2015年3月からRethinkDBを葛藤しながらも大いに使用していましたが、PostgreSQLも同様に活用しています。番データを使い両システムで同じクエリを全て書き直しているので、私は自分の使い方のケース(SMCのサイト)を比較するのにちょうど良い立場にいるわけです。 これから話すのは私の経験です。”ベンチマーク”や再現可能なハードデータなどを含まない個人的な比較です。言うなれば、休憩所にいる時に話

    RethinkDBとPostgreSQLの比較:私の個人的な経験より – 前編 | POSTD
  • ニューラルネットワークの動物園 : ニューラルネットワーク・アーキテクチャのチートシート(前編) | POSTD

    新しいニューラルネットワークのアーキテクチャがその時々で誕生するため、それら全部を把握することは困難です。全ての略語を覚えようとすると、最初はその数の多さに圧倒されてしまうでしょう(DCIGNやBiLSTM、DCGANを知っている人はいますか?)。 そんなわけで、これらのアーキテクチャの多くを盛り込んだチートシートを作ることにしました。そのほとんどはニューラルネットワークです。しかし、中には全く異なるアーキテクチャも潜んでいます。どれも独特で目新しいアーキテクチャばかりですが、ノードの構造を描くことで基的な関係が分かりやすくなってきます。 これらをノードマップとして描くことの問題点は、これらがどのように使われるかを明確に示していないという点です。例えば、変分オートエンコーダ(VAE)はオートエンコーダ(AE)と同じように見えますが、実際は訓練過程が全く異なりますし、訓練したネットワークの

    ニューラルネットワークの動物園 : ニューラルネットワーク・アーキテクチャのチートシート(前編) | POSTD
  • すばらしいビット | POSTD

    unsigned int v; //only works if v is 32 bit v--; v |= v >> 1; v |= v >> 2; v |= v >> 4; v |= v >> 8; v |= v >> 16; v++;

    すばらしいビット | POSTD
  • –cap-dropオプションを使ったDockerコンテナの安全性を高める工夫 | POSTD

    DockerにはLinuxのケーパビリティを削除するためのオプションがあるのをご存じでしたか? docker run --cap-drop オプションを使うと、コンテナのルートを隔離することができ、コンテナ内でのアクセス権を制限することができます。悲しいことに、ほとんどの人はコンテナやそれ以外の場所でも、セキュリティを強化していません。 翌日では手遅れ ITの世界ではセキュリティへの配慮が遅すぎるという残念な傾向があります。 セキュリティが破られた翌日に初めて、セキュリティ対策システムが購入されているのです 。 ケーパビリティを落とすことで、コンテナのセキュリティを大変手っ取り早く改善することができます。 Linuxのケーパビリティとは? ケーパビリティのmanページ によると、 capabilities とは、個別に有効無効を設定することができる特権の集まりのことです。 私流に説明すると

    –cap-dropオプションを使ったDockerコンテナの安全性を高める工夫 | POSTD