読者です 読者をやめる 読者になる 読者になる

基本的に怠Diary

学習ログを残したい

クソみたいな理由でLispを学ぶな

実は今学んでいるLispにはとある一つの呪いがかかっている。

Land of Lispをすべて終えない限り、私は私的理由で仕事を辞めない。

実はもう一つあったがそれは既に達成済みなので書かない。

しかし我ながらかなり意味のわからない呪いである。

ちなみに決めた理由はこの理由があればどちらが達成しても素晴らしいものを手に入れるから的な理由だったと思います。

今wumpus辺りなので先は長いです。


最近Emacs Lisp書き始めました。

今作ったのはカーソルの上にある英単語の和訳をミニバッファに表示してくれるパッケージ?(

というかパッケージ分けてすらないから関数程度)です。

ロジックは当然大したことなくて、Sqlite形式のDBへバッファから取得した英単語を投げつけて、

返ってきたらprintする的なコマンドみたいになってます。

DBはくじら飛行机先生(Webスクレイピングはこの人の本で初めて知った。)が公開している

kujirahand.com

これを利用しました。

セミコロンで一日消えました。

ちなみにコード

(define-key markdown-mode-map (kbd "<キーバインド>")
  (lambda ()
    (interactive)
    (let* ((db (emacsql-sqlite "/path/to/dbfile"))
           (target (buffer-substring-no-properties
                    (region-beginning)
                    (region-end)))
           (query (emacsql db [:select [word mean]
                                       :from items
                                       :where (like word $r1)]
                           (concat target "%")
                           ))
           )
      ;;長そうなら単語だけにする
      (if (< (length query) 5)
          (mapcar (lambda (x)
                    (print x))
                  query)
        (mapcar (lambda (x)
                  (print (car x)))
                query)
        ))
    )
  )

パスの置く場所とかキーバインドはわりとどうでもいいです。

キーバインドの設定をキバって行くぜ的な言い回し使いたい。

sqlite

Sqliteをそのまま使用した場合、このコードでは動作しません。

「'」ならquote(~)みたいになるだけですが、「;」が入っていると、

「read syntax error」とでてしまい、動作しません。

本当なら読み込んだときにエスケープ処理できたらよかったのですが、

生憎パッケージのコードを理解できなかったため、

暫定的な(というかずっとこれかも)処理を施しました。

暫定的というか、元のDBに

update items set mean = replace(';'," ") where mean like '%;%';

をかけただけです。糞かよ

他にも、「'」とかもreplaceしたほうがいいかもしれません。


クソコード編

elispなら

messageで出力しろ感すごいけど動くもの暫定版と書いておけば自分は許す。

てかmapcarコンビ一つにできるはずでそもそもmapcar使う必要ない気がしなくもないので

少なくとも前者は修正していきたい。

後現時点では英単語からの検索しかできないので、今度は日本語からでもできるようにする予定です。

てかこれの上位互換絶対あるんだよなぁ・・・

実際にgoogle-translate使ったほうが精度高いし逆も容易いし楽っぽいので

オフラインで動作する以外に特にメリットねえわこれ草生。

何が間違いなのか

どれも正しくて、間違っているんだよ^^

皆違って、皆いい^^

皆違うから、いろんな楽しみがあって、苦しみが合って、愛し合うんだよ^^

だから皆で正しいと思うことを話し合って、実行して、もっと良い世界にしよう^^

ただし無能、テメーはダメだ。

お前は死ね。

足手まといのカスはお前だけでなく周りを不快にする。

何が助け合いだボケ。

お前何もしてねえじゃねえか。

お前何ができるんだよ。お前が生きてることで何のメリットが有るんだよ。


と言われると何も言い返せません。

今日も私はやらかしました。とても優しい同僚がキレて、

上司や先輩からは被害が及ばぬように放置されています。

じゃあ直せよと言われる。うん、頑張るよ。

次があるだろと言われる。うん、次こそはうまくやるよ。

さてこれで何回目だろうか。

何度も改善しようとした、考えたでも駄目だった。

じゃあ次はどうするかじゃねえんだよ。

お前は無能なんだよ。

生きてはいけないんだよ。

死ね。死んで少しでも被害を少なくしろ。


さて、ここまで思考が進むと、だいたい二通りに別れる(と思ってる)

1.世界、社会が間違ってる

2.俺が間違ってる

1は多分テロとかに走るんじゃないんですかね(適当

2.は死ぬんじゃね。頑張って修正する人とかもいるのかなー

じゃあ私はなんでしょうか。

「私が正しい。」

世界は正しい。でも私も間違っていない。

それを信じている私が正しい。

第三の答えみたいな回答しつつ、実は1に近い。

私は、人間に助けられているから表では決してこのようなことを発言できませんが、

人間は嫌いです。

人間と関わって、辛くなかったことなんて一度もなかった。現時点で関わってよかった人間は

家族以外いない。

毎日が苦しい。

入社したての頃からずっと辛かった。

毎日やめたい気持ちでいっぱいだった。

やめなかったのはメリットがそれを上回っていたからだと思う。

けれどいつかそれが私を大きく飲み込むだろう。

そしたら、死ぬのか、それとも生きるのか。

それはそのときのお楽しみ。

yasnippetってなんだよ〜破界篇〜

破界篇って前にも使った気がする。

やすにぺっと?

snippetは断片的とかそんな感じだって書いてありました。

Emacsの便利なパッケージの一つにyasnippetというものがある。

なぜ今になって記事を書くのかというと実はこれまで利用してこなかったからである。

yasnippetとは、よく略語展開みたいな書き方がされてる気がする。

その単語で想像したのが、例えばJavaとかその辺でforと入力したら、

for(;;){}

みたいな感じでパパッと表示されたりするのかなーとか思ったりしたけど、

そうだとしたら言語によってはかなり便利だなーと思います。

んで調べてみた結果やっぱりそうだった。

さらにさらにcommon-lisp-snippetとかあったのでありがたーく使われてもらいました。

github.com

init.elには以下の二行を追加した。 ‘’‘lisp (require 'common-lisp-snippets) (add-hook 'lisp-mode-hook ’(lambda () (yas-global-mode t))) ‘’'

二行目コピペでよりよいものないか探したけど見つからなかったので他の

とこ見て真似て作った。なんか違う気がしてならないけど正常に動作してるのでいいやってなってる。

今のところlisp以外で使いたいyasnippetは見つからなかったしlisp-mode以外ではいらないので

この設定にしてます。

RubyPHPも見つからないんだもん仕方ないね。GoはEmacsでやらないし。

じゃあ、自分で書けって話ですけどね。

てか最近PHP書いてないです。RubyはたまにWebスクレイピングしたいときに触りますが

PHPはマジで何もしてないです。

PHPでできたことが、それRubyでいいじゃんとなり、

Rubyでできた一部のことが、それGoの方がいいじゃんとなる。 ちなみにCommon Lispでは何もできません。私のLisp力低すぎ

で、なんでClojureとか触ってるの

本当になんでだろう。

まあそこそこ一緒だと思った。反省はしていない。

なんとなく「プログラミングClojure」購入したので読書程度には利用するつもりです。

なんか内容難しそうなのでどうなるかはわりと察してます。

Common Lispの休憩(N回目)として利用します。

あー、また結局コード何も書いてない。

しかし記事としてはそこそこの量になってしまい、かつボツで前に2つほど消してるので

いい加減ポエムでもいいから投稿しとこう。

ここはポエムでも許されるからね!HAHA

Common Lisp初めて一月が立った。

最近の言語がいかに優しいかを理解した。

全然わからない。

それどころかListの操作すらね。

WebスクレイピングRssの取得もDB操作も何もできません。

コピペ改変知恵遅プログラマLispは難易度高かった。

派生?(でいいのだろうか)言語であるClojureが馬鹿フィルターみたいなこと言ってるの見たけど

そのとおりだなぁと思った。いや、Clojureは触ったことないけど

Common Lispでさえこれなのかと思うとね。

選んだ言語間違えたかなとは思っていない。

これまでにない、新しい感覚なので数年ほど使って成長したいと今は思ってる。

数日後飽きるかもしれないけど

car,cdrはまだいいとして、cadddrだのcdddarだのわけわからねえよ。

car of cdr of cdr of cdrみたいなこと書いてあったけど

頭悪すぎて使いこなせる自信がない

他の言語でも大したことできないだろうな実際できてない。

LandOfLispと初めての人のためのLisp進めてるけど

とりあえず本読むだけしかやってないので余裕で理解できない。

でもつまらないプライド働いてサンプルコード書きたくない病になってる。

プログラマとしては最強のアンチパターンになってる今日このごろ。

結局ここにもLispに関するコードとか書いてないしなっ

人間関係の末

僕は友人含めて関わらないことにした。

もう人間とは直接かかわらない。

間接的には関わるってちょっと都合良すぎないって

毎回考えていたけどこの脳内の批判になんで毎回答えていたのかわりと謎である。

何故なら本当に関わりたくないなら、治す必要などないのである。

俺は俺のやりたいことを損しない程度にやっていたら友達はできないけど

それでも生きていくことは可能なのである。

自分でも何言ってるかわからないけど、もう友達はやめた。

これからは休日は一人で、静かに、プログラミングとブログを書いて生活することにする。

それでいいんだ。僕も相手もそれが最善だろう。

オリックスなんでそんなに弱いの

そういえばLanf of Lisp購入しました。

GoとScalaRubyはどうしたって?

やめてはいない。でも気がついた。

俺はプログラミングで解決したい問題はただひとつ。

暇つぶしだった。

つまり俺は暇が潰せることができるならJavaScalaRuby、Go、COBOL

なんでもいいわけだ。

なんでもいいとは行っても暇つぶしなら楽しい方がいいのは至極当たり前な意見であり、

それがコロコロ変わるのは学習面として見ると非常に最悪なのだが、

趣味となると大した問題ではないのだ。

などという言い訳を考えながらLispを進めている。

しかし、趣味において趣味そのものを楽しむだけではもうダメな段階に来ているのかもしれない。

この先死ぬほど雑魚な僕が生き残っていくためには趣味を自分の糧にするのかもしれない。

とりあえずいつもの60ページの法則によりわりと進みが遅くなっている

読書として「初めての人のためのLisp」を読み始めているが

こちらは非常にわかりやすい

www.amazon.co.jp

もうすぐ試験。でもやる気はない。

前回ボイコットしたとき辛くなったので一応受けるけど

今後はもう受験申込すらしなくなるかもしれない。

我ながら糞だと思う。否定はしない。

死んだほうがいい。

僕は今後自分が楽しいと思ったことしか勉強しない。

clispを覚えてそこからelispへと昇華してEmacsをもっといいものにしたい。

・・・まあDBの勉強はほんの少しだけした。

けど今となってはツイッターアカウント復活とか死ぬほどどうでもいいし

給料アップしたりとかもあるけど、明日にでもやめるかもしれないので関係ない。

俺は弱い。じゃあどうすれば生き残れるについて考えたけど結局何も思いつかなかった。

思いつく前に限界がきてしまった。

生まれなければよかった

精神を病みました

前からだろ

もうダメ

毎回考えてた

どうすれば生き残れるのか

けど 最近はどうすれば楽になれるのかについて多く考えてる時間の割合が大きい。

どうしよう 

俺はどうしたらいい。

実は答えはもうでている

でもそれはまだできない。

ポイントが必要なんだ。

まだ足りない

僕の尺度ではもう少しと見ているが、侮ってはいけない。

まだまだ足りない。

でもそれでいい。

なんか楽しい。毎日ポイント貯めて、どんどん溜まっていって

後どれくらいかなとか、辛い中で、プログラミングもしていないのに

楽しい。

達成感。業務では喪失感と無力感しか味わえないのでしっかりと味わわないといけない。

仕事にも苦しい中に良さがあるってこれのことだったんだ

プログラマの夢は諦めました。

これからはポイントを貯めて楽になれるようにがんばります