タグ

ブックマーク / kazzz.hatenablog.com (78)

  • そろそろ潮時? - Kazzz's diary

    何時からだろうか、職業プログラマとして生業を全うしたいと思いながら仕事をしていたのだが、今の職場ではもうそれを許してはくれなさそうだ。 許してくれないというよりは正確には「認めて貰えない」と言った方が良いだろうか。 仕事で経験を積む、企業で歳を重ねる、そうすると自分の相対的な原価って奴が上がる。 この原価ってのがやっかいで、自分が企業の中でどれだけをコストを発生させているかを見る物差しとなるのだ。コストは簡単に言えば人件費、つまり給料だ。※ 以降、この原価という物差しが自分の仕事全てについて回るようになった。 あなたがプログラムを書くのではコストに合わない。もっとコストに見合った仕事をしないと評価できないと言われるようになる。 頑張って経験を重ねて良い仕事が出来るようになったのに、あんたに仕事させると会社が損をするということなのだ。 この時世だ。別に高い給料をくれとは言わない。普通に暮らせ

    そろそろ潮時? - Kazzz's diary
    lizy
    lizy 2012/10/10
    この場合「常に経験の浅い人がプログラムを書くことになる」という誰も得しない状態になってしまう
  • BOOL bool boolean - Kazzz's diary

    Objective-Cでブール(真偽)値を表す型として使うとされているのはBOOL型だが、これが使いにくくてたまらない。 BOOL型というその名の通り、YESとNOの二値とか取らない型なのだが、内部的には以下のように定義されている。 objc.h typedef signed char BOOL; // BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" // even if -funsigned-char is used. #define OBJC_BOOL_DEFINED #define YES (BOOL)1 #define NO (BOOL)0 そう、以前にも書いたことがあるが内部的にはsinged charなのである。 まあ、signed charであってもYESとNOしか使わなければ良い訳だが、そう

    BOOL bool boolean - Kazzz's diary
    lizy
    lizy 2012/05/22
    一般的には自前のbool型(class Bool)を導入するとは思いますが、obj-cだとそういうのは出来るんでしょうかね
  • Flexible iOS Logging - Kazzz's diary

    Flexible iOS Logging « The Brenwill Workshop Flexible iOS LoggingはBill Hollings氏によるCocoa Touch SDKの開発で使用することができるロギングライブラリィ。 元々Cocoa TouchにはNSLogというロギングのためのライブラリィがあるが、これはprintf同様の非常に簡易なものであり、 ロギングレベル(info/error/debug ..etc.)が選べない 条件を設定することが出来ずに必ず実行されてしまう という弱点があるが、"Flexible iOS Logging"を使うことで簡単にそれを解決することができる。 使い方は非常にシンプルであり、 1.Logging.hをインクルードする 2.ロギングのためのマクロを呼び出す これだけである。 既に内部ではレベル分けがされており、 LogTra

    Flexible iOS Logging - Kazzz's diary
  • ドッグフード - Kazzz's diary

    エラー内容からARCが原因であることは間違い無い。引数の型がvoid**であることから、パラメタのオーナシップの移動に関してであろうことは想像に難くないが、「何故」駄目なのかをきちんと知りたいところ。 ランタイムAPIの一つ、インスタンスフィールド※を取得するobject_getInstanceVariableがARCで使えないのはどうしてか、それを調べるにはソースコードを調べるしかない。しかしXcodeを含めてiOS SDKにソースコードは提供されておらず、そもそもオープンでは無いシステムでソースコードなど期待できないと思っていたのだが、そうでもないらしい。 Apple Open Source Appleのオープンソースサイトではシステムの主要なソースコードが公開されており、勿論Objective-CのランタイムAPIの実態も見ることができる。 objc4-493.11 - Mac OS

    ドッグフード - Kazzz's diary
    lizy
    lizy 2012/03/12
    そうなんだ「Objective-CランタイムはAPSLライセンス(Apple Public Source License)の元公開されており、誰でも同ライセンス下で使用できる」
  • appledoc - Kazzz's diary

    Xcodeではソースコード感知型で開けるリファレンスドキュメントが用意されている。 これと同じフォーマットのドキュメントをjavadocのように規約で書かれたソースコードのコメントから生成できないのだろうか、と思っていたのだが正にうってつけのものがあるようだ。 Gentle Bytes - appledoc - Objective C API documentation generator BSDライセンス上でソースコードがgithubに公開されており、自らXcodeでビルドすることで使えるようだ。 tomaz/appledoc - GitHub ダウンロードして実際にビルドしてみたが、プロジェクトのターゲットが64bitであり、MacBook Air+Lion上で動くかどうかが分からない。 他にもありそうなので、取りあえず一通り調べてみよう。

    appledoc - Kazzz's diary
  • 私が「Ice Cream Sandwich」を嫌いな理由 - Kazzz's diary

    GALAXY Nexusが来て2日間使い倒した。ハードウェア自体は良いなぁと思う点が多々あったものの、ソフトウェアに関しては自分がそれを生業にしている点で評価がどうしても厳しくなってしまうようで、今の所嫌いな所ばかりが目立つ状況だ。 私は元々AndroidそれもGingerbread(2.3)までのスマートフォンを主なターゲットとした装飾を控えめにした機能優先なインタフェースとデザインは好きだ。がしかしAndroidとしてタブレットに始めて対応することとなったハニカムは機能的なデザインが影を潜め、完成度もお世辞には高いとは思えないそのデザインとGUIは結局好きになれずじまいだったのである。 そこでAndroid4.0だ。"Ice Cream Sandwich" (以降はICSと略する)はスマートフォンとタブレットのユーザインタフェースを統合するものでありそのデザインは基的にはハニカムが踏

    私が「Ice Cream Sandwich」を嫌いな理由 - Kazzz's diary
    lizy
    lizy 2011/12/06
    googleには手の大きい人が多かった、とか
  • WPConnect - Kazzz's diary

    先日紹介したMango以前のカメラ機能を利用するコードだが、実はそのままではデバッグが上手く動かなかった。 具体的には、CameraCaptureTask#showを実行してもカメラアプリが起動しないのだ。 CameraCaptureTask camera = new CameraCaptureTask(); camera.Completed += (sender, args) => { if (args.ChosenPhoto != null) { BitmapImage bmp = new BitmapImage(); bmp.SetSource(args.ChosenPhoto); img.Source = bmp; } }; camera.Show(); // カメラアプリが起動するはずだが... これには理由がある。 カメラの動作テストを実行するためには実機でのテストが必要になる

    WPConnect - Kazzz's diary
  • モートのマンゴーは? ※1 - Kazzz's diary

    @adakodaさんにコメント頂いたが、現在のWindows Phone SDKのバージョンは" 7.1 Beta 2"ではなく"7.1 Beta 2 Refresh”という、Mango Betaに対応したバージョンらしい。 Microsoft ConnectにWindows Phone SDK 7.1 “Beta 2 Refresh”が公開されました - Akira Onishi's weblog - Site Home - MSDN Blogs しかし、このバージョンは誰でもすぐにダウンロードして使える訳ではなく以下の条件を満たしている必要がある。 ・AppHub※2への登録が完了している ・Microsoft ConnectからWindows Phone“Mango”のBetaイメージを取得できる ・Microsoftからinvitaionを受けている インビテーションが来るにはサー

    モートのマンゴーは? ※1 - Kazzz's diary
  • AndroidでAOP? - Kazzz's diary

    Twitterで@esmasuiさんにこんなものを教えて貰って愕然とした。 android-aspectj/ Google Code ご存知の通りAndroidアプリケーションはJavaVMではなくDalvikで動作しており、AspectJが吐くJavaバイトコードはDalvik上では動かない。果たしてどのような実装にしているのか、AspectJを一からDakvik用に書きなおしたのか? とわくわくしてリポジトリを見たのだが.. Pune GTUG: Adding Aspect to Android このブログによると、このプロジェクトの仕組みは 1. Javaコンパイラによりソースコードを.classファイルにコンパイルする 2. AspectJコンパイラにより、ポイントカットやアドバイスをウィーブ済みの.classファイルを生成する 3. 2.で生成した.classファイルを.dexフ

    AndroidでAOP? - Kazzz's diary
  • メディアクエリ - Kazzz's diary

    WebアプリケーションにおけるCSS(カスケイディングスタイルシート)はスタイル、レイアウト、アピアランスを宣言することにより、同一のHTMLから様々なコンテンツを生成する役割を担っている。 そもそもCSSにより様々な属性を記述するのを一箇所に集約するのは、いわゆるDRYの原則に従うためなのだが、モバイル機器とPCで同一のスタイルシートを使用するのは前回紹介したmetaタグのようにデバイスに合わせて振る舞いを変えるタグを以てしても困難だと思われる。 そこでPCとモバイル機器によってスタイルシートの属性を変えたり、そもそも別なスタイルシートを適用することが次善の作となるのだが、そのスタイルの切り替えに使用されるのがメディア・クエリ(media quries)である。 Media Queries このメディアクエリ、どのように使うかだが、典型的なのは例えば以下のようにデバイス(媒体)のスクリー

    メディアクエリ - Kazzz's diary
  • cygwin here - Kazzz's diary

    Windowsの場合、cdするより速くファイラを使う文化だったりするのでコマンド系はコンテキストメニューから指定できると有り難い。 ということで、Bruce Eckel's MindView, Inc: "Cygwin Prompt Here"を参考にして、任意のディレクトリを起点にしてCygwinのシェルを起動するレジストリを書いてみた。 cygwinhere.reg REGEDIT4 [HKEY_CLASSES_ROOT\Directory\shell\CygwinHere] @="&Cygwin Here" [HKEY_CLASSES_ROOT\Directory\shell\CygwinHere\command] @="e:\\cygwin\\bin\\bash.exe --login -c \"cd '%1' ; exec /bin/bash -rcfile ~/.bashrc\

    cygwin here - Kazzz's diary
  • nfc-FeliCa rev5 - Kazzz's diary

    今回のバージョンよりSuica/Pasmoのデータとサイバネ駅データベースにより、使用履歴を日語でフォーマットできるようになりました。 nfc-felica - Project Hosting on Google Code 以下更新しました。 Suica/PasmoのデータをフォーマットするSuicaクラスを追加 Suica/Pasmoにおけるサイバネ駅コードデータベース(StationCode.db)とそのユーティリティクラスDBUtilを追加 ユーティリティをUtilクラスに集約 NFCTagSampleアクティビティを廃止 その他細かい修正 Suica/Pasmoのデータフォーマット解析に関しては以下のサイトを全面的に参考にさせて頂きました suica - FeliCa Library Wiki - SourceForge.JP なお、今バージョンより公開する成果物にひとつ制限が付

    nfc-FeliCa rev5 - Kazzz's diary
  • アノテーションプロセッサの処理順 - Kazzz's diary

    apt(アノテーションプロセシングツール)はJava6以降、javacの機能のひとつとして処理されるようになった。 javac - Java プログラミング言語コンパイラ - 注釈処理 javacはコンパイル時に"-processorpath"で指定した検索パス上に以下の構成ファイルを見つけると、構文解析後そのファィルに記述されているアノテーションプロセッサを起動する。※ META_INF/services/javax.annotation.processing.Processor このファィル中にはAbstractProcessorを実装したクラスのFQNを記述しておけば、javacが勝手にアノテーションプロセッサクラスを実体化して実行してくれる。 net.kazzz.AnnotationProcessorA net.kazzz.AnnotationProcessorB net.kazz

    アノテーションプロセッサの処理順 - Kazzz's diary
  • Google Code Project Hosting でリポジトリと更新履歴を完全にリセットする - Kazzz's diary

    バージョン管理上のリポジトリ上から一旦コードを削除してしまえばリセットされるのかと思いきや、更新履歴等は消えずに残っているようだ。 以下の手順でリセットできることが分かったのでメモ リポジトリのリセット プロジェクトの[Source]タブの下のほうに 「You can reset this repository so that svnsync can be used to upload existing code history.」とあるのでリンク先のページで、以下のようにリセットのオプションから、"svnsync"を使うオプションを選択して、[Reset Repository]のボタンを押下してリセットを実施する。(リポジトリ上からソースコードは見えなくなる) svnsync initの実行 svnsyncコマンドを使って他のリポジトリの情報によって強制的にリポジトリを同期する(初期化す

  • Nexus SとNexus oneリフレクション性能比較 - Kazzz's diary

    Nexus Sは周波数1GHzの Cortex-A8 (Hummingbird)というプロセッサを搭載しており、これはCPUコアだけを見るとApple A4プロセッサ※と同等品だと言われている。(Apple社が買収したIntrinsity社が2009年にSAMSUNGとともに開発したプロセッサがHummingbirdだ) 去年の4月にApple A4プロセッサと、当時市販されているスマートフォンに搭載されているものとしては最強だったNexus oneのプロセッサであるQualcomm QSD8250 (Snapdragon)の性能比較をAnandtechが実施している。 Apple's iPad A4 SoC: Faster than the Nexus One's Snapdragon? - AnandTech これによればHummingbirdは同じ周波数のSnapdragonに比べて

    Nexus SとNexus oneリフレクション性能比較 - Kazzz's diary
  • Samsung GALAXY Tab Eclipse Addon - Kazzz's diary

    標題の製品の発売と共に、開発に使用するEclipse向けのアドオンが配布されている。 Samsung Mobile Innovator - Samsung Developer program for Symbian, Windows Mobile and Java インストールは通常のAndroid SDKと同様に Android SDK and AVD Managerから、以下のURLをアドオン用として追加することで行う。 http://innovator.samsungmobile.com/android/repository/srepository.xml インストールに成功するとAVD(Android Virtual Device)に、GALAXY Tabのスペックが選択できるようになっている。 スペックによると画面の密度は240dpi、デフォルトのヒープは24Mとなっていることが

    Samsung GALAXY Tab Eclipse Addon - Kazzz's diary
  • RoboGuice - Kazzz's diary

    先日vvakameさんにコメント頂いたが、AndroidでDIするなら、GuiceのAndroid版でその名も"RoboGuice"というものがあるということ。早速見てみた。 roboguice - Project Hosting on Google Code GuiceActivityにより拡張したActivityは、先日私が書いたのと同様にフィールドにビューやリソースを注入することができる。 class RoboWay extends GuiceActivity { @InjectView(R.id.name) TextView name; @InjectView(R.id.thumbnail) ImageView thumbnail; @InjectResource(R.drawable.icon) Drawable icon; @InjectResource(R.string.ap

    RoboGuice - Kazzz's diary
  • Ruboto (JRuby on Android) - Kazzz's diary

    Ruboto–Ruby on Android Ruboto(読みは"るぼっとぉ"でよいのかな)はAndroidJRubyバインディング。 Ruboto (JRuby on Android) Google Groups※ Ruboto's ruboto-core at master - GitHub 最終的にはフルスペックなAndroidアプリケーションをRubyで書くことを目的にしているらしい。 既にIRBコンソールでRubyスクリプトを評価実行できる(!!)Androidアプリケーションがgitにアップされているので、ソースもちら見してみたが ruboto's ruboto-irb at master - GitHub libsにjruby.jarとjruby-stdlib.jarがあるので、現状はAndroidJava環境からそのままJRubyを呼び出してるぽい。(後述するがCha

  • DbLinq - Kazzz's diary

    次の仕事の確度が高くなってきた。 ASP.NETで提案していることは既に書いたが、問題はデータベース。 拘りは無いと聞いていたので、SQLServerを想定していたのだが、Oracleにしたいという。 正直LINQ to SQLの良いケースになると思っていたのだが、がっかりした。 まあ、仕方が無いのでOracleでもLINQを、デザイナからLINQ to SQLクラスを自動生成できないまでも、 System.Data.Linqから扱うことのできるDataContextクラスを前もって用意することだけでも出来ないのかなと思って調べていた所、意外にもGoogle Codeに見つかった。 DbLinq LINQ provider for Oracle, PostgreSQL, MySQL, Ingres, SQLite, Firebird and ... SQL Server (C# 3.0)

    DbLinq - Kazzz's diary
  • ASP.NETでExcelシート(XMLスプレッドシート)を生成する - Kazzz's diary

    昔と違ってオートメーションで苦労することは無くなった。 今であればOpenXML APIを使う、LINQ to XMLを使う、XPath+XSLを使う、等、方法としてはいろいろな選択しがあると思うが、一番簡単なのは以下の方法。 1. Excel(2003以降)で実際に使用するワークシートを作る(これを雛形にする) 2. XMLスプレッドシート(Excel 2007ではXMLスプレッドシート 2003)形式で保存する※ 3. 保存したXMLスプレッドシートをテキストエディタ等で開く 4. ASP.NETのビューページ(Download.aspx)を生成してコンテンツ部分にXMLスプレッドシートを貼り付ける Download.aspxの冒頭 これでOK。ビューをレンダリングすればXMLスプレッドシートのダウンロードが開始される。 AddressControler.cs public Actio

    ASP.NETでExcelシート(XMLスプレッドシート)を生成する - Kazzz's diary