2018年4月9日月曜日

Migration Python2.7への移行

1. 以前のプログラムのソースをダウンロードして、 app.xml を変更して deployする

503 python -V   // まず Mac にインストールされている python のバージョンを確認
504 pwd
505 curl https://sdk.cloud.google.com | bash // google cloud SDK のインストール
506 source ./.bash_profile 
510 cd google-cloud-sdk/  // 以前作成したアプリのダウンロードの準備
514 mkdir google-cloud
515 cd google-cloud
516 appcfg.py download_app -A snsimglink-hrd -V 1 ./ -oauth2  // appcfg.py がみつからない
517 python appcfg.py download_app -A snsimglink-hrd -V 1 ./ -oauth2 // 無駄な試み 
519 cd ..
520 cd google-cloud-sdk/
523 find . -name appcfg.py -print  // みあたらない
527 pip install google-cloud-storage // google-cloud-storage をいれればいいのか? 
528 sudo easy_install pip   // pip がなかったのでまず pip を install
529 pip install --upgrade google-cloud-storage

// https://cloud.google.com/appengine/docs/standard/python/download#appengine_sdk 
// appcfg.py を入手するには
// 以前の GoogleAppEngineLauncher-1.9.68.dmg 
// をインストールする必要があった
537 cd google-cloud 
// google cloud のコンソールで application の名前とバージョンを確認
540 appcfg.py -A museum-in-cloud-hrd -V 1 download_app ./museum-in-cloud
543 cd snsimglink/
547 dev_appserver.py . // 試しにローカルで動かそうとするもいろいろエラーで動かない
548 gcloud app deploy
549 cloudg auth login
550 cloudg app deploy
551 cloudg config set project museum-in-cloud-hrd

553 gcl app deoudloyp  // app.xmlappclitaion, version をコメントアウト
      ERROR: 
      (gcloud.app.deploy) The [application] field is specified in file ..
      (gcloud.app.deploy) The [version] field is specified in file ..
 ...
        This field is not used by gcloud and must be removed. 
    Versions are generated automatically by default but can also be manually specified 
    by setting the `--version` flag on individual command executions.

555 gcloud app deploy -v 2 // バージョン指定しないと deploy するたびに新しいバージョンになってしまう

2.  webapp を webapp2 にdjango を jinja2 に変更する

Python2.7 でも django はサポートされているようなので引き続き使おうとしたが
サンプルプログラムを動かすために SQL Cloud などの設定も必要

gusestbook のサンプルプログラムが更新されていて、ここで jinja2 が使われていたので、
jinja2 を利用することにした。
app.xml
---
#application: museum-in-cloud-hrd
#version: 1
#runtime: python
runtime: python27
api_version: 1
threadsafe: true

handlers:

- url: /blog
#  script: hw_blog.py
  script: hw_blog.app

libraries:
- name: webapp2
  version: latest
- name: jinja2
  version: latest
#- name: django
#  version: "1.2"

hw.py
---
#from google.appengine.ext import webapp
import webapp2
import jinja2
JINJA_ENVIRONMENT = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)+"/templates4j"),  //この環境固有
    extensions=['jinja2.ext.autoescape'],
    autoescape=True)
#from google.appengine.ext import vendor
#vendor.add('lib')

3.   jinja2 用に templateファルを変更する

 ifequal endifequal を if endif 
{% value %} を {{ value }} に変更
変数の中に html のタグなどを記述していた場合は {{ value | safe }} とする

4.  準備中

準備中
console
参考






2013年4月4日木曜日

StoryBoard push segue sample

1 StoryBoard によりButtonを配置して、右クリックしながら次の ControllerViewの画面までドラッグし、modalと接続することでコードの記述なしで画面の遷移を実装することができます。
  1. push segue (push セグエ)
    NavigationBarを用意して画面遷移をする場合に利用する。
    NavigationBarを用意せずに、Push形式でSegueを作成してはいけません。
  2. modal segue (modal セグエ)
    NavigationBarを使わずにビュー間を移動する場合に利用する。
    Modalセグエ(モーダル セグエ)で遷移すると、ソースビュー(遷移元ビュー)の上にターゲットビュー(遷移先ビュー)が生成され重ねられます。従って、モーダルでループ遷移は作らないようにしてください。
  3. custom segue (custom セグエ)
    UIStoryboardSegueクラスを継承したサブクラスを作成することで、トランジション効果を独自に演出することができます
  4. relation ship (関係:リレーション)
    リレーションはシーンとシーンをつなぐ接続の一種ですが、セグエではありません。
    TabBarControllerと各Tabbarのボタンに関連付けられてる子ビューをつなげる場合などに使います。























2.  tab sample





















3  push sample

先頭の NavigationControllerなしで push を使用すると以下のようなエラーとなります

*** Terminating app due to uncaught exception 'NSGenericException', reason: 'Push segues can only be used when the source controller is managed by an instance of UINavigationController.'























参考


画面間のデータの受け渡し

Storyboard上でビュー上に配置したボタンを右クリックしながら遷移させたいビューまでドラッグして接続するだけです。このときにpush, modal, customの3つの遷移の仕方が選べます。pushは次のビューが右から左に出てくるエフェクトで、modalは下から上に出てくるエフェクトです。customは自分でこのエフェクトを作成するときに使います。
http://d.hatena.ne.jp/Kesin/20120908/1347079921

2013年3月20日水曜日

phonegap-facebook-plugin



















phoneGap 2.5 
+ phonegap-facebook-plugin + facebook SDK3.2 Xcode 4.6.1 iOS(phoneGap)で facebook の
javascript SDKを動かす 




まず、phoneGapをインストールして
コマンドラインより、Xcode の
プロジェクトを作成 作成したプロジェクトを実行してみる






ダウロードした phoneGap の zip ファイルを解凍し、
解凍したディレクトリに移動して create を実行
$ cd phonegap-2.5.0/
$ ./lib/ios/bin/create ./HelloFBjs HelloFBjs HelloFBjs



作成された project を Xcode で開き、
実行してエラーがないことを確認
一部、警告が表示されるが 表示部分をコメントアウトして
config.xml に同等の内容を追記













































appId を設定し fql も動作OK

           document.addEventListener('deviceready', function() {
                                      try {
                                      alert('Device is ready! Make sure you set your app_id below this alert.');
                                      FB.init({ appId: "XXXXX", nativeInterface: CDV.FB, useCachedDialogs: false });
                                      document.getElementById('data').innerHTML = "";
                                      } catch (e) {
                                      alert(e);
                                      }
                                      }, false);



   *     FB.login(function(response) {
   *       if (response.authResponse) {
   *         // if you need to know which permissions were granted then
   *         // you can can make an fql-call
   *         FB.api({
   *                  method: 'fql.query',
   *                  query: 'select read_stream, publish_stream, ' +
   *                    'offline_access from permissions where uid=me()'
   *                },
   *                function (data) {
   *                  if (data[0].read_stream) {
   *                    // we have read_stream
   *                  }
   *                });
   *       } else {
   *         // user is not logged in
   *       }
   *     }, {scope:'read_stream, publish_stream, offline_access'});

2013年3月19日火曜日

PhoneGap 2.5 and WebKitStoreWebDataForBackup

WebKitStoreWebDataForBackup は NSUserDefaultsに設定する
バンドルされる XXX-info.plist ではない


http://developer.apple.com/library/ios/#releasenotes/General/RN-iOSSDK-6_0/index.html
In iOS 6 and later, web data (SQL Web Storage and LocalStorage) from a UIWebView object can be stored in a directory that will be backed up. To enable backing up this data, set the WebKitStoreWebDataForBackup key to YES in your app’s user defaults. This should be done only if your app relies on web content data that cannot be reloaded. If your UIWebView object opens links to arbitrary web content, this key should be set to NO. Toggling the value of this key will not preserve existing web view data.

$ ./lib/ios/bin/create ./HelloWorld org.apache.cordova.HelloWorld HelloWorld
$ pwd
/Users/XXX/phonegap-2.5.0

 [[NSUserDefaults standardUserDefaults] setBool:[backupType isEqualToString:@"cloud"] forKey:@"WebKitStoreWebDataForBackup"];

 backupType = @"cloud"

 

http://phonegap-fan.com/ use Splashscreen is deprecated. http://docs.phonegap.com/en/2.5.0/cordova_splashscreen_splashscreen.md.html#Splashscreen

Unityでドアの開閉はAnimatorそれともiTween?

Mac Mini M2 の Unity で Sketchup のデータを復元したつづき。 以前、苦労して作成したドアの開閉が動作しないので修復する。 どうやって動かしていたのか、また忘れそうなので記録しておく。             Animator 左右のドア PlaneL,...