タグ

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

  • 2009-07-10 - ライセンスの選択は自己責任 - きしだのはてな

    なんか、AndroidアプリをApacheライセンスで公開したらそのままGoogleマーケットに載せられて、その載せた人には誠意がない、みたいに怒ってるんだか悔しがってるんだかしてる人がいた。 http://blog.ngsdev.org/archives/android/oyadonavi/ けど、ライセンス的に問題がないんなら、怒るのも悔しがるのも筋違いだと思う。 というか、Apacheライセンスみたいな自由なライセンスで公開するってのはそういうもんでしょ、と。 「この行為自体、良心があるとは思えません。」とか「そのまま自分の名前でマーケットに突っ込むなんて!」と書いてるけど、それを許したのはあなたでしょとしか言いようがない。 「ご自由にお使いください」と書いてて、いざ自由に使ったら文句いうというのはどうかと思う。 「パクリ」とか「盗作」とかいうタグがついているようだけど、ライセンスに

    2009-07-10 - ライセンスの選択は自己責任 - きしだのはてな
    t_43z
    t_43z 2009/07/13
    この場合はライセンス違反だと思うけど、問題はそこじゃなくて、元作者がライセンスをキチンと理解した上で選択してなかったことだなー。もちろん自戒をこめて。
  • 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 - きしだのはてな
    t_43z
    t_43z 2009/06/11
    うほー
  • 情報系の技術者に一冊だけ読んでもらうならこの本 - 2009-03-30 - きしだのはてな

    さて、いろんなを取り上げたのだけど、かなり広い範囲を取り上げたので、それぞれそれなりに高いだし、読む時間もないし、そもそもどこから手をつけていいやら、とか思った人も多いんじゃないだろうか。 今回取り上げたような内容を、1冊にまとめたようなはないだろうか。 しかし、そんな都合のよいは存在するのか。 と思ったら、あった。いいが。 しかも、ちゃんと勉強できたかどうか判定できるし、勉強した証を発行してもらえる。そして、その証で職につきやすくなるかもしれない。 ということで、情報系の技術者が一冊読むならこの。 やさしい応用情報技術者講座 2009年版 やさしい講座シリーズ 作者: 高橋麻奈出版社/メーカー: ソフトバンククリエイティブ発売日: 2008/11/29メディア: 単行 クリック: 10回この商品を含むブログ (8件) を見る なんだ麻奈タンかよ、とか、やさしいシリーズか!と

    情報系の技術者に一冊だけ読んでもらうならこの本 - 2009-03-30 - きしだのはてな
    t_43z
    t_43z 2009/03/31
    「この本は今のところ、内容を理解させようという唯一の応用情報技術者の本かもしれない。」
  • プログラマの教育のための本 - きしだのHatena

    Seasarカンファレンスで「プログラムが組めるようになるためには何を教えればいいですか?」と聞かれて、「創るJava」も絶版だし、どうしようかと思いつつ、「教える」というときに考えないといけないことが書いてあるを紹介しますね、と言ったので、そのの紹介。 あと、そのときに言ったこと。 教育するときに大切なことは、「情報を与える」という観点でカリキュラムを構築してはダメで、「脳みそを構築する」という観点でカリキュラムを作らないといけない、というようなことをまずは伝えた。 つまり、たとえばJavaでWebアプリを作れるようにするというときに、必要な情報を分解してHTMLとデータベースとサーブレットとJavaの文法が必要だとなって、その情報の依存関係を洗い出して、最初にJavaの文法をからとか順番を決めて、依存部分の少ないものから提示していくという、そういう単なる情報の提示だけでは教育にはな

    プログラマの教育のための本 - きしだのHatena
    t_43z
    t_43z 2009/03/18
    こういう本は読んだことないなー。
  • メッセージキューで遊びたいのでJMSを試す - 2009-02-14 - きしだのはてな

    これからはメッセージキューが大切ということで、JavaのメッセージングAPIであるJMS(Java Messaging Service)を試してみます。 JMS試すにはメッセージングサーバーが必要で、Open MQとかを使います。けど、わざわざOpen MQとかをインストールして起動させるのもめんどいので、Glassfishを使います。GlassfishにはOpen MQが入ってて、そのまま使える状態になっています。NetBeans使いならGlassfish入ってますよね。 今回はv2.1を使いました。v3 preludeにはJMS入ってないみたい。 https://glassfish.dev.java.net/ 来ならGlassfishで使う場合にはJNDI経由でJMSサーバーを取得するのですが、今回はめんどうなので、直接つなぎます。 ということで、メッセージ送信側。プロバイダーという

    メッセージキューで遊びたいのでJMSを試す - 2009-02-14 - きしだのはてな
    t_43z
    t_43z 2009/02/16
  • RDBMSの時代の終わりが見えてきた - きしだのはてな

    クラウドと一緒にやってきたもの 最近、クラウドが流行ってます。 GoogleMapResuceから始まって、MicrosoftのAzureまで、大手のクラウド製品が出揃った感じ。 で、そこで、こんなクラウド製品が出ましたというときに、必ずといっていいほどそのクラウド用のデータベースの説明があります。そして、それはRDBMSではありません。 GoogleだとBigTable、MicrosoftだとSQL Data Services、あとはAmazonSimpleDB。どれも、基的にはひとつのテーブルにハッシュコードでアクセスするようになっています。 ほかのクラウド製品も、Oracle Coherenceだったり、楽天のRomaだったり、非RDBMSのデータストレージを提供します。 クラウドというわけではないけど、mixiのTokyo TyrantやApache CouchDBも、RDB

    RDBMSの時代の終わりが見えてきた - きしだのはてな
  • SwingWorkerでスレッドからGUI操作 - きしだのHatena

    EventQueue#invokeLaterなどを使えということなのですが、実際の処理をいちいちinvokeLaterすると処理の記述が分断して大変みにくくなります。記述の美しさよりも処理の安全さ、とはいえ、これはあんまり。 ということで、Java SE 6からはSwingWorkerというクラスが用意されていて、便利に使えます。 使い方を図解すると、こう 関係ないけど、今回のサンプルはムダにNimbusです。 SwingWorkerは、Genericsパラメータをふたつ指定します。一つ目が処理結果の型で、二つ目が途中経過の型です。 new SwingWorker<Integer, int[]>() SwingWorkerで実装するべきなのは、doInBackgroundメソッドです。ここでは、別スレッドで動かしたい処理を記述します。戻り値の型は、Genericsで一つ目に指定した型になり

    SwingWorkerでスレッドからGUI操作 - きしだのHatena
  • 2008-11-20 - きしだのはてな: スレッドで投機的実行を実現する方法を考えてみた

    スレッドのロックをする場合、読み込み処理同士は他に影響を与えないのでロックをする必要がない。 Javaでは、ReadWriteLockを使うと、読み込みスレッドは同時にいくつでも動くけど書き込みスレッドは他のスレッドが動いていると処理をまち、書き込み処理中は読み込み処理もできなくなる。 ただ、ReadWriteLockの場合、処理が読み込みなのか書き込みなのかがロック取得時に決まっている必要がある。 なので、あらかじめ読み込み処理か書き込み処理か決めれず、通常は書き込みを行わないけど条件によって書き込むというような場合にはReadWriteLockは使えない。 ということで、書き込みの頻度が少ない場合には、とりあえず処理を行っておいて、書き込みなければそのまま実行、書き込みがあっても他のスレッドによって値が変えられてなければやはりそのまま実行、もし他のスレッドによって書き込みがあれば、処理

  • 2008-11-19 - きしだのはてな: マルチスレッド対応カウンタ

    Javaの++演算子はアトミックじゃない。つまり、++nは、n = n + 1と分解されたとき、nを読み込んだ後、1足した値をnに書き込む前に他のスレッドがnを変更していたら、すでに他のスレッドで行っていた変更が無効になる。 で、これはvolatileをつけてもだめ。 つまり、このプログラムの実行結果が20000にならない。 public class NonAtomicIncrement { static int count; public static void main(String[] args) throws InterruptedException{ Thread t = new Thread(){ @Override public void run(){ for(int i = 0; i < 10000; ++i){ ++count; } } }; t.start(); for

    2008-11-19 - きしだのはてな: マルチスレッド対応カウンタ
    t_43z
    t_43z 2008/11/19
    知らなかった
  • 円周率でも求めてみるか - きしだのHatena

    なんだか、java-jaチャットで円周率の話になってた。 で、id:cactusmanが でいいんじゃねぇの?って言ってたので、試してみた。 で、こんなコードを書いてみる public class Pai { public static void main(String[] args) { double sum = 0; double d = 0.01; for(double x = 0; x <= 1; x += d){ sum += Math.sqrt(1-x * x) * d; } System.out.println(sum * 4); } } 3.1604170317790454になった。精度悪すぎ・・・ 案の定、cactusmanに刻みが粗いとdisられた。 dを0.0001にしてみたら、3.1417914777848557になった。改善したとはいえ、せめて自分が覚えてる3.1

  • ビール画像判定プログラムできたよ! - きしだのHatena

    画像同士の距離が取れるなら、ビール画像の判定プログラムもできるよね。 ってことで、手持ちの画像をSVMにわせてみて、ビール画像を判定させてみました。 誤判別?なにそれ ソースはこんな感じ。 ビールの画像はbeerがついたフォルダかファイル名にしてください。 import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; import java.util.*; import java.util.List; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.text.*; public class ColorCoherenceVecotrLaern extends javax.swing.JFrame

  • なんで勉強したら仕事がなくなるのか - きしだのHatena

    結局のところ、勉強しないとできないようなものの需要がないという話なんだけど、じゃあ、なぜそういうものの需要がないのか。 ソフトウェア会社で、情報工学の学科を出てるか相当の知識が求められるとか、入社試験でアルゴリズムの問題が出るとか、あまり聞いたことない。 ひとつは、お客さん主導だと技術力の必要な仕事になりにくいということ。 お客さんが予算と要求を握っている場合、技術力が必要になるようなものを作るという話にはなりにくくて、オーソドックスな業務システムの仕事が主となる。 機械学習に興味があるという人と話してたら、「よっぽどお客さんに理解があって予算がないとできませんよねー」と言ってた。 で、そもそも、効率よく仕事をしたら、仕事はなくなる。 スーパージャンプというマンガ雑誌に「なっちゃん」という町工場のマンガがある。たまに出てくるエピソードとして、大きい工作会社が「3日かかって200万円!」など

    なんで勉強したら仕事がなくなるのか - きしだのHatena
    t_43z
    t_43z 2008/09/30
    うーむ
  • 2008-07-23 - きしだのはてな [java]Log4Jの落とし穴

    ということで、Log4Jを使おうと思ってlog4j.jarをクラスパスに含めたら、今までおとなしかったライブラリがモノを言い始めた。 まずはBeanUtils。でも、これはloggerがねぇよ!って言ってるだけだったので、log4j.properties的なファイルにこんなのを追加すればよろしい。 log4j.appender.null = org.apache.log4j.varia.NullAppender log4j.logger.org.apache.commons.beanutils.BeanUtils=INFO, null 問題はVelocityで、これはログファイルを作ってくれやがるので、邪魔。いちライブラリの分際で勝手にファイル作るなと。しかも、デフォルトでログレベルFINEってどうよ。 で、なんかググってみつける情報は古くてVelocityEngineとか使ってあるし、t

    2008-07-23 - きしだのはてな [java]Log4Jの落とし穴
  • NetBeans6.1日本語版とMercurial - きしだのHatena

    リリースされました。 NetBeans IDE 6.1 ダウンロード 個人的に、今回一番ありがたいのは、Mercurial対応です。 今まで、ひとりでモノを作ってたので、バージョン管理してなかったのですが、Mercurialのような分散リポジトリに対応したバージョン管理システムなら、楽に使えます。 というのも、家ではデスクトップ、外出先ではノートで、subversionのサーバーをデスクトップに立てれば外出先でバージョン管理できず、かといってノートにサーバーたててわざわざ家でノート立ち上げっぱなしというのも嫌で、ネット上にサーバー立てれば新幹線なんかじゃ使えず、苦労して同期とるほどのメリットは見出せずという感じだったのです。直近ならローカルバージョン管理あるしね。 でも、Mercurialのような分散リポジトリのシステムなら楽です。NetBeans6.1のMercurialプラグインの場合

    NetBeans6.1日本語版とMercurial - きしだのHatena
  • Java5以降でXPathを使う - きしだのHatena

    メモ //TestXpath.java import java.io.StringReader; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathFactory; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; public class TestXpath { public static void main(String[] args) throws Exception{ String xml = "<ro>" + "

    Java5以降でXPathを使う - きしだのHatena
  • JavaOne3日目 - きしだのHatena

    今日は、なんだかおもろいセッションが多い日。どのコマも聞きたいセッションが2つあったりする。

    JavaOne3日目 - きしだのHatena
  • JavaOne 2008 はじまた。 - きしだのHatena

    たくさん人が座っててJavaOneっぽくなった ジェネラルセッション。まあ、JavaFXがどうこうって言ってた。あとニール・ヤングという人が来た。

    JavaOne 2008 はじまた。 - きしだのHatena
    t_43z
    t_43z 2008/05/08
  • 基本のNearestNeighbors法(NN法)でパターン認識 - きしだのHatena

    とりあえず、パターン認識の一番の基になるNearestNeighbors法(NN法)でやってみます。 NN法は、判定するデータが、学習に使ったデータのうちの一番近いものに分類する方法です。 自分の字で学習させて自分の字を判定させるなら、これでいいかも、とか思う。 前処理として画像処理してやると、結構いい感じになりそうです。けど、今回は画像処理はあとまわしです。 とりあえず、学習器のインタフェースを用意します。learnメソッドで学習させて、trialメソッドで判定 //LearningMachine.java public interface LearningMachine { //学習 void learn(int cls, double[] data); //評価 int trial(double[] data); } で、NN法を実装させるとこんな感じ。 //NearestNeig

    基本のNearestNeighbors法(NN法)でパターン認識 - きしだのHatena
    t_43z
    t_43z 2008/03/27
    面白いことやってるなぁ
  • JavaScriptが、プログラムの初心者が勉強するのに適さない理由 - きしだのはてな

    デブサミでid:amachangが、初心者がプログラムを勉強するための言語としてJavaScriptがいいと言っていて、ぼくも同じような理由でいいと思って初心者の勉強にJavaScriptを使ってみたことがあるのだけど、実際にやってみるとかなり難しいと思ったので、そのことをまとめておきます。 id:amachangが言ってたことははっきり覚えていないので、まずは、ぼくがJavaScriptがいいと思った理由。 実行環境がデフォルト どんなパソコンにも最初からJavaScriptを動かす環境が入ってます 実際に動いてるものがみれる JavaScriptで動かしているものにすでに接しています 作ったものをすぐに試せる ブラウザで試せます 言語が難しくない(入り口として) 型の指定をしなくていいのは、初心者には敷居が低い で、JavaScriptを使って初心者にプログラムを教えるのを断念した理由

    JavaScriptが、プログラムの初心者が勉強するのに適さない理由 - きしだのはてな
    t_43z
    t_43z 2008/02/20
    「なので、id:amachangが入門書を書けばいいと思います。」
  • オートボクシング・アンボクシングの注意 - きしだのはてな

    Java2 SE 5.0から、基型とラップクラスの相互変換を自動的にやってくれるようになりました。 つまり Integer a = 5; System.out.println(a * 10); などとすると Integer a = Integer.valueOf(5); System.out.println(a.intValue() * 10); のように変換してくれます。 そうすると、通常ラップクラスを使う場面は、ジェネリクスでの型指定とObjectへのキャストだけになります。 ところで Integer a = 5; Integer b = 5; System.out.println(a == b); はどうなるかというと、これはtrueになります。 ところが Integer a = 130; Integer b = 130; System.out.println(a == b); の

    オートボクシング・アンボクシングの注意 - きしだのはてな
    t_43z
    t_43z 2007/10/30
    「-128から127までは、キャッシュを使って同じ値なら同一のインスタンスを返すようになっていますが、それ以外の値は新しいインスタンスが作られます。」知らなかった。