Kengo's blog

Technical articles about original projects, JVM, Static Analysis and TypeScript.

プログラミング

TLを読み込んでRTの件数を数える

twitter4jを使ってTLを読み込み、RT(もしくはQT)の件数を数えるプログラム。TLに表れるPOSTがRTまたはQTである確率分布を求めるために作成しました。 twitter4jのStatusクラスにもisRetweetメソッドが用意されていますが、判定条件がわからないことと明ら…

非staticな内部クラスが持つ暗黙的な参照

Effective Java 第2版 (The Java Series)の項目22で言及されているように、原則として内部クラスはstaticにすることが推奨されます。主な理由は、staticでない内部クラスが暗黙的にエンクロージングクラス(トップレベルクラス)のインスタンスを参照するた…

Listを直接変更してもIteratorがConcurrentModificationExceptionをスローしない件

容量拡張コストの低いArrayListの実装中に見つけた、AbstractListが持つ既知の不具合についてまとめておきます。 不具合概要 ArrayListなどの同期化されないListの実装に対してIterator利用中に要素を変更すると、ConcurrentModificationExceptionをスローす…

Twitterユーザの特徴を掴めるかもしれないブックマークレット

私はTwitterで新しく見かけたユーザをフォローするかどうかを考えるとき、過去の発言をある程度読んで傾向を見るようにしています。ただTLの流速が早かったりReplyが飛び交っていたりして傾向が掴みにくい(たくさん読まなければならない)ことも多かったた…

同期化のパフォーマンス計測

シルバーウィークのまとまった時間を利用して、同期化のパフォーマンスについて調査。どのように遅いのか・なぜ遅いのかを追いましたが、詳細な内部実装はJVM仮想マシン仕様書にも記載されておらず「なぜ」まではわかりませんでした。 中途半端な内容になり…

Seasarカンファレンス私的メモ

昨日Seasar Conference 2009 Autumnへお邪魔しました。私はSaesarに明るくないので聞いてばかりでしたが、実際のケースに照らし合わせた具体的な質問をしていらっしゃる方も多く積極的な交流の場となっている印象も受けました。 とりあえず感じたことや考え…

DOSバッチとRで拡張子ごとにファイルサイズを集計する

Rのキャッチアップ第2弾。指定したディレクトリ以下に保存されているすべてのファイルに対してファイルサイズを調べ、拡張子ごとに合計を取得してグラフ化します。私の環境では以下のような結果となりました。以前ダウンロードしたXenServerのISOとEclipseプ…

Twitter4JとRで最近Tweetしたユーザーを調べる

Rのキャッチアップのために「直近の100Tweetsを投稿したユーザーを調べる」プログラムを作成しました。最初は「自身の投稿を曜日を横軸・時間を縦軸にプロットする」プログラムを組もうと思ったのですが、Twitter APIを利用するためのJavaライブラリ(Twitte…

Java6のFileInputStream#close()はいつIOExceptionを投げる?

Javaにおける例外の扱い方*1に関して考える上で必要になったため調べたものの、さほど有用な情報は得られませんでした。JDK6のソースコードも読みましたが結局はnativeメソッドに行き着くのであまり効果なし、残念です。現時点では以下の状況下で発生すると…

TopCoderの記録をつけ始めました

できれば1日1回を目標に、TopCoder(SRM)の過去問に挑戦したいと考えています。 今回は控えるのを忘れてしまいましたが、次回以降はスコアも併記するようにします。 TopCoder戦記 - TopCoder部

プロになって1年間で変わった3つの意識

プロの研究開発者になって丸1年で何が変わったのだろうと振り返ってみました。 1年前に比べると技術理解や知識量も変化・向上しているのですが、やはり最も変わったのは開発に対する意識であると思います。中でも大きかった3つの意識をピックアップしてここ…

Pythonキャッチアップ記録

GW中はひたすらPython(CPython)のキャッチアップをしていました。 有名企業で利用されているだけのことはあり、高い生産性と自由度を兼ね備えた軽量言語であることを実感できました。実行速度が充分高速ならば業務でも利用してみたいと思わせる言語です。 私…

FileDocumentProvider継承時の注意

前回発生した「メニューバーからファイルを開くとエラーになる」の原因を調べていました。結論としては、FileDocumentProviderを継承しただけではワークスペース外のファイルを扱えないようです。 DocumentProvider#createDocumentの実装がポイント 今回の実…

HSP編集用Eclipseプラグイン試作

Eclipseプラグイン学習の一環として、HSPスクリプトを色分けするプラグインを作成しました。コメントと文字列を色分けするだけですが、スキャナやトークンなどエディタ用プラグインを作成ための基礎知識を身につけられたと思います。ほぼサンプルコードと変…

DBMSの仕組みを知る

私がSQLiteを使うようになってからそろそろ2年が経つでしょうか。MySQLやOracleなど他のDBMSも経験し、DBMSの概要やSQLの書き方、JDBCの使い方などについては座学・実践共にそこそこ蓄積ができてきたと感じています。 しかしDBMS自体の理解は乏しく、ブラッ…

S2Daoを試す

とりあえずDBに登録されているすべてのフォントを取得して表示するプログラムを作成。jdbcドライバを直接使わないこととSQLを書かないことで、かなり効率よくプログラムを記述できることを実感しました。POJOだけを使用しているため、ウェブページを実装せず…

CodeReposのコミッタにしていただきました

今後雑多なスクリプトや公開予定サービスのコードなどをCodeReposを利用して公開してことを考えています。 手違いなどが無いように努めますので、どうぞよろしくお願いいたします。

キャメルケース表記を正規表現でアンダースコア区切り表記に変換

Javaでキャメルケース表記をスネークケース(アンダースコア区切り)表記に変換するには、そしてその逆に変換するにはどうすればいいか?という話。 RoRのcamelizeやunderscoreに近いのでinflector.rbを移植するのが間違いなく速く正確だろうと思いつつも、…

テキスト変換Webサービス概要

先週作成したテキスト変換ツールについて、その概要を簡単にまとめておきます。 このツールの目的は「かなフォントの入力を支援する」ことにあります。似ている既存ツールとしてはMac向けに「カナブン」というツールがあるようです。さすがはデザイナーに愛…

書きたかったプログラムが書けた

1・2年前から作りたいと思っていたサーバサイドのプログラム*1があったのですが、この週末に試してみたところDBを含めてほんの2時間弱で実装することができました。うれしく思うと同時に、仕事によるプログラミング学習の速度の高さに驚いています。もちろん…

仕事としてつきあうバグ

私はいままでバグに対して深く考察する機会を持ったことはありませんでした。なぜならプログラムの製作者も利用者も自分だったため、気にかける必要性はまったくなかったのです。 経験を振り返ると、むしろバグによって学べることが多かったと言えます。どう…

メモ:Class・Method・ClassLoaderのソースコードを読む

JVM寄りすぎるためにJavaのコードを追うだけでは得られる情報は限られてしまうようですが、代わりに新しいメソッドや修飾子に関する情報を得ることができました。 native修飾子を利用することで、他言語で実装されたメソッドを呼べる。 Methodクラスを利用す…

Java2試験問題集 解答終了

2週間前から取り組んでいた問題集を解き終えました。Javaの体系的な理解を目的にしていましたが、特にストリームやジェネリックスについて理解することができました。 Sun Certified Programmer for the Java2 Exam(310‐035) (Sunテキスト)作者: 原一郎,滝沢…

StringBuilderのソースコードを読む

Javaで文字列(Stringクラスのインスタンス)を連結させる時は+演算子でもconcatでもなくStringBuilderやStringBufferクラスを使え!とよく言われます。その理由やStringBuilderクラス自身を理解するために、JDKのソースコードを読んでみました。*1その結果…

Javaのforループ

仕事なのだから基本的なことを体系的に理解しないとまずい!という話になり、現在Javaについて基礎から勉強しなおしています。恥ずかしいことにこうした勉強をするまで、Errorクラスの存在を知りませんでした。何でもかんでも例外扱いなのではなかったのです…

MVillageヘッダファイル作成

Footy2に引き続き、MusicVillageをHSP3から利用するためのヘッダファイル(ヘルプデータ付き)を作成、公開しました。公開許可をくださったドリームROMさんに感謝! MusicVillage - HSP開発wiki MIDIを繋ぎ目なしにループできるのは、ゲーム作成においてとて…

Rails動作確認成功

前回までのあらすじ Ruby・RubyGems・Railsをインストールして簡単なWebサービスを作成したものの、MySQLとの接続に失敗。原因がよく分からないため、Rubyのインストールからやり直してみることを計画。 エラー原因の調査 RubyGemsとRailsおよびMySQLをイン…

好きだから愛する(プログラミングを)

確かに、プログラミングは手段としても目的としても悪くないものだと思います。だから仕事としてプログラミングをする そこまではわかります。しかし、それならわたしのようにアマチュアプログラマでもいいし、さらにいえばわたしみたいにアマチュアプログラ…

Railsでコケた

今日も2時間ほど取り組んでみましたが、MySQLへの接続ができず続行不可能に。 2回やりなおしても動かなかったので、明日はRubyのインストールからやりなおしてみます。

Rails着手

今月も半分終わりましたが、未だに疑問関連の記事を書けないままです。仕事をしているとどうしても仕事に関係する疑問が多くなってしまうために、ブログに書けないことが多くなってしまうようです。 さて仕事に必要なキャッチアップが一巡したので、久々に趣…