2012/01/30

2012/01/30

server1を踏み台にしてserver2にsloginしつつlocalでchromeにsocks5プロクシ刺してserver2のイントラWebにアクセスする(?)

みたいなメモがてらブログ書こうとしたら不明なプログラムが挟まってて断念した。 ということで、ここは予定地。

追記

挟まってるプログラムはこれっぽい このconnect.cっぽい。ubuntuでもコンパイルしてみた。

追記:本題

.ssh/configに以下を追記。
Host server2
    ProxyCommand ssh valvallow@server1 /home/valvallow/bin/connect 192.168.XXX.XXX %p
    User foo
でserver2をlocalの8888ポートにbind(?)。
$ slogin -D 8888 server2
chromeにproxyを刺して対象のurlを開く。
$ chromium-browser --proxy-server="socks5://localhost:8888" http://192.168.XXX.XXX/sample.html/
よくわかってないので、なんか認識間違ってるかも。

これも追記

そういえばchromeのプロクシ刺し替えはこちらが便利だと教えてもらった。

実用SSH 第2版―セキュアシェル徹底活用ガイド

gitで.ssh/id_rsa以外の鍵を使う(GIT_SSH)

メモし忘れてた。
valvallow@ubuntu ~/temp $ cat ~/temp/git_ssh/work
#!/bin/sh
exec ssh -o User=valvallow -o IdentityFile=/home/valvallow/.ssh/work/id_rsa "$@"

valvallow@ubuntu ~/temp $ export GIT_SSH="/home/valvallow/temp/git_ssh/work"
valvallow@ubuntu ~/temp $ mkdir test && cd test

valvallow@ubuntu ~/temp/test $ git clone valvallow@server:/repos/test-git.git
Cloning into test-git...
Enter passphrase for key '/home/valvallow/.ssh/work/id_rsa':
remote: Counting objects: 44, done.
remote: Compressing objects: 100% (43/43), done.
remote: Total 44 (delta 21), reused 0 (delta 0)
Receiving objects: 100% (44/44), 782.50 KiB | 666 KiB/s, done.
Resolving deltas: 100% (21/21), done.

参考




Gitによるバージョン管理

2012/01/26

2012/01/26

google web fonts

facebookでshunsukさんが紹介してたので試してみました。いいなこれー!

参考


入門Git

2012/01/25

2012/01/25

github pages

ちょっと前に試しに作ってみてた。 で、リポジトリごとにこういうことができるらしい ので試してみた へぇー。

ということでこれを試してみようかな。 きっかけはこちら

別件

そういえばprivateなリポジトリが作れるbitbucketでしばらく前からgitを使えるということを思い出したのでこっちも試してみた。

2日連続でちょっと遠出しただけで絶賛体調不良中。

2012/01/23

2012/01/23

デスクトップでもthinkpadのキーボードを!!(笑)



会社で買ってもらいましたー!ありがとうございます!
これ思った以上に使いやすいですよ、まじで(笑)しかも薄くて軽い。なぜか縦幅は大きいけどな!

日本語配列もあるみたい。

レノボ・ジャパン ThinkPad USB トラックポイントキーボード(英語) 55Y9003

cygwinでcron

これはちょっと苦労した。 VPSでもubuntuでも当然のように使えていたので、こんなに手間がかかるとは予想外。cron-configでdaemonさんとして動かすのによくわからないエラーが続出して手間取った。というかcygwinだからこんな目に。。いや、でもcygwinなかなかやりおる。

windowsにも似たようなものがあるんだって!あちゃー(ノ∀`) でも、cronでやればshell script使えるしな!

追記

ネットを探すと

% cygrunsrv --install cron --path /usr/sbin/cron -a -D
って出てくるけど、うちのcronさんは
% cygrunsrv --install cron --path /usr/sbin/cron -a -n -u cyg_server
でした。-Dではなく-n。

追記



windows server に cygwin 入れて sshd サーバ立てて git サーバにした話

タイトルでほとんど内容終わり。windows 2008 serverでもcygwinって普通に使えるんですね。ちょっと驚いた。

linuxでやるより面倒だったけど、意外となんとかなるもんで。今回はWindows Server 2008。サーバはgit入れてsshd立てて外から接続できれば終わり。つまり、cygwinのsetup.exeもしくはapt-cygなどからOpenSSHとgitをインストール。もちろんfirewallでsshのポートの許可も必要。

これで家でも外出先でも手軽に会社のgitサーバーに対してpush/pullできますよっと。ただ環境作ってる途中、GIT_SSHで少しハマった。

cygwinだけなら簡単なんだが、クライアントでGUIからgitを使う、visual studioで使う、という前提で環境作ると面倒、大変、わかりにくい。ところがあった。shellの方が快適ですね。
しかし、意外とちゃんと動くもんで。cygwinやるじゃん。

追記

ちょっと設定変更したらハマった。復旧に数時間。。この辺のエラー

ssh_exchange_identification
Connection closed by 192.168.1.xxx
ssh_exchange_identification: Connection closed by remote host
cygrunsrv: Error starting a service: QueryServiceStatus:  Win32 error 1062:
fatal: /var/empty must be owned by root and not group or world-writable
Operation not permitted

今回はこれで解決した。

% cygrunsrv -E sshd
% cygrunsrv -R sshd
% cygrunsrv --install sshd --path /usr/sbin/sshd -a -D -u cyg_server
% cygrunsrv -S sshd
% chown cyg_server /var/empty
% chmod 700 /var/empty

linuxならsshの設定してパッケージマネージャからgit入れるだけなんだけどね。あいにく会社にlinuxサーバーがなくて、windows server 2008があるんで使わない手はないかなと。


追記

こういう方法もあるようで。

実用Git

tumblrの楽しみ方 がいこつ編

tumblr楽しいですね。楽しいです。 つい先日まではスクラップブックくらいの感覚で使ってました。
  • 気になった記事をブックマーク
  • 気に入った文章をquote
  • 気になった文章をquote
  • 面白かった画像をup
ってな具合。dashboardは全然見てませんでした。 (dasboardはtwitterのTLみたいなもん)

で、
  • ブックマークしたlinkは1日分をまとめてブログに投稿(bot)
  • 自分のquoteからランダムにポストするtwitter bot
なんかを運用して一人で楽しいでいました。 が、これはもったいなかった。たくさんの人をfollowしたらdashboardが劇的に面白くなった。 500人くらいfollowするとdashboardがカオスになってすごく面白い。あと、tumblrで流れる18禁画像系がエグ過ぎてやばい。人前でdashboard開けない。やばいので、そういうアカウントは取りあえずunfollowしたった。(別アカでfollowしたわけだが)。

reblog!!そして、reblog!!\宣/

投稿にはchrome拡張のTaberareloo使ってます。emacs拡張もあったりする(笑) これがあるとはかどる。

それと短時間でfollowしまくると規制されるっぽい。 取りあえずこんな感じか。

追記

あー、そうだ、androidのtumblr公式アプリもreblogがはかどる。

2012/01/21

2012/01/21

日記(GALAXY S IIでいつの間にか起動しているアプリがある)

ふと起動中のアプリをみるとワンセグとビデオメーカーと設定が起動してるんですよね。どのタイミングで起動してるのかわからなくてイラっとしてたんですが、どうやらマナーモードを切り替えるタイミングで起動しているらしい。なんでやねん。でも起動するタイミングがわかったので別にもういい。勝手にしてくれ。

そういえば別件で昨日「カーネル入れ替えたらいいですよ」というアドバイスを受けた。そんなことをしたりするのかandroid。電話のできるネット用小型PCという認識で使っていこうと思っているますので深追いしない方向で。。アプリ開発?何それおいしいの?

2012/01/19

2012/01/19

辞書コマンド(あるいはshellで辞書、terminalで辞書、Shellで翻訳)

新しく開発環境を準備する際に、自分なりに欠かせないものがありますよね。emacsだったりzshだったり、windowsならcygwinやcolinuxなどなど人それぞれでしょう。私の場合その中の一つに辞書コマンドがあります。

私にとってshellで辞書を引けるかどうかはすごく重要です。というかプログラミングするときって辞書を引く機会が多いのでできるだけ手軽な方がいいです。辞書を持ち歩くわけにもいかないし、いちいちブラウザで調べるのも手間過ぎます。専用の辞書ソフトを使うというのも手かもしれませんが、これもブラウザを使うのとあまり差がありません。emacsの中だけに住んでる人はsdicで済ませたりするんでしょうけど、私は最近「脱emacs引きこもり」したので却下。

辞書コマンドを使うようになってまだ1年くらいです。今ではもう欠かすことのできないツールです。(grepでいいんじゃないかという話もありますけど)

で、結局どの辞書コマンドを使っているかというとzeeというperlスクリプトです。下記サイトの「がらくた置き場」から頂きました。(実際はzeeをちょっと改造してあるものをとある人からもらった) こんな感じ
$ zee lisp
lisp 
  かたこと, 舌足らずに話す
LISP     List Processor 
  リスプ, コンピュータのプログラミング言語の一つ

$ zee scheme
scheme 
  仕組み, 一覧表, 組織, 概要, 理論体系, 図式, 計画, 考え(よく
  ない)たくらみ, 陰謀, たくらむ

$ zee 元旦
元旦 (日本の) 
  New Year's Day
元旦(とそれに続く数日) 
  new year, new, year

$ zee プログラム
アプリケーション プログラム 【コンピュータ】 
  application program 
アプリケーション プログラム インタフェース 【コンピュータ】 
  API     Application Program Interface
オブジェクトプログラム 
  object program
コスト改善プログラム 
  cost improvement program
コボル(事務処理用のプログラム言語) 
  COBOL     Common Business Oriented Language
デバッグする(プログラムのミスを取り除く) 
  debug
ドローイング系のプログラムでよく使われる十字形のカーソル 
  crosshair cursor
ネットワーク制御プログラム;略:NCP 
...
..
.

辞書ファイルはgeneとかjddictとか。オフラインでも使えて超便利。

あと、mtranという自作(?)の翻訳プログラムも結構役に立ってる。けど、web apiを使うのでオフラインでしか使えない。正確には自作じゃなくてここ が元ネタ。このコマンドを自分なりに書きなおしたものを使っています。 つかみんなどうやって辞書引いてんの?便利な方法があったら誰か教えてください。今んとこzeeで大満足ですけども。

こういうのもあるみたい。 cygwinに入らなかったので諦めた。今度ubuntuで試してみよう。しかし、辞書コマンドのググりにくさは異常。

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

Vim選択範囲一括コメントアウト

メモってなかったので
C-v I [comment string] ESC
で、これはいいんだけど・・・
Visual Studio 2010のvimキーバインド拡張VsVimで同じオペレーションしてもコメントアウトできなくて詰んだ。。どうやるんだろ。

Vimテクニックバイブル ~作業効率をカイゼンする150の技

zshでESC qを知らなくて人生損してた

ぐぬぬ コマンドAを入力してる途中で、Aを実行する前にコマンドBを入力する必要があることに気づいたら・・・、今までは一度入力したものを消してコマンドBを実行してまたコマンドAを入力する、というような非常にストレスフルなことをやってた。全てESQ qが解決してくれた。
zshの本 (エッセンシャルソフトウェアガイドブック)

2012/01/15

brainf*ckインタプリタを書いてみた

brainf*ckインタプリタを書いたことがなければプログラマに非ず
などと言われることもあるようなので書いてみた。Gauche。

しかしプログラマには「hogehogeでなければプログラマに非ず」が多いですよね。ハードル高いの多いし。どうなってんだこの業界。
どの道ついてけないので、書けそうなものの中で面白そうなものをやってみる、というスタンス。

取りあえずHello worldが動くところまで書いたところ。replもつけてみた。コードがすごく納得できない状態なので、もう何度か書いてみたい。特にinterpretとparse(つまりメインディッシュ)がもうちょっとどうにかできないもんかと。

今回brainf*ckがどういう言語かちゃんと知って心惹かれました。面白い言語なんですねーこれ。しかも作るの簡単。なるほどlispと同じく使う人より実装する人の方が多い言語。lispと違うのは使う人がいなくて実装する人しかいないところか。

ソース

#!/usr/local/bin/gosh

;;;
;;; bfi - brainf*ck interpreter
;;;

;; sample - Hello world
;; >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++++>-]<.>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]>++++++++[<++++>-]<+.[-]++++++++++.


(use srfi-1)
(use file.util) ; file->string
(use gauche.parseopt)

(define (usage)
  (print "Usage: bfi [options ...] [file]")
  (exit 1))

(define (interpret code ptr mem)
  (let rec ((code code))
    (if (null? code)
        (values ptr mem)
        (begin
          (if (list? (car code))
              (until (zero? (vector-ref mem ptr))
                (rec (car code)))
              (case (car code)
                ((#\+)(inc! (vector-ref mem ptr)))
                ((#\-)(dec! (vector-ref mem ptr)))
                ((#\<)(dec! ptr))
                ((#\>)(inc! ptr))
                ((#\.)(write-byte (vector-ref mem ptr)) (flush))
                ((#\,)(set! (vector-ref mem ptr)(read-byte (current-input-port))))))
          (rec (cdr code))))))

(define (parse str)
  (let1 ls (string->list str)
    (let rec ((ls ls)(acc '()))
      (if (null? ls)
          (reverse acc)
          (case (car ls)
            ((#\+ #\- #\< #\> #\. #\,)(rec (cdr ls)(cons (car ls) acc)))
            ((#\[)(rec (let1 rest (drop-while (pa$ (complement equal?) #\])(cdr ls))
                         (if (null? rest)
                             '()
                             (cdr rest)))
                       (cons (rec (cdr ls) '()) acc)))
            ((#\])(reverse acc))
            (else (rec (cdr ls) acc)))))))

(define (repl mem)
  (print ";; brainf*ck interactive shell")
  (print ";; q to exit.")
  (let rec ((ptr 0)(mem mem))
    (display "bfi> ")
    (flush)
    (let1 input (read-line)
      (when (equal? input "q")
        (exit 0))
      (receive (ptr mem)
          (interpret (parse (x->string input)) ptr mem)
        (rec ptr mem)))))

(define (run-bf str mem)
  (interpret (parse str) 0 mem))

(define (main args)
  (let-args (cdr args)
      ((memory-size "m|memory-size=i" 1024)
       (interactive "i|interactive")
       (help "h|help" => usage)
       (else (opt . _)
             (print "Unknown option : " opt)
             (usage))
       . rest)
    (let ((mem (make-vector memory-size 0)))
      (cond ((and (null? rest) interactive)(repl mem))
            ((null? rest)(run-bf (port->string (current-input-port)) mem))
            ((run-bf (file->string (car rest)) mem))
            (else (usage))))))


使い方

 $ bfi hello.bf 
Hello World!
 $ echo '>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++++>-]<.>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]>++++++++[<++++>-]<+.[-]++++++++++.' | bfi
Hello World!
 $ bfi -i
;; brainf*ck interactive shell
;; q to exit.
bfi> >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++++>-]<.>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]>++++++++[<++++>-]<+.[-]++++++++++.
Hello World!
bfi> q
 $


参考

基本的にここのbfiを参考にしました。 shiroさんのbfi2が理解できない。。。

プログラミングGauche

日記(世の中狭いという話)

ありきたりな話題。ありきたりな話題だけど、それを実感した話。

今日はとあるイベントに参加してきた。某企業が開催するイベント。そこでは偶然にも友人知人が様々な立場で関わっていた。大学時代のサークルの先輩後輩、一緒に飲んだことのある他サークルの方々、地元の知人などなど。そういった方々が開催企業の社員だったり、イベントに参加している企業の社員だったり。

それほど仲が良かったわけでもない。社会人になってから一度も連絡を取ったことが無い。お互い名前すらよく覚えてない。大学時代ですらスレ違うときに「お疲れー」というだけの仲。それでも好意でサービスしてくれたり値引きしてくれたり。

すごく助かった。本当にありがたかった。人との繋がりは大切だ。大事なのは人脈だ。なんてことは大昔から言いつくされている。当たり前のことを実体験として強く認識した一日だった。自分もいざ友人知人に偶然遭遇したときに、何か役に立つことができる人になりたい。

日記(自分語り)

先日28歳になった。私はプログラマとして働いている。大学を卒業してから次で4社目だ。ずっと同じ業界で同じ職種。

私は理系の大学を出たわけではないし、プログラミングの技術について専門教育を受けたわけでもない。高校も大学も文系。数学も物理も大の苦手だった。それどころか算数でつまずいて以来、理系の教科は嫌いで仕方なかった。大学では社会福祉学部で福祉と幼児教育を学び保育士の資格を取った。ピアノの単位を苦労して取ったり、体育の授業でダンスや劇をした。卒論も書いたことがない。卒業ゼミで銅版画を作成して卒業した。しかし残念なことに、今のところ保育士の資格が役に立ったことはない。いや、話のネタになることはある。

情報系の学部を出た人やコンピュータサイエンスの教育を受けてきた人がうらやましかった。若い頃からプログラミングをしている人がうらやましかった。有名なプログラマを見るたびに、勉強会に行くたびに、うらやましさと後悔をおぼえた。自分用のPCを手にしたのは大学3年だった。プログラミングを始めたのは就職してからだ。「もっと早くプログラミングに出会っていたら」「もっと早くPCを買っていたら」「情報系の大学に行っていたら」「学生の頃にもっと本を読んでいれば」などと思うことがある。

だけど、最近はそういうことを思うことがほとんどなくなった。私は私なりに学生生活を楽しく過ごしたからだ。


つづく...

P.S 落ち込むこともあるけれど、私プログラミングが好きです。

2012/01/14

2012/01/14

プログラミングがはかどるとき

  • やらなきゃいけないことがある
  • でもやりたくない
がそろったときだなあ・・・

つまり、目を背けたい何かがあるとき。現実逃避に最適。で、プログラミングよりさらにはかどるのはemacsとかshellとかscreenなどのカスタマイズ。さらにはかどるのはネット\(^o^)/

emacsでコードリーディング(view-mode, follow-mode, inertial-scroll)

コード読むときはemacsでC-x 3してviキーバインド化したview-mode + follow-modeが快適。直接関係ないけどinertial-scroll.elは必須ですよねー。
Emacsテクニックバイブル ~作業効率をカイゼンする200の技~

日記(ウィスキーとか)

最近ウィスキーを飲むようになったので、barに行ったときなどにいろいろ飲んでみてます。オススメがあったら誰か教えて下さい。飲み方はロックが好きです。つまみはチョコかナッツ系が好き。家ではよく太陽と大地の実ってのをつまんでます。

最近飲んだのだとこんな感じ。あんまりよくわかってないけど、モルトウィスキーよりバーボンの方が好みなのかな?

ラフロイグ > ワイルドターキー > クレスト > フォアローゼズ >>>>>>>>>>> マッカラン = 山崎

2012/01/10

2012/01/10

日記(tumblrの規制とか)

先日こんなことをした。 で、見つけた方々を片っ端からfollowした。アカウント作っただけっぽいのとidの前後に_が入ってる人はスルーしました。followee20人くらいが一気に500人以上になったのでdashboardがかなりいい感じにカオスです。(結構過激な)18金の流量も増えたので今後は人前でdashboardを開くことはできなくなりそう・・・。

tumblrでfollowを繰り返すとしばらく規制されるみたい(たぶん丸1日)なので、500人くらいfollowするのに3日かかった。 最初は300人followした時点で規制されたっぽい。その後は100人ごとに規制されたんじゃないかという気がする。
tumblrやばい。今まではdashboardはあまり見ずに使ってましたが、それはもったいないことだったようです。

ボット作って眺めたり ランダムに表示するコマンド作って眺めたり その日1日のbookmarkをまとめてblogに投稿するbotを作って眺めたり だけど、followeeを増やしたdashboardの時間泥棒っぷりは異常。

2012/01/07

shell scriptのこと

今、 ってのをパラパラ読んでるんですが、これはいいですね。

で、読んでて思うんですがshell scriptすげーな。奥が深いというか複雑というか大変というか。きっとshell scriptとして便利になるために時には歪な仕様をとり込みつつ進化してきたんでしょう。大雑把な言語だと思っていましたが細かいところを見ると言語として面白いんですね。しかし、こんなに覚えきれねーだろ(笑)

その点lispって偉大だなとつくづく思いますよホント。覚えること少ないしシンプルで一貫していて秩序がある。
おっと、lispのことを書くと急に宗教っぽくなるな。

で、この本の2章「シェル変数」を読んでたら、たくさんの初期化方法が用意してあることに驚きましたよ。こんなにあんのかよ。。覚えるつもりはないけどメモっときたいので、そのうちブログに書くかも。$*と$@の違いとかそういうのも。もうね、知らんがなと言いたくなるくらいですがw

shell scriptいいよなー。shell scriptでハックするためにshell scriptもハックされてきたような、そんな感触が。胸が熱くなるな。

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

twitterのfolloweeが同じIDでtumblrに登録しているかfollowee全員分調べる

tumblr面白いですよねー。
tumblrのdashboard見てたら何時間も経ってた、なんてこともよくあります。。

動機

tumblrが面白いのはいいんだけど、followする人を見つけるのが大変。大変というか見つけ方がよくわからん。
ということで、twitterでfollowしてる人がtumblrやってたらfollowしてみようかなーって。

方法

  • twitter apiでfriends(followee)のscreen_name一覧を取得する
  • screen_nameをtumblrのurlにする
  • urlが存在するか確認する
というのをスクリプト書いたりして実行してみた。
こんな感じ。
$ twitter-friends valvallow | awk '{print $1".tumblr.com"}' | available-url
  • twitter-friends(gaucheスクリプト)で指定したuserがfollowしているuserのscreen_name一覧を取得する
  • awkでtumblrのurlにして
  • available-url(gaucheスクリプト)でurlが存在するか確認する
urlが存在するかってのをhttp-getで200が返るかどうかで確認したところに時間がかかった。

コード

Gaucheです。
自分なんりに一番てっとり早い方法でやったつもり。
探せばそういうサービスがあったりして・・・

んで、実際に存在したurlは手動で開いて手動でfollowするという情弱ぶり。

参考


追記

結果に余計なものが含まれてたので、さらに
$ cat url.txt | awk '!/#/' | awk '!/_/'
する必要があった。(結果がurl.txtに入ってるとして)

追記

それでも600くらいあって、とても手動じゃ開ききれない・・・。
さてテキストに羅列してあるurlを一気にブラウザで開くには・・・

これでいいか

追記

同じことやってる人がいた

追記

!/[#_]/

Scheme修行

2012/01/05

2012/01/05

Re: assoc-store

自分なりに書いてみた。
keyがなかったらaconsして、なければalistを途中でぶった切ってkeyとvalueに置き換える、ということでわりと素直なつもり。
(use srfi-1)

(define (assoc-store alist key val)
  (define (equal-key? ls)
    (equal? (car ls) key))
  (if (find equal-key? alist)
      (receive (head tail)
          (span (complement equal-key?) alist)
        (append head (acons key val (cdr tail))))
      (acons key val alist)))
(define alist '((hoge . 1) (foo . 2) (bar . 3) (baz . 4)))
(assoc-store alist 'foo 5)
;; => ((hoge . 1) (foo . 5) (bar . 3) (baz . 4))
(assoc-store alist 'fuga 5)
;; => ((fuga . 5) (hoge . 1) (foo . 2) (bar . 3) (baz . 4))

(define alist2 '((hoge . 1) (hoge . 3)))
(assoc-store alist2 'hoge 9)
;; => ((hoge . 9) (hoge . 3))


追記

これでいいか。
(use srfi-1)
(define (assoc-store alist key val)
  (receive (head tail)
      (span (^l (not (equal? (car l) key))) alist)
    (if (null? tail)
        (acons key val alist)
        (append head (acons key val (cdr tail))))))


追記

unfoldがあったかー。list処理はmap, fold, named-letの優先順位で候補を考えるけど、間でunfoldやpair-foldの存在を思い出すようにしよう。
(それに共有構造ってこういう使い方もアリなのか)

Scheme修行

2012/01/02

2011年lisp/scheme/gaucheピックアップ

これと同じノリで。 これは2012年ですが。 ピックアップと言いながらほとんど載ってるかも。

gauche





初めての人のためのLISP[増補改訂版]

2012/01/01

2012/01/01

shellコマンド記事まとめまたはワンライナー記事まとめ

2011年に書いたshellコマンド系記事まとめ。
まとめてみてわかったけど同じようなこといくつも書いてるな。

こちらも

ssh, find



date, 他



shell script他



web他



ubuntu



vim, emacs他





UNIXという考え方―その設計思想と哲学

2011/12 の筋トレ

日時体重腕立て腹筋
2011-12-0158.810050
2011-12-0259.210050
2011-12-0558.810050
2011-12-0659.210050
2011-12-0858.415060
2011-12-1559.012060
2011-12-1858.010050
2011-12-2059.410080
2011-12-2259.410060
2011-12-2458.81000
2011-12-2558.810050
2011-12-2658.014065
2011-12-3059.210050
合計13/31日平均58.841410675

2011/11月頭から始めた筋トレ。なかなか続いてます。
胸筋は結構ついてきましたが腹筋がなかなか割れません。
実は触ってみると腹筋もついてきてる。どうやら表面の脂肪が邪魔で、見た目ではわかりにくい。それでも少しずつ割れてきたので期待。

今年は体脂肪率を落とすことを目標にしよう。そうしたらきっと腹筋も割れ(て見え)る。若い頃腹筋が割れてたのはたぶん単に体脂肪率が低かったからだと気づく。となると、食事の方で調整が必要かなー・・・。今体脂肪率が15%なので、半年後10%目標で。。どうだろ、厳しいかなー・・・。

あ、腹筋はシットアップからクランチに変更したら効果が上がった気がします。

apt-getからt-code入れたらemacsのisearchがバグる

tc-sysdep.elを修正すればいいらしいけど、もうt-codeやることないだろうしremoveしたった。

2012年が明けたので書き初めしました。lispで。

明けましておめでとうございます。書き初めしました。lisp(というかscheme(というかgauche))で。辰年なので図形言語でドラゴン曲線を描くべきかとも思いましたが書き初めにしました。元ネタはこちら




参考

参考にしたのはこちら Gauche-gdは仕事でも使っていたので、一部流用しつつ。

使い方

コマンドにしたので、下記のように使えます。
フォントはここと同じものにしました。 gauche 0.9.2以降で動きます。最後の「あけおめ」のように別のfontでもOK。
$ kakizome "吾唯足知" "ばるばろう" /home/valvallow/.fonts/opentype/aoyagireisyosimo/aoyagireisyosimo.otf | hd -C | less
すると以下のような出力が得られるので、> hoge.pngとかして下さい。
00000000  89 50 4e 47 0d 0a 1a 0a  00 00 00 0d 49 48 44 52  |.PNG........IHDR|
00000010  00 00 00 7a 00 00 01 60  08 02 00 00 00 fb 01 fa  |...z...`........|
00000020  fa 00 00 20 00 49 44 41  54 78 9c ed 9d 7f 4c 1b  |... .IDATx....L.|
00000030  e7 fd c7 ef eb b8 8e 71  5c 8f b8 ae eb 52 87 7a  |.......q\....R.z|
00000040  0c b9 1e 75 19 a2 8c 51  ea 52 46 a9 85 18 65 cc  |...u...Q.RF...e.|
00000050  65 14 a1 34 62 94 b2 88  a1 2c c9 a2 8c a1 28 42  |e..4b....,....(B|
00000060  34 5f 84 22 14 21 c4 88  47 29 63 0c 65 0c 51 44  |4_.".!..G)c.e.QD|
00000070  29 a5 94 22 0f 21 ca 18  63 d4 73 29 61 8e 87 98  |)..".!..c.s)a...|
00000080  71 88 e3 38 84 3a ae 63  8c 89 bf 7f dc b7 de f5  |q..8.:.c........|
...
..
.

こんな感じで
$ kakizome "吾唯足知" "ばるばろう" /home/valvallow/.fonts/opentype/aoyagireisyosimo/aoyagireisyosimo.otf > temp/hoge.png ; eog temp/hoge.png
ソースは以下の通り。

関連


プログラミングGauche