これ、素敵。
githubに公開されているマニュアルを読みながら勉強しようと思う。Twitter製の高速なオートコンプリート用JSライブラリ「typeahead.js」
via:Twitter製の高速なオートコンプリート用JSライブラリ「typeahead.js」
ハードコードデータとリモートのデータを両方サジェストできたり、サジェスト部分のテンプレートをいじったりできるみたいです。
公式ページもシンプルでイイ!!
常にテンパってます。
これ、素敵。
githubに公開されているマニュアルを読みながら勉強しようと思う。Twitter製の高速なオートコンプリート用JSライブラリ「typeahead.js」
via:Twitter製の高速なオートコンプリート用JSライブラリ「typeahead.js」
ハードコードデータとリモートのデータを両方サジェストできたり、サジェスト部分のテンプレートをいじったりできるみたいです。
ハイスペックのchromebookが発売されるようです。
価格が1299かー、ちょい高いっすなー。数週間前から噂になっていたGoogleのChromebookの新機種Chromebook Pixelが先ほど発表された。
via:Google、Chrome OSノート、Chromebook Pixelを発表―Core i5、12.85インチ・タッチスクリーン、1TBのGoogle Driveつきで価格1299ドル、4月にLTE版も
これまでのChromebookとは異なり、Pixelはクラウドのヘビーユーザーをターゲットにしたプレミアム・デバイスで、ハードウェアのスペックは強力だ。モニタは12.85インチ、2560×1700(435万ピクセル)、画面比率3:2、CPUはIntelCore i5、それに1TBのGoogle Driveストレージが3年間無料で利用できる。
だとしたらPCの液晶をタッチスクリーンにするつもりなのか?Pichaiは「近いうちにあらゆるノートパソコンにタッチスクリーンが搭載されることになると思う」と述べた。
via:Google、Chrome OSノート、Chromebook Pixelを発表―Core i5、12.85インチ・タッチスクリーン、1TBのGoogle Driveつきで価格1299ドル、4月にLTE版も
microsoftからツールがリリースされたようです。
検証方法は、modern.IEに訪問して、下の画像にURLを入力する。念のために書いておくと、Microsoftは「Internet Explorer(IE) 10」について、これまでのアップデートとは違って多くの非難を浴びるようなブラウザではないということを、ユーザーに心から理解してほしいと願っている。それを示す最新の例が、米国時間1月31日に発表されたウェブ開発者向けのツールセット「modern.IE」だ。
via:マイクロソフト、ウェブ開発者向けツールセット「modern.IE」を公開
なにやら便利なものが、
ふむふむグーグルは、モバイルアプリケーションのバックエンド向けクラウドサービス機能「Google Cloud Endpoints」などを含む新バージョンのGoogle App Engine、「App Engine 1.7.5」をリリースしました。
via:Google Cloud Endpoints公開、グーグルもモバイル向けBaaSへ参入。Google App Engineがモバイルのバックエンドに
なるほど。つまり、サーバーサイドを意識することなく、クライアント作成に工数が多く割ける点がいいですね。Google Cloud Endpointsの主な機能は、iOS、Android、JavaScriptなどからApp Engine上のアプリケーションを呼び出すためのクライアントライブラリを生成してくれることです。しかもApp Engineの機能だけでなく、グーグルが提供する検索やGoogle DriveやYouTubeやGoogle+や翻訳などさまざまなAPIもサポートしています。
via:Google Cloud Endpoints公開、グーグルもモバイル向けBaaSへ参入。Google App Engineがモバイルのバックエンドに
New Google App Engine training videos now availableから。
「a series of great App Engine training videos」という形でvideoが公開されました。
YouTube上でリリースされていたので、下にembedします。
App Engine Architecture and Services
Managing Your App
User APIs and Authentication
Datastore Introduction
Datastore Query, Index and Transaction
Memcache Basics
Task Queue Basics
NSDictionaryやNSArrayなどを使って高速列挙を行う時に、なぜか、
Collection was mutated while being enumerated. |
前回、Toll-free bridgeについて説明しましたが、どうやら、ARCを使ってキャストをする場合、「ARC bridge のまとめ」を読むとFoundation frameworkからCore Foundationにキャストする場合、
(__bridge クラス名)と書く必要がありそうです。
以前、djangoを使ってjsonをパースする方法を書きましたが、google app engineのサポートバージョンが2.7になったこともあり、native libraryを使ってパースすることができるようになりました。
具体的なパース方法ですが、facebookのgraph apiを例にとると下のようになります。
import json from google.appengine.api import urlfetch graph_api_url = "https://graph.facebook.com/%s?fields=id,name,locale,gender" % snsuserid result = urlfetch.fetch(graph_api_url) if result.status_code == 200: result = json.loads(result.content) self.response.out.write(result["name"])という形でjson.loadsメソッドを使えばパースすることができます。
これで、本当の意味で、主要ブラウザが3種類になりました。
Firefoxは一体、どうするんだろう??今週初めにOperaは、Prestoと呼ばれる独自のレイアウトエンジンを捨ててWebKitに鞍替えする、と発表した。
via:ここに来てMozillaの存在意義, WebKitに乗り換えないことの意味
よくiOSのdevリファレンスを覗いていると、
Toll-free bridge |
ってあり、CoreFoundationとFoundation frameworkの差を意識することなく使うことができることなので、これは便利ですね。えっ?Toll-free bridge とはなにかって?ここでは、オブジェクトを変換することなく、キャストするだけで相互互換可能な仕組みのことらしい。
via:Toll-free bridge の実現方法
たとえば、CoreFoundation の CFStringRef と、Cocoa の NSString は toll-free bridge で結ばれてるんだ。CFStringRef には CFStringGetLength() っていう関数がある。これを NSString のオブジェクトに使うことができるんだ。
CoreTextを使いたいのだが、どうすればいいのだろうか?
Linker can't find CTFontCreateWithNameAndOptionsを閲覧すると、TARGETSの「Linked Frameworks and Libraries」のところで、「CoreText.framework」を追加します。
次に、そのframeworkを使いたい場合は、
#import <CoreText/CoreText.h>とすればおkです。
UITextViewからフォーカスをはずすにはどうすればいいのだろうか?
iPhone テキストフィールドからフォーカス外すを参考にすると、下のように組めばおkなことがわかりました。
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(0,0,100,100)]; [textView endEditing: YES];で確かに、これを使うとはずすことができました。
chromeでgpuの確認方法について調べました。
アドレスバーに上を入力すると確認できます。chrome://gpu
via:Google Chrome のcanvasタグがGPUアクセラレーション対応に
前回、ARCでGrand Central Dispatchをリリースを書きました。
であれから少し使ってみて、dispatch_get_main_queueまたはdispatch_get_global_queueで取得したqueueに対して、dispatch_releaseをする必要がないことがわかりました。
リファレンスだと下のように書かれています。
dispatch_get_global_queueもreleaseをしなくていいことなので伝家の宝刀のように乱発しそうです。Note: You do not need to retain or release any of the global dispatch queues, including the concurrent dispatch queues or the main dispatch queue. Any attempts to retain or release the queues are ignored.
via:Memory Management for Dispatch Queues
UIColorがある色と同じかどうかを比較する場合、どうすればいいのだろうか?
UIColorも結局クラスなので、下のような処理で比較することができました。
UIColor hoge; UIColor foo; if([hoge isEqual:foo]){ }これで、UIFont同士の比較も困らないぞと。
UIActivityIndicatorViewは下の3種類があります。
UIActivityIndicatorViewStyleWhite UIActivityIndicatorViewStyleGray UIActivityIndicatorViewStyleWhiteLargeで、いつも実装しているときに気になっているのですが、これってそもそも大きさってどのぐらいあるのだろうか?
メモしておけば今後の実装の目安になりますね。UIActivityIndicatorViewStyleWhite: 21x21 px
via:iOS 5からのUIActivityIndicatorViewの変更
UIActivityIndicatorViewStyleGray: 21x21 px
UIActivityIndicatorViewStyleWhiteLarge: 36x36 px
UINavigationControllerの継承クラスで、下のように実装するとクラッシュが発生します。
self.navigationBar.delegate = selfなんでだろうーっと思って調べていたら、どうやらデフォルトで設定されているのでアサインをする必要がないとのことです。
上の文章を読んで納得しましたー。A navigation controller automatically assigns itself as the delegate of its navigation bar object. Therefore, when using a navigation controller, you must not attempt to assign a custom delegate object to the corresponding navigation bar.
via:Using a Navigation Bar With a Navigation Controller
UITextViewのdelegateにメソッドを送ったとき、下のようなエラーがでてきます。
すでにstackoverflowにアップされていたが、どうやらiOS6の不具合のようです。: CGContextSaveGState: invalid context 0x0 : CGContextDrawLinearGradient: invalid context 0x0 : CGContextSetFillColorWithColor: invalid context 0x0 : CGContextFillRects: invalid context 0x0 : CGContextFillRects: invalid context 0x0 : CGContextSetFillColorWithColor: invalid context 0x0 : CGContextFillRects: invalid context 0x0 : CGContextSaveGState: invalid context 0x0 : CGContextDrawLinearGradient: invalid context 0x0 : CGContextSetFillColorWithColor: invalid context 0x0 : CGContextFillRects: invalid context 0x0 : CGContextFillRects: invalid context 0x0 : CGContextSetFillColorWithColor: invalid context 0x0 : CGContextFillRects: invalid context 0x0
まータイトル通りなのですが、どうするのかなと?
これはもうめっちゃ便利。前後にある半角スペースのトリミング方法
via:【Objective-C】NSStringの前後にある半角スペース、改行、アルファベット、数字をトリミングする方法。
NSString* str = @"文字列";
str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
前後にある改行のトリミング方法
NSString* str = @"文字列";
str = [str stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
前後にある全角スペースと改行のトリミング方法
NSString* str = @"文字列";
str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
前回、iOS6にバージョンアップしてから半年たたずにiOS6.1がリリースされたのでさっそく手持ちのiPod touchをアップデートしてみた。
はっきり言って違いがわからないが、iOS Developer Libraryを読むと、MapKit関連で更新が発生しているが、googleがこの前オリジナルのmapアプリを出したし、かつsdkも搭載されているので、あまり関心がないな。
iOS5からの追加された新クラスUIApperanceを使ってUINavigationBarの中にあるUIBarButtonItemの色を変更する方法を調べてみた。
こうすることで、UINavigationItemのそれぞれ、[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTintColor:color];
via:UIAppearance で色や画像を変える
昨日、「Viewの外側に影をつける方法」を調査しましたが、ちょっとUIの動きが遅くなり、困っていたら、解決方法がありました。
実際に、追加してみると、体感速度で全然、違います。で、このコードに下記の3行を付け加えてやると、体感でわかるぐらいに改善されます。
via:CALayer を用いた「影」の描画処理を軽くする
self.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.bounds].CGPath;
self.layer.shouldRasterize = YES;
self.layer.rasterizationScale = [UIScreen mainScreen].scale;
UIViewを継承したViewの外側に影をつける方法について調べました。
というわけで、さっそく上を見ながら実装すると、確かに影がつきましたー。5. UIViewを角丸にしたついでに影とかつけたい。
via:【ぐぬぬ】iPhoneアプリのこんなとき、どうするの??
影もつけたいですよね。そうくると思ってました。わかります。
じゃあ、こんなとき、どうするの??
これもlayerいじると簡単に実装出来ちゃうんですね。
UIView *hoge = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)] autorelease];
hoge.layer.cornerRadius = 8.0f
// 次の二行を追加するだけです。
hoge.layer.shadowOpacity = 0.8;
hoge.layer.shadowOffset = CGSizeMake(2, 2);
前回、レノボからChromebookが発売されるエントリーを書きましたが、ヒューレットパッカードも出すようです。
すでに、スペック表も公開されているようです。Hewlett-Packard(HP)は、サムスン、Acer、Lenovoに続いて「Chromebook」市場に参入する計画のようだ。
via:HP製「Chromebook」、スペック表がウェブで一時公開