タグ

ブックマーク / d.hatena.ne.jp/t_yano (66)

  • Javaの冗長な記法って小クラス主義の現れではないかな - 矢野勉のはてな日記

    Java以下は無駄に長い駄文です。なんか書いてみたはいいもののうまくまとまらなかった。ごく一部しか表せなかった気がする。これではInputStreamReaderとかがたくさんオブジェクトを連結しないと使えないめんどくささをなぜ許容できるか、しか表せてない... もともとは「 Java における質的でない記述がどのように大規模開発に役立つのか - kwatchの日記」がらみの話です。文中にいくつか「アクセッサが簡潔に定義できない」「FileReader に文字コードを渡せない」のような例があって、「それらが改善されたら大規模開発になにか不利益があるのかどうか」という具体的な質問があったので私はそこにコメントしときました。私はコメント欄に「不利益なんてないよ」と回答しました。実際のところ、後方互換性が維持され、言語としての統一性が維持されるなら別に不利益なんてあるわけない。あるとしたらマネ

  • TwitterのSampleStreamをClojureの遅延ストリーム(無限ストリーム)に変換する - 矢野勉のはてな日記

    clojureTwitter4jを使用。Twitter4jのStream APIはリスナ形式で、別スレッドが起動してリスナを呼び出す形態なんで、別スレッドが取得した値をうまく元のスレッドに渡す必要がある。スレッド間にatomを置いて、別スレッドにてリスナが呼ばれるまでは、JavaのObject#waitを使って待機することにした。再帰を使って取得処理を繰り返し実行するようにして、取得結果を concat で次々とつなげていく。concat の部分を lazy-seq にして遅延シーケンス化することで、再帰が無限ループにならないようにした。 (ns com.shelfmap.wordbox.fetcher.twitter-fetcher (:import [twitter4j StatusAdapter TwitterStreamFactory] [java.text SimpleDateF

  • 分散コンピューティングの八つの誤信 - 矢野勉のはてな日記

    プログラミングいまや、インターネットはあまねく広がり、いままで何度も喧伝されて来てはバズワードとして去っていた「分散コンピューティング」が、現実のものとして普通に取りざたされる世の中です。でも今よりももっと前、10年以上も前に、「分散コンピューティングの八つの誤信」と呼ばれる、簡潔かつ重要な提言がされていました。一部の人はこの話を今でも覚えていると思いますが、忘れ去られるのも惜しいので、ここに記録しておきます。この提言が生まれた企業はもう既にありません。その会社のマントラは「ネットワークこそがコンピュータだ」でした。 分散コンピューティングの八つの誤信ネットワークは安定している 帯域は無制限だネットワークはセキュア(安全)だトポロジーは変化しない 管理者は一人である 転送コストはゼロだネットワークは均質だ レイテンシはゼロだこれらのひとつであっても、前提にしている分散システムは、欠陥を抱え

    tarchan
    tarchan 2012/01/10
    >JINI仕様は死んだわけではなく、その実装として今でも「Apache River」が存在します。
  • iTunes Matchについて - 矢野勉のはてな日記

    Apple, iPhone, Macなんか、「日を除く」17カ国に広がったらしい、Appleの「iTunes Match」ですが…これ、どういうものかというと、年間2000円くらい支払うと、iTunesに入ってる(iTunes以外で買った)曲がiTunesで売ってるのと同じ曲だと確認できたら、iTunesで買ったのと同じように、いつでもiTunesからダウンロード可能にしますよ、音質もiTunesの256kbpsのになりますよ、というもの(英語解説だと「しかもDRMフリーで」って書いてるけど、これはiTunes Plusの曲だったらってことかもしれない)。ついでに、iTunes Storeの曲とマッチしなかったもの(だけ)がiCloudにアップロードされて、iCloudに接続してる所有デバイスと同期される。FAQによると、年間契約を解除したあとでも、一度iTunes化されたものは聞き続け

    tarchan
    tarchan 2011/12/26
    日本だけ後進国
  • AnnotationProcessorを利用して楽してintrefaceを徹底活用したプログラミングをしようぜ - 矢野勉のはてな日記

    Java, Advent Calendarこの記事は Java Advent Calendar 2011 の一環で書いてます。詳細はこちらを参照してください。昨日の id:ttmmrr さんの記事はこちら (2012年の公休日とか)JTableのフィルタリング - ttmmrr(@o_tmr)の日記たまたま、いま作ってるプログラムで、Javaプログラマに役立ちそうな部分があったので、その部分を抜き出して公開することにしました。今回はその紹介をしようと思います。 「インタフェースこそが型である」世界Java: The Good Parts というがありまして、その3章において、(私の理解としては)Javaにおいて、型とはインタフェースのことあり、クラスは型に実装を提供するものであり、すべてのクラスはインタフェースを備えるべきだ、とかいう意味の論が展開されてます。インタフェースはクラスから型

  • シェルスクリプトからsshでリモートコマンドを実行する際の注意点 - 矢野勉のはてな日記

    メモ, プログラミングシェルスクリプトからsshで複数のリモートホストにコマンドを投げつける処理を書いてて、いろいろ気がついたことを、あとで自分で調べられるようにメモしておく。 ループからsshでコマンドを投げつけるシェルスクリプトのwhileループ内から、複数のホストへ順番にコマンドを投げつける処理をかいていると、最初のホストにしかコマンドが飛ばない(ループしない)これは、シェルスクリプトのwhileループ自体が、標準入力の読み取りに依存しているのに、sshも標準入力を読み取るのが原因。たとえばこんなループの場合に起きる。 somecommand | while read LINE do ssh user@hostname 'sh yourcommand /dev/null 2>&1 &' done nオプションを付けることで、sshの標準入力が/dev/nullに変わりバックグラウンド

  • Flashをアンインストールすべし - 矢野勉のはてな日記

    要点FlashをアンインストールするとLionのSafariが安定する説明前回の記事 Mac OS X Lionに変えたら不安定になった&対策 - 矢野勉のはてな日記 では、一時的に問題は回復するのだけど、その後また同じ状態になることがあって、困ってました。でも、問題が起きるのは、Lionの「ディスク丸ごと暗号化」機能であるFileVault2をオンにしているMacbook Airだけで、オンにしていないProでは起きてない。落ちるのはSafariが一番多いので、FileVault2とSafariの相性が悪いのかなーと思っていたのだけど、よくよく考えれば、AirにFlashが標準インストールされてない理由でのAppleの(ジョブズの?)言い分が「Safariのクラッシュレポートを解析したら、理由の多くはFlashに起因するものだった。あんな不安定なものをインストールなどしない」という話だっ

    tarchan
    tarchan 2011/11/08
    >Flashうんぬんの話はジョブズのFlash嫌いが原因なんでしょ、とか思ってたが、ほんとにFlashが起因で不安定になってたことが、はからずも実証されてしまった。
  • アナログノートで情報記録してる - 矢野勉のはてな日記

    アイデアマラソン奥野宣之さんの書いた『情報は1冊のノートにまとめなさい』というベストセラーがあるのだけど、だーいぶまえに立ち読みして以降放置してて、ちょっと前にちゃんと読んでみたんですよ。そしたら、なんか「ああ、そういうことか」と自分の中にパチっと収まるものがあって、さっそく100円ノート買ってきて、ライフログ的に、いろいろ書き込んでます。もともとメモ帳は持ち歩いていたのだけど(今も持ち歩いてるけど)、それが100円ノートに変わった感じ。ちょっとずつたまっていっているのだけど、これが望外に面白い。はじめてこのを知ったとき、私は「いやーこれからはEvernoteだろ。もうノートとか古いよね」とか思ってた覚えがある。実際、Evernoteは写真の添付もできるとか、iPhoneとの連係でホワイトボードをそのままメモ化したり、のページを写真とってメモとか、いろいろできまくってほんと便利ですよ

  • ブレインストーミングの外部化 - 矢野勉のはてな日記

    アイデアマラソンブレインストーミングというのは、政治的影響化にある人同士でやってもなかなかうまくいかない。IDEOみたいな会社は、企業から請け負ったうえで徹底的なブレインストーミングを行い、モックを作って、解決方法を見つける。これは企業内の政治的圧力から開放された外側にいて、企業内の常識がどうであろうと解決策を見つけることに集中することが出来るからこそ、なんではないか。とすると、ブレインストーミングというのは、企業の外でやったほうがいいのかもしれない。となると、ブレインストーミングというアクションは、イベント化できるんじゃないのかな?特に東京だと、ちょっとした勉強会でも10人とかすぐ集まるし、20人とか40人とかも集まる。自分がちょっとした、面白いテーマのブレインストーミングに参加できるとなると、応募する人も多いんじゃないだろうか。そもそも、ブレインストーミングって、10人くらいも集まれば

    tarchan
    tarchan 2011/09/07
  • Wicket 1.5の新イベントシステムを拡張する - 矢野勉のはてな日記

    Java, WicketWicket 1.5 がRC5とか「RCの意味わかってるんすか?」みたいな状態になってますが、1.5で導入されるイベントシステムについて。以前、Wicket勉強会にてイベントシステムの解説を行ったのですが(その時の資料参照)、そのときのサンプルコードでは、次のように、にっくき「instanceof」を使ってイベントペイロードを識別して、処理を分岐していました。 if (event.getPayload() instanceof ImageRefresh) { if (selected) { source = null; selected = false; ImageRefresh imageRefreshPayload = (ImageRefresh) event.getPayload(); imageRefreshPayload.addComponent(this

  • Macintosh SE/30復活 - 矢野勉のはてな日記

    macMacintosh SE/30を完全復活させたい - 矢野勉のはてな日記 で故障していたMacintosh SE/30ですが、その後、いまでも修理をしてくれる会社さんを発見して、さまざまな不具合もろとも、完全復活しました。点検によって劣化の進んでいる部品もまとめて交換してくれて、なおかつ筐体まできれいにしてくれました。実はキーボード(写真に写っている、古い、メカニカルスイッチ型のApple Keyboard)も壊れていたのですが、こちらもスイッチ単位で交換可能ということで、修理してもらいました。キーボードも完全復活。修理してくださったのは「Macaholic」さん。リンク先ページの「Repair」ページに行くと、さまざまなオールドマックが修理可能であることがわかります。私は、完全復活をめざして、この中の「オーバーホール/レストア」というサービスを選んでお願いしました。オールドマック所

    tarchan
    tarchan 2011/05/12
    まだ直せるんだあ>修理してくださったのは「Macaholic」さん。リンク先ページの「Repair」ページに行くと、さまざまなオールドマックが修理可能であることがわかります。
  • java-ja第24回 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』の資料 - 矢野勉のはてな日記

    Java, java-ja4/25に株式会社グリー様に会場をお借りして、java-ja第24回として、GoFのデザインパターンをそれぞれ5分でLTで説明するというイベントが開かれました。私はStateパターンについてLTしました。資料を公開しておきます。iWork.comAppleのiwork.comへのリンクです。ツイートする

  • Wicket勉強会2011-01終わりました - 矢野勉のはてな日記

    Java, Wicket終わったと言ってももう一週間くらい前なんですけどね…勉強会翌々日に引っ越しだったのだけど、準備をまだ終えてなくて、引っ越し先でPCでなんか書けるだけのスペースを作るのにずいぶん時間が掛かってしまった。1/11に日オラクルさんに場所を貸して頂き、Wicket勉強会を行いました。Wicket勉強会 2011-01 : ATNDATNDでイベント開くとドタキャン率がなぜか高い、というジンクスを打ち破り、来なかったのは2名だけだったようです。もしかしたら、2名のうち1名は遅れて出席されたかもしれません。懇親会のほうは出席率100%。というより、事前登録者よりも多くなるという状態でした。勉強会の受付をするときに、懇親会参加者のみなさんには事前に支払って頂いていたので、支払の混乱もなくすんなり終わった印象です。 しかし、(Wicket勉強会はまいかいそういうところがありますが

  • Javaで戻り値の型パラメータにワイルドカードを使う意味 - 矢野勉のはてな日記

    java例えば次のようなメソッドを考えてみる。Bookはまあ、独自クラスだとする。 List getBooks(); これを次のようにすることに意味はあるのかどうか。 Listextends Book> getBooks(); メソッドの戻り値にワイルドカードを使ったところで、結局、Bookの固有のサブクラスで結果を受け取れるわけではない。これはコンパイルエラー List books = getBooks(); 受け取るにはこうすることになるでしょう。 Listextends Book> books = getBooks(); Listでは受け取れない(コンパイルエラーになる)。Listから値を取り出す場合、結局のところ、下限型であるBookとしてしか取り出すことはできない。もちろん、booksの中にはBookのサブクラスが入っている可能性もあるけど、サブクラスにするには、instance

  • Wicketのページ用HTMLファイルの場所をアノテーションで指定できるライブラリを作った - 矢野勉のはてな日記

    java, wicketタイトル通り。WicketではHTMLファイルの場所はclassファイルの場所と同じ、ということになっています。クラスパスから読みたくない場合は、Applicationクラス内で ((WebApplicationPath)getResourceSettings().getResourceFinder()).add("任意のパス"); とかすることで、所定のフォルダから読むようにもできるのですが、それでも、ファイルの完全パスがクラスの完全名と同じになる、という点は変わらないので、当に任意の場所から読めるわけでもありません。 しかしデザイナに依頼してHTMLファイルを作ってもらって、それをそのまま使いたい場合に、仮に各ページにHTMLファイルの場所を書かなければいけなくなったとしても、任意の場所にあるHTMLファイルを使いたい!ページごとに細かく指定したい!ということ

  • 『JavaによるRESTfulシステム構築』読了 - 矢野勉のはてな日記

    Java, REST『JavaによるRESTfulシステム構築』を読み終わりました。オライリー様より献いただきました。ありがとうございます。JavaによるRESTfulシステム構築作者: Bill Burke,arton,菅野良二出版社/メーカー: オライリージャパン発売日: 2010/08/23メディア: 大型購入: 8人 クリック: 259回この商品を含むブログ (13件) を見るいろいろあって読む時間がとれなかったのですが、読み始めたら一気に読み終わってしまいました。あとid:Yoshioriが書のみどころをレビューしてくれているので、そちらも参照どうぞ。このは、RESTful Webサービスを開発するための標準Java API仕様として策定された、JAX-RSについての解説書です。JAX-RS仕様に基づいて作られた実装「RESTEasy」の開発者が書いています。このの冒頭

  • Twitter自動フォロープログラムをもっとScalaらしくしてみる - 矢野勉のはてな日記

    scala, twitter前回書いたプログラムはユーザ入力を受け取るところが非常にJavaっぽくてよろしくないので、書き直してみました。あと、コメント欄で、PredefにてreadLineというメソッドが定義されててコンソールの入力を受け取れると教えてもらったので、それも使った。こまごまと変更しているんですが、覚えてる範囲の変更点は次のような感じ BufferedReaderを使ったユーザ入力受け取りをPredefのreadLineに置き換え。変数の型指定が型推論で十分わかるときには型を書かないようにしてみた引数がない場合は()を省略するように変更JavaのString.format()を使っていたところを、"literal".format()に置き換え。文字列はWrappedStringにimplicitConversionされる、と。 主にcatchブロックでif文にて処理を分岐して

  • Twitterでフォローされているけどフォローしてない人をまとめてフォローするScalaプログラム - 矢野勉のはてな日記

    scala, twitterたまりまくって700くらいになったのでプログラムで処理することにした。実際には、この中にはすでにTwitter使ってない人もいると思われるので(あとスパムも)、来ならもっと精密に、直近10日くらいに発言があるかどうかとかチェックすべきかもしれないけど、そこまではやってない。あと、twitter4jが必要です。フォロー中の人から、もう発言してない人を見つけてアンフォローするスクリプトをid:Yoshioriが書いていた気がしたのだけど、ブログ検索してもみつからなかったのであとで探す。 あと、Scalaで書いたものの、ユーザ入力を処理するところがものすごくJavaっぽくてどうなんかな、と思ってます。まあこの部分はtwitter4jのサンプルそのまんまなんですけど。Streamを使うとかっこよく処理できるっぽいのですがまだ未調査です。だれか詳しい人教えてください…A

  • AirMac ExpressでRemoteが繋がらないとかAirDisplayがつながらないとき - 矢野勉のはてな日記

    最近、室内の無線を11nに移行するためにAirMac Expressを買った。それまではUFO型のやつを使ってました。ところがこのExpressが、無線だとまったく設定できない。「AirMacユーティリティ」でAirMacが認識されないから。結局LAN直接さして設定することで無理やり使ってましたが、なんか遅い…他にも せっかくAirTunesのためにExpressにしたのに、よくスピーカーから切断される。iPhoneからiTunesを制御する「Remote」がMacとつながらない 高い金出して買った、iPadを外部ディスプレイ化する「AirDisplay」がつながらない(なぜかMacを優先接続するとつながったりする)といった事象で悩んでました。 ディスカッションボードとか英語情報とかググりまくって、ついに解決しました。AirMac Expressの使用するチャンネルを「自動」ではなく、なに

  • Javaのラムダ式導入に関する最新提案の雑なまとめ - 矢野勉のはてな日記

    java7月頭に,Brian GoetzがJavaにおけるラムダ式導入に関する最新提案のドラフトを出しました。State of the Lambda 私はこの提案書と,提案書を元にした英語記事を読んだだけですが,Twitterで話していると,23日くらいにこの提案を元にしたソースがJavaのソースリポジトリにコミットされたらしい。ただし,中ではまだ議論続発してるらしい。ちなみに英語記事はラムダについての連続記事の4回目で,5回目ではWicketでラムダ式を使うとどうなるか,という考察が載っています。提案書のラムダ式とWicketの非整合部分についての考察で,Wicket好きの人は読んでみてもいいと思う。あと,空コンストラクタがないクラスについて提案書は明確なところ書いてないよね,みたいな指摘も。せっかくなんで,最新提案におけるラムダ式実装をまとめておきます。いままでのあらすじ最新提案書では