タグ

ブックマーク / blog.uu59.org (14)

  • uu59のメモ | シェルオペレーションポリシー

    なんとなくシェルに対してどういう態度で接しているのか思い出した順に書いておく。 こういうポリシーがあるからこうする、というよりも、こうなってることが多いのでこういうポリシーが背景にあるようだ、という知見をまとめた感じ。 dotfilesはこれ:https://github.com/uu59/dotfiles エイリアス なるべく使わない。これはgitのエイリアスなどについても同様。 https://github.com/uu59/dotfiles/blob/c7a44a1699ee82cc07a15d3ea1e2e516b7e17846/.zshrc#L84-L103 $ alias C='| xsel --input --clipboard' aptf='sudo apt-file search' apti='sudo apt-get install' apts='sudo apt-ca

    raimon49
    raimon49 2014/03/02
    Debian系でハマらないためにも/bin/shは避けて/bin/bashを明示する。
  • uu59のメモ | semverによって演繹される世界とnpmのバージョン指定がちょっと変わる話

    If at first you don't succeed; call it version 1.0. npmのバージョン指定が少し変わるらしい。 “npm install –save” No Longer Using Tildes npmのpackage.jsonでバージョンを固定するとき、~1.2.3と指定しておくと1.2.x(xは3以上でなるべく大きいもの)をインストールしようとします。これがデフォルトで^1.2.3のようになり、1.x.y(1.2.3以上で2.0.0未満のうち最新のやつ)をインストールしようとするようになったらしい。 semver、Semantic Versioningが定義するところでは、マイナーバージョンアップ(1.2.3→1.3.0)は後方互換性を壊さないはずなので^にしても理論的には問題なく、あったとすればそのパッケージのバージョニングが悪いという感じになり

  • uu59のメモ | cramでvagrantのVMをテストする

    cramという便利なものがあります。これは語弊のある言い方をするとRubyでいうcucumber/turnipのようなテストツールです。サンプルを見たほうが早いと思いますが、普通にMarkdownとかを書く感じでテストを書けて、コマンドの想定される出力と実際のものを比較してtrue/falseを判定するみたいなやつです。想定と実際の出力とのdiffがなければグリーン、期待と違えばレッドです。 Vagrantのテストというとserverspecが勢いありますが、cramはもっと生っぽいテストをかけます。serverspecではshould be_enabledのように、書くのは簡単だけど実際に何をテストしているのかはソースコードを見ないとわからないので、テストがこけた場合の原因調査がちょっと厄介です(例えばRedhat系ならchkconfigの結果を見ています)。とはいえcramでパッケージ

  • uu59のメモ | vimでファイル名をData URIに置換する

    選択範囲をそのまま外部プログラムに渡して実行結果で置換したかったんだけど、vim-operator-userを使うのが手っ取り早そうだったので使ってみた。 .error { background-image: url(/icons/gnome_dialog_warning.png); } こんな感じのCSSで、/icons/gnome_dialog_warning.pngをビジュアルモードで選択してるときに任意のキー(ここではBとする)を押すと .error { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAYAAAAGAB4TK

  • uu59のメモ | 遠隔操作事件の各警察による検証結果が出揃ったのでまとめた

    神奈川県警 三重県警 大阪府警 警視庁 時系列 (神奈川)6月29日、横浜市のメールフォームにCSRFによる犯行予告 (神奈川)6月30日、Kさんが任意同行に応じ取り調べ。またPCの解析を警察部 生活安全総務課サイバー犯罪対策センターへ依頼。 (神奈川)7月1日、神奈川県保土ケ谷警察署がKさんを威力業務妨害罪で逮捕 (神奈川)7月20日、Kさん観護措置決定 (大阪)7月29日、大阪市のメールフォームに犯行予告 (大阪)8月1日、IPアドレスから辿って東京都練馬区でOさんと接触し任意同行を求め事情聴取 (大阪)8月2日、Oさん宅に対する捜索差し押さえ、PCなどを解析 (神奈川)8月15日、Kさんへ保護観察処分が下される (大阪)8月25日、Oさんに対する逮捕状請求 (大阪)8月26日、Oさんを威力業務妨害罪で逮捕 (東京)8月27日、幼稚園およびタレント事務所に脅迫メール (東京)9月1日

  • uu59のメモ | IE10 on Win8のタッチイベント情報

    注意: Windows 8機は持ってませんしIE10についてずっと追いかけてたわけでもなく、ただ調べたことをメモってるだけなので間違いが含まれてる可能性が多分にあります IE10 on Win8のイベントモデルとiOSのイベントモデルの違い http://blogs.msdn.com/b/ie/archive/2011/10/19/handling-multi-touch-and-mouse-input-in-all-browsers.aspx に詳しく書かれてるけど、iOSのtouchstart/touchmove/touchendイベントとMSPointerDown/MSPointerMove/MSPointerUpイベントの最大の違いはマルチタッチ時のイベントオブジェクトの扱い。 multiple pointers can be down at the same time, each

  • uu59のメモ | gitで謎の変更があったコミットと犯人を探しだす(git blameとgit log -Sとgithubで完結する版)

    PHPの世界征服が取り消されたのを見たので、いつからPHPが世界を支配していると錯覚していたのか調べました。 $ git clone https://github.com/php/php-src Cloning into 'php-src'... remote: Counting objects: 501255, done. remote: Compressing objects: 100% (101391/101391), done. remote: Total 501255 (delta 399216), reused 500633 (delta 398654) Receiving objects: 100% (501255/501255), 111.43 MiB | 4.70 MiB/s, done. Resolving deltas: 100% (399216/399216), d

    raimon49
    raimon49 2012/08/26
    GitHub上でグラフィカルにgit blame 巨大なリポジトリを手元にcloneしなくて済むという話
  • uu59のメモ | Linkedinに学ぶウェブサービスのパスワード管理手法(saltとストレッチング)

    Linkedinがパスワード漏洩事件を起こしたわけですが、saltもストレッチングもせずベタにsha1したものを使っていたようです。様々な立場から様々な意見が考えられますが、ここではサービス運営者としてsaltやストレッチングをしていれば何がどうなっていたのかという点を考えていきます。 ちなみに、なんでもかんでも脆弱なパスワードを設定するユーザーが悪いと言うのはサービス提供者による責任転嫁だと考えていますので、提供者はたとえユーザーに脆弱なパスワードを設定されたとしても、可能な限りユーザーのパスワードが奪取される危険性を小さくする努力をすべきでしょう。 SHA1の計算 hashgpuによると、どこのご家庭にもあるような数千円のGPUを使えば秒間23億回の試行が可能らしいです。 ASCIIコードのうち制御文字以外の印字可能文字は95種あるので、任意の桁数のパスワードを解析するのに総当たりでど

    raimon49
    raimon49 2012/06/10
    sha1(user_input + db_stored_salt) * ストレッチングの必要性について。「123456」を例に。
  • uu59のメモ | VCSとITSとテストがない開発環境で正気を保つには Part 1 git 編

    Part 0 プロローグ まずバイト初日、サーバに入れるようになったあと、scprsyncを適当に使って指示された変更に関係しそうなファイルをダウンロードします。だいたい揃ったらgit init; git add -A; git commit -m "ファイル取ってきた(noedit)"でとりあえずの体制は構築できました。 ここから開発を進めていくわけですが、色々と難関があります。 sjisとeuc-jpのファイルが混在してるのでgit diffが文字化けして使えない lvやnkfにパイプしても、そもそも異なる文字コードの文字列が混在してるのでどうしようもありません。これを解決するにはdiff.externalを設定して、ファイルごとに自前でdiffを取ります。 $ cat ~/mydiff.bash #!/bin/bash old=$2 new=$5 # バイナリは無視 if [ -n

    raimon49
    raimon49 2012/06/10
    レガシー環境に立ち向かうスクリプト集
  • http://blog.uu59.org/2012-01-31-git-recovery.html

  • uu59のメモ | jQuery.Deferred その1 JSDeferredとの基本的な違い

    JSDeferred $.Deferred 長年JSDeferredを愛用してましたが、jQueryにDeferredがついたらしいので記憶を整理して慣れていきます。 おさらい 基チェイン // JSDeferred Deferred.next(function(){ alert("a"); }).next(function(a){ alert('b'); }).next(function(b){ alert('c'); }); // $.Deferred $.Deferred().done(function(){ alert("a"); }).done(function(a){ alert('b'); }).done(function(b){ alert('c'); }).resolve(); 値のリレー // JSDeferred Deferred.next(function(){

    raimon49
    raimon49 2012/05/04
    JSDeferredのアレをjQuery.Deferredで。とても有用。
  • uu59のメモ | Node.jsの癌騒動まとめ

    承前 まずNode.js is CancerでTedさんは以下の3点を問題視しました。 ブロックしないから速いとかプログラマは未熟でもいけるとかスケーラビリティとか全部大嘘だろう システム管理者にやさしくないアーキテクチャ JavaScript製 あまりに感情的で論点が曖昧なこの記事に、多くの人がtrollingだと指摘しつつも色々と論を展開しました。 2日後に出たTed人によるフォロー記事では主に1点目について掘り下げています。 まず数学を使ってイベントモデルとスレッドモデルのそれぞれのスループットについて考察していきます。数式や変数展開の説明をしていくと長いので要点だけまとめると以下のようになります。 スレッドの実行数を増やせばCPU-boundなときはもちろんI/O-boundなときでもスループットを伸ばせる 理論的にはイベントモデルでもスレッドモデルでもスループットの最大値(=限

    raimon49
    raimon49 2012/04/26
    Pythonとの比較は好みの問題
  • uu59のメモ | MongoDBでもSQLインジェクションできる

    タイトルはわかりやすさ重視でつけたのでそれSQLじゃないよというのは承知の上です。 Attacking NoSQL and Node.js: Server-Side JavaScript Injection (SSJS) SSJS whitepaper(PDF) JSONをevalで作るようなのは論外として、NoSQL Injectionって項目が面白かったのでメモ。 まずMongoDBにはfind()っていうのがあるんですが、一般的にはdb.find({x: 42})のようにオブジェクトを渡してxプロパティが42のレコードを取得する、といった用途に使います。が、db.find("this.x == 42")のように文字列を渡しても同じ結果が返ってきます。これはMongoが受け取った文字列をevalしてるせいです。試しにmongoコンソールでdb.find("while(1){};retu

    raimon49
    raimon49 2011/12/24
    ドライバの実装によってはevalから注入可能
  • uu59のメモ | 訳:Node.jsは癌だ

    http://d.hatena.ne.jp/yosuke_furukawa/20111002/1317572377で知って、原文を読んでみたら罵倒しまくってて面白かったので全文翻訳してみました。 原文はNode.js is Cancerです。 ウェブデベロッパー逹は伝統的なやり方よりも冴えたやり方が大好きだが、伝統的なやり方がなぜ伝統になってるかというと動きやがるからだ。Node.jsのナンセンスな振る舞いにはしばらくムカついてたが、Node.js作者のRyan Dahlによるこのポストを読むまでは相手しないようにしてた。「UNIX難しいよぅ」とか弱音を吐くよく居るタイプのマヌケに肩をすくめていただけだ。 でも、家族連れのミニバンをガサ入れしたら50kgの上物ヘロインを見つけてしまった警官が世の中間違ってると感じるように、こいつの弱々しいすすり泣きの何が間違ってるのか考えた。たぶん、たぶん

    raimon49
    raimon49 2011/10/15
    CPUヘビーな処理は駄目だって前から言われてるもんなぁ。
  • 1