2014/12/19

[Google App Engine][yaml][Python]HTTPS対応

アプリのURLをHTTPSに対応させるためにはどうすればいいのだろうか?

Secure URLsで確認すると、以下のようにすればおっけーみたい。

handlers:
- url: /hoge/.*
  script: hoge.py
  secure: always
secureパラメータをalways設定にすればいけました。

2014/12/18

[Google App Engine][Python]repeatパラメータについて

下のようにプロパティーを設定したらエラーがでた。

hoge = ndb.StringProperty(default=[],required=True,repeated=True)
エラーの内容は、
raise ValueError('repeated is incompatible with required or default')
ValueError: repeated is incompatible with required or default
結果的に、
hoge = ndb.StringProperty(repeated=True)
これでおkだったんだけど、うーん、なんか納得いかない。

2014/12/17

[Google App Engine][Python]dispatchファイルをアップロード

前回作ったdispatchファイルをアップロードするには、どうすればいいのだろうか?

Updating the dispatch fileで確認すると、以下のコマンドでいけちゃうようだ。

appcfg.py update_dispatch アプリ名/ 
確かに上の方法で試したらできた。

2014/12/16

[iOS][Objective-C]Xocde6でiPhone3GS用のAppIconを登録できるようにする

Xcode6で新規に作成したプロジェクトではAppIconにiPhone App ios6、ios5のアイコンが登録できない。

これ、どうすればいいのかなーっと思って調べていたら、App Icons on iPad and iPhoneのTechnical Q&A QA1686に答えが書いてあった。

大きく分けてやり方は二つ

一つ目の方法は、Images.xcassetsの中にあるAppIconを新規に作成する。
「Images.xcassets」を選択した後、「+」をクリックして、「New App Icon」を選択すればおk
 photo xcode6_imageassets_appicon_zps784e0bd5.png
もう一つの方法は、既存のApp Iconを選択して、左パネルを表示させ、iOS 6.1 and Prior Sizesにチェックを入れる。
 photo xcode6_imageassets_appicon_2_zpsce4c6a0b.png

2014/12/15

[iOS][Objective-C]Xocde6でLaunch Screen FileではなくLaunch Images Sourceを使う

Xcode6で突如として現れた「Launch Screen File」

新規にプロジェクトを作ると「LaunchScreen.xib」ファイルが作成されており、画像で管理したい場合は、どうすればいいのだろうか?

まずは、LaunchScreen.xibを削除し、「TARGETS」の「App Icons and Launch Images」欄の「Launch Images Source」にある「Use Asset Catalog」をクリックする。

下のようなアラートが表示されるので、「Migrate」をクリック

Images.xcassetsファイルの中が下のようになります。
 photo LaunchImagesSource_3_zpsbfad5736.png
無事に画像管理にできてよかったです。

2014/12/14

[jQuery]wysihtml5を試す

PHPSPOTで紹介されていたHTML5ベースの音声入力可能なWYSIWYGエディタ「wysihtml5」を試してみた。

Githubのリファレンスを読みながら下のように実装をした。

scriptを読み込む

<script src="./jquery.min.js"></script>
<script src="./advanced.js"></script>
<script src="./wysihtml5-0.3.0.min.js"></script>
「wysihtml5-0.3.0.min.js」は、「wysihtml5-master」→「dist」の中にある。

「advanced.js」は、「parser_rules」の中にある。

次にコーディング
<div id="wysihtml5-toolbar" style="display: none;">
  <a data-wysihtml5-command="bold">bold</a>
  <a data-wysihtml5-command="italic">italic</a>
  <a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h1">h1</a>
  <a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h2">h2</a>
</div>
<textarea id="wysihtml5-textarea" placeholder="テキストを入力してね!!" autofocus></textarea>
最後にscriptを呼び出す。
<script>
jQuery(function($){
  var editor = new wysihtml5.Editor("wysihtml5-textarea",{
    toolbar:      "wysihtml5-toolbar", // id of toolbar element
    parserRules:  wysihtml5ParserRules // defined in parser rules set 
  });
});
</script>
これ、別途CSSで独自カスタマイズできるので、いいですね。

2014/12/13

[JavaScript]カスタムイベント

昨日、jQuery Notebookを試してみて、少しプログラムを見ていたのですが、

var contentArea = $('#jquery-notebook-content-' + $(this).attr('data-jquery-notebook-id'));
contentArea.val($(this).html());
var content = contentArea.val();
var changeEvent = new CustomEvent('contentChange', { 'detail': { 'content' : content }});
this.dispatchEvent(changeEvent);
と「new CustomEvent」と記載されていて、これは何なのかなーっと思って調査しました。

MDNのCustomEventの詳細がありました。

言葉通りなのですが、カスタムイベントを発行できるようです。
var obj = document.getElementById('hoge');
obj.addEventListener('cat', function(e) {
  console.log(e)
});

var event = new CustomEvent("cat", {"detail":{"bar":true}});
obj.dispatchEvent(event);
上の場合、console.logにe.detail.barでBoolを確認することができる。

普段、カスタムイベントもjQueryを使っているので、ネイティブにもあることが気がつかなかった。

ちなみに、当然のごとく、IEは対応していないっぽい。

2014/12/12

[jQuery]jQuery Notebookを試してみる

PHPSPOTで紹介されていたMediumみたいなカッコいいWYSIWYGな編集ができる「jQuery Notebook」
を試してみた。

まず、Font AwesomeからFontをダウンロード。

styleを下のように設定

<link href="./font-awesome.css" rel="stylesheet">
<link href="./jquery.notebook.css" rel="stylesheet">
次にscriptを設定
<script type="text/javascript" src="./jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="./jquery.notebook.js"></script>
後は、HTMLを書くだけ。
<div class="hoge-editor"></div>
<script>
jQuery(function($){
    $('.hoge-editor').notebook();
});
</script>
ポップアップで表示されたメニューをカスタマイズしたい場合は、
<div class="hoge-editor"></div>
<script>
jQuery(function($){
    $('.hoge-editor').notebook({
      modifiers: ['bold', 'italic', 'underline', 'h1', 'h2', 'ol', 'ul', 'anchor']
    });
});
</script>
で設定することができる。
placeholderは、
<div class="hoge-editor"></div>
<script>
jQuery(function($){
    $('.hoge-editor').notebook({
      placeholder: 'ほげほげ'
    });
});
</script>
で、できる。

ただ、IE9、IE8でエラーが発生しるんだよねー。

困ったもんだ。

2014/12/11

[Objective-C]Xcode6でStoryboardを削除する手順

といってもXcode5でStoryboardを削除する手順と書かれていることは同じ。

手順1:Main.storyboardを削除。

手順2:Info.plistの「Main storyboard file base name」の項目を削除。

2014/12/10

[jQuery ui]Resizableのinitされたときのコールバックについて

jQuery UIのResizableメソッドでinitしたときに、完了したことをcallbackすることはできるのだろうか?

答えはcreateパラメータで制御できそうだ。

<form>
  <textarea id="resizable" cols="80"></textarea>
</form>
<script>
jQuery(function($){
  $('#resizable').resizable({
    create:function(event,ui){
    }
  });
});
</script>
createパラメータの関数が一度だけ実行されます。