Go言語勉強会(お独り様) #1
Go in Actionを一人で読んで書いていきます。
Chapter1
Go言語の特徴
- 並列処理が得意(Goroutines)。マルチコアを有効利用できる。
- 高い再利用性。
- C/C++の実行速度とRubyやPythonの生産性を両立
- 速いBuild(頭の良いコンパイラとシンプルな依存関係解決アルゴリズム)
- Goroutine ≠ Thread
Goroutine
- 他の言語で並行処理をしたい場合に使用する。
- Goroutineは1つのThreadで幾つも実行される。
- Threadに比べて省メモリで実行でき、自動的に実行がスケジューリングされる。
Goroutineとして実行するには下記のように "go" で呼べばいい。
func log(){ } go log()
Channel
Goroutine間で安全にデータを受け渡すことが出来るデータ構造。
多くのプログラミング言語に存在する、マルチスレッドで1つのデータに アクセスすることで発生する問題を解決することができる。
(多くのプログラミング言語ではこの問題は、 セマフォ、mutexなどで非同期的に共通のデータを触らないようにしている。)
Composition
Go言語は、再利用しやすいように型にCompositionパターンが適用されている。
型というよりも動作を定義するようなインターフェース実装が可能。
感想
とりあえず、1時間ちょっとでChapter 1はお終い。
個人的には、継承のあたりの説明がいまいち分かりにくかった。 Figure 1.4 とかもう少し良い説明がないものか。
あとは英語としては比較的簡単に書いてくれていて、英語力が低い私でも結構平気で読めました。
Xperia Z (SO-02E) をWCDMAのみに変更した
Xperia Z をKitKatにアップデートした後でLTEにしたら、バッテリーの減りが早くなったので3Gに戻したいけど戻せないと書いた。
Xperia Z (SO-02E) を KitKat 4.4 にアップデートした - tohosokawaの日記
ちょっと面倒なことをすると変えられるのは知っていたけど、やり方を覚えていられなくて実用的じゃないからアプリを探してみた。
そしたらすぐに見つかりました。
Network - Google Play の Android アプリ
このアプリを使うと、[*#*#4636#*#*#]をダイヤルしたときと同じ画面が表示され、「優先ネットワークを設定」から "WCDMA only" を指定することで、LTEをOFFにすることができます。
通常時の通信速度よりもバッテリーを重視したい人はどうぞ。
Xperia Z (SO-02E) を KitKat 4.4 にアップデートした
9月12日に遂に Xperia Z のKitkatが降ってきたので、迷わずバックアップもとらずにアップデートしてみました。
アップデートしたところ、気のせいか前よりモバイルデータがOnの状態での電池の減り方が改善された気がしました。
(本当に気のせいでした。)
で、アップデートで気になった点があるので2つ書いておきます。
1. クイック設定ツール
Notification の所から端末の設定を変更するためものなのですが、Notification と設定をタブで切り替えるようになってしまったため、以前より一手間増えています。
クイック設定ツールといいながら、手間が増えている時点でちょっと納得いきません。
2. LTEにならない
アップデートしてからなぜか3G(HのHigh Speed アイコン)のみで、LTEでつながらなくなりました。
モバイルネットワーク設定を確認したところ、ネットワークモードが "3G/GSM" のみとなっていました。
設定→その他の設定→モバイルネットワーク→ネットワークモード
これを "LTE/3G" にすることで LTE 接続が可能になったのですが、モバイルデータ通信がOnの時のバッテリーの減り方が以前と同じようになってしまいました。残念。
(これがバッテリーのもちが改善された理由と思われます。)
そして、普段は LTE で通信するよりも電池持ちがいい方が嬉しいので元に戻したいのですが、ネットワークモードの選択肢には "3G/GSM" が存在しないため戻せません。
残念ですが、このままLTEで繋いでおくことにしました。
(きっと何とか出来るんでしょうが。)
app.get() が unresolved function になることへの対処
WebStorm とか IntelliJ IDEA で Node.js のプロジェクトを作ると、
app.js で app.get() とかが unresolved function となってしまう。
これを解消するために、下記の対処を行った。
1. Preferences -> JavaScript(Project Settings内)-> Libraries
2. "Download" button -> TypeScript community stubs
3. select "node" and "Download and Install" button
いつも忘れて plugin からやろうとしてできなくなるので、メモを残していく。