大量の画像のリサイズ(圧縮率変更)、サムネイルの作成はImageMagickのconvertコマンドを使って次のように簡単に行えます。画像の縦横比もキープされます。(Linux、MacOSX環境)
参考:
第102回 ImageMagickでコマンドラインから画像加工:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社
ImageMagickでいろいろなサムネイル画像作成に挑戦
2015年7月19日日曜日
2015年7月10日金曜日
[Google Account] Google Accountからプログラムでログアウトする方法
Google Accountからプログラムでログアウトする方法が検索してもなかなか見つからなかったのでメモっておきます。といってもやることは単純。とあるURLにプログラムでHTTPアクセスするだけです。PHPだと次のようになります。
ログアウト後の戻り先のURLをgetパラメータcontinueに与えるのをお忘れなく。
ログアウト後の戻り先のURLをgetパラメータcontinueに与えるのをお忘れなく。
2015年7月7日火曜日
[Android] アクティビティの多重起動を防ぐ
Serviceを使ってマルチスレッドからActivityを呼び出す(startActivity())ことをやっていると、Activityが多重起動してしまいErrorが生じてしまうケースがあります。(スレッドセーフに作られているActivityならいいのですけどね)。
このケースの解決方法として、アクティビティの多重起動を防ぐという方法があります。やり方は簡単で、AndroidManifestで多重起動を防ぎたいアクティビティのactivityタグでandroid:launchMode="singleInstance"を指定するだけです。
記述例は次の通り。
参考:
プログラムの多重起動と連続起動について - fの備忘録
このケースの解決方法として、アクティビティの多重起動を防ぐという方法があります。やり方は簡単で、AndroidManifestで多重起動を防ぎたいアクティビティのactivityタグでandroid:launchMode="singleInstance"を指定するだけです。
記述例は次の通り。
参考:
プログラムの多重起動と連続起動について - fの備忘録
2015年5月24日日曜日
[Android] In-app Billing v3を使ってライセンス購入を実装する
Androidアプリでアプリ内課金を行う場合、Google Play In-app Billingを使ってGoogle Playに決済を任せる設計が一般的&楽です。
アプリ内課金には、スポット課金(一度きりの購入)と定期購読(繰り返し自動課金)を使うことができ、スポット課金を利用するとアプリのライセンス購入を表現することができます。
最初は、無料でダウンロードしてもらって使ってみてもらい、気に入ったらライセンスを購入してもらって、加えていた制限(例えば利用期限だったり、機能制限だったり、広告非表示だったり、色々)を解除することが可能というわけです。
このアプリ内課金を実装するための手順は次の記事が参考になります。
Androidのアプリ内課金IABv2のサービス終了と新しいIABv3への移行方法 - Qiita
基本的には、挙げた記事の通り、環境を作って、Googleが提供しているサンプルを取り込んでゴチャゴチャやればOKなのですが、今後はシンプルにやりたいと思いましたので(=今回は初めててで結構苦戦しました)、ライセンス管理を行うユーティリティクラスをGoogleのサンプルをベースに作りましたのでGitHubで公開しておきます。ライセンスはMITです。
https://github.com/shinchit/LicenseManager
使い方は、次の通りです。
onActivityResultメソッドでは、特に購入処理の実行結果によってなんらかの処理を行う必要がなければ、シンプルにスーパークラスのonActivityResultに処理を転送すればOKです。
あと、実装以外にもライセンス購入の組み込みには色々と落とし穴もあるので、次の記事も必読です。
アプリ内課金の実機テストのワナ - GADGET FACTORY 雑記帳
アプリ内課金には、スポット課金(一度きりの購入)と定期購読(繰り返し自動課金)を使うことができ、スポット課金を利用するとアプリのライセンス購入を表現することができます。
最初は、無料でダウンロードしてもらって使ってみてもらい、気に入ったらライセンスを購入してもらって、加えていた制限(例えば利用期限だったり、機能制限だったり、広告非表示だったり、色々)を解除することが可能というわけです。
このアプリ内課金を実装するための手順は次の記事が参考になります。
Androidのアプリ内課金IABv2のサービス終了と新しいIABv3への移行方法 - Qiita
基本的には、挙げた記事の通り、環境を作って、Googleが提供しているサンプルを取り込んでゴチャゴチャやればOKなのですが、今後はシンプルにやりたいと思いましたので(=今回は初めててで結構苦戦しました)、ライセンス管理を行うユーティリティクラスをGoogleのサンプルをベースに作りましたのでGitHubで公開しておきます。ライセンスはMITです。
https://github.com/shinchit/LicenseManager
使い方は、次の通りです。
onActivityResultメソッドでは、特に購入処理の実行結果によってなんらかの処理を行う必要がなければ、シンプルにスーパークラスのonActivityResultに処理を転送すればOKです。
あと、実装以外にもライセンス購入の組み込みには色々と落とし穴もあるので、次の記事も必読です。
アプリ内課金の実機テストのワナ - GADGET FACTORY 雑記帳
2015年4月19日日曜日
[JavaScript] [jQuery] 任意の年月の月末日を得る
年、月、日のプルダウンが存在していて、年、月が選択されたタイミングで日のプルダウンの値を更新する仕組みを考えます。この時、日の月末日は閏年の判定も含めて、年、月の値に応じて変化させる必要があります。
このために、任意の年月の月末日を得る必要があります。例を示します。
例では、任意の月末日を得たのち、年、月のプルダウンが変化(change)するタイミングで、その時の年、月の組み合わせで月末日(endDay)を求めて、この値を使って動的に日のselectのoption要素を動的に生成しています。
参考
JavaScript による日付・時刻・時間の計算・演算のまとめ – hoge256 blog
このために、任意の年月の月末日を得る必要があります。例を示します。
例では、任意の月末日を得たのち、年、月のプルダウンが変化(change)するタイミングで、その時の年、月の組み合わせで月末日(endDay)を求めて、この値を使って動的に日のselectのoption要素を動的に生成しています。
参考
JavaScript による日付・時刻・時間の計算・演算のまとめ – hoge256 blog
ラベル:
Date,
JavaScript,
jQuery,
optionの動的追加,
月末日,
任意の年月の月末日,
年月日
[JavaScript] [jQuery] thickboxを任意のイベントで呼び出し、closeする
安定した(枯れた)モーダルウィンドウ表示ライブラリとして未だに根強い人気のあるthickbox。onclickで呼び出すようにサンプルが記述されていますが、次に示すように、tb_show関数をコールすることで任意のイベントで呼び出すことができます。
例に示したようにモーダルウィンドウのcloseはthickboxが動的に生成する#TB_overlay(モーダルウィンドウのウィンドウの外側のグレイになる領域を示す)のclickイベントでtb_remove関数をコールすることで実装できます。
参考:
FlashBLOG MVON.NET - FLASH、WEBに関する話題。 » Blog Archive » jQuery-ThickBoxをお好きなイベントで出す
例に示したようにモーダルウィンドウのcloseはthickboxが動的に生成する#TB_overlay(モーダルウィンドウのウィンドウの外側のグレイになる領域を示す)のclickイベントでtb_remove関数をコールすることで実装できます。
参考:
FlashBLOG MVON.NET - FLASH、WEBに関する話題。 » Blog Archive » jQuery-ThickBoxをお好きなイベントで出す
2015年4月11日土曜日
[MovableType] [Plugin] セキュアに記事・ウェブページのプレビューを見るプラグイン
とてもとても久しぶりにMTのプラグインを作りました。MT6になってからは初めてです。
作成したプラグインはセキュアに記事・ウェブページのプレビューを見ることができるようになるプラグインです。
MTの正規のプレビューは正規のテンプレートを適応した実体ファイル(静的ファイル)を実際に生成して、そのファイルにリンクをはる、または遷移させることで実現しています。
そのため、プレビューファイル名に複雑な数字列が付けられているとはいえ、それらがHTTPアクセス可能な状態に置かれているというリスクがあります。今回作成したSecurePreviewはインストールしてもらうと、プレビューがmt.cgiで描画され、静的ファイルは何も生成されなくなります。また、MTにログインしていない状態ではこのプレビューには一切アクセスできないようにしています。
プレビュー用の実体ファイルはゴミファイルになって、周期的に削除しなくてはならないといった問題もありますので、このプラグインを使えばそういった煩わしさからも解放されます。
https://github.com/shinchit/mt-plugin-securepreview
作成したプラグインはセキュアに記事・ウェブページのプレビューを見ることができるようになるプラグインです。
MTの正規のプレビューは正規のテンプレートを適応した実体ファイル(静的ファイル)を実際に生成して、そのファイルにリンクをはる、または遷移させることで実現しています。
そのため、プレビューファイル名に複雑な数字列が付けられているとはいえ、それらがHTTPアクセス可能な状態に置かれているというリスクがあります。今回作成したSecurePreviewはインストールしてもらうと、プレビューがmt.cgiで描画され、静的ファイルは何も生成されなくなります。また、MTにログインしていない状態ではこのプレビューには一切アクセスできないようにしています。
プレビュー用の実体ファイルはゴミファイルになって、周期的に削除しなくてはならないといった問題もありますので、このプラグインを使えばそういった煩わしさからも解放されます。
https://github.com/shinchit/mt-plugin-securepreview
ラベル:
MovableType,
MT,
Plugin,
Preview,
Secure,
SecurePreview,
プラグイン
登録:
投稿 (Atom)