西海岸より

つらつらざつざつと

デバイスIDの取得方法

UIDevice *device = [UIDevice currentDevice]; NSString *uniqueIdentifier = [device uniqueIdentifier]; 追記: iOS5よりUDIDが禁止 iOS5より上記メソッドがdeprecatedされ、かつUDIDが禁止されてしまいました。(審査リジェクトという噂があります) 代わり…

NSDateFormatterで日付文字列変換する際の注意

以下のように、NSDateFormatterを用いてNSDateから現在の年月を取得する場合があるけれど、 ユーザ設定が和暦の場合には、yyyyの部分が平成xx年として想定している年と異なる文字列が入り こんでしまう場合がある。 NSDateFormatter *formatter = [[NSDateFo…

UILabelやUITextViewのフォントをヒラギノで揃える

UILabelやUITextViewではデフォルトだとsystemフォントが設定されており、 記号(※)などの文字は、全角で入力しても半角フォントが適用されてしまい小さく表示されてしまう。これを防ぐには、UILabelのsetFontで明示的にヒラギノフォントを指定すればよい。 U…

iPhone4フロントパネルの修理費用比較

昨年のイブの夜、急いで帰宅している最中にマイiPhoneがアスファルトをまさかのスライディング。。。こんなザマに。。。交換は高いかなぁと思いつつ、一刻も早く修理したく調べてみたところ、 修理業者はいくつかあるみたいで、自分なりに調査して比較。 iPh…

iPhoneアラームが新年に誤作動した理由(憶測)

yahooでこんな記事 アイフォーンのアラーム誤作動で新年早々、寝坊 。 アイフォーンのアラーム用アプリケーション(アプリ)で、2011年1月1日~2日にかけて1回限りの設定機能が正常に作動せず、一部の人から寝過ごしてしまったかもしれないとの報告があった。…

Bose m2 を購入

ずっと前から、こんなスピーカーを探していて、、 音質がよい ウーハーのように低音がしっかり表現できる とにかく小さいサイズのスピーカー いろいろ調べたけど、この条件を満たすのは、BoseM2 M3しか無く、 4万円という値段に躊躇していたけど、ついにM2を…

iPhone上の各種パスを取得するコード

documentsディレクトリのパス NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsPath = [paths objectAtIndex:0]; tmpディレクトリのパス NSString *tmpPath = NSTemporaryDirectory…

CookieをiPhone側でセット/削除する方法

Cookieは通常サーバ側で自動的にセットされるが、場合によってはiPhone側で制御したい場合もあり、その方法のメモ。iPhoneは、アプリ単位で、共有クッキーストレージと呼ばれるものを持っており、iPhoneの通信APIはその共有クッキーストレージを参照している…

エンタープライズライセンスでのipaファイル作成をコマンドで実行

コマンドのメモ。 エンタープライズライセンスでは、adhocにアプリを配布することができるが、そのためにはアプリをビルドした後に、配布可能なファイルモジュール(ipaファイル)を作成する必要がある。 そのipaファイルがあれば、itunesにドラッグするだけで…

NSDateFormatterのYYYY利用時の注意点

NSDateFomatterを利用していてハマったところ。 以下のコードでは、originalという年月日時分秒の文字列を、 フォーマッタで日付変換し、さらに同じフォーマッタで文字列に戻すというもの。 結果は元の文字列になるはず。(original = originalReversed) (フ…

定数のprefixのkの意味

AppleのObjective-Cのライブラリを見ていると、enumやconst定数、defineなど、 kから始まる定義を見かけることがある。 kCFCompareLessThan少し調べてみると、これは定数を意味するハンガリアン記法だそうな。 const -> konst -> kという由来なのか。。。 た…

NSLogの出力ログにクラス名とメソッド名を追加するマクロ

NSLogでログ出力をたくさんすると、どこで出力されているのかわからなくなる。 そこで、クラス名とメソッド名をログの先頭に付加してくれるログ出力マクロを作成。 ログ出力マクロ #define LOG(args...) NSLog([[NSString stringWithFormat:@"%s ", __func__…

layerのアニメーションを無効化する方法

UIView上で扱うlayerに対して、変更を加えた場合、自動でアニメーション(暗黙的なアニメーション)がかかってしまう。これを無効化する方法のメモ。 layer追加によるアニメーションを無効化 layerの上にlayerを追加した際に、自動的にアニメーションがかかる…

staticライブラリにカテゴリを含む際に気をつけること

Xcodeのプロジェクトでstaticライブラリを作る場合で、さらにライブラリにカテゴリの実装が含まれる場合には注意が必要です。 リンカフラグに、「-ObjC」を設定 staticライブラリを利用する側のコードで、カテゴリを利用する場合、そのままでは実行のexeファ…

[iPhone]UIScrollViewでイメージのタイルパターン

スクロールビューの場合、特定のイメージを縦に繰り返して表示させたい場合があるが、そのときの書き方。 [scrollView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"image.png"]]];

Xcode上でのトラックパッドによるショートカット

Xcodeでは、トラックパッドの3本指スワイプがとても便利。 三本指で上にスワイプ .mを編集中の場合には.hの編集モードへ、.hの場合には.mへの編集モードへ移動 三本指で左右にスワイプ 左にスワイプするとカーソルの位置を戻し、右にスワイプすると進める そ…

CGImageRefからcontextへの描画方法

UIImageをcontextに描画させる際、以下のようにCGContextDrawImageを使ったコードの場合、imgRefで取り出した際にy軸が逆さになって表示されてしまう。 UIImage *image = [UIImage imageNamed:@"test.png"]; CGContextDrawImage(context, self.frame, image.…

CoreDataで複数のデータモデルをマージして利用する方法

XcodeでCoreDataを用いる場合、データモデル(xcdatamodelの拡張子ファイル)を作成して、編集し、プログラム上から読み込むことになるが、複数のデータモデルをマージして、一つのManagedObjectContextとして扱いたいケースがある。この場合、NSManagedObject…

時間を計測する方法

パフォーマンスチューニングの際に、時間を測定することがよくあるので、メモ。 NSDate *startDate = [NSDate date]; //do something NSTimeInterval interval = [[NSDate date] timeIntervalSinceDate:startDate]; NSLog(@"time is %lf (sec)", interval);

iPhoneのデバイス種別を判定する方法

unameを使うと簡単に判別が可能だったりする。 - (NSString *) devicePlatform{ struct utsname u; uname(&u); return [NSString stringWithCString:u.machine encoding:NSUTF8StringEncoding]; } iPhone1,1といった型番を取得でき、以下のように機種が細か…

ホーム画面上でのアプリ表示の制限

iPhoneのアプリ名の文字数の制限を調べてみたところ、一般的には以下っぽい。 全角6文字 半角13文字 ただ、アルファベットはプロポーショナルフォントが使われてるのでは、と思い「l」(小文字のL)でやってみたところ、最大26文字までいけた。 とはいうものの…

簡単なprivateなsetterメソッドの実装方法

Objective-Cでは、プロパティの機能で以下のように記述することで、自動にアクセサメソッドを生成してくれるが、セッターは外部から非公開としたい、ということがよくある。 @property(retain) NSArray *array; @synthesize array; ここで、@property(retain…

iPhoneで利用可能なフォント

iPhoneで利用可能なフォント一覧を出力。日本語では、ヒラギノの以下のもののみ利用、表示可能。 HiraKakuProN-W6 HiraKakuProN-W3 フォントで表示可能な字数は、wikipediaを調べてみたところ、非常に広いらしい。 現行日本語書体(OpenType形式)では、Std…

ドラッグ可能なAlertView

UIKitでは、UIViewを継承することで簡単にタッチイベントを拾い、独自に実装することが可能、ってことでAlertViewもできるか試してみました。 (審査に通るかはとても怪しいので利用しない方がよいと思います) DraggableAlertView.h #import <UIKit/UIKit.h> @interface Drag</uikit/uikit.h>…

iPhoneで縦書きを表現する方法(nehan)

iPhoneで縦書きを表示する方法は提供されていないが、nehanという日本語のレイアウトエンジンを使うことで表示可能。nehan MITライセンスのOSSで公開されており、複数ブラウザに対応しておりiPhoneのWebKit(UIWebview)でも同じく利用可能だした。 ルビ、引用…

hi-ho(Bフレッツ)でgmailへのアクセスが遅くなる

ここ数ヶ月、自宅からgmailへのアクセスが遅い症状(1アクセス30秒程度)に悩まされていて、なぜかわからず放置状態だったのだけれど、ついに解決。 なぜか、Google だけ表示が遅い。 で、原因はさっぱりわからなかったのですが、なんとなく IPv6 を PC 側でオ…

pingによる複数サーバの死活監視バッチ(簡易)

pingを連続して打っても見にくいので、少しバッチを書いてみたときのメモ。 ping-hosts.bat @echo off @setlocal enabledelayedexpansion for %%h in (66.249.89.159 www.yahoo.co.jp www.google.co.jp hoge) do ( set RESULT= for /f "usebackq tokens=*" %…

ヒープを意図的に増加させる

ヒープサイズを意図的に圧迫するために作成した際に作ったjavaのメモ。 MemCracker.java import java.io.*; import java.util.*; public class MemCracker { public static void main(String[] args) throws Exception{ System.out.println("Start MemCracke…

バッチファイルで環境変数にコマンドの実行結果を格納(複数行)

linuxのシェルだと val=`ls` のように簡単にコマンドの実行結果を代入できるのだけれど、windowsのバッチの場合は工夫が必要。 ソース(onebatcmd.bat) for /f "usebackq tokens=*" %%i in (`echo hoge`) do @set RESULT=%%i echo %RESULT%環境変数RESULTに「…

[Java] SJISコード表の作成

SJISコードの2バイト文字の一覧表を作成したときのJavaコードメモ。 一行の前4バイトが16進表示で、後2バイトが該当文字というのを繰り返し書き出す処理。 SJISCodeTableMaker.java import java.io.*; import java.util.*; public class SJISCodeTableMaker …

PHPによる簡易GREP

PHP

特定の正規表現にマッチしたファイル名と該当行のみ表示、 ということがwindowsで手軽にできなかったので、簡単にPHPで書いたときのメモ。 Perlの正規表現が使えるので、流用がきくはず。 grepFiles.php

MacBook(Late2008)のクラッシュ

たまに起こる現象。画面に横筋が入って、キーボード、マウスが制御が効かなくなる完全なクラッシュ。今更だけど、これって 新「MacBook」に不具合が続出--ビデオ、メモリチップ、スリープモードに問題 - CNET Japan で言われてた問題の一つなのかも。しかも…

正規表現のものぐさ(lazy, non-greedy)マッチング

忘れがちなのでメモ。 正規表現で?と言えば、一つ前の文字数が0回もしくは1回現れればマッチするもの。 だけど、*?、+?といったように書けば、最小となる文字列にマッチするようになり、ものぐさ、laze、non-greedyというそうな。 以下が例。removeTagメソッ…

Google Chrome OSを試す

今話題のChrome OSにトライ。とりあえず以下の作業までで起動できる。 環境はVMWareFusion@MacOSX ダウンロード。vmのイメージを落としてくる。 http://gdgt.com/google/chrome-os/download/ VMで新規作成、落として来たものを選択。 OSの種類としては「その…

Java並行処理プログラミングが復刊決定!

熱望していたJava並行処理プログラミング ―その「基盤」と「最新API」を究める―がついに復刊決定! メールで復刊活動を見守っていましたがついに稔ったのでしょう。(前回の記事)以下のURLで予約できます。 Java並行処理プログラミング その「基盤」と「…

今週のお題:私の寒さ対策

今週のお題ということで、私の寒さ対策。 自分の部屋にはコタツが無く、暖房をつけるにしても電気代が気になるし、でも椅子に座って作業したいし、、、 っていうこと電気毛布(かけタイプ)。広電(KODEN) 電気ひざ掛け毛布 (140×82cm) KWS-H141出版社/メーカー…

Inkscapeで作ったポスターデザイン

春にInkscapeで作ったポスターの雛形(svgデータ)を公開してみます。 使いたい方はご自由にどうぞ。(copyrightとか消しちゃってください) こんな感じ SVGデータ(右クリックで保存) http://mmasashi.sakura.ne.jp/resource/inkscape/poster_mmasashi.svg Inksc…

家を借りたくなったら

そろそろ(来年4月)新しい家を借りようと思うけど、そういえば一人暮らしもした事も無く初めての経験。特に不動産に騙されるとかよく聞く話だし、、、、ということで購入した一冊。家を借りたくなったら作者: 長谷川高出版社/メーカー: WAVE出版発売日: 2008/…

Mapを正規表現でフィルターをかける

指定した正規表現に合致するkeyのみ残す関数。メモ。 MapUtil.java import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MapUtil { public static <V> Map<String, V> filter(Map<String, V> map, String regex) { List<String></string></string,></string,></v>…

エクセルでの演算誤差(1.2-1.1は0.1にならない)

小数点の計算をやるからといってすぐにfloatやdoubleを使ってはいけない - じゅんいち☆かとうの技術日誌 を見て思い出したのけれど、大学のソフトウェアの講義で最初に習ったのが、エクセルでは誤差が出るよというお話。 実際にやってみるとわかりやすい。 …

文字列から正規表現で特定部分を抽出

よくやるのでメモ。 引数の正規表現で、()でくくったところを抜き出す関数。 import java.util.regex.*; public class RegexUtil { public static String extractMatchString(String regex, String target) { Pattern pattern = Pattern.compile(regex); Mat…

nioライブラリを使ったechoサーバ

nioライブラリを勉強中で、手始めにechoサーバを作ってみた。 NioEchoServer.java package echoserver; import java.io.*; import java.net.*; import java.nio.*; import java.nio.channels.*; import java.nio.charset.*; import java.text.*; import java…

javaプロセスの使用メモリの合計値を出力

macでjps、jmapコマンドを使用しようとシェルを作ったのでメモ。javaでは標準でjmapというコマンドがあり、メモリリークが発生しているかを調べるのに役立つ。起動中のjavaプロセスを指定することで、そのプロセス内でどのようなオブジェクトへの参照、また…

「初めての人のためのLISP」が復刊(復刊.com)

ということなので、復刊.comで早速購入してみた。 発売は12月中旬とのことで購入というより予約。価格はちょっと高めの2,940円です。"初めての人のためのLISP 復刊リクエスト投票"著者の竹内先生は有名なLISPハッカーで、語り口がユーモアであふれているのが…

ライフネットの岩瀬大輔さんに聞いた生命保険の基本のまとめ

ベンチャー発の生命保険会社を立ち上げた岩瀬大輔さんのお話を聞く機会があり、そこでお話のあった生命保険講座がとてもわかりやすかった。なので簡単にまとめ。(注意:保険には詳しくないため、間違っているところがあるかもしれません。)今回はCPS/CAPホル…

金融資本主義を超えて―僕のハーバードMBA留学記を読む

この本は、著者がハーバードへの留学時に書かれたブログを本にしたもの。留学を通して学んだ事、特にハーバードというトップレベルの教育の中で日本人の視点から見て感じたことが書かれており、一度留学したことある自分にとっても共感できる部分もあった。…

デスクトップアイコンで日本地図

テレビを見ながらちょっと初めてみて、最後までやってしまった。

数学ガール第三弾

結城先生の数学ガールの第三弾が出るらしい。『数学ガール/ゲーデルの不完全性定理』無料プレゼント数ある技術書の中でもわかりやすい本は、そこにストーリーがあって読者がイメージしやすい、それが共通なところ。 前作までの数学ガールの本は持ってないか…

メソッドのone-liner変換

Eclipseで自動生成してくれるようなメソッド(委譲したものなど)はたまにone-line化(1行に変換)してほしいことがあるので、javascriptを書いてみた。 JavaOneLineEncoder 画面 使い方 onelineにメソッドを貼ってボタンを押すだけ。ちょっとした時に使える程度…

ジェネリクスを使ったインタフェースの実装方法

"Java並行処理プログラミング"の第八章で、Puzzleインタフェースを実装しようとしたけど、どう実装していいのかわからなかった顛末のメモ。結局著者Brian Goetzにまでメールして解決しました。実装しようとしてたのは以下のPuzzleインタフェース。Listing 8.…