タグ

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

  • HTML5ローカルストレージの本当の難しさ 2009-11-16 - きしだのはてな

    HTML5でローカルストレージが使えるようになる。 そこでちょっと使ってみようと思ったのだけど、これはかなり難しいのではないかと思った。 もちろん、データを入れたり出したりするだけなら、window.openDatabaseなどとして、普通にSQLを発行すればいい。 SQL呼び出し結果の取得がコールバックになっているので少しコーディングは面倒だけども、それを除けば特に難しいことはない。 HTML5 ローカルストレージが難しいのは、実際にアプリケーションを組むときにそれが使えるとは限らないし、使えるときは唯一のDBではないということだ。 つまり、まず過渡期では、HTML5 ローカルストレージが使えるブラウザと使えないブラウザが混在する。Google Gearsをインストールすることで同様のことは可能だけど、そこでもGoogle Gearsをインストールしているブラウザとしてないブラウザが混在

    HTML5ローカルストレージの本当の難しさ 2009-11-16 - きしだのはてな
  • Google App Engine for Javaでのメール受信コード - 2009-10-24 - きしだのはてな

    Google App Engineで受信メールの処理ができるようになった。 具体的な手順はこちら。 http://code.google.com/intl/en/appengine/docs/java/mail/receiving.html 手順はこう。 まず、appengine-web.xmlに次の設定を追加 <inbound-services> <service>mail</service> </inbound-services> そうすると、string@appid.appspotmail.comにメールが来たら /_ah/mail/<address> というURLが呼び出されるようになる。 なので、次のようなサーブレットマッピングをweb.xmlに追加してサーブレットで処理をする。 <servlet> <servlet-name>mailhandler</servlet-name>

    Google App Engine for Javaでのメール受信コード - 2009-10-24 - きしだのはてな
  • はてなやmixi、ついったのIDで郵便が届く時代がきっとくる - 2009-10-11 - きしだのはてな

    昨年末、mixiが年賀状サービスを始めた。 そのときによく目にしたのが、自筆の年賀状を送りたいという要望だ。mixiのサービスでは、デザインを選んで、ひとことふたこと言葉を入力すれば、その年賀状が届いていた。けど、せめてひとことくらいは自筆で書きたいということが多かったのだと思う。 ここで、自筆の郵便をマイミクに届けるサービスをmixiが行う場合には、mixiあてに年賀状を送ってもらって、その年賀状にmixi側で実際に住所を貼り付けて送付するということが必要になる。 そうするとまず問題になるのが、郵便代だ。郵便をmixiまで送る分、そしてmixiから郵便を送る分の郵便代が必要になる。さらには、mixi側での手数料も必要かもしれない。 これを解決するために、mixiと郵便局が連携して、mixi年賀状は郵便局側で処理をしてしまえばいい。 そうすると、住所に「mixi id:xxxx」などと書い

    はてなやmixi、ついったのIDで郵便が届く時代がきっとくる - 2009-10-11 - きしだのはてな
    imai78
    imai78 2009/10/14
    楽しそうな未来
  • 創るJava 改訂3版 でます - 2009-09-01 - きしだのはてな

    やっとこさ、出ます。9月中旬らしい。 アマゾンのほうも、もうちょっとしたら予約できるようになるのではないかと。 http://book.mycom.co.jp/book/978-4-8399-3253-4/978-4-8399-3253-4.shtml 今回は、NetBeans6.7対応で、Java SE 6/Java EE 6 に対応してます。 Servlet3.0やJSP 2.2の記述を入れています。まだ正式にはJava EE 6がリリースされてないので、注釈程度ですが。 それ以外には、アルゴリズム・データ構造の項を入れたことと、ソケット通信を入れたことです。 いままでは、「Javaのことについて知っていること」を目指したのですが、「プログラムについて知っていること」を少し目指してみました。 ということで、よろしくおねがいします。

    創るJava 改訂3版 でます - 2009-09-01 - きしだのはてな
    imai78
    imai78 2009/09/03
    人に薦めて買わせてそれを見せて貰おう。
  • 2009-07-10 - ライセンスの選択は自己責任 - きしだのはてな

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

    2009-07-10 - ライセンスの選択は自己責任 - きしだのはてな
    imai78
    imai78 2009/07/13
    これが怒られるなら日本のほとんどのSI屋はApacheSoftwareFoundationに土下座せんとならないよなあ。プログラマもEclipseとかNetBeansの開発者に(ry 気持はわかるけど。
  • どうでもいいことをあたかもなんかすごいことのように語るメソッド - きしだのHatena

    どうでもいいことを、あたかもなんかすごいことのように語る方法を考えてみる。 まず、書きたい「どうでもいいこと」を決めよう。 とりあえずここでは、「明星のインスタント焼きそば作るときにかやくを入れ忘れたのだけど、それってフタの説明が悪いんじゃない?」ということを書くとしよう。ここで、読んでる人に「ようわからんけどなんかすごい」と思わせるために話の主題をずらすのが大切だ。今回は、結論を「UFOのターボ湯切りいいよね」ということにしよう。 文はこのようになる。 先日明星のインスタント焼きそばをべた。 ふたの説明を見ながら手順どおりに作ったのだけど、べる段になって、かやくはあらかじめ入れておかないといけないことに気づいた。これはふたの説明が悪いのではないか。ふたの説明はインスタント焼きそばの味を最終的に決めるものであるから、わかりやすく書くべきである。 UFOのようにかやくをあらかじめめんの

    どうでもいいことをあたかもなんかすごいことのように語るメソッド - きしだのHatena
  • 過去の状態のスナップショットを取れるMap - 2009-04-24 - きしだのはてな

    時間を指定して、その時点での状態を取れるようなMapを作ってみた。 何に使うかとかは考えてない。 こういった、データの世代別管理をして過去のある時点をスナップショットとして取得できるようなデータ構造は、扱うデータが巨大になってバックアップのためにシステムを止めれないというときに重要になったりしますね。 あと、データを変更せず追記する一方なので、ストレージの仕組みとして使うと、変更回数の制限があるSSDと相性がいいとか。 使うとこんな感じ。 public static void main(String[] args) throws InterruptedException{ VersionedMap<String, Integer> vm = new VersionedMap<String, Integer>(); vm.put("abc", 3); vm.put("aaa", 6); vm

    過去の状態のスナップショットを取れるMap - 2009-04-24 - きしだのはてな
  • データ構造の選定より重要なもの - 2009-04-02 - きしだのはてな

    この話題、すっかり乗り遅れてしまった。 あえていわせていただく。コードはデータ構造の選定ができるだけはるかにましなのだ、と。バイナリーを使うかどうかなんぞ、その問題と比べれば屁ですらないのだと。 データ構造の選定よりもはるかに重要なもの、それは働く会社の選定。 ここで一歩間違えると、バグが生活化し、データ構造どころかバグにあわせて人生を送らねばならぬ羽目になる。 その最も顕著な例は、知ってたとしても挙げれないので、以下略。 http://blog.livedoor.jp/dankogai/archives/51195101.html

    データ構造の選定より重要なもの - 2009-04-02 - きしだのはてな
    imai78
    imai78 2009/04/03
    バグのある生活=例えば「寝坊」ってバグ?仕様?きしださんのは仕様だよね♪
  • プログラムの動かし方の本 - きしだのはてな

    Seasarカンファレンスで、基礎としてプログラムの動かし方であげた。と、それに加えて挙げれなかった。 ちなみにSeasarカンファレンスでの内容はid:tanamonがまとめてくれてる。というか、手書きスライドの書き起こしをしてもらってます。 「手書きで書く→ソーシャルに清書してもらう」という、新しいプレゼン手法が生まれました! 差のつく勉強法200のメモ - tanamonの日記 プレゼンや以前のエントリでは、プログラムというのは計算論と意味論に分かれると書いたけど、プログラム意味論という分野と混同してへんな議論になっちゃうので、「プログラムをどう動かすか」と「プログラムをどう書くか」に分かれるとします。命令的な側面と宣言的な側面だと言ってもいいかもしれない。今回は命令的な側面について。 まずは、基礎となる数学、離散数学について。 やさしく学べる離散数学 作者: 石村園子出版社/メ

    プログラムの動かし方の本 - きしだのはてな
    imai78
    imai78 2009/03/19
    きしださんの知識の源泉またはSC2009Whiteのつづき
  • クラスとは何かを集合論から考えなおす - 2009-03-08 - きしだのはてな

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

    クラスとは何かを集合論から考えなおす - 2009-03-08 - きしだのはてな
  • 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 - きしだのはてな
  • エラー処理の方針とString#equalsの書き方 - 2009-02-19 - きしだのはてな

    String#equalsを使った文字列リテラルとの比較の書き方として、str.equals("リテラル")と書くのがいいか、"リテラル".equlas(str)と書くのがいいかという論争がありました。 そこで、この問題について、エラー処理の方針と絡めて考えてみようと思います。 エラー処理の方針として、エラーパッシングとエラーリカバリーという考え方があります。 エラーパッシングは、エラーがあってもそれを無視して処理を行うという考え方です。例えば音楽データの再生時に、データの一部が欠けていたとしてもそこを適当に補完を行って再生を続けるような考え方です。 人間相手の処理では、エラーによって処理が止まるよりも、それなりの対処を行って処理を続けることのほうが求められるので、ユーザーインタフェースやコンテンツのプログラムではエラーパッシングで考えることが多いと思います。 エラーリカバリーは、エラーが

    エラー処理の方針とString#equalsの書き方 - 2009-02-19 - きしだのはてな
    imai78
    imai78 2009/02/22
    エラー処理、例外処理
  • メッセージキューを使って分散MapReduceを実装する 2009-02-16 - きしだのはてな

    さて、JMSでメッセージキューも使えるようになって、HadoopでMapReduceも試してみた。そうするとやりたくなるのがメッセージキューを使った分散MapReduceの実装ですね。ということで、JMSを使ってメッセージキューによる分散MapReduceをやってみました。実際にはローカルでしか動かないのですが、コンセプトモデルということで。 メッセージキューで遊びたいのでJMSを試す HadoopでのMapReduceを気軽に試すサンプル Hadoopサンプルで作ったのと同じように、クラスがJavaファイル中でimportされている回数を数えてみます。 考え方として、ちょっと強引ですが、GoogleやHadoopのMapReduceは分散ファイルシステム付きメッセージキューといえます。けど小規模につつましくやる分には分散ファイルシステムは必要ないので、MapとReduceを分散することだ

    メッセージキューを使って分散MapReduceを実装する 2009-02-16 - きしだのはてな
  • HadoopでのMapReduceを気軽に試すサンプル 2009-02-15 - きしだのはてな

    Googleの分散処理技術であるMapReduceを、そのオープン実装のHadoopを使って試したいと思っても、なんか設定がめんどくさそうで二の足を踏んじゃう人は多いはず。 そこで、並列計算をせずにサーバーなしで動かせるサンプルを作ってみた。 ただ、設定は不要なんだけど、Windowsの場合はCygwinがやっぱり必要で、PATHにCYGWIN_HOME\binを追加しておく必要がある。残念。 今回は、Javaソース中のimportされたクラスを数えるっていう処理をMapReduceでやってみる。 Hadoopは、こっからダウンロード。0.17.2.1を使った。 http://hadoop.apache.org/core/releases.html コンパイル・実行には、解凍してできる次のJARをクラスパスに追加しておく必要がある。 HADOOP_HOME/hadoop-0.17.2.1-

    HadoopでのMapReduceを気軽に試すサンプル 2009-02-15 - きしだのはてな
  • メッセージキューで遊びたいので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 - きしだのはてな
  • [Java]正しい無限ループの書き方 - きしだのはてな

    boolean д = true; for(;д;){ System.out.println("でれません"); } boolean ω = true; for(;ω;){ System.out.println("ぬけれません"); } boolean ェ = true; for( ;(ェ); ){ System.out.println("終わりません"); } boolean TдT = true; while(TдT){ System.out.println("帰れません"); } 参考 while(1)をfor(;;)って書くやつ(2ch)

    [Java]正しい無限ループの書き方 - きしだのはてな
  • きしだのHatena

    Qiitaのほうに「Java 23新機能まとめ」を書きました。 Chicoryを使ってRustをコンパイルしたwasmJavaから呼び出してみました。 JVMでWebAssemblyにコンパイルしたRustのコードを動かす - きしだのHatena ただ、結構呼び出しがめんどいので、Javaインタフェースを定義したらなんかメソッド呼び出しで使える、というよく見かけるやつを作ってみます。 Rustのコードはこう。 #[no_mangle] pub fn add(left: i32, right: i32) -> i32 { left + right } #[no_mangle] pub fn sub(left: i32, right: i32) -> i32 { left - right } #[no_mangle] pub fn mul(left: i32, right: i32) ->

    きしだのHatena
    imai78
    imai78 2009/01/29
  • 計算量を具体的に見てみる 2009-01-06 - きしだのはてな

    アルゴリズムの話では、計算量の解析がかかせません。 計算量はオーダー記法で表されますが、これは、データの入力量に対してどのくらい時間がかかるかをあらわしたものです。 こういった話はどのアルゴリズムのにも載ってるはずですが、具体的にどのようなプログラムを書くとそのオーダーになるかという記述はあまりありません。 ということで、やってみました。 計算時間表示のための共通処理を行うクラスは、一番最後に書いてます。 O(1) 計算時間がO(1)のアルゴリズムは、処理が入力の量によらない場合です。 配列の要素のアクセスや、ハッシュテーブルによるデータ検索、連結リストへの追加削除などがこれにあたります。 コードには入力量でのループが含まれません。 public class O1 extends ViewCompFrame{ @Override void compute(int n) { proc();

    計算量を具体的に見てみる 2009-01-06 - きしだのはてな
  • RDBMSの時代の終わりが見えてきた - きしだのはてな

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

    RDBMSの時代の終わりが見えてきた - きしだのはてな
    imai78
    imai78 2008/12/13
    RDBMSの主たるスコープが終わると、もっと色々終わる気が><
  • なんも考えずに"リテラル".equals(s)と書け - 2008-12-04 - きしだのはてな

    "".equals(stringVariable) は改悪だろうについて。 まず、空文字との比較は場合による。というか、空文字との比較なら s != null && s.isEmpty() か s == null || s.isEmpty() などと書くほうがいい。 あと、件の問題は改悪とは言わないまでも、問題文だけをみてこれを改善といえるほどでもないので、あまり良くない。 中身があるリテラルとの比較。 基的な方針として「二通りの書き方があるとして、実行コストや記述コストが同じならより安全で判断の必要がない書き方を選ぶべき」というのがある。というか、これはコードの書き方だけではなく、すべての行動にあてはまる。判断不要で安全な方法があるのなら、それを選ぶべきだ。シャワーをまっすぐにシャワー置きにかけずに横向きにかけるというのは、これにあてはまる。確かにシャワー置きにはシャワーをまっすぐ置き

    なんも考えずに"リテラル".equals(s)と書け - 2008-12-04 - きしだのはてな
    imai78
    imai78 2008/12/05
    きしだ節がすごい軽快!!これは明文!