by shigemk2

当面は技術的なことしか書かない

iCalのサンプルデータ

github.com

iCalのサンプルをzipでくれと言われたけど、個人情報なんて渡せるわけねーじゃん!と思ったので、むりくりicsのサンプルデータを作ってみることにした。

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
DTSTART:20150705T000000Z
DTEND:20150705T005959Z
SUMMARY:日本語のテスト(Japanese Test)
END:VEVENT
END:VCALENDAR

Wikipediaなどを参考に、サンプルを作ってみる。とりあえず、SUMMARYとDTSTARTとDTENDをどうにかすれば、適当なサンプルデータが作れます。

iCalendar - Wikipedia

alfsuzuki.seesaa.net

elfeedを入れてみる

EmacsのRSSリーダー。なんとなく入れてみた。

導入

github.com

MELPAで普通に入れるだけ。

  • Emacs 24.5.1
  • Fedora20

キーバインドなど

  • elfeed(登録したRSSの最新記事を見る基本のキーバインド)
  • elfeed-update-feed(RSSを登録)
  • nとpでRSSの記事を前後できる
  • bでブラウザに飛ぶ

なお、登録したRSSは~/.elfeed/indexに格納されている模様。

あとは、適当に。

futurismo.biz

sdicを入れてみる

リンク

English Japanese Dictionary for mule/emacs

Fedora 上の emacs に sdic を導入してみた。: ほんまたけるのココログ

環境

  • Fedora20
  • Emacs 24.5.1

インストール

ダウンロードしたINSTALLをそのまんまなぞる感じ。でもmake dictでこけるのもなぞってしまったので、noからnkfに書き換え。

今後やりたいこと

どんな単語を調べたのか、ファイルに残しておきたいと思いました。

Markdownをプレビューする環境を整えたい人生だった

Emacsで書いたMarkdownをブラウザで確認するやつ

Perlスクリプト markdownを入れる。ブラウザを立ち上げるのがなんか面倒なのでやめました。

futurismo.biz

Daring Fireball: Markdown

Emacs内で完結するやつ。

w3mとか何度挫折したかわからないけど、Markdownを確認するだけならそれでもよいだろうと。

qiita.com

(require 'w3m)
(require 'markdown-mode)

(defun w3m-browse-url-other-window (url &optional newwin)
  (let ((w3m-pop-up-windows t))
    (if (one-window-p) (split-window))
    (other-window 1)
    (w3m-browse-url url newwin)))

(defun markdown-render-w3m (n)
  (interactive "p")
  (message (buffer-file-name))
  (call-process "/usr/local/bin/grip" nil nil nil
                "--gfm" "--export"
                (buffer-file-name)
                "/tmp/grip.html")
  (w3m-browse-url-other-window "file://tmp/grip.html")
  )
(define-key markdown-mode-map "\C-c \C-c" 'markdown-render-w3m)

パスなどは適宜変えましょう。開いているバッファの中身(Markdown)をHTMLに変換するのをgripはやっています。ここでgripを使っているのは、UIがGitHubちっくになるからであって、特段gripにこだわる必要はないかもしれません。

gripはpipで入るやつであって、パッケージで入るやつではありません。pip installで入ります。あと、GitHubのAPIを使っている都合上、割と簡単に制限に引っかかってHTMLに変換できなくなるので、、.grip/setttins.pyに以下のように書くとよいでしょう。

USERNAME="GitHubのユーザー名"
PASSWORD="GitHubのトークン"

github.com

qiita.com

www.bookshelf.jp

予習メモ #functional_shibuya

随時更新。

関数型デザインとコンビネータライブラリ

  • Part I では、関数型プログラミングの基礎を取り上げ、純粋関数にこだわることが、ループ、データ構造、例外といったプログラムの構成要素にどのような影響を与えるのか
  • Part II では、関数型プログラミングの前提がライブラリの設計にどのような影響を与えるのか
    • 関数型の設計はやっかいで繰り返し
    • 設計上の選択に関して疑問が生じた場合は、自分にとって納得のいく方法で結論を引き出す
  • 関数型ライブラリの設計に正しい答えはありません

7 純粋関数型の並列処理

  • ライブラリの簡単なユースケース
  • ユースケースのためのインターフェイス開発
  • ドメインと設計空間への理解
  • 代数的推論 (algebraic reasoning)
  • 法則 (law)
  • API

7.1 データ型と関数の選択

  • 設計を進めるにあたって難しいのは、そうしたアイデアを練り直し、必要な機能を可能にするデータ型を見つけること
  • 畳み込みの代わりに分割統治アルゴリズムを使う
  • サンプルによって明らかとなる理想の API を設計し、そこから実装に向かって逆方向に作業
scala> Examples.sum(IndexedSeq(1,2,3))
res3: Int = 6

単純な例の重要性

  • 整数の合計は、実際にやってみると非常に高速なので、並列化によってかえってオーバーヘッドが増える
  • 関数型の設計では、特殊なケースを山ほど示すのではなく、単純で合成可能な、基本的なデータ型と関数を構築していくことにより、表現力を鍛えることを目指す

7.1.1 並列計算のためのデータ型

設計プロセス全体が、小さな冒険の連続

  • 単純な例をすばやく作成
  • 設計上の選択肢の洗い出し
  • 1つのオプションの興味深い結果

並列化プリミティブを直接使用する場合の問題点

  • 意味のある値を返さない
  • 副作用

以上から、関数型プログラムから直接使用したくなるようなモジュール性と合成性を備えた APIたりえない。