ブックマーク / nishiohirokazu.hatenadiary.org (13)

  • JavaScriptクイズ「x + 0 == x - 0」 - 西尾泰和のはてなダイアリー

    以下の20問のconsole.logで何が出力されるか当ててみよう。 var x = {}; console.log(x + 0 == x - 0) var x = []; console.log(x + 0 == x - 0) var x = (function(){}); console.log(x + 0 == x - 0) var x = null; console.log(x + 0 == x - 0) var x = undefined; console.log(x + 0 == x - 0) var x = Infinity; console.log(x + 0 == x - 0) var x = Array; console.log(x + 0 == x - 0) var x = 0; console.log(x + 0 == x - 0) var x = false; c

    JavaScriptクイズ「x + 0 == x - 0」 - 西尾泰和のはてなダイアリー
    t_f_m
    t_f_m 2020/10/22
  • 妻に公開鍵暗号を教えてみた - 西尾泰和のはてなダイアリー

    何気なく放送大学をつけていたら公開鍵暗号の話をしていた。 「この話、何度聞いてもわかんないのよね」 僕「え、どこがわからない?どこまではわかってる?」 「平文はわかるけど、鍵を共有するとか秘密にするとか、署名するとかがよくわからない」 僕「あー、鍵に例えているのが逆効果なのか」 「鍵」をNGワードに指定 僕「じゃあ『鍵』という言葉を使わずに説明してみよう。暗号って『平文を暗号文に変換する方法』で伝えたい文章を暗号文に変えて送り、受け取った人はそれに『暗号文を平文に戻す方法』を使って元の文章を得るわけだ。その目的は、途中の通信文が敵に取られたりしても通信の内容がバレないようにするため。」 「うん」 僕「昔の暗号化の方法は、片方の方法がわかるともう片方の方法も分かった。例えば『アルファベットを後ろに1個ずつずらすと平文に戻せます』って教えてもらったら、『なるほど、前に1個ずつずらせば暗号

    妻に公開鍵暗号を教えてみた - 西尾泰和のはてなダイアリー
    t_f_m
    t_f_m 2014/08/09
    "ブクマコメントでよいアナロジーが書かれていたので転載。南京錠は、閉めることはだれでもできるが、開けることは鍵を持っている人しかできない。"
  • コード進行を五度圏で可視化してみた - 西尾泰和のはてなダイアリー

    Songleの外部埋め込みプレイヤーがJavaScriptでカスタマイズできるので、それを利用して五度圏の可視化をするデモを作ってみました。 スピッツの「ロビンソン」 中島みゆきの「地上の星」 きゃりーぱみゅぱみゅの「ファッションモンスター」 ロビンソンはコードの動きがわりとおとなしいですね。一方ファッションモンスターはGm Fmを交互にピコピコ動いてダンスを見ているような楽しさが。 Songleは音楽の理解を支援するサービスで、楽曲からコード進行などの情報を抽出し、可視化したり、コード進行を強調して再生したりしてくれます。詳しくはSongleのサイトの解説をごらんください。外部埋め込みプレイヤーを使うと、JavaScriptからそのコードの情報が取れるようになるので、以前から興味のあった五度圏での可視化を試してみました。100行未満のソースコードで実現できてとても手軽でした。このデモのソ

    コード進行を五度圏で可視化してみた - 西尾泰和のはてなダイアリー
    t_f_m
    t_f_m 2014/06/16
  • 放射線耐性Quineの読解 - 西尾泰和のはてなダイアリー

    「放射線耐性 Quine (1 文字消しても動く Quine) - まめめも」という頭のおかしい(ほめことば)コードがリリースされていました。 以前「The Qlobe - まめめも」がリリースされた時は、Pythonに移植したら「難読コードを読んでみよう(Python初心者向け解説) - DT戦記(zonu_exeの日記)」という読解エントリーが上がって、書いた人としても興味深く読ませていただきました。 最近「理解ってなんだろう」ということが気になっていて、人間が理解できていない状態から理解できている状態に変わる過程で何が起きているのかに興味があります。なので自分自身がこの変態コードを理解する過程で何を考えているかを記録してみることにしました。 ちなみに筆者のRubyスキルがどの程度かというと…さっき仕事に使っているVMでyohasebe/wp2txtを使おうとしたらRubyが入ってい

    放射線耐性Quineの読解 - 西尾泰和のはてなダイアリー
    t_f_m
    t_f_m 2014/02/21
    解説キタ!
  • necomimiを改造して脳波データを取り出した - 西尾泰和のはてなダイアリー

    脳波で耳が動く「necomimi」が、なんと3000円台で投げ売りされて話題になっていました。僕も3150円で買いました。なんと中に入っている脳波チップを単体で買うより安い!(スイッチサイエンスではいま4980円) 頭に着けるための電極とセットになっているのにチップより安いだなんて!よしこれを改造してPCで脳波の値を取得できるようにしよう! necomimiの分解・改造に関しては既に先人がいくつかのエントリーを上げておられます。まずこちら: nekomimiを分解してみた。シールを剥がすとネジが出てくるのでそれを回せば簡単に開くとの話。これはそのとおりでした。簡単でした。シールを剥がす時にノリが残ってネチョネチョにならないように慎重に剥がす必要があるけど。 上記スイッチサイエンスのページから各ピンがどういう意味かの説明PDFが見れます。Pin1が額でPin2がその線のシールド線(ケーブル

    necomimiを改造して脳波データを取り出した - 西尾泰和のはてなダイアリー
    t_f_m
    t_f_m 2013/08/19
    "脳波で猫耳が動く「necomimi」が、なんと3000円台で投げ売りされて話題になっていました。僕も3150円で買いました。なんと中に入っている脳波チップを単体で買うより安い!" / もう値上がりしてるらしいがメモ
  • 再帰呼び出しを再帰呼び出しなしで実現 - 西尾泰和のはてなダイアリー

    拙著「コーディングを支える技術」の第5章「関数」では、P.50で「再帰呼び出しを使っているプログラムは、再帰呼び出しを使わなくても書くことができる」と説明しました。この件に関してここで補足記事として解説することにしました。 P.53の簡単な再帰呼び出しの例(total関数)をターゲットにします。これは空行とコメントを除くと8行の簡単な例です。このコードから、挙動を変えずに再帰呼び出しを取り除いてみましょう。腕に自身のある人はは続きを読む前に自分で実装してみるとよいでしょう。 チャレンジする人向けの注意点 今回の対象では再帰呼び出しをしながら行う処理が「要素の足し算」でした。足し算は順番を入れ替えても結果が同じです。なので、うっかり計算の順番を変えてしまっても、結果からは間違いに気付けません。例えば深さ優先探索を幅優先探索に変えてしまうと、[1, [2, 3], 4]が来の1, 2, 3,

    再帰呼び出しを再帰呼び出しなしで実現 - 西尾泰和のはてなダイアリー
    t_f_m
    t_f_m 2013/06/01
    SICP読もうで済む話。補関数とでもいうのかな、xxx-iterを作って引数渡しで楽に解決できる。
  • 作りたいもの:技術書向きの電子ブックリーダ - 西尾泰和のはてなダイアリー

    昨日Twitterでつぶいたことのまとめ。こういうアプリが既にあったりしないのかなぁ。既にあるなら喜んでそれを使うんだけど。あったら教えて下さい。 技術書小説の違い 技術書小説と大きく異なる点は、シーケンシャルアクセスじゃなくてランダムアクセスが必要になるケースが多い点だ。 小説のように頭から順に読んでいくのではなく「ざっくり眺めておいて必要なところだけじっくり読む」という読まれ方のニーズがある。 「ざっくり斜め読み」をどうやって電子ブックビューワ上で実現するか? ページを画像として縮小しても漫画じゃないから「全く読めないゴミ情報」の山にしかならない。章タイトルだけ表示とか、太字や図などだけ表示とかが必要 ざっくり読んだ後の「あれどこに書いてあったっけ」支援のために検索とタグクラウド(検索キーワードのサジェスト)が重要 縦書きの対応は必要ない 理想を高く持つ 電子書籍ビューワはページを

    作りたいもの:技術書向きの電子ブックリーダ - 西尾泰和のはてなダイアリー
    t_f_m
    t_f_m 2012/07/30
  • そろそろ例のプロジェクトについて言及するか - 西尾泰和のはてなダイアリー

    以前、とあるシステムのソースコードを読む機会があったのだけどあまりにひどかった。あのひどいコードでまあまあまともに動いているというのが逆に信じられない。今日昼ご飯をべながら少し話していたのだけど意外と知られていないようなので、話せる範囲でいかにひどいのか説明してみようと思う。 まず、ソースコードが大雑把に見積もって3750万行あるのだけど、その中でまともに機能しているコードは3%しかない。10分の1程度のソースコードで同程度の機能を実現しているシステムもあるのでほんとあのシステムのコードはゴミだと言っても過言じゃない(*1) プログラマとしてはなんでそのプロジェクトはそんな状態になってしまったのか気になるところだけども、まあ多くのプロジェクト同様、真相を知る人は誰もいない。でもまあ、実際に機能しているコードのコピーみたいなものがあちこちに散らばっていることからしてコピー&ペーストが盛んに

    そろそろ例のプロジェクトについて言及するか - 西尾泰和のはてなダイアリー
    t_f_m
    t_f_m 2012/07/17
    しかしその無駄にしか思えないコピペ部分も意味があったという http://news.mynavi.jp/news/2012/05/17/108/index.html
  • heXeを試してみた(jQueryのcssとclickを使ってみる) - 西尾泰和のはてなダイアリー

    haXe(ヘックス)は静的型付け言語で、コンパイルするとJavaScript(とかいろいろな言語)ができるらしい。JSXをいじっていたら「コンパイルするとJavaScriptが出力される静的型付け言語にはhaXeもある」を教えてもらったのでこれも試してみよう。JSXでやった「型のことを全然考えてないjQueryを使ってクリックのハンドラを付けたり色を変えたりする」というのをゴールにする。 インストールする Download - Haxe インストーラをダウンロードして起動する。特に問題なくインストール完了。 ~$ haxe haXe Compiler 2.09 - (c)2005-2012 Motion-Twin Usage : haxe -main <class> [-swf|-js|-neko|-php|-cpp|-as3] <output> [options] Options : .

    heXeを試してみた(jQueryのcssとclickを使ってみる) - 西尾泰和のはてなダイアリー
    t_f_m
    t_f_m 2012/06/06
  • JSXでjQueryを動かす上での障害 - 西尾泰和のはてなダイアリー

    飽きてきたのでやる気が0になる前に気づいた点を公開しておく $は識別子に使えない。 jQuery.isはisがJSXの予約語なので使えない。is_とかにリネームする? jQueryがjQuery(...)もjQuery.fooもできる存在なのが厄介。僕も今の実装ではclass jQueryを作ってコンストラクタのnew jQuery(...)とstatic methodのjQuery.fooを使う形になっているけども、見た目をjQueryに似せるのをやめてjQuery(...)的な使い方は全部きちんと名前付きで呼べ(jQuery.find(...), jQuery.ready(...), etc)という方がよい気がする。 jQuery.findの返り値は[0]とかができる「Arrayのような何か」だが、これは実はArrayではないのでJSXではArrayへのキャストが出来ない。 jQuer

    JSXでjQueryを動かす上での障害 - 西尾泰和のはてなダイアリー
    t_f_m
    t_f_m 2012/06/06
  • 言語女子会2: varは必要?/privateがない? - 西尾泰和のはてなダイアリー

    言語女子会: undefとnullは両方必要?の続編です。 varは必要なの? とあるプログラミング言語が集う女子会にて: Python: JavaScriptちゃんってさ、なんでvarだらけなの? JavaScript: えっ、変? Python: varなんかいらなくない?私ぜんぜん持ってないよ? JavaScript: えー、じゃあ変数をどうやって宣言するの? Python: 宣言っていうか…「x = 1」みたいな代入文があれば変数xが必要なのって自明じゃない?宣言とか必要? Ruby: 必要ないよね。っていうか変数宣言とか古臭くない? JavaScript: そうかなー。 Python: 少しダサイかも。ほら断舎離ブームだし要らないものは捨てなきゃ! JavaScript: 要らないかなぁ、変数宣言。Pythonちゃんは関数がネストしているときに外側のスコープの変数に代入するのって

    言語女子会2: varは必要?/privateがない? - 西尾泰和のはてなダイアリー
    t_f_m
    t_f_m 2012/03/24
  • 言語女子会3: Pythonが恋愛に悩んでRubyに相談しましたの巻 - 西尾泰和のはてなダイアリー

    言語女子会: undefとnullは両方必要?、言語女子会2: varは必要?/privateがない?の続編です。 Ruby恋愛相談 Python: 最近悩んでるのよね… Ruby: んー、何に? Python: 自分はどんな人が好きなのかなぁ…とか… Ruby: あー、そんなの簡単よ!一緒にいて楽しいことよ! *1 Python: そんなの誰とだって仲良くなったら楽しいんだから差別化にならないじゃん Ruby: そうとは限らないわよ、たとえば、あっ… C: ごめーん、会議が長引いちゃって遅れちゃった!(髪の毛ファサーっ) Python: ああ…なるほど… C C: 何の話?え、恋愛に悩んでる?そんなの簡単よ。卓越性よ。 Python: 卓越性?? C: そうよ。なんらかの分野で「わたしが一番」という状況を作ることよ。そうすれば男の側からいくらでも寄ってくるわ。 Python: なるほど

    言語女子会3: Pythonが恋愛に悩んでRubyに相談しましたの巻 - 西尾泰和のはてなダイアリー
    t_f_m
    t_f_m 2012/03/24
    関数型言語オチが万能すぎて、でもこれって自虐込みだよねと悲哀を感じる。
  • 言語女子会: undefとnullは両方必要? - 西尾泰和のはてなダイアリー

    Twitterのタイムラインが面白すぎて、ついうっかり言語を擬人化して脳内で言語女子会なるものを開いてしまいました。なお、登場人物と実在の人物は1対1に対応しません。 undefinedとnullの両方必要なの? とあるプログラミング言語が集う女子会にて: Perl: そういえばさ、なんでJavaScriptちゃんってundefinedとnullの両方もってるの? JavaScript: えっ、未定義の変数にアクセスした時undefined返したいじゃない? Python: 例外投げて死ねばいいじゃん Ruby: 例外投げて死ねばいいよね Python & Ruby: ねー♡ Java: いやそこは参照型ならnull、数値型なら0で初期化すべきでしょ C: これだから最近の若い子は…初期化にだってコストが掛かるんだからね!デフォルトで初期化するなんて無駄遣いよ!必要な人だけが責任をもって初

    言語女子会: undefとnullは両方必要? - 西尾泰和のはてなダイアリー
    t_f_m
    t_f_m 2012/03/18
    爆笑
  • 1