PerfectQueueはいかにパーフェクトか、あるいはRubyとMySQLでジョブキューを作る試みについて
開発中のDebugモードではログを出力し、申請時のReleaseモードではログを非表示にします。 最新のXcodeでは新規にプロジェクトを作っただけで、「Build Settings」タブの「Apple LLVM compiler 3.1 – Preprocessing」の「Preprocessor Macros」の「DEBUG」にすでに「DEBUG=1」が入っています。 〇〇〇-prefix.pchに以下のコードを追加します。 #ifdef DEBUG # define NSLog(...) NSLog(__VA_ARGS__); #else # define NSLog(...) #endif これでOK。 確認します。 メニューの左上のプロジェクト名をクリックすると、メニューが出てくるので「Edit Scheme」を選択。 「Run」のBuild ConfigurationをDebu
追記: 良い子のみんなはこんなマクロを自分で定義する前にUIKit Function - String ConversionsとかCocoaLumberjackとか使うんだよ!!!!! ログは出したいけどリリースビルド時には出したくないという時に使う各種ログマクロです。 個人的に使っているもののまとめです。(オープンソース見ているといろいろな種類見かけますね) プロジェクトを作るとテンプレで出来る「アプリ名-Prefix.pch」というヘッダに書くとどのソースでも使えるようになるので便利です。 #ifdef DEBUG #define LOG(...) NSLog(__VA_ARGS__) #define LOG_PRINTF(FORMAT, ...) printf("%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF
こんにちは、中川です。 最近はちょっとPHPから離れてMonacaを使ったiOSアプリの開発を行なっています。 Monacaでは基本的にHTML+CSS+JSでの開発となりますが、 今回開発中のものはObjective-Cを使ったネイティブの画面をカスタムで組み込んで利用したりしています。 HTML+CSSであれば画面を作るのは慣れていることもあり比較的簡単なのですが、 UIKitでのネイティブ画面となると微妙なズレの調整などで苦労する場面が多々ありました。 そんな時に役立ったTIPSなどをご紹介したいと思います。 ■位置やサイズのログ出力 CGRect, CGSize, CGPoint など、NSStringFromXXXXXで簡単にログ出力することができます。 NSLog(@"frame: %@", NSStringFromCGRect(self.view.frame)); NSLog
私はシェルスクリプトの大ファンで、他人のスクリプトから面白い方法を学ぶのが大好きだ。最近、SSHサーバの2要素認証を簡単にするためのauthy-sshスクリプトに出会った。このスクリプト群を見まわしていて、みんなと共有したいたくさんのクールなことを見つけた。 出力に色付けする 出力文字列を、成功した時は緑に、失敗した時は赤に、警告は黄色に色づけしたいと思うことはたくさんあるだろう。 NORMAL=$(tput sgr0) GREEN=$(tput setaf 2; tput bold) YELLOW=$(tput setaf 3) RED=$(tput setaf 1) function red() { echo -e "$RED$*$NORMAL" } function green() { echo -e "$GREEN$*$NORMAL" } function yellow() { e
既存 DB から以下のワンライナー一発で DBIx::Class の Schema が生成できる $ perl -MDBIx::Class::Schema::Loader=make_schema_at,dump_to_dir:./lib -e 'make_schema_at "Hoge::Schema", {relationships => 1, debug => 1}, ["dbi:mysql:hoge","user","password"]' やりかた。 まず、クラスを作りたいディレクトリ付近に移動 さっきのコマンドの dump_to_dir: の箇所にクラスツリーの起点となるディレクトリを指定 make_schema_at の第一引数に生成する Schema のパッケージ名を指定 外部キー制約とかを考慮して has_many とか belongs_to とかを自動で設定して欲しい場合
デバッグ時にビューについての情報(重なりや位置、色など)を解析したくなることがよくあると思います。ビューの階層構造を知るための方法はいくつかありますが、先日見つけたSpark Inspectorがものすごく便利そうなのでご紹介します。 Spark Inspector – Runtime Debugger for iOS Apps Spark InspectorはBonjourとMethod Swizzlingを利用したランタイムデバッガーです。プロジェクトにフレームワークを追加し、起動のためのコードを記述するだけで簡単に利用できます(実際には、これらの作業もアシスタントが自動で行ってくれるので、ほぼボタン一つで利用可能になります)。 できることは大きく分けて二つ。 ビューの状態を2Dまたは3Dで表示する。ビューやレイヤーをリアルタイムで編集する。 通知センター(NSNotification
ちょっとした細かい事なんですけど、設定とかimportとか プロジェクトを跨がって使いそうなやつは最初にうちにやってること多いんですけど、 その辺のネタを少々・・・ 1.NSLogの拡張と、prefix.pch NSLogは、コンソールにその内容を出力してくれるわけですが、 NSLog(@"%s",__PRETTY_FUNCTION__); NSLog(@"%d",__LINE__); とすると、 __PRETTY_FUNCTION__:クラス及び関数名 __LINE__:行数 などを表示してくれます。 ただ、毎回これを記述するのは、 面倒なのでだいたいマクロにしたりしますが、 #define LOG(fmt,...) NSLog((@"%s %d "fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); これをあるヘッダファイルなどに記述
jQuery 1.9 がリリースされました。1.9 の新機能の中ではあまり注目されていませんが、ソースマップに対応したのが地味に便利そうです。 というのも、圧縮版の jquery.min.js を使っていると 何か問題が起きたときにスタックトレースを眺めても jQuery の部分が意味不明 デバッガーで jQuery のソースにステップインしても意味不明 といった理由で、開発中には非圧縮の jquery.js を使うことが多かったわけです。 それが、1.9 からはソースマップに対応したので圧縮版のままでのデバッグが簡単になってます。 超簡単な使い方 ソースマップに対応したブラウザーは現時点では Google Chrome のみなので、Google Chrome の手順を説明します。 (Firefox はソースマップへの対応を計画中らしい) 事前準備を忘れずに Google Chrome で
季節が変わって、早速風邪をひいています。 さて、もう秋を通り越して冬の様相を呈してきた昨今ではありますが、DBI では、普通はプレースホルダを使い my $stmt = 'SELECT * FROM user WHERE user_id = ?'; my @bind = ($user_id); $dbh->do($stmt, undef, @bind); とか書くと思います。 このときに、実際にバインドされた後の SQL をみたいなーって衝動に駆られると思いますが*1、どう頑張ってドキュメントを読んでもわかりませんね。 こういうときは仕方ないので、$stmt と @bind を両方ログに出してお茶を濁していました。 $self->log->_dump($stmt, @bind); # => SELECT * FROM user WHERE user_id = ?, [1234] でもこれっ
Garbage Collection Advent Calendarの1日目の記事です。 おそらく一人でけっこう長い日数を書くと思うので、軽いものからボチボチと…。 しかもGCとはあまり関係ないですが…。 とあるオブジェクトの生成位置を調べたいとき、どうするのか。 object_idを1bit左シフトするとだいたいそのオブジェクトのRVALUEのアドレスになるので p (hoge.object_id 1).to_s(16) # => fa83a4 上記のようにobject_idを出力するコードを混ぜておきましょう。 その後にgdbでrubyを動かしてみます。 この時、GC_DEBUG付きでビルドしたrubyなら実はソースコードとラインがわかります。 デバッグ用にGC_DEBUG付きのrubyがビルドできるようならそうしてみましょう。 rvmだったら.rvmrcに以下の設定するとできるんじゃ
[カテゴリ:Perl] お手軽にShcemaを作る 作られるSQLを見たい ◯◯でなければ作成 見付からなければ作成 更新でなければ作成 find_or_new is null / is not null transaction update_or_create で id => "" を渡すと? countとgroup_by お手軽にShcemaを作るuse DBIx::Class::Schema::Loader DBIx::Class::Schema::Loader::make_schema_at ( "DB::Schema", {debug => 1, relationships => 1}, ["dbi:mysql:dbname"] ); 作られるSQLを見たい$ENV{DBIC_TRACE} = 1; とすれば、STDERRに出力される。 $ENV{DBIX_CLASS_STORA
プロセスに attach してトレースするデバッグコマンド strace の基本的な使い方です。 1. 実行コマンドをトレースする $ strace ls execve("/bin/ls", ["ls"], [/* 46 vars */]) = 0 brk(0) = 0x1ab9000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fcf695fb000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so
こんにちは、橋本です。 今回と次回の2回にわたり、Safari、ChromeのWebインスペクターやFirefoxのFireBugで使えるconsoleオブジェクトの使い方について書いてみたいと思います。 Javascriptのコードをデバッグする際に、console.logを使ってメッセージやオブジェクトの内容をログに表示することがあるかと思いますが、 この「console」オブジェクト、実はlogメソッド以外にも複数のメソッドがあります。 まずは、consoleオブジェクトにどのようなメソッドがあるか、console.logを使って表示してみたいと思います。 consoleオブジェクトの中身を見てみると、__proto__オブジェクトに以下のメソッドが定義されています。 assert count debug dir dirxml error group groupCollapsed g
「つくるための三種の神器」というテーマで続けている「777ブログウェイ」! 9日目となる本日は「Rubyで開発するときに入れておきたい三種のRubyGems」と題して、定番の RubyGems を3つご紹介します。 1. bundler「bundler」は、アプリケーションが依存するgemを管理するツールです。今やgem管理のデファクトスタンダードです。 「gem install hoge」のようにコマンドで gem をインストールしていくと、あれよあれよとグローバルな領域にどんどん色んなgemが…それも複数バージョン混在していきます。そして、いずれは、このアプリケーションで必要なgemはどれだっけ…バージョンはいくつだっけ…といった具合に、どんどん依存関係が分からなくなってきます。ここで活躍するのが「bundler」です。 使い方はいたって簡単。1) bundler のインストールgem
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
今回はAndroidアプリケーションのソースコードに対し静解析を行うことができるeclipseのプラグイン「FindBugs」の導入方法、簡単な実行方法を紹介します。 FinfbugsはAndroid専用というわけではなく、Javaプログラムに対して実行が可能です。また、eclipseプラグインだけでなく単体のプログラムとしても実行可能で独自のGUIを持っていたり、Antのビルドスクリプトに組み込むことも可能です。 今回は普段の開発に簡単に導入するということを目的としてeclipseプラグイン版の導入方法を説明しますが、興味のある方はこちらの公式のマニュアルを参照してください。 導入方法は続きへどうぞ。 プラグインのインストール 他のプラグインと同様にeclipseのメニューからインストールが可能です。 リポジトリのロケーションは http://findbugs.cs.umd.edu/ec
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く