2014年7月31日木曜日

PhoneGap でサンプルプログラムを動かす

PhoneGap をインストールした後、以下のコマンドでプロジェクト作成。
新規プロジェクトはデフォルトでサンプルプログラムが入っている。
$ phonegap create my_project

プロジェクトの中に移動
$ cd my_project

ビルド
$ phonegap build ios
$ phonegap build android

実行(自動的にビルドもする)
$ phonegap run ios
$ phonegap run android

iOS の SDK, Android の SDK が正しくインストールされていれば、
エミュレータが起動してサンプルが動きます。
サンプルプログラムのソースは www ディレクトリに入っています。



2014年7月30日水曜日

PHP の fgetcsv の改行は LF で

Excel for Mac で作成した CSV ファイルの文字コードを
SJIS => UTF-8 に変更して fgetcsv() で読み込んだところ、
改行がうまく取れずに全部1行で繋がって取得された。

改行はには LF が含まれていなければならなず、
Mac デフォルトの CR のみには対応していない。
CSV 読み込み前に LF か CR LF のどちらかに一旦変更する必要がある。

2014年7月29日火曜日

PhoneGap 最新版のインストール

HTML + CSS + JavaScript で開発した Web アプリをスマホのネイティブアプリに変換できる PhoneGap の最新版インストール方法です。

Node.js のパッケージマネージャ npm を使って簡単にインストール可能です。
$ sudo npm install -g phonegap

現在の最新バージョンは 3.5 です。
インストール後、以下のコマンドでバージョン確認できます。
$ phonegap -v

2014年7月28日月曜日

Twitter アプリケーションIDの調べ方

アプリケーション ID はアプリ設定画面の、
URL 内に含まれています。画面には表示されてないっぽいです。

まず、登録してあるアプリ一覧を表示。
https://apps.twitter.com

アプリIDを知りたいものをクリックすると、
URLがこんなかんじになります。
https://apps.twitter.com/app/******/show

****** 部分がアプリケーションIDになります。
アプリケーションがアクセス制限を受けた場合など、
理由の問い合わせに必要になります。

2014年7月27日日曜日

Android SDK スタンドアロン版を落とす

Android 開発で使用する Android SDK は、
基本的に Android Studio や Eclipse(ADT Bundle) とセットで配布されています。

純粋に SDK 単体だけが欲しい場合は、
これらの開発環境ではなく Android SDK スタンドアロン版を使用します。

スタンドアロン版は Android SDK の DL ページの、
下の方にあるリンクを展開しなければ表示されないのでちょっとわかりづらいです。
"GET THE SDK FOR AN EXISTING IDE" を開くと DL ボタンが表示されます。





スタンドアロン版はコンソールから直接コマンドを打ち込んで使用したり、
Eclipse や Android Studio 以外の開発環境から読み込んで使用します。

2014年7月26日土曜日

Reeder 2 for Mac と Feedly の連携

RSS リーダは自作の Web アプリを使っていたのですが、
使い勝手が良いというレビューが多い Reeder の Mac 版を購入してみました。

Reeder
http://reederapp.com

Mac 版と iOS 版が別売りだったのですが、
ネットで調べたところ Reeder だけで Mac と iOS の同期ができないようなので、
Feedly のアカウントを経由して同期をとるようにしました。

Feedly
http://feedly.com

Feedly のアカウントを取得後、
Reeder のメニューから Accounts -> Add Accounts... をクリックします。


Reeder にはクライアントのみで RSS を管理することもできます。
スマホと同期してどちらでも読めるようにするものは Feedly で、
サーバ上に置きたくないものは Reeder のクライアント上で管理するのが良いと思います。



2014年7月25日金曜日

SQL: ORDER BY で複数指定

ORDER BY で並び替えを行なう時、
複数の列を指定して優先順位を付けることができます。
「まずカラムAで並び替え、カラムAが同じものはカラムBで並び替え」
というようにカラムA→カラムBという優先順位で並び替える場合は以下のようにかけます。
SELECT * FROM my_table ORDER BY column_A, column_B

商品データベースの中から、商品の幅の小さい順で取得、
幅同じ場合は高さの小さい順で取得といったことができます。

2014年7月24日木曜日

Excel で値だけをコピーする

通常通り Control + C でコピーした後、
右クリック → 形式を選択してペースト で「値」を選ぶと、
計算式によって計算された値だけをコピー&ペーストできます。





2014年7月23日水曜日

wikipedia が何回か更新しないと表示されない

avast! の Web Shield 機能が原因でした。

環境
Mac OS X Mavericks + avast! Free Antivirus 9.0

現象
wikipedia を表示した時に真っ白のページが表示される。
何回か更新ボタンを押すとページが表示される。(12回くらい)

対処法
avast! の Web Shield 機能でスキャンを無視するリストに、
Wikipedia のサイトを登録すればOK。


avast! の設定画面を開く。



メニューから avast! > Preferences... をクリック


左下の鍵アイコンをクリックしてパスワード入力



Web Shield の Advanced... ボタンをクリック


Exclusions タブをクリック


+ ボタンをクリック



ja.wikipedia.org を入力して Add ボタンをクリック
他にも見れないページが有る場合はドメイン名(******.org とか ******.com とか)を入力



リストに追加されればOK。右下のDoneをクリックして閉じる。



この時点で wikipedia がきちんと初回アクセスで表示されるようになります。

鍵をかけ直す。



以上で設定完了です。
wikipedia 以外でも表示されないサイトがある場合は、
上記のように除外サイトに登録すると解決されます。



2014年7月22日火曜日

Excel で文字列の置換

Excel で URL が入力されているセルに対して、
URL の末尾の数字だけを取り出そうとして正規表現が使えるか調べてみたところ、
Excel の関数には正規表現が使えるものはなく、
Basic で記述しなければいけないらしかった。

面倒だったので文字列の置換を何回か行なって代用した。
=SUBSTITUTE(置換対象セル, 対象文字列, 置換後文字列)

2014年7月21日月曜日

PHP:小数点の切り捨てがおかしいとき

PHP で小数点を丸めるときに、
丸め誤差の影響で意図していない結果が出ることがある。
例えば以下の例では 8 になって欲しいところが 7 になる。
$ php -a
php > $n = (0.1 + 0.7) * 10;
php > echo floor($n) . "\n";
7

切り捨て直前に文字列に変換することで回避できる。
php > echo floor(strval($n)) . "\n";
8


参考: PHPの小数演算における切り上げ切り捨て問題 | PSI Labs
http://www.psi-net.co.jp/blog/?p=277


2014年7月20日日曜日

jQuery UI DatePicker で日付のフォーマットを指定

jQuery UI DatePicker で日付を選択した時に、
実際に <input> 要素の value としてセットされる日付のフォーマットを設定できる。
$( ".selector" ).datepicker({ dateFormat: "yy-mm-dd" });
http://api.jqueryui.com/datepicker/#option-dateFormat

2014年7月19日土曜日

Word に埋め込まれた画像を取り出す

ファイル > Web ページとして保存 を選択して HTML ファイルを保存すると、
同じ場所に ******.files というディレクトリが作られて、
内部の画像が全て保存されます。

個別に保存する場合は、
画像を右クリック > 図として保存
で1つずつ保存することもできます。


2014年7月18日金曜日

Mac: アクティビティモニタからプロセスを終了させる

Mac のアクティビティモニタでは実行中の全プロセスが表示されます。
応答しないプロセスを強制終了させる場合などは、
プロセス名をダブルクリックして、
「強制終了」ボタンを押すと終了させられます。
応答するプロセスも「終了」ボタンから終了可能です。


2014年7月17日木曜日

CRON で PHP を実行するときのスーパーグローバル変数

CRON で PHP を実行する際に、
スーパーグローバル変数を参照できずにエラーが出ていました。

CRON から php コマンドで呼び出す場合は、
使用できないスーパーグローバル変数があるため、
別途設定ファイルから読み出すようにするなど注意が必要です。

参考
http://otukutun.hatenablog.com/entry/2013/03/02/103333

2014年7月16日水曜日

Mozilla サイトのイースターエッグ

Web サイトには HTML のコメントや JavaScript の console を使って、
隠しメッセージを入れていることがあります。
(会社の悪口を書いて大事になったニュースがありましたね)

例えば Mozilla Developer Network だとアスキーアートが
ブラウザのコンソールに出力されます。


次回以降表示しないための関数も律儀に準備されています。
サイトを訪れた際にはコンソールを開いてみると何かあるかもしれないです。

2014年7月15日火曜日

sessionStorage にオブジェクトを保存

sessionStorage に保存されるデータは自動的に文字列に変換されます。
オブジェクトをそのまま保存しようとすると以下のようになってしまいます。
JSON で保存するのがオススメです。
var data = {
    'key': 'value'
}
sessionStorage.setItem('my_data', JSON.stringify(data));

...

var data = JSON.parse(sessionStorage.getItem('my_data'));

2014年7月14日月曜日

PHP の PDO で条件部分に変数を使う際の注意

例えば LIMIT や ORDER BY の 後ろに変数を使おうとして、
こんな感じに書くと false が返ってくる。
$num = 5;
$sth = $dbh->prepare('SELECT * FROM `my_table` LIMIT :num');
$sth->bindValue(':num', $num);
$sth->execute();  // false

$num の値が : num の中に文字列として展開されていることが原因。
データ型を指定するとうまくいく。
$sth = $dbh->prepare('SELECT * FROM `my_table` LIMIT :num');
$sth->bindValue(':num', $num, PDO::PARAM_INT);
$sth->execute();  // データを取得できる


PDO 定義済み定数 | PHP
http://jp2.php.net/manual/ja/pdo.constants.php

参考
PHPのPDOでLIMIT句でエラーが発生した時の対処 | SUSH-i LOG
http://blog.sus-happy.net/201207/php-pdo-limit/

2014年7月13日日曜日

Google CDN の jQuery UI で datepicker を日本語に

Google CDN で jQuery UI を読み込んだ後に、
以下のファイルを読み込むと日本語化される。

http://ajax.googleapis.com/ajax/libs/jqueryui/1/i18n/jquery.ui.datepicker-ja.min.js
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.0/jquery-ui.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1/i18n/jquery.ui.datepicker-ja.min.js"></script>


2014年7月12日土曜日

Tシャツのタグは左側に来る?

私は服装については油断が多く、
たまに気付かずに T シャツの前後を逆に着てしまったり、
上着の裏表を逆に着てしまっていることがあります。(←本気)

先日も仕事中に首に違和感を感じて、
Tシャツが逆になっているような気がしました。
何となく首元がきついような気がしないでもないという曖昧な感じなので、
どちらともつきませんでした。

Tシャツだと首の後にタグがあると思い、
確認してみたのですが、首の後にタグがないタイプでした。

そこで、シャツの横側に付いているラベルに注目しました。
ネットで調べたところ、規格は無いものの、
国産だと基本的に左側にタグが付いているらしいです。

洋服の裏に付いているタグ | Yahoo知恵袋!
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1310996448


その時は右側にタグが付いていたので、逆だとわかり、
着替え直したところしっくりきました。

いざというときはタグが左側に付いているかどうかが、
ヒントになると思います。多分使わないでしょうけれど。

2014年7月11日金曜日

国民年金の追納と後納

過去の年金を後から納める際には追納と後納の2種類の制度があります。
どちらも後から納めることに変わりはないですが、
異なる制度となっており、申請書も別々なので要注意です。

追納
学生納付特例制度や若年者納付猶予制度などで
免除されている金額を後から納める。
過去 10 年分だけ追納できる。
10 年過ぎたものは納められない。

後納
ただ純粋に納めていない金額(未納)を後から納める。
過去 2 年分だけ後納できる。2年過ぎたものは納められない。(時効)
ただし、例外的に平成27年9月30日までの間だけ過去10 年分が納められる。

年金について - 追納・後納等可能月数と金額の確認 | 日本年金機構http://www.nenkin.go.jp/n/www/service/detail.jsp?id=6077

追納申込書(一番下のリンク)
http://www.nenkin.go.jp/n/www/service/detail.jsp?id=3651

後納申込書(真ん中あたりのリンク)
http://www.nenkin.go.jp/n/www/service/detail.jsp?id=6221


自分の納付の現状についてはねんきんネットで確認できます。
http://www.nenkin.go.jp/n/www/n_net/

追納・後納は年金事務所へ行くとお姉さんが優しく教えてくれます。
申請書などもその場で書いて提出できます。書き方も教えてくれます。

年金事務所にはそれぞれ管轄が決まっているので、
自分の住んでいる地域を管轄している事務所へ行きましょう。
http://www.nenkin.go.jp/n/www/section/

免除されていた分を後から納めるともらえる金額も増えるので
お金に余裕があれば過去の分も全て納めておくのがオススメです。

2014年7月10日木曜日

PhotoShop で PNG にした時に白い枠線が入ってしまう場合

「Web 用に保存」で保存する際に、
PNG-8 にすると境界線に白い部分が入ってしまったのですが、
PNG-24 にすると白い部分が入りませんでした。
表現できる色数の問題っぽいです。


2014年7月9日水曜日

NicEdit で見たままのデザインにする

MIT ライセンスで自由に使える NicEdit ですが、
他の WYSIWIG エディタと同様に初期状態だと、
見たままのデザインになっていません。
(最終的に出来上がりのページに適用される CSS が適用されていないため)

最終的に出来上がった HTML を公開するページで
読み込まれる CSS を NicEdit を使用するページに適用すると、
見たままのデザインになります。

CSS の優先順位で適用されない部分は、
.nicEdit-main など編集領域のセレクタをうまく使って適用されるようにする必要があります。


2014年7月8日火曜日

jQuery: Ajax でエラーが出るときのレスポンス確認

dataType を json にして jQuery の $.ajax() で通信している時に、
error に処理がわたってしまう場合、
パースエラーが発生していることがあります。

とりあえずサーバからのレスポンスを見てみるとエラーの原因が分かりやすいです。
以下のように一時的に dataType を text にして、
console.log() や document.write() で表示してみると良いと思います。

$.ajax('target_url', {
    type: 'POST',
    dataType: 'text', // text に変える
    data: {
        client_data: 'my_data'
    },
    error: function() {
        // エラー
    },
    success: function(response) {
        document.write(response);
        return;  // エラーを表示して抜ける
        ...
    }
});

2014年7月7日月曜日

TinyMCE とBootstrap の CSS が競合する

Bootstrap で作ったページ内に TinyMCE を配置したところ、
表やリンクなどのプラグインで出現するモーダルのサイズが、
通常よりも小さく表示されてしまい文字が読めない状態になった。



BootStrap の CSS を外してみたところ、元の状態で表示された。



<iframe> の中に TinyMCE を入れて CSS を適用されないようにすることも考えたけど面倒そう。
とりあえず慣れている NicEdit は競合しなかったのでこちらを使用することにした。

Bootstrap + TinyMCE の CSS の競合は時間があったら解決できないか調べてみる。

2014年7月6日日曜日

jQuery.ajax() で "TypeError: Type error"

data に渡すデータタイプが間違っている時に上記エラーが出ます。
例えばコンテキスト(this)を渡していたりするとエラーが出ます。

$.ajax('uri', {
     type: 'POST',
     data: {
         attr: this  // "TypeError: Type error"
     }
});

data に渡している変数をチェックしてみると解決できるかもしれません。

2014年7月5日土曜日

PDO のエラーコード 00000 の意味は?

PHP の PDO を使って SQL を実行したあと、
errorInfo() を見てみるとエラーコードに 00000 がセットされている場合があった。

array (size=3)
  0 => string '00000' (length=5)
  1 => null
  2 => null

エラーコード 00000 は SQL の実行が成功した時にセットされている。

2014年7月4日金曜日

MITライセンスで使用できるWYSIWYGエディタ「CLEditor」

これまで NicEdit という MIT ライセンスの WYSIWYG エディタを使っていたのですが、
同じく MIT ライセンスの CLEditor も良さそうなので、こちらを使ってみています。
(似たような名前で CKEditor がありますがこちらは MIT ライセンスじゃないので注意)

http://premiumsoftware.net/CLEditor

TinyMCE は LGPL で、多分改変した際に公開義務がつくので
(ちょっとよくわかってない)
おとなしく MIT ライセンスのエディタを使っていきます。

2014年7月3日木曜日

チャットワークのデザインが変わった

お仕事でチャットワークを使用しているのですが、
iPad に入れていたアプリのアイコンがいつの間にか変わっていました。

アプリ版は黒をベースにしたデザインに変わっていました。
(前は青がベースだった気がします)



PCの方も元々はチェックマークのロゴだったのですが、
四つ葉のクローバーのような感じのロゴに変更されていました。

https://www.chatwork.com

2014年7月2日水曜日

竹取 JS で縦書に変わらない

竹取 JS で toVertical() を実行しても縦書にならない場合、
ブラウザに保存されているキャッシュが原因になっていることがあります。

キャッシュの「TTB_DISABLED」が残っていると、
ブラウザによっては縦書に変換されませんでした。
こちらを削除するとまた変換できるようになります。

chacheDisabled オプションでキャッシュを無効化できるらしいのですが、
ライブラリをいじっていたせいか、このオプションが動作していなかったので、
直接ライブラリ内で「TTB_DISABLED」を残さないように変えたところ、
キャッシュを残さずに縦書き・横書きを切り替えられるようになりました。

2014年7月1日火曜日

Redmine でまとめてタスクを編集する

タスク一覧画面で 複数選択  > 右クリック でまとめて更新できる。
まとめてステータスや優先度をを更新したりするときに便利です。



タスク一覧は マイページ > 担当しているチケット > すべてのチケットを見る などで確認できます。