プログラム

okhttpのCacheControl.Builder.maxStale()

okhttpのCacheControl.Builder.maxStale()の挙動を勘違いしてた。たとえばこんなコードを書いたとする。 val CACHE_CONTROL = CacheControl.Builder() .maxAge(5, TimeUnit.MINUTES) .maxStale( Integer.MAX_VALUE, TimeUnit.SECONDS) .build() val call = o…

KotlinのCoroutineScopeのメモ

やっとexperimental が外れたのでボチボチ使っていきたい。https://github.com/Kotlin/kotlinx.coroutines/blob/master/coroutines-guide.md や http://kotlinlang.org/docs/reference/coroutines/exception-handling.html を読みながら理解しようとしたが、…

Subway Tooter

Subway Tooter https://play.google.com/store/apps/details?id=jp.juggler.subwaytooterAndroid用のMastodonクライアントアプリです。 2017年4月23日に Playストアで公開しました。 (某所の「アプリを最速でリリースした話」よりさらに早い&速い) 当時の痕…

java.net.PlainSocketImpl.finalize() timed out after 10 seconds

java.util.concurrent.TimeoutException: java.net.PlainSocketImpl.finalize() timed out after 10 seconds at libcore.io.Posix.close(Native Method) at libcore.io.BlockGuardOs.close( BlockGuardOs.java:101) at libcore.io.IoBridge.closeAndSignalBl…

back stack を保持したまま現在のfragmentを入れ替える

素直に入れ替えると「back stackに記録された最後のフラグメントとcontainerに現在保持されているフラグメントがマッチしない」という問題が発生します。back stack の内容を書き換えるのは難易度が高いので、別の対応を考えてみましょう。 back stack をpop…

Androidの通知アイコン

2.3から5.0までの端末で表示確認を行ってみました。 画像が多いので別ページで http://juggler.jp/tateisu/android/notification_looks/

Windows Phone アプリのUIレイアウトXAMLから文字列リソースを参照する

普通アプリを書く時は端末の言語設定によってテキストリソースを切り替えられるようにする訳ですが、Windows Phone 7.1 SDK でそれをやるのに多少苦労したのでメモしておきます。もっといい方法を御存知の方は是非教えて下さい。

SharedPreferences と MODE_MULTI_PROCESS がイマイチよろしくない件

運悪くAndroidで複数プロセスのアプリを作ったり、アプリ間で SharedPreferences を相互参照するハメになってしまった場合に役に立つ…いや、たぶん立たないメモ。 Context#MODE_MULTI_PROCESS フラグはどのように使われているか このフラグはContext#getShar…

Androidアプリからのファイルパーミッションの制御

アプリ間のファイルアクセスの許可/禁止には unix のファイルパーミッションの仕組みが使われています。 ファイルパーミッション - Wikipedia Androidではアプリごとにuidとgidが割り当てられていて、パーミッションのうち、otherのread,write,execute ビッ…

Androidアプリがどうデータベースを取り扱うか

端末にデータを保存するアプリを4日くらい書いてたので、その時に調べたことのメモ。 あ、書いてたアプリはこれです。 https://market.android.com/details?id=jp.juggler.SubwayTweeter 基本的な構造 SQLiteOpenHelper ↓生成 SQLiteDatabase ↓生成 SQLiteCu…

Android 3.0の壁紙について

Android 3.0のHomeは壁紙の扱いがかなり変わった。 手元にある端末だと 画面サイズは1280x768なのに、壁紙マネージャの要望するサイズ1920x1408だ。 でかすぎるだろ… 実際に表示されるのはおおむね中央部分だけで、残りの一部はAppDrawrや追加ボタンを押した…

Android の Application task の、 Activity stack に関する怪現象

開発中に起きた出来事。発生した端末はXperia。 再起動してアプリをインストールし直したら発症しなくなったので、原因は分からず。 アプリの構造 このアプリは起動したら画面Aが表示されて、暫く待つと自動的に画面Bに移る。 ここで Home keyを押すと、A->B…

Android の java.net.HttpURLConnection

Android SDKで使えるHTTPクライアントクラスについて、gitから取ってきたソースを見つつその挙動を調べてみる。賞味期限の短い記事だと思うので、利用には注意してほしい。Android SDKで使えるHTTPクライアントクラスは三つある。 java.net.HttpURLConnectio…

apkファイルに含まれたAndroidManifest.xmlのデコード

androidのアプリケーションパッケージであるapkファイルを適当なアプリでSDカードにバックアップした後、そのzipされてる中にある AndroidManifest.xml を読むことになったのでメモしておきます。xmlなんですがバイナリにエンコードされています。 文字列テ…

Androidアプリの間違った作り方

とある外注さんが書いてきたコードがひどかった。 バックグラウンドでのオーディオ再生を、Activityから作成したワーカースレッドで行う。キャンセル処理は全く考慮していない。 UIスレッド上でばんばんHTTPリクエストを投げる。応答を読み終わるまでループ…

DBD::SQLiteのトランザクション

perlで、DBIからDBD::SQLiteを使う場合のトランザクションの扱いについて。 トランザクションの開始 AutoCommit属性やbegin_workメソッドを使うと、その後のinsert,update等で database is locked(5) at dbdimp.c が出てステートメントの実行に失敗してしま…

ドラッグドロップ

WPFのドラッグドロップ処理。まだよく分かっていないけどこんな感じ? DataObjectを受け取る側はDragOverとDropを実装する。送る側はDragDrop.DoDragDropを呼び出す。 DataObjectを使わないドラッグ操作は自前で(Preview)MouseDown,(Preview)MouseMove,(Prev…

スタイルとコントロールテンプレート

WPFのUIで、コントロールテンプレートやスタイルを変更してみる。 描画にDirect3Dが使われてしまうのがちょっと困るかな。11/20 統一感を意識して更にコントロールテンプレートを編集してみる。 Pathの描画品質が良くない…?

perl用のテンプレートエンジン

既存のだとunicode関係やエスケープの自動化がよく分からなかったので、さくっと書いてみる。 http://tate.juggler.jp/Text-Template-Compact/(2008年11月7日) その後CPANで同種のモジュールを捜してみたら60近くあった。知名度でいうとTemplate::ToolkitかH…

perlで変数の型を調べる

変数がリファレンスである場合に参照先が配列かハッシュか調べる。 blessが絡むとrefだけでもscalarだけでもダメらしい。 sub getDataType($){ return if not ref $_[0]; # return null if not reference type. $_[0]=~/(\w+)\(/; # use scalar to void effe…

javaを書いて時間を潰した

ひさしぶりにJava、といってもWebアプリを書く気はなくて、Swingアプリのお話。Windows APIやWindows.FormsでUIを書くとコントロール階層で透過の扱いがヘボくて萎えるのだけど、JavaのAWT,Swingはダブルバッファリングがちゃんとしてるので見た目重視のアプ…

ircd 2.11.2

ircd 2.11.2p1 http://web.irc.org/mla/ircd-users/2008/msg00006.html jpパッチは上流に取り込まれたようだ。2.11系の新機能 http://ircnet.irchelp.org/211.html あとニックネームの長さも15文字までになっていたような気がする。

c#のenumとgenerics

c#のenumとgenericsの相性が激しく悪い。 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { class TestEnumGenerics{ static N toInt<T, N>( T value ) { return (N) Convert.ChangeType( value, typeof(</t,>…

MS.NetのPlatform Invoke でしょんぼり

GetDelegateForFunctionPoiter と GetFunctionPointerForDelegate でマーシャリングの挙動が違うんだな。NativeからManagedの関数をGetDelegateForFunctionPoiter 経由でコールする時に、Delegate型を delegate void dg_ByteArray( [MarshalAs( UnmanagedTyp…

Flash Playerの生ソケットのセキュリティポリシーが変わった

Flash Player の 9.0.124.0 で生Socket用のcrossdomainポリシーの伝達方法が変わってしまいました。 http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.htmlいままではWebのドキュメントルートに /crossdomain.xml を置くだけでよかっ…

SpiderMonkeyで遊んでみた

おまけ Mozillaプロダクツで使われているJavaScriptエンジン SpiderMonkey の 1.7.0 をWindowsのStaticライブラリでビルドできるように軽くいじってみました。 http://cid-8d91961e6d878ff6.skydrive.live.com/self.aspx/scripts/SpiderMonkey-1.7.0-Win32St…

Visual Studio 2008 Standard Edition

PCのOSを新しくしたついでに開発環境も新しくしてみた。 Visual Studioのアップグレード版はExpress版からでも可能だし、まっさらなPCにインストールしても全く問題ない。 私の場合は複数のプログラム言語を使うのでExpressでは駄目なので、StandardかProfes…

LimeChatがJScriptを組み込んだらしい

http://d.hatena.ne.jp/Psychs/20080503/1209829824 LimeChatがJScriptを組み込んだらしい。 ヘルプを見ると思ったより丁寧にIRCクライアント内部の情報にアクセスできてるような感じ。setIntervalもあるし、会話系のbotを書くには不自由しなさそうな気はす…

Interlocked* API と File Mapping

仕事で、Windows上でプロセス間通信を書くことになった。プロセス間の同期にはEventかMutexを使うものだと思っていたんだけど、wikipedia:Mutexを見るとMetered Sectionの方が速いと書いてあった。そんなAPIはないので何だろうと思っていたらMSDNの記事 A Qu…

Blogger Data APIの続き

mixiに置いていた日記を移行しようとしてスクリプトを書いてみたら、なんだかサーバ側であぼーんされてる感じ。うーん、Bloggerはインポートが必要な場合にはうまくないのかな。 PicasaのAPIは問題なく動いていたので、Blogger以外のサービスを使ったほうが…