タグ

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

  • Web Storage: セッショントークンのマシな手段 ― cookieとセキュリティ面を比較してみる | POSTD

    最近、私は「セッショントークンを、cookieの代わりに Web Storage (sessionStorage/localStorage)に保存するのは安全ですか?」ということを尋ねられました。このことについてGoogleで検索したところ、検索結果の上位のほとんどが「Web storageはcookieに比べてかなりセキュリティが弱く、セッショントークンには不向きである」と断言していました。透明性のため、私はこの逆の結論に至った理論的根拠を公に書くことにしました。 Web Storageに関する議論の中核として言われるのは、「Web StorageはsecureフラグやHttpOnlyフラグといったcookie特有の機能をサポートしていないため、攻撃者が容易に盗み取ることが可能」というものです。path属性についても言及されます。私は、これらの機能それぞれについて調べてみました。そして、

    Web Storage: セッショントークンのマシな手段 ― cookieとセキュリティ面を比較してみる | POSTD
  • The 2019 DevOps RoadMap | POSTD

    DevOpsエンジニアになるためのイラストガイド(関連コースへのリンク付き) DevOpsは今とてもホットなテーマです。多くの友人、同僚、上級開発者である知人がDevOpsのエンジニアとなり自分のいる組織の中で第一人者になろうと一生懸命になっています。 私は DevOps の恩恵を心から認めています。DevOpsはソフトウェア開発とデプロイの改善に直結しているからです。しかし私の限られた経験から言っても、DevOpsのエンジニアになるのは 簡単ではありません。 非常に多くのツールと事例があり、適切な学び方を選ぶのがとても難しいのです。 Javaのブロガー としてよく質問を受けます。例えば、 DevOpsのエンジニアになるにはどうすれば? どのツールを学べば? どんな事例を参考にすれば? DevOpsエンジニアにはMavenとJenkinsがマストですか? DockerKubernetes

    The 2019 DevOps RoadMap | POSTD
  • 開発者が知っておくべきSOLIDの原則 | POSTD

    (編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) オブジェクト指向プログラミングが、ソフトウェア開発に新しい設計を持ち込みました。 その結果、開発者は単一の目的を処理するために、全体のアプリケーションに関係なく、1つのクラスの中で、同じ目的や機能を持つデータを結び付けることができるようになりました。 しかし、このオブジェクト指向プログラミングで、分かりにくいプログラムやメンテナンスができないプログラムを防ぐことはできません。 そこで、5つのガイドラインがRobert C. Martinによって作り出されました。これら5つのガイドラインすなわち原則により、開発者にとって読みやすく、メンテナンスが可能なプログラムを作成しやすくなりました。 5つの原則は、S.O.L.I.Dの原則と呼ばれています(頭字語はMichael Feathereによって名付けられま

    開発者が知っておくべきSOLIDの原則 | POSTD
    seckie
    seckie 2019/06/28
  • TypeScriptを使った方がいいケースとは? | POSTD

    去年の夏、私たちは大量のコードベース(18,000行以上の コード行数 )をJavaScriptからTypeScriptへと変更しました。この移行作業を通じて、両者の相違点や類似点について大いに学び、TypeScriptの優れたユースケースや、TypeScriptを使うべきではないケースなどについて考えてみました。 型システムとは補助輪のようなものです。転倒防止してくれる代わりに、遅くなり、操作性が制限されます。 TypeScriptのユースケース コードサイズ :ソースコードが膨大である場合、また複数の人がプロジェクトに従事している場合、型システムは明らかなエラーを防ぐのに役立ちます。 特に SPA の場合は当てはまります。誰かが変更したコードが他の人のコードを破損させてしまう可能性があるなら、何らかの安全機構を持つ方がいいでしょう。TypeScriptトランスパイラ は明白な誤りを

    TypeScriptを使った方がいいケースとは? | POSTD
  • WebAssemblyはなぜ速いのか | POSTD

    記事はWebAssemblyに関するシリーズの第5回目で、今回のテーマはWebAssemblyが高速な理由です。前の記事をお読みでない方は、 初めから目を通される (訳注:原文リンク)ことをお勧めします。 前回の記事 (訳注:原文リンク)では、プログラミングに WebAssembly あるいはJavaScriptを使うかは二者択一の選択ではないことを説明しました。私たちは、WebAssemblyのみのコードベースを書く開発者が膨大な数になるとは思っていません。 ですので、アプリケーションにWebAssemblyJavaScriptのどちらを使うか選ぶ必要はありません。しかし私たちとしては、開発者がJavaScriptコードの一部をWebAssemblyに置き換えることを期待しています。 例えば、Reactで開発しているチームは、リコンサイラコード(言い換えれば仮想DOM)をWebAss

    WebAssemblyはなぜ速いのか | POSTD
  • 2017年JavaScriptのテスト概論 | POSTD

    稿は、JavaScriptのテストについて最も重要な根拠、用語、ツール、アプローチなどの知識を身に着けることを目的とした簡略版ガイドブックです。稿で検討する数々の側面に関する最新の秀逸な記事も紹介しつつ、私たちが経験的に得たことも多少付け加えたいと思います。 Facebookによるテスト用フレームワークであるJestのロゴをご覧ください。 見てお分かりのように、このフレームワークは「苦痛のない」JavaScriptのテストをスローガンに掲げています。しかし、 “次のように言う人” もいます。 苦痛のないテストなんてあり得ない。 実際、Facebookはこのスローガンを掲げるだけの素晴らしい理由があります。一般的にJSのデベロッパは Webサイトのテストにあまり満足していません 。JSのテストには制限があり、実装が難しく、低速である傾向があります。 一方、正しい戦略を立てて適切にツールを

    2017年JavaScriptのテスト概論 | POSTD
  • マイクロサービスはもう十分 | プロダクト・サービス | POSTD

    モノリスとして管理するには複雑すぎるというシステムでない限り、マイクロサービスは検討さえしなくていい。ソフトウェアシステムの大多数は、単一のモノリシックアプリケーションとして構築されるべきである。そのモノリス内のモジュール性が良好になるよう注意を払う必要はあるが、別個のサービスに分けようとしてはいけない。要旨 モノリスとして管理するには複雑すぎるというシステムでない限り、マイクロサービスは検討さえしなくていい。ソフトウェアシステムの大多数は、単一のモノリシックアプリケーションとして構築されるべきである。そのモノリス内のモジュール性が良好になるよう注意を払う必要はあるが、別個のサービスに分けようとしてはいけない。 – Martin Fowler 明確に構造化されたモノリスを構築できない時、なぜマイクロサービスがその答えだと思うのか。 Simon Brown 始めに マイクロサービスの利点と欠

    マイクロサービスはもう十分 | プロダクト・サービス | POSTD
  • 私たちはなぜReactではなくVue.jsを選んだのか | POSTD

    Qwintryチームは最近、既存のすべてのプロジェクトフロントエンドVue.jsに移行しはじめました。新しいプロジェクトでもVue.jsを使います。 レガシーなDrupalのシステム(qwintry.com) ゼロから新しく書きなおすqwintry.comのブランチ Yii2で動くb2bシステム(logistics.qwintry.com) その他、比較的小さめのプロジェクト(ほとんどは、PHPとNode.jsでバックエンドを構築しているもの) プロジェクトの規模についていうと、 Qwintry は世界中で約50万人の顧客が使っています。アメリカドイツに倉庫を持っていて、アメリカ国内 最大の郵送先 のひとつで、東欧や中東への出荷に注力しています。Qwintryは、アメリカのオンラインストアでグッズを購入する人たちのためのツールです。私たちの倉庫に届いた荷物をコントロールパネルで管理で

    私たちはなぜReactではなくVue.jsを選んだのか | POSTD
  • くだらないAPIなんていらないよ – 2016年のウェブスクレイピング事情 | POSTD

    ソーシャルメディアのAPIとそのレート制限は、あまり気分のよいものではありません。特にInstagram。あんな制限つきAPIを欲しがる人がいったいどこにいるんでしょうね? 最近のサイトは、スクレイピングやデータマイニングの試みを阻止するのがうまくなってきました。AngelListはPhantomJSすら検出してしまいます(今のところ、他のサイトでそこまでの例は見ていません)。でも、ブラウザ経由での正確なアクションを自動化できたとしたら、サイト側はそれをブロックできるでしょうか? 並行性を考えたり、さんざん苦労して用意した結果として得られるものを考えたりすると、Seleniumなんて最悪です。あれは、私たちが「スクレイピング」と聞いて思い浮かべるようなことをするためには作られていません。しかし、賢く作り込まれた今どきのサイトを相手にして、インターネットからデータを掘り当てるための信頼できる

    くだらないAPIなんていらないよ – 2016年のウェブスクレイピング事情 | POSTD
  • React Fiberアーキテクチャについて | POSTD

    初めに React Fiberは、現在進行形で進められているReactのコアアルゴリズムの再実装であり、Reactチームの2年以上にわたる研究の成果です。 React Fiberは、アニメーション、レイアウト、ジェスチャーといった領域に対する適性を向上させることを目指しています。React Fiberの目玉となる インクリメンタルレンダリング は、レンダリング作業を分割して、複数のフレームに分散させることができる機能です。 他には主に、新たな更新があった際に作業を休止・強制終了・再利用できる機能、更新の種類別に優先順位をつけられる機能、新しい並行プリミティブなどが挙げられます。 このドキュメントについて Fiberは、コードを見ただけでは分かりにくい斬新な概念をいくつも導入します。このドキュメントはそもそも、ReactプロジェクトにおけるFiberの実装に伴って私が取っていたメモを集めたも

    React Fiberアーキテクチャについて | POSTD
    seckie
    seckie 2016/09/11
  • ページネーションのベストプラクティス | POSTD

    seckie
    seckie 2016/06/22
  • 「プログラムの書き方は知っているが、何をプログラムしていいか分からない」 | POSTD

    新人の開発者が繰り返し突き当たるテーマがあります。プログラム言語を1~2種類勉強するのに時間を費やしたり、プログラミングの演習を行ったりすることに関して問題はないと感じていても、学んだことをどう応用していいのか分からずにいるのです。このことは、次のようなフレーズとしてよく耳にします。「プログラムの書き方は知っているが、何をプログラムしていいのか分からない」と。これに対する答えは、一般的に、「プログラミングの課題を行いなさい」、「オープンソースプロジェクトに貢献しなさい」、または、「ゲームを作りなさい」というようなものです。 プログラミングの課題を行うことは、知的ないい訓練にはなります。しかし新しいプログラムの開発方法を学ぶのにはあまり役立ちません。オープンソースプロジェクトに貢献するのは確かにステップアップになります。実際のプロジェクトがどのように構成されているか学び、プログラム言語の技術

    「プログラムの書き方は知っているが、何をプログラムしていいか分からない」 | POSTD
  • LastPassでさえも盗まれうる – LastPassのセキュリティを探る | POSTD

    私は Alberto Garcia と一緒に、アムステルダムで開かれたBlackhatで “Even the LastPass Will be Stolen, Deal with It!(LastPassでさえも盗まれるうのです。それでも我慢しましょう)″ という調査を口頭発表してきました。その会議は大成功で、聴衆から素晴らしいフィードバックを得ることができました。たくさんの人からビデオやスライドなどの資料が欲しいと言われたので、講演の詳細を記した記事を書くことは価値があると考えました。 動機 Albertoのチームの1つがペネトレーションテストをした時、彼は複数のコンピュータへのアクセスに成功し、その全てがLastPassを参照するファイルを持っていることを発見しました。彼は私のところへ来て、LastPassの仕組みをチェックし、もし可能ならLastPassの認証情報を盗んでみたら面白い

    LastPassでさえも盗まれうる – LastPassのセキュリティを探る | POSTD
  • 本当に有意義なエラーメッセージを書くには | POSTD

    想像してください。あなたは今、オフィスにいます。周りとは仕切られた個別スペースです。今週は、近々新たに展開する予定の製品を紹介するために多くの時間を割いてきました。疲れが溜まり、不機嫌ぎみになっています。今はようやく近づいた週末が待ち遠しくて仕方ありません。 しかしその前に、新製品を紹介するホームページがWindows 10で正常に動かくかどうかを試してみなければなりません。あなたは問題ないはずだと信じています。あなたが信頼を寄せているMacには、Windowsを問題なく実行できるソフトもインストールされています。 ソフトを起動してみると、丁寧にもWindowsがポップアップ通知で可能なアップデートがあることを知らせてくれます。もちろんアップデートを開始するため、あなたは了承します。 すると、こんなものを目にするのです。 訳:何かが発生しました。 何かが発生。 新製品の準備のため期限が迫っ

    本当に有意義なエラーメッセージを書くには | POSTD
  • 三目並べで学ぶミニマックス法 | POSTD

    最近、「絶対に勝てない三目並べ」のゲームを作ったのですが、非常にささやかながらも楽しいプロジェクトで、いろいろ学ぶこともできました。ゲームの全体像に興味がある方は、 こちらでゲームを試してみてください 。 無敵のゲームにするには、コンピュータ側が全ての手を計算し、何らかの基準を用いて最善の手を決められるようなアルゴリズムを作る必要があります。多岐にわたって調べた結果、このプロジェクトにはどうやら ミニマックス アルゴリズムが適当そうだということが分かりました。 このアルゴリズムを根的な意味で真に理解し、自分のゲームに実装できるようになるまでにはある程度の時間が必要でした。多くのコードサンプルと説明に目を通しましたが、私が能なしだからか、どれを見てもプロセスの内実を十分に理解することはできなかったのです。この投稿が、ミニマックスアルゴリズムに関する皆さんの理解に少しでもお役に立てたらと思い

    三目並べで学ぶミニマックス法 | POSTD
    seckie
    seckie 2015/09/25
    from Pocket September 25, 2015 at 10:07AM via IFTTT
  • あなたと働くエンジニアの人生を最悪なものにしないために – デザイナーのための3つの提言 | POSTD

    それとも、”私はデザイナーなので、そんなことを知る必要はありません”と言い張るのか 私の職業はデザイナーです。私はエンジニアが好きです。ちょっと度が過ぎるくらい好きかもしれません。以前、Facebookの グループ に参加した時、かなり前からチームのメンバであるiOSのエンジニアと初めて話して、口から泡を吹いたことを思い出します。私はその時、これまでに自分がObjective-Cでコーディングしたものについて、勢い込んで話し始めました。まるで、高校の新入生が、上流階級の生徒に対して、自分が付き合う価値のあるカッコいい人間だと証明しようとしているみたいだと感じました。 デザイナーの多くが、エンジニアとの話し合い方を実はよく分かっていないと思います。もちろん、デザイナーはエンジニアと話しますが、当の意味で関わろうとしていません。この記事を書いた理由はそこにあります。ソフトウェアエンジニアの懸

    あなたと働くエンジニアの人生を最悪なものにしないために – デザイナーのための3つの提言 | POSTD
  • あまり知られていないCSSの12の事実(続編) | POSTD

    1年以上前に、私は最初の 12 Little-known CSS Facts(あまり知られていないCSSの12の事実) を発表しました。SitePointで最も人気の高い記事となりました。この記事を書いた後も、私はCSSのアドバイスやちょっとした情報の収集を続けました。だって、大ヒット映画も必ず続編を制作するじゃないですか。 注釈 SitePoint/ Natalia Balska によるイラスト それでは、早速今年も開発のヒントになる12の事実について話しましょう。もちろん、中にはもうすでにご存じのこともあると思いますが、この中で初めて知ったという事実がありましたら、コメントでお知らせください。 1. border-radius プロパティに”スラッシュ”シンタックスを使用できる事実 このプロパティについてはSitePointに4年以上 前に書いた のですが、この機能が存在することを、未

    あまり知られていないCSSの12の事実(続編) | POSTD
    seckie
    seckie 2015/08/14
    from Pocket August 14, 2015 at 10:10AM via IFTTT
  • ポール・グレアムによる「意地の悪い人は失敗する」 | POSTD

    最近私は、自分が知る成功者の中には意地の悪い人がほとんどいないということに気がつきました。例外はありますが、ごく少数と言っていいでしょう。 意地の悪い人というのは、決して珍しい存在ではありません。事実、インターネットの世界では、人がどれだけ意地悪くなれるかということを簡単に目にすることができます。自分の意見を公にすることは、数十年前までは有名人やプロの作家でもなければできないことでした。それが誰にでもできることとなった現在、これまで隠れていたような意地の悪さまでもが、簡単に私たちの目の前に現れてしまうようになったのです。 意地の悪い人は世の中にたくさん存在しているにもかかわらず、なぜか私が知る成功者の中にはほとんど見当たりません。これは一体なぜなのでしょう? 意地の悪さと成功には、反比例の関係があるのでしょうか。 もちろん、どの分野でもそうだと言っているわけではありません。私がよく知ってい

    ポール・グレアムによる「意地の悪い人は失敗する」 | POSTD
    seckie
    seckie 2015/08/04
    from Pocket January 22, 2015 at 11:25PM via IFTTT
  • 30日間で300回のプログラミング面接をしてわかったこと | POSTD

    プログラマの採用方法を改善するため、1カ月程前にTriplebyteを立ち上げました。昔から変わらず、履歴書、コードをホワイトボードに書かせるプログラミングテスト、そして直感など、これらを判断基準に面接を行う企業が多すぎます。私たちは、より良い採用方法について最初に考えたアイディアを マニフェスト に記しました。それから1カ月と少しが経過し、この30日間で、300回の面接を行いました。私たちはアイディアを実行に移し、どの方法が有効で、どの方法が有効ではないかを確認し、そのプロセスを繰り返すということを始めたのです。この投稿には、300回の面接を通して私たちが学んだことを書いていこうと思います。 投稿では、細かい内容についての説明が多くなりますが、キーとなる発見は以下の通りです。 私たちが作ったオンラインのプログラミングクイズの結果を見れば、高い確率でプログラミング面接の結果を予測できる。

    30日間で300回のプログラミング面接をしてわかったこと | POSTD
    seckie
    seckie 2015/07/25
    from Pocket July 21, 2015 at 09:56AM via IFTTT
  • 優秀なJavaScriptの開発者になるための5か条 | POSTD

    (注記:7/15、いただいた翻訳フィードバックを元に記事を修正いたしました。) 子供の頃、私の興味は互いに関係性のない様々な分野に及んでいました。数学歴史も大好きでした。 ルネッサンスマン 、つまり 博学者 と言う、複数の分野に秀でた人になりたいと思っていました。これはとても難しい課題で、私は突如として、器用貧乏な人になってしまう危機に直面したのです。 私は特定の分野に特化しなくては、と考え始めました。そうすればたとえルネッサンスマンにはなれなくても、少なくとも、器用貧乏にならなくても済むと思ったのです。どうしたらソフトウェア開発をするのに必要な広い知識を保ちながら、1つの分野で専門性を高めることができるのでしょうか。 この記事では、過去5年間、私が良いJavaScript開発者になるために使ったテクニックとリソースの概要をお伝えしようと思います。 最近の多くのWeb開発者は、ある共通の

    優秀なJavaScriptの開発者になるための5か条 | POSTD
    seckie
    seckie 2015/07/20
    from Pocket July 15, 2015 at 10:00PM via IFTTT