クラス -> 内部関数

Posted by muchag | JavaScript | 2015-02-28 (土) 0:27:09

内部関数は、ちょっと特殊みたい。

内部関数とは

クラス内に設置したローカルメソッド。
外部からは呼べない。

  1. var hoge = ( function() {
  2.  
  3.   // constructor
  4.   var hoge = function() {
  5.     this.x = 5;
  6.   };
  7.  
  8.   // 内部関数(クラス内メソッド)
  9.   function moge() {} ← これ
  10.  
  11.   var p = hoge.prototype;
  12.  
  13.   p.f1 = function() {
  14.     return true;
  15.   };
  16.  
  17.   return hoge;
  18. })();

 

呼び出し

コンストラクタからでも、公開メソッドからでも関数名(メソッド名)で呼び出せた。

  1. p.f2 = function() {
  2.     moge();
  3. };

 

特殊なところ
this

内部関数内では、this を使えない。
解決策は後述。
 

引数

引数があると、通常通りでは呼び出せなかった。

  1. function moge( arg ) {}
  2.  
  3. p.f2 = function() {
  4.     moge( arg );
  5. };

これでは、syntax error にはならないけど、値が渡らない。
 

解決策

上記2点を一度に解決。
(解決法はわかったけど、まだあまりよく理解できていない)

apply メソッド、または call メソッドを利用する。

つまり、下記のように呼び出す。

  1. function moge( arg ) {}
  2.  
  3. p.f2 = function() {
  4.     moge.apply( this, arg );
  5.     moge.call( this, arg );
  6. };

 

誰それ

参考サイトを見ると

callはFunction.prototypeの中にあります。

あと味:applyとcallの使い方を丁寧に説明してみる

と書いてあるので、プロパティ・オブジェクト からの呼び出しだから、というなのかもしれないけど、今はまだよくわかっていない。
 

this はどこへいった・・・

引数に指定した this。
でも、内部関数側は受け取っていない。

どうも、自動的に(強制的に?暗示的に?)受け取るらしく
これで、内部関数内で this を利用できる。

また、何も this を渡さなければいけないわけではなく
要は内部関数内で this と記述して利用したいオブジェクトを指定すればよいらしい。
 

両者の違いは?

apply

  1. var args = [ 1, 2, 3 ];
  2. moge.apply( this, args );

apply は、this 以外の引数を、配列にまとめて渡す。
本当に配列を渡すときとか、引数が多い時、または変更が頻繁にあるときなどには便利。
 
call

  1. moge.call( this, 1, 2, 3 );

call は、this 以外の引数を列挙して渡す。
 

参考サイト

あと味:applyとcallの使い方を丁寧に説明してみる

JavaScript | 2015-02-28 (土) 0:27:09 |

クラス -> グレートなつくりかた

Posted by muchag | JavaScript | 2015-02-27 (金) 21:27:25

JavaScript は滅多に使わないので、今までクラスとは無縁できたけど、これからは是非クラスを利用していきたい。

以前、つかみ という JavaScript クラスの基本について書いたけど、今回は グレートなつくりかた という記事を見つけたので、改めて基本記事を作成。

グレートなつくりかた
  1. var hoge = (function() {
  2.  
  3.   var FOOFOO = 777; // クラス内定数
  4.  
  5.   // constructor
  6.   var hoge = function(arg) {
  7.     this.x = 5;
  8.     this.y = 10;
  9.     this.z = arg;
  10.   };
  11.  
  12.   var p = hoge.prototype;
  13.  
  14.   p.f1 = function() {
  15.     return true;
  16.   };
  17.  
  18.   p.f2 = function() {
  19.     return false;
  20.   };
  21.  
  22.   return hoge;
  23. })();
  24.  
  25. var instance = new hoge(1);
  26. // hoge {x: 5, y: 10, z: 1, f1: function, f2: function}

Qiita:【javascript】やさしいクラスの作り方
より引用。
 
この書き方だと、1クラス1ブロックになって、見やすい。 😎
 
せっかくなので、覚書用に改変。

  1. var hoge = ( function() {
  2.  
  3.   var FOOFOO = 777; // クラス内定数
  4.   var foo = 777;    // クラス内変数
  5.  
  6.   // constructor
  7.   var hoge = function( arg ) {
  8.     this.x = 5;
  9.     this.y = 10;
  10.     this.z = arg;
  11.   };
  12.  
  13.   // 内部関数(クラス内メソッド)
  14.   function moge() {}
  15.  
  16.   var p = hoge.prototype;
  17.  
  18.   p.f1 = function() {
  19.     return true;
  20.   };
  21.  
  22.   p.f2 = function() {
  23.     return false;
  24.   };
  25.  
  26.   return hoge;
  27. })();
  28.  
  29. var instance = new hoge(1);
  30. // hoge {x: 5, y: 10, z: 1, f1: function, f2: function}

 

参考サイト

Qiita:【javascript】やさしいクラスの作り方
Qiita:[JavaScript]クラス、関数、オブジェクト クラス

JavaScript | 2015-02-27 (金) 21:27:25 |

Namery

Posted by muchag | Tool | 2015-02-25 (水) 22:12:01

リネーマー。
Flexible Renamer と併用中。

【環境】
Flexible Renamer:v8.4
Windows:7 Home Premium 64bit SP1
インストール

Vector:Namery より DL して解凍。
後は好きな場所へ配置。
 

ヘルプ

ヘルプファイルが同梱されているので
[ヘルプ]-[ヘルプ]
で、ブラウザにて表示される。
 

良い所
リネーム対象

Flexible Renamer と好対照な仕様。

リスト中の選択した部分だけリネームする。
リネーム後の文字列も選択しないと見られない。
逆に言うと、うっかり全部リネームしてしまう事故から救われる可能性が高い。
不便な感じもするけど、誤作動防止に役に立つので、不満にはならない。
 

コマンドマクロ

コマンドマクロ という機能が素晴らしい。
Flexible Renamer にもあるのかもしれないけど
現時点では見つけられていないので、Namery に1票。
 

正規表現

Perl5 準拠らしいので、密かに Perl5 の勉強になるかも。
 

困っている所
ディレクトリを開けない

3,746 ファイルあるディレクトリを開こうとしたら、開けなかった。
ファイル数の問題か、ファイル名が長すぎるファイルがあるのか。
はたまた別に原因があるのか。
 

Unicode 未対応

文字は Shift-JIS 処理だそうなので、Unicode 文字が出てきたらやばい。
今は問題なし。

Tool | 2015-02-25 (水) 22:12:01 |

Flexible Renamer

Posted by muchag | Tool | 2015-02-25 (水) 17:45:24

リネーマー。

【環境】
Flexible Renamer:v8.4
Windows:7 Home Premium 64bit SP1
前置き

ファイルリネームツールとして、長らく x_rename を使わせていただいてきたが
更新が止まって大分経つので、思い切って乗り換えてみることにした。

x_rename の作者様、今までありがとうございました。
大変大変お世話になりました。
つばっくの「ばけ屋敷」本館
Vector:x_rename ファイル名変更/移動/コピー
 

乗り換え対象
条件
  • インストールしないこと
  • 正規表現を利用したリネームをできること
  • 連番設定をできること
  • フォルダ名をリネームできること

 

候補

で、あちこち見まわった結果
Vector:Flexible Renamer
Vector:Namery
の2つに候補が絞られた。

ので、実際に2つとも使ってみた結果、サッと利用した感じでは甲乙つけ難し。
 
最後まで Namery の、当日無限(?)Undo 機能に後ろ髪を引かれたけど
Unicode 対応と、最終更新がより新しい Flexible Renamer を使ってみることにした。
(といっても、どちらも開発及びバグフィクスは止まっているみたい・・・orz)
 

良い所
リネーム対象

Namery と好対照な仕様。

リネーム後の文字列は、リスト内全てのファイル、フォルダについて表示される。
[リネーム] を押下すると、自動的にリスト内全てのアイテムがリネームされる。
一部をリネームしたい場合は、リスト内の該当アイテムを選択してから [リネーム] 押下。

最初、一部をリネームする方法を探してしまった。
[リネーム] 押下時に、どちらの場合でもダイアログにて確認メッセージが出るので
ダイアログを読み飛ばさなければ、事故を抑制できるかと。
 

困っている所
テキスト入力が一手間

入力欄(テキストボックス)をクリックしても、カーソルがでるだけなので
前回の入力値を入れ替えようとすると、前回の値を消さなければならない。
Ctrl + A も効かないので、ちょいと面倒。

使い方
正規表現

左から2番目のペインにある [高度なリネーム] にチェック。
リネーム方法:[正規表現] にチェック。
検索窓:正規表現文字列を入力(前後の「/」は不要)
置換窓:置換後文字列を入力

置換前文字列をそのまま利用したい時

検索窓文字列の当該箇所を () で括り(グループ化)
置換窓文字列に出現順番に合わせて、\1~ で入力

置換前 置換後
– 1990.01.01 – [1990.01.01]
– 2000.12.31 – [2000.12.31]
検索窓 置換窓
– (\d{4}.\d{2}.\d{2}) – [\1]
– (\d{4}).(\d{2}).(\d{2}) – [\1.\2.\3]

検索窓では、もちろん要エスケープ。

置換前 置換後
[1990-01-01] [1990.01.01]
検索窓 置換窓
\[(\d{4}.\d{2}.\d{2})\] [\1]
Tool | 2015-02-25 (水) 17:45:24 |

Qonoha(木の葉)

Posted by muchag | Tool | 2015-02-25 (水) 0:47:53

マルチメディアプレイヤー。

【環境】
Qonoha:2.2.3
Windows:7 Home Premium SP1

Vector:公式サイト?

プレイリストを作るのではなく、フォルダから拾ってくれるプレイヤーを探していて辿り着いた。
一番の願いは、サブフォルダまでリストアップしてくれること。
これが叶った。 🙂

希望
  • フォルダを指定したら、そこからファイルを拾ってくれること
  • サブフォルダまで拾ってくれること
  • インストールしないこと
  • 動作が軽いこと
  • シャッフル再生をできること

 

インストール

上記公式サイトより DL して、解凍。
出てきたディレクトリを好きな場所へ配置。
Qonoha.exe をダブルクリック。

使い方

色々とボタンはあるけど、とにかく画面中央で右クリック。
これで全て(?)のメニューが出てくる。
 

連続再生

これを ON にしておかないと、複数曲を登録しても1曲で終わる。
当たり前だけど、なんだろ。。。デフォルトで連続再生なプレイヤーになれちゃったせいか
最初戸惑った。
 

フォルダ選択

[画面中央右クリック]-[ファイル]-[フォルダーを開く]

このとき、予め設定をしておけば、サブフォルダーなども拾ってくれる。
[画面中央右クリック]-[設定]
[全般] タブの3番目 [フォルダー内の他のファイルも読み込む] にチェックを入れる。
必要に応じて [サブフォルダー] [リスト ファイル] にもチェックを入れる。
 

フォルダ追加

[画面中央右クリック]-[ファイル]-[フォルダー編集]
[コンテキスト メニュー] の [追加] から目的のフォルダを選択して [OK]
[コンテキスト メニュー] の画面へ戻ったら、[ソート] と [サブフォルダー] を任意に指定して [閉じる]
[画面中央右クリック]-[ファイル]-[(指定したフォルダ)] または、テンキーへのショートカットが設定されている。
 

ショートカットキー

[画面中央右クリック]-[設定]
[操作] タブの [ショートカット キー/マウス]
 

スキン変更

[画面中央右クリック]-[設定]
[スキン] タブから選択。
 

スキンの追加

有志による外部スキンがあるので、そちらから DL して

qonoha\Skin

へ配置。

上述の方法でスキンを設定すれば変更できる。
 
有志による外部スキン
過労妖精:Qonoha Skin+
徒然プログラマ:Qonoha用スキン
コンピュータは人間が楽をするための道具:自作スキン – Qonoha
xiuwuの雑記:Qonoha用スキン「Vectory mini」
Qonoha Skin
 

スキンの作り方

同梱の スキンについて.pdf に説明がある。
更に、有志による記事がある。
地平線の果てに…:Qonoha用スキン 作り方
 

再生速度の記憶

[画面中央右クリック]-[設定]
[再生] タブの下から2番目にある [再生速度を記憶する] にチェックを入れる。
 

再生位置の記憶(レジューム機能)

[画面中央右クリック]-[設定]
[再生] タブの左下の方にある [ファイルごとの記憶]
[再生位置] にチェックを入れる。
これで、再生途中にアプリを終了しても、次回起動時 [再生] ボタンをクリックすることで、続きから始まる。
 

おまけ

[画面中央右クリック]-[設定]
[全般] タブの7番目 [フルスクリーンと最大化状態を記憶する] にチェックを入れる。
 

参考サイト

k本的に無料ソフト、フリーソフト:Qonoha
freesoft100:Qonoha
浜名湖観光局:フリーソフトウェア評 - 動画プレーヤー
2ちゃんねる:動画プレイヤーMediaunite、Qonoha part14

Tool | 2015-02-25 (水) 0:47:53 |

SC-02F

Posted by muchag | Android | 2015-02-25 (水) 0:15:09

F-02E を落としてしまい、ケータイ補償サービスでもらった代替機。

【環境】
端末:SC-02F(Galaxy J)
Android:4.4.2
本体情報

SAMSUNG:GALAXY J SC-02F
docomo:GALAXY J SC-02F サポート情報
Wikipedia:SC-02F
 

アプリケーション
アナログ時計

Google play:Simple アナログ時計 [秒針対応ウィジェット]
Google play:シンプルなアナログ時計ウィジェット無料 目覚まし時計アラーム
 

ビューア

Google play:Perfect Viewer
 

ファイラー

Google play:X-plore File Manager
 

ボイスレコーダー

Google play:PCM録音
 

使い方
壁紙

[設定]-[デバイス]-[壁紙] から変更。

Android | 2015-02-25 (水) 0:15:09 |

利用規約集

Posted by muchag | その他 | 2015-02-23 (月) 14:22:12

利用規約集

Google:ポリシーと規約:利用規約

その他 | 2015-02-23 (月) 14:22:12 |

日本語入力

Posted by muchag | Google | 2015-02-23 (月) 14:18:21

Google 日本語入力を使ってみる。

【環境】
Windows:7 Home Premium SP1
インストール

Google:日本語入力 より、DL。
GoogleJapaneseInputSetup.exe
 

辞書の共有
IME の一時切り替え

切り替えないと、後述の辞書ディレクトリを移動できない。
[コントロールパネル]-[地域と言語]
[キーボードと言語]-[キーボードの変更]
[全般]-[既定の言語] を「Google 日本語入力」以外に。

そして、PC 再起動。
 

Google 日本語入力の辞書在所
C:\Users\(ユーザ名)\AppData\LocalLow\Google\Google Japanese Input

 

Google ドライブにて共有

上記ディレクトリを Google ドライブへ移動し、元の場所へシンボリックリンクを貼る。
これで、本体はクラウド管理。
 

IME の変更

上述の手順にて、再度 Google 日本語入力へ変更。
PC 再起動。

Google | 2015-02-23 (月) 14:18:21 |

クラウド ストレージ

Posted by muchag | Drive | 2015-02-23 (月) 13:53:08

Web 上のドライブではなく、デバイスに保存する方のドライブ。
クラウドストレージとして利用できる。

【環境】
Windows:7 Home Premium SP1
概要

Google ドライブといえば、「スプレッドシート」「ドキュメント」などを利用できる、Web 上サービスの印象が強いけど、
このサービスはローカルにインストールして利用する。
 

機能

ローカルに保存したリソース(ファイルなど)をクラウドストレージと同期を取ってくれる。
Dropbox と同種のサービス。

これにより、PC、スマホ、タブレット、デバイスを選ばず、どこからでも共有したいリソースにアクセスできる。
 

スペック

Google ドライブの Web 上サービスである「スプレッドシート」などはノーカウントで 15GB まで。
個人でテキストだけの利用なら、ほぼ無限ね。。。
 

インストール

Google:ドライブ ダウンロード から DL。
「パソコン」「Android 端末」「iPhone、iPad」の三択。
「パソコン」を選択して DL。
googledrivesync.exe
 

アカウント登録

インストール作業中にアカウントを聞かれるので、Google アカウントを登録。

Drive | 2015-02-23 (月) 13:53:08 |

PHPUnit -> 導入(失敗)

Posted by muchag | PHP | 2015-02-22 (日) 16:41:45


公式

【環境】
php:5.4.7
PEAR のアップデート

http://pear.php.net/go-pear.phar を DL してきて、php 実行ディレクトリへ配置。
コマンドプロンプトを [管理者として実行]。

  1. $ php go-pear.phar
  1. Are you installing a system-wide PEAR or a local copy?
  2. (system|local) [system] : ← 何も入力せずに Enter

2015-02-22_PHPUnit_111 の PEAR ディレクトリを指定。
pear.ini を探してもどこにも見つからなかったので困ったけど、
実は新たに作成されるので、php 実行ディレクトリを指定すれば OK。
1 の $prefix を利用して、$prefix\pear.ini と指定。

2015-02-22_PHPUnit_2結果はこうなる。
php 実行ディレクトリに、下記2ファイルが追加される。

pear.ini
PEAR_ENV.reg

2015-02-22_PHPUnit_3最後に上記 PEAR_ENV.regを
ダブルクリックで実行。
PC を再起動して、レジストリ登録を反映。

 

PHPUnit のインストール

参考サイトをなぞってインストールをしようとしたら、
pear.phpunit.de
へ接続できなかった。

PHPUnit の PEAR 経由インストールはできなくなったそうな。
なので、このやり方はここでお終い。。。
 

参考サイト

Web屋のまじめな話:Eclipse/PDT+PHPUnit導入

PHP | 2015-02-22 (日) 16:41:45 |
次ページへ »