読者です 読者をやめる 読者になる 読者になる

bitnami wordpress、phpファイルが1分程度キャッシュされて開発しにくかった問題

macローカルで、bitnamiのwordpressを入れて開発していたが、どうもphpファイルがキャッシュされる…。が、1分程度して読み込む際には必ず更新される。(※キャッシュ系のプラグインは全く入れていない状態)

 

静的なhtmlファイルだとキャッシュされなかったので、これはphp周りの設定で何かあるなと思い、色々見ていったが、結局のところ、php.iniの、

[opcache]
zend_extension=opcache.so
; Determines if Zend OPCache is enabled
opcache.enable=0

 

というように、

opcache.enable=0

を0にすればokだった。

 

ただこれはローカルだからで、AWSなどweb上に展開しているbitnami wordpressだと、mod page speedがデフォルトでオンになっているから、という原因もあるかもしれない。

もし更新されないようであれば、合わせて、

http://drupal.stackexchange.com/questions/143642/bitnami-installation-forcing-me-to-flush-caches-while-theming

https://wiki.bitnami.com/Components/Apache/PageSpeed#How_to_check_if_mod_pagespeed_is_already_enabled.3f

を参考に、offにしてみることや、あと、html自体のキャッシュoff設定(<meta http-equiv="Pragma" content="no-cache"> など)もした方が、さらにいいのかもしれない。

ng-repeatにbackboneのcollectionを渡すときは…

ng-repeat="item in collection.models"

というように、modelsを渡さないとダメだった…。

 

しかし、collectionだけでもエラーにならず、何故か4回繰り返されるという現象が起こっていた…。

 

どうも、とにかくエラーにならないで何となく動いてしまうという事に慣れないですね…(>_<)

【cordova】crosswalk導入の際に詰まったところとapkのサイズ

 

The Crosswalk Project

Upgrading Crosswalk in a migrated project

の手順を実行することで、自分のcorodovaプロジェクトに、crosswalkを入れ込む事が出来た。

(※crosswalkは、cordova/ARM版を入れた。x86(intel製)の端末も最近は増えてきているようですが、ARMの方が圧倒的シェアのようなので…)

 

「6. Build the projects in this order:」

の、3の手順では、例えば自分の環境では、

cp -a /Users/suzukikuniaki/Downloads/crosswalk-cordova-11.40.277.7-arm/framework/* platforms/android/CordovaLib/

のように指定した。

 

同様に4では、

cp -a /Users/suzukikuniaki/Downloads/crosswalk-cordova-11.40.277.7-arm/VERSION platforms/android/

のように指定した。

(※いずれも、DLフォルダにそのまま落としてきた物が入っているという想定)

 

また、6の所では、

android update project --subprojects --path ./ --target android-21」

というようにする必要があった。

(パスの記述を修正、ダブルクォーテーション要らない)

(また、antが入っていない場合、こちらもまた、どこかに置いてそれをパスに追加する必要ありだった。自分はapache-ant-1.9.4を落としてきて、.bash_profileにパスを入れた)

 

ただ入れてみたところ、設定から見るアプリの容量は5MB→58MBに…

The Crosswalk Project

How big is the Crosswalk runtime, and how will it affect my application's size?

を見る限りでは、apkにすれば20MB程度の増加で済むとのことだったので、

早速、

cordova build --release android

でapkで出してみたところ、23MBでした…!

このくらいのサイズであれば、何とか使えそうですね。

 

動作させて見たところ、元々、遅めの端末を持っていないので、

速度面の改善は正直わからなかったのですが、

iOS/android向けアプリのhtmlでありがち?な、

ちょっと位置がずれているとか、そういう問題は見えなくなっていました。

 

Androidでもサクサク動くHTML5ハイブリッドアプリの作り⽅

のスライド21によると、4.4以降では、むしろcrosswalkの方が若干遅い場合もある

(標準で動作するのが旧webview→chromium製の物になったためと思われる)

とのことなので、最終的に導入するかは、色々動かしてからにしたいと思います。

 

※その後ストアに出してみると、ローカライズはしていないのに、多数の言語が登録されているという現象が…これは、

platforms/android/CordovaLib/xwalk_core_library/res

以下にある、

values-am、values-ar…など、「values」以外のローカライズフォルダを全て削除してからapk化することで、きちんと、「ローカライズ デフォルトの言語のみ」になった。

XCTestを既存プロジェクトに導入する際のエラー

コマンド+uで実行すると、

The bundle “XXX Tests” couldn’t be loaded because it doesn’t contain a version for the current architecture.

 

XCInjectDiagnostics: (null)

 

と言ったエラーが出てテストが止まってしまうと言う問題に当たってしまった。

 

 

色々検索して調べてみた結果、

https://github.com/fikovnik/ShiftIt/issues/24

に載っていた、Build Active ArchitectureをYESに変更…でも駄目だったものの、NOにしてみたら問題無く行けるようになった。何故だろうか…。(※編集後、Derived Dataを一旦削除した方がいいかもしれません、どうもそれをやらないと、以前のキャッシュが残るのか、変更しても失敗し続ける事がありました)

 

【Unity】モバイル環境での、Asset bundleの互換性

Unity4で、Unity3でAsset Bundleを読み込ませると、

www.assetBundleが、必ずnullになってしまうという現象が起こり、xcode上でのログを見てみると、

could not be loaded because it contains run-time classes of
incompatible version. Rebuild the AssetBundle to fix this error.

というエラーが出ている・・

 

調べると、


Unity - Unity Japan Official Blog – 技術解説:アセットバンドルのバージョン間互換性

 

に書いてある通り、モバイル向けだと、マイナーバージョンでの互換性はあるものの、メジャーバージョンが変わってしまうと、互換性が無く、例えば今回の場合は、全てUnity4でパッケージングし直す必要があるということでした。(※してみたら直りました)

面倒ではありますが・・仕方ないですよね・・。

ChromiumOSを入れてみた(2014/05/10)

XPのサポート期限切れと言うことですが、実家で家族が使っているPCが未だにXPだったため、良い機会なので、ChromiumOSを入れてみました。

 

1年近く更新されていない模様ですが、安定しているとのことだったので、

http://chromeos.hexxeh.net/

を使用。

(※http://chromium.arnoldthebat.co.uk/ の物だと、起動できなかったりする版に当たってしまうこともあるとの記事を見かけたので)

 

FLASHなどは、

http://nahareport.blogspot.jp/2013/02/chromiumosflashjavapdf.html

で書いてくださっている内容で問題無くインストール出来ました。

 

ただ、そのままだと、youtubeを見ようとしたらchromeがクラッシュしてしまっていたので、

http://linuxmint-beginner.blogspot.jp/2013/11/youtube.html

で書いてくださっている、ユーザーエージェントをFirefoxなど別の物にしてみた所、問題無く見られるようになりました。

 

今の所、USBメモリーからの起動で、問題無く動作しております。

しかしこれが無料とは…ブラウザしか使わない、一般の方はこれで十分なのではないでしょうか…。

parse.comで会員制サイトを作ってみた時のメモ

作っていた時はもっと合った気がしたのですが…思い出したら追記していきます。

 

 

・現状、トランザクション処理が出来ない。

 

・まとめて処理出来る命令(Batch Operations)はあるが(そしてそれを使った場合のapiリクエストは1になる)、

50個程度のオブジェクトが限度の模様なため(https://parse.com/questions/rest-api-batch-operations)、

オブジェクトの持ち方にかなり気を付ける必要がある。

(※ただ、単純にオブジェクトの削除だけであれば、jsで動作させている限り、1000個くらい問題無く削除出来ていると思う)

 

・データ取得に1000件の制限がある。また、limit=1000と行った形でこれを指定しないと、取得のデフォルトは100件なので注意する。

 

・jsの場合、ACLをきちんと設定しないと、保存データが見えてしまうので(コードがユーザー側で実行される以上、追って行けてしまうので)、

自分からのみ、読み書きできるようにするなどの設定をするように。

(そしてそのACLは、rest Apiからは、master keyを使って無視して取得出来るので、管理側からそれが足かせになることは無い)

 

・jsだと、twitterログインが無いので注意。

(別にこれだけが理由では無いが、基本的に、jsで作るくらいだったら、全てrestで作った方が良いと思った…自分は表側をjs、管理側をrestと分けて作ってしまったが…)

 

facebookログインは、新規ユーザー作成時も、ログイン時も、命令が同じなので(その時新規ユーザーなのかどうかは取れる)、ログインページ/アカウント新規作成ページ、と分けても、どちらにも同じ機能(例えばログイン後にACLを設定するなど)を置かないといけない。

それがwebだけで済むのなら問題がないものの、iOSからも、facebookログインが出来るようになっていると少し面倒で、そちらも同様な命令を書いておかないといけない、という事になる。(ログインするユーザーのみ通して、新規ユーザーを作る人はwebからさせたいのでwebに飛ばす…という区分けが出来ないということに。ユーザー作成と、ログインの機能を分けておいてくれたらこんな事にはならないのだが…)

 

・parseのアプリ名が日本語だと、管理画面からのpush通知が飛ばない。(iOSアプリ同士では問題無く飛ぶ模様)

https://parse.com/questions/cant-receive-push-notification-from-dashboard

 

・パスワード変更しても、ログイン状態が残ることがあるので、面倒ではあるが、重要なデータをいじる際は、一度ログインのアクションを起こす(※パスワードを変えていれば、ここではちゃんとエラーを返してくれる)ようにする。