2013/02/28

[twitter][JavaScript]typeahead.js

これ、素敵。
 photo typeaheadjs_zps1ff523a9.png

Twitter製の高速なオートコンプリート用JSライブラリ「typeahead.js」
ハードコードデータとリモートのデータを両方サジェストできたり、サジェスト部分のテンプレートをいじったりできるみたいです。

via:Twitter製の高速なオートコンプリート用JSライブラリ「typeahead.js」
githubに公開されているマニュアルを読みながら勉強しようと思う。

公式ページもシンプルでイイ!!

2013/02/27

[chrome]Chromebook Pixelが発売

ハイスペックのchromebookが発売されるようです。

数週間前から噂になっていたGoogleのChromebookの新機種Chromebook Pixelが先ほど発表された。

これまでのChromebookとは異なり、Pixelはクラウドのヘビーユーザーをターゲットにしたプレミアム・デバイスで、ハードウェアのスペックは強力だ。モニタは12.85インチ、2560×1700(435万ピクセル)、画面比率3:2、CPUはIntelCore i5、それに1TBのGoogle Driveストレージが3年間無料で利用できる。

via:Google、Chrome OSノート、Chromebook Pixelを発表―Core i5、12.85インチ・タッチスクリーン、1TBのGoogle Driveつきで価格1299ドル、4月にLTE版も
価格が1299かー、ちょい高いっすなー。
高解像度の液晶だけじゃーお客さんはなびかないと思うのだが、どうだろうか?
今時、テレビでじゃーないので、高解像度で競ってもと感じてしまう。

Pichaiは「近いうちにあらゆるノートパソコンにタッチスクリーンが搭載されることになると思う」と述べた。

via:Google、Chrome OSノート、Chromebook Pixelを発表―Core i5、12.85インチ・タッチスクリーン、1TBのGoogle Driveつきで価格1299ドル、4月にLTE版も
だとしたらPCの液晶をタッチスクリーンにするつもりなのか?
そうすると指紋液晶がべちょべちょになり、せっかくの高解像度が台無しになってしまうと思うのだが。

とは言いつつもちょっと触ってみたい。

2013/02/26

[html][css][JavaScript]modern.IE

microsoftからツールがリリースされたようです。
 photo modernie_01_zps5d836e3e.png

念のために書いておくと、Microsoftは「Internet Explorer(IE) 10」について、これまでのアップデートとは違って多くの非難を浴びるようなブラウザではないということを、ユーザーに心から理解してほしいと願っている。それを示す最新の例が、米国時間1月31日に発表されたウェブ開発者向けのツールセット「modern.IE」だ。

via:マイクロソフト、ウェブ開発者向けツールセット「modern.IE」を公開
検証方法は、modern.IEに訪問して、下の画像にURLを入力する。
 photo modernie_02_zpsbc08721e.png
試しに、このブログのURLを入力したところ、以下のような結果を得ました。
 photo modernie_03_zpsb5dcbb98.png
jQueryのバージョンが最新ではないので、新しくしろと言われましたー。

これを使うことで、どのぐらい開発効率があがるのか、未だちょっと計測できない部分がありますが、中の人も旧IE対応が大変なんだなーっと認識していることを感じさせたエントリーでした。ってちょっと上から目線的な。


2013/02/24

[GoogleAppEngine][Python]Google Cloud Endpointsについて

なにやら便利なものが、

グーグルは、モバイルアプリケーションのバックエンド向けクラウドサービス機能「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がモバイルのバックエンドに
なるほど。つまり、サーバーサイドを意識することなく、クライアント作成に工数が多く割ける点がいいですね。

ちなみに、引用元は、対応言語が書かれていなかったのですが、公式リファレンスを読むとpythonもサポートされているようです。

もっと欲張りをいうと、appleのpush notificationもサポートしてほしいなー。

2013/02/23

[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

2013/02/22

[iOS][Objective-C]高速列挙の注意点

NSDictionaryやNSArrayなどを使って高速列挙を行う時に、なぜか、

Collection was mutated while being enumerated.
という動作エラーが発生するのだが、「iOSで配列を高速列挙で回すときの注意点」を読むと、どうやら高速列挙をまわしている時に、要素が追加されると落ちるようだ。

まー当然と言われれば当然かもしれないと納得してしまった。

2013/02/21

[iOS][Objective-C]ARC時のキャストについて

前回、Toll-free bridgeについて説明しましたが、どうやら、ARCを使ってキャストをする場合、「ARC bridge のまとめ」を読むとFoundation frameworkからCore Foundationにキャストする場合、

(__bridge クラス名)
と書く必要がありそうです。

これ覚えていないとコンパイル時の警告がとれないので、注意が必要です。

2013/02/20

[Python][GoogleAppEngine]JSONをパースする方法

以前、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メソッドを使えばパースすることができます。

とっても便利です。

2013/02/19

[HTML]Operaがwebkit採用

これで、本当の意味で、主要ブラウザが3種類になりました。

今週初めにOperaは、Prestoと呼ばれる独自のレイアウトエンジンを捨ててWebKitに鞍替えする、と発表した。

via:ここに来てMozillaの存在意義, WebKitに乗り換えないことの意味
Firefoxは一体、どうするんだろう??
ってか、制作コストを考えると、webkitにしてほしいと思ったりもします。

よく選択肢は多ければいいという意見もありますが、作り手はそれなりに大変なわけで。

IEがwebkitにするというのは、あまりにも現実的な話ではないので諦めていますが。

2013/02/18

[IT用語][iOS][Objective-C]Toll-free bridgeって??

よくiOSのdevリファレンスを覗いていると、

Toll-free bridge
という言葉を目にします。

そもそも、Toll-free bridgeって何??

調べてみると、

えっ?Toll-free bridge とはなにかって?ここでは、オブジェクトを変換することなく、キャストするだけで相互互換可能な仕組みのことらしい。
たとえば、CoreFoundation の CFStringRef と、Cocoa の NSString は toll-free bridge で結ばれてるんだ。CFStringRef には CFStringGetLength() っていう関数がある。これを NSString のオブジェクトに使うことができるんだ。

via:Toll-free bridge の実現方法
ってあり、CoreFoundationとFoundation frameworkの差を意識することなく使うことができることなので、これは便利ですね。

2013/02/17

[iOS][Objective-C]CoreTextを使う方法

CoreTextを使いたいのだが、どうすればいいのだろうか?

Linker can't find CTFontCreateWithNameAndOptionsを閲覧すると、TARGETSの「Linked Frameworks and Libraries」のところで、「CoreText.framework」を追加します。

次に、そのframeworkを使いたい場合は、

#import <CoreText/CoreText.h>
とすればおkです。

なかなかCoreTextの日本語資料が少ないので、実際に使えるようになるまでに結構、時間がかかりました。

2013/02/16

[iOS][Objective-C]UITextViewからフォーカスをはずす

UITextViewからフォーカスをはずすにはどうすればいいのだろうか?
iPhone テキストフィールドからフォーカス外すを参考にすると、下のように組めばおkなことがわかりました。

UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(0,0,100,100)]; 
[textView endEditing: YES];
で確かに、これを使うとはずすことができました。

便利、便利。

2013/02/15

[chrome]gpuの確認

chromeでgpuの確認方法について調べました。

chrome://gpu

via:Google Chrome のcanvasタグがGPUアクセラレーション対応に
アドレスバーに上を入力すると確認できます。

2013/02/14

[iOS][Objective-C]Dispatchのリリースについて

前回、ARCでGrand Central Dispatchをリリースを書きました。

であれから少し使ってみて、dispatch_get_main_queueまたはdispatch_get_global_queueで取得したqueueに対して、dispatch_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
dispatch_get_global_queueもreleaseをしなくていいことなので伝家の宝刀のように乱発しそうです。

2013/02/13

[iOS][Objective-C]UIColorの比較

UIColorがある色と同じかどうかを比較する場合、どうすればいいのだろうか?

UIColorも結局クラスなので、下のような処理で比較することができました。

UIColor hoge;
UIColor foo;
if([hoge isEqual:foo]){


}
これで、UIFont同士の比較も困らないぞと。

2013/02/12

[iOS][Objective-C]UIActivityIndicatorViewの表示サイズ

UIActivityIndicatorViewは下の3種類があります。

UIActivityIndicatorViewStyleWhite
UIActivityIndicatorViewStyleGray
UIActivityIndicatorViewStyleWhiteLarge
で、いつも実装しているときに気になっているのですが、これってそもそも大きさってどのぐらいあるのだろうか?

ぐぐってみた結果、下のような結果を得ました。

UIActivityIndicatorViewStyleWhite: 21x21 px
UIActivityIndicatorViewStyleGray: 21x21 px
UIActivityIndicatorViewStyleWhiteLarge: 36x36 px

via:iOS 5からのUIActivityIndicatorViewの変更
メモしておけば今後の実装の目安になりますね。

2013/02/11

[iOS][Objective-C]UINavigationBarのdelegateについて

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
上の文章を読んで納得しましたー。

2013/02/10

[iOS][Objective-C]iOS 6でUITextViewの不具合らしきものが

UITextViewのdelegateにメソッドを送ったとき、下のようなエラーがでてきます。

: 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
すでにstackoverflowにアップされていたが、どうやらiOS6の不具合のようです。

iOS6.1の実機で検証してもでてくるので、まだ治ってないと思われる。

2013/02/09

[iOS][Objective-C]NSStringの前後にある半角スペース、改行、アルファベットをトリミングする方法

まータイトル通りなのですが、どうするのかなと?

前後にある半角スペースのトリミング方法

NSString* str = @"文字列";
str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

前後にある改行のトリミング方法
NSString* str = @"文字列";
str = [str stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];

前後にある全角スペースと改行のトリミング方法
NSString* str = @"文字列";
str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

via:【Objective-C】NSStringの前後にある半角スペース、改行、アルファベット、数字をトリミングする方法。
これはもうめっちゃ便利。

同エントリーは、他にも「前後にあるアルファベット文字セットのトリミング方法」と「前後にある数字の文字セットのトリミング方法」が書かれているので、もう一歩突っ込んで見てみたい方は、是非、参考になると思います。

2013/02/08

[iOS][Objective-C]iOS6.1にバージョンアップ

Photobucket
前回、iOS6にバージョンアップしてから半年たたずにiOS6.1がリリースされたのでさっそく手持ちのiPod touchをアップデートしてみた。

はっきり言って違いがわからないが、iOS Developer Libraryを読むと、MapKit関連で更新が発生しているが、googleがこの前オリジナルのmapアプリを出したし、かつsdkも搭載されているので、あまり関心がないな。

2013/02/07

[iOS][Objective-C]UINavigationBarにあるUIBarButtonItemの色を変更する

iOS5からの追加された新クラスUIApperanceを使ってUINavigationBarの中にあるUIBarButtonItemの色を変更する方法を調べてみた。

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTintColor:color];

via:UIAppearance で色や画像を変える
こうすることで、UINavigationItemのそれぞれ、
backBarButtonItem
leftBarButtonItem
rightBarButtonItem
のボタンの色を変更することができます。

これはめっちゃ便利。

2013/02/06

[iOS][Objective-C]外影のパフォーマンスをアップする方法

昨日、「Viewの外側に影をつける方法」を調査しましたが、ちょっとUIの動きが遅くなり、困っていたら、解決方法がありました。

で、このコードに下記の3行を付け加えてやると、体感でわかるぐらいに改善されます。

self.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.bounds].CGPath;
self.layer.shouldRasterize = YES;
self.layer.rasterizationScale = [UIScreen mainScreen].scale;

via:CALayer を用いた「影」の描画処理を軽くする
実際に、追加してみると、体感速度で全然、違います。

是非、試してみることをオススメします。

2013/02/05

[iOS][Objective-C]UIViewに影をつける

UIViewを継承したViewの外側に影をつける方法について調べました。

5. UIViewを角丸にしたついでに影とかつけたい。

影もつけたいですよね。そうくると思ってました。わかります。

じゃあ、こんなとき、どうするの??

これも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);

via:【ぐぬぬ】iPhoneアプリのこんなとき、どうするの??
というわけで、さっそく上を見ながら実装すると、確かに影がつきましたー。

ただ、shadowOpacity、shadowOffsetの設定でどう変化するのかわからなかったので、さらに突っ込んでぐぐると、「画像に影を付けたいのでいろいろプロパティをいじってみた」に各値を変更したときの画像があったので今度から、こちらを参考に実装していきたいと思いましたー。

2013/02/04

[chrome]Hewlett Packardもchromebookをリリース?

前回、レノボからChromebookが発売されるエントリーを書きましたが、ヒューレットパッカードも出すようです。

Hewlett-Packard(HP)は、サムスン、Acer、Lenovoに続いて「Chromebook」市場に参入する計画のようだ。

via:HP製「Chromebook」、スペック表がウェブで一時公開
すでに、スペック表も公開されているようです。

ってか、お願いだから、日本にもだしてー。