読者です 読者をやめる 読者になる 読者になる

CSS in JSで作るStyled Componentsの最小デザイン

CSS in JSでStyled ComponentsをAngularやReactといったフレームワークなしで作る最小デザインを例示する。 次のようなHTMLで表されるDOM ComponentにCSSを適用したいとする。 <article id="id"> <h1>Title</h1> <ul> <li>item</li> <li>item</li> </ul> </article> 単純にidで絞り込んだCSSを記述したstyle要素があればCSSを…

XSS安全なMarkdownパーサーの要件と実装例

Markdownでユーザー入力を処理するならばXSS対策は不可欠であり、最高のXSS安全性を持つMarkdownパーサーを求めるならば少なくともDOMを生成して返すものでなければならない。 HTML文字列を返すものは基本的に安全性を担保せず呼び出す側に無害化の責務を負…

Promiseの失敗文脈を使ってはならない理由と組み込み関数では使っていい理由

Promiseのthenメソッドの第二引数およびcatchメソッドのコールバックの呼び出しで表現される失敗文脈、これは原則として使ってはならない。 ネイティブの組み込み関数が使っているからといって真似してPromise値を返し失敗文脈を持つ関数を作ってはならない…

Gitクライアントに保存したsshパスワードを消す方法

git

git config --unset-all credential.helper git config --global --unset-all credential.helper git config --system --unset-all credential.helper stackoverflow.com

TypeScriptの型検査を無効化して型安全性を失わせる落とし穴5つとその避け方

TypeScriptにはanyを使わないよう注意しても型検査が無効化され型安全性が失われるパターンがいくつかあり、中には致命的なものも存在する。今回はこのパターンをいくつか紹介する。 コールバックのvoid戻り値型 コールバックのvoid戻り値型はすべての型を受…

TypeScript1.8以降で追加予定または協議中の注目の新機能12つ

TypeScript1.8以降で追加予定または協議中の注目の新機能を紹介します。 この記事はTypeScript アドベントカレンダー2015 25日目の記事です。 戻り値型の厳格な検査(--noImplicitReturns) [Merged] github.com github.com 戻り値が定義した型以外になること…

JavaScript(TypeScript)でEitherモナドとMaybeモナドを作る

JavaScriptでMaybeモナドのサンプルはよくありますがEitherモナドのサンプルはあまりないのでこれを作ってみます。 この記事はTypeScript アドベントカレンダー2015 24日目の記事です。 まずはMaybeモナドで肩慣らしです。 export class Maybe<T> { private MAY</t>…

TypeScriptのコンパイルだけでBrowserifyを使わずにモジュールファイルを結合したIsomorphicなNPMのパッケージを作る

TypeScript1.8ではモジュールを結合して1つのファイルに出力できるようになり、これによりBrowserifyを使わずにIsomorphicなJavaScriptライブラリを作れるようになります。NPMのパッケージもNodeでもブラウザでもそのまま使える素敵なライブラリが簡単に作れ…

ヘキサゴナルアーキテクチャとレイヤードアーキテクチャの違いとマイクロサービス

ヘキサゴナルアーキテクチャとレイヤードアーキテクチャのざっくりとした違いとヘキサゴナルアーキテクチャの利点を説明する。 ヘキサゴナルアーキテクチャは主に六角形で描かれる、多角形の全辺が外部とのインターフェイスであり、内部にさらにアプリケーシ…

TypeScriptで形式的証明・交差型編 ~ 状態付きの型による高信頼領域の構築

TypeScriptで交差型を使って静的型に状態的な型を動的に付与していきます。 これによりサニタイズ済/未サニタイズ、エンコード済/未エンコード、不変/可変、通常文脈/エラー文脈、Truthy/Falsyといった状態を複合的に扱えるようになります。 さっそく試して…

TypeScriptで形式的証明・直和型編 ~ じゃんけんゲーム最強トーナメント

TypeScriptで形式的証明を取り入れたプログラミングを実践します。 形式的証明とは、仕様またはモデルが数理論理学的に正しいものであり実装可能であることの形式手法による証明です。 本稿では形式手法のうち、型システムを利用した軽量形式手法による形式…

gitで流行のコミットメッセージとベーシックなコミットメッセージまとめ

最近気になってたchore(document): update document filesなGoogleフォーマットとUpdate document filesなベーシックフォーマットのまとめ。 Googleフォーマット chore(document): update document files Angular.jsなど主にJavaScriptのメジャーリポジトリ…

空間ナビゲーション vs リンクマップ

自分が思い描くところの理想に近い空間ナビゲーションを実装してひと段落ついた。 Spatial Navigationchrome.google.com 開発に着手する前、自分はVimiumのような網羅的なリンクマップより空間ナビゲーションのほうが直感的で使いやすいと思っていた。しかし…

Vivaldiのキーボードコマンドによる操作の手引きと評価

Vivaldi TP3 キーボードコマンド操作手引き 操作 推奨コマンド ブラウザ共通 Vivaldi Vimium タブ開く t,Ctrl+T Ctrl+T - t タブ閉じる x,Ctrl+W Ctrl+W - x タブ復元 X,Ctrl+Z Ctrl+Shift+T Ctrl+Z X 次のタブ K,Ctrl+Tab Ctrl+Tab 1,4 K 前のタブ J,Ctrl+S…

iptablesをフィルタを組み合わせてロールベースで設定管理する高機能スクリプト「iptables-firewall」

iptables-firewallはIPホワイトリスト、国別制限、Firewall、IDS/IPSなどの各種自動生成されるフィルタを用途ごとに自由に組み合わせてルールセットを作成し、任意のロールとして設定・運用することで厳格かつ柔軟なアクセス制御機構を実装するスクリプトで…

iptablesの設定でサーバー攻撃対策と海外からのアクセスを制限

中国韓国北朝鮮からのアクセスを禁止、SSHなど重要なポートへのアクセスを日本国内からのみに制限しつつ日本国内とその他の海外に対してウェブサイトを公開する設定例を紹介。Firewall機能を実装する各種攻撃対策も組み込み済み。 このスクリプト実行しとく…