20 Dec 2016, 04:02

twitterで勉強垢をつくりました

Studyplus SNS中毒のtsu-neraです。流行りの??勉強垢を作って見ました。

関連記事

こうして、記事を拾い読みしてみると、批判的な意見が多い。

わざわざツイートする必要あるか?

Twitterしている暇があれば勉強しろよ。

なぜつくったか?

  • Studyplusアカウントの宣伝用・・・twitterで自分のログを公開することで、プログラミングの友達申請がくるかもしれない。とくに、プログラミングはニッチな本を読んでいると、twitterで自分も読んでるんだよという発見してもらいやすい。MOOCも同様。
  • 自己マーケティング・・・自分という存在を世間にアピールするため。ブログ宣伝用。SEO対策。
  • 実績を自慢したい ・・・自分の勉強ログを公開することで、自分はこんなに頑張ってるんだよというのを自慢したい。そのことによって、モチベーションが上がる。
  • 自己満足のツイートをしたい・・・たとえば、お腹空いた〜みたいな、どうでもいい内容や、ネガティブな内容を発言したい。発言することで、自己発散できる。

終わりに

まだ、はじめたばかりなので、長続きしないかもしれないけれども、どうなることやら。

19 Dec 2016, 03:14

成功は自分で決めて進むもの!coursera で Success を受けた

Success という講座を coursera で受講しました。

成功とはなにか?どのようにして成功するか?

成功とはなにか?それは、ひとそれぞれで異なる。人の数だけ、成功の定義がある。

大切なことは、自分の成功を自分で決めて、成功するために進むことだ。

この講義では、以下の質問対して回答を出すことが求められる。

  • Definition of success(成功とはなにか?)
  • Plan for Achieving Success(どのようにして成功するか?)

関連記事

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

講義の内容は、以下の本を抜粋して説明されている。なので、英語が苦手な自分は日本語の本を参照しながら、講義に取り組んだ。

video のなかで、引用されるエピソードはほとんどすべて本の中に載っている。本がないと、自分の英語力では、自分は内容を理解できなかった。

感想

英語わかんねー。この一年英語に力を入れてきたので、問題ないかなと思っていたけれども、 半分くらいしかききとれなかったよ。本がなければ、挫折してた。 プログラミング系の講義はなんとなくわかるけど、人文系はまだまだついていくのがつらいことがわかった。

でも、この講義、受けてよかった。

現在、うつ病で会社を一年間休職している。 将来がまったく見えず、この先どうすればいいのか分からなかった。 強い言葉をつかうと、絶望的だった。毎日落胆し、落ち込んでいた。

そんなとき、一筋の光が見えた気がした。 安心感が芽生え、それと同時に自分への自信と将来に対する前向きな見通しが手に入った。 今は、とても清々しい気分だ。

成功の定義は決めた。計画は立てた。この先10年の見通しはたった。 あとは、実行するのみだ。人生がわくわくしてきた。よし、やるぞ!!

講義メモ

week1

簡単なガイダンスのあと、「6つの人生」の演習というものが課される。

6人の人物の経歴が紹介されて、それを読み、どれが自分の持つ成功の価値観に近いかを判定する。 それによって,自分にとっての成功のイメージを明確化できる。

また、成功には内的側面と外的側面があると説明される。内的側面とは、幸せ、満足感、愛。外的側面とは、地位、名声、金。

week2

成功するための素質について語られる。それは、身近なところにあり、探しに行くものではないといわれる。 そして、成功の様々な考えがしめされて、自分の成功を定義するように求められる。

また、” The Legacy Exercise: Reflecting on Your Family”という, pair-grade-assignment が課される。あなたが家族や親戚から受け継いだものについての英作文。

week3

Steve Jobs のスタンフォードスピーチが引用される。

成功とは、幸せになることか?3 つの幸せが紹介される。

  • Momentary Happiness(瞬間的幸せ)
  • Overall Happiness(総合的幸せ)
  • Deep Happiness(魂の幸せ)

Quiz として SAME と呼ばれる心理テストが課される。

自分の結果は以下。

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


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

week4

成功には二種類ある。

  • inner success … Happiness
  • outer success … Achevement

死を意識することで、人生に対するモチベーションが上がる。

お金を意識しなくすることで、新の人生のゴールが見えてくる。 人生のゴールを5,6個書き出してみよう。

仕事には3種類ある。あなたは、どの種類の仕事に従事しているか?

  • job 労働
  • carrior キャリア
  • calling 天職

PERFECT … あなたの仕事の気持ちを燃え立たせるもの

  • P: 個人 の 成長 と 発展
  • E: 起業家 的 独立 性
  • R: 宗教 的 または 精神的 アイデンティティ
  • F: 家族
  • E: アイデア・発明・芸術 を 通し た 自己 表現
  • C: コミュニティー( 大義 に 身 を 捧げ、 支援 の必要 な 人々 を 助ける
  • T: 才能 を 磨く 努力

3 つの名言

It is only when we have the courage to face things exactly as they are, without any self-deception or illusion, that a light will develop out of events, by which the path to success may be recognized. I Ching

Everything you need to be happy is simple EPICTETUS

The unexamined life is not worth living. PLATO

Final Assignment

以下に対する自分の考えを 500-700word のエッセイとして、提出することになっている。

  • Definition of success(成功とはなにか?)
  • Plan for Achieving Success(どのようにして成功するか?)

自分は以下のような回答を提出した。

My definition of success is below.
  - Earn money by using mathematics and programming, 
    contribute to the development of the technologies.
  - Make effort everyday, have a purpose and enthusiastic for my carrier.
  - Using English fluently, became a great software developer.
  - Have a comfortable family.

I am a software developer. I graduated from the university. 
My major is computer science and mathematics.
After graduated from the university, I have never used mathematics knowledges.
But What I really want to do is to apply mathematics knowledges to the technologies.
So I defined that my success is to earn money by using mathematics and programming.
This is outer success.

Inner success is to have a peaceful, comfortable family.
Now I'm single and don't have girlfriend.
But I'm 30 years old. I need partner and I want to have a children.

My Plan for Achieving Success
  - short-term goal
    - get TOEIC L/R 900 score
  - middle-term goal
    - Practice English writing and speaking skill.
    - Learning machine learning.
  - long-term goal
    - Get a job that is needed machine learning knowledge.
    - Contribute Open Source Software.
    - Get a state-of-the-art information from the Internet in English.

I am Japanese. I'm not good at English. 
English skill is necessary. So the most important skill for me now is 
learning English. TOEIC is suitable to measure my skill. 
But TOEIC can't measure writing and speaking skill.
So After I will get TOEIC 900, I shift my study plan to output my thinking in English.

And also, my definition is using mathematics and programming, machine learning is 
suitable for my dream. I plan to study machine learning by using MOOC.
And my goal is to change the Career that use machine learning skill.

And after change my career, I contribute to the development of the technologies.
And do some interesting and exciting things by using learned knowledges.

To Success, I always these word keep in mind.
  - go by short step, and reach big goal.
  - stable understanding is more important than speed.
  - when I don't study, think why I study.
  - to emphasize the process rather than result.
  - Motivate humiliation
  - Time is limited to reach the goals.
  - Don't compare myself to other people.
  - Believe myself and always believe my success.
  - Talent can be overcome with effort.
  - Believe that Effort is always rewarded.

these are my beliefs.My Success image is claiming the mountain.
step by step, I get a skill to do a big task.
As Steve Jobs says, I decided to think that today is the last day of my life everyday.
And make effort every day. I recently read the book, GRIT.
It says that Talent can be overcome with effort.
I am not smart. but I believe my possibility to success.


Finally, I am now not working. I take a sick leave because of depression.
I'm depressed patient.I don't work for 1 years. 
I really confused about my life. Before taking this class, I can't see my future.
But now I can see the future. My goal is clear. 
All I should do is to ride on the train that will go to the success.
Now I don't have any anxiety. I do my best. I have a confidence.

Thank you for the great MOOC course.

19 Dec 2016, 01:11

Windows 環境で Emacs で 自動スペルチェック(aspell, flyspell)

Windows 環境で、Emacs で英文を書くとき、Word のようなスペルチェックをしたい。

そんなときのための、Tips を紹介。ちょっと設定ではまったのて、メモ。

環境

  • NTEmacs 25.1.1

aspell をインストール

aspell というツールをつかうと、スペルチェックが可能になる。 ダウンロードは以下から。

ダウンロードしたファイルを開くとインストールがはじまるので、インストール。

aspell の設定

Emacs の設定ファイルに以下を書く。

;; aspell のインストールパス
(add-to-list 'exec-path "C:/Program Files (x86)/Aspell/bin/")
(require 'ispell)
;; スペルチェックに aspell を使う
(setq ispell-program-name "aspell")
;; 日本語と英語の共存設定
(eval-after-load "ispell"
  '(add-to-list 'ispell-skip-region-alist '("[^\000-\377]+")))

 ホームディレクトリに .aspell.conf というファイルを作成して、以下を記入。

lang en_US

そうしないと、以下のようなエラーがでる。

Error: No word lists can be found for the language "ja_JP".

flyspell-mode

自動で英文チェックしてくれるパッケージ。M-x flyspell-mode で有効にする。

または、以下のように自動で有効にしてもよい。

(mapc
 (lambda (hook)
   (add-hook hook 'flyspell-mode))
 '(text-mode-hook
   org-mode-hook
   wl-draft-mode-hook
   twittering-edit-mode))

参考

17 Dec 2016, 16:17

TwitterBrainはつかえない。スパム扱いされる。

TwitterBrainの評判や評判ついて、いろんなサイトで褒めたたえられているが、たぶんアフィリエイト目的だろう。批判をしている記事がないので、書いておく。

TwitterBrainはつかえない

TwitterBrain(ツイッターブレイン)は使えない。

具体的には、リンクを含むツイートをすると、検索結果に反映されない。

行なった設定は、フォーム推奨されているパラメータ(20人/1日)での、自動フォロー、アンフォロー機能。

この件について、2回、ツイッターのサポートセンターに問い合わせフォームから問い合わせを行なった。

2回とも、スパム扱いにされて問題がクローズされた。改善なし。以下は、ツイッターサポートセンターからの返信。

Hello,

You tried to update a case that has been closed. Please submit a new case at http://support.twitter.com/forms. You can also visit our help center at http://support.twitter.com for self-help solutions to common problems.

困り果てた。現状のTwitterBrain では、Twitter のスパム判定アルゴリズムで、アカウントがスパムと判定されるようだ。

もう、自動フォロー、アンフォローはどのツールを使ってもできない気がする。もし、可能なツールがあれば、教えて欲しい。

もちろん、TwitterBrain のbot 機能を使いたかったり、検索結果に引っかからなくても、フォロワー数を獲得したいという用途ならつかえるかもしれない。

ただし、フォロワー数は期待しているほど伸びないことも書いておこう。2アカウント運用したが、どちらもフォロワー数は50前後だ。この程度なのだ。これも、どのサイトにも書かれていない、運用実績の事実だ。

自分のようにサイト誘導が目的の人で、これからTwitterBrainの購入を検討しているひとは、買わない方がいい。

以上のように、使えないツールだからだ。

14 Dec 2016, 16:18

Ubuntus 16.04 LTS でのタイル型ウィンドウマネージャー環境構築(xmonad)

今まで、ArchLinux を利用していたのだけれども、壊れたので、Ubuntu に乗り換えた。

タイル型ウィンドウマネージャーの魅力に取り付かれたので、Ubuntu でも xmonad を導入してみた。

設定ファイルは以前 ArchLinux で利用していたものがそのまま使えた。

誰かの役に立つとは思えないけれども、再度自分で設定するときのために書きました。

Environment

  • Ubuntu 16.04 LTS
  • Let’s Note

xmonad の導入

まずは、xmonad のインストールから。

sudo apt-get install xmonad

これで、ログイン時に xmonad でログインするか選択できるようになる。

xmonad.hs の設定

.xmonad/xmonad.hs を作成。ターミナルは urxvt を利用。

現在の設定は以下。

import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run(spawnPipe)
import XMonad.Util.EZConfig(additionalKeys)
import System.IO

import XMonad.Actions.WindowGo

import XMonad.Layout.MultiToggle
import XMonad.Layout.MultiToggle.Instances
import XMonad.Config.Desktop (desktopLayoutModifiers)
import XMonad.Layout.Named

-- for keyboard shortcut mod4 is windows ShortcutKey
modm = mod4Mask

tall = Tall 1 (3/100) (1/2)

main = do
        xmproc <- spawnPipe "/usr/bin/xmobar /home/tsu-nera/.xmobarrc"
        xmonad $ defaultConfig
        { manageHook = manageDocks <+> manageHook defaultConfig
        --, layoutHook = avoidStruts  $  layoutHook defaultConfig
    , layoutHook = mkToggle1 FULL $ desktopLayoutModifiers (named "V" tall ||| (named "H" $ Mirror tall))

      -- sometimes, xmonad freese,comment out these lines 
          -- , logHook = dynamicLogWithPP $ xmobarPP
          -- { ppOutput = hPutStrLn xmproc
          --    , ppTitle = xmobarColor "green" "" . shorten 50
          -- }

          -- Border settings
      , borderWidth = 2
          , normalBorderColor  = "#99ccff"
          , focusedBorderColor = "#0033dd" -- blue

          -- Rebind Mod to the Hiragana_Katakana 
      , modMask = mod3Mask
      -- , modMask = mod1Mask        

          -- use rxvt-unicode 
      , terminal = "urxvt" 
          }
          -- windows キーでショートカット
          `additionalKeys`
          [
            ((modm, xK_l), spawn "gnome-screensaver-command -l")
          , ((modm, xK_t), runOrRaise "urxvt" (className =? "URxvt"))
          , ((modm, xK_k), runOrRaise "conkeror" (className =? "conkeror"))
      , ((modm, xK_f), sendMessage (Toggle FULL))
          , ((modm, xK_q), spawn "xinput --set-prop \"SynPS/2 Synaptics TouchPad\" \"Device Enabled\" 0")
          , ((modm, xK_w), spawn "xinput --set-prop \"SynPS/2 Synaptics TouchPad\" \"Device Enabled\" 1")
          ]

Let’s Note を利用しているので、mod キーをウィンドウズキーに設定。 いろいろと、ショートカットを設定。

xmobar の設定

xmobar は xmonad と相性のよいステータスバー。

sudo apt-get install xmobar

設定は以下のとおり。工夫私大でいろいろできる。

Config { font = "-misc-fixed-*-*-*-*-10-*-*-*-*-*-*-*"
       , borderColor = "black"
       , border = TopB
       , bgColor = "black"
       , fgColor = "grey"
       , position = TopW L 90
       , lowerOnStart = True
       , persistent = False
       , commands = [ Run Cpu ["-L","3","-H","50","--normal","green","--high","red"] 10
                    , Run Memory ["-t","Mem: <usedratio>%"] 10
            -- , Run Swap [] 10
                    , Run Battery ["Bat0"] 600
                    , Run Com "xmobar-clock-monitor.sh" [] "orgClock" 10
                    , Run Com "sh" ["-c", "cat ~/tmp/clocking"] "orgShow" 10
                , Run Date "%a %b %_d %Y %H:%M:%S" "date" 10
            ]   
       , sepChar = "%"
       , alignSep = "}{"
--       , template = "%cpu% | %memory% | %battery% }{ <fc=#ee9a00>%date%</fc> %orgClock%clock</fc> %orgShow%"
       , template = "%cpu% | %memory% | %battery% }{ <fc=#ee9a00>%date%</fc> "
             }

dmenu

コマンドランチャー。mod+p に割り当てている。すごく便利。

sudo apt-get install dmenu

PATH が通ったところにあるコマンドを実行できる。時々おかしくなる。 そのような時は、~/.xmonad/dmenu_run を削除する。

タスクトレイの設定

trayer というタスクトレイツールを使っている。

sudo apt-get install tarayer

ここにいろいろなアプリを表示する。.profile に登録しておく。

# trayer タスクトレイ
trayer --edge top --align right --SetDockType true --SetPartialStrut false --expand true --width 10 --transparent true --tint 0x000000 --height 14 &

# ネットワーク
nm-applet &

# サウンド
volumeicon &

# バッテリ
cbatticon &

# Dropbox
~/.dropbox-dist/dropboxd &~/.dropbox-dist/dropboxd &

# TouchPad Default Off
xinput --set-prop "SynPS/2 Synaptics TouchPad" "Device Enabled" 0

# wall paper
feh --bg-scale ~/Dropbox/Photos/ubuntu.jpg &

# クリップポードマネージャー
copyq &

以上、自分のための簡単な備忘録でした。便利なツールがあれば、教えてください。

参考リンク

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");

おわりに

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