Android端末でassertを有効にする

以下のやりかたでできました (Android 4.1.1 GenyMotion)。わりと簡単にできるので、検証端末は常にenabledでよさそう。 adb shell setprop debug.assert 1 # enable assert adb shell setprop debug.assert 0 # disable assert

WEB+DB PRESS Vol.79のiOS7特集を読んだ

iOS7特集と題しつつも、iOSの一般的なことにも触れている。特に、実機へのインストールやPUSH通知についての説明がうれしい。全体的には、iOS開発のチュートリアルを何か一つ終えたあたりに読むと良さそうだ。ところで、特集内ではバックグラウンドスレッド…

android.dexOptions.preDexLibrariesを調べた

tips - Improving Build Server performance. : The Gradle based build system has a strong focus on incremental builds. One way it is doing this in doing pre-dexing on the dependencies of each modules, so that each gets turned into its own de…

Q. Gradle Wrapper (gradlew) はリポジトリにコミットするの?

短い答え:コミットする。長い答え:以下参照Chapter 61. The Gradle Wrapper The wrapper is something you should check into version control. By distributing the wrapper with your project, anyone can work with it without needing to install Grad…

android-sdk-managerで必要なSDKやビルドツールを自動インストール

https://github.com/JakeWharton/sdk-manager-plugin builtscriptのdependenciesと apply plugin: "android-sdk-manager" の二行だけで、インストールしたばかりのAndroid SDKしかない状態で ./gradlew assemble ができた。設定が必要ないのはうれしい。同種…

iOS quiz: 以下のdispatch_after()を使ったコードが1, 2, 3, 4という順で実行される理由を説明してください

NSLog(@"1"); dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)); // 1 sec. dispatch_after(delay, dispatch_get_main_queue(), ^{ NSLog(@"4"); }); dispatch_after(delay, dispatch_get_global_queue(DISPATCH_QUE…

iOSシミュレーターのログに色付けするios-simulator-logcatというツールを書いた

#potatotips 5でios-simulator-logcatを紹介しました。 https://github.com/gfx/ios-simulator-logcat Androidだと pidcat のようにいい感じに色を付けてくれるツールがあるのにiOS用だとない感じだったので作りました。コンソールにこだわることもないと思…

md2inaoのインストールが簡単になりました

Module::Installをつかっていたり、cartonをつかっていたり依存モジュールがPerl 5.18でコケたりしてPerler以外にとってインストールが難しい状態でしたが、このたび整理してCPANにリリースしました。これでPerler以外にとっても簡単にインストールできるよ…

iPhoneで証明書エラー(SSLエラー)が出るときは本体の時計がずれているかも

iOSアプリでいきなり「このサーバの証明書は無効です」というエラーになるときは、iPhoneの時計が過去になっているかどうか確かめてみるといいかもしれません。無理やり過去に設定すると再現します。Androidでも同じかどうかは未検証です。

Objective-Cでドット記法でメソッドを呼ぶ方法

[]でのメソッド呼び出しは悪くないのですが、メソッドチェインしたいときはどうしてもJavaとくらべて冗長なんですよね。でも工夫すればドット記法で任意のメソッドを呼ぶことができることに気づきました。こんな感じ。 // ... A *a = A.new; a.foo(42).bar(@…

Volleyを使うのがかなり簡単になってた

以前はAndroid Studioで使うのが面倒くさかった volley ですが、最近は簡単にdependenciesに追加できるようになりました。git submodule addしてsubprojectとして設定してdependenciesに加えるだけ。ハマりどころしては、volley/build.gradle に指定している…

Q. JavaのREPLってないの? A. あります!

GroovyはJavaの上位互換言語であり、インタラクティブシェルがあります。なので実質JavaのREPLとして使えます。 $ brew install groovy $ groovysh Groovy Shell (2.2.1, JVM: 1.7.0_45) Type 'help' or '\h' for help. -----------------------------------…

CodeModelでJavaのソースコードを生成する

この頃はgradleでAndroidのビルドを行うようになり、それに伴いJavaのソースコードをビルド時に生成する機会も増えてきたと思います。それでは、Javaのソースコードはどうやって生成するのがいいでしょうか。文字列結合も悪くないのですが、文法の妥当性を保…

Androidのランチャアイコンをデバッグビルド時にモノクロにする

DevFaviconのAndroidアプリ版です。GradleはJavaのフル機能を使えるので、ちょっとした画像処理ならビルド時にやってしまえるのです。また、gradle android pluginではbuild variantsという仕組みを利用してビルド設定ごとに異なるリソースを組み込むことが…

ListよりArrayListのほうが速いって本当?

結論:どちらも同じなので意味的に適切だと思う方を使ってよい発端は以下のツイートだ。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createEl…

Gradleの共通ルーチンをライブラリ化してテストもする

https://github.com/gfx/gradle-android-utils (see .travis.yml, build.gradle, test/test.gradle) Android Studioで開発していてGradleを書いていると共通ルーチンをライブラリ化したくなるわけですが、そうなると当然テストしたりCIしたりしたいですよね…

Android Studio projectをTravis-CIでビルドする

embarkmobile/android-maven-example を参考にしつつこんな感じでいけた。.travis.yml language: java jdk: oraclejdk7 before_install: # Install base Android SDK - sudo apt-get update -qq - sudo apt-get install -qq libstdc++6:i386 lib32z1 - expor…

Dart 1.0 を触ってみた。

Dart 1.0 がリリースされて、ECMAでの標準化作業が始まったようです。Chromium Blog: Ecma forms TC52 for Dart StandardizationDartはJavaScriptと比較してずっと使いやすいので、いずれ標準化されたDartが様々なブラウザで実行できるようになれば*1、JavaS…

JSX Advent Calendar 13th

JSX Advent Calendar 2013 13日目です。--test と test-case.jsxについて、公式ドキュメントを書きました。日本語での解説は以前書いてます。 Unit tests for JSX - Islands in the byte stream Enjoy!

Perlのbug report eco-systemはどのように素晴らしいのか

Perlのbug report eco-systemまわりはOSSとしてはわりと理想的だと思っています。つまり有用なレポートを生成する仕組みがあり、perlコア開発者だけでなくライブラリ開発者もその仕組を活用できるため、可搬性のあるソフトウェアとしてメンテナンスし続けや…

はぐれ学生だった話から飛んでグダグダ語る

はぐれ学生Advent Calendar 4日目の記事です。さて勢い余ってはぐれ学生Advent Calendarでも書いてみるかと宣言したものの、どういうテンションで書けばいいかよくわかってません。っていうかなんだこれ。まあ、昔話については過去のエントリを紹介するにと…

Perl XS を書くようになったきっかけ

THE INTERVIEWS がサービス終了ということで、一つだけ消えるには惜しいというか懐かしい記事があったので少し加筆修正して転載します。JHackers でも似たようなことを話してますね。 Perl XS を書くようになったきっかけ、また、どのようにして今のような X…

Macでgithub markdownのpreviewはsublime text 3がよさそう

Macでgithub markdownを楽に書くにかくのにどうしたらいいだろうと。Kobitoが使える状態ならKobitoでいいけど急に使おうとするとログインが面倒だし、vimやMauはgithub拡張に対応していないし、gistは日本語入力に難がある。とりあえず現状は sublime text3 …

chomp() は $/ に依存していると知れ!

perldocにあるように、chomp()の挙動は $/ に依存します。ということは、うっかり local $/ したスコープで chomp() を行うと、何もおきません。この結果起きる現象がきわめて不可解なので、readlineの直後以外の場面ではchomp()を使わず s/\r?\n\z//xms す…

ISUCON3 参加すれども スコアなし

ISUCON公式Blog チーム「潰すつもりで来てください」として参加しましたが、最終結果はfailでスコアはでませんでした。けっきょく私の書いたコードはすべてrevertしたので特に語ることはありません。実力不足の一言に付きます。ありがとうございました。

ISUCON用にltsvのaccess logをSQLで集計できるようなツールをつくった

最近 Treasure Data につっこんだアクセスログを Hive で集計するみたいなことをちょろっとやっているのですが、同じ感じでアクセスログもみたいなと思って「LTSVなaccess logをその場で立ち上げたmysqldに突っ込んでそのままmysqlクライアントを起動する」…

ISUCON用にNYTProf+Prefork PSGI serverのベストプラクティスをコマンドにまとめた

これが価値を発揮するような出題ではなかったので結局つかいませんでしたが。あとでCPANizeはするつもりです。てきとうなところで ^C でとめると結果を自動的に集計してreportをつくるところまでやってくれます。あくまでも開発用で、本番用ではありません。…

git bisect run はスクリプトファイル用意しなくてもいける

git bisect run で cd foo && prove ... としたいときに以下のようにしてもうまくいきません。 $ git bisect run 'cd foo && prove t/foo.t' .... /usr/local/Cellar/git/1.8.4.2/libexec/git-core/git-bisect: line 437: cd foo && prove t/foo.t: command …

visual_widthというgemを書いた

UnicodeのEast Asian Width (東アジアの文字幅)特性を扱うgemを書いた。CPANの Unicode::EastAsianWidth, Text::VisualWIdth::PP, Text::UnicodeTable::Simpleの機能をマージしたようなものになってる。文字特性のデータはUnicode仕様書から自動生成している…

Xslate 3.0.0 released!

This is an important release because it could break the existing code. https://metacpan.org/release/GFUJI/Text-Xslate-3.0.0 Includes a bug fix that has changed behavior: if you use a multi-byte string literal for a hash key like $hash["こ…