正直決行好きなVarnish Cache。
日本だとあんまりはやってない感じもするけど海外勢からの情報はそこそこあったりする。
#私が手を出したものは流行らないというジンクスはもうあまり気にしないことにしました。どうせね~
以下メモです。
本家
https://www.varnish-cache.org/
以下、日本語の情報サイト
http://www.hokahoka.net/amazon-linux-%E3%81%ABvarnish%E5%B0%8E%E5%85%A5.html
https://siguniang.wordpress.com/2014/01/09/notes-on-varnish-cache-validation/
http://infra.makeall.net/archives/1875
http://sharadchhetri.com/2013/09/30/varnish-vcl-file-wordpress/
https://www.varnish-cache.org/trac/wiki/VCLExamples
http://qiita.com/TsuyoshiUshio@github/items/e3902d33e3867368e695
2015/08/27
2014/12/24
Contact Form 7 wpcf7_mail_sent function が動かくなくなった
Contact Form 7 wpcf7_mail_sent function not working – can’t capture posted data
WordpressのContact Form 7から問い合わせを受ける際についでにvTigerCRMに登録するようにwpcf7_mail_sentを使って引っ掛けたんだけど、Contact Form 7をバージョンアップしたら動かかなくなっちゃいました。
なんでかなと思って調べたらバージョン4.0.3で「$posted_data = $contact_form->posted_data;」では中身取れなくなってます。
前はこんなかんじでとれた
WordpressのContact Form 7から問い合わせを受ける際についでにvTigerCRMに登録するようにwpcf7_mail_sentを使って引っ掛けたんだけど、Contact Form 7をバージョンアップしたら動かかなくなっちゃいました。
なんでかなと思って調べたらバージョン4.0.3で「$posted_data = $contact_form->posted_data;」では中身取れなくなってます。
前はこんなかんじでとれた
add_action( 'wpcf7_mail_sent', 'your_wpcf7_mail_sent_function' );
function your_wpcf7_mail_sent_function( $contact_form ) {
$posted_data = $contact_form->posted_data;
}
こう修正するととれるようになります。
add_action( 'wpcf7_mail_sent', 'your_wpcf7_mail_sent_function' );
function your_wpcf7_mail_sent_function( $contact_form ) {
$submission = WPCF7_Submission::get_instance();
if ( $submission ) {
$posted_data = $submission->get_posted_data();
}
}
ちょっとハマった。
参考。
2014/10/28
Nginx上のWordpressの管理画面にIP制限を設定する その1
こちらでNginx上にWordpressを構築しましたが、今回はWordpressの管理画面にIPを制限を設定したいと思います。
実はWebサーバーでわざわざ設定しなくてもIP制限を書けるためのプラグインも存在します。
最後に軽く紹介しますが、個人的にはセキュリティ系はアプリより下層のレイヤで制御できるならそちらでしたほうがよいと思うのでウェブサーバー側での制御をお勧めします。
Nginx (リバースプロキシ) – Nginx (Web サーバ)で構成している場合ですが、どちらのNginxで制限することも可能ですが、まずは、リバースプロキシに設定を追加します。
こちらで紹介したの設定ファイルに実際に追加したものを下に。 追加した箇所は72行目から79行目までです。
次はリバプロ側ではなく、Webサーバー側に設定します。
ちなみにですが、使ったことは無いのですが、特定のIPアドレスから何度もログインしようとした場合に、そのIPアドレスを一定時間ブロックするWordPressのプラグインも存在します。
Limit Login Attempts
管理者側に固定IPアドレスがなくて制限をかけられない場合は、このようなプラグインを使うのもひとつの手かもしれません。
実はWebサーバーでわざわざ設定しなくてもIP制限を書けるためのプラグインも存在します。
最後に軽く紹介しますが、個人的にはセキュリティ系はアプリより下層のレイヤで制御できるならそちらでしたほうがよいと思うのでウェブサーバー側での制御をお勧めします。
Nginx (リバースプロキシ) – Nginx (Web サーバ)で構成している場合ですが、どちらのNginxで制限することも可能ですが、まずは、リバースプロキシに設定を追加します。
こちらで紹介したの設定ファイルに実際に追加したものを下に。 追加した箇所は72行目から79行目までです。
# ドキュメントルート
root /var/www/html/wordpress;
# インデックスファイル指定
index index.php index.html index.htm;
# キャッシュしたファイルが保管されるパスと、キャッシュゾーンの名前、容量を指定
# キャッシュ保管場所 /var/cache/nginx
# キャッシュを保存するサブディレクトリ階層の深さ 1:2
# キャッシュゾーン czone メモリの割当量 32m
# ゾーン内に保存できるキャッシュ最大値 256m
# アクセスの無いキャッシュを削除するまでの期間 1440m
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=czone:32m max_size=256m inactive=1440m;
# 利用するキャッシュゾーンの名前を指定
proxy_cache czone;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# ステータスコードが通常応答の「200」と、ファイルが存在しない「404」の場合30分間キャッシュを保持
proxy_cache_valid 200 404 30m;
# プロキシサーバ設定
server {
listen 80 default_server;
# ドットファイルへのアクセスを禁止、ログへの記録オフ
location ~ /\. {deny all; access_log off; log_not_found off; }
# robots.txt へのアクセスはログへの記録オフ
location = /robots.txt { access_log off; log_not_found off; }
# favicon へのアクセスはログへの記録オフ
location = /favicon.ico { access_log off; log_not_found off; }
# JavaScript CSS 画像へのアクセスはログへの記録オフ、直ちにプロキシに通しキャッシュ。
# この期の設定でアクセス元の状態で複数キャッシュを行うが画像ファイルなどは複数キャッシュさせない
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
log_not_found off;
proxy_pass http://unix:/var/run/nginx.sock;
expires 7d;
}
# プロキシキャッシュ設定
# 初期値はキャッシュするにセット
set $do_not_cache 0;
# .php ファイルへ直接アクセスがあるのは基本的に管理ページのみのためキャッシュしない
if ($uri ~* "\.php$") {
set $do_not_cache 1;
}
# POST 時はキャッシュしない
if ($request_method = POST) {
set $do_not_cache 1;
}
# $proxy_cache_key に任意の文字を加えることで別のキーでページをキャッシュ可能にする
set $proxy_cache_key "$scheme://$host$request_uri";
# ログイン状態またはコメントを記入したことがあれば、その情報ごとにキャッシュを分ける
if ($http_cookie ~ "(wordpress_logged_in_|comment_author_)(.*)") {
set $proxy_cache_key "$2::$proxy_cache_key";
}
# 今まで組み立てたプロキシ設定でキャッシュを実行
location / {
proxy_no_cache $do_not_cache;
proxy_cache_bypass $do_not_cache;
proxy_cache_key $proxy_cache_key;
proxy_pass http://unix:/var/run/nginx.sock;
}
#IP制限を追加
location = /wp-login.php {
allow xxx.xxx.xxx.xxx;
allow xxx.xxx.xxx.yyy;
deny all;
proxy_pass http://unix:/var/run/nginx.sock;
}
}
# ウェブサーバ設定
server {
# ポートを指定
#listen 80;
listen unix:/var/run/nginx.sock;
# WordPress カスタム パーマネントリンク対応
try_files $uri $uri/ /index.php?q=$uri&$args;
# PHP-FPM 設定
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_pass_header "X-Accel-Redirect";
fastcgi_pass_header "X-Accel-Buffering";
fastcgi_pass_header "X-Accel-Charset";
fastcgi_pass_header "X-Accel-Expires";
fastcgi_pass_header "X-Accel-Limit-Rate";
fastcgi_read_timeout 1200;
}
}
次はリバプロ側ではなく、Webサーバー側に設定します。
ちなみにですが、使ったことは無いのですが、特定のIPアドレスから何度もログインしようとした場合に、そのIPアドレスを一定時間ブロックするWordPressのプラグインも存在します。
Limit Login Attempts
管理者側に固定IPアドレスがなくて制限をかけられない場合は、このようなプラグインを使うのもひとつの手かもしれません。
WordpressをNginx1.6.2で構築
WordpressをNginxでサイト構築したのでその設定等のメモ
個人的にはリバプロはVarnish Cacheも設定ファイルが書きやすくて好きでしたが、Nginxも今となっては詳しい解説サイトが多いので非常に敷居が低くなりました。
インストールに関しては他のサイトをご参照ください。
今回の構成は、割りと普通の、Nginx (リバースプロキシ) – Nginx (Web サーバ)という構成。
キャッシュされていないコンテンツがリクエストされた場合はnginx ウェブサーバが対応し、キャッシュを生成します。キャッシュされているリクエストはリバースプロキシが対応します。
Web サーバをNginxするだけでもFastCGIのおかげでしょう、サイトが相当軽くなります。
その恩恵が大きいのが管理画面でしょう。
Quick Cache等のWordpressのキャッシュ系のプラグインを入れれば、いわゆる公開ページは手軽にさくさくになりますが、管理画面はそうもいかず、こちらを高速化するのはなかなか敷居が高いかもしれません。
APC入れたりと根本的にPHP自体を高速に動作させる工夫が必要です。
「AWSでMicroインスタンスでWordpressを構築して公開画面はそこそこ見れる速度になったけど、管理画面が遅くて発狂しそう。。。」という方は是非お試しください。
ちなみにNginxのバージョンは1.6.2です。
ProxyとWebサーバー感の通信はUnix Socketを利用しています。
そんなわけで、設定ファイルを下に。
次はWordpressの管理画面にIP制限を仕込みたいと思います。
個人的にはリバプロはVarnish Cacheも設定ファイルが書きやすくて好きでしたが、Nginxも今となっては詳しい解説サイトが多いので非常に敷居が低くなりました。
インストールに関しては他のサイトをご参照ください。
今回の構成は、割りと普通の、Nginx (リバースプロキシ) – Nginx (Web サーバ)という構成。
キャッシュされていないコンテンツがリクエストされた場合はnginx ウェブサーバが対応し、キャッシュを生成します。キャッシュされているリクエストはリバースプロキシが対応します。
Web サーバをNginxするだけでもFastCGIのおかげでしょう、サイトが相当軽くなります。
その恩恵が大きいのが管理画面でしょう。
Quick Cache等のWordpressのキャッシュ系のプラグインを入れれば、いわゆる公開ページは手軽にさくさくになりますが、管理画面はそうもいかず、こちらを高速化するのはなかなか敷居が高いかもしれません。
APC入れたりと根本的にPHP自体を高速に動作させる工夫が必要です。
「AWSでMicroインスタンスでWordpressを構築して公開画面はそこそこ見れる速度になったけど、管理画面が遅くて発狂しそう。。。」という方は是非お試しください。
ちなみにNginxのバージョンは1.6.2です。
ProxyとWebサーバー感の通信はUnix Socketを利用しています。
そんなわけで、設定ファイルを下に。
# ドキュメントルート
root /var/www/html/wordpress;
# インデックスファイル指定
index index.php index.html index.htm;
# キャッシュしたファイルが保管されるパスと、キャッシュゾーンの名前、容量を指定
# キャッシュ保管場所 /var/cache/nginx
# キャッシュを保存するサブディレクトリ階層の深さ 1:2
# キャッシュゾーン czone メモリの割当量 32m
# ゾーン内に保存できるキャッシュ最大値 256m
# アクセスの無いキャッシュを削除するまでの期間 1440m
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=czone:32m max_size=256m inactive=1440m;
# 利用するキャッシュゾーンの名前を指定
proxy_cache czone;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# ステータスコードが通常応答の「200」と、ファイルが存在しない「404」の場合30分間キャッシュを保持
proxy_cache_valid 200 404 30m;
# プロキシサーバ設定
server {
listen 80 default_server;
# ドットファイルへのアクセスを禁止、ログへの記録オフ
location ~ /\. {deny all; access_log off; log_not_found off; }
# robots.txt へのアクセスはログへの記録オフ
location = /robots.txt { access_log off; log_not_found off; }
# favicon へのアクセスはログへの記録オフ
location = /favicon.ico { access_log off; log_not_found off; }
# JavaScript CSS 画像へのアクセスはログへの記録オフ、直ちにプロキシに通しキャッシュ。
# この期の設定でアクセス元の状態で複数キャッシュを行うが画像ファイルなどは複数キャッシュさせない
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
log_not_found off;
proxy_pass http://unix:/var/run/nginx.sock;
expires 7d;
}
# プロキシキャッシュ設定
# 初期値はキャッシュするにセット
set $do_not_cache 0;
# .php ファイルへ直接アクセスがあるのは基本的に管理ページのみのためキャッシュしない
if ($uri ~* "\.php$") {
set $do_not_cache 1;
}
# POST 時はキャッシュしない
if ($request_method = POST) {
set $do_not_cache 1;
}
# $proxy_cache_key に任意の文字を加えることで別のキーでページをキャッシュ可能にする
set $proxy_cache_key "$scheme://$host$request_uri";
# ログイン状態またはコメントを記入したことがあれば、その情報ごとにキャッシュを分ける
if ($http_cookie ~ "(wordpress_logged_in_|comment_author_)(.*)") {
set $proxy_cache_key "$2::$proxy_cache_key";
}
# 今まで組み立てたプロキシ設定でキャッシュを実行
location / {
proxy_no_cache $do_not_cache;
proxy_cache_bypass $do_not_cache;
proxy_cache_key $proxy_cache_key;
proxy_pass http://unix:/var/run/nginx.sock;
}
}
# ウェブサーバ設定
server {
listen unix:/var/run/nginx.sock;
# WordPress カスタム パーマネントリンク対応
try_files $uri $uri/ /index.php?q=$uri&$args;
# PHP-FPM 設定
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_pass_header "X-Accel-Redirect";
fastcgi_pass_header "X-Accel-Buffering";
fastcgi_pass_header "X-Accel-Charset";
fastcgi_pass_header "X-Accel-Expires";
fastcgi_pass_header "X-Accel-Limit-Rate";
fastcgi_read_timeout 1200;
}
}
いきなり再起動せずに、service nginx configtest で記述ミスが無いか確認しましょう。次はWordpressの管理画面にIP制限を仕込みたいと思います。
2014/08/15
firefox31でssl_error_cipher_disallowed_for_version
ちょい時間ないのでメモとして。
Firefox31にバージョンをあげたらFirefox31のみSSLで怒られるようになった。
SSL peer selected a cipher suite disallowed for the selected protocol version.
(エラーコード: ssl_error_cipher_disallowed_for_version)
こちらを見てみると(ざっくりいうと)SSLの設定が甘いというか許可すべきでないcipherを設定してるみたいですね。
対応としては。
Firefox31にバージョンをあげたらFirefox31のみSSLで怒られるようになった。
SSL peer selected a cipher suite disallowed for the selected protocol version.
(エラーコード: ssl_error_cipher_disallowed_for_version)
こちらを見てみると(ざっくりいうと)SSLの設定が甘いというか許可すべきでないcipherを設定してるみたいですね。
対応としては。
- disable SSL 2.0をdisable。
- TLS 1.0 compressionをdisable,
- weak ciphers (DES, RC4)をdisable, prefer modern ciphers (AES), modes (GCM), and protocols (TLS 1.2).
だそうです。
ちなみに対象のApacheのバージョンは2.4.9。
SSLCipherSuiteやSSLProtocolの設定を以下に変更して対象。
SSLProtocol ALL -SSLv2 SSLHonorCipherOrder On SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
上記のサイトにNginxとか色々対応方法がのってますよ。
2014/07/10
Starting httpd: AH02559: The SSLCertificateChainFile directive is deprecated, SSLCertificateFile should be used instead
Wordpressを引っ越すことになりまして、PHPのバージョンとか古いので環境を作りなおすかと。
ついでにApacheも2.4.9へ。
ひと通り設定を終えてドメインを切り替えて、証明書を設定して起動!
そしたら、以下のエラーが。
Starting httpd: AH02559: The SSLCertificateChainFile directive (/etc/httpd/conf.d/ssl.conf:125) is deprecated, SSLCertificateFile should be used instead
調べてみるとApache 2.4.8以降はSSLCertificateChainFileがdeprecatedになったとさ。
これまでの様にSSLCertificateChainFile書くんじゃんくて、SLCertificateFileにサーバ証明書と中間証明書を連結したのを指定するようです。
http://httpd.apache.org/docs/current/mod/mod_ssl.html
http://httpd.apache.org/docs/current/mod/mod_ssl.html
はやりなんでしょうか、nginxとかもそうだった気が。
で、以下みたいなコマンドで結合。
# cat server.cer cacert.cer > cert.pem
結合した証明書ファイルは、下記のような構成になります。
-----BEGIN CERTIFICATE-----
[サーバ証明書]
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
[中間証明書]
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
[サーバ証明書]
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
[中間証明書]
-----END CERTIFICATE-----
はい、これでOK。
とおもったら、Andoroidからのアクセスだけが「証明書は信頼される機関からのものではありません」と。。。
そんなわけでジオトラストのこちらでちぇっく。
https://ssltools.geotrust.com/checker/views/certCheck.jsp
OKだけど、中間証明書まだたりないよ的なエラーが。。。
ただ、親切なことにこれを使いな!的な感じで「GeoTrust Global CA」がダウンロードできるようになってます。
こちおらも上で作ったファイルに結合してあげるとAndroidでも無事、鍵が閉じたマークになりました。
こちおらも上で作ったファイルに結合してあげるとAndroidでも無事、鍵が閉じたマークになりました。
画面キャプチャとかとったので、ちゃんと書こうかとおもったけど台風なので帰ります。
2014/06/17
Titanium mobile [end tag name: string is not match the current start tagName:string]
超久しぶりのTitanium mobileネタ。
ちょっと前に作ったアプリを修正する必要があり3.1.2から3.2.3GAへ。
そしたらコンパイルでコケル。 なぜだーと調べてみたらこんなエラー。
調べてみると、わかりました。
</string>である場所が</string >と>の前にスペースが入っちゃってました。。。
パーサーかえるとかこの手の変更はマジ簡便してほしい。。。
JSONのパースでこけたりしたら想像するだけでうんざり系の対応だな。。。
アプリで対応できるものはよいけど、サーバー側が自分たちの管理している仕組みでなかったりするとえらく大変。
ちょっと前に作ったアプリを修正する必要があり3.1.2から3.2.3GAへ。
そしたらコンパイルでコケル。 なぜだーと調べてみたらこんなエラー。
end tag name: string is not match the current start tagName:string
@#[line:242,col:21]
/Users/hogehoge/Library/Application Support/Titanium/mobilesdk/osx/3.2.3.GA/node_modules/xmldom/dom-parser.js:187
throw error;
^
end tag name: string is not match the current start tagName:string
そうだ、なんかParserかわったんだっけ。調べてみると、わかりました。
</string>である場所が</string >と>の前にスペースが入っちゃってました。。。
パーサーかえるとかこの手の変更はマジ簡便してほしい。。。
JSONのパースでこけたりしたら想像するだけでうんざり系の対応だな。。。
アプリで対応できるものはよいけど、サーバー側が自分たちの管理している仕組みでなかったりするとえらく大変。
2014/04/20
App Not Setup: The developers of this app have not set up this app properly for Facebook Login.
OneALLというSocialログインのサービスを使って、
Facebookでログインしようとしたら人によっては、以下のエラーが発生する。
App Not Setup: The developers of this app have not set up this app properly for Facebook Login.
なんだよこれ?と調べたところ、「Do you want to make this app and all its live features available to the general public?」のチェックをONにしないとだめらしい。
確かに前はSandboxモードがほにゃららって項目があったけど、それってどこにいったんだ?と思ってたらこれなのね。
Facebookでログインしようとしたら人によっては、以下のエラーが発生する。
App Not Setup: The developers of this app have not set up this app properly for Facebook Login.
なんだよこれ?と調べたところ、「Do you want to make this app and all its live features available to the general public?」のチェックをONにしないとだめらしい。
確かに前はSandboxモードがほにゃららって項目があったけど、それってどこにいったんだ?と思ってたらこれなのね。
Wordpressを引越しというかサーバインスタンスをコピーしたらやること
Wordpressもしょっちゅう触ってるわけではないので、忘れぬようメモ。
Wordpressでステージングを作ろうとインスタンスのスナップショットをとって立ち上げた場合、Wordpressに登録してあるサーバーURlを変更しないた、接続時にコピー元のサーバーにリダイレクトされてしまいます。
回避する方法は二つあるのだけど、とりあえずその一つというか根本的な対応は以下のSQLを実行すること。
SELECT * FROM wp_options WHERE option_name = "home" OR option_name = "siteurl";
UPDATE wp_options SET option_value = "http://引越し後" WHERE option_name = "home" OR option_name = "siteurl"
これで回避できます。
Wordpressでステージングを作ろうとインスタンスのスナップショットをとって立ち上げた場合、Wordpressに登録してあるサーバーURlを変更しないた、接続時にコピー元のサーバーにリダイレクトされてしまいます。
回避する方法は二つあるのだけど、とりあえずその一つというか根本的な対応は以下のSQLを実行すること。
SELECT * FROM wp_options WHERE option_name = "home" OR option_name = "siteurl";
UPDATE wp_options SET option_value = "http://引越し後" WHERE option_name = "home" OR option_name = "siteurl"
これで回避できます。
2014/03/27
OpenClassifiedsのインストール時にエラーが出た。
// Sanity check, install should only be checked from index.php defined('SYSPATH') or exit('Install must be loaded from within index.php!'):
//were the install files are located define('INSTALLROOT', DOCROOT.'install/'):
//prevents from new install to be done
if(!file_exists(INSTALLROOT.'install.lock')) die('Installation seems to be done, please remove /install/ folder'):
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE):
ini_set('display_errors', 1):
include 'class.install.php':
//start the install setup install::initialize():
;$is_compatible = install::is_compatible():
//choosing what to display
//execute installation since they are posting data if ( ($_POST OR isset($_GET['SITE_NAME'])) AND $is_compatible === TRUE) $view = (install::execute()===TRUE)?'success':'form':
//normally if its compaitble just display the form
elseif ($is_compatible === TRUE) $view = 'form':
//not compatible else $view = 'hosting':
?>
なんだこれ? と思ったが、php.iniのshort_open_tagをOnにしてあげないとだめなんだね。
まっさらな環境に作ったので設定が漏れてった。
check your php.ini for short_open_tag configuration.
If short_open_tag is set to false change it to true like this:
short_open_tag = On
AWS EC2のLinux タイムゾーンを日本時間へ変更
完全に自分用メモ
EC2のインスタンスを立ち上げたタイムゾーンを日本時刻に設定する。
EC2のインスタンスを立ち上げたタイムゾーンを日本時刻に設定する。
cp /usr/share/zoneinfo/Japan /etc/localtime
2013/07/28
vtigerCRMのブログ書いてみました
会社のブログに書いてます。
もっと書かなきゃだめなんですけどね。ネタはたまってるんだけど書く時間が。。。
BGT + vTigerCRM = CRM TOUCH!!
もっと書かなきゃだめなんですけどね。ネタはたまってるんだけど書く時間が。。。
BGT + vTigerCRM = CRM TOUCH!!
vTigerCRM5.4のセキュリティーパッチとvTigerCRM6.0
vTigerCRM5.4のセキュリティーパッチにバグ
vTigerCRMにてログイン後に画面が真っ白(Blank Page)なる
こちらのブログもなかなか更新できてないんですよね。。
2013/07/07
[Titanium mobile] Google playでのアルファ版・ベータ版配布機能を使ってみた
Titanium mobileで作成したアプリにてアルファ版・ベータ版配布機能をテストしてみた。
上げ方等は、他のサイトで詳しくかかれているのでそちらで。
私が知りたかったのは、有料アプリをベータ版やアルファ版では無料で提供できるのか?ってことだったのです。
なかなかそこに言及している記述が見当たらなかったので試してみた。
結果としては、だめでした。。。
まだ、ストアにのせる前の状態で価格設定を無料にして、とりあえずβユーザーに使ってもらうっていうのなら可能だけど、既に有料で公開しているアプリにはそれはできないみたいだね。
うーん、iTunes ストアのプロモーションコード的な機能ってPlay storeにはないのかね。
もうちょっと調べるか。
上げ方等は、他のサイトで詳しくかかれているのでそちらで。
私が知りたかったのは、有料アプリをベータ版やアルファ版では無料で提供できるのか?ってことだったのです。
なかなかそこに言及している記述が見当たらなかったので試してみた。
結果としては、だめでした。。。
まだ、ストアにのせる前の状態で価格設定を無料にして、とりあえずβユーザーに使ってもらうっていうのなら可能だけど、既に有料で公開しているアプリにはそれはできないみたいだね。
うーん、iTunes ストアのプロモーションコード的な機能ってPlay storeにはないのかね。
もうちょっと調べるか。
2013/05/08
[Titanium Mobile] AndroidでのsearchBar使用時のfilterAttributeの設定時の注意
久しぶりのTitanium mobile ネタ。
Titanium 3.1.0GAです。
有名な話かもしれないけど、自分用のメモとして。。。
Table に対してsearchBarを設定しようとしたら。
Androidでフィルタリングが動作しない場合が発生してなんだこれはと。
で、しらべてみたところ、filterAttributeの設定の仕方の問題みたいです。
filterAttributeを 'filter' とした場合、
var tableViewRow = Ti.UI.createTableViewRow({filter:'ああああ',...});
だと正しく動きますが、
tableViewRow.filter = 'ああああ';
だと動きません。
iPhoneだと両方問題なく動作します。
これはハマった。。。
Titanium 3.1.0GAです。
有名な話かもしれないけど、自分用のメモとして。。。
Table に対してsearchBarを設定しようとしたら。
Androidでフィルタリングが動作しない場合が発生してなんだこれはと。
で、しらべてみたところ、filterAttributeの設定の仕方の問題みたいです。
filterAttributeを 'filter' とした場合、
var tableViewRow = Ti.UI.createTableViewRow({filter:'ああああ',...});
だと正しく動きますが、
tableViewRow.filter = 'ああああ';
だと動きません。
iPhoneだと両方問題なく動作します。
これはハマった。。。
2013/03/22
AndroidのバージョンとAPIレベルの関係
自分用メモ。
Android 4でPicker(Titanium.UI.PICKER_TYPE_TIME)がちゃんと動きません。
詳しくはこちら。 #助かりました。
そんなわけで、AndroidのAPI Levelで挙動を切り分ける必要があったので、
下に調べたものを貼っておきます。
Android 4でPicker(Titanium.UI.PICKER_TYPE_TIME)がちゃんと動きません。
詳しくはこちら。 #助かりました。
そんなわけで、AndroidのAPI Levelで挙動を切り分ける必要があったので、
下に調べたものを貼っておきます。
| Platform Version | API Level | VERSION CODE |
|---|---|---|
| Android 4.0.3 | 15 | ICE_CREAM_SANDWICH_MR1 |
| Android 4.0.2 | 14 | ICE_CREAM_SANDWICH |
| Android 4.0.1 | ||
| Android 4.0 | ||
| Android 3.2 | 13 | HONEYCOMB_MR2 |
| Android 3.1.x | 12 | HONEYCOMB_MR1 |
| Android 3.0.x | 11 | HONEYCOMB |
| Android 2.3.4 | 10 | GINGERBREAD_MR1 |
| Android 2.3.3 | ||
| Android 2.3.2 | 9 | GINGERBREAD |
| Android 2.3.1 | ||
| Android 2.3 | ||
| Android 2.2.x | 8 | FROYO |
| Android 2.1.x | 7 | ECLAIR_MR1 |
| Android 2.0.1 | 6 | ECLAIR_0_1 |
| Android 2.0 | 5 | ECLAIR |
| Android 1.6 | 4 | DONUT |
| Android 1.5 | 3 | CUPCAKE |
| Android 1.1 | 2 | BASE_1_1 |
| Android 1.0 | 1 | BASE |
Google Playで販売したアプリをGoogle Checkoutから返金
Google Playで販売したアプリをGoogle Checkoutから返金処理してみました。
どんな挙動になるのかなと思ったけど、
・アプリは削除されません。
・アプリのアップデートは普通に走ります。
うーむ、これ、安易に返金処理しちゃだめだな~
どんな挙動になるのかなと思ったけど、
・アプリは削除されません。
・アプリのアップデートは普通に走ります。
うーむ、これ、安易に返金処理しちゃだめだな~
2012/12/10
[Titanium Mobile]Your app crashed on both Wi-Fi and cellular networks immediately after launch.だって。。。
こちらは会社で申請中のアプリですが、リジェクト二回目です。。。
わかんねー。
実機でちゃんと動くんだけどな。。。
2.1
We found that your app crashed on iPhone 5, running iOS 6.0.1, which is not in compliance with the App Store Review Guidelines.
Your app crashed on both Wi-Fi and cellular networks immediately after launch.
We have attached detailed crash logs to help troubleshoot this issue. For information on how to symbolicate and read a crash log, please see Tech Note TN2151 Understanding and Analyzing iPhone OS Application Crash Reports.
For discrete code-level questions, you may wish to consult with Apple Developer Technical Support. Please be sure to include any symbolicated crash logs, screenshots, or steps to reproduce the issues when you submit your request.
For discrete code-level questions, you may wish to consult with Apple Developer Technical Support. Please be sure to:
- include the complete details of your rejection issues
- prepare any symbolicated crash logs, screenshots, and steps to reproduce the issues for when the DTS engineer follows up.
For information on how to symbolicate and read a crash log, please see Tech Note TN2151 Understanding and Analyzing iPhone OS Application Crash Reports.
If you have difficulty reproducing this issue, please try testing the workflow as described in <https://developer.apple.com/library/ios/qa/qa1764/>Testing Workflow with Xcode's Archive feature".
で、Xcodeのメニューから product > edit schemeでてくるダイアログの
Run〜(アプリ名)のBulid Configuration をDeveloperに変更して起動する。
そうすると確かに、起動時にエラーとして引っかかる箇所が出てきました。
ログをみると××××.js line 9でERRORみたいなのが書かれてるけど、これTitaniumで編集しているJSファイルではなく、Xcodeで実行?するように最適化されたの中間ファイル的なJSです。
××××.jsなら××××_.jsで探せば出てきます。
場所は/DerivedDataの下にあります。(検索すればすぐなのでパスの詳細は省略)
さー、再申請するぞ!
実機でちゃんと動くんだけどな。。。
2.1
We found that your app crashed on iPhone 5, running iOS 6.0.1, which is not in compliance with the App Store Review Guidelines.
Your app crashed on both Wi-Fi and cellular networks immediately after launch.
We have attached detailed crash logs to help troubleshoot this issue. For information on how to symbolicate and read a crash log, please see Tech Note TN2151 Understanding and Analyzing iPhone OS Application Crash Reports.
For discrete code-level questions, you may wish to consult with Apple Developer Technical Support. Please be sure to include any symbolicated crash logs, screenshots, or steps to reproduce the issues when you submit your request.
For discrete code-level questions, you may wish to consult with Apple Developer Technical Support. Please be sure to:
- include the complete details of your rejection issues
- prepare any symbolicated crash logs, screenshots, and steps to reproduce the issues for when the DTS engineer follows up.
For information on how to symbolicate and read a crash log, please see Tech Note TN2151 Understanding and Analyzing iPhone OS Application Crash Reports.
If you have difficulty reproducing this issue, please try testing the workflow as described in <https://developer.apple.com/library/ios/qa/qa1764/>Testing Workflow with Xcode's Archive feature".
#追記です。解決したかも!
とりあえず、Titaniumのビルド時にできる○○○○○.xcodeprojから、Xcodeを起動すると。で、Xcodeのメニューから product > edit schemeでてくるダイアログの
Run〜(アプリ名)のBulid Configuration をDeveloperに変更して起動する。
そうすると確かに、起動時にエラーとして引っかかる箇所が出てきました。
ログをみると××××.js line 9でERRORみたいなのが書かれてるけど、これTitaniumで編集しているJSファイルではなく、Xcodeで実行?するように最適化されたの中間ファイル的なJSです。
××××.jsなら××××_.jsで探せば出てきます。
場所は/DerivedDataの下にあります。(検索すればすぐなのでパスの詳細は省略)
さー、再申請するぞ!
2012/11/26
[Titanium mobile]アプリ名の変更方法(How to Change the Titanium mobile App Name)
アプリをリリースすることになりましてと、名前が決まりましたー。
それでは名前変更するかとなって、tiapp.xmlの<name>ほにゃらら</name>を変更したら、ビルドする走らなくなる。。。。
海外の方の「Projectごと作りなおせよ、HA!HA!」みたいな書き込みをみて、つくりなおしてみたら、起動しないし。。。
なにそれー。てゆーか、調べてみるとハマった人も多いみたいね。
こ、この感じ久しぶり><
周りに理解してもらえないハマり時間が来たか?とうんざりしてたら、ここに変え方が書いてありました。
https://wiki.appcelerator.org/display/guides/Internationalization
正しくは、アプリ名を他言語対応するためのTipsだけど、作成しているアプリが他言語対応アプリなのでまぁよしと。
iOS用とAndroid用で方法は異なります。
でiOS側の変更方法は、以下の画像のようにi18nの下にapp.xmlを作成。
i18n/ja/app.xmlの中身は、こんだけ
ビルドするとできる/build/android/AndroidManifest.xmlを
プロジェクト直下の/platform/android/にコピーします。
#フォルダは作成しましょう。
そして、AndroidManifest.xmlのandroid:label=""の部分をandroid:label="@string/app_name"と変更して(2カ所ありました)、i18nの下にstring.xmlに以下を
enやja等複数対応予定ならその数だけ追加しましょう。
これだけです。
それでは名前変更するかとなって、tiapp.xmlの<name>ほにゃらら</name>を変更したら、ビルドする走らなくなる。。。。
海外の方の「Projectごと作りなおせよ、HA!HA!」みたいな書き込みをみて、つくりなおしてみたら、起動しないし。。。
なにそれー。てゆーか、調べてみるとハマった人も多いみたいね。
こ、この感じ久しぶり><
周りに理解してもらえないハマり時間が来たか?とうんざりしてたら、ここに変え方が書いてありました。
https://wiki.appcelerator.org/display/guides/Internationalization
正しくは、アプリ名を他言語対応するためのTipsだけど、作成しているアプリが他言語対応アプリなのでまぁよしと。
iOS用とAndroid用で方法は異なります。
でiOS側の変更方法は、以下の画像のようにi18nの下にapp.xmlを作成。
i18n/ja/app.xmlの中身は、こんだけ
<?xml version="1.0" encoding="UTF-8"?>Android用はというと
<resources>
<string name="appname">CRM Touch</string>
</resources>
ビルドするとできる/build/android/AndroidManifest.xmlを
プロジェクト直下の/platform/android/にコピーします。
#フォルダは作成しましょう。
そして、AndroidManifest.xmlのandroid:label=""の部分をandroid:label="@string/app_name"と変更して(2カ所ありました)、i18nの下にstring.xmlに以下を
<string name="app_name">CRM Touch</string>を追加。
enやja等複数対応予定ならその数だけ追加しましょう。
これだけです。
[Titanium mobile]Titanium mobileでターゲットのiOSをしぼる方法
tiapp.xmlに以下を追加です。
<ios>
<min-ios-ver>5.0</min-ios-ver>
</ios>
これだけです。
<ios>
<min-ios-ver>5.0</min-ios-ver>
</ios>
これだけです。
2012/10/31
[Titanium mobile]Galaxy S3でhasChild等のデフォルトのアイコンが小さすぎる
Android解像度の問題だと思うけど、tableViewRowにhasChildやhadDetailを設定したさいにでてくるデフォルトのアイコンが、Galaxy S3みたいな高解像度のデバイスでつかうと、ものすんごく小さくなってしまって。
えー、これどうすうのと調べたところ "Resources"と同じ階層にある"tiapp.xml"に下記を追加すると解決する。
<android xmlns:android="http://schemas.android.com/apk/res/android">
<manifest>
<supports -screens="-screens" android:anydensity="false">
</supports></manifest>
</android>
"<supports -screens="-screens" android:anydensity="false">"を追記するだけでとりあえず解決はしました。
この項目、いろいろ調べてみないとなと。
えー、これどうすうのと調べたところ "Resources"と同じ階層にある"tiapp.xml"に下記を追加すると解決する。
<android xmlns:android="http://schemas.android.com/apk/res/android">
<manifest>
<supports -screens="-screens" android:anydensity="false">
</supports></manifest>
</android>
"<supports -screens="-screens" android:anydensity="false">"を追記するだけでとりあえず解決はしました。
この項目、いろいろ調べてみないとなと。
登録:
投稿 (Atom)
-
【送料無料】LINE6 LowDown Studio 110ライン6 ベースアンプ 価格:29,808円(税込、送料込) 先日の友人の結婚式に演奏をお願いされたのだが、ひとつ悩んだのがどうやって大音量の音出すか? 演奏内容は、ドラムレスなトリオ(ギター、ピア...
-
金曜日とか上野で飲み会があると、2次会の場所にこまります。 予約なしだと結構入れないのね。 そんなときに結構穴場というか入れちゃうのがこちら、「伝説の若鶏唐揚 腹八分目 」 むかしは、海峡って名前のいざかやだったのよな?と思ったら、「伝説の若鶏唐揚 腹八分目 」って名...
-
ガンチア・スプマンテ・ロッソ 赤 750ML 価格:1,280円(税込、送料別) 外でたまたま飲んだスパークリングワインの赤が美味しかったので近所で売ってないかなーと、酒屋で見てみたらありました。 飲んだ種類とはちがうんだけど、 ガンチア・スプマンテ・ロッソ...



