万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    『Javaの掟・Rubyの掟 〜寝ても起きてもプログラミング〜』

    http://www.junkudo.co.jp/newevent/evtalk.html#20090205ikebukuro

    ■2009年2月5日(木)19時〜
    から行ってきた。

    高橋さんからサインくれてとても、丁寧な方でした。
    高井さんとはJ2EEで何度か会っています。
    みんなからサインいただきました!


    ●出席者
    ・高橋

    ・高井
    素直になって欲しいから直人

    るびま

    ・arton
     田島さん

    ●最初
    コーディングの掟

    ・挙手
    Javaな人 半分くらい
    Ruby 少し居る

    ・開発リーダの保守性
    教科書的でなく現場的な物
    こういうコードを書くと困るから書かせないようにしたというのを例にする。
    ダメなコードを山ほど見ているので、オブラートに包んで一般化した。
    ソースコードインスペクション
    実際のプロジェクトでは

    artonさん・・・文体を担当。担当は無し。平らにやった。
    日付の入ってないzipファイルとか。
    Excelでソースのリストを。
    クラス台帳・・判子がないとクラスが作れないとか。
    ↑信じがたいが回している。
    例)
    銃をみんなが持っているのは物騒だがアメリカは普通
    死刑があるのは日本

    CVSじゃなくて台帳を生成とか。
    プレゼンテーション層。

    CVSは必ずLinuxに入ってる。3,4年前に作られたのに。
    1.マルチスレッドを理解しようが
    2。使いこなそう。

    マルチスレッドで大変なこと・・・リソースの管理より、ベースコンディションがどこで落ちるか。
    なんでもかんでもクリティカルセクションにすればい。→間違っている。
    「ここがクリティカル」にしたとき→バグが起こる。
    static変数にグローバル変数
    大変だから使わなければいいが、だめ。
    使い方を限定して、分かっている人が使う。
    データベースのトランザクションはマルチスレッドとして明示しないけど、気にしないといけない。
    トランザクション、バッチ
    排他。データベース。
    トランザクションは上級アーキテクトの人が理解してるから、変なことはあまりない。
    フレームワークを書いている人向け。上でやってる人、ディベロッパー系(泥水吸ったことある人)
    避難マニュアルな人も。


    Ruby?
    コンピュータを初めて触る人用
    「コンピュータとは何か?」から始まる。
    Rubyの入門でなく、プログラミングの入門書
    水泳のとき、いきなりクロールでなく準備運動しなさい。
    文字コードなど
    入門書で気にくわないのが、「ソースコードがどう処理されたか?」の本がない。
    字句解析して。(シンタックスエラー)
    エラーのことの説明。
    ランタイムエラー。
    インストールするまでに70ページある。
    HelloWorldに87ページ。

    コンソールベースでやるようにした。
    理由は忘れたが、おそらく。
    ソースファイルを作って直すとき、コンソールでは決まり切っているから。

    つっこんだ部分よりも、
    アルゴリズムを考えさせる。ツル、カメ、トンボ

    マジックコメントを置き換える。
    仮名漢字変換をオン・オフさせない。
    ?巻で正規表現

    Ruby?
    入門と言うより、どういう風にプログラミングを考えるか。
    一の方は、データファイルの操作。リファレンスの仕方。
    クラスが持つメソッドの調べ方。→ドキュメントを見ても見つからないからどうするか?など。

    データファイルの活用。
    CSV,XML
    二次元配列。

    ビットマップの画像を自分で作る。バイナリで作る。
    バグがある。
    著者でも調べないと書けない。
    256ページ。
    なぜビットマップか?
    PNGは難しいから。
    簡単な操作で変なことができる。
    リソースの制約の中でBMPなら許容範囲。
    黒を赤にしたら大変。
    文字からバイナリが大変では?
    バイナリをメモ帳で開くと〜など。
    コンピュータサイエンスということを技術者ということで。
    BMPだと特定のツールキットに依存しない、ポータブルにサンプルとして使いやすい。
    RubyだとShift-JISとの

    ビットマップをバイトマップ→1ドット1バイト
    何も考えずに。
    おまじないの世界で。
    組み込みとtmpライブラリの違い。
    Time、Dateで日付を使うようにしましょう。
    ネットワークライブラリ、高水準。
    スカラー
    ネットワーク
    オブジェクトとして、RSS。CODE.ZINEで。
    ネットワークの多層化。OSIの階層。
    OpenURI
    例外、rescue継承観点の話し。
    クラスには継承観点がある。

    4章、映像と”圧縮”

    言語の話しと言うより、言語で何を作るか?の話し。
    RSSは興味の話。
    符号化についての意識を持って欲しい。
    映像化
    XMLシリアライズ
    Hashと暗号化。
    Hashはオブジェクトしてそのままもつ。
    Hashはハッシュでなく関数のHash
    Hashクラスを自分で作ってみましょう。
    どういうデータ構造かを知るため。
    境界チェック。
    衝突の状態。
    Ruby1.9からHashが便利。純粋なハッシュに代わった。
    Java)HashedMapからLinkedMapになった。※SortedMapではない。
    暗号と暗号化の違い。
    ・暗号の目的
     データの秘匿
     なりすましの防御
     かいざんの防御

    暗号を作って解読までやる。
    ・状態遷移
    プログラムの仕様を逐次やるのではなく、

    あなたに向いている言語の紹介。

    機械翻訳でなく、構造を考えよう。。
    実装しましょう。配列を使って。

    アルゴリズムを考える理由。
    ソート。
    二分探索を知ってるのにクイックソートを知らない人がいる。
    イナリサーチ。Byわかばやしさん?
    ?はまだ出ていないが、近刊で。
    他のシリーズもある→RubyPHPJavaScript
    なぜかRubyだけ3巻も。
    聞かれたときに教えてあげたい。
    ?が難しい。初めての設計。
    著者はクラス。クラスもモジュールもかかない。→オブジェクトだけで、VBオブジェクト指向

    Rectangle、Tryangle
    デザインパターンは今更ない?古いと使わない。が嘘?
    便利なパターン

    言語の文法→
    だが、アプリケーションをどうやって書いたら分からない。

    1.9プレビュー1
    T0
    アクティブスクリプトRuby
    素のRuby

    るりま・・・「Rubyリファレンスマニュアル」のこと

    JavaプログラマのためのRuby入門
    ほぼartonさんが書いた。

    はじめに・・・面白い。

    Openクラス、ダックタイピング

    JRuby

    堅めの話し。
    固い本。
    Ruby入門としては、?が濃い、クラスの紹介が多い。

    ProgramingRuby

    オブジェクトの拡張。
    ユースケース
    こういうときはダックタイピングで〜など。
    ポリモーフィズム→ステートパターン
    ミキシング・・・インスタンス変数がかぶると死ぬ。
    ifの説明。Javaとの違いが明確に書いている。
    読み返すとおもしろい。
    コーディングの掟は泣きたくなる。
    Rails読むときにつながってくる。
    Railsのソースを読むのにいい。
    黙ってJRuby
    JavaJRuby使うのにいい。
    Rubyの実装がJRubyを使っている。
    マジックコメントの書き方。1.6ベース。
    本を見てもらったかどうか?
    技術的なチェック。
    ああ、知ってるよな人
    Ruby知ってる人がJavaを書きたい人。
    「ifは式じゃないの?」Javaって不思議な言語。「returnって書かないと行けないのか。」

    コーディング規約。
    Mazの日記で埋もれているもの。

    Java6
    scanfを使わないように。
    動的メソッドを使いまくる。
    コーディング規約を会社的に用意。
    関連ドキュメントを。テンプレなど。
    動的メソッドで討ち死に。
    メソッドミッシング・・メソッドの中にメソッドを書く。
    クラッドが分かればコピー。
    アクロバティックなこと。
    ビジネスロジックではない。
    フレクションは使わない。
    どこからこんな機能を見つけたのか?
    テンプレートはどこから?
    出来る人がかいたのから用意。
    コピって。

    探検案件。
    生産性がいいから。→Ruby覚えて。
    3ヶ月しかない。
    最初、嫌がる。

    使いこなせるまで、研修。3日くらい。→あとは宜しく。
    1ヶ月で立ち上がる。
    JavaStrutsを使ったことあって、DB知って。
    コピペの元で、コードレビューを入れる。
    案件終わった後に、Ruby余裕になる。
    効率がいい。
    ファンクションポイントベース。
    SIerはよく使う。
    どれくらいかかるか。
    「これくらいの期間で、これくらいかかる。」など。
    RubyJavaより7,8工数で。
    開発だけの工数で7,8割。Rubyを込み。
    全体は。
    テスト工数は、Unitテストなどのデベロッパテスト。
    変わらない。
    NetBeansでやる。Rubyに便利。
    Eclipseがいいって言う人も多い。

    別のプロジェクトに散っていく。
    派遣で自社に戻る。次もRubyやりたい人が多い。

    1.9に移るのはまだ厳しい。RoRが完全に動くまでは。
    ようやく本日(2009/2/5)あたりに1.8.7にしようかの話。
    LDAPの認証周りは、JavaAPIで。
    いざとなったら、Javaで逃げられる。コンパチビリティ。

    質疑応答
    arton組み込みの話は?
    JavaプログラマC言語書かないし。
    るびまがに書く?

    JRubyの役割担当。調べる余裕がないので、JRuby知ってて。いじっている人の知り合い。
    300Pで全部で7章。最後はJRuby

    実際には第7章にまとまっている。

    アプリケーションサーバ上で、拡張ライブラリ周りで動かない。
    最近は互換性の有るライブラリで。
    いろんな言語に手を出しているのに、分からない。
    文法の解説ばっかで分からない。→書きたいことが何か?古文や中文をいじくり回す。
    仕様書を書くべき。

    フィルタから使う。
    高橋さん。大学でawkから始める。考古学の先生なので文献から。
    スリクプト言語からやっていた。