かっこいいなぁと思わせる漫画の登場人物

# 具体例

## バクマン

* サイコーが、入院することになっても漫画を書こうとしていた

* やりたいという思いでジャンプとジャンプスクエアの連載をどうするかってときに、やりたいという気持ちを伝えていた

アニメ化するという強い思いを持っていた。

若干、利己的な目的のように感じて、すごいなぁという気持ちは少なかったが、

やりたいことを強く宣言していた姿勢や諦めない姿勢は、心に響いた。

## スラムダンク

* ヒロインはること、早朝に隠れて練習していた。

* 桜木花道がバスケットをうまくなるために、合宿でシュートを1万本打っていた

新人として入部して、経験者に勝てないという思いを持ちながら、こっそり練習をしていた。

困難な修行を頑張って乗り切る様子に、凄さを感じるようである。

## プラチナエンドるろ剣

この主人公は、自分が不利な状況に直面しても、自分の利益のために人を殺さないという決断をしているところが信念を持っているところである。

プラチナエンドに関しては、自分はどんな考え方を持っているとキャラクターが話すことで、立場の違いを明らかにし、それに対して議論を重ねることで、その思いの強さを表している。

# 共通点まとめ

* 逆境でも前向きに頑張る姿勢。

* 限界を越えようと頑張る姿勢。

*描写として、困難を諦めないで達成する。

# その他感想

逆に、困難に立ち向かって大変な思いをしていないと、進研ゼミの漫画のように、そんな簡単にいかないよ!と思われるようである。

バクマンの作中で言われていたが、主人公がその問題に取り組む理由があるといいらしい。

とはいえ、ドラゴン桜では、一発当ててやるという目標を持っていて、漫画それぞれのようだ。

主に、ジャンプ作品を紹介したが、ジャンプは努力*友情*勝利をテーマにしているので、このような形であろう。

# どう活かすか

漫画にする場合は、困難を乗り越える設定を追加するのが良さそうである。

うまく行き過ぎと思われる要因についても考えたい。

もちろん、何かの手法を学べばすむという短絡的な解決策を提供していたり、

その問題を解決するとたまたまうまくいく条件が揃っていることなどが分かるようになる方が良いのであろう。

ruby -Kuしたら文字コードの問題が解決しました。

はじめに

UTF-8のファイルを読み込んでそのまま表示しようと思うのに、表示できず困ったので記録します。
結局、

#! /usr/bin/env ruby

#! /usr/bin/env ruby -Ku

に変更したら日本語が表示できました。

試した方法

結局見つけられなかった検索ワード達

いかに検索能力が低いか分かるような単語たち

「文字列デコード Ruby
ruby 日本語 文字化け」
「encoding option is ignored」
エンコード デコード 文字列 URL Ruby
ruby ファイル 読み込み 文字コード
ruby 日本語 ファイル 読み込み」
Ruby 文字列 エンコード デコード」

おわりに

しばらくRubyを書かない間に、初歩的なことを忘れてしまっていたので、ここにメモしておきます。
自分が同じ問題に引っかかった時に、この検索ワードで引っかかってくれないかなーって期待して。

Emacsでテンプレートの変数を埋めて生成する機能つくりました。

はじめに

同じようなテンプレメールの日付や名前を変更してメールを送る作業が何度も続いたので、用意したテンプレに変数埋めて生成する機能を作りました。


なにするの?

テンプレートに予め設定しておいた変数を埋めたり日付を埋めたりします。


導入方法

事前準備

動作のためには、以下のものが必要になります。

  • popup.el
導入
install-elisp RET https://gist.github.com/sanryuu/7842967/raw/0f73205b75ad172faf98a357d73a3982a11a20b1/fill-in-template.el RET
C-c C-c

設定ファイルに以下の行を追加します。

(require 'reference-user-comment)

使い方

テンプレートの登録

変数名は、変数名と変数値を登録します。

(fit:register-variable "name" "田中")

テンプレートとして、表示名、ファイル名(.txt除く)、曜日を登録します。

(fit:register-template "経営会議" "management-meeting" fit:week-tuesday)
(fit:register-template "開発会議" "develop-meeting" fit:week-friday)

テンプレートには、埋めたい変数名を"#{$"と"}"で括っておきます。
埋めたい日程は、"#{"と"}"で括っておきます。フォーマットは、EmacsLispのformat-time-stringと同じです。
"%Y/%m/%d %H:%M:%S"→"2010/12/12 23:22:34"

参加者各位。

お疲れさまです、#{$name}です。

#{%m/%d}の会議のお知らせです。
テンプレートの生成

以下のコマンドで利用できます。

M-x fit:generate

実行したあとに、表示されたポップアップからテンプレートを選択したら生成されたテンプレートを新しいバッファで表示します。

おわりに

メールなどに使う、テンプレート生成に使うテンプレートからの生成機能を作りました。
まだまだ、使いつらい部分があるのですが、最低限使える状態になったので公開しました。
ご意見頂けましたら改善します。

もともと、一般人(Emacsユーザ以外)に使わせようと思って作ってたのですが、完全に設定書かない状態では使うところまでいきました。
Emacsユーザ以外が使うとすると、Emacsのメニューバーみたいに、設定は裏で掃き出せるようにしないとですね。勉強になりました。

Emacsでユーザ定義関数の説明を取得する機能作りました

はじめに

この投稿は.emacs Advent Calendar 2013 6日目の記事です。

PHPである程度の規模のシステムをいじっていたら、関数名から処理は分からないけど、コメントはメモ程度に書いてあるって状況にもよく遭遇しました。
それらをgtagsでファイルを移動しながら何度も確認しにいったら非常に時間がかかったので、呼出元から取得できるget-user-comment.el(α版)を作りました。
現在は、PHPのみに対応しています。理由は、自分が使っている言語でgtagsで対応されている(Java, C, C++, PHP)?ものがPHPのみのため。


なにをしてくれるの?

関数内でユーザが定義している関数の上のコメントを取得して呼出元から参照できるようにしてくれます。
デモ

(現在PHPのみに対応。)

導入方法

事前準備

動作のためには、以下のものが必要になります。

  • gnu global
  • gtags.el
  • popup.el
導入

gistからインストールします。

install-elisp RET https://gist.github.com/sanryuu/7809739/raw/d5cb7ef253cc75d58e6cd97d3d99e055e7f87d0c/reference-user-comment.el RET
C-c C-c

設定ファイルに以下の行を追加します。

(require 'reference-user-comment)
(global-set-key "\C-c\C-r" 'ruc-reference-document)

コマンドは、お好みのものに。

使い方

M-x ruc-reference-document
すると、コメントがあった場合にはポップアップで表示します。

今後の課題

実装してみて、考えている課題です。

  • popup-menuを決定せずとも、候補の関数のリファレンスを見られる
  • 変数に対しても定義位置のコメント取得

おわりに

今後は、似たような機能のものが無ければ継続開発していくつもりです。
方針としては、小さい規模の機能でもちょっとずつ実装していきます。
ご意見、ご指摘などがありましたら、気軽に声をかけていただければと思います。

Emacsで新幹線の電光掲示板つくってみた

はじめに

先日、Emacsで作業中に取得した情報を表示する機能が欲しいって思い、新幹線のニュースを流している電光掲示板っぽいのを作りました。


新幹線の電子掲示板の補足

Passion For The Future: 瞬間情報処理の心理学―人が二秒間でできること
電光掲示板には、あまり文字をのっけすぎるとよくないらしく、人間が一度に認識できる文字数の6〜8文字が良いよう。
ということらしいので、ミニバッファ内に8文字だけ表示して、流れるように実装することに。

使い方

インストール
M-x install-elisp RET https://gist.github.com/sanryuu/7774326/raw/8fc78d278dc9d452075bf91adcf629135a17e3b2/ebb.el
C-c C-c
動作

;;ebb:set-display-tagetで表示する文字列をセットして

(ebb:set-display-taget "ミニバッファに電光掲示板を作ってみました")

以下のコマンドで表示/非表示を切り替えられます。

M-x ebb:toggle-display

おわりに

現状では、ミニバッファを占有させるので何かするときにミニバッファの取り合いになるので、今後修正します。
本当は、一定時間Emacsを操作しなかったら電光掲示板が起動して操作すると終了するって設定にしたいけど、よく分からず。
run-with-idle-timer使うと操作するごとに1文字ずつ表示されるので違う。
run-with-idle-timerをトリガーとして起動したら停止するときの挙動が分からない。
EmacsLispは面白いけど難しい。


この機能でニュースを表示するようにしたのですが、なんとも読みにくい。
読みたいのに一気に記事がでてこないし、読みたかったところがすでに終っていたら1周するまで待たないといけない。
まだまだ、課題があります。
ってことで表示形式のみの紹介でした。

emacs-w3mでPHPのリファレンス見れるようにしてみた

はじめに

PHPの関数ってすごく沢山用意してくれているけど、仕様を覚えきれない。それに、毎回ブラウザとEmacsを行き来するのは面倒だ。
なら、emacs-w3mで見たらいいじゃないって思いまして、emacs-w3mPHPの公式リファレンスを見れるようにしてみました。

emacs-w3mの導入

w3mがデフォルトで入っていたので、emacs-w3mの導入から行います。
配布されているtar.gzのソースコードが古いのでcsvから最新版を持ってきて導入します。

$ wget http://emacs-w3m.namazu.org/emacs-w3m-1.4.4.tar.gz
$ cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot login
$ cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot co emacs-w3m
$ tar xvfz emacs-w3m-1.4.4.tar.gz
$ cp -r emacs-w3m-1.4.4 emacs-w3m-cvs
$ cp -r emacs-w3m/* emacs-w3m-cvs
$ cd emacs-w3m-cvs
$ ./configure
$ make
$ sudo make install

設定ファイルに以下の行を追加して導入完了です。

(add-to-list 'load-path "/usr/share/emacs/site-lisp/w3m/")
(require 'w3m-load)

M-x w3mすると、emacs-w3mが起動します。

PHPのリファレンス表示をemacs-w3mでできるようにする。

PHPのリファレンス表示をemacs-w3mでできるように設定します。
php-modeにはデフォルトでリファレンスを見に行ってくれる機能C-c C-f (php-search-documentation)が容易されています。
普通にGUI上で起動するとブラウザが立ち上ります。

そこで、内部の処理を確認してemacs-w3mで見れるように、何が行われているのか確認します。

M-x describe-function RET php-search-documentation

そして、定義元のphp-mode.eへ移動。

(defun php-search-documentation ()
  "Search PHP documentation for the word at point."
  (interactive)
  (browse-url (concat php-search-url (current-word t))))

browse-urlを何とかしたらよさそうなので、確認します。

M-x describe-function RET browse-url

今度は、コードを見なくても、説明に書いてくれていました。

browse-url is an interactive compiled Lisp function.

(browse-url URL &rest ARGS)

Ask a WWW browser to load URL.
Prompts for a URL, defaulting to the URL at or before point.  Variable
`browse-url-browser-function' says which browser to use.
If the URL is a mailto: URL, consult `browse-url-mailto-function'
first, if that exists.

browse-url-browser-function に使うブラウザを登録すると良いよう。

(setq browse-url-browser-function 'w3m-browse-url)

すると見れました。

PHPのリファレンスをemacs-w3mで見てみる

PHPのリファレンスをemacs-w3mで見てみました。
ところが。。。。関数一覧くらいしか表示されてない。
左側のメニューが先に表示されています。(左 nw)

下の方の本文の部分まで移動してみます。(左 nw)

やはり、見づらい。。。。
これは、GUIのブラウザが使えるならGUIブラウザを使いたいです。
ちなみに、browse-url-browser-function が browse-url-default-browserだとFirefoxが起動しました。

みやすい。。。

結論

何の工夫もせずにemacs-w3mphpのリファレンスを見るのは厳しかったです。
やはり、別の方法を取らないといけなさそうですね。

参考

emacs-w3mの導入はここを参考にしました。
http://d.hatena.ne.jp/suikyounohito/20120501/1335856223

おわりに

EmacsPHPのリファレンスを見るのは、リファレンスページをパースしてどこかに保存するなりしないと行けなさそうですね。
もっと、効率的にPHPをかけるようにしたいものです。
2年ぶりくらいにemacs-w3mつかってみて、楽しかったです。

Emacs上でポリンゴンショックさせてみた。

はじめに

Emacsでの作業に集中しているため、Windows上でスケジュールソフトからの通知に気が付かないことが多く、不便に感じていました。
不快に思うくらい目立つ実装にしてみてはどうかと考えて、ポリゴンショックを作ってみました。

動作イメージ

動作イメージは、不快にならないよう、リンクにしておきます。
動作イメージ

以下の2枚の画像のように、赤背景と青背景が高速で入れかわります(マシンスペックに依存)


使い方

導入
M-x install-elisp RET
https://gist.github.com/sanryuu/7734853/raw/af2f3299aa8af1113042799067f3ffaf264f9b92/polygon-shock.el RET
C-c C-c
ポリゴンショック開始

開始時は、以下のコマンドを使ってください。

M-x polygon-shock-start
ポリゴンショック停止

他のEmacsの拡張と同じ感覚で利用できるように、C-gで終了できるようにしています。

C-g
備考

通知なのでコードの中で呼び出して使います。
(run-at-time TIME nil 'polygon-shock-start)
Emacsのタイマーを使っているので以下のコードと組合せると良さそう。
http://d.hatena.ne.jp/ozawanay/20110124/p1

おわりに

もっと綺麗な実装にできそうなのですが、quoteの中の文字列を変数に置き換えられないなどありまして、汚ないコードになっています。
Emacsのカーソルを激しく点滅させるEmacs Lisp - hitode909の日記 を参考に改善したいです。
社内で使ってたら、「頭おかしい」みたいな反応されたので、使いどころを選びます。