diff --git a/content/post/1970/01/01/1970-01-01-00000000.md b/content/post/1970/01/01/1970-01-01-00000000.md deleted file mode 100644 index 954a7e0..0000000 --- a/content/post/1970/01/01/1970-01-01-00000000.md +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: anything の source を作ってみる (initの使い方) -author: kazu634 -date: 1969-12-31 -wordtwit_post_info: - - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4879;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' -categories: - - Emacs - ---- -
- Anything.el の source で init を使ってみて、うまくいかなかったのでここに書いておきます。 -
- -- init の説明にはこうありました。 -
- --- --
- - -- - init (オプション) -
- -- - anything が実行された際に引数なしで呼び出される関数。この要素は、候補のリストを作成するために現在の状況を収集するのに便利である。
-
例えば、 source がカレントディレクトリを対象とした場合、init 要素に指定することでカレントディレクトリの情報を収集することができる。なぜならば、それ以降 anything はミニバッファーと anything-buffer で動作し、カレントディレクトリが変わる可能性が出てくるからである。 -
- これは candidates を表示する前に実行される関数なのだろうと単純に考えていたのですが、間違えていたようでした。 -
- -- つくってみたソースはこちら: -
- --(setq anything-c-source-testtest -'((name . "test Search") -(init . -(lambda () -(read-string "?: "))) -(candidates . -("foo" "bar")) -(action . (("Insert" . insert))))) -- -
- これを実行すると、下のような形で候補が表示されるのと、ミニバッファーでの問い合わせが同時に行われてしまいます: -
- --
- スクリプトの引数を入力してもらってから、スクリプトを実施、候補の表示という流れにしたかったのですが、 init ではできないようです。。。 -
- --;; グローバル変数を定義 -(defvar anything-c-source-amazon-work "a") -;; 事前にこの関数を呼び出して、引数を取得→anything-c-source-amazon-workに代入 -;; その後、anything-c-source-amazonでanythingを起動する -;; anything-c-source-amazonは、anything-c-source-amazon-workを引数として -;; 外部スクリプトを実行し、候補を生成する -(defun anything_amazon (key) -(interactive "sISBN13 or ASIN: ") -(if (string-match "[0-9]+" key) -(progn -(setq anything-c-source-amazon-work key) -(anything 'anything-c-source-amazon -nil -"Title: " -nil -nil -anything-call-source-buffer)) -(message "Please enter ISBN13 or ASIN!"))) -(defvar anything-c-source-amazon -'((name . "Amazon Search") -(candidates . -(lambda () -(if (string-match "[0-9]+" anything-c-source-amazon-work) -(delete "" -(split-string -(shell-command-to-string -(format "access_amazon %s" -anything-c-source-amazon-work)) -"\n")) -"No Results"))) -(candidate-transformer . (lambda (candidates) -(mapcar -(function (lambda(arg) -(apply 'cons (split-string arg "\t")))) -candidates))) -(action . (("Insert" . insert))))) --
- id:hayamiz主催のEmacs勉強会に参加してきた。id:hyoshiokさんの「ブログに感想をアップするまでが勉強会」ということをいわれていたのだが、勉強会から今まですでに二日が経過している。今まで私は何をしていたのか? -
- -- いやー、Macの環境をまっさらにして、Emacsの設定を一からやり直していました。それぐらいに濃い刺激を受けてきました。本当にいい勉強会だった。後、やっぱり自分みたいな「コピペで.emacsを作り上げる」レベルには、実際にこんなことができると実演してくれて、「こんなこともできるのか!」という感動が強かった。 -
- -- 他の人もいろいろとまとめてくれている(例えば「tokyo-emacs#x01行ってきた。 – tomisima::memo」とか)ので、自分は -
- -- を導入してて、詰まったところを備忘録として書いておこうと思う。でも、この二つも導入するのは結構簡単だった。 -
- -- yasnippet – Google Codeからyasippetをダウンロードする。今回私はbundleではない方をダウンロードした。それで適当なフォルダで解凍して、.emacsに -
- --(require 'yasnippet) ;; not yasnippet-bundle -(yas/initialize) -(yas/load-directory "「snippets」ディレクトリへのパス") -- -
- を追加する。再起動後には、yasnippetが使えるようになっている…はず。自分はまっさらにしないと、なぜかyasnippetが使えなかった。なぜなんだろう?とりあえずtabで使えるようになるよ。 -
- -- こいつは本当に便利です。簡単にいうと、「Quicksilverみたいなのが、Emacsに入ってきます」。id:IMAKADOさんのデモをみたときは本当に感動した。manがEmacsの中から参照できている!本当にすごい! -
- -- anythingを導入する前にぜひやっておくべきことは -
- -- です。 -
- -- 私の.emacsはこんな感じになりました。 -
- --;; ================ -;; === anything === -;; ================ -;; 初回起動が遅いので cache 作成。 -(setq woman-cache-filename (expand-file-name "~/woman_cache")) -(require 'anything-config) -(setq anything-sources -(list anything-c-source-buffers -anything-c-source-files-in-current-dir -anything-c-source-file-name-history -anything-c-source-emacs-commands -anything-c-source-man-pages -anything-c-source-info-pages -anything-c-source-calculation-result -anything-c-source-locate)) -(global-set-key "\C-xb" 'anything) -- -
- ポイントになるのは、いちいち起動時に man ページから索引を作らないように -
- --;; 初回起動が遅いので cache 作成。 -(setq woman-cache-filename (expand-file-name "~/woman_cache")) -- -
- を書いていること。「(require ‘anything-config)の前に書かないといけない」ことに気づくまでが大変だった。。。 -
- -- 参考になったのは、「巷で話題の anything.el を使ってみた」。 -
- -- id:hayamizさん と id:hyoshiokさん、勉強会を開いてくれてありがとうございました!発表してくださった皆さんもおつかれさまです。 -
--XPathを実行する際のお勧めplugin – goinger的日記とかで紹介されているFind XPathが便利だ♪ -
-- 仕事でログ管理サーバというものに日次でログを転送して、解析という処理を行なっていました。 -
- -- しかしここで問題が発生。Windowsの更新日付を見て、前回日付から更新されていればログを転送するロジックなのに、ログが書き込まれても更新日付が更新されていなかった。。。原因は調査中。。。そういったトラブルに見舞われた結果、モダンなログ監視手法を勉強したいと思っていたのでした。 -
- -- そんなときに読んだ『WEB+DB PRESS Vol.69』で紹介されていた Fluentd | Open Source Data Collector を試して見ることを決意したのでした。 -
- --WEB+DB PRESS Vol.69によれば既存のログ解析システムには以下の問題点があると指摘しています: -
- -- fluentd の tail プラグインを用いると、 tail -f して追記されたものを随時転送してくれるため、即時に転送されます。コピー処理についてもリトライを行なってくれます。また、ログ転送をほぼリアルタイムに行えるため、ログ解析処理を日中帯に実行でき、障害対応の苦労が軽減されます。 -
- -- ubuntu の deb パッケージ・td-agent を使用して導入してみました。 -
- --kazu634@fluent-master:~$ cd /etc/apt -kazu634@fluent-master:/etc/apt$ ll -total 48 -drwxr-xr-x 6 root root 4096 6月 28 00:02 ./ -drwxr-xr-x 85 root root 4096 6月 28 00:01 ../ -drwxr-xr-x 2 root root 4096 6月 24 13:13 apt.conf.d/ -drwxr-xr-x 2 root root 4096 4月 20 19:21 preferences.d/ --rw-r--r-- 1 root root 3377 6月 28 00:02 sources.list -drwxr-xr-x 2 root root 4096 4月 20 19:21 sources.list.d/ --rw------- 1 root root 1200 6月 24 13:00 trustdb.gpg --rw-r--r-- 1 root root 6713 6月 24 13:00 trusted.gpg -drwxr-xr-x 2 root root 4096 4月 20 19:21 trusted.gpg.d/ --rw-r--r-- 1 root root 6713 6月 24 13:00 trusted.gpg~ -kazu634@fluent-master:/etc/apt$ sudo cp -p sources.list sources.list.20120627 -kazu634@fluent-master:/etc/apt$ sudo vi sources.list -kazu634@fluent-master:/etc/apt$ diff -u sources.list.20120628 sources.list ---- sources.list.20120628 2012-06-28 00:02:06.263023624 +0900 -+++ sources.list 2012-06-28 00:02:50.683021714 +0900 -@@ -59,3 +59,5 @@ - ## developers who want to ship their latest software. - # deb http://extras.ubuntu.com/ubuntu precise main - # deb-src http://extras.ubuntu.com/ubuntu precise main -+ -+deb http://packages.treasure-data.com/debian/ lucid contrib -kazu634@fluent-master:/etc/apt$ sudo aptitude update -Ign http://ubuntutym.u-toyama.ac.jp precise InRelease -Ign http://ubuntutym.u-toyama.ac.jp precise-updates InRelease -Ign http://ubuntutym.u-toyama.ac.jp precise-backports InRelease -Get: 1 http://ubuntutym.u-toyama.ac.jp precise Release.gpg [198 B] -Get: 2 http://ubuntutym.u-toyama.ac.jp precise-updates Release.gpg [198 B] -Get: 3 http://ubuntutym.u-toyama.ac.jp precise-backports Release.gpg [198 B] -Get: 4 http://ubuntutym.u-toyama.ac.jp precise Release [49.6 kB] -Get: 5 http://ubuntutym.u-toyama.ac.jp precise-updates Release [49.6 kB] -Get: 6 http://ubuntutym.u-toyama.ac.jp precise-backports Release [49.6 kB] -Get: 7 http://ubuntutym.u-toyama.ac.jp precise/main Sources [934 kB] -Ign http://security.ubuntu.com precise-security InRelease -Get: 8 http://security.ubuntu.com precise-security Release.gpg [198 B] -Ign http://packages.treasure-data.com lucid InRelease -Get: 9 http://security.ubuntu.com precise-security Release [49.6 kB] -Ign http://packages.treasure-data.com lucid Release.gpg -Hit http://packages.treasure-data.com lucid Release -Ign http://packages.treasure-data.com lucid/contrib amd64 Packages/DiffIndex -Get: 10 http://ubuntutym.u-toyama.ac.jp precise/restricted Sources [5,470 B] -Get: 11 http://ubuntutym.u-toyama.ac.jp precise/universe Sources [5,019 kB] -Ign http://packages.treasure-data.com lucid/contrib i386 Packages/DiffIndex -Ign http://packages.treasure-data.com lucid/contrib TranslationIndex -Get: 12 http://security.ubuntu.com precise-security/main Sources [21.1 kB] -Get: 13 http://security.ubuntu.com precise-security/restricted Sources [14 B] -Get: 14 http://security.ubuntu.com precise-security/universe Sources [7,120 B] -Get: 15 http://security.ubuntu.com precise-security/multiverse Sources [713 B] -Get: 16 http://security.ubuntu.com precise-security/main amd64 Packages [64.3 kB] -Get: 17 http://security.ubuntu.com precise-security/restricted amd64 Packages [14 B] -Get: 18 http://security.ubuntu.com precise-security/universe amd64 Packages [17.2 kB] -Get: 19 http://security.ubuntu.com precise-security/multiverse amd64 Packages [1,155 B] -Get: 20 http://security.ubuntu.com precise-security/main i386 Packages [65.9 kB] -Hit http://packages.treasure-data.com lucid/contrib amd64 Packages -Hit http://packages.treasure-data.com lucid/contrib i386 Packages -Get: 21 http://security.ubuntu.com precise-security/restricted i386 Packages [14 B] -Get: 22 http://security.ubuntu.com precise-security/universe i386 Packages [17.4 kB] -Get: 23 http://security.ubuntu.com precise-security/multiverse i386 Packages [1,394 B] -Hit http://security.ubuntu.com precise-security/main TranslationIndex -Hit http://security.ubuntu.com precise-security/multiverse TranslationIndex -Hit http://security.ubuntu.com precise-security/restricted TranslationIndex -Hit http://security.ubuntu.com precise-security/universe TranslationIndex -Ign http://packages.treasure-data.com lucid/contrib Translation-ja_JP -Hit http://security.ubuntu.com precise-security/main Translation-en -Hit http://security.ubuntu.com precise-security/multiverse Translation-en -Hit http://security.ubuntu.com precise-security/restricted Translation-en -Ign http://packages.treasure-data.com lucid/contrib Translation-ja -Hit http://security.ubuntu.com precise-security/universe Translation-en -Ign http://packages.treasure-data.com lucid/contrib Translation-en -Get: 24 http://ubuntutym.u-toyama.ac.jp precise/multiverse Sources [155 kB] -Get: 25 http://ubuntutym.u-toyama.ac.jp precise/main amd64 Packages [1,273 kB] -Get: 26 http://ubuntutym.u-toyama.ac.jp precise/restricted amd64 Packages [8,452 B] -Get: 27 http://ubuntutym.u-toyama.ac.jp precise/universe amd64 Packages [4,786 kB] -Get: 28 http://ubuntutym.u-toyama.ac.jp precise/multiverse amd64 Packages [119 kB] -Get: 29 http://ubuntutym.u-toyama.ac.jp precise/main i386 Packages [1,274 kB] -Get: 30 http://ubuntutym.u-toyama.ac.jp precise/restricted i386 Packages [8,431 B] -Get: 31 http://ubuntutym.u-toyama.ac.jp precise/universe i386 Packages [4,796 kB] -Get: 32 http://ubuntutym.u-toyama.ac.jp precise/multiverse i386 Packages [121 kB] -Hit http://ubuntutym.u-toyama.ac.jp precise/main TranslationIndex -Hit http://ubuntutym.u-toyama.ac.jp precise/multiverse TranslationIndex -Hit http://ubuntutym.u-toyama.ac.jp precise/restricted TranslationIndex -Hit http://ubuntutym.u-toyama.ac.jp precise/universe TranslationIndex -Get: 33 http://ubuntutym.u-toyama.ac.jp precise-updates/main Sources [117 kB] -Get: 34 http://ubuntutym.u-toyama.ac.jp precise-updates/restricted Sources [1,379 B] -Get: 35 http://ubuntutym.u-toyama.ac.jp precise-updates/universe Sources [28.2 kB] -Get: 36 http://ubuntutym.u-toyama.ac.jp precise-updates/multiverse Sources [1,058 B] -Get: 37 http://ubuntutym.u-toyama.ac.jp precise-updates/main amd64 Packages [297 kB] -Get: 38 http://ubuntutym.u-toyama.ac.jp precise-updates/restricted amd64 Packages [2,417 B] -Get: 39 http://ubuntutym.u-toyama.ac.jp precise-updates/universe amd64 Packages [81.1 kB] -Get: 40 http://ubuntutym.u-toyama.ac.jp precise-updates/multiverse amd64 Packages [1,825 B] -Get: 41 http://ubuntutym.u-toyama.ac.jp precise-updates/main i386 Packages [299 kB] -Get: 42 http://ubuntutym.u-toyama.ac.jp precise-updates/restricted i386 Packages [2,439 B] -Get: 43 http://ubuntutym.u-toyama.ac.jp precise-updates/universe i386 Packages [81.6 kB] -Get: 44 http://ubuntutym.u-toyama.ac.jp precise-updates/multiverse i386 Packages [2,049 B] -Get: 45 http://ubuntutym.u-toyama.ac.jp precise-updates/main TranslationIndex [74 B] -Get: 46 http://ubuntutym.u-toyama.ac.jp precise-updates/multiverse TranslationIndex [71 B] -Get: 47 http://ubuntutym.u-toyama.ac.jp precise-updates/restricted TranslationIndex [71 B] -Get: 48 http://ubuntutym.u-toyama.ac.jp precise-updates/universe TranslationIndex [73 B] -Get: 49 http://ubuntutym.u-toyama.ac.jp precise-backports/main Sources [1,346 B] -Get: 50 http://ubuntutym.u-toyama.ac.jp precise-backports/restricted Sources [14 B] -Get: 51 http://ubuntutym.u-toyama.ac.jp precise-backports/universe Sources [6,873 B] -Get: 52 http://ubuntutym.u-toyama.ac.jp precise-backports/multiverse Sources [1,383 B] -Get: 53 http://ubuntutym.u-toyama.ac.jp precise-backports/main amd64 Packages [929 B] -Get: 54 http://ubuntutym.u-toyama.ac.jp precise-backports/restricted amd64 Packages [14 B] -Get: 55 http://ubuntutym.u-toyama.ac.jp precise-backports/universe amd64 Packages [6,114 B] -Get: 56 http://ubuntutym.u-toyama.ac.jp precise-backports/multiverse amd64 Packages [996 B] -Get: 57 http://ubuntutym.u-toyama.ac.jp precise-backports/main i386 Packages [929 B] -Get: 58 http://ubuntutym.u-toyama.ac.jp precise-backports/restricted i386 Packages [14 B] -Get: 59 http://ubuntutym.u-toyama.ac.jp precise-backports/universe i386 Packages [6,117 B] -Get: 60 http://ubuntutym.u-toyama.ac.jp precise-backports/multiverse i386 Packages [999 B] -Hit http://ubuntutym.u-toyama.ac.jp precise-backports/main TranslationIndex -Hit http://ubuntutym.u-toyama.ac.jp precise-backports/multiverse TranslationIndex -Hit http://ubuntutym.u-toyama.ac.jp precise-backports/restricted TranslationIndex -Hit http://ubuntutym.u-toyama.ac.jp precise-backports/universe TranslationIndex -Hit http://ubuntutym.u-toyama.ac.jp precise/main Translation-ja -Hit http://ubuntutym.u-toyama.ac.jp precise/main Translation-en -Hit http://ubuntutym.u-toyama.ac.jp precise/multiverse Translation-ja -Hit http://ubuntutym.u-toyama.ac.jp precise/multiverse Translation-en -Hit http://ubuntutym.u-toyama.ac.jp precise/restricted Translation-ja -Hit http://ubuntutym.u-toyama.ac.jp precise/restricted Translation-en -Hit http://ubuntutym.u-toyama.ac.jp precise/universe Translation-ja -Hit http://ubuntutym.u-toyama.ac.jp precise/universe Translation-en -Get: 61 http://ubuntutym.u-toyama.ac.jp precise-updates/main Translation-en [136 kB] -Hit http://ubuntutym.u-toyama.ac.jp precise-updates/multiverse Translation-en -Hit http://ubuntutym.u-toyama.ac.jp precise-updates/restricted Translation-en -Get: 62 http://ubuntutym.u-toyama.ac.jp precise-updates/universe Translation-en [48.4 kB] -Hit http://ubuntutym.u-toyama.ac.jp precise-backports/main Translation-en -Hit http://ubuntutym.u-toyama.ac.jp precise-backports/multiverse Translation-en -Hit http://ubuntutym.u-toyama.ac.jp precise-backports/restricted Translation-en -Hit http://ubuntutym.u-toyama.ac.jp precise-backports/universe Translation-en -Fetched 20. MB in 17秒 (1,155 kB/s) -kazu634@fluent-master:/etc/apt$ sudo aptitude install td-agent -The following NEW packages will be installed: -td-agent - packages upgraded, 1 newly installed, to remove and not upgraded. -Need to get B/12.7 MB of archives. After unpacking 46.5 MB will be used. -Selecting previously unselected package td-agent. -(データベースを読み込んでいます ... 現在 53744 個のファイルとディレクトリがインストールされています。) -(.../td-agent_1.1.7-1_amd64.deb から) td-agent を展開しています... -ureadahead のトリガを処理しています ... -td-agent (1.1.7-1) を設定しています ... -Installing default conffile /etc/td-agent/td-agent.conf ... -libc-bin のトリガを処理しています ... -ldconfig deferred processing now taking place -- -
- 設定方法は次回に。 -
- - -- Gauche で Mixi Voice に投稿できるところまで書きました。まだモジュールにはしていないのですが、とりあえずここにひっそりと書いておきます。 -
- -- Twitter から任意のキーワードにマッチするものだけを Mixi Voice に投稿したい、という希望がありました。Mixi には大学の時のサークル関係の方が多くいて、その人達向けに Runkeeper のつぶやきを見せたかったのです。 -
- -- Mixi Voice の OAuth の取得などに関しては、次のページが詳しかったので、まずはこのページをご覧ください: -
- - - -- つぎのソースを適当な名前で保存してください: -
- --(use rfc.http) -(use rfc.json) -;;; class definition -(define-class <mixi-token> () -((consumer-key :init-keyword :consumer-key -:init-value #f -:accessor consumer-key-of) -(consumer-secret :init-keyword :consumer-secret -:init-value #f -:accessor consumer-secret-of) -(authorization-code :init-keyword :authorization-code -:init-value #f -:accessor authorization-code-of) -(refresh-token :init-keyword :refresh-token -:init-value #f -:accessor refresh-token-of) -(access-token :init-keyword :access-token -:init-value #f -:accessor access-token-of))) -;; /* _\|/_ -;; (o o) -;; +----oOO-{_}-OOo--------------+ -;; |Wrapper macro for HTTP access| -;; +----------------------------*/ -(define-macro (wrap-http http-method proc) -(let ((g!status (gensym)) -(g!header (gensym)) -(g!body (gensym))) -`(receive (,g!status ,g!header ,g!body) -,http-method -(cond -((equal? "200" ,g!status) (,proc ,g!body)) -(else (print ,g!status ,g!header ,g!body)))))) -(define-macro (wrap-http/debug http-method proc debug-flag) -(let ((g!status (gensym)) -(g!header (gensym)) -(g!body (gensym))) -`(receive (,g!status ,g!header ,g!body) -,http-method -(cond -((equal? "200" ,g!status) (,proc ,g!body)) -(else ,(if debug-flag -`(else (print ,g!status ,g!header ,g!body)) -#f)))))) -;;; <mixi-token>インスタンスから、 -;;; アクセストークンを取得するためのクエリーを生成 -(define-method compose-access-token-query ((token <mixi-token>)) -`(("grant_type" "authorization_code") -("client_id" ,(consumer-key-of token)) -("client_secret" ,(consumer-secret-of token)) -("code" ,(authorization-code-of token)) -("redirect_uri" "http://mixi.jp/connect_authorize_success.html"))) -;;; アクセストークン取得のための手続き -(define-method acquire-access-token! ((token <mixi-token>)) -(wrap-http/debug (http-post "secure.mixi-platform.com" -"/2/token" -(compose-access-token-query token) -:secure #t) -(lambda (response) -(update-token! response token)) -#f)) -;;; <mixi-token>を更新するための手続き -(define-method update-token! ((response <string>) -(mixi-instance <mixi-token>)) -(define (refresh-token response) -(if (equal? #f response) -response -(cdr (assoc "refresh_token" -(parse-json-string response))))) -(define (access-token response) -(if (equal? #f response) -response -(cdr (assoc "access_token" -(parse-json-string response))))) -(set! (access-token-of mixi-instance) (access-token response)) -(set! (refresh-token-of mixi-instance) (refresh-token response)) -mixi-instance) -;;; mixi voiceに投稿するための手続き -(define-method post-voice ((mixi-instance <mixi-token>) -(voice <string>)) -(define (post-id response) -(cdr (assoc "id" (parse-json-string response)))) -(let ((post-status (http-compose-query #f `((status ,voice)))) -(authorization-key (string-append "OAuth " -(access-token-of mixi-instance)))) -(wrap-http/debug (http-post "api.mixi-platform.com" -"/2/voice/statuses/update" -post-status -:content-type "application/x-www-form-urlencoded" -:Authorization authorization-key) -post-id -#f))) -;;; OAuth tokenの更新 -(define-method update-access-token! ((mixi-instance <mixi-token>)) -(define (token-update! response) -(update-token! response mixi-instance)) -(wrap-http/debug (http-post "secure.mixi-platform.com" -"/2/token" -`(("grant_type" "refresh_token") -("client_id" ,(consumer-key-of mixi-instance)) -("client_secret" ,(consumer-secret-of mixi-instance)) -("refresh_token" ,(refresh-token-of mixi-instance))) -:secure #t) -token-update! -#f)) -;;; 投稿の削除 -(define-method delete-voice ((mixi-instance <mixi-token>) -(id <string>)) -(let ((authorization-key (string-append "OAuth " -(access-token-of mixi-instance))) -(uri (string-append "/2/voice/statuses/" -id))) -(wrap-http/debug (http-delete "api.mixi-platform.com" -uri -:Authorization authorization-key) -(lambda (response) #t) -#f))) -;;; Voice一覧の取得 -(define-method friend-voices ((mixi-instance <mixi-token>)) -(wrap-http/debug (http-get "api.mixi-platform.com" -`("/2/voice/statuses/friends_timeline/" -(oauth_token ,(access-token-of mixi-instance)) -(trim_user "1") -(attach_photo "1"))) -(lambda (response) (parse-json-string response)) -#f)) -- -
- ソースコードを適当な名前で保存します (たとえば「foo.scm」とか)。その後、loadしてください: -
- --gosh> (load "foo") -- -
- 参考ページを参考にしてください。 -
- -- 参考ページを参考にして、次の URL にアクセスしてください: -
- --- --https://mixi.jp/connect_authorize.pl?client_id=<コンシューマキー>&response_type=code&scope=r_voice%20w_voice&display=pc -
-
- [同意する]ボタンをクリックすると、次の URL のページにリダイレクトします: -
- -- -- -
- 上の「<英数字>」の部分が Authorization Code です。 -
- -- 次のようにしてコードを実行してください: -
- --gosh> (define *mixi-obj* -(make <mixi-token> -:consumer-key "コンシューマーキー" -:consumer-secret "コンシューマーシークレット" -:authorization-code "authorization code")) -*mixi-obj* -gosh> (acquire-access-token! *mixi-obj*) -#<<mixi-token> x1011521e0> -- -
- acquire-access-token! 手続きは、リフレッシュトークン・アクセストークンを取得し、 *mixi-obj* を上書きします。 -
- -- アクセストークンを取得してから、次のようにして投稿してください: -
- --gosh> (post-voice *mixi-obj* "今日はゆっくりと、だらだら過ごすのだ!") -"4ncdm68fwm56j-20110619113448" -- -
- post-voice 手続きは成功すると、投稿したボイスの ID を戻り値としてます。 -
- -- なお、 取得したアクセストークンの有効期限は 15 分と短いため、期限が切れた場合にはアクセストークンを再取得する必要があります。その場合には、update-access-token!手続きを使えば再取得してくれます: -
- --gosh> (define (wrapper-post-voice mixi-instance voice) -(let1 result (post-voice mixi-instance voice) -(if result -result -(post-voice (update-access-token! mixi-instance) voice)))) -wrapper-post-voice -gosh> (wrapper-post-voice *mixi-obj* "test") -- -
- 実行結果はこんな感じです: -
- - - -- 次のようにすると、 Voice を削除できます。 Voice の ID が必要です。 -
- --gosh> (delete-voice *mixi-obj* "4ncdm68fwm56j-20110619114011") -#t -- -
- 成功すると、#tが戻って来ます。失敗すると#fが戻って来ます。#fが戻ってくるときは、「(update-access-token! *mixi-obj*)」をしてください。 -
- -- 次のようにすると、自分と友人を含めた Voice の一覧を取得します。 -
- --gosh> (friend-voices *mixi-obj*) -- -
- 勝手に公開するのもどうかと思うので、実行結果は省略します。成功すると、#tが戻って来ます。失敗すると#fが戻って来ます。#fが戻ってくるときは、「(update-access-token! *mixi-obj*)」をしてください。 -
- -- Twitter から Runkeeper のデータを取得するだけですね。 -
-- 「iPhoneたっぷり2回充電 液晶で残量表示するリンケージ Infinity リチウムポリマー内臓 AC充電器 – 情報考学 Passion For The Future」で紹介されていた、これがほしいです: -
- -- 最近は iPhone のバッテリーの減りが早いので、こういうのがあるとうれしいんです。 -
-- King Solomon’s Minesを読了しました。思えば長い道のりでしたが、なんとかなりました。引用は疲れ果てているので、明日。 -
--- --
-- - でも周囲がやめろ、と言えば言うほど反対に行くっていう、あつい心の持ち主だからね、ダルビッシュは。意気に感じるというか。これはスポーツの世界のいいところだ。政治、音楽の世界では意気に感じることなんてまずない。でもスポーツ界にはなくてはならないものだし、これはもう男だけに通じるものなんだ。(江夏豊 on ダルビッシュ) -
-
-Sports Graphic Number (スポーツ・グラフィック ナンバー) 2009年 12/24号 [雑誌] -
- --- --
- -- - 賞金王というのがいったい何なのか、よくわからないんです。アメリカの試合に出られるとか、凄いことなのはわかるんですけど、現実感がないというか。プロになるにしても、高校を卒業してテストを受けて、段階を踏んでいくものとばかり思っていました。うちは普通のサラリーマンの家庭だし、主人も私も普通の家族で生まれ育って、遼が特別な星の下に生まれたなんて思ったこともないんです。 (石川遼の母) -
--
- -- - あれから主人は、遼が掲げた夢を手伝うなら本気で取り組もうと思ったんでしょうね。今思えば主人を責めたことは悪かったなと思います。それまでは残業続きで朝早く夜も遅かった人が、定時に帰り車で遼のいる練習場に向かうようになった。仕事を捨てたというわけではないんですけど、仕事を減らして、遼に重点を変えたのかな、と。当時はあまり気にしてはいなかったんですけど、今思うと、普通はそこまではできないですよね。 (石川遼の母) -
--
- -- - 子供が国会中継の首相演説を見て、将来、総理大臣になりたいというようなものです。そのときは、絶対に無理だと思いましたよ。今でも、日本人が優勝するのは、99.9% 無理だと思う。だけど・・・子供の夢に対して、そんなの無理だという親はいないんじゃないですか。じゃあ頑張ろうなと。真剣に向き合おう、と。 (石川遼の父) -
--
-- - 幼い遼がマスターズで勝ちたいと言った。僕は朝の5時から車のエンジンをかけて、寒かろうが、雨が降ろうが、子供をゴルフに引っ張っていく。周囲からは、あの家族バカじゃないの?異様だよね、と思われたでしょう。でも、やってる本人が充実していればいいんじゃないですか。無理だと思っても、やってみなければわからない。たとえ失敗しても、衛生堂々と戦ってその場でぶっ倒れた方が清々しい。勝つことが目的じゃない。戦うことが目的なんだ。それが男の人生なんだと。僕は遼にゴルフは教えてませんが、どんなにつらくても自分の立てた目標に責任を持って生きていくんだ、ということは教えたかもしれない・・・まぁ、『老人と海』の世界なのかもしれませんが。 (石川遼の父) -
-
-Sports Graphic Number (スポーツ・グラフィック ナンバー) 2009年 12/10号 [雑誌] -
- --
-Sports Graphic Number (スポーツ・グラフィック ナンバー) 2008年 6/5号 [雑誌] -
- -- ここ2ヶ月ほどひどい生活をしていたのですが、頑張って顔を出しました!id:higeponさん発案のコードバトンに参加していたので、それの発表があるんですよ♪(ちなみにコードバトン参加時の記事は「Scheme Code batonに参加しました」です) -
- -- すでに youtube などでアップロードされていました: -
- - - - - -- 二つ目の2:40~3:10ぐらいです。 -
- -- とりあえず参加はしてみたものの、マクロとかよくわかっていないし、レベル高すぎました。でも、人のコードを読むことで勉強になるものだということを体験しました。いい経験でした。マクロの使い方覚えて、もう一度コードバトンのコードを読み返してみます! -
- --
- -- 懇親会、色々な人とお話しできて良かったです。私、飲み会だとあまり席を移動しないので、立食だと人がそれなりに流れていくので、たくさんの方とお話しできてうれしかったです。 -
- -- 無理して参加して良かったです。 -
-- 結構はまってしまったので、書いておきます。 -
- -- Snow Leopardを用いてLatexを使いたい人。texソースはUTF8な人。 -
- --JIS X0212 for pTeXから「Drag & Drop pTeX」をダウンロードしてきます。ダウンロードしたら、 -
- - - -- from kazu634 -
- -- pTexをアップリケーションフォルダにコピーします。コピー後、pTexをダブルクリックし、起動してください。 -
- -- platexコマンドを実行します。ここで注意が必要なのは、texのソースがutf8の場合、オプションをきちんと使用しないと文字化けするということです。 -
- --~/publish/default/pdf on kazu634 [399] $: platex --kanji=utf8 2009年08月の家計簿.tex -This is pTeX, Version 3.141592-p3.1.10 (utf8.sjis) (Web2C 7.5.4) -(./2009蟷#08譛医螳#險育##.tex -pLaTeX2e <2006/11/10>+ (based on LaTeX2e <2003/12/01> patch level ) -(/Applications/pTeX.app/teTeX/share/texmf/ptex/platex/jsclasses/jsarticle.cls -Document Class: jsarticle 2009/02/22 okumura -) (/Applications/pTeX.app/teTeX/share/texmf/ptex/platex/misc/otf/otf.sty -(/Applications/pTeX.app/teTeX/share/texmf/ptex/platex/misc/otf/ajmacros.sty)) -(/Applications/pTeX.app/teTeX/share/texmf/ptex/platex/misc/otf/mlutf.sty) -(/Applications/pTeX.app/teTeX/share/texmf/ptex/platex/misc/otf/mlcid.sty) -(/Applications/pTeX.app/teTeX/share/texmf-dist/tex/latex/graphics/graphicx.sty -(/Applications/pTeX.app/teTeX/share/texmf-dist/tex/latex/graphics/keyval.sty) -(/Applications/pTeX.app/teTeX/share/texmf/tex/latex/graphics/dvipdfmx-contrib-l -atex/graphics.sty -(/Applications/pTeX.app/teTeX/share/texmf-dist/tex/latex/graphics/trig.sty) -(/Applications/pTeX.app/teTeX/share/texmf-dist/tex/latex/graphics/graphics.cfg) -(/Applications/pTeX.app/teTeX/share/texmf-dist/tex/latex/dvipdfm/dvipdfm.def))) -(/Applications/pTeX.app/teTeX/share/texmf-dist/tex/latex/hyperref/hyperref.sty -(/Applications/pTeX.app/teTeX/share/texmf-dist/tex/latex/hyperref/pd1enc.def) -(/Applications/pTeX.app/teTeX/share/texmf-dist/tex/latex/hyperref/hyperref.cfg) -Implicit mode ON; LaTeX internals redefined -(/Applications/pTeX.app/teTeX/share/texmf/ptex/latex/url/url.sty)) -*hyperref using driver hdvipdfm* -(/Applications/pTeX.app/teTeX/share/texmf-dist/tex/latex/hyperref/hdvipdfm.def) -(/Applications/pTeX.app/teTeX/share/texmf-dist/tex/latex/tools/tabularx.sty -(/Applications/pTeX.app/teTeX/share/texmf-dist/tex/latex/tools/array.sty)) -(/Applications/pTeX.app/teTeX/share/texmf-dist/tex/latex/float/float.sty) -(/Applications/pTeX.app/teTeX/share/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty) -No file 2009蟷#08譛医螳#險育##.aux. -(/Applications/pTeX.app/teTeX/share/texmf-dist/tex/latex/hyperref/nameref.sty) -[1] (./2009蟷#08譛医螳#險育##.aux) ) -Output written on 2009蟷#08譛医螳#險育##.dvi (1 page, 4372 bytes). -Transcript written on 2009蟷#08譛医螳#險育##.log. -~/publish/default/pdf on kazu634 [400] $: ls -2009年03月の家計簿.pdf 2009年08月の家計簿.pdf Git入門.tex -2009年04月の家計簿.pdf 2009年08月の家計簿.tex Picture.bb -2009年05月の家計簿.pdf 2009年2月の家計簿.pdf Picture.png -2009年06月の家計簿.pdf 2009年7月の家計簿.pdf q.log -2009年08月の家計簿.aux Account(200902).pdf test.aux -2009年08月の家計簿.dvi Debian Setting.pdf test.log -2009年08月の家計簿.log Emacs Lisp Idioms.pdf test.tex -2009年08月の家計簿.out Git入門.pdf 詫び状.pdf -~/publish/default/pdf on kazu634 [401] $: dvipdfmx 2009年08月の家計簿.dvi -2009年08月の家計簿.dvi -> 2009年08月の家計簿.pdf -[1] -25317 bytes written -- -
- ターミナル上は文字化けしていますが、作成されたdviやpdfは文字化けしていませんでした。 -
- -- alias設定をしておくと簡単です: -
- --alias platex='platex --kanji=utf8' --
-- -- 「悪い環境、困惑、怒りが私の闘争心をかき立てる。ハードなシチュエーションが私を強くする。自分が何をしたいかはっきりわかっているから、コーチとしてのモチベーションを落とさず走り続けることができる」(ニコライ・モロゾフ) -
-
-- -- 「スケーターを育て、結果を出し、いい形で第二の人生に送り出してやることが私の役目。先ほども言ったがスケーターとしての人生は短い。これまでに4人のオリンピックメダリストを育てたが、みな良い人生を送っている。それは勝ち得た成績のおかげに他ならない」(ニコライ・モロゾフ) -
-
-- -- 「Jリーグの物差しではなく、世界の物差しでサッカーを見ろ」(オシム) -
-
-- -- 「積極的なミスはいいんだ」(岡田監督) -
-
-Sports Graphic Number ( スポーツ・グラフィック ナンバー ) 2010年 2/18号 [雑誌] -
- -- 自宅で勉強できるようにSQLについて調べる調べる。 -
- --- -- sudo /opt/local/share/mysql5/mysql/mysql.server start -
- --MacPortsを使ってMacにMySQLをインストール – 佐藤伸吾%28akio0911%29のgeek気取り日記 -
-
-- -- mysql> show databases; -
- - -
- これをしてから「use データベース名」をすればデータベースを使えるようになるよ。ここから容易に推測できたんだけど、テーブル名を調べるのは「show tables」だった。 -
- --- -- CREATE TABLE Customer -
- -- (SID integer, -
- -- Last_Name varchar(30), -
- -- First_Name varchar(30), -
- -- PRIMARY KEY (SID) -
- -- ); -
- --SQL 主キー -
-
- SQLでテーブルを生成するPerlスクリプトを作っている。うでも、こったことをしていないので単純なデータベースになりそう。こんな感じ。 -
- --use strict; -use warnings; -# テーブルの名前 -my $t_name = "OFFICE"; -# テーブルの作成 -print ("CREATE TABLE ", $t_name, "\n"); -print ("(\n"); -# == ここから属性名の設定 == -print (" office_code INT(5),\n"); -print (" office_name CHAR(9)\n"); -# == ここまで属性名の設定 == -print (");"); -print ("\n"); -# 適当に変更させたいものを列挙させた配列 -my @array = ("Tokyo", "Osaka", "Yokohama", "Sendai", "Fukuoka"); -# 面倒くさいのでインクリメントする変数 -my $i = 1; -foreach (@array) { -print ("INSERT INTO ", $t_name); -print ("VALUES ("); -# == ここからvalueの追加 -print ("00", $i, ", '", $_, "'"); -# == ここまでvalueの追加 -print (");\n"); -$i++; -} -- -
- Perlの配列は -
- --@array = (1, 2, 3, 4, 5); -- -
- でしたね。「{}」だと勘違いした。 -
-- 『プログラミングGauche』の勉強を再開。気になった部分だけ抜き書き -
- --gosh> (string? "aaa") -#t -gosh> (define str "aaa") -str -gosh> str -"aaa" -gosh> (string? str) -#t -gosh> (string-length str) -3 -gosh> (string-ref str 1) -#\a -- -
- 正規表現は「#/正規表現/」という形式で表現する。正規表現のパターンに文字列がマッチするかどうかを調べるためにはrxmatch手続きを用いる。 -
- --gosh> (rxmatch #/^a/ "abc") -#<<regmatch> x3c37c> -- -
- 戻り値はマッチした情報を持つオブジェクトを返してくるよ。この戻り値を活用して -
- -- を取得できる。 -
- --gosh> (define m (rxmatch #/bc/ "abcd")) -m -gosh> m -#<<regmatch> x3c3f60> -gosh> (rxmatch-substring m) -"bc" -gosh> (rxmatch-before m) -"a" -gosh> (rxmatch-after m) -"d" -- -
- このマッチオブジェクトからマッチした文字列を呼び出す処理はよくあるから、シュガーシンタックスが用意されているよ。 -
- --gosh> (m) -"bc" -gosh> (m 'before) -"a" -gosh> (m 'after) -"d" -- -
- こんな風な感じ。 -
--C言語ポインタ完全制覇 (標準プログラマーズライブラリ) -
- -- 今日の「プロフェッショナルの流儀」を見ていて、茂木健一郎が「落語とかではなくて、日常生活で初めて綺麗事を聞きました」というようなことを言っていた。調べてみると、 -
- --- -- 手ぎわよく美しく仕上げること。また、よごさないできれいにすますこと。 -
-
- だそうです。プロフェッショナルの道具を紹介していたときにすし職人の人が自分の設計した道具についてのコメントが「客が目にする道具は綺麗事でなければならない」だった。 -
-- やっぱり野菜を始めにきちんと切ってから炒めるべきだよね。やっぱり。これからはきちんと準備してから炒めようと思う。とりあえず現在は炒め終わって、ルーを炒めるまでの間煮詰めているところ。 -
- --
- from spunmunkey -
--Blogger Alliance | 404 Not Foundでブログを公開していましたが、やはり技術者ははてなが多いのでこっちを試してみようと思いました。よろしく。 -
-- 今日は焼き肉食べました♪ -
- --
- 店名 - | - --栢尾 - | -
---|---|
- 住所 - | - -- 神奈川県 横浜市戸塚区 上倉田町 508 - | -
- 電話番号 - | - -- 045-881-3009 - | -
- 今度の三連休に仙台に帰省しようと考え中。それに自転車を持って行こうかなって考えているところ。自転車を公共の交通機関で運ぶには、輪行袋というやつが必要になるので、さっそくAmazonで購入してみました。 -
- -- 使ってみた感想を今度アップしますね。 -
- -- gaucheの勉強は文字列とか入出力の勉強をする前にちょっと寄り道。とりあえず手続き型言語の勉強をして、ソフトウェア開発試験対策とするつもり。Perlで色々やってたらヘロンの公式が出てきたから、それを作ってみるよ。 -
- -- 普通のプログラミング言語のローカル変数がLispではlambdaの仮引数に相当する。それで与えられた引数から、計算用の一時的な変数を用意する必要があるときとかはletを使うと幸せになれる…のだと思う。自分の認識では。ヘロンの公式の場合、 -
- --
- -
- -- ただし -
- -- -
- -- とする。 -
- -- このsをlet使って表現してあげれば楽ちんに書けるようになるはず(もしもletを使わなければ、sが出てくるたびに「(/ (+ a b c) 2)」を書かなければいけなくなる)。 -
- --gosh> (define (heron a b c) -(let ((s (/ (+ a b c) 2))) -(sqrt (* s (- s a) (- s b) (- s c))))) -heron -gosh> (heron 3 4 5) -6.0 -- -
- これで幸せになれたと思う。 -
-- 疲れたーもちろん、Joseph Conradの部分だけ。 -
- - --- -- 27. While many people are pleasure junkies and avoid pain and discomfort at all costs, successful people understand the value and benefits of working through the tough stuff that most would avoid. -
- --Fifty Habits of Highly Successful People – Stepcase Lifehack -
-
- 人がいやがる仕事の利益に気づかなければいけません、というのはその通りだと思ったり。 -
- --- -- 44. They don’t rationalise failure. While many are talking about their age, their sore back, their lack of time, their poor genetics, their ‘bad luck’, their nasty boss and their lack of opportunities (all good reasons to fail), they are finding a way to succeed despite all their challenges. -
- --Fifty Habits of Highly Successful People – Stepcase Lifehack -
-
- 「そんなの関係ねぇ!」はこういうのが本来の使い方じゃないかと思う。 -
-- 今日は会社のトップ近くの人の前で二年間の成果を発表してきました。いやーパワポを使った発表をしたことがなかったので、ちょっと大変でした。まぁ、何事もなく終了。 -
- -- 打ち上げは会社近くのお店に行ってきました。鍋がおいしかったです。 -
- -- 店名 - | - --気まぐれ厨房「ごっつ」 大森店 - | -
---|---|
- 住所 - | - -- 東京都品川区南大井6-25-12 日建ビルB1 - | -
- 電話番号 - | - -- 03-6404-0052 - | -
- スーツを着て、びしっと決めて玄関に向かう。靴箱をみると何かが足りない。あっ。革靴、送っちゃってるよ。。。 -
- -- というわけで革靴を買いに行くことになりましたとさ。ちょっぴり悲しかったです。はい。 -
-- 「 Emacs内でのプロセス制御について – 武蔵の日記」でも書きましたが、Emacsのプロセスには同期と非同期の二種類があります。これまでは同期プロセスを用いて候補を取得していましたが、非同期プロセスを用いて候補を取得してみます。 -
- -- こんな風に書いてありました: -
- --- --
- - -- - candidates (candidates-in-buffer 要素を指定しなかった場合、必須) -
- -- - source から候補を取得するための方法を指定する。この要素に指定できるのは、変数、引数なしの関数、あるいは実際の候補のリストである。リストは文字列のリストでなければならず、そのため必要であれば候補を文字列に変換するのは source の責任である。仮に候補が非同期で取得されなければならない場合(例えばコマンド終了までに時間がかかる外部コマンドで取得するような場合)には、その関数は外部コマンドを非同期で実行し、 the associated process object を戻す必要がある。Anything はそのプロセスを管理する(そのプロセスから出力を受け取り、必要であればそのプロセスを停止する、など)。プロセスは現在のパターンにマッチする候補を返さなければならない(anything-pattern を参照すること)。注意: 非同期の source からの結果は anything-sources 中の位置に関係なく、 anything のバッファーの最後に表示される。 -
-
-
- -- candidateで指定した関数を、パターンが入力されるたびに呼び出します。そのため呼び出す外部スクリプトは引数を受け取れるようにし、そこで絞り込む必要があります。 -
- -- 「2009-10-16 – 武蔵の日記」で用いた flickr に登録した画像の一覧取得スクリプトを再利用します。ただし前述の引数を受け取る処理を追加します: -
- --#!/usr/bin/env perl -# === Libraries === -use strict; -use warnings; -use Perl6::Say; -use YAML; -use utf8; -use Encode; -use WebService::Simple; -use XML::Simple; -use YAML::Syck; -# === Main part === -my $arg = shift || "."; -my $flickr = WebService::Simple->new( -base_url => "http://api.flickr.com/services/rest/?", -param => { -api_key => 'f94ab2327e72d52859d7fe28520d482f', -method => 'flickr.photos.search', -machine_tag_mode => 'any', -} -); -my $response = $flickr->get( { user_id => '42332031@N02', } ); -# (1) 取得したXMLの表示 -# say YAML::Syck::Dump( XMLin ($response->content)); -my $temp = XMLin($response->content); -foreach my $i (sort {$b <=> $a} keys %{$temp->{photos}->{photo}}) { -my $title = encode('utf8', $temp->{photos}->{photo}->{$i}->{title}); -my $farm = $temp->{photos}->{photo}->{$i}->{farm}; -my $server = $temp->{photos}->{photo}->{$i}->{server}; -my $secret = $temp->{photos}->{photo}->{$i}->{secret}; -if ($title =~ /$arg/i) { -print "$title\t"; -say "<a title=\"$title\" href=\"http://flickr.com/photos/42332031\@N02/$i/\"><img src=\"http://farm$farm.static.flickr.com/$server/$i\_$secret.jpg\" /></a>"; -} -} -- -
- そして次のような source を設定します。ここで注意すべきは、 candidate の部分で start-process を使用しているところです: -
- --(defvar anything-c-source-flickr -'((name . "Flickr Photos") -(candidates . (lambda () -(start-process "Flickr" nil -"flickr" -anything-pattern))) -(candidate-transformer . (lambda (candidates) -(mapcar -(function (lambda(arg) -(apply 'cons (split-string arg "\t")))) -candidates))) -(action . (("Insert" . (lambda (candidate) -(insert "<center>\n") -(insert -(format "%s\n" candidate)) -(insert "</center>\n"))))))) -- -
- ちなみに同期プロセスを使用する場合は、「2009-10-16 – 武蔵の日記」で紹介したようにこんな感じです: -
- --(setq anything-c-source-flickr -'((name . "Flickr") -(candidates . (lambda () -(delete "" -(split-string -(shell-command-to-string "flickr") -"\n")))) -(candidate-transformer . (lambda (candidates) -(mapcar -(function (lambda(arg) -(apply 'cons (split-string arg "\t")))) -candidates))) -(action . (("Insert" . insert))))) -- -
- ランニングマシーンで走りながらテレビを見ていたら、ゼルダがDSで出るんじゃん!これは欲しい!!! -
- -- 下の例を考えてみる。 -
- --#include <stdio.h> -#define ARRAY_SIZE 10 -char array[ARRAY_SIZE + 1] = "0123456789"; -int main(){ -int index; -printf ("&array[index] (array+index) array[index]\n"); -for (index = ;index < ARRAY_SIZE;index++) { -printf ("0x%-10p 0x%-10p 0x%x\n", -&array[index], (array + index), array[index]); -} -return(); -} -- -
- この「(array + index)」の部分は自動的に「&array[0]」として解釈される。配列の先頭アドレスに足し算をすると、足した数分だけ要素を移動する。というわけで、「&array[index]」と「(array + index)」は等しい値 = ポインタになる。 -
- --
-★★★ 三ツ星キッチン ★★★主催の「リストランテ」を明日観に行きます。 -
- -- 後輩の子にチケットゲットしてもらいました。本当にありがとう!!! -
- --
- -- 今年ももうすぐ終わりですね。最近は先輩から久しぶりに連絡があったと思ったら、結婚の連絡でした。 -
- -- 自分の近況としては、うちの会社2年目には業務成果報告書と発表の提出を義務づけていて、1月に報告書の提出、3月に発表です。面倒くさいのですが、でもやらないといけないからな。ちょっとその対応に追われています。まぁ、それだけじゃなくて英語版のマニュアル翻訳とか、案件対応とか、さらに細々とした雑用に追われています。いやー、なんだろう、かなり忙しいのですが。。。 -
- -- 下の画像はこんな風になりたいという願望がこもっています: -
- --
- from The Flooz -
-- 後は提案開発演習で研修期間が終了。自分はリーダーとして引っ張っていっているんだけど、やっぱりプログラミングの習熟度でかなりのばらつきがあるのだが。。。それでも射撃しつつ前進…ということらしい。いや、なんか大変なんですけどね。 -
- --
- from rephlektiv -
-- 今日は三つ星キッチンの「リストランテ」を観に行った。いやー脚本とか演出とかレベルが高いミュージカルだから、ぐいぐい引き込まれて、いつの間にか終わり。心動かされる台詞が多いから、満足感高い。 -
- -- チケットを確保してくれた後輩にも会えたから、うれしかったりする。 -
- -- 帰りには友達とご飯を食べに行った -
- -- 店名 - | - --呉さんの厨房 - | -
---|---|
- 住所 - | - -- 東京都新宿区新宿1丁目19-6ISビル - | -
- 電話番号 - | - -- 03-3359-8789 - | -
- ちょっと辛かったけど、おいしかった。友達は辛いのが好きらしく、おいしそうに食べていた。 -
- -- リフレッシュした金曜日の夜だった。 -
-- 今日は横浜へサイクリングへ行った。なかなか楽しく過ごせたよ。 -
- --
-
- --
-
- 戸塚の有隣堂で発見。カップ麺のふたを押さえるためにつくられた製品です! -
- --
- どうやら勤務している寮で寮生面談をしなければならないらしい。修論の追い込みの時期と思いっきりかぶっているのだけれど。。。 -
-- 『STATIONERY HACKS!』で紹介されていた日付スタンプが便利でした♪ -
- -- このような形でスケジュール帳に、リンクを張ることが可能になります: -
- --
- これって、なにげに便利です。すごい! -
- --【送料490円 2900円以上で送料無料】【平日即日発送】シャイニー/セルフィンキングスタンプ日付印5連/S-400 -
- -- nginxでフロントエンドのプロキシーサーバと、バックエンドのウェブサーバを構成しています。今回、バックエンドのウェブサーバのログを確認したら、クライアントのIPアドレスが「127.0.0.1」となっており、クライアントのIPアドレスになっていないことに気づきました。そこでバックエンドサーバのアクセスログにクライアントのIPアドレスを記録する方法を調べてみました。 -
- -- フロントエンドのプロキシーサーバ側の設定で、X-Real-IPを設定している必要があります。nginx.confなどの設定ファイルで次のように設定しておきます。私はフロントエンドのnginxの設定部分に記載しています: -
- --proxy_set_header X-Real-IP $remote_addr; -- -
- 調査の結果、HttpRealIpModuleがこの目的を満たすことがわかりました。HttpRealIpModuleとは、 -
- --- -- This module allows to change the client’s IP address to value from request header (e. g. X-Real-IP or X-Forwarded-For). -
- - -
- プロキシーサーバのIPアドレスじゃなくて、X-Real-IPとか、X-Forwarded-Forを参照して、クライアントのIPアドレスとして扱ってくれるようになります。 -
- -- まずは http_real_ipモジュール が使用できるかどうかを確認します。次のコマンドを実行して、 -
- --% nginx -V -nginx: nginx version: nginx/1..5 -nginx: TLS SNI support enabled -nginx: configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module --add-module=/build/buildd/nginx-1.0.5/debian/modules/nginx-echo --add-module=/build/buildd/nginx-1.0.5/debian/modules/nginx-upstream-fair -- -
- configure argumentsの部分に「–with-http_realip_module」があれば、使用可能です。 -
- -- バックエンド側に渡されてくるプロキシーサーバのIPアドレスは「127.0.0.1」で固定のため、バックエンド側の設定を実施しているnginx.confなどの設定ファイルで次のように設定します: -
- --set_real_ip_from 127.0.0.1; -real_ip_header X-Real-IP; -- -
- 追記したら、設定を反映させましょう: -
- -
-% sudo service nginx reload
-
-
-- 設定ファイルを変更する前: -
- --127...1 blog.kazu634.com - [27/Aug/2011:22:52:03 +0900] "GET /wp-content/uploads/2011/08/slooProImg_20110815194429.jpg HTTP/1.0" 200 100647 "http://blog.kazu634.com/2011/08/15/%e5%b9%b3%e6%b3%89%e3%81%b8%e8%87%aa%e8%bb%a2%e8%bb%8a%e3%83%84%e3%83%bc%e3%83%aa%e3%83%b3%e3%82%b0/" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1" "-" -127...1 blog.kazu634.com - [27/Aug/2011:22:52:04 +0900] "GET /2011/08/13/%e5%a4%8f%e6%9c%9f%e4%bc%91%e6%9a%87%e3%81%ab%e8%a1%8c%e3%81%a3%e3%81%a6%e3%81%8d%e3%81%be%e3%81%99/ HTTP/1.0" 200 35155 "-" "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)" "-" -127...1 blog.kazu634.com - [27/Aug/2011:22:58:46 +0900] "POST /wp-cron.php?doing_wp_cron HTTP/1.0" 499 "-" "WordPress/3.0.1; http://www3232u.sakura.ne.jp/~kazu634" "-" -- -
- 設定ファイルを変更した後: -
- --119.63.196.125 - - [27/Aug/2011:23:47:41 +0900] "GET /2010/09/16/ハロウィーンですね/ HTTP/1.0" 200 35430 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"220.247.23.220 - - [27/Aug/2011:23:51:44 +0900] "GET /feed/ HTTP/1.0" 200 65789 "-" "Apple-PubSub/65.21" -66.249.69.54 - - [27/Aug/2011:23:56:33 +0900] "GET /page/10/ HTTP/1.0" 200 50757 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" -- -
- ちなみに私の設定ファイルはこんな感じにしています: -
- --% cat nginx.conf -user www-data; -worker_processes 2; -error_log /var/log/nginx/error.log; -pid /var/run/nginx.pid; -events { -worker_connections 1024; - # multi_accept on; -} -http { -include /etc/nginx/mime.types; -access_log /var/log/nginx/access.log; -sendfile on; - #tcp_nopush on; - #keepalive_timeout 0; -keepalive_timeout 10; -tcp_nodelay on; -gzip on; -gzip_disable "MSIE [1-6]\.(?!.*SV1)"; -proxy_cache_path /var/www/proxy/nginx_cache levels=1:2 keys_zone=czone:4m max_size=50m inactive=120m; -proxy_temp_path /var/www/proxy/nginx_tmp; -proxy_redirect off; -proxy_set_header Host $host; -proxy_set_header X-Real-IP $remote_addr; -proxy_set_header X-Forwarded-Host $host; -proxy_set_header X-Forwarded-Server $host; -proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; -include /etc/nginx/conf.d/*.conf; -include /etc/nginx/sites-enabled/*; -} -# mail { -# # See sample authentication script at: -# # http://wiki.nginx.org/NginxImapAuthenticateWithApachePhpScript -# -# # auth_http localhost/auth.php; -# # pop3_capabilities "TOP" "USER"; -# # imap_capabilities "IMAP4rev1" "UIDPLUS"; -# -# server { -# listen localhost:110; -# protocol pop3; -# proxy on; -# } -# -# server { -# listen localhost:143; -# protocol imap; -# proxy on; -# } -# } -- -
-% cat wordpress -# You may add here your -# server { -# ... -# } -# statements for each of your virtual hosts -server { -listen 8001; -server_name _; -set_real_ip_from 127...1; -real_ip_header X-Real-IP; -access_log /var/log/nginx/blog.access.log; -error_log /var/log/nginx/blog.error.log; -location / { -root /var/www/nginx-default/domain/wordpress; -index index.php; -if (-f $request_filename) { -expires 30d; -break; -} -if (!-e $request_filename) { -rewrite ^.+?(wp-.*) $1 last; -rewrite ^.+?(.*\.php)$ $1 last; -rewrite ^ /index.php last; -} -} -location ~ \.php$ { -include /etc/nginx/fastcgi_params; -fastcgi_pass 127...1:9000; -fastcgi_index index.php; -fastcgi_param SCRIPT_FILENAME /var/www/nginx-default/domain/wordpress$fastcgi_script_name; -} -} -upstream backend { -ip_hash; -server 127...1:8001; -} -server { -listen 80; -server_name blog.kazu634.com; -access_log /var/log/nginx/front_proxy.access.log; -error_log /var/log/nginx/front_proxy.error.log; -location /wp-admin { proxy_pass http://backend; } -location /wp-login.php { proxy_pass http://backend; } -location / { -if ($http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" ) { -set $do_not_cache 1; -} -if ($http_user_agent ~* “2.\ 2MMP|240×320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800″) { -set $do_not_cache 1; -} -proxy_no_cache $do_not_cache; -proxy_cache_bypass $do_not_cache; -proxy_pass http://backend; -proxy_cache czone; -proxy_cache_key $scheme$proxy_host$uri$is_args$args; -proxy_cache_valid 200 10m; -proxy_redirect off; -proxy_set_header Host $host; -proxy_set_header X-Real-IP $remote_addr; -proxy_set_header X-Forwarded-Host $host; -proxy_set_header X-Forwarded-Server $host; -proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; -} -} -server { -listen 80; -server_name www3232u.sakura.ne.jp 59.106.177.26 localhost; -access_log /var/log/nginx/sakura.access.log; -error_log /var/log/nginx/sakura.error.log; -location /~kazu634/ { -rewrite ^.*/~kazu634(/.*) http://blog.kazu634.com$1; -} -location / { -return 404; -} -location /nginx_status { -stub_status on; -access_log off; -allow 127...1; -deny all; -} -} --
- Armsつながりで読んでみた。おもしろい。たぶん全巻そろっているだろうから、読破してやろう。 -
- --スプリガン (1) (少年サンデーコミックススペシャル) -
- -- こいつは消耗品であった。 -
- - -- 最近、サイフォン式コーヒーメーカーを購入しようと考えています。候補は「ハリオ モカ 3人用 MCA-3」です。ホームセンタームサシでも見てきたのですが、どうやら修論終わるまではこういうのをいじっている時間はなさそうだ。。。1月になったらかなぁ。 -
- -- ポーランド記法や逆ポーランド記法が簡単に理解できるようになるよ! -
-- Peter Simpleのしっぽが見えてきました。までたどり着きました。明日、遅くとも明後日には読み終わりそうです。やった。 -
- --Peter Simple, and The Three Cutters -
- -- 途中だけど。 -
- --use strict; -use warnings; -# 変数の宣言 -my $temp_isbn = ""; -my $_odd = ; -my $_even = ; -# 適当なisbn10を代入して、978をつける -$temp_isbn = '978' . '4582744176'; -print "isbn: " . $temp_isbn . "\n"; -# 一桁ずつばらして配列@fooに代入 -my @foo = split(//, $temp_isbn); -# 奇数の処理 -print 'Odd Number: '; -for (my $i = ; $i <= 12; $i = $i + 2){ -$_odd += $foo[$i]; -print $foo[$i] . " "; -} -print "\n"; -# 偶数の処理 -print 'Even Number: '; -for (my $i = 1; $i < 12; $i = $i + 2){ -$_even += $foo[$i]; -print $foo[$i] . " "; -} -print "\n"; --
- 大船で予備校の時の友達と会ってきました。いつの間にか結婚していました。。。知らなかった。。。かなり驚いてしまいました。子供も今年の6月に生まれるそうです。すごいなー -
- -- 久しぶりで、なんか楽しく時間を過ごせました♪ -
-- 昨日は恵比寿に行ったので、東京都写真美術館で行われていた展示を見てきました。森村泰昌の「なにものかへのレクイエム」です。森村さんはセルフポートレートという手法を用いて、名画・革命家・歴史的出来事などの写真を大胆に再解釈する手法をとる芸術家だそうです: -
- --- -- 彼は、世に良く知られた西洋の名画(エドゥアール・マネ、ルーカス・クラナッハ、ダンテ・ゲイブリエル・ロセッティ、レンブラント・ファン・レイン、レオナルド・ダ・ヴィンチ、フリーダ・カーロなど)になりきるにあたって、絵の構成や背景の物などに至るまで詳細なリサーチを重ね、ライティングやフェイスペインティング、合成やCGなども利用して人物配置、色調、光の位置などまで再現する。 -
- -- ただし、リサーチの過程で画家の文化的背景や絵に描かれた人物などを自分なりに解釈した結果、完全な再現でなく大胆な変更を加えることも多い。また西洋絵画の中の人物に扮するにしても、森村自身が黄色人種で日本人で男性だという事実は変えることができない。たとえばマネの『オランピア』を再現するに当たり、彼は白人の娼婦と黒人の召使の二人の女性両方に変身したが、これは絵画の中の人種同士の主従関係を際立たせた。また、絵の中央に横たわり男性の欲望の視線にさらされるはずの女性に扮することで、観客の視線を混乱させた。また、小道具の絹の敷物の代わりに日本の着物、猫の代わりに招き猫を置くなどしている。これはわざと日本ローカルのものに置き換えることによる笑いを誘う側面もあるが、一方でローカルの物を普遍性のある名画の中の物と等価にしてしまうことにもつながる。また、着物と招き猫という組み合わせから、日本のステレオタイプである芸者への連想も可能である。 -
- -- 彼はこのように、一枚の写真のなかに人種・民族・ジェンダーなどの問題、作家や美術に対する愛情、美術史の過去から現在に至る研究の積み重ね、画集などのコピーを通じてよく知っている作品のイメージに対する揺さぶりなどを提起している。また、世界的に知られたオリジナルの作品のイメージや、作品内の小道具を代用する大量生産のまがいものやローカルな産品を、彼自身の肉体が入り込む一枚の写真に統合することで互いの距離をゼロにしてしまっている。オリジナルとそのコピーが混在して消費されている現在を表現している作家といえる。 -
- - -
- 3階に行くと印象的だったのが、三島由紀夫に扮して割腹自殺の場面を演じている映像でした: -
- --
- 三島由紀夫に扮してあつく檄を投げかけているのですが、最後に聴衆の方へカメラが写ると、そこにはまったく誰も聞いていないことがあらわになります。現代の公園で人々が往来している様子だけが映ります。 -
- -- この様子がとても印象的でした。最近の政治への無関心みたいなものを伝えたかったのか?それとも、三島由紀夫の頃から政治への無関心は変わっていないと言いたいのか?考え始めると、むずかしいと思いました。 -
- --
-
-
- 気になる: -
- ---- 投稿者:佐藤琢磨 -
- -- 投稿日:2009/05/06 17:58:14 -
- -- いつもたくさんの応援をありがとうございます。 -
- -- 掲示板では「お久しぶり!」ですね。 -
- -- 皆さんは充実したGWを過ごされましたか? -
- -- 僕は変わらず元気ですが、言うまでもなくレースのない生活はとても寂しいです。 -
- -- 日々のトレーニングも続けてはいるものの、目標が明確でない状態で、 -
- -- モチベーションを維持し続けるのは生易しいことではないと実感しています。 -
- -- もちろん、いついかなる時にも備えて準備万端!でなくてはならないし、 -
- -- 今の自分にとってはそれが仕事ですから、精一杯がんばりますけどね!! -
- -- さて、レース復帰に向けての活動について、 -
- -- これまで皆さんに具体的なお話しをする機会はありませんでした。 -
- -- かと言って、今日ここで何かをお伝えできるわけではないのですが… -
- -- じつは今、ロンドン・ヒースロー空港から書き込んでいます。 -
- -- これからアメリカに飛びます。 -
- -- 僕の最大の目標は、もちろん、F1への復帰。それは絶対に変わりません。 -
- -- 年内の復帰も決してあきらめていないし、来シーズンに向けても全力で活動しています。 -
- -- しかし、だからと言ってこのまま全くレースをせずにずっと待ち続けるのも堪え難い。 -
- -- いろいろな角度から様々な道を探さなくてはいけないと考えています。 -
- -- 今回の渡米ですぐ何かが決まるわけではありません。 -
- -- ただ、これまで続いてきた話し合いを少しづつ形にして行かねばならないのも事実。 -
- -- 具体的にお話しできるときが来たら、きちんと皆さんにお伝えしますので、 -
- -- それまで、皆さんもどうか待っていてください。 -
- -- では、行ってきます! -
- - -
- 「asahi.com(朝日新聞社):佐藤琢磨インディ参戦へ – 宮田正和のF1シーン – 愛車」で書かれているように、佐藤琢磨がインディでレースに復帰することが決定しました。記事にはこんな風に書かれています: -
- --- -- 「レーシングドライバーとしてこれ以上待つことはできなかった…」マシンに乗って走ってこそのレーシングドライバー、そこに全ての真実があり、彼のステージがある。新しい世界に飛び込む希有のファイターを今、心からの拍手で送りたいと思う… -
- - -
- スーパーアグリでF1にチャレンジしていたんだけれど、F1から離脱することが決まったときには多くの人から悲しみの声が上がっていたっけ: -
- --- --
-- - Little team with a big heart. -
-- - 「自分のことだけを考えるなら、チームがつぶれたっていい。でも、一緒に頑張ってきたみんなが、明日から仕事を失うようなことだけは避けなきゃいけない。経営者としていちばん考えなきゃいけないのは、そこでしょ?」 -
-- - 「あまりに寂しい。F1は、小さなチームを必要としているのに。あんなに素晴らしい人たちが去っていくことになるなんて…悲しいのは、日本のファンだけじゃない」 -
-- - 「スーパーアグリの消滅は、F1に冷たい水を浴びせるもの」 -
-- - 「SAF1は、F1の一つのあり方を示したと思う。昔あった無数のチームと違って、大きな情熱を持って真剣に仕事をした。小さな資金で多くをもたらしたのに、残念だね」 -
-- - 何をしたいか、はっきりわかる。だから注目できるんだ。彼らは持てる力のすべてをレースに注いでいるから、チャンスが訪れたときにはすばらしい戦いを見せる。厳しい条件の中でチャンスは少なくとも、毎グランプリ目指していることはしっかりと伝わってくる。 -
-
- 佐藤琢磨には頑張ってほしいなー -
- - - - -- 『数学ガール (数学ガールシリーズ 1)』の作者さんのページを見ていたら、来年続編(?)かなにかを計画中らしい。気になる。 -
- -- それにしても、なんでうちの大学図書館にまで『数学ガール (数学ガールシリーズ 1)』が置いてあるのだろうか。かなり驚いてしまった。。。 -
- -- 追記: -
- -- Amazonのレビューでクオリティー高いのがあった。 -
- --- -- 「数学ガール」は出版前から結城さんのWebサイト上で読んでいました。 -
- -- ストーリー展開の秀逸さもさるところながら、読み終わって思うのが -
- -- 「教える事」「教わる事」のエッセンスがふんだんに盛り込まれていると言う点です。 -
- -- 「テトラちゃん」の様に自分の得意分野での考えを苦手分野に導入して「何故だろう」と感じる姿勢。 -
- -- 「僕」の様に初心者に対してまず「定義」を重視し、「おまじない」で済まさせずに基盤を確立させ、 -
- -- 「何もしない」よりも「何かした」事を認める姿勢。 -
- -- 「ミルカさん」の様に知識をひけらかす事無く、付かず離れずの絶妙な距離感での -
- -- 「新しい解法への誘い方」、 -
- -- 「僕」の弱点への確実な指摘を通じての「視点」の広げさせ方、 -
- -- そして「僕」が一旦挫折した解法に対して「これでも間違ってはいない」と示す実力と責任感。 -
- -- 「村木先生」の様に問題をその場で即答したミルカさんにひるまない、余裕を感じささせる応対の仕方。 -
- -- つまり、出来る生徒に対しての上手い切り返しの仕方。 -
- -- と言った具合にスキルが異なる者同士での相乗効果を考えたスキルアップについて色々と考えさせられました。 -
- -- 先輩から後輩への「教え方」 -
- -- 後輩から先輩への「教わり方」 -
- -- これらが数学がテーマの淡い恋物語の中に一緒に詰まっていて非常に内容の濃い本です。 -
- -- 文句なしの評価5です。 -
- - -
- ここの -
- --- -- 「村木先生」の様に問題をその場で即答したミルカさんにひるまない、余裕を感じささせる応対の仕方。 -
- -- つまり、出来る生徒に対しての上手い切り返しの仕方。 -
-
- この部分、自分は読めてなかった。 -
---- もし食料の輸入が止まったら…。そんな設定で日本の食糧自給率39%を実感してみようと、東北大の学生グループと同大生活協同組合が共催で、国内生産物だけで供給可能な1日1人2020キロカロリーの食事メニューを15、16の両日、仙台市の川内キャンパス食堂で提供する。ご飯とイモ中心のメニューは、昭和20年代後半のカロリー水準。学生らは「日本の食糧事情の危うさを体感してみたい」と話している。 -
- - -
- この前「あなたのクレジットカード番号に潜む規則性 – モスマン」を読んでいて、いつか実装しようと思っていたのだけれど、ついに完成。 -
- -- 基本的なアルゴリズムは -
- --- --
- -- - クレジットカード番号の後ろから数えて*1奇数桁だけを合計する。 -
-- - クレジットカード番号の後ろから数えて偶数桁を2倍して合計する。2倍して10以上になるときは9を引く。 -
-- - 1と2の数字を合計する -
-- 正しいカード番号ならこの合計が10で割り切れる。 -
- - -
- です。gaucheで順番に考えていきました。 -
- -- とりあえずカード番号は16桁だから、与えられた引数が16桁の数字かどうかを調べようと考えました。 -
- --(define (chkdigit number) -(if (16digit? number) -;; 16桁だったら処理を開始 -#f ;; 16桁じゃないから終了)) -- -
- gaucheだと16桁かどうかというのは、正規表現を使えばいいと考えたのでrxmatchを使います。 -
- --(define (16digit? number) -(if (rxmatch #/\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d/ (number->string number)) -#t -#f)) -- -
- これらはおそらくfoldとmapを使えばできる。 -
- --(fold + 奇数桁を集めたリスト) -(fold + (map (lambda (n) (* 2 n)) 偶数桁を集めたリスト)) -- -
- 与えられた16桁の数字をリストに変換しようと思ったので、この前Shiroさんに教えていただいた手続きをそのまま使います。 -
- --(define (number->list n) -(let loop ((n n) (r '())) -(if (< n 10) -(cons n r) -(loop (quotient n 10) (cons (modulo n 10) r))))) -- -
- これで数字をリストに変換できたので、奇数桁と偶数桁だけを取り出す部分を考えます。 -
- -- 奇数桁というのは、リストの要素数が偶数の時の(car リスト)の結果になります。偶数桁というのは、リストの要素数が奇数の時の(car list)の結果になります。それを一つのリストにすればいいので: -
- --(define (even_list source) -(cond -[(null? source) '()] -[(even? (length source)) (even_list (cdr source))] -[(odd? (length source)) (cons (car source) (even_list (cdr source)))])) -(define (odd_list source) -(cond -[(null? source) '()] -[(even? (length source)) (cons (car source) (odd_list (cdr source)))] -[(odd? (length source)) (odd_list (cdr source))])) -- -
- このような形になるかと思います。 -
- -- 奇数桁だけを合計するというのは、foldを使えばできそうです。 -
- --(define (proc_odd list) -(fold + (odd_list リスト))) -- -
- 「偶数桁を2倍して合計する。2倍して10以上になるときは9を引く」というのは、 -
- -- 足し合わせる部分はfoldを使えばできそうです: -
- --(define (proc_even list) -(fold + 偶数桁のそれぞれを2倍する。2倍して10以上になるときは9を引いたリスト) -- -
- 問題は「偶数桁のそれぞれを2倍する。2倍して10以上になるときは9を引く」の部分になります。この部分はmapを使えばいいはず。こんな感じで: -
- --gosh> (map -(lambda (n) -(if (<= 10 (* 2 n)) -(- (* 2 n) 9) ;; 10以上なら9を引く -(* 2 n))) ;; そうでなければ、2倍する -'(1 2 3 4 5)) ;; 処理対象のリスト -(2 4 6 8 1) -- -
- だから結局、 -
- --(define (proc_even list) -(fold + (map -(lambda (n) -(if (<= 10 (* 2 n)) -(- (* 2 n) 9) -(* 2 n))) -偶数桁のリスト))) -- -
- となります。 -
- -- ここまででだいぶ部品ができてきたので、それを一つにまとめます: -
- --(define (judge_card リスト) -(let ((temp -(+ (proc_odd リスト) (proc_even リスト)))) ;; ローカル変数tempに各桁の合計を代入 -(if (= (modulo temp 10) ) ;; tempが10で割り切れる? -#t ;; 割り切れたらカード番号は正しい -#f))) ;; そうでなければカード番号は不正 -- -
- 一番上位の手続きはchkdigitなので、それにこれまでの結果をまとめます。後、カード番号を逆順にするのも忘れずに: -
- --(define (chkdigit number) -(let ((temp (reverse (number->list number)))) -(if (16digit? number) -(judge_card temp) -(print "Card Number must be 16 digits.") -))) -(define (number->list n) -(let loop ((n n) (r '())) -(if (< n 10) -(cons n r) -(loop (quotient n 10) (cons (modulo n 10) r))))) -(define (16digit? number) -(if (rxmatch #/\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d/ (number->string number)) -#t -#f)) -(define (even_list source) -(cond -[(null? source) '()] -[(even? (length source)) (even_list (cdr source))] -[(odd? (length source)) (cons (car source) (even_list (cdr source)))])) -(define (odd_list source) -(cond -[(null? source) '()] -[(even? (length source)) (cons (car source) (odd_list (cdr source)))] -[(odd? (length source)) (odd_list (cdr source))])) -(define (proc_odd list) -(fold + (odd_list list))) -(define (proc_even list) -(fold + (map -(lambda (n) -(if (<= 10 (* 2 n)) -(- (* 2 n) 9) -(* 2 n))) -(even_list list)))) -(define (judge_card list) -(let ((temp -(+ (proc_odd list) (proc_even list)))) -(if (= (modulo temp 10) ) -#t -#f))) -- -
- 自分用の備忘録: -
- -- なんとなく、大学に自転車を取りに行かなければ幸せに過ごせそうな気がする。 -
-- 会社でオンラインショップ 坂角総本舖(えびせんべい ゆかり)のゆかりというエビせんべいを食べました。おいしかったです♪ -
- --
- from kazu634 -
-- 2点間の緯度と経度がわかれば距離が計算できるので、それを用いて最寄りのルノアールを検索するスクリプトを作成してみました(すでにルノアールの緯度と経度のデータを取得済みであることが前提になっています)。 -
- --# === Libraries === -use strict; -use warnings; -# 警告用のモジュール -use Data::Dumper; -# sayを使う -use Perl6::Say; -# ラジアンに変換するためのモジュール -use Math::Trig; -# ウェブサービスにアクセスするためのモジュール -use WebService::Simple; -use XML::Simple; -use YAML::Syck; -# DBモジュール -use DBI; -# If you make a CGI, -use CGI::Carp; -# === Main part === -# 引数の取得 -my $address = shift() || "戸塚駅"; -# ウェブサービスにアクセスする -my $geocode = WebService::Simple->new( -base_url => "http://maps.google.com/maps/geo", -param => { -output => 'xml', -hl => 'ja', -ie => 'UTF8', -oe => 'UTF8', -} -); -# レスポンスの取得 -my $response = $geocode->get( { q => $address, } ); -# 緯度と経度の取得 -my ( $lng, $lat ) = split( /,/, -XMLin( $response->content )->{Response}->{Placemark}->{Point} -->{coordinates} ); -# データベースへの接続 -my $dbh = -DBI->connect( 'dbi:mysql:dbname=sample', 'root', 'musashi', -{ RaiseError => 1, AutoCommit => } ); -# ステートメントハンドラの作成 -my $sth = $dbh->prepare("SELECT shopname, lat, lng FROM renoir;"); -# ステートメントハンドラの実行 -# もしプレースホルダを用いていれば、引数を指定する -# 例: $sth->execute("$query%"); -$sth->execute(); -# データを格納するハッシュを宣言 -my %distance; -# do something -while ( my @row = $sth->fetchrow_array ) { -# say "$row[0]: processing..."; -$distance{$row[]} = calc_distance($lat, $lng, $row[1], $row[2]); -} -# ステートメントハンドラの解放 -$sth->finish; -# データベースハンドラの解放 -$dbh->disconnect; -foreach my $x (sort { $distance{$a} <=> $distance{$b} } keys %distance) { -say "$x: $distance{$x}"; -} -# === Sub routines === -sub calc_distance { -my ( $src_lng, $src_lat, $target_lng, $target_lat ) = @_; -$src_lng = deg2rad($src_lng); -$src_lat = deg2rad($src_lat); -$target_lng = deg2rad($target_lng); -$target_lat = deg2rad($target_lat); -my $lat = abs($src_lat - $target_lat); -my $lng = abs($src_lng - $target_lng); -my $disp_lng = 6378137 * $lng * cos($src_lat); -my $disp_lat = 6378137 * $lat; -return (sqrt(($disp_lng ** 2) + ($disp_lat ** 2))) / 1000; -} -- -
-kazu634@kazu634-desktop% perl nearby.pl 東京駅 ~/public_html/cgi-bin [3685] -喫茶室ルノアール東京駅八重洲北口店: .435315984950852 -CafeRenoirニュー八重洲北口店: .467543208698977 -喫茶室ルノアール西銀座店: .642982000229979 -喫茶室ルノアール銀座2丁目店: .702398928767422 -喫茶室ルノアール日本橋高島屋前店: .732463961865684 -喫茶室ルノアール銀座松屋通り店: .740393397722928 -喫茶室ルノアールニュー銀座店: .75542502659804 -喫茶室ルノアール銀座昭和通り店: .838414132025791 -喫茶室ルノアール神田西口店: .869663761208432 -CafeRenoir日比谷店: .897535877486945 -喫茶室ルノアール神田南口駅前店: 1.01098051357989 -喫茶室ルノアール銀座6丁目店: 1.08625003221537 -喫茶室ルノアール神田北口駅前店: 1.09072059057988 -喫茶室ルノアール歌舞伎座前店: 1.10796217223668 -CafeRenoir日本橋三越前店: 1.18155794316319 -喫茶室ルノアール新橋第一ホテル横店: 1.48410756949907 -喫茶室ルノアールニュー秋葉原店: 1.54212153453434 -喫茶室ルノアール秋葉原店: 1.63742738214139 -CafeRenoir秋葉原昭和通り口店: 1.69909449355394 -喫茶室ルノアール新橋サンルート店: 1.78354029735583 -喫茶室ルノアール本郷三丁目店: 2.36420940618699 -喫茶室ルノアール水道橋西口店: 2.36967239112471 -喫茶室ルノアール芝大門店: 2.4978765111691 -CafeRenoir御徒町春日通り店: 2.51018524532367 -CafeRenoir上野公園前店: 2.55816645974866 -喫茶室ルノアール上野しのばず口店: 2.67644546004129 -喫茶室ルノアール飯田橋西口店: 2.77507641963975 -喫茶室ルノアール赤坂見附店: 3.30276167166024 -喫茶室ルノアール市ヶ谷駅前店: 3.42102550732542 -喫茶室ルノアール市ヶ谷外堀通り店: 3.53709343480954 -喫茶室ルノアール田町三田口駅前店: 3.66202973989548 -喫茶室ルノアール日暮里谷中店: 3.94246072598764 -喫茶室ルノアール日暮里東口店: 4.03695060915453 -喫茶室ルノアール四谷店: 4.12610587079289 -喫茶室ルノアール西日暮里第一店: 4.31473177312909 -喫茶室ルノアール品川港南口店: 5.13907013778664 -喫茶室ルノアール巣鴨駅前店: 5.27893044081758 -喫茶室ルノアール品川高輪口店: 5.35139941874248 -喫茶室ルノアール千駄ヶ谷駅前店: 6.23538684551861 -喫茶室ルノアール新宿3丁目ビッグスビル店: 6.5453489357914 -喫茶室ルノアール大崎ニューシティ店: 6.63945918250293 -喫茶室ルノアール亀戸駅前店: 6.74062841206796 -喫茶室ルノアールニュー新宿3丁目店: 6.77697915649173 -喫茶室ルノアール新宿区役所横店: 7.05072429513845 -喫茶室ルノアール高田馬場早稲田通り店: 7.06968951136699 -喫茶室ルノアール渋谷シオノギビル店: 7.1240838306852 -喫茶室ルノアール代々木西口駅前店: 7.13909675554724 -喫茶室ルノアール新宿歌舞伎町店: 7.22403783727057 -喫茶室ルノアール池袋東口店: 7.23780226955619 -喫茶室ルノアール渋谷宮下公園店: 7.26931877899747 -喫茶室ルノアール池袋パルコ横店: 7.3270604674247 -喫茶室ルノアールニュー高田馬場店: 7.34290026009566 -喫茶室ルノアール高田馬場第一店: 7.36479141976654 -喫茶室ルノアール高田馬場ビッグボックス横店: 7.36904123056024 -喫茶室ルノアール西武新宿駅前店: 7.40005424996067 -喫茶室ルノアール渋谷南口店: 7.49746178714419 -喫茶室ルノアール新宿大ガード店: 7.51323188722339 -喫茶室ルノアール新宿西口駅前店: 7.58150054032627 -喫茶室ルノアール新宿ハルク横店: 7.62020272070804 -喫茶室ルノアール新宿小滝橋通り店: 7.64519920897494 -喫茶室ルノアール新大久保駅前店: 7.65229083944699 -喫茶室ルノアール渋谷東急ハンズ前店: 7.84131966635012 -喫茶室ルノアール新宿西口エステックビル店: 7.85758639750782 -喫茶室ルノアール大久保店: 8.04062475943237 -喫茶室ルノアール西新宿西鉄イン店: 8.05412323485957 -喫茶室ルノアール大森駅前店: 8.85907949468314 -喫茶室ルノアール中野北口店: 11.3137961270589 -喫茶室ルノアール中野サンプラザ前店: 11.4439040084503 -喫茶室ルノアール蒲田西口店: 11.6915802640973 -喫茶室ルノアール高円寺北口駅前店: 13.0266500378475 -喫茶室ルノアール金町店: 13.9275885380925 -喫茶室ルノアール京急川崎駅前店: 14.6570012552232 -喫茶室ルノアール川崎銀柳街店: 14.8850590342952 -喫茶室ルノアール鶴見駅前店: 17.7002234767128 -喫茶室ルノアール本八幡店: 18.3395170961463 -喫茶室ルノアール三鷹北口駅前店: 22.9806502621709 -喫茶室ルノアール横浜元町店: 24.1345490376862 -喫茶室ルノアール横浜関内駅前店: 24.7777407408182 -喫茶室ルノアール横浜伊勢佐木町店: 25.1164169878391 -喫茶室ルノアール川越店: 36.7869920377336 -喫茶室ルノアール大船店: 38.0985342051618 -喫茶室ルノアール鎌倉駅前店: 38.9676916856126 -喫茶室ルノアール立川店: 39.0582655451701 -喫茶室ルノアール立川駅前店: 39.0967111720432 -喫茶室ルノアール立川南口店: 39.1415652734928 -喫茶室ルノアール箱根湯本駅前店: 83.2994705463744 -喫茶室ルノアール阿佐ヶ谷駅前店: 15851.4253911619 -- -
- id:umedamochioさんがこんなことを言っている。 -
- --- -- その話というのは「皆さんは、人間への関心をどのくらい、どのように持っていますか」ということです。理系の人間に囲まれて暮らしていると、彼ら彼女らが「モノへの強い関心」を持ちながら暮らしているのがとても印象的です。でも法律にたずさわる仕事をする人には、「人間への強い関心」を持つことが不可欠ではないかなと思ったのです。司法試験を受けようとするような人たちは皆、成績優秀なエリートたちでしょう。でも、法律が取り扱う相手は、よほど特殊な専門分野を選ばない限り、基本的に「何万人に一人」のエリートたちではありません。あらゆる境遇のあらゆる種類の人たちの、やむにやまれぬギリギリのところでおこなう行為と向き合うのが法律の仕事ではないか、と僕は常々思っている、という話をいくつかの実例を挙げながら話しました。 -
- - -
-- -- 「頭はいいけど、人間に対する関心なんかまったくない人は、法律なんかより別のことやったほうがいいんじゃない?」 -
- - -
- すごく同意してしまった。 -
- -- 自分は色々あって研究者を目指せなくなってしまったけれど、研究者を目指そうとしている人で明らかに向いていないのではないかと思う人がいたりする。うまくは言い表せないのだけれど、「自分が関心を持って問題としたいことが万人にとっても同様に興味深い問題だ」と無邪気に信じている人がいる。たしかにそうした人が提起する問題は断片的には興味深いのだけれど、ある一冊の小説について、あるいは、ある作家について論じるという視点が欠けているような気がする。そういった人たちは頭は良いのかもしれないけれど、なんかセンスがないような気がしてならない。 -
- -
- これまでの先行研究を踏まえれば、ホットなトピックというものが確かに存在しているはずだし、それについて何らかの解決を迫るようなことを言えば、誰もが固唾をのんで集中して話を聞くように思う。それに対して、これまでの流れを無視して自分勝手に話し始めて、何で自分が提起した問題が意義深いのかを説明できないまま話し続けられても、くだらないおしゃべり程度にしか思えなかったりする。そうした「センスのない」人は、発表を「自分の考えを表現する場」と捉えているみたいだ。自分の少ない経験から考えると、ホットなトピックに触れずに「Look at me!」と主張しても誰も話を聞いてくれない。それに対して、ホットなトピックに言及し、「Here’s what you are looking for」というような導入を行えば、後は黙って集中して話を聞いてもらえた。
-
- 文学研究というのは色々なジャンルがあるけれども、これまでの積み重ねを踏まえた上である小説なり作家について自分がどう思うかを論理的に述べることがメインの、とても人間的な学問領域と言える…と思う。作品の文脈から切り離して知識をひけらかされても、面白いとは思われていない。「センスのない」人はこの「これまでの積み重ねを踏まえ」とか「作品の文脈」みたいな部分についての意識が欠落していることが多い気がしてならない。自分がこれまで蓄えてきた知識に触れる部分をうまく当てはめればいいと思っているのだろうか?そんな記憶力の勝負で勝敗が決まるようなことをしているのだとすれば、地頭のいい東大の人たちに太刀打ちできなくなるのですが。。。作品を読んでいく中で自分が感じることに耳を澄ませ、それがホットトピックとどういう関連があるかを考えることが重要ではないのかと思うのです(もちろんそれには自分の考えを補強するために膨大な量の資料をあさることが必要になるのですが)。ホットトピックに関係する個人的な感想・直感を客観的に立証していく…という矛盾にあふれた行為とも言えるのかもしれない。 -
- -- 人間に関心がなければ、作品を読みこなし、深く読むことは不可能だ。自分の考えを他人に伝えるのにも、人間に関心を持つことが不可欠だ。 -
- -- 自分はこんなことを先輩たちから仕込まれてきたから、後輩たちには伝えていきたいとは思うのだが、うまくいかなかったりする。でも、自分が先輩から引き継いだことは後輩にも伝える義務があると思う。頑張ろうっと。 -
-- 今日のつぶやきです: -
- --
- Automatically shipped by LoudTwitter -
--- Acting classの先生のことば: -
- --- -- Often, a mark of an inexperienced actor is a tendency of giving suggestions to other fellow actors. So, if you absolutely need to offer a suggestion or a criticism to your fellow, do that with most respect and humility. Never, ever assume you know more. -
--Shiro -
-
- 自分の批評的立ち位置を示すためにも第二章を読まないとあかん。でも、ようわからんきがする。 -
- -- 追記:一度通して読んだぐらいじゃ、わからんぞ。。。 -
- --- -- ジャンルは本来、文学的制度であり、作家と特定の読者層を結びつける社会的契約であり、その機能は文化的造形物の正しい取り扱いを決めることにある。日常の言語行為は、その適切な受容を保証する指示や信号(抑揚、身振り、文脈的示唆や語用論的要素)によって特徴づけられている。だが、もっと複雑な社会生活を伝達する状況―エクリチュールの出現はそのような状況と等価であるとしばしば考えられてきた―においては、もし問題にしているテクストを多様な使用(ウィトゲンシュタインいわく、《意味》とは記述されなければならない[つまり意味とは用法である])にゆだねたりしないなら、知覚的信号に取って代わるべきは約束事である。それでもやはり、テクストが直接的な運用の状況から離れ自由になればなるほど、読者に対しジャンルの規則を押しつけるのが難しくなる。つまり、ある文学的発話に対して望ましくない反応を自動的に排除してくれるような、間違えのない伝達のメカニズムを作り出そうと(無駄な)努力をしてみても、それは創作の技術としては全く役に立たないのである。~(129-30) -
-
-- -- さて、このような読みに基づくなら、この一見統一された形式としての「小説」は、一種のX線技術による分析を受けやすい、ということになる。そのX線技術は、これから私たちが《ジャンルの不連続性》と呼ぶものに即して、層をなしたり、大理石も用をなしたりしているテクストの構造を明らかにする。そうなら、小説とは有機的統一体などではなくて、むしろ、ある象徴行為であって、それぞれに独自で相矛盾するイデオロギー的意味を持った異質な物語パラダイムを、再統一あるいは調和させるものである。~(176) -
-
-- -- リアリズム出現のこうした最初期には、目の前に実在するものに神経を集中せよというジャンル的規制のおかげで、かえってテクストの使用域が解放される効果があり、異種の歴史的パースペクティヴ―スコットの場合は過去、バルザックの場合は未来、ドライサーの場合は商品化の過程―が解き放たれた。歴史的現在のみを中止する立場と、こうした混在する異種の歴史的パースペクティヴとは、相容れないのが普通である。現に、のちの「最盛期の」リアリズムや自然主義は、この多層的時間を再び排除し再抑圧する傾向に向かうだろう。そうなると、完成された物語技法(とくに三つの守るべき規則―著者の姿が見えなくなり没個性化されること、視点を統一すること、情景的再現=表象だけに局限すること)のせいで、「リアリスティック」な選択肢が、自らに苦行を課し窒息しかけている様子が見え始める。こうして後期資本主義に置いてリアリズムが徐々に物象化されてゆくまさにその文脈の中で、ロマンスは異種の物語が混在する場、リアリズムの再現=表象を縛り抑圧しているあの現実原則からの解放の場、として再認識されるようになる。~(127) -
-
--- 同書では、ジャンルは一連の限定された機能、言い換えれば私たちが構造あるいは定められた形式と呼ぶものの観点から、捉えられている。~(132) -
-
-
- 店名 - | - --上海モダン - | -
---|---|
- 住所 - | - -- 神奈川県 横浜市戸塚区 戸塚町 53 - | -
- 電話番号 - | - -- 045-864-1488 - | -
-「結果を出す人」はノートに何を書いているのか (Nanaブックス) -
- --プレゼンテーションzen -
- --日経ビジネス Associe ( アソシエ ) 2010年 3/2号 [雑誌] -
- --- -- “Taken out of context I must seem so strange.” – Ani DiFranco -
- - -
-- -- “You are rewarding a teacher poorly if you remain always a pupil.” – Friedrich Nietzsche -
- - -
-- -- “Great minds discuss ideas; Average minds discuss events; Small minds discuss people. ” – Eleanor Roosevelt -
- - -
-
- いや、これは面白い。 -
- ---- オーストラリアでは2001年にジョン・M・ケオフ(John Michael Keogh)によって車輪が再発明され、特許が取得された。[1] -
- -- これはまじめな発明としてではなく、オーストラリアの新制度(2001年より開始)イノベーション特許(Innovation Patent)がほとんど無審査である事への批判を目的として、わざと申請されたものである。本来なら特許として到底認められるべきでないが、正式に認可されてしまった。結果、イノベーション特許がほとんど無審査である事の危険性が認知されることとなった。 -
- -- なお、ケオフとオーストラリア特許庁はその年のイグノーベル賞を受賞した。 -
- - -