2015年5月11日月曜日

JavaScriptのクラスの承継について

JavaScriptでは、クラスがありません

従って、C#、C++のプログラマは、JavaScriptを使うとなると、まずクラスを使って、承継方法について悩みます。
そこで、prototypeを使って擬似的にクラス表現を使います。

以下はその手段について記載します。

【コード例(1)】
var ClassA = function(cname) { this.name = cname; }
 ClassA.prototype.print = function() { console.log(this.name); } 
var a = new ClassA("クラスA"); 
a.print();
  ⇒クラスAと表示
var a = new ClassA("クラスB"); 
a.print();
  ⇒クラスBと表示 

1) まず、関数(function)を作成します。
var ClassA = function(cname) { this.name = cname; }

2) Classはnewでイスタンス(オブジェクト)を作成する
var a = new ClassA("クラスA");

3) 関数を登録する
ClassA.prototype.print = function() { console.log(this.name); }
※関数を作成すると、prototypeは自動で作成されます。
「prototype=自分の親クラスへの参照」だと考えると、理解しやすいです。

尚、もし、prototypeを使わないで以下のコードのようにすると、毎回functionが作成されます。
(下赤字に記載したように、毎回オブジェクトを作成して、print関数を定義しています)
var ClassA = function()  {
 // var this = {};  
this.print = function() { console.log(this.name); }
 // return this; 
}
prototypeを使うと、function内で、関数を定義する必要がないので、一回prototypeで定義すれば、共通で使うことができます。
var a = new ClassA("クラスB"); 
a.print();
  ⇒クラスBと表示 

4) オブジェクトを通して3)で設定した関数を実行する
 a.print();
⇒親クラスのprintを実行する

【まとめ】
汎用的な関数はprototypeに定義する


【コード例(2)】
var ClassA = function() {
    this.name = "
クラスA";

  this.surname = "クラス"
 }
var inheritsFrom = function (child, parent)
 { child.prototype = Object.create(parent.prototype); };
 var a = new ClassA();
ClassA.prototype.print = function() {
    console.log(this.name);
}
var ClassB = function() { this.name = "クラスB"; this.surname = "子クラス"; } 
inheritsFrom(ClassB, ClassA);
var b = new ClassB();
b.print();
   ⇒クラスBと表示 

1)承継関係を行う関数作成
次のような継承関数(inheritsForm)をつくり、子オブジェクトのprototypeに親オブジェクトのprototypeを設定しなおすことで、擬似継承する手もあります。

var inheritsFrom = function (child, parent)
 { child.prototype = Object.create(parent.prototype); };

上記の関数で親クラス(parent)の関数を全て、子クラス(child)にコピーします。

var a = new ClassA();
ClassA.prototype.print = function() {
    console.log(this.name);
}
var ClassB = function() { this.name = "クラスB"; this.surname = "子クラス"; } inheritsFrom(ClassB, ClassA);

クラスBはクラスAを継承しますので、ClassAのprint関数を実行できます。
var b = new ClassB();
b.print();
   ⇒クラスBと表示 

ClassBのprint関数をoverrideするには、次のように記載します。
ClassB.prototype.print = function() { 
  ClassA.prototype.print.call(this); 
  console.log(this.surname);
 }
   ⇒クラスB
   子クラス と表示

Call(this)関数によって、ClassBのprint関数が実行されます。


では、さらなる継承クラスClassCをつくるには、次のようにします。

var ClassC = function () {
    this.name = "クラスC";
    this.surname = "子のまた子クラス";
}
inheritsFrom(ClassC, ClassB);
ClassC.prototype.foo = function() {
    // Do some funky stuff here...
}
ClassC.prototype.print = function () {
    ClassB.prototype.print.call(this);
    console.log("Sounds like this is working!");
}
var c = new ClassC();
c.print();

   ⇒クラスC
   子のまた子クラス と表示



【参考URL】
http://www.codeproject.com/Articles/899662/Simple-inheritance-with-JavaScript
http://qiita.com/takeharu/items/809114f943208aaf55b3

アニメ動画 アルスラーン戦記

最近、アルスラーン戦記には待ってます。
歴史好きな人には、是非見てもらいたいです。

音楽もいいです
EDの 藍井エイル 「ラピスラズリ」 が特にいい感じ。
http://gyao.yahoo.co.jp/player/00100/v10181/v0993900000000547675/?list_id=2100566

原作は、銀河英雄伝説の田中芳樹であるので、筋もしっかりしており、見ていて飽きません。
ナルサスは、孔明?、竹中半兵衛?がモデルかな?。
ダニューンは、直江兼継ににてるかな。アルスラーンは源義経かな。
登場人物のモデルを考えるだけでなんかおもしろいです。

個人的には、ダリューンが知的、勇敢な上に、信頼の置ける人で、好んでます。
ヴァフリーズのさらし首がかなしい。

昨日は漫画喫茶にいって、1~3巻よんできました。
アニメこの先も期待できそうです。

下が動画サイトです。

http://gyao.yahoo.co.jp/special/arslan/?list_id=2100032
http://tvanimedouga.blog93.fc2.com/blog-entry-23550.html

詳細は、WikiPediaで。
http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%82%B9%E3%83%A9%E3%83%BC%E3%83%B3%E6%88%A6%E8%A8%98

2015年5月8日金曜日

Microsoft 次のブラウザはEdge

Microsoftの次のブラウザはEdgeという名前に決定されました。
そこで、気になるのがSilverlightは動くのか?、です。

下の開発者のブログを読む限り、Silverlightは動かなくなりそうです。
今後は、SilverlightやFlashなどのプラグインは使えなくなる傾向になりそうです。
開発としては、HTML5が主流となるのでしょう。

何かを得るには、何かを捨てなければならない、のは分かるのですが。
Microsoftの気まぐれに付き合っているような感じがしないでもない気がします。
(パフォーマンスと、セキュリティも大事だけど、既存のものを簡単にすてられると、ユーザの気持ちを本当に考えているのだろうか、と疑問に感じてしまいます)


Silverlightを使うには、Win10でIE(11)を使うことになりそうです。
(ただし、明らかになっていません)



【参考URL】
http://blogs.windows.com/msedgedev/2015/05/06/a-break-from-the-past-part-2-saying-goodbye-to-activex-vbscript-attachevent/

2015年5月7日木曜日

ネットワークにつながらない(プロキシエラー)

たまに、下の画像のようなエラーになりませんか?。


 このような場合は、以下の手順で対応すると、直ります。

1、ブラウザの「ツール」「インターネットオプション」を選択する



2、「接続」タブを選択して、「LANの設定」ボタンをクリックする
3、プロキシサーバー欄の「LANにプロキシサーバーを使用する(.........)」のチェックをはずす。




過去何度も、これにはまってます。
しかも、対応方法を忘れてしまって、結構困ったりします。

2015年5月6日水曜日

【もう一度、英語をやり直そう】英会話日記(過去の復習)

過去受けたレッスンで、復習していなかったものについて、調べておきました。

1) not .... enough
十分でない

2) smug = look at that face (どや顔)
http://masahironakata.blogspot.jp/2013/11/smug.html

3)there is more/less
http://www.e-bunpou.net/hikaku-hikakukyu.html

受験英語で丸暗記したno less than/ no more thanの復習です。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10145062555

4) on purpose (わざと)
http://friends-esl.com/phrase/phrase107.php

5) will, be+ing, be going to....
未来の事を話すときに使います。
受験英語のときにあまり、深く区別を考えてきませんでしたが、実は区別があります。
will には単純に未来のことを表現する意味が、be going toは事前に決まっていると言う意味が入っています。
http://waiwaienglish.com/futuretense-3385.html

6) make it up to you  何とかしてあげる, 埋め合わせをするよ
http://friends-esl.com/phrase/phrase32.php

7) 誤る時の文法
誤るときは、I'm sorry といいますが、その後の前置詞でforとtoについて、区別があります。
過去のことについて、誤る場合はforを使い、現在及び未来の事柄については、toを使います。

I'm sorry for .....   過去のことについて述べる
I' m sorry to .....  現在又は未来のことについて述べる

 例) I'm sorry to diasappoit you, but I can't come to party.
     I'm sorry for  disturbing you yesterday!


8) cat-sitting
 旅行中などに家へ来て猫の世話をしてもらうサービスのようです
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1131424121


■謝り言葉集
I'm sorry.
I must apologise.
Please accept my apologies.
Please forgive me.

■謝りを受け入れる言葉集
Don't worry about it.
It doesn't matter.
It's all right.
Never mind.
There's no need to apologise.
No harm done.



2015年4月29日水曜日

FFTPでの問題(トラブル)

ホームページのサーバへのアップなどで、FTPソフトを使っています。
私は、日本語FTPクライアントのFFFTPを使っています。

ダウンロードは、以下サイトでできます。
http://www.forest.impress.co.jp/library/software/ffftp/

このFFTPソフトでのトラブルについての解決方法をまとめてみました。
参考にしてください。
※うまく解決できない場合は、他のFTPソフト(WinSCP,FileZillaなど)も使った場合の方が手っ取り早いかもしれません。

 ① サーバへつながらない
ホストの設定がうまくできていない可能性があります。
・メニュー「接続」-「ホストの設定」を選択する
 ホスト設定ダイアログの「新規ホスト」で新たにホスト(つなぐサーバ先)を作成する
・メニュー「接続」-「ホストの設定」を選択する
 ホスト設定ダイアログの「設定変更」で新たにホスト(つなぐサーバ先)を作成する



 ダイアログ内で以下の設定を確認してください。
【基本タブ】
 ・ホスト名(アドレス) ・・・・・・ ホスト(サーバ)のアドレスが正しいか
 ・ユーザ名 ・・・・・・・ サーバにログインするためのID
 ・パスワード/パスフレーズ ・・・・・・ サーバにログインするためのパスワード
 「ユーザ名(ID)」と「 パスワード/パスフレーズ」はホームページ作成するためのサーバ環境を契約したプロバイダから教えてもらったものを入力します。

 尚次の設定は、特に問題にはなりません
 ・「ホスト名」 ・・・・・・・ 「任意の名前(なんでも入力可能で、自分で分かりやすい名前をつける)」
 ・ 「ローカルの初期フォルダ」 ・・・・・・ パソコン内のファイルのフォルダ(画像ファイルなど保存している場所)

【高度タブ】
 ・ 「LISTコマンドでファイル一覧を取得(L)」にチェックを入れる  
 

② ウィンドウ内左右にローカルディスク側とホスト側のファイル一覧が消えた
以下のような状態になっているときはありませんか?。


これは、下窓と上左右窓の区切り線が最上部に移動しているため、上左右窓が表示されていません。
よって、区切り線をマウスクリックで押したまま下に移動して、上左右窓を表示できるように、区切り線を移動します。



③ ウィンドウ内左右にローカルディスク側とホスト側のファイル一覧が表示しない 
「コマンドが受け付けられません」
「ファイル一覧の取得を中止しました」
「切断しました」
といったステータスメッセージが表示され、うまく転送を行うことが出来ない場合は、
PASVモードを使うようにしてください。


【高度タブ】の 「LISTコマンドでファイル一覧を取得(L)」にチェックしてあるも確認してください


使い方は、以下が分かりやすく記載していますので、参考にするとよいと思います。
 http://synclogue-navi.com/category/ffftp

トラブルについて、まとめたURLがありましたので、こちらも参考にするとよいと思います。
http://www.itmedia.co.jp/qa/ffftp.html
 

2015年4月24日金曜日

本八幡で英会話 getgo(4/22)

今週の英会話の復習をします。

尚私の通っている英会話教室は「本八幡のgetgo」です。
http://www.getgo.co.jp/  

料金が安く外国人の気さくな方が講師で、とても楽しく通ってます。
私の先生は、Joshさんで、プロテイン好きな大変面白い人です。
先生の写真は、
http://www.getgo.co.jp/teacher_introduction.html

私は木曜日通ってますが、クラスメイトは2人いて、二人とも
 とてもチャーミングな方です。

もし、本八幡周辺で英会話したいな、と思っている方がいたら、ぜひお勧めいたします。
外国人にビビッていた私でも、半年以上通えることができました。
まだ、少ししか英会話できませんが、もう苦手意識はないかな、と思えるようになりました。

ネイティブよく使う言葉集です。覚えておくと便利です。
1) addicted to .... (はまっている)
  I get adicted to writing blog. (ブログ書くことには待ってます!)
2) It's used for ...ing. (~のために使われている)
  It's used for eating with. (知らない時につかいます)食べるのに使われるものはなんですか?。
   ⇒chopsticks(箸)と答えます

used の使われ方の区別は、以下のアドレス参照してください。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q106764350


3) Fuck sake (面倒くさせー、まじかよー
 これは、覚えておくといいですね。人になにか頼まれたら、独り言で、ファックセイクとつぶやきましょう。相手はわからないのでトラブルにならないでしょう(英語が分かる人だとやばいですけど)。
 使いすぎで覚えられたらやばいですが。。。。。


また、授業中、Joshが「オーペン」といったので、なにかと思ったら、pencil or penの or penでした。
聞き取りって相変わらず難しいです。

また、日本で当たり前と思っていることが意外と違っていたりして、文化や言葉って面白いなーと思います。
・ジュース絞り機って、ミキサーと思ったら、「ブレンダ」というそうです。
・日本で、ドライヤー といえば髪を乾かすドライヤーとなりますが、実は「ドライヤーは服を乾かす機械で、英単語ではhair dryerとなるそうです。


以上です。
また、来週お勉強たのしみです!。

http://www.getgo.co.jp/