2013/01/31

[bootstrap]GoogleBootstrap

あれ、前はアクセスできたのに、今はできなくなっている。なぜだろうか?

Google風のBootstrapテーマ「GoogleBootstrap」。
Bootstrapベースに組まれているようですが、Google関連サイトライクなUIに出来る模様。
気づかない人はわからないかも、な変更ですが、分かる人には分かる、といった感じでしょうか。

via:Google風のBootstrapテーマ「GoogleBootstrap」
確かに最初に見た時、どこが違うのか全然わからなかった。これはっきりわかった人いますかー?

2013/01/30

[design]Apple 15年のweb歴史

ちょっと面白いエントリーを見つけたので。

今までのApple.comページをスライドショーにまとめています。その数なんと141スライド!

via:アップルウェブサイト「Apple.com」の15年の歴史をスライド(全141枚)でどうぞ
というわけで、そのスライドを下にエンベッド
ちなみに、同じ作者ではないと思うのですが、今までに放送されたCMを集めた動画版もあるようです。

なんかデザインの勉強になるなー。見ているだけで面白い。

2013/01/29

[Python][google app engine]URLを数字指定にする

よく、hatenaブログあたりにみかけるのだが、
「http://hoge.co.jp/12345」
と数字でurlが表現されている場合がありますが、これをgoogle app engineでやる場合は、どうすればいいのだろうか?

「http://hoge.co.jp/012345」
と頭に0がついてもokという仕様だとするとyamlは以下のようになります。

handlers:
- url: /([0-9]+)
  script: hoge.app
hoge.appではこのようになります。
class Hoge(webapp2.RequestHandler):
 def get(self,foo):
  pass
app = webapp2.WSGIApplication([
    (r'/([0-9]+)', Hoge)
],debug=False)
マッチした文字列部分は、Hogeクラスのfooという変数で補足することができます。

もちろんセキュリティ的にあまい部分があると思うので、単純にこれでokというわけにはいかないと思うが、とりあえず、この方法で取得することができました。

2013/01/28

[HTML]canvasのwidthとheightがずれる件

なぜだー??

下のようにcanvasタグを作ると、図形を描画したときにずれてしまうwww

<canvas style="width:100px;height:100px;"></canvas>
どうやら、「Canvasタグはwidth,height属性で縦横を指定しないとおかしな事になる。」によると、width属性とheight属性しか、canvasタグは持ち合わせていないようだ。

従ってこんな感じに書く。
<canvas width="100" height="100"></canvas>
確かに、ずれがなくなりました。

一見落着、落着。

2013/01/27

[jQuery]「公式」のプラグイン・レジストリができたようです

やっとできたーという印象です。

2013年1月17日、jQuery「公式」のプラグイン・レジストリ(プラグインの集積場)が公開されました! URLはこちらになります。
http://plugins.jquery.com/

via:jQuery公式プラグイン・レジストリが公開。GitHubと連携など、今風の仕組みに惚れ惚れ
同エントリーでも言及されていたが、確かに、あらゆるところに、プラグインが乱立しすぎて、一箇所に集まらないのかなーという不満はありました。

不満だけじゃーなにも進まないと思い、自作しようとかなと考えてはいたのですが、こうして、できて何よりです。

ただ、一個だけ要望すると、このページ上で、各pluginのデモができたらもっと素敵だなーっと思いました。

2013/01/26

[Objective-C][iOS]multipart/form-data形式で画像をPOSTする

Google App Engineに向けてiOSから画像データをPOSTする処理を考えていました。

Instgramを見てみると、サーバーは違えども、ASIHTTPRequestライブラリを使っているようだし、stack overflowを見ても、そのライブラリを使った方がいいみたいなコメントがあったけど、いまいち、使う気になれず。

そこで、Objective-Cでmultipart/form-data形式でPOSTするのエントリーを見ながら素直に実装するが、サーバー側でエラーが発生してしまう。

なんでだろうーっと思った結果、下記のコードを追加することでエラーを取ることができました。

[data appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n", key1,key2] dataUsingEncoding:NSUTF8StringEncoding]];
[data appendData:[@"Content-Type: image/jpeg\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
この2行を追加しなかったために、実装するのに丸々3ヶ月近くかかりました。

結果的にできたので、すっげーほっとした。

ただ、上の処理を追加しなくてもamazonのcloudサービスにはアップできるかもしれないし、Windows Azureにもできるかもしれない。

今回のケースは、あくまで、google app engineとして必要だということです。

これを追加しなくても、画像をアップロードできる方法があったら、コメントいただけると幸いです。

2013/01/25

[iOS][Objective-C]POSTの進捗具合を把握する方法

画像データや動画データをサーバーにPOSTするとき、いったい、どれぐらい送信されたのか気になるときがあります。

で、その方法を調べたら、無題メモランダムさんの「Facebook iOS SDKを使ってiOSアプリからFacebookに画像をアップロードする方法」に書かれていたのでメモ代わりに残そうと思います。

Deprecated NSURLConnectionDelegate Methods

- (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite
を使えば実装できるとのことです。

ただ、このメソッド、「Deprecated」と書かれているのだが、NSURLConnectionDelegate Protocol Referenceを見ると、「required method」と書かれていたり、いったい、どっちなんじゃい?と思ってしまう。

まーでも、これで出来たんだから、ひとまずよしとするか。

2013/01/24

[iOS][Objective-C]iOSから直接、app storeのレビューページを開く方法

著者さん、GJ

Viddyのアプリ内に、app storeのレビューページに遷移する機能が実装してあって、これってどうやっているんだろうって思っていたら、やり方を発見しました。

NSURL *url = [NSURL URLWithString:@"http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=[APP_ID]&mt=8&type=Purple+Software"];
[[UIApplication sharedApplication] openURL:url];

via:[Xcode][objective-c]iPhoneアプリからアプリのレビューページに直接遷移する方法
上に書かれている[APP_ID]はapp idに差し替える必要があります。

それにしても、これ、どうやって発見したんだろう?

iOSのリファレンスにあたってみたが書かれてなかったし。

まー、でも、これでできたんから、まぁ~いいっかっと開き直りました。

2013/01/23

[iOS][Objective-c]Tabbarに画像を設定

iOS5からUITabbarの背景画像を設定できるようになったのですが、そもそも、画像の大きさってどうすればいいの?

アプリの雰囲気がグッと高まる!TabBarの背景や、アイコンを好きなようにカスタム!によると、

Not Retina:320×49
Retina:640×98

で用意すればいいようです。

では、選択された(ハイライト)の時の画像の大きさは?

Not Retina:(320/タブの数)×49px
Retina:(640/タブの数)×98

こうしてまとめておけば、すぐに振り返れるので便利かなと。

2013/01/22

[admob][iOS][Objective-C]admob SDKを使う時の注意

前回、書いた「Facebook SDK for iOSの注意点」と同様なのだが、admob SDKを使う場合は、AdSupport.frameworkをOptionalにすること。

admob sdkのIntroductionを読むと、文章ではなく、図であったので、若干、わかりにくい。

facebook sdkと同様、導入するときは、気をつけたいですね。

2013/01/21

[思い出]祝:息子が2歳になりました!!

もう、あれから一年、無事に2歳を迎えました!!
 photo myson-birthday2years_zps59796c33.jpg
重い病気もせず、健やかに育って本当にうれしい限りです。

毎日、毎日、かわいい顔を見ては、そのほっぺを吸いまくっているわけですが、持病である鼻炎を乗り越え、また、一年、元気に、育ってほしいなと思う次第であります。

聡斗の一年を振り返る

  • 以前にも、まして、電車、バス、ゴミ収集車など各種乗り物が好きになった。
  • 音楽を耳にしては、踊るようになった。
  • パパ、ママ、ジジをはじめ、ブドウ、モモなどが発音できるようになった。
  • iPadに入っているYouTubeアプリを大分、自分のものにできるようになった。
  • きちんと二足方向できるようになった
と数え上げればきりがないが、本一年も、急激な成長をみせるに違いない!!

さてさて、今年は、何をマスターするのだろうか?

2013/01/20

[facebook][iOS][Objective-C]Facebook SDK for iOSの注意点

facebook SDK for iOSを利用する時の注意点および備忘録。

Getting Started with the Facebook SDK for iOSを読めば、確かに書いてあったのだが、

  • AdSupport.framework
  • Accounts.framework
  • Social.framework
を「Required」ではなく、「Optional」に設定すること。

これをしないと、前回、「dyld: Library not loaded:エラーについて」でも書いたが、iOS5とiOS5.1でエラーが起こり、最悪、iOS6では動くのだが、アプリが起動しないということもあります。

なので、今後、注意したいところ。

2013/01/19

[chromebook]レノボからChromebookが発売

これはすごい。

Lenovoは、教育市場を対象とした同社の「ThinkPad X131e」の新しいバージョンを発表した。これにより「Chromebook」の分野に参入する。耐久性に優れた同Chromebookは、小学校に通う生徒による乱暴な扱いに耐えるように設計されており、教育市場のみを対象に提供される予定だ。

via:レノボ、「ThinkPad」ブランドの学校向け「Chromebook」を発表
これは、是非、うまくいってほしい。

周りを見ていると、もはや、パソコンを買う意義はどんどん失いつつある。

パソコンを一度も買ったことがなかった母親が、いきなり、androidのスマホをもったり、

window 98以来、パソコンを買ったことがなかった親父が、突如、iPadを買ったり、

ガラケーで十分だった弟が、ネット回線も、パソコンもない環境で、スマホを買ったり。

もはや、画像を見たりあげたり、動画を見たり、音楽を聴いたりする習慣は、スマホやタブレットでできてしまうし、そこで重要なのはネットに接続できていること。

それを踏まえると、windowsを買って立ち上げた瞬間メーカーがデフォで入れてあるたくさんのソフトは不要なのである。

だから、パソコンは、ネットだけ接続できる無茶苦茶コンパクトなものか、macのようにエンジニアやデザイナーやミュージシャン向けのハイエンドの二極化でいいと思うのだ。

なので、今後の動向に非常に注目する。

 photo chromebook-lenovo-thinkpad_zpsafa71b5b.jpeg

ちなみに、日本でも、発売されないかな。

2013/01/18

[iOS][Objective-C]UISwitchのカラーを変更

以前、読んだ、iPhoneプログラミングUIKit詳解リファレンスには、書いてなかったことなので。

UISwitchの色のついている部分。(下のピンク色部分)
 photo UISwitch_zps9e6bc432.png
これは、iOS4までは変更できなかったのですが、iOS5から、どうやらできるようになったようだ。

具体的には、以下のようにする。

UISwitch *hoge = [[UISwitch alloc] init];
hoge.center = CGPointMake(100,100);
hoge.onTintColor = [UIColor alloc] blueColor];
onTintColorプロパティで設定することができます。

これで少しは表現の幅が広がりましたー。

iOS5以前の、特に、iPhone3Gに対応させたい場合、具体的には、iOS4.2なんだけど、その場合は、どうすればカスタマイズできるのだろうか?

iPhoneプログラミングUIKit詳解リファレンス
所 友太
リックテレコム
売り上げランキング: 7,103

2013/01/17

[iOS][Objective-C]dyld: Library not loaded:エラーについて

iOS6ではうまく動くのにiOS5.1やiOS5では、なぜかうまく動かない><

こんなエラーが表示されたwww

dyld: Library not loaded: /System/Library/Frameworks/Social.framework/Social
//省略
Reason: image not found
原因を調べていたら、どうやら、iOS6から追加されたフレームワークを必須としていたため、エラーが起きていたようだ。

なので、Xcodeの「Linked Frameworks and Libraries」にある「Required」を「Optional」に変更すればいいようだ。

Socail Frameworkを例に取ると、RequiredとOptionalでそれぞれ以下のようになる。

Requiredの場合(下の図の赤線部分)
 photo iOS_libraries_required_zps36bc48e6.png

Optionalの場合(下の図の赤線部分)
 photo iOS_libraries_option_zpsa1483afc.png
今度から注意したい。

2013/01/16

[Google App Engine][Python]画像URLをdb.BlobPropertyにストアする方法

画像URLをdb.BlobPropertyに保存する方法について調査しました。

Google App Engine で動的な画像を処理する(Python)を読んだところ、下のような形でいけそうです。

from google.appengine.api import urlfetch
from google.appengine.ext import db

class Test(db.Model)
 picture = db.BlobProperty(default=None)

result = urlfetch.Fetch(picture_url)
if result.status_code == 200:
 test = Test()
 #picture_urlは、画像URL
 test.picture = db.Blob(result.content)
 test.put()
ポイントは、やはりcontentプロパティを使うところでしょうか。

割と簡単に実装できるので素敵!!

2013/01/15

[iOS][Objective-C]NSLogでBOOL型のデバッグ

NSLog関数を使ってBOOL型のデバッグを行ないたいときどうすればいいんだろう?

猫も茶を飲むさんのObjective-CでBOOL型をNSLogに出力するを読むと、%dで出力できるようです。

つまり、このようになる。

//boolValはBOOL型の変数
//YESの場合は1、NOの場合は、0になります。
NSLog(@"BOOL is %d",boolVal);
毎回、毎回、BOOL型の出力をしたい度にぐぐっていたので、もう困ることはないぞと。

2013/01/14

[Google App Engine][Python]画像のリサイズ

Images Python API の概要を読みながら画像のリサイズ方法について調査する。

下のようなコードでいけそうです。

from google.appengine.api import images
#-------------------------
#省略
#-------------------------

#image_real_dataは、db.BlobProperty()から読み出したバイナリーデータ
img = images.Image(image_real_data)
img.resize(width=100, height=100)
img = img.execute_transforms(output_encoding=images.JPEG)
self.response.headers['Content-Type'] = 'image/jpeg'
self.response.out.write(img)
注意したいのは、execute_transformsメソッドを実行すること。

デフォルトでは、リサイズ後の画像形式がPNGになってしまうので、images.JPEGにしてjpegで吐き出すということ。

後、execute_transformsを読むと、第二引数にqualityがあって、ここで品質を設定することができます。

デフォルトは、85

こうしてまとめておけば、リサイズ処理も困らないぞと。

2013/01/13

[Google App Engine]Frontend Instance Classについて

Google App EngineのApplication Settings画面で、Frontend Instance Classというのがあります。

で、合計で3種類から選ぶことができるのだが、この違いって??

ちなみに、下の3種類があります。

Frontend classMemory limitCPU limit
F1 (default)128MB600MHz
F2256MB1.2GHz
F4512MB2.4GHz

もちろん、パソコンを考えれば、数値が多きほうが優れているのは自明の理なわけだが、もう少し掘り下げると、下が答えになるのかなと。

インスタンス: 決められた量の CPU とメモリを確保し、みなさんのコードを実行する小さな仮想環境
フロントエンドインスタンス: 外から来るリクエストの量に応じて動的にスケールする一方、リクエストの処理時間に制限があるインスタンス

Q: インスタンスとは何ですか?
A: App Engine がコードを実行する時には、決められた量の CPU とメモリを使用してコードを実行する小さな仮想環境を作成します。Java アプリケーションを動かすなら、App Engine は新しい JVM を起動し、そこにコードを読み込みます。

via:App Engine の料金体系変更に関する FAQ
当然のことながら、ある程度リクエスト数が大きくなるとインスタンスを大きくする必要があるんだなと。

2013/01/12

[iPod touch]フリーズした

アプリを作っていて実機で確認していたら、突然、フリーズ。

Xcodeから再度、ビルドしても動かず。

スリープ/スリープ解除ボタンを長押ししても赤いスライダが表示されず。。。

どうすればいいのかなーっと思って検索していたら、強制再起動の方法が書かれていました。

iPod touch が反応しない場合は、スリープ/スリープ解除ボタンとホームボタンの両方を Apple ロゴが表示されるまで 10 秒以上同時に押し続けて iPod touch をリセットします。

via:iPod touch を再起動する
おー、この方法で、無事に再起動できました。

長年、iPod touchを使っていましたが、こんな対応方法があるとは。

iPhone5用の実機確認として、最新のiPod touchがほしいなー。
最新モデル 第5世代 Apple iPod touch 32GB ホワイト&シルバー MD720J/A
最新モデル 第5世代 Apple iPod touch 32GB ホワイト&シルバー MD720J/A

2013/01/11

[BootStrap]Elusive icons

これ、なんか、よさげ。

Bootstrapに270の使えるアイコンを追加できる「Elusive icons」
Bootstrap標準アイコンも140種類と豊富に使えますが、これに270種類を追加すれば、アイコンにはもう困らないかも。
Bootstrapを使っている方、使おうと思っている方は是非覚えておきたいですね。
ベクター形式なので拡大してもOK。

via:Bootstrapに270の使えるアイコンを追加できる「Elusive icons」
実際にサイトに訪問したら、lessを使った適用方法、CSSを使った場合、さらにIEを考慮したときも丁寧に書かれていたので、割と楽に導入できるのかなと。これは、便利。

2013/01/10

[本]超訳 ニーチェの言葉

読了
超訳 ニーチェの言葉
超訳 ニーチェの言葉
白取 春彦(翻訳)

己について
喜について
生について
心について
友について
世について
人について
愛について
知について
美について

via:目次

amazonの書評では、酷評されていたけど、そんなに悪くはないと思ったのだが。

何がよかったのかって、ニーチェ自身のことは、確かに本書を読んでもわからないと思うのだが、詩として読む分には、おkかなと。

普通に感動したし、凹んでいるときに再読したら、涙流すだろうし。

話は変わるけど、箔付き版も出版されているみたいだけど、何故??

超訳 ニーチェの言葉(ピンク箔版)

2013/01/09

[jQuery UI]Sortableについて

jQuery UIのSortableを読むと、次のように書いてあります。

<!doctype html>
 
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>jQuery UI Sortable - Default functionality</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.8.3.js"></script>
  <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css" />
  <style>
  #sortable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
  #sortable li { margin: 0 3px 3px 3px; padding: 0.4em; padding-left: 1.5em; font-size: 1.4em; height: 18px; }
  #sortable li span { position: absolute; margin-left: -1.3em; }
  </style>
  <script>
  $(function() {
    $( "#sortable" ).sortable();
    $( "#sortable" ).disableSelection();
  });
  </script>
</head>
<body>
 
<ul id="sortable">
  <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 1</li>
  <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 2</li>
  <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 3</li>
  <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 4</li>
  <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 5</li>
  <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 6</li>
  <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 7</li>
</ul>
 
 
</body>
</html>
これ、ulタグからメソッドを実行しているけど、ulタグ以外にも適用することはできないのだろうか?

実際、いけそうです。下記ソース。

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script src='http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js' ></script>
<style>
.ui-state-default{
 height:100px;
 width:100px;
 border:solid 1px black;
 background-color:gray;
}
</style>
</head>
<body>
<div id="container"></div>
<script>
jQuery(function($){
 $("#sortable").sortable();
});
</script>
<div id="sortable">
 <div class="ui-state-default">
 1
 </div>
 <div class="ui-state-default">
 2
 </div>
 <div class="ui-state-default">
 3
 </div>
</div>
</body>
</html>
重要なのは、ベースのidに対して、子供の要素にclass="ui-state-default"ということ。

これは、便利。

2013/01/08

[iOS][Objective-C]UIImageViewの角丸について

以前、UIViewの角を丸くする方法について書きました。

で、今回、同じ要領で、UIViewを継承しているUIImageViewにも同じことをやろうとしたら、なぜか角丸にならないwww。

どうしてだーっと思って悩んでいたら、結局のところ、clipsToBoundsプロパティをYESにしないとならないようだ。

不覚。

2013/01/07

[jQuery UI]Draggableのコールバック設定

ちょっと前にDraggable機能の実装方法について調査しました。

そこで、今度は、これにコールバックを設定したいのですが、どうすればいいのでしょうか?

sliderのイベント設定と同じようにJSON形式でパラメータとして渡せばおkなようだ。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script src='http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js' ></script>
<link  type='text/css' rel='stylesheet'  href='http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/ui-lightness/jquery-ui.css' />
<style>
#draggable_01 {
 width: 150px;
 height: 150px;
 padding: 0.5em;
}
</style>
<script>
jQuery(function($) {
 $("#draggable_01").draggable({
  //ドラッグがスタートしたとき
  start:function(event,ui){

  },
  //ドラッグが終わったとき
  stop:function(event,ui){

  }
 });
});
</script>
</head>
<body>
<div id="draggable_01" class="ui-widget-content">
This is test contents1
</div>
</body>
</html>
これで、Draggable APIのコールバックも困らないぞと。