2012/05/22

FreeMind1.0.0Beta3用日本語ファイル保存パッチ

 

以前作成したFreeMind保存ファイルで日本語が読めるようにするパッチの1.0.0b3版です。

0.9.0で作成したパッチをそのまま1.0.0b3のソースに適用しただけで、まだあまり自分でも試していません…不具合等あればご連絡いただければと。

こちらからダウンロードできます

2012/05/13

いんきゅばす ver2.2.0 投稿者コメントのみ取得

 

ダウンロードはこちらから

 

こちらもコメント頂いていた件への対応です。

いんきゅばすv1では、取得時、通常のコメントと投稿者コメントが別ファイルになってしまっていたのを、v2では1ファイルに統合しています。

この際、どちらか一方だけ取得するという機能も捨ててしまっていたのですが、投稿者コメントのみ取得したいという要望を受けこれに対応しました。

「投コメのみ」というチェックボックスにチェックを付けることで機能します。

 

[追記]コンフィグ画面でデフォルト値を設定できるようにしたver2.2.1をリリースしています。

NicoBrowser ver0.12.0 ファイル名禁則文字対処方法変更

 

コメントで頂いていた不満点のうち、ファイル名の命名方式について修正を行いました。

簡単に言えば、ファイル名に使えない文字はNicoCache_nlと同じように変更されます。

この対応に伴って、GUI上での禁則文字変換設定を削除しました。

ダウンロードはこちらから

ipum ver0.5.1

携帯電話をGalaxy Nexusに変えて、最近は音楽を聴くのもiPod touchからこれにしています。

が、外部ストレージを使えない(これはiPod touchも同じですが)ことや、syncが遅いこともあり、少し不便でした。

そんなわけでGoogle Musicを昔使ってたipumと共用し始めたのですが、やっつけで作っていたこともあり不具合が多いです…

とりあえず常用できないような不具合を解消したver0.5.1をリリースしました。こちらからダウンロードできます

 

Android4.0でもデフォルトプレイヤがやはり音楽ファイルごとのアルバムアートに対応していないため、音楽ファイルごとにアルバム名を変え、別のアルバムとみなさせるという悪手を採っています。ですのでアルバム別の表示が本来の用途では使い物にならなくなる(楽曲単位で表示されるようになるため)ことに留意してください。

 

NicoBrowserの実行とipumの実行、この2度手間を将来何とかしたいですね。あと、ipumはおそらく今後、私のJavaFX学習用のプロダクトになります。

2012/05/06

facebook-android-sdkのSSOを無効化する

facebook-android-sdkを使用して開発したアプリを起動しログインしようとすると、その端末にFacebook公式アプリがインストールされている場合、Single-Sign-Onの認証画面に遷移するようになります。

が、どうもこのSSO昨日の挙動があやしいです。同じバイナリなのにGalaxy Sではinvalid_keyと言われ(公式ページこちらに記載されている設定は行っているのですが)、Galaxy NexusではThis method is deprecatedと言われ。何が正しいのかさっぱりわかりません。([追記]Galaxy Nexusの件はこれと同一で、Nexus特有の問題ですね。ということは、Galaxy Sの挙動が正しい?keyの登録間違えてるのかなあ?)

というわけで、SDKのSSOを無効化しました。Facebook.javaの200行目あたりをコメントアウトするだけです。これで常に公式Facebookアプリがインストールされていない状態、つまりWebViewベースのログイン画面が表示されるようになります。

FacebookのFeedページから削除しても消えない場合がある?

Feedページ、と呼ぶのか知らないのですが、 https://www.facebook.com/me のページで「削除...」(下図参照)を選択した場合でも、permalinkが残る場合があるようですね。条件は分からないですが…

cannot_delete

 

削除を行った場合、確かにこのFeedページやアクティビティページ https://www.facebook.com/me/allactivity から表示は無くなるのですが、上図で「2秒前」と表示しているリンク先の個別ページには依然として開ける状況が発生します。(個別ページには、アクティビティページの投稿時間リンクからも飛べます。)

今のところ、「~さんがリンクをシェアしました。」という投稿でのみ発生しているように見えます。また、正常に削除される場合もあるようですが条件は分かりません。

確実に削除したい場合は、個別ページの右上に表示されるxボタンを押して削除するのが良いように思われます。

冒頭の方法で削除した場合、確かに画面からは見えなくなるのですが、Graph APIからだと取得できるので、サードパーティ製アプリでFacebookを利用している人からは見えてしまう、かもしれません(未確認)。

 

上記のようなことが起こり得ることを知らずに大ハマりしました…

2012/04/29

facebook-android-sdkを使った認証がGalaxy Nexusではうまく動かない

エミュレータ上で開発していたときにはうまく動いていたのですが、Galaxy Nexusで動かそうとすると、ログイン時のID/passwordを入れた後にこんなメッセージが表示されるページにリダイレクトされ、アプリ認証が完了しませんでした。

API Error Code: 11
API Error Description: This method is deprecated
Error Message: Display=wap dialogs have been deprecated. You can temporarily enable them by disabling the "july_2012" migration.
They will stop working permanently on July 1,2012.

facebook-android-sdkでは、ログインや認証にWebViewを使っているようで、そのときのuser-agentはデフォルトブラウザのものになっている(はず)ので、それが原因かなあ、と。

ちなみにGalaxy Nexusのuser-agentは以下になります。

Mozilla/5.0 (Linux; U; Android 4.0.2; ja-jp; Galaxy Nexus Build/ICL53F) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

実際に、以下のURLにアクセスしてみたところ、Windowsにインストールしているブラウザ、それにAndroid上のGoogle Chrome Betaや、Galaxy Nexus以外のデフォルトブラウザではちゃんとページに遷移するのですが、Galaxy Nexusのデフォルトブラウザだけエラーページに飛ばされます。

https://m.facebook.com/dialog/permissions.request?_path=permissions.request&app_id=[**app_id**]&redirect_uri=fbconnect%3A%2F%2Fsuccess&display=touch&type=user_agent&perms=read_stream&fbconnect=1&from_login=1&client_id=[**client_id**]&refsrc=http%3A%2F%2Fm.facebook.com%2Flogin.php&refid=9&_rdr

 

user-agentに”Galaxy Nexus”という文字列が含まれているとこの問題が出るようですので、それを書き換えれば一時しのぎにはなります。例えばこんなかんじでしょうか

なお、facebookサービスはこれ以外の制御もuser-agentで行っているふうに見えますので、なるべくオリジナルのuser-agent文字列を保ったままにして、不具合の有る場合だけピンポイントで対処するのが良策かと思います。

[追記]公式Facebookアプリがインストールされている端末だと、facebook-android-sdkのコードからではなく、公式Facebookアプリを使用してログインしようとするようになり、そちらでこのエラーが発生してしまいます。従ってSSO無効化対応も行う必要があります。

 

それにしても、FacebookのAPIの説明など、日本語で解説されているサイトは情報が古いことが多いので、ちゃんと公式サイトを見た方が良いと1日やっただけでも感じました。ここで書いた情報もすぐに古くなることでしょう…

2012/04/28

OracleのJOINも遅い

でMySQLのJOINでparse時間が極端に長くなる例を上げましたが、同様の症状がOracle 11g R2でも発生しました。

 

MySQLのところで挙げた例では比較的JOINが長かったですが(定説としてはJOINは6回くらいまでに抑えた方が良いらしいですが、それから比べると大したことは無いですが)、今回は単純な2表のINNER JOINで発生しました。特徴として挙げられることと言えば、やや結合条件が多いのと、group byに指定した項目が多いくらいでしょうか。

 

先日参加してきたQCon Tokyo 2012でAmazon Web Servicesがプッシュされていたこともあり、せっかくなのでAmazon EC2上にOTN開発者ライセンスのEnterprise Editionをインストールして検証しようとしたのですが、再現しませんでした…

後から調べたところによると、どうやらバージョン12.2.0.3.0でしか発生しないようで、12.2.0.2.0や、私がインストールしたPSRの無い無償版(12.2.0.1.0)ではちゃんと短時間で返ってきます。

今回はプロダクトを変更する訳にもいかず(普通そうだと思いますが)、色々と試した結果、NO_QUERY_TRANSFORMATIONヒント句を付けることで、そこそこの時間に短縮されました(200秒以上が3秒程度)。

[追記]本事象が発生した時間は、AWRレポートの項目”Parse CPU to Parse Elapsed”パーセンテージがかなり低い(20-30%台)ということが共通する事項としてありました。

 

しかし、Oracleのサポート受けられる状況であればもう少し詳しく分かったのかもしれませんが、今回のところはこのような形で逃げました。

2011/10/25

FreeMindの.mmファイル文字化けを直す

 

ソースコードはこちら

 

正確には、文字化けではなく、日本語が数値文字参照(NCR; Numeric Character References)で表現されているのですが。

 

マインドマップのアプリを使用してみようと思い、FreeMindをインストールしてみました。

拡張子が.mmである保存ファイルのフォーマットはxmlライクでヒューマンフレンドリー…なはずなのですが、前述のとおり日本語を保存すると数値文字参照になってしまうため、メリットを享受できません。

そこで、日本語文字をUTF-8でそのまま保存できるように修正を行いました。

 

私自身の使用時間がまだ極めて短いことと、使用している機能は限られたものだけであるため、潜在的な問題を含んでいるかもしれません。導入される方は人柱の覚悟が必要でしょう。

導入方法は、インストールしたFreeMind ディレクトリにある lib/freemind.jar を単に上書きするだけです。

 

参考:

2011/10/14

Subversion1.7.0でのワーキングコピーは注意した方が良いのかも

昨日のエントリ

に絡んでリリースノートを読んでいたのですが、ワーキングコピーの記述箇所に

**警告**: SQLiteライブラリを通じてSQLiteにアクセスがある間に、SQLiteのファイルをコピーするのは安全ではありません。結果として、Subversionプロセスからアクセスされているワーキング・コピーの複製を作る事(tar, rsync, cpなどで)は、Subversion1.7ではサポートされません。それは壊れている可能性があります。(課題 #3596)

なんていう文面がありました。#3596というのは

ですね。ステータス上は解決済みということになっているようですが、おそらくこれはsvnadmin hotcopyコマンドでは問題は発生しない(はず)という意味で、ワーキングコピーに対する操作では依然問題が発生する、ということだと思います。

 

引用文中にある

Subversionプロセスからアクセスされているワーキング・コピーの複製を作る事(tar, rsync, cpなどで)は、Subversion1.7ではサポートされません。

というのはつまり、SVNがメタ情報を格納しているSQLiteファイルへのアクセス(writeに限らずreadであっても)中に該当ファイルコピーするとSQLiteファイルが壊れる可能性があるから止めろ、ということだと思います。

しかしTortoiseSVNなんかを使っていると、ユーザの意図しないタイミングでTortoiseSVNが該当ファイルへアクセスするような気がするのですが…そういう場合はコピーするな、ということなんでしょうかね。

2011/10/13

Subversion1.7.0でsvn revertの競合問題が解消されていた

svn revertを特定状況下で実行すると不具合が発生する問題について、以前のエントリ

で記載していました。

先日リリースされた1.7.0で同様の手順

  1. ユーザAが自分のワーキングコピーでファイル”file.txt”を削除します。(svn delete file.txt)
  2. その後、ユーザAはcommitを行わずに同名ファイルを追加します。(svn add file.txt)
  3. ユーザAは上記をコミットします。(svn commit file.txt)
  4. 一方、ユーザBは自分のワーキングコピーでfile.txtを編集します。
  5. その後、commit前に更新を行おうとします(svn update)

を試してみたところ、ユーザBのワーキングコピーで正しくファイルがrevertされるようになっていました。

3334:Tree conflict merry-go-round on update/switchのステータスも解決済みになっています。

 

上記のレポートでは、この問題の修正にはWC-NG(次世代ワーキングコピー)が寄与していると書かれています。これはクライアントサイドの機能ですので、SVNサーバが1.7未満のままであっても、SVNクライアントをアップグレードすれば問題は解消されると思われます。

なお、リリースノート(日本語訳)によると、

1.6のワーキング・コピーは、1.7では使えず、1.7のフォーマットに自動的にアップグレードされません。

ユーザはメタデータを新フォーマットにアップグレードするコマンド"svn upgrade"の実行を求められます。

とのことですので、既存のワーキングコピーを引き続き使用したい場合には若干手続きが必要なようです。

2011/09/17

いんきゅばす ver2.0.0 GUIの刷新、マルチタスク対応

 

ダウンロードはこちらから

いんきゅばすver2.0.0をリリースしました(内部的な表記はベータバージョン(2.b.0)になっていますが)。久しぶりにLinux版も更新し、機能的にはWIN版/Linux版で同期が取れています。

 

変更点は前回記載した通りなので記述が重複するのですが、ver.1.7.xからの主な変更点は以下の通りです。

  • GUIの大幅な見直し
  • マルチタスク
    • 内部のタスクを分割し、ダウンロード処理と変換処理が並行動作できるようになりました

動作環境はver1.xと異なり、Java7が必須になります(ver1.xはJava6です)。

 

今後、ver1.xはバグフィックスのみとし、新しい機能はこのver2.xに追加していくことになると思います。次バージョンのcoroid-serverもこのver2.xをベースにすることになると考えます。

2011/09/14

slf4jへのマイグレーション(SLF4J Migrator)

 

自分の作成しているプロダクト、作成時期によって使用しているloggingライブラリがバラバラなので、そろそろ統一したいなあ、と考えていたところ、SLF4J Migratorなるものがあることに気付きました。

早速使用してみたのですが、変換対象の.javaファイルの文字コード、改行コードともシステムデフォルトであるとみなして処理するため、Windows上でUTF-8/LFなファイルを対象に実行すると悲惨な結果になってしまいました。

file.encodingline.separatorを指定してやればよいのですが、file.encodingについては-Dfile.encoding=”UTF-8”で良いもののの、コマンドラインでline.separatorを指定する方法が分かりませんでした。bashでは下記リンク先のようにできるそうですが…

 

そんなわけで、GUIでエンコーディングと改行コードを指定できるように変更した.jarを作成しました。ダウンロードは以下のリンクから。

slf4jmigrator

 

ソースは以下になります。

 

…ところでMacの改行コードって今も\rなんですかね…?

2011/09/13

久しぶりのffmpegビルド

久しぶりにffmpeg/avconvのビルドを行ってみました。時間がかかったのでちゃんと動くのか試すのはまた後日ですが…

ビルドに当たってはこちらのサイト(2011.09.07更新)を参考にさせて頂きました。

少しハマったところがあったのでメモしておきます。(ちなみに私はlinux向けビルドなので、完全に同じ手順ではないです。)

 

1点目。libvpxのダウンロード先ですが、

  • git clone git://review.webmproject.org/libvpx.git libvpx
  • git clone git://repo.or.cz/libvpx.git libvpx

双方つながりませんでした…前者は公式のリポジトリなのですが最近ずっと不安定らしく、http://code.google.com/p/webm/downloads/list から落としてきました。

参考:

 

2点目。openjpeg_v1_4_sources_r697.tgzをビルドしようとすると、

‘Z_BEST_COMPRESSION’ undeclared (first use in this function)

というようなエラーで失敗してしまいました。これはSVNリポジトリから最新バージョンのコードをとってきて対処しました。しかしlibtiffを認識してくれず、ちゃんとはビルドできず仕舞いです…(libtiffもtiff-3.9.5.tar.gzから4のβではpkg_configを使うようになっていたり、変更点があるようです)

参考:

 

3点目。libschroedinger-1.0のインクルードファイルが、冒頭リンク先では $INC/schroedinger にインストールされる想定ですが、私が同手順でインストールしたところ $INC/libschroedinger-1.0/schroedinger になっていました。これは一時的にシンボリックリンクを張って対応しました。

2011/09/03

いんきゅばすver2 コンセプト

いんきゅばす派生元(つまり本家)であるさきゅばすもついに更新再開されたようです。元々にちゃんねるの該当スレッドでニコニコ動画サービスの現行仕様への対応を行われていた方がプロジェクトに参画された、という理解で良いんでしょうかね?

また、現行仕様への対応だけではなく、従来のバージョンに対して新しい機能も追加されているようです(以前記載したcookie共有の件も時期的に考えてさきゅばすといんきゅばす両方使用してらっしゃる方からでしょうか)。いんきゅばすはさきゅばすの上位互換です、というように書いて来ましたが、この文言消しておかないといけないですね…

 

さて、いんきゅばすの話です。

やろうやろうと考えていて中々できなかったこと全2個中の2個目もやっと目処がついてきました。目標としては

  • 疎結合
  • シンプル化

の実現、ということになります。

処理の並行化やコマンドラインからの実行機能の充実を考えたとき、現行のものではGUIの部分とタスクの部分の結びつきが強すぎて変更を加えるのが大変、というのが1点目で解消したい事です。

2点目は、ちょっと建て増ししすぎてインタフェースがわかりづらくなってしまった部分をどうにかしたいのと、不要な機能はこの機会に削ってスリム化してしまおうというのが魂胆です。スリム化については貧乏性が災いして、まだ全然うまくいっているようには感じられませんが…

 

いんきゅばすver1.xに対する使用者からみた主なメリットは以下のようになります。

  • マルチタスク化の実現
    • ver1では1画面につき1コンテンツを逐次処理する形ですが、ver2では複数コンテンツを登録し、並行処理させることができます。
  • ローカルファイル指定の簡易化
    • ローカルファイルを対象に処理する場合、入力した文字列(ver2.0の時点では動画IDに限る予定)から対象の動画ファイル、コメントファイルが予測され、自動入されるようになります。

機能についての詳細説明は、正式版リリースの際にまた行いたいと思います。

ちなみに画面はこんな感じです。(クリックで拡大)

inqubus2

 

一応動作するファイルもありますが、実行する場合は以下の点に注意してください。

  • まだ常用できる品質には達していないと思いますので、「どんなものか見てみる」程度を目的としてください。
  • いんきゅばす1.7.xからの差分ファイルになります。ただし今使用しているディレクトリにそのまま上書きしてしまうと1.7.xに戻れなくなってしまうので別環境を用意してから試してください。
  • 問題を見つけられた方はバグ登録していただけるとありがたいです。
  • Windows/Java7必須です。
  • Saccubus.exeから実行できない場合はdebug.batから起動してみてください。

今の時点ではこれ以上の実行準備に関する説明はご容赦を。

java.comからはまだJava7は入手できないようです。ここから入手できるようになるくらいにはver2.0.0リリースしたいですね。

というわけでいんきゅばすver2 alpha版ダウンロードはこちらから

«NetBeansから実行するとNimbusのJTable中に表示させたJProgressBarに文字列が表示されない

ソフトウェアエンジニアとして影響を受けた書籍

  • Christain Bauer: HIBERNATE イン アクション

    Christain Bauer: HIBERNATE イン アクション
    理論と実践が双方とも素晴らしい製品であるHibernate。本書はそのプロダクトを書名に冠していますが、Hibernateを使うつもりがなく、ORマッピングの解説書として読むにしても十分な良書です。Second EditionとしてJava Persistence With Hibernateという書籍も出版されていますが、残念ながら現在のところ 和訳はされていません。-インアクションは2.xの、Java Persistence-は3.1の頃のものなので、最新版とはちょっと違うところもあることに注意。 (★★★★★)

  • アンドリュー・S・タネンバウム: 分散システム 原理とパラダイム 第2版

    アンドリュー・S・タネンバウム: 分散システム 原理とパラダイム 第2版
    クライアント/サーバシステムを構築する上で必要となる知識が総論されてます。Web技術者も、フレームワーク部分を開発するのであれば必読。 (★★★★★)

  • Joel Spolsky∥著: ジョエル・オン・ソフトウェア

    Joel Spolsky∥著: ジョエル・オン・ソフトウェア
    前述の書籍「ソフトウエア開発プロフェッショナル」をより砕いたもの、という感じでしょうか。 前書きではプログラマでなくSE向けの本のように書かれているが、プログラマが読んでも面白い本であると思われます。 SEになった新人(あるいはそういう会社に入る/入りたての人)にとっては、これからどういったことが仕事を遂行していく上で起こりえるのか、どのように考えて行なっていけばいいのか決定する助けになると思います。 元は″Joel on Software″というブログの記事で、web上でも一部日本語で読めます。 http://japanese.joelonsoftware.com/ (★★★)

  • ドナルド・C・ゴース,ジェラルド・M・ワインバーグ: ライト、ついてますか

    ドナルド・C・ゴース,ジェラルド・M・ワインバーグ: ライト、ついてますか
    問題解決(一昔前のの流行語で言うところの『ソリューション』)能力は、システムエンジニアのスキルとして備えるべきもののうちのひとつです。しかし、これは難しい。学校で出されるテストと違い、唯一の、(問題提出者が想定している)解を求めるだけが「問題解決」では無いからです。そもそも、何が問題なのか、それは本当に問題なのか、それは本当に解決すべき問題なのか、その問題解決方法は正しいのか、などを解決しなければ、「その解は正しいのか」に辿りつくことができません。この本の最も良いところのひとつは、本があまり厚くないこと。すぐに読めるし、何回も読み返す気になるでしょう。 (★★★★★)

  • スティーブ・マコネル: ソフトウエア開発プロフェッショナル

    スティーブ・マコネル: ソフトウエア開発プロフェッショナル
    コードコンプリートで有名なスティーブマコネルの著書。新人SEに読んで欲しい。個人として業界の中でどうあるべきか、組織としてどうあるべきか、SEのプロ意識とは?SEの心構え概論、といったところでしょうか。また、業界における資格の重要性についても説かれています。この業界では資格が特に軽んじられる傾向がありますが、この傾向はどんな弊害をもたらすのか、将来的にこの業界は資格に対してどのような姿勢で臨んでいくべきなのか。日経BP社では(他の出版社もだが)最近、似たような類いのあまり面白くない書籍が乱出版されていますが、この本は別格だと思うので安心して購入して欲しいと思います。 (★★★★★)

.

無料ブログはココログ