イーモバイルが...

なんかSBに買収されたね。はてブでそれを知って、イー・モバイルLTEユーザーの墓場はこちらです - はげあたま.org にアクセスしようとしたのだけど、見れず。

今は404 Not foundが出る始末。どうしちゃったんだろう?

とりあえず、どうしても中身が気になったのでwebキャッシュを探して読んでみた。
それはこちらhttp://webcache.googleusercontent.com/search?q=cache:http://www.hageatama.org/wp/1290 
そのうちこっちも読めなくなるのかな?

なんでタイムアウトだったんだろう。僕が邪推しすぎなのかもしれないけど怖いね((((;゚Д゚))))ガクガクブルブル

Google+ APIとか

Google+用のクライアントほしいなぁと思って、Javaでいじくってたのですが、
APIドキュメントをいろいろ読んでて気づいたのです。

これ、サークル周りのAPI無いじゃん!って。
今できるのは、ユーザIDとその人の公開しているポストを取ってくるくらい?

うむむ... 面白くないー

2段階SSHする方法まとめ。

環境:MacOSX 10.7

学校のサーバにアクセスするのに、2段階踏まなければなかったのが地味に不便だったので
SSHの設定をしてみた。

~/.ssh/configを設定する。
本題の前に、基本的な書き方。

Host ServerName←これは呼び出す用の名前なので任意の名前に。
HostName azunyan.co.jp←サーバ名(IPアドレス指定も可:HostName: 192.68.23.45)
User peropero←sshする際のユーザ名
port 22←デフォルトは22。デフォルトのままなら指定しなくてもいい。

これで、ssh ServerNameとシェルで打つと、パスワード認証が出て通ればssh完了。
そして、本題。
全学の計算機には直接アクセスできるのに、学部の計算機には、全学の計算機からしかアクセスできない。
つまり...2段階sshをするしかない。
ここで、自分のパソコンと全学計算機のと2つの~/.ssh/configを設定すれば2回のコマンドでいいのだが、
もっと楽な方法がある。
それがこれ。

Host zengaku
HostName zengaku.ac.jp
User ashitaka
Host gakurui
HostName gakurui.ac.jp
User ashitaka
ProxyCommand ssh zengaku nc %h %p←zengaku(全学)のを中継するよ!っていう一文。zengakuは上で指定しているものを使用しています)

※投稿した後に気づいたけど、HostName,User,ProxyCommandの前には、タブが入ります... つぶれちゃってるので...

これで、1回コマンド打つだけで全学の計算機に接続、学部の計算機に接続、の2段階sshができる。
もちろん、パスワード認証は2回あるのでお気をつけを...
同様にscpも使えるらしいので、いい感じだね。やったね!

※ただ、中継するサーバにncが入ってないといけないらしい。これ注意な。(この場合、zengaku.ac.jpにncが入ってないといけないらしい)

参考ぺーじ
http://openlab.dino.co.jp/2009/05/28/235026555.html
SSH力をつけよう

TwitterのRT用のAPIって...

公式RTをするAPIはあるんだけど、
公式RTを解除するAPIってどうするんだろう?

公式RTのAPI:https://dev.twitter.com/docs/api/1/post/statuses/retweet/%3Aid

ツイートを削除する用のAPIで試してみたけど、消えないし...
謎い...

MacRubyとTwitterAPI

ツイートを検索して表示してみよう - MacRuby DoJo (道場)
上記サイトの通り、やってみようと思ったのだけど、どうもmacruby_deployでエラーが起こってしまう。
どうやら、gemを上手く読めないみたい?
$GEM_HOME、$GEM_PATHも変更してみたりしたけど、どうしてもうまく行かない...

何を間違っているんだろうか...

きっと原因さえわかれば他のライブラリを組み込んだりしていろいろできると思ったのだけど。
難しいなぁ

追記:
@watson1978に教えて頂きました。ありがとうございます!
uriは--stdlib uri と読みこめばいいらしい。

授業で久しぶりにschemeを触ったので、備忘録として。

授業ではscheme48って言うのを使ったんだけど、
ボクの知ってるschemeと若干処理系が違ったらしい。
first→car
rest→cdr
empty→nil, '()
ってなってた。

とりあえず、
末尾再帰関数に関して。
通常の再帰関数だと、

(define (list-sum list)
(cond ((null? list) 0)
(else (+ (car list) (list-sum (cdr list))))))

って書くよね。
これは、
(i)リストが空の時、0を返す。
(ii)それ以外のときは、リストの最初の数+ 残りのリストの合計値
再帰していく形なわけだ。

末尾再帰関数で書きなおすと、

(define (sum-iter list)
(define (calc sum list)
(cond
*1 (cdr list)))))
(calc 0 list))

となる。
これは、局所関数calcが
(i)リストが空の時、持っている合計値(sum)を返す。
(ii)それ以外のとき、再帰でcalcを呼び出す。このとき、sum= sum + リストの最初の値 list = 最初の値を除いた残りのリスト となる。
それで、sum-iterに与えられたリストに対して、sum=0でcalcを呼び出して、繰り返し処理をしているわけだ。

例 list = '(1 2 3 4) のとき。
1回目 sum = 0 , list='(1 2 3 4)
2回目 sum = 1 , list='(2 3 4)
3回目 sum = 3 , list='(3 4)
4回目 sum = 6 , list='(4)
5回目 sum = 10 list='()

普通の再帰関数と違うのは、戻り値での計算が無いこと。
普通の場合、 リストの最初の値+再帰関数の戻り値
ってなってるけど、
末尾再帰関数だと、最後は戻り値だけで返ってくるから早い。
その分のメモリを確保する必要が無いわけだ。
まぁ、高速化するときはこっちを使ったほうがいいんだっけ?

もう一つ、高階関数

授業でやったのはこんな感じだった

(define (double func)
(lambda (x) (func (func x))))

これを使って
((double add1) 0) #2
ってできたりする。
高階関数を使って、関数を返す関数を作ったわけですね。

いやー、それにしてもscheme面白いね・ω・

*1:null? list) sum) (else (calc (+ sum (car list