https://github.com/gfx/swift-words WEB+DBのSwift特集を書くときに訳語を決める必要があったので作ったものです。順次改定しているので必ずしも特集記事と一致しているわけではないですが、今後日本語でSwiftの記事を書くときはこれに従うつもりです。
curl -L https://raw.githubusercontent.com/android/platform_development/master/ide/intellij/codestyles/AndroidStyle.xml > ~/Library/Preferences/AndroidStudioPreview/codestyles/AndroidStyle.xml これでAndroidStyleを使えるようになる。XMLのインデントがAndroid Studio標準より深かったり、コードの幅が狭かったりして個人的にはそんなに好きなスタイルではないものの、まあこれも時代の趨勢かと思って使うことにした。
三行まとめ JavassistはJavaのクラスファイル(バイトコード)を操作するライブラリ バイトコード注入をJava風の構文で行えるのが特徴 Androidでも、Gradleに仕込みをすることでJavassistを使うことができる 詳細 Gradleはビルドプロセスのカスタマイズがしやすい。たとえば、クラスファイルを生成したあと、dexファイルにコンパイルする前にクラスファイルを編集するということも簡単にできる。これをJavassistでやってみた。 まず、project rootに buldSrc/ をつくり、それをビルドスクリプトのプロジェクトとする。 buildSrc/build.gradleで、buildSrc/ がGradle pluginであることと、javassistを使用することを宣言する。 apply plugin: 'groovy' repositories { &
#potatotips 5でios-simulator-logcatを紹介しました。 https://github.com/gfx/ios-simulator-logcat Androidだと pidcat のようにいい感じに色を付けてくれるツールがあるのにiOS用だとない感じだったので作りました。コンソールにこだわることもないと思ってブラウザで見るツールにしてます。 色もそうですが、XcodeやAppCodeのログコンソールだと一つのアプリしか見えないのが難点で、url schemeで行き来するようなもののログを追うことが難しかったりしたので、これで少し楽になればなと思います。 htmlcatgo がベースなのでgoコンパイラがあれば導入は簡単なはず。goのlogcat serverは単にどんどんブラウザにログを送るだけで、template/main.html が実際のログの整形などをし
結論:どちらも同じなので意味的に適切だと思う方を使ってよい 発端は以下のツイートだ。 たしかに、公式ドキュメントには以下のように書いてある。 On devices without a JIT, it is true that invoking methods via a variable with an exact type rather than an interface is slightly more efficient. (So, for example, it was cheaper to invoke methods on a HashMap map than a Map map, even though in both cases the map was a HashMap.) It was not the case that this was 2x slower; the
THE INTERVIEWS がサービス終了ということで、一つだけ消えるには惜しいというか懐かしい記事があったので少し加筆修正して転載します。JHackers でも似たようなことを話してますね。 Perl XS を書くようになったきっかけ、また、どのようにして今のような XS マジシャンになったのか。そのあたりの事をお聞かせください 2000年頃の話です。ぼくはCGIスクリプトでちょっとしたゲームデータの集計サイトをやりたくてプログラミングを覚えたのでした。これがそこそこ重い処理で、次第にもっと高速にしたいと考えるようになりました。一方、当時ぼくはお金もなくVPSも一般的でなかったので、CGIスクリプトしか選択肢はありません。そこで初心者ながらいろいろ調べることにしました。 とりかかったのは行指向のテキストで保存していたデータをSQLiteにすることでした。しかし当時はWindows上で開
Perlのbug report eco-systemまわりはOSSとしてはわりと理想的だと思っています。つまり有用なレポートを生成する仕組みがあり、perlコア開発者だけでなくライブラリ開発者もその仕組を活用できるため、可搬性のあるソフトウェアとしてメンテナンスし続けやすいのです。もっとこのあたりはもっと真似されるべき。 まずバグレポートには現象と再現手順と環境の情報が必須ですが、環境の情報は perl -V で非常に簡単に取得できます。これは以下の情報を含みます。 ソフトウェアの名前とバージョン (e.g. perl 5.18.1) ターゲットプラットフォーム (e.g. osname=darwin, osvers=12.4.0, archname=darwin-2level) ビルドオプション (e.g. config_args='-Dprefix=/Users/goro-fuji/.
perldocにあるように、chomp()の挙動は $/ に依存します。ということは、うっかり local $/ したスコープで chomp() を行うと、何もおきません。 この結果起きる現象がきわめて不可解なので、readlineの直後以外の場面ではchomp()を使わず s/\r?\n\z//xms するのが無難でしょう*1。 use strict; use warnings; local $/; my $s = "Hello\n"; chomp $s; print "[$s]\n"; # => #[Hello #] Xslateがまさにこれにはまっていたので修正しました。 https://github.com/xslate/p5-Text-Xslate/commit/92c7387b0f0ebdad5761c420a54564b9e8d2f635 [追記] *1:はてブのコメントをう
これが価値を発揮するような出題ではなかったので結局つかいませんでしたが。あとでCPANizeはするつもりです。 てきとうなところで ^C でとめると結果を自動的に集計してreportをつくるところまでやってくれます。あくまでも開発用で、本番用ではありません。 なおこれを使う場合、アプリ側で DB::enable_profile() / DB::disable_profile() を行う必要があります。tokuhiromのエントリも参照のこと。 #!/usr/bin/env perl # usage: plackup-nytprof --port 1982 app.psgi use 5.10.0; use strict; use warnings; use Cwd qw(getcwd); use File::Path qw(rmtree); sub run { my(@args) = @_;
@DB::args でできます。 use strict; use warnings; use Data::Dumper; sub foo { bar(1, 2, 3) } sub bar { package DB { our @args; my $i = 0; while (() = caller $i) { print "$i: ", ::Dumper \@args; $i++; } } } foo('a', 'b', 'c'); outout: 0: $VAR1 = [ 1, 2, 3 ]; 1: $VAR1 = [ 'a', 'b', 'c' ]; もともとデバッガAPIの一部なので使い方はかなりマジカルで、DBパッケージ内でcaller()に引数を与えてかつリストコンテキストで評価すると@DB::argsにそのコールスタックでの引数がセットされるというものになっています。 以下pe
あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だと思われる。とりあえずPerlについて知っていることを書いた。 パッケージマネージャ まずライブラリの管理。モジュールをインストールし、可能であればバージョンを固定し、適切にロードする機能が必要だ。Perlの場合は cpanm というCPANクライアントでライブラリをインストールする。バージョンの固定とライブラリパスの設定は carton で行う。 https://github.com/miyagawa/cpanminus https://github.com/miyagawa/carton アプリケーションサーバ Webサーバへのインターフェイスとしては、PSGIという仕様がある。PSGIに準拠したツールキットとしてPlack
開発環境と本番環境で favicon を変える というのに感動したのでPlack middlewareでやってみました。 単に favicon.ico ないし favicon.png という名前にマッチしたらグレースケールにして返すというだけの代物ですが、enable_ifで簡単に導入できるのが楽かなと。 使い方は以下のとおり。P::M::Staticの前にenableしてください。 builder { enable_if { $ENV{PLACK_ENV} eq 'development' } 'DevFavicon'; enable 'Static', path => qr{/favicon\.(?:ico|png)$}, root => $path_to_assets; ...; }; https://github.com/gfx/Plack-Middleware-DevFavico
直接 `self.class` を呼ぶと、#class がオーバーライドされている可能性があるので任意のオブジェクトに対して呼ぶことはできません。よってKernel#classを直接呼ぶ必要があります。そこで、以下のように#classのUnboudMethodを得て、それにレシーバを与えて呼び出すことで解決できます。 def self.class raise "boom!" end get_class = Kernel.instance_method(:class) # and later p get_class.bind(self).call とはいえパフォーマンスがあまりよくないのでもっといい方法があればそっちを使いたい。 あと Kernel#class の上書きはやめてくださいお願いしますm(_ _)m。 [追記] 別解もあるようです。 このままだと汎用的には使えないのでFixnum
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く