iOS/iPhone/iPad/MacOSX プログラミング, Objective-C, Cocoaなど UIImage からサムネイル用途で使用する縮小画像を作る。 縮小処理 こんな感じ。 @implementation UIImage (extension) - (UIImage*)imageByShrinkingWithSize:(CGSize)size { CGFloat widthRatio = size.width / self.size.width; CGFloat heightRatio = size.height / self.size.height; CGFloat ratio = (widthRatio < heightRatio) ? widthRatio : heightRatio; if (ratio >= 1.0) { return self; } CGRec
この記事はMySQL Casual Advent Calendar 2013 3日目の記事です。 はじめに 以前にSELECT ... FOR UPDATEとロックの挙動 - walf443's blogの記事にTwitterで少し言及したんですが、それの補足というか、InnoDBのロックの範囲について僕はこう理解していますよという話です。 MySQLといえば、InnoDBをネットワークサーバとして使うためのフレームワークであり、SQLはInnoDBのインデックスにアクセスするためのDSLといっても過言ではないでしょう。 InnoDBのロックとはつまるところインデックス行のロックなので、InnoDBのロックの範囲を理解するためにInnoDBのインデックスについて少し前置きしておきます(だいぶ端折ったけど長くなった…)。 クラスタインデックスとセカンダリインデックス すでにInnoDBのイン
I'm trying out the new version 2.0 of AFNetworking and I'm getting the error above. Any idea why this is happening? Here's my code: NSURL *URL = [NSURL URLWithString:kJSONlink]; NSURLRequest *request = [NSURLRequest requestWithURL:URL]; AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request]; op.responseSerializer = [AFJSONResponseSerializer serializer]; [op setComple
GitHub や GHE を使って多人数で開発していると,プルリクエストを横断して試す必要が頻繁に発生すると思います. プルリクエストを次々に試したり,#30 と #31 をマージした結果を試したい!なんてケースもあるのではないでしょうか. GitHub では git ls-remote すれば分かるように,プルリクエストの番号と対応したブランチがリモートに存在しているので,これを取得してみます. .git/config に追記(あるいは git remote add とかで適当に) [remote "pr"] url = git@github.com:yourusername/yourrepos.git fetch = +refs/pull/*:refs/remotes/pr/* あるいはこんな感じ(丸投げ): https://gist.github.com/3342247 git fe
速さは強さ。 tech.kayac.com Advent Calendar 2012の23日目です。 @handlenameです。 クリスマス前の3連休なのに野郎オンリーでジムを冷やかしに行く予定しかありません。うける。 普段使っている、様々な情報に素早くアクセスする方法を紹介します。 アプリケーションを素早く起動する (Spotlight) Mac限定のはなし。 Quicksilvel、LaunchBar、Butlerなどの ランチャーアプリを使っていたこともありましたが、 SSDなMacbookAirになってからはSpotlightが爆速なので 全てこれで済ませてしまっています。 候補が多すぎると鬱陶しいので、 検索対象をアプリケーションとシステム環境設定に絞って使っています。 アプリケーションを素早く切り替える (Spark) こちらもMac限定のはなし。 アプリケーションの切り替え
iOS 7からUIKitにキーフレームアニメーションが加わった! iOS6まではキーフレームアニメーションを実現するにはUIKitによるアニメーションよりちょいと複雑なCore AnimationのCAKeyframeAnimationを使っていましたが、iOS 7からUIKitだけでキーフレームアニメーションが実装できるようになりました! UIKitによるアニメーション vs Core Animation まず、UIKitによるアニメーションとCore Animationで何が違うのかをおさらいしておきましょう。 UIKitによるアニメーションは、Core Animationを直接実装するよりも比較的簡単です。以下のサンプルコードを見てみましょう。 以下のコードはビューの背景色を徐々に赤から青に変更するアニメーションをそれぞれ実現しています。 // UIKitによるアニメーション [UI
こんにちは。斎藤です。 ITインフラの障害は、多くの場合「予期せぬ」タイミングで発生します。特に、CPUリソースを多量に消費したり、Disk I/Oが輻輳している場合、その切り分けは困難な状況に陥りやすいものです。 そこで、本日はITインフラ、特にOS・ミドルウェアを支えるにあたって、問題解決を助けてくれるであろう12個のコマンドを取り上げてみます。「必ず押さえておきたい」5つのものと「更に覚えると便利なコマンド」7つの2節に分けてお話しします。 ※CentOS 6.4 (64bit)を前提に取り上げます 必ず押さえておきたいコマンド もしITインフラ管理者になりたてな方はぜひ サーバサイドのプログラマをやっていたのだけれど、ある日突然「君、サーバ管理担当ね!」と、バトンを渡される方っていらっしゃると思います。私も以前はそのクチでした...。そうなってしまったとき、まずは覚えておきたい5つ
更に追記 MouseX::Typesですが、その後検証してみたかんじ、 要素を「=>」で繋げてしまうと左辺が文字列として認識されてしまうようなので、 要素を「,」で繋げなければいけないようです。 等価だと思っていましたが微妙に違うんですね。 package HogeProject::MouseType; use strict; use warnings; use utf8; use MouseX::Types -declare => [qw/UInt/]; use MouseX::Types::Mouse qw/Int/; subtype UInt, as Int, where { $_ >= 0 }; 1; 追記 id:gfxさんによるとMo[ou]seX::Typesがまさにそんな機能を持っているとの事。知らなかった! http://search.cpan.org/~gfuji/Mou
Objective-Cランタイムシステムを直接操作して、iOS 5から新しく追加されたメソッドをiOS 4で動かしたときにも使えるようにしてしまえ、という話です。 例題:parentViewController問題 iOSでUIViewController「親」からUIViewController「子」をモーダル表示したとき、これまでは子のparentViewControllerに親が格納されていましたが、iOS 5からはそれがnilになって、代わりに新しくできたpresentingViewControllerに格納されるようになりました。iOS 5からUIViewControllerにコンテナ機能が追加されたので、その辺色々整理されたのでしょうか。 参考:http://cocoa.hatenablog.com/entry/2011/11/24/222140 なので子から親を呼びたい場合、
意外と知られていない? 使われていない? xibの解説です。やっぱりUI関連はxib(Storyboard)がとても便利です。 コードから読み込み これをこのように読み込みます。 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. UINib *objectsNib =[UINib nibWithNibName:@"Objects" bundle:nil]; NSArray *objects = [objectsNib instantiateWithOwner:nil options:nil]; NS
「ちょっとこの Web API 使ってなんかつくってみるか」ということがたまにある(とくにハッカソンで)ので、手早くつくれるように僕なりの手順をまとめてみました。 「共通処理の実装」までは簡単な文字列の置換で済むので、 ファイルテンプレートにしておく とより簡単になりそうです(参考:Xcodeのファイルテンプレートを自作する)。 0. クラスファイルを新規作成 AFHTTPClientのサブクラスとしてクラスファイルを新規作成する。 1. 共通処理の実装 APIキーをセットするメソッドの定義と実装と、オブジェクト初期化用のメソッド実装。 ヘッダファイル(.h) + (void)setAPIKey:(NSString *)APIKey; 実装ファイル(.m) #import "AFJSONRequestOperation.h" #define API_BASE_URL @"http://xx
xcode4になって、新しくworkspaceという機能がありました。 いままで全く感心持ってなかったんですが、自作ライブラリをそろそろ作ろうかと思ったときに便利そうだったので使ってみました。 workspaceは 複数のプロジェクトを一つのwindowで開ける そのビルド結果をworkspace内で参照し合える 他のプロジェクトを参照した場合、ビルド時にそのプロジェクトもビルドし直してくれる という機能があります。 これを利用することで、プロジェクトAでライブラリをつくり、プロジェクトBでそのライブラリを使用するということができるようになります。 プロジェクトはそのまま(設定をいじることなく)流用できるので、複数プロジェクトで同じコードを使っている場合、かなり便利です。 ■workspaceをつくる xcodeでFile → New → New Workspace…を選択し、新規作成する
ARCではstructのなかに、NSString*とか、Objective-Cのメンバを入れると ARC forbids Objective-C objects in structs or unionsと怒られます。 mogeneratorで出力する際に、 --template-var arc=true をつけると、 extern const struct HogeAttributes { __unsafe_unretained NSString *created_at; __unsafe_unretained NSString *identifier; __unsafe_unretained NSString *timeline_id; __unsafe_unretained NSString *updated_at; __unsafe_unretained NSString *user
他アプリケーションが格納した Keychain Services 内の情報へのアクセス Mac OS X の場合はユーザが許可を与えれば他のアプリケーションの情報へアクセスすることができる。一方、iOS の場合、アプリケーションは自身が保存した情報のみアクセスが行える。他のアプリケーションの情報へは基本的にアクセスすることができない。ただし同じプロビジョニングプロファイルを使ってビルドされたアプリは設定により情報を共有することができる(後述)。 iOS での特記事項 iOS には単一のキーチェーンのみ存在する(Mac OS X は複数)。 iOS の場合、PC接続時にストレージの内容は暗号化されたままバックアップされる。これを復号化するパスワード(keychain password)はバックアップされない(iOSデバイスの中から外に持ち出されない)。 Keychain Service はプ
YAPC で少し紹介しようと思って、DEMO も用意してたんですが、時間がなくて諦めたので、ちょろっと紹介しときます。 Data::WeightedRoundRobin は重み付けされた値をベストエフォートな感じでラウンドロビンしてくれるモジュールです。 使い方は簡単で、以下のような感じ。 use Data::WeightedRoundRobin; my $wrr = Data::WeightedRoundRobin->new([ { value => 'hidek', weight => 65 }, { value => 'zigorou', weight => 80 }, { value => 'nekokak', weight => 75 }, ]); say $wrr->next for 1..100; こうすると、大体 hidek : zigorou : nekokak = 65
2012-08-20一部訂正 githubにdotfile上げてる人は結構多いですが、 github.tokenなど、一部の設定は公開されると困りますね。 そんなときはincludeディレクティブを使うとローカル用の設定を別ファイルに出来るので捗ります。 [include] path = .gitconfig.local [core] editor = emacs pager = lv whitespace=fix,-indent-with-non-tab,trailing-space,cr-at-eol excludesfile = .gitignore こんな感じでやると.gitconfig.localを読み込んでくれるので、 github.tokenなどは.gitconfig.localに書いておくといい感じになって捗ります。 参考: http://stackoverflow.com
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
先月末から原稿を書こう書こうと延ばし延ばしきて当日に書いている私ことpunytanです。 みなさん、書き捨てスクリプト書いてますか?書いてますよね。 書き捨てのつもりがいつの間にかオプションを取るようになっていて、使うときに「オプションなんだっけ…?」なんてことよくありますよね。ありますね。 そんなときは Getopt::Long と Pod::Usage を組み合わせて使うと POD で Usage を書く事ができます。便利! use Getopt::Long; use Pod::Usage; my $man = 0; my $help = 0; GetOptions('help|?' => \$help, man => \$man) or pod2usage(2); pod2usage(1) if $help; pod2usage(-exitstatus => 0, -verbose
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く