タグ

ブックマーク / nowokay.hatenablog.com (76)

  • プログラマの実力は経験だけであがらないことがレベル格差につながる - きしだのはてな

    プログラマというのは、道具に慣れることが、実力があがることにならないのですよね。だから、勉強せず業務経験だけだとレベルが低いままということになってしまう。 Javaを10年さわり続けて、Strutsを5年さわり続けても、それだけでは、与えられた画面を手際よく作成できるようになるだけで、たとえばStrutsすらよりよく使えるようになるわけではなかったりする。 Javaにしても、「volatileってなんですか?」という問いに、まあ知らないのはしかたないとしても、解説を見ながらですら答えられない可能性がある。 プログラムの反復生産は、プログラミング能力の向上にあまりつながらない。設定や記述に慣れるだけだ。そして、この「慣れ」というのには「難しいからそもそも実装を回避する」というようなものも含まれる。実力の向上は、作業ができるレベルで止まってしまう。 プログラマとしての実力をあげるための勉強が自

    プログラマの実力は経験だけであがらないことがレベル格差につながる - きしだのはてな
    yojik
    yojik 2012/10/10
    "オブジェクト指向設計→プロセス改善→XP→アジャイル→テスト→継続的インテグレーション(イマココ)のようなものが流行り続けてる。ただ、これらの勉強は、ともするとルールとツールと名言集のようになって"
  • JavaでMACアドレスを取得する - きしだのHatena

    java.net.NetworkInterfaceを使う。 public static void main(String[] args) throws SocketException{ Enumeration<NetworkInterface> nics = NetworkInterface.getNetworkInterfaces(); while(nics.hasMoreElements()){ NetworkInterface nic = nics.nextElement(); String s = ""; byte[] hardwareAddress = nic.getHardwareAddress(); if(hardwareAddress != null){ for(byte b : hardwareAddress){ s += String.format("%02X ", b

    JavaでMACアドレスを取得する - きしだのHatena
    yojik
    yojik 2012/08/03
  • MVCは死んだ。MOVEするときがきた - きしだのHatena

    Conrad Irwinさんの「MVC is dead, it's time to MOVE on.」を訳してみました。 MVC is dead, it's time to MOVE on. この訳文も原文のライセンスを引き継いでCC-BY-3.0ライセンスで利用可能とします。 追記13:58 すでに訳してた方がいました。MVCの時代は終わった。MOVEを使い始めましょう。 - ふじこのプログラミング奮闘記 MVCは死んだ。MOVEするときがきた MVCはすばらしいアイデアだ。モデルを持ち、モデルは内部に少しの状態をもつ。ビューは内部に少しのUIをもつ。そして、コントローラは内部に少しの・・・ 何を持つ? 私は確かにこのことに気づいた最初の人物ではない。しかし示されたようなMVCの問題のために、あなたは最後には過剰なコードをコントローラに詰め込むことになる。なぜなら、他にどこに入れていいか

    MVCは死んだ。MOVEするときがきた - きしだのHatena
    yojik
    yojik 2012/07/04
    (原文の内容にはまったく賛同しないのけど)翻訳ありがたい
  • MapReduceのパターン、アルゴリズム、そしてユースケース - きしだのHatena

    Ilya Katsov氏による「MapReduce Patterns, Algorithms, and Use Cases」の翻訳 http://highlyscalable.wordpress.com/2012/02/01/mapreduce-patterns/ (下書きに入れて推敲するつもりが、なんか公開されてしまっていたので、あとでいろいろ修正すると思います) February 1, 2012 この記事では、Webや科学論文で見られる異なるテクニックの体系的な視点を与えるために、数々のMapReduceパターンとアルゴリズムをまとめた。 いくつかの実用的なケーススタディも提供している。 すべての説明とコードスニペットでは、Mapper、Reducer、Combiner、Partitionaer、ソーティングにおいてHadoopの標準的なMapReduceモデルを利用します。このフレー

    MapReduceのパターン、アルゴリズム、そしてユースケース - きしだのHatena
    yojik
    yojik 2012/02/24
  • Javaでブラウザが表示できるようになるよ! 2011-05-26 - きしだのはてな

    JavaFX 2.0 betaが公開されました。いまのところ32bit Windows用だけですけど。 JavaFX GA downloads で、JavaFX、あんまり興味ない人も多いかと思いますが、2.0ではWebKitベースのブラウザが入ったのです。 そして、JavaFXJavaFX ScriptがなくなってJava言語で書くようになって、Swingに埋め込めるので、つまりJavaでブラウザが使えるようになったわけです。 ということでとりあえず表示してみました。 星にカーソルを持っていけばちゃんとidなんかが表示されるし、Ajaxな動きもちゃんとできています。 ただ、角丸スタイルは対応してない感じだったりするので、Twitter表示するとくずれぎみ。 まあ、ベータなんで、徐々に対応してもらえれば! それでも、発言にカーソルもっていってボタン押すと右側に発言内容が表示されたり、動きは

    Javaでブラウザが表示できるようになるよ! 2011-05-26 - きしだのはてな
    yojik
    yojik 2011/05/27
    Webkit on Java きたぜ!!
  • JBoss Cache改めInfinispanを使ってみる - きしだのHatena

    といっても、起動してみた程度だけど。 Infinispanってなに? Infinispanは、JBoss Cacheを前身とする、「データグリッド」プラットフォームです。と書いてあります。わかりやすい言葉でいうと、キャッシュサーバーです。 http://www.jboss.org/infinispan 今回は、Downloadからたどってinfinispan-5.0.0.BETA2-all.zipを落としました。 使いかたは、このgetting startedがわかりやすいです。 Getting Started with Infinispan とりあえず使う とりあえず使ってみます。zipを展開したところにあるinfinispan-core.jarとlibフォルダのすべてのjarをクラスパスに通します。 import org.infinispan.Cache; import org.inf

    JBoss Cache改めInfinispanを使ってみる - きしだのHatena
    yojik
    yojik 2011/04/21
  • HTML5に欠けているもの、HTML6で入るだろうもの、さらにその先 - 2009-12-14 - きしだのはてな

    HTML5でローカルストレージが持てたり、画像描画ができるようになり、また、JavaScriptもだいぶ速くなってきたので、ブラウザ上でスタンドアローンのアプリケーションが組めるようになりました。 でも、そうすると、足りない機能が出てきます。 それは、Webアプリケーション間の連系です。 たとえばブログ上にFlashファイルを埋め込みつつ、けどFlashプレイヤーがなくても見れるようにしたいという場合、ブログサービス提供側がなにか仕組みを用意して、HTML5に変換して表示するという仕組みが必要になります。その場合、Flashプレイヤーをインストールしてある環境でも、HTML5に変換されたものを見るということになります。 ファイル形式だけ指定すれば、あとはユーザー側でアプリケーションやサービスを選択して、表示を行うという仕組みが欲しくなります。 あるファイルをクリックしたときに、ブラウザで対

    HTML5に欠けているもの、HTML6で入るだろうもの、さらにその先 - 2009-12-14 - きしだのはてな
    yojik
    yojik 2009/12/15
    @kisさんのエントリ読んでOpenDocを思い出した。あのころはプログラムも出来なかったのにMacPowerのOpenDoc解説とか読んでドキドキしたなー
  • NetBeans6.7RC2でServlet3.0を試す 2009-06-11 - きしだのはてな

    NetBeans6.7RC2とGlassfish v3 previewを使ってServlet3.0を試してみます。 NetBeansのダウンロード NetBeans6.7RC2は、ここから「Java」対応版をダウンロードします。 http://download.netbeans.org/netbeans/6.7/rc2/ RC2なので、インストーラーを使わず、プラットフォームに「OSに依存しないZIP」を使うことをおすすめします。 以降、NetBeansをインストール・解凍したフォルダをNETBEANS_HOMEとします。 Glassfishのダウンロード Glassfish v3 previewはここから。たぶんフルサポート版でもWeb Profileでも大丈夫。 https://glassfish.dev.java.net/downloads/v3-preview.html これもNe

    NetBeans6.7RC2でServlet3.0を試す 2009-06-11 - きしだのはてな
    yojik
    yojik 2009/06/11
  • おとうさん、ぼくにもYコンビネータがわかりましたよ! - 2009-04-09 - きしだのはてな

    やっと、Yコンビネータが何を意味するものなのか、どういう意義があるのかがわかりました。 名前を使わず再帰ができますよ!というだけのものじゃなかったのですね。 まずλありき 関数の話をしたいのです。 そのとき、いちいち hoge(x) = x * 2 としてhogeを・・・、とか名前をつけて話を進めるのがめんどうなので、関数を値としてあらわすと便利ということで、λという値を定義するのです。 そうすると、上のhoge関数なんかはλ(x)(x*2)などとあらわせますが、引数をあらわすのに()を使うといろいろまぎらわしいので、 λx.x*2 のように表記します。 というのがλ。 このとき、λになにかわたされたら、引数としてあらわされる部分を単純におきかえます。 (λx.x*2)y とあったら、xの部分をyでおきかえて (λx.x*2)y → y * 2 となります。λの引数部分を与えられた引数で置

    おとうさん、ぼくにもYコンビネータがわかりましたよ! - 2009-04-09 - きしだのはてな
    yojik
    yojik 2009/04/09
  • クラウド対応のモデリング技術がおもしろくなるかもしれない - きしだのはてな

    いま、大きいのはクラウドから小さいのはGPGPUまで、並行システムはなざかりです。 クラウドなど、並行システムが不可欠となったとき、並行システムのモデリング技法が必要になります。 でも並行システムを作るために使えるモデリング技法で、現場の技術者に定着したものはありません。 いま現場で使えるのは、オブジェクト指向モデリングです。 オブジェクト指向のモデリングではUMLを使うと思うのですが、UMLを使ったオブジェクト指向のモデリングでは、クラス図・オブジェクト図が静的な関係を表し、シーケンス図・コラボレーション図はシングルスレッドでのフローをあらわします。これらの図は静的な関係か、シングルスレッドをあらわします。 複数スレッドを扱えるのはアクティビティ図ですが、ここではスレッドの同期を扱えるだけです。 UMLでは、動的な関係の遷移を表すことができません。 並行システムを考えるときには、動的な関

    クラウド対応のモデリング技術がおもしろくなるかもしれない - きしだのはてな
    yojik
    yojik 2009/03/31
  • クラスとは何かを集合論から考えなおす - 2009-03-08 - きしだのはてな

    いま論理学とか集合論とかを勉強してるので、クラスって何かという話のときも集合論として考えてた。 なので、そのとき考えたことをまとめておく。 まず、「なにか」があるとする。「なにか」はなんでもいい。 そして、その「なにか」の集合を考える。たとえば"aaa"や"bbb"を要素とするStringという集合を考える。3とか5とかを要素とするIntegerという集合を考える。 ここで、その集合がなにを扱うかという規則をどうするかというのがオブジェクト指向としては大切になるかもしれないけど、今回はそこには触れないでおく。 とにかく、「なにか」と『「なにか」の集合』を考えることをここでは大切にする。 これで『「なにか」の集合』を考えたところで、『「なにか」の集合』を要素とする集合を考えて、この集合をクラスとする。つまり、クラスという集合は、StringやIntegerといった集合を要素にもつ。 ここで、

    クラスとは何かを集合論から考えなおす - 2009-03-08 - きしだのはてな
    yojik
    yojik 2009/03/10
    Smalltalkあたりのメタクラス階層とかはヒントになるのかな。まだちゃんと読みきれてないけど。
  • Twitterのアーキテクチャと遅延のしくみを考えてみる - 2009-03-04 - きしだのはてな

    今日もTwitterは遅延してたんで、その遅延が起こるようなTwitterのアーキテクチャを考えてみるよ。Twitterの不具合から考えてみただけで、完全に想像であって、実際になにかの資料に基づいたりはしてないので、念のため。 まず、サーバー構成はこんな感じ。 Webサーバーとデータベースサーバーは当然として、投稿したときの処理を管理するためのメッセージキューとユーザートップページを保存しておくキャッシュがあると思う。 ちなみにこのメッセージキューは今までRubyで書かれていたものがScalaに書き直されたらしく、Twitter Kestrel Projectとしてソースが公開されてる。 Twitter message queues move to Scala | The Scala Programming Language で、データベース。 ユーザーテーブルとステータステーブルはもちろ

    Twitterのアーキテクチャと遅延のしくみを考えてみる - 2009-03-04 - きしだのはてな
    yojik
    yojik 2009/03/05
    ユーザ毎タイムラインってとんでもないレコード数になりそうな気がする|なるほど、それで40ページ限定なのかもね
  • 今年の目標。あとプログラマ35才定年説について。 - きしだのHatena

    おおまかな今年の目標は、「ちゃんと働く」で「月160時間働く」とか言ってたら、それは無理と満場一致で言われたので、「月120時間働く」にしてる。 で、それはいいとして、勉強的な目標。去年は、自分ができないということがわかったので、今年はできることを増やす勉強をしていかないといけないと思う。 そこで実感してくるのが「プログラマ35歳定年説」という言葉。 もうプログラマとしては定年といわれる歳になるのだけど、今まではそんなんウソやろと思ってたら、その歳が近づくにつれて「プログラマ35歳定年説」という言葉が真実味を増してきた。 もちろん、プログラムが組めなくなるとか、時代についていけなくなるということじゃない。 まあ、新しい流行りものにいつくということをしなくなって、RubyとかJavaScriptとかようわからん状態だったりするので、そういう意味では時代についていかなくはなってきた。けど、よ

    今年の目標。あとプログラマ35才定年説について。 - きしだのHatena
    yojik
    yojik 2009/02/05
  • 今回の大相撲問題について - きしだのHatena

    はじめまして。どこにも属していないきしだです。 今回の時津風部屋問題ですが、時津風親方のみならず相撲協会の対応も話にならないほど悲惨な状況です。 そのような目に見にみえる内部的な問題にくらべると時津風親方の病院への雲隠れはまだ一般的なレベルと言えると思います。 いずれにしても伝統国技のする仕事とは思えません。 そもそもせっかく東西横綱そろっているのに、いまだにphpではなくJavaで動いているあたり。。。 どう考えても江戸時代以来からの身内で運営をしているとしか思えません。技術や知識が古く、独自の思考をもった温室親方たちが、権限ばかり与えられて新しく入った弟子を上手に育成できていない様子が目に浮かぶようです。 これはひとえに、欲に流され、指導者としての判断を誤った親方に責任があると言えるでしょう。 伝統国技なのですから、この不祥事による悪評を聞いた支援者たちが黙っていません。僕が親方株を持

    今回の大相撲問題について - きしだのHatena
    yojik
    yojik 2007/10/11
    私的改変「いまだに竹刀ではなく金属バットをつかってるあたり」
  • きしだのはてな - スレッド内でメモリが足りなくなったときの怖い話

    こんな感じのプログラムを実行すると、OutOfMemoryError出ますね。 public static void main(String[] args) { List<List> l = new ArrayList(); for(;;) l.add(new ArrayList()); } ところが、こんな感じでスレッドに入れてあげると、静かに終了します。 public static void main(String[] args) { final List<List> l = new ArrayList(); new Thread(){ public void run(){ for(;;) l.add(new ArrayList()); } }.start(); } スレッドが落ちてる! あ、1.6.0-b105 + Windows XPです。 ウィンドウを表示しておくと、そっちはその

    きしだのはてな - スレッド内でメモリが足りなくなったときの怖い話
    yojik
    yojik 2007/06/25
  • データベースカバレッジという考え方 - きしだのHatena

    データベースアプリケーションのテストデータを用意するとき、どういうデータを用意しますか? 「注文があって出荷してないデータ」「注文があって出荷していて入金がないデータ」という風に業務の流れにそってデータを考えることが多いと思います。 ただ、テストのを見ても、どうやってテストデータを用意するかということが書かれていることは多くありません。というか市販ので見たことがありません。 データベースアプリケーションでは、ひとつの処理でまったく分岐がなく上から下にSQLを順番に発行するということが少なくありません。そういうとき、C1とかC2とかの処理カバレッジというのは簡単に100%に近くなってしまい、テストがアプリケーションの状況を網羅しているかどうかという指標にはなりにくくなります。 データベースアプリケーションでは、「すべての処理を行ったかどうか」という処理カバレッジでは充分ではなく「すべての

    データベースカバレッジという考え方 - きしだのHatena