14 Dec 2016, 08:56

Emacs から SML のテストを実行する

元ネタは、ここです。

coursera で Programming Languages のコースを受講している。

Assignment でテストファイルが与えられるのだが、これをうまく実行する方法についてのメモ。

Preparation

  • hw1.sml … 提出用ファイル
fun is_older(date1: int*int*int, date2: int*int*int) =
  (* implementation *)
  • hw1.sml … テストファイル
(* Test is_older *)
val test_is_older_1 = is_older((2012,1,1), (2012,1,1)) = false
val test_is_older_2 = is_older((2012,1,1), (2013,1,1)) = true
val test_is_older_3 = is_older((2013,1,1), (2013,2,1)) = true
val test_is_older_4 = is_older((2013,1,1), (2013,1,2)) = true

Execute

以下のコマンドで実行できる。

$ cat hw1.sml hw1_test.sml | sml
Standard ML of New Jersey v110.74 [built: Fri Dec  7 10:09:50 2012]
...
val is_older = fn : (int * int * int) * (int * int * int) -> bool
...
val test_is_older_1 = true : bool
val test_is_older_2 = true : bool
val test_is_older_3 = true : bool
val test_is_older_4 = true : bool

Emacs を私はつかっているので、=M-!= (shell-command)で、Emacs の中から実行。

grep

結果を以下のように grep するとなおよい。

$ cat hw1.sml hw1_test.sml | sml | grep false

まとめ

Lecture では、use “hw1.sml”; を利用して、ファイルを読み込むことを推奨しているけれども、 こっちのやり方のほうがフィードバックが素早く得られるのでよい。

いわゆる TDD ができる。

13 Dec 2016, 16:50

勉強カフェが快適すぎる件

朝から夜の 11 時まで勉強カフェ 溝の口スタジオで過ごしてます。

なぜか? *快適すぎるから*。 というわけで、勉強カフェの宣伝記事を書きます。

勉強カフェとは

有料自習室、会員制のカフェです。

特徴

  • 飲み物(コーヒー)飲み放題
  • wifi 使いたい放題、パソコン作業がはかどるはかどる
  • 個別ブースで区切られた机なので、集中できる
  • ふかふかの座り心地のいいイス
  • 親切なスタッフ
  • 会員同士の交流。同じ目標を持った仲間ができる。 イベントが定期的に開かれます。また、3 ヶ月プログラムに参加予定です。 仲間がいるから頑張れる。3 ヶ月プログラムをうまく使って目標達成! | 勉強カフェ
  • 居眠りしてもおこられない
  • 図書館のような席取り競争がない
  • 長時間勉強 OK

所感

家ではどうも勉強できない自分は、今まではカフェで勉強していました。 でも、それはカフェの運営にとっては迷惑な客。自分でも自覚していました。

そこで見つけたのが、勉強カフェ。ちょっと利用料金が高いのがデメリット。 いつものカフェ代と、wimax 代を勉強カフェの利用料金に置き換えることで、 今までカフェに支払っていたお金を勉強カフェにつぎ込むことで、料金を補填しました。

参考記事

意外にネット上に情報がない。

おわりに

勉強に集中したい人は、ぜひぜひ勉強カフェを一度訪れて見てください。 2 時間無料で、体験利用することもできます。

10 Dec 2016, 18:16

Emacs で自分の信念を確認する M-x cookie

成功とはなにか?どのように成功するか?最近、考えに耽っている.以下の記事の続編。

どのように成功するか?

ウォートン・スクールの本当の成功の授業を読み終えた。http://amzn.to/2hpLUsO

どのように成功するか?以下のことを常にこころにとめて生きることにした。

自分の信念

- 小さいことを積み重ねることが、 とんでもないところへ行くただひとつの道 
- スピードよりも着実な理解を優先する 
- やる気がでないときは勉強する意味を考える 
- 達成よりも学習の過程を重視する 
- 屈辱をモチベーションに変える 
- この世で目標を達成するために与えられた時間には限りがある 
- 他人と自分を比較しない、自分は必ず目標を達成できる。 自分を信じること 
- GRIT(やり抜く力) を身につける
  才能は努力で克服できる 
  成長思考−努力は必ず報われると信じる 
  興味をもつ、練習を続ける、目的をもつ、希望を持つ

cookie について

Emacs から、信念を確認したいと思うのは自分だけではないはずだ?

というわけで、Emacs から確認してみる。

M-x cookie というコマンドがある。これを使うと、cookie-file で指定されたファイルにかいてある行をランダムにとりだすことができる。

設定例を示そう。

(setq cookie-file "~/.emacs.d/policy.txt")
(global-set-key (kbd "C-x C-,") 'cookie)

policy.txt のなかみは fortune 形式というもので書く必要がある。

Policy
%
小さいことを積み重ねることが, とんでもないところへ行くただひとつの道
%
スピードよりも着実な理解を優先する
%
やる気がでないときは勉強する意味を考える
%
達成よりも学習の過程を重視する
%
屈辱をモチベーションに変える
%
この世で目標を達成するために与えられた時間には限りがある
%
他人と自分を比較しない, 自分は必ず目標を達成できる. 自分を信じるこ
%
才能は努力で克服できる
%
成長思考..努力は必ず報われると信じる
%
興味をもつ, 練習を続ける, 目的をもつ, 希望を持つ 
%

これで、”C-x C-,“を押すと、名言が見られる。

hydra と連携して、連続で信念をみる

hydra を使うと、連続で信念を次から次へと出すことができる。

(defhydra hydra-meigen (global-map "C-x ,")
  "meigen"
  ("," cookie "meigen"))

他の名言集もいっしょに

信念の他に名言集もみたい。最終的には、以下のように設定している。

名言集 meigen.txt

名言
%
苦悩を抜けて歓喜へ ... ベートーベン
%
志を立てて以って万事の源と為す ... 吉田松蔭
%
高みに向かって努力を続けることは, 決して無駄ではない ... ニーチェ
%
普通の奴らの上を行け ... ポール・グレアム
%
克己凌雲 ... tsu-nera
%

設定例

(defun set-my-meigen ()
  (interactive) (setq cookie-file   "~/.emacs.d/meigen/meigen.txt"))
(defun set-my-policy ()
  (interactive) (setq cookie-file "~/.emacs.d/meigen/policy.txt"))

(setq cookie-file "~/.emacs.d/meigen/policy.txt")
(defhydra hydra-meigen (global-map "C-x ,")
  "meigen"
  ("," cookie "meigen")
  ("m" set-my-meigen "my-meigen")
  ("p" set-my-policy "my-policy"))

09 Dec 2016, 19:32

Emacsで fcitx-anthy(Nicola)の調子が悪いときに試すこと

私は、Emacsで 日本語入力(親指シフト)をしていると、調子がわるいときがある。

  • 入力結果の出力がやたらと遅い
  • 打鍵しても、期待しない文字が入力される

なんとか解決方法はないかと、3時間頑張って探して、ようやく見つけた。

環境

  • Ubuntu 16.04
  • fcitx-anthy 4.2.9

解決方法

一旦別のアプリ(ターミナル、ブラウザ)で打鍵をしてから、Emacsに戻ってくる。

これで、解決できた。なにかのバグかな?これが判明するまでに、試行錯誤て3時間かかった。

こんなことで悩んでいるのは自分だけかもしれないけれども

08 Dec 2016, 16:38

マウスをつかわずウェブ閲覧!Emacs ライクな Web ブラウザ Conkeror

Conkeror というとてもいいブラウザがあるのだが、日本語情報がすくないので紹介することにした

今回は Ubuntu16.02 の環境にインストールするが、Windows でも Mac でも Conkeror は動くよ。

Conkeror とは

  Conkeror はキーボード−主体、高カスタマイズ可能、拡張可能なウェブブラウザ。

Conkeror is a keyboard-oriented, highly-customizable, highly-extensible web browser based on Mozilla XULRunner, written mainly in JavaScript, and inspired by exceptional software such as Emacs and vi. Conkeror features a sophisticated keyboard system, allowing users to run commands and interact with content in powerful and novel ways. It is self-documenting, featuring a powerful interactive help system.

メリット

私が感じている conkeror のいいところは、

  • Emacs キーバインドなところ(ここ大事!)
  • ほとんどマウスを利用せずにウェブブラウジングができるところ
  • 自由にカスタマイズ可能なところ

デメリット

  • Chrome や Firefox のようなプラグインが入れられない。
  • PDF をみるとき、いちいちダウンロードして開かないといけない。(PDF プラグインないので)
  • Chrome や Firefox に比べると遅い気がする。

conkeror の取得

git で取得して make

git clone git://repo.or.cz/conkeror.git
cd conkeror
make
make install

これで OK.

公式の wiki には xulrunnner をインストールするようにかかれているけれども、インストールしなくても conkeror は使えた。xulrunnner いらないのかな??よくわからない。

キーバインド

Emacs と同じ!!まずは、C-h t を押してチュートリアルを読もう。

その後で、C-h i を押して、細かいキーバインドを見よう。Emacs 使いならば、もうすでにほとんど使いこなせるはず!!!

とくによい機能は f を押すとリンクが 数字でラベリングされる。数字を指定することで、

デスクトップアイコン を用意する(Ubuntu)

以下の記事を参考に、デスクトップアイコンを作成した。

~/.local/share/applications/ に移動

conkeror.desktop というファイルを新規作成して、以下の内容を記述。

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=conkeror
Comment=conkeror
Exec=/home/tsu-nera/opt/conkeror/conkeror
Icon=/home/tsu-nera/opt/conkeror/Green_copyright.svg.png

アイコンは以下の URL から拝借した。著作権は Public Domain なので多分大丈夫。  -

これで、アプリケーションとして認識されるので、 “コンピュータを検索”を実行するとアイコンが現れる。ランチャーにも登録。

Emacs のデフォルトブラウザを Conkeror に設定

(setq browse-url-generic-program (executable-find "conkeror"))

カスタマイズ

Conkeror のいいところは、柔軟なカスタマイズができるところ。

\$HOME/.conkerorrc に設定ファイルを置くと読み込んでくれる。

.zshrc のように、自分だけの .conkeorrc をつくろう。

以下は、自分の設定です。

Tips はここにかかれている。http://conkeror.org/Tips

モードラインにアイコン表示

///////////////////////////////////////////////////////////////
//  Mode-line
//  http://conkeror.org/ModeLine?highlight=%28mode-line%29
///////////////////////////////////////////////////////////////
// funky icons in the modeline
require("mode-line.js");

load_paths.unshift("chrome://conkeror-contrib/content/");
require("mode-line-buttons.js");
mode_line_add_buttons(standard_mode_line_buttons, true);

ホームページ

homepage = "http://www.google.co.jp";

リンクの数字を大きくする

//////////////////////////////////////////
// Big Hint Number
//////////////////////////////////////////
register_user_stylesheet(
    "data:text/css," +
        escape(
            "@namespace url(\"http://www.w3.org/1999/xhtml\");\n" +
            "span.__conkeror_hint {\n"+
            "  font-size: 18px !important;\n"+
            "  line-height: 18px !important;\n"+
            "}"));

ショートカット指定

//////////////////////////////////////////
// shortcut
//////////////////////////////////////////
interactive("open-google", "Go to google.co.jp", "follow",
    $browser_object = "http://www.google.co.jp/");
interactive("open-gmail", "Go to gmail", "follow",
    $browser_object = "http://gmail.com/");
interactive("open-calendar", "Go to calendar.google.com", "follow",
    $browser_object = "http://calendar.google.com/");
interactive("futurismo", "Open Futurismo", "follow",
    $browser_object = "http://futurismo.biz");

interactive("futurismo_wiki", "Open Futurismo", "follow",
    $browser_object = "http://futurismo.biz/dokuwiki");
interactive("youtube", "Open Youtube", "follow",
    $browser_object = "http://www.youtube.com");
interactive("feedly", "Open Feedly", "follow",
    $browser_object = "http://feedly.com");
interactive("tomatoes", "Open Tomatoes", "follow",
    $browser_object = "http://tomato.es/");
interactive("github", "Open Github", "follow",
            $browser_object = "https://github.com/tsu-nera");
interactive("youtube-dl", "download youtube video",
            function (I) {
                shell_command_blind("youtube-dl " + I.buffer.display_uri_string);
            });

// open url with new buffer
define_key(content_buffer_normal_keymap, "d", "follow-new-buffer");
define_key(content_buffer_normal_keymap, "f1", "open-google");
define_key(content_buffer_normal_keymap, "f2", "open-gmail");
define_key(content_buffer_normal_keymap, "f3d", "open-calendar");
define_key(content_buffer_normal_keymap, "f4", "youtube");
define_key(content_buffer_normal_keymap, "f5", "feedly");
define_key(content_buffer_normal_keymap, "f6", "futurismo");
define_key(content_buffer_normal_keymap, "f7", "futurismo_wiki");
define_key(content_buffer_normal_keymap, "f8", "github");

ショートカットからいろいろな機能を呼び出し


//////////////////////////////////////////
// webjump
//////////////////////////////////////////
// evernote
define_webjump("clip","javascript:(function(){EN_CLIP_HOST='http://www.evernote.com';try{var%20x=document.createElement('SCRIPT');x.type='text/javascript';x.src=EN_CLIP_HOST+'/public/bookmarkClipper.js?'+(new%20Date().getTime()/100000);document.getElementsByTagName('head')[0].appendChild(x);}catch(e){location.href=EN_CLIP_HOST+'/clip.action?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title);}})();");

// hatenabookmark
// http://b.hatena.ne.jp/register
define_webjump("hatena","javascript:(function(){var%20d=(new%20Date);var%20s=document.createElement('script');s.charset='UTF-8';s.src='http://b.hatena.ne.jp/js/Hatena/Bookmark/let.js?'+d.getFullYear()+d.getMonth()+d.getDate();(document.getElementsByTagName('head')[0]||document.body).appendChild(s);})();");

// twitter
define_webjump("twitter","javascript:(function()%7Bwindow.twttr=window.twttr%7C%7C%7B%7D;var%20D=550,A=450,C=screen.height,B=screen.width,H=Math.round((B/2)-(D/2)),G=0,F=document,E;if(C%3EA)%7BG=Math.round((C/2)-(A/2))%7Dwindow.twttr.shareWin=window.open(%27http://twitter.com/share%27,%27%27,%27left=%27+H+%27,top=%27+G+%27,width=%27+D+%27,height=%27+A+%27,personalbar=0,toolbar=0,scrollbars=1,resizable=1%27);E=F.createElement(%27script%27);E.src=%27http://platform.twitter.com/bookmarklets/share.js?v=1%27;F.getElementsByTagName(%27head%27)%5B0%5D.appendChild(E)%7D());");

// readability
define_webjump("readability","javascript:(%0A%28function%28%29%7Bwindow.baseUrl%3D%27//www.readability.com%27%3Bwindow.readabilityToken%3D%27DsMgYF6muHA9dzMgEGyLPuMVRYGxf5DFBRVtx9kf%27%3Bvar%20s%3Ddocument.createElement%28%27script%27%29%3Bs.setAttribute%28%27type%27%2C%27text/javascript%27%29%3Bs.setAttribute%28%27charset%27%2C%27UTF-8%27%29%3Bs.setAttribute%28%27src%27%2CbaseUrl%2B%27/bookmarklet/save.js%27%29%3Bdocument.documentElement.appendChild%28s%29%3B%7D%29%28%29);");

Google 日本語検索

define_webjump("g", "http://www.google.co.jp/search?q=%s", $alternative = "http://www.google.co.jp/");
define_webjump("@","javascript:(function(){prompt('Copy to Clipboard','['+'['+location.href+']'+'['+document.title.replace(/([\[\]])/g,'\\$1')+']'+']');})();");

Emacs との連携

入力フォームで C-i を押す。emacs-daemon が立ち上がっている状態ならば、 Emacs が起動してきて、テキストを入力することができる。

以下の設定が必要.

editor_shell_command = "emacsclient -c";

履歴検索

url_completion_use_history = true; // should work since bf05c87405

// history webjump
define_browser_object_class(
    "history-url", null, 
    function (I, prompt) {
        check_buffer (I.buffer, content_buffer);
        var result = yield I.buffer.window.minibuffer.read_url(
            $prompt = prompt,  $use_webjumps = false, $use_history = true, $use_bookmarks = false);
        yield co_return (result);
    });

interactive("find-url-from-history",
            "Find a page from history in the current buffer",
            "find-url",
            $browser_object = browser_object_history_url);

interactive("find-url-from-history-new-buffer",
            "Find a page from history in the current buffer",
            "find-url-new-buffer",
            $browser_object = browser_object_history_url);

define_key(content_buffer_normal_keymap, "h", "find-url-from-history-new-buffer");
define_key(content_buffer_normal_keymap, "H", "find-url-from-history");

PDF ファイルを FoxitReader で開く

content_handlers.set("application/pdf", content_handler_open);
external_content_handlers.set("application/pdf", "FoxitReader");

おわりに

他にもたくさん拡張があるけれども、キリがないのでこの辺で。

08 Dec 2016, 12:06

[未解決] 賢威7で SyntaxHighlighter Evolved が動かなくなった

賢威7で SyntaxHighlighter Evolved が動かなくなった。

この前まで動作していた気がしたのだが、気のせいか?

暫定対処

取り合えず、問い合わせフォームに質問を投げた。解答待ち。

 それまでは、以下で暫定対処中。base.css に以下を追記。

pre{
        border:1px solid black;  /* 黒枠線 */
        background-color: #ccc;  /* 背景を灰色 */
        padding : 0px 10px;      /* 余白 */        
}

これで、<pre> ~ </pre> で囲まれたソースの背景が灰色になって、見栄えがよくなった。

なんとかならないものか?解決できたら更新します。

追記

質問の回答きた。

お問い合わせいただいた件ですが、プラグインの動作については大変申し訳ございませんがサポートの対象外となります。 参考 URL のお返事の際は、css が衝突していたことが原因でしたが、今回の場合はサイトを確認したところ css が原因ではないように思われます。 お手数ではございますが、プラグイン開発者様にお問い合わせいただいてご対応いただくか、異なるプラグインで代替してご対応いただければと思います。

そんなあ。。。。(´・ω・`)

07 Dec 2016, 09:22

ウォートン・スクールの本当の成功の授業を読んだ

ウォートン・スクールの本当の成功の授業 - リチャード・シェル を読んだ。

本の内容

本書は、二部構成になっている。それぞれの部で、以下の質問の答えを自分で導く。

  • 成功とはなにか?
  • どうやって成功するか?

目次

各概念を説明するためのエピソードが多い印象を受けた。結論を知りたければ,各章の要点は、ほんの末尾にまとめられているので、そこを読むのがよい。また、Amazon の紹介文も大変参考になる。ここでは、概要は省略。

はじめに 自分の道を見つける「2つの大きな質問」
第I部 第1の大きな質問「成功とは何か?」
第1章 成功とは「自分らしい人生」を選ぶこと
第2章 成功とは「幸せ」になること 
第3章 成功とは「地位・名声・富」を得ること
第4章 成功とは「やりがいのある仕事」
第 II 部 第2の大きな質問「どうやって成功するか?」
第5章 素質──「うまくできること」を見極める
第6章 モチベーション──自分に火をつける
第7章 自信──リスクを恐れず前に進む
第8章 集中──情熱・想像力・直感・理性を集中させる
第9章 信頼性と対話──人を動かす
おわりに それぞれの道へ

感想

成功するとはなんなのか、それは自分できめなければいけない。これは衝撃を受けるとともに、もっともだと思った。自分の抱く成功というものが、マスメディアによって植え付けられたものだと気づいた。

大学生のとき、人生の意味について悩んでいた。色んな本を読み、色々な考え方に触れたものの、しっくり来るものはなかった。そんなとき、カウンセラーは言った。「人生の意味は自分で決めなければいけません。人が決めたものは信じられないでしょう」そのとおりだ。自分で決める、これが大事なことなんだ。成功に関しても、富や名誉ではなく、自分自身で決めた成功を全うすることが大事なのだ。

現在会社を休職していて、将来が全く見えない不安な日々が続いていたので、成功への道筋が見えたことで、生きることへのやる気が出てきた。人間は、目標があると、頑張れる。本書は、生きるチカラを与えてくれる本だ。

2 つの質問に対する自分の答え

成功とはなにか?

  • 数学とプログラミング(機械学習)を通じてお金を稼ぎ、テクノロジーの発展に貢献すること。
  • 英語を駆使して、世界で活躍するソフトウェア開発者になること。
  • 常に努力を怠らず、目標を持って仕事に情熱を燃やすこと。
  • 幸せな家庭を築くこと。

どうやって成功するか?

以下のことをつねに心がける。

  • 小さいことを積み重ねることが、とんでもないところへ行くただひとつの道
  • スピードよりも着実な理解を優先する
  • やる気がでないときは勉強する意味を考える
  • 達成よりも学習の過程を重視する
  • 屈辱をモチベーションに変える
  • この世で目標を達成するために与えられた時間には限りがある
  • 才能は努力で克服できる、努力は必ず報われる。努力次第でいくらでも上達できる
  • 他人と自分を比較しない、自分は必ず目標を達成できる。自分を信じること

SelfCheck に対する自分の回答

第 1 章: 6つの演習

私は、石工を一番の幸せな人生に選んだ。これは、内発的動機だけで十分にやりがいを感じられるということ。第二に、プロテニスプレーヤーを選んだ。これは、認められた人生でたゆまず努力する人生。逆に6番目に選んだものは、教師。高い水準の成功を成し遂げるために貢献する人生。他人への貢献が気に入らなかった。

第 2 章

  • 瞬間的幸せには、セックスを選びました。
  • 総合的幸せには、数学とプログラミングをつかってお金を稼ぐことを選びました
  • 魂の経験には、幸せな家庭を築くを選びました。

第 3 章: 宝くじの演習

100 億 円 を 手 に し たら、自分はどう行動するか? 私ならば、大学に再入学し機械学習の研究を一日中、ずっとしていたい。

第4章

この章で、自分にとっての成功を定義する。以下のように定義した。

  • 数学とプログラミング(機械学習)を通じてお金を稼ぎ、テクノロジーの発展に貢献すること。
  • 常に努力を怠らず、目標を持って仕事に情熱を燃やすこと。
  • 英語を駆使して、世界で活躍するソフトウェア開発者になること。

  - 幸せな家庭を築くこと

第5章 性格の強みテスト SAME

社交的スタイル 行動傾向 思考傾向 感情的気質


内向性 100 計画型 50 実用型 50 情熱型 50 協調型 50 張り詰め型 50 分析型 50 現実型 100 平和型 50 決行型 50 革命型 50 感情抑制型 100 率直型 100 慎重型 50 特化型 100 ストレス虚弱型 50

  • 大学 教授 ─ ─ 内向 型、 知識 型、 分析 型、 特化 型 が近い。

第 7 章

自信 の セルフ チェック   心 の 支え と なる 言葉 を くれ た 人

おじいちゃんに、お前なら大学に合格できると言われた。

自信 の セルフ チェック 2 自信 を つけ て くれ た 経験

うつ病による休職体験、その克服。

第8章

目標 達成 プロセス の セルフ チェックあなた 自身 の 目標 を 振り返る −>パス 思いつく目標達成の体験がないので。

06 Dec 2016, 16:06

成功とはなにかを定義した

自分にとっての成功とはなにか、それについて考えてみた。

現状まで

子供の頃は、もともと医者を目指していた。

なぜなら、おじいちゃんが医者だったからだ。おじいちゃんっ子だったのだ。

医者になるために、医学部進学率が高い私立の高校へ通った。

しかし、高校生のとき、自分には医者の素質がないと悟った。

他人を思いやる気持ちが、思いやりの気持ちが自分には足りないのだ。

将来になやんでいたとき、パソコンをためていたお年玉で買った。

そして、C言語を勉強したり、HTMLでHPをつくったりした。

数学も得意だった。なので、自分はコンピュータ・サイエンスの道に進もうと決めた。

東大を目指していた。現役では失敗し、浪人した。

浪人生のとき、東大模試でA判定を二回取った。

絶対合格できると思っていたが、結果は不合格だった。

地学を選択科目に選んでいたので、早慶を受験することもできず、

自分は、東京理科大学に入った。専攻は、応用数学だった。

努力が報われず、鬱になった。精神科やカウンセリングも受けた。

いわゆる、燃え尽き症候群というやつだ。

勉強を大学生のときはほとんどしなく、遊んでいた。

クラシック音楽のコンサートとオペラを見に行くことに殆どの時間を費やした。

院にも行かず、なんとなく、ソフトウェア開発者の道を選んだ。

与えられた仕事をこなしていた。やりがいが感じられなかった。

MOOC

3年前、このままではいけないと思いたち、コンピュータ・サイエンスを学び直す決意をした。

ちょうど、MOOCが勢いをつけ始めていた時期だったので、

自分はMOOCのコンピュータ・サイエンスの科目もできる限り取った。

  • Algorithms, Part I – coursera 201311
  • Algorithms, Part II – coursera 201402
  • C++ For C Programmers – coursera 201402
  • Creative, Serious and Playful Science of Android Apps – coursera 201402
  • Programming Mobile Applications for Android Handheld Systems – courserea 201403
  • Unlocking the Immunity to Change: A New Approach to Personal Improvement – edX 201403
  • Web Application Architectures – coursera 201306
  • Pattern-Oriented Software Architectures: Programming Mobile Services for Android Handheld Systems – coursera 201407
  • The Hardware/Software Interface – coursera 201409
  • Programming Cloud Services for Android Handheld Systems – coursera 201409
  • Introduction to Linux – edX 201412
  • Paradigms of Computer Programming -Fundamentals – edX 201412
  • Computational Investing, Part I – coursera 201412
  • Survey of Music Technology – coursera 201412
  • Introduction to Functional Programming – edX 201412
  • Louv1.2x: Paradigms of Computer Programming – Abstraction and Concurrency – edX 201502
  • The Data Scientist ’ s Toolbox – coursera 201502
  • R Programming – coursera 201502
  • Reproducible Research coursera 201503
  • Cloud Computing Concepts PartI – coursera 201503
  • Cloud Computing Concepts PartII – coursera 201504
  • edX Honor Code Certificate for Foundations of Data Analysis – edX 201503
  • Principles of Reactive Programming – coursera 201505
  • From Nand to Tetris / Part I – coursera 201505

自分のやりたいことを見つけたかった。

しかし、自分のやりたいことが見つからなかった。

仕事にやりがいがなく辛くなり、鬱になり、一年前に休職した。これが、現在の状況だ。

成功を定義する

courseraでSuccessという講義を取りはじめた。

https://www.coursera.org/learn/wharton-succcess

と同時に、元になっている本を読んでいる。

「ウォートン・スクールの本当の成功の授業 - リチャード・シェル」

第一部:成功とは何か?を読み終わった。

第一部を通じて、自分自身の「成功とはなにか?」という答えを出した。

私にとっての成功とは、以下のように定義した。

– 数学とプログラミングを通じてお金を稼ぎ、 テクノロジーの発展に貢献すること。

– 常に努力を怠らず、目標を持って仕事に情熱を燃やすこと。

– 英語を駆使して世界で活躍するソフトウェア開発者になること。

– 幸せな家庭を築くこと

目標を決めた

光が見えた気がした。成功のための10年間の目標も立てた。

短期目標(2年以内)

– 目標TOEIC900スコアを取ること。

中期目標(TOIEIC900取れたら、5年以内)

– 英会話と英作文の勉強をすること

– 機械学習の勉強をすること(MOOCの単位を取得)

長期目標(10年後)

– 機械学習の知識を利用できる仕事を得ること。

– 英語ができるプログラマになること。

– オープンソースに貢献すること。

– カンファレンスで英語でプレゼンして質疑応答ができること。

– 海外の技術情報を素早く手に入れ理解すること。

成功は定義できた。あとは、目標を実行するだけだ。

鬱になったのは、無駄ではなかった。そんな気がしている現在である。

06 Dec 2016, 06:46

org2blog で BEGIN_HTML が動かない場合の対処方法

いつも、このブログは org2blog を利用して、Emacs から書いているのだが、

#+BEGIN_HTML

#+END_HTML

を書いても、HTML を記事の中に埋め込むことができなくなった。

解決方法

いろいろと試行錯誤してみたところ、以下の書き方だとうまくいった。

#+begin_export html

#+end_export

誰かの参考になればとおもいメモ。

06 Dec 2016, 05:31

SoftSkills を読んで思うこと

SoftSkills ソフトウェア開発者の人生マニュアルを読んだ。

書評は Amazon によく書かれているので、そちらにゆずる。

この記事では、自分、が分章を読み、なにを考えたかを書いていく。

自分を事業者だと思う

自分 の こと を 事業者 だ と 考える よう に なる と、 自分 という 事業 の ため に 優れ た 判断 を 下せる よう に なる。 自分自身 の 業績 とは あまり 関係 の ない「 いつも の 給料」 を もらう こと に 慣れ て しまう と、 自分 は 会社 の 従業員 に 過ぎ ない という マインド セット に 簡単 に 染まっ て しまう。

マインド セット を、 雇用 契約 で 縛ら れ た 奴隷 から、 自分自身 の 事業 を 経営 し て いる 事業者 に 切り替える.

サラリーマンの自分には痛い言葉だ。 自分は、いつもの給料をもらうことに慣れている。 事業主などつゆにも考えたことがなかった。 自分の生涯は全て会社が握っていると思っている。 なぜか?それはは、サラリーマンでないという安定が怖いからだ。

目標を定める

今 こそ 目標 を 決め なけれ ば なら ない。 明日 では なく、 ましてや 来週 では なく、 今 すぐ 決める の だ。 はっきり と し た 目標 を 決め ず に 踏み出し た 一歩 一歩 は、 すべて 無駄足 で ある。 キャリア の 目標 を 決め ず に、 ランダム に 人生 を 歩ん で いっ ては なら ない。

5 ~ 10 年 後 の 自分 を どう し たい のか。 少し 時間 を かけ て、 その こと について 考え て みよ う。

自分は、機械学習を専門とする職業に転職して、専門的な仕事をしたい。 今は、なにも知識がないけれども、5~10年かけて機械学習を学習すれば、 いつかは転職のチャンスがやってくるはずだ。

その前に TOEIC900 を取得したい。 なぜ、900 なのか?それは、面接官に努力できる人ということをアピールしたいがためだ。 860 よりも、900 のほうがインパクトがある。だから、900 を目指すのだ。 早く 900 を取って、TOEIC を卒業する。 英会話と機械学習の勉強にシフトする。2年以内に 900 を達成して、 5 年以内に機械学習と英会話の基礎を身につける。 5年後から先は、転職活動を開始する。それが、私の目標だ。

専門分野を確立する

専門 特化 の 法則: 専門 性 が 高けれ ば 高い ほど、 チャンス の 数 は 減る。 その 半面、 チャンス を 獲得 する 可能性 は 高く なる。

最初 に はっきり さ せ て おく べき は、 どんな タイプ の ソフトウェア 開発 を し たい か

多く の プログラミング 言語 を 使える よう に し て おく と、 キャリア の 上 で 役立つ だけで なく、 ひとつ の 限ら れ た テクノロジー、 ひとつ の プログラミング 言語 しか 知ら ない 人々 よりも、 はるか に 貴重 な ソフトウェア 開発 者 に なる こと が できる。 しかし、 何 でも 屋 として 自分 を 売り込む のは とても 難しい という こと なの だ。

まず 専門 特化 に 取りかかり、 あと で 多才 に なれ ば いい。

自分の専門分野はなんだろうか? 組み込みソフトの会社に所属しているが、特別組み込みソフトに詳しいというわけではない。 今まで、C 言語、Ruby, Java で開発を行ってきたが、どれも得意とはいえない。 つまるところ、自分には専門分野がない。

そのかわり、いろんな言語を学んできた。MOOC を利用して、 2ヶ月に1つは新しい言語に挑戦していた時期もある。 しかし、そのどれもが、今コードをかけるかといわれると、書けない。 本気で取り組んだわけではないので、忘れてしまった。

たくさんの知識に触れれば、自分の興味がある分野が見えてくると思っていた。 これから、市場価値を出すには、専門分野を持たないといけない。 関数型言語や機械学習に興味がある。これを自分の専門領域にしたいと考えた。

マーケティングをする、自己をブランド化する

偉大 な ミュージシャン と スーパースター の 本当 の 違い は、 マーケティング に 過ぎ ない。 マーケティング は 才能 を 数 倍 に する。 マーケティング が よけれ ば よい ほど、 才能 に 掛け られる 数値 は 大きく なる。ソフトウェア 開発 者 で ある あなた が、 この 重要 な スキル を ぜひとも 学ば なけれ ば なら ない のは その ため だ。

マーケティング を 一言 で 説明 する と、 製品 や サービス と それら を 必要 と し て いる 誰 かを 結び付ける こと

自分 の マーケティング は、 個人 ブランド から 始まる。

すべて の 人々 に すべて の もの を 提供 する こと は でき ない ので、 ターゲット オーディエンス( 顧客 候補) を 狭め、 ニッチ を 生み出さ なけれ ば なら ない。

マーケティングなんて言葉を考えたことすらなかった自分にとって、この主張は衝撃である。 たしかに、スゴイとおもうエンジニアはブランドを持っている。 自分のブランドはなにか?なにもない。これから確立しないといけない。ニッチなものを 。 確立しようと努力しようとした時期もあった。TDD, Clojure, MOOC その全てが途中で終わってしまった。 どうも、自分には忍耐力がないのかもしれない。粘り強く、自分を売り込めるレベルまで、ある分野を極めることが大事。

ブログを書く

定期的 に ブログ を 書く こと を 自分 に 課する と、 コンスタント に スキル に 磨き を かける こと が 義務付け られる こと になり、 自分 の 専門 領域 の 知識 を 最新 状態 に 保つ こと が できる。

多く の 有名 な ソフトウェア 開発 者 は、 ブログ の 成功 から 今 の 名声 を 直接 得 て いる。

ブログ が 成功 すれ ば、 数 十 万 の 人々 に 自分 を 知らせる こと が できる。 ブログ は、 自分 を マーケティング する ため の 方法 として は 安く て 簡単 で あり、 しかも、 自分 の 名前 を 外 に 出す ため に きわめて 役立つ。

たくさん 書く こと だ。 もっとも 大きく 成功 を 収め て いる ブロガー の なか には、 毎日 書く こと を 何年 も 続け て いる 人 が いる。

何 よりも 大切 なのは、 規則的 な スケジュール を 選び、 それ に 従う こと だ。 ブログ を どれ くらい 早く 成功 さ せ られる かは、 頻度 によって 決まる。 少なくとも 週 に 1 度 の 頻度 で ブログ を 書く こと を 強く お 勧め する。

質 の 高い コンテンツ を 書く よう に し なけれ ば なら ない。

自分 の 利益 の ため に なる こと しか せ ず、 他人 の ため に 本当に 価値 の ある もの を 生み出さ なけれ ば、 自分 を マーケティング する ため の 手法 として 正しい こと を すべて やっ た として も、 成功 し ない だろ う。

恥ずかしながら,一年間このブログを放置していた。 技術に触れるのを避け、TOEIC の勉強をしていたからだ。 しかし、私はソフトウェア開発者として生涯生きていく覚悟を決めたので、ブログは更新していきたい。 週一でブログの更新をするように心がけよう。そして、リピーターを再び取り戻そう。

価値のあるコンテンツを配信して、他の人の利益を考えよう。 この書評は完全に自分のことを書いているが・・・

燃え尽き症候群

私 たち は、 新しい もの には 最初 は 熱狂 し、 やる気 が 出 て くる もの だ。 しかし、 時間 が たつ につれ、 それ が だんだん 当たり前 になり、 さらに は 嫌い に なる ところ まで 進ん で しまう こと が 多い。

私 たち の 大半 は、 燃え尽き 症候群 に 陥る こと を もう 終わり だ と 考え て しまう。 その 先 を 見る こと が でき なく なる。 モチベーション や 興味 が なくなっ た の だ と 思い、 そこ から 離れ て ほか の こと をやら なけれ ば ならない。

この 燃え尽き 症候群 の 感覚 は まったく 自然 な こと で あり、 深刻 な 問題 の 兆候 では ない。

何とか し て 壁 を 通り抜ける の だ。

壁 の 向こう 側 にさえ 行けれ ば、 突然 あらゆる こと が 簡単 になり、 モチベーション と 興味 が 蘇っ て くる。 始め た ばかりの 新しい 取り組み では、 モチベーション、 興味 とも 高い 水準 に なる が、 マスター し た もの に対する モチベーシと 興味 も 高い 水準 を 維持 する。

私は、燃え尽きてしまった。技術に興味がなくなり、一年間このブログを放置していた。 しかし、時間がたち、再び技術についての興味が湧いてきた。 燃え尽きは自然なことと書かれていて、魂が救われる思いがした。 自分だけではないのだと、思った。良い文章に救われた。