タグ

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

  • プログラミング学習手段としての写経について - 西尾泰和のはてなダイアリー

    あるブログが「写経には効果がない」という趣旨のことを書いていて「何を言ってるんだ?」と思いじっくり読んでみたら、彼の言う写経は「動くとわかってる10000行のコードを何も思考せず作業として書き写すこと」を指しているようだった。「そんなわけないじゃん」と笑ってから「もしかして世の中は写経をそういう捉えてるのか?」と不安になった。 写経は自分の中にモデルを作るための行動で、他のもっと効率のよい方法と比べた場合の利点は「自分の中にモデルがなくても使える」点に尽きる。全く知識ゼロでいきなり「自分で考えて書く」ができる人はいない。考えるための材料となる知識をまず脳内に運び込む、それが写経だ。 写経の過程で大事なことは以下の3つだ。 1: 早く学びが得られるように、なるべく小さいコードで実験し、すぐに結果を確認する。 2: 疑問に思ったこと、考えたこと、気づいたことを書き留める。どうしてこういう書き方

    プログラミング学習手段としての写経について - 西尾泰和のはてなダイアリー
  • もっとよいGitチートシート - 西尾泰和のはてなダイアリー

    世の中にGitのチートシートはいくつかあるけど「Gitを知らない人に渡して最初に読んでもらうのに適したもの」が見つからない。チートシートじゃなくてチュートリアルと呼ぶべきかもしれないけど、とにかく印刷してA4で1枚になるくらいの資料が必要だ。Gitに触れた技術者が軒並み同じ落とし穴でコケるのは正しい状態ではない。「Gitには、indexっていう『コミットする前にワークツリーで行った変更のうちのどの部分をコミットするか整理するための場所』があるんだよ」とか「git revertはsvn revertと違っていきなりリポジトリに変更を加えるから気をつけて」とか最初に言ってもらえればもっとスムーズに進めたはずだ。 というわけでどういうチートシートが必要かに関して考えてみる。 登場人物 http://www.ndpsoftware.com/git-cheatsheet.html このチートシートが

    もっとよいGitチートシート - 西尾泰和のはてなダイアリー
    igaiga07
    igaiga07 2011/08/15
  • Ruby 1.9.2リリースとWEBrick脆弱性問題の顛末 - 西尾泰和のはてなダイアリー

    はい、Ruby 1.9.2がリリースされましたね。このバージョンではWEBrick にゼロデイ攻撃可能な脆弱性 - スラッシュドット・ジャパンで紹介されている脆弱性が僕が書いたパッチで修正されているわけなのですけど、そもそもなんで僕が修正しているのか、って顛末がわりと面白いので紹介します。 Apple、upstreamに報告してくれないまま脆弱性をCVEに届け出る upstreamに連絡が来ないまま脆弱性が公開される ruby-devにAppleが書いたと思われるパッチが貼られる(Appleでない人間によって) パッチのライセンスが不明なので取り込めない ライセンスを問い合わせるAppleの窓口が不明なので問い合わせもできない ruby-devを読んだ人はライセンス上安全なパッチを書けない 脆弱性だから話は非公開に進めたい yuguiさんがruby-devを読んでない僕に書かせることにする

    Ruby 1.9.2リリースとWEBrick脆弱性問題の顛末 - 西尾泰和のはてなダイアリー
  • 不完全にしてかなり言葉足らずな比較プログラミング言語学 - 西尾泰和のはてなダイアリー

    プログラミング言語は人が作ったもの。人は誤るもの。なので完璧なプログラミング言語は存在しない。 「人は誤るもの、しかし誤りに固執するのは馬鹿の所業だ。」(キケロ) プログラミング言語も、間違った設計をして、馬鹿でない人がそれを修正することの繰り返しで発展してきた。 というわけで言語間での設計判断のい違いとか失敗した設計とかを収集中。一部抜粋して講義資料に入れるつもりなので他の事例をご存知でしたらぜひ情報をいただけるとありがたいです。 if(x = 0) C言語では代入が式であるためif(x == 0)のつもりでif(x = 0)と書いてしまい、常に偽になってしまう。 x = 0の値はint、条件式はboolでないといけないので型エラーだよ派: Java x = 0は式ではないので条件式に入れたら構文エラーだよ派: Python 条件式にx = 0をいれたらx == 0と解釈するよ派: H

    不完全にしてかなり言葉足らずな比較プログラミング言語学 - 西尾泰和のはてなダイアリー
  • 日本人なら必ず誤訳する英文 - 西尾泰和のはてなダイアリー

    屋で立ち読みしてて「英語を正しく理解しているかどうかを知るには訳してみるしかない。『英語英語のまま理解する』とよく言われるが、それはあくまで最終目標であって、正しく日語に訳せない文章は絶対に理解できていない。」ということが書いてあって、納得したので買ってきた。越前敏弥の日人なら必ず誤訳する英文 このの著者はダヴィンチコードとか訳している人で、十数年英語を教えてきてて、みんながつまづくパターンを集めたらしくてかなり密度が高い。あと、自然言語って冗長性が高いからおおざっぱな理解で問題ないケースも多いんだよね。だから土台がシロアリにわれているのに気付けない。こういうで「ああ、この英文はこうだろ?」と訳してみて「いや、それはよくある間違い」ってつっこまれないと自力で気付くのは難しい。 I bought the book, which I have not read yet. これを間

  • 家事日記 - 西尾泰和のはてなダイアリー

    トンネルを抜けると朝の5時半だった。 □ 引っ越しの見積もりを比較する コンビニ引越 フリープラン引越料金 12,300円(消費税・保険料・高速料金等全て込みの確定料金) 使用車両・作業人数 1トン1名 全自動洗濯機の取り外し、取り付け、タンスの裏のホコリ落し、家具の分解組立、照明器具の取り付け、取り外し等は無料で行います。 ハート引っ越し 基作業料金  12,650円 〜  【 近距離フリー便 】 作業員 2名 荷造資材料金    サービス ダンボール 10枚 ガムテープ 1 布団袋 1袋 ハンガーBOX(レンタル) リサイクルダンボール ダック引っ越し 23000円 サンタ引っ越し 21000円 2トントラック、積載量25%程度 ハート引っ越しセンターに決めようっと。 暗いと思ったら雨か。自転車で運べないなぁ。 避難はしごの点検の人が来た。すっかり忘れていた。 自転車を積めたキ

    家事日記 - 西尾泰和のはてなダイアリー
    igaiga07
    igaiga07 2009/02/23
    引越しのときに考えるべきことのまとめ
  • YAMLのヒアドキュメント - 西尾泰和のはてなダイアリー

    twitterで「YAMLにヒアドキュメントみたいなのがあればいいのに」という声が聞こえたので「あるよ」と答えたけど、ぐぐってみてもわかりにくいのでわかりやすくするためにエントリー化。 リファレンス(YAML Ain’t Markup Language (YAML™) Version 1.2)の2.3節「Scalars」から2件引用 # ASCII Art --- | \//||\/|| // || ||__name: Mark McGwire accomplishment: > Mark set a major league home run record in 1998. stats: | 65 Home Runs 0.278 Batting Averageね、難しくないでしょ?ヒアドキュメントとの大きな違いは終了記号があるのではなく、インデントでブロックを表現しているという点。

    YAMLのヒアドキュメント - 西尾泰和のはてなダイアリー
  • 初めてのRuby - 西尾泰和のはてなダイアリー

    Yuguiさんに初めてのRubyをもらいました。 「初めてのRuby」という言葉はあいまいで「プログラミングが初めての人」向けなのか「プログラミングはすでに経験してて、Rubyはまだ経験していない人」向けなのかがぶれがちですが、このは明確に後者だと断言してあります。なるほど、つまりすでにPythonを使っている僕みたいなのがターゲットというわけですね。これはいい物をもらったw すべての章に「章のまとめ」と「章で扱っていないこと」の節があるのがすごい。あとRuby1.8と1.9の違いがしっかり書かれています。今まで1.8と1.9の違いがよくわからなかったのですけど、ようするにPython3000に相当するような「がらっと変えてよりよくする!」のがRuby2.0で、Ruby1.9はそれに向けての飛び石なんですね。Python3000bみたいなものか。 あと囲みコラムとか罠マークのワンポイ

    初めてのRuby - 西尾泰和のはてなダイアリー
  • JSDeferredを読む - 西尾泰和のはてなダイアリー

    前からamachangが「読むといい」って言っていたJSDeferredのコードを読む。defferedじゃなくてdeferredなので注意。 Deferred.define = function (obj, list) { if (!list) list = ["parallel", "wait", "next", "call", "loop"]; if (!obj) obj = (function () { return this })(); for (var i = 0; i < list.length; i++) { var n = list[i]; obj[n] = Deferred[n]; } return Deferred; }; これはグローバルスコープに書き出すコード。(function () { return this })()でwindowオブジェクトがとれているみた

    JSDeferredを読む - 西尾泰和のはてなダイアリー
  • 1