Windows環境でCUIのGitを使うならGit for WindowsとPuTTYを組み合わせて使うのがいいかんじです。なんかあんまし日本語情報が無い気がするので適当に書いておきます。
両方をインストールして、まずは環境変数GIT_SSHにplink.exeへのパスを登録しておく。*1
公開鍵暗号方式で通信するには
どっちか。
putty.exeから接続先を設定しておく。例えば接続先github.com、ログイン名git、あと秘密鍵をgithubというセッション名で保存しておくと以下のように接続先を指定できる。
$ git clone github:hogelog/private-gyazo-kit.git
pageantを起動して秘密鍵を追加しておくと以下のようにして接続先を指定できる。
$ git clone git@github.com:hogelog/private-gyazo-kit.git
個人的にはpageant起動しておく必要ないのでホスト情報を登録しておく方法が好みです。
*1:Windows形式で"C:\Program Files\PuTTY\plink.exe"、もしくはMSYS形式でもどっちでもいい
電子工作やらマイコンなるものはほぼ触ったことがないのだが初めてArduino UNOなるものをいじってみようと思う。前提知識が全くない。全くないのでとりあえずArduino公式サイトを見るとGetting Startedなる良さ気な文献があるのでそれに沿って進めてみる。このチュートリアル自身もCC3.0で公開してるし、Arduinoの人達は偉いなー。
丁寧に書いてあったのでそれに沿ってサクッと。
Exampleの中にあった、LEDを点滅させるプログラム。
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
This example code is in the public domain.
*/
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(13, LOW); // set the LED off
delay(1000); // wait for a second
}
動かすと、Arduino UNOボードにのっているLEDの一つが1秒間隔ぐらいで点滅。
LEDに繋がっているピン13を出力ピンとして認識、HIGHを書いたときにLEDが点灯、LOWを書くと消灯するのだろう。
いくつか浮かんだ疑問と回答
LED: 13. There is a built-in LED connected to digital pin 13. When the pin is HIGH value, the LED is on, when the pin is LOW, it's off.
#include <Arduino.h>
int main() {
init();
setup();
for (;;)
loop();
return 0;
}
void setup() {
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
}
void loop() {
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
delay(1000);
}
12,13ピンを1秒間隔で交互にHIGHにする。LEDとか繋ぐと交互に点滅。
そんなこんなでArduinoプログラミングしていましたら4月9日になり28歳になっていました。もうすぐ30代だなー。
奥さんとのコミュニケーションにはfacebookチャットを活用しています。メールはやりとりの速度が遅い、SMSとかは特定の環境に依存している。というわけで、ブラウザからも使えるし各種専用クライアントもあるようなインフラを採用。以前はGoogleトークを使っていたのですが、最近Facebookチャットに移行。
facebookチャットはXMPPを利用しているので、XMPP対応しているメッセンジャーアプリならだいたい利用できます。まあ色々あるわけですけど
こんな感じのものを使っています。経路が多いし検索とかもウェブからサクッとできるので便利です。
XMPPから使うとグループチャットが扱えない(もしかしたら使えるのかもしれないけど知らない)のだけがちょっと不便なところかな。もうメールなんてシステム捨てましょう。
hogelog/simple-kestrel-client ? GitHub
spymemcachedはKestrelで扱うとなんかどうもうまくない。xmemcachedはKestrel対応もしているとは書いてあるけど、なんだかどうもやっぱりpeekとかtimeoutとかを設定するとちゃんと動かない。とりあえず適当に書きなぐってみた。deleteとか他にも色々書いてないし色々適当。
こんな感じ。普通に使える。memcachedクライアントをkestrelクライアントとして使うのは悪手なのかなー。
public class SimpleKestrelClientTest { @Test public void set_peek_get_peektimeout_gettimeout() throws Exception { Socket socket = new Socket("127.0.0.1", 22133); SimpleKestrelClient client = new SimpleKestrelClient(socket); client.set("hoge", "hoge\r\nhoge"); assertThat(client.peek("hoge"), is("hoge\r\nhoge")); assertThat(client.get("hoge"), is("hoge\r\nhoge")); assertThat(client.get("hoge"), is(nullValue())); new Thread(){ @Override public void run() { try { Socket socket = new Socket("127.0.0.1", 22133); SimpleKestrelClient client = new SimpleKestrelClient(socket); Thread.sleep(1000); client.set("hoge", "hogefuga"); Thread.sleep(1000); client.set("hoge", "hogemoge"); } catch (Exception e) { e.printStackTrace(); } } }.start(); assertThat(client.peek("hoge", 5000), is("hogefuga")); assertThat(client.get("hoge"), is("hogefuga")); assertThat(client.get("hoge"), is(nullValue())); assertThat(client.get("hoge", 5000), is("hogemoge")); } }
割とわけのわからない挙動をする。
@Test
public void xmemcached_set_peek_get_peektimeout_gettimeout() throws Exception {
final XMemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("127.0.0.1:22133"));
builder.setCommandFactory(new KestrelCommandFactory());
SerializingTranscoder transcoder = new SerializingTranscoder();
transcoder.setCharset("UTF-8");
builder.setTranscoder(transcoder);
final MemcachedClient client = builder.build();
client.setOpTimeout(5000);
client.set("moge", 0, "aaaaa");
client.set("hoge", 0, "hoge\r\nhoge");
assertThat(String.class.cast(client.get("hoge/peek")), is("hoge\r\nhoge"));
assertThat(String.class.cast(client.get("hoge")), is("hoge\r\nhoge"));
assertThat(String.class.cast(client.get("hoge")), is(nullValue()));
new Thread(){
@Override
public void run() {
try {
Thread.sleep(1000);
client.set("hoge", 0, "hogefuga");
Thread.sleep(1000);
client.get("moge/peek");
client.set("hoge", 0, "hogemoge");
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
assertThat(String.class.cast(client.get("hoge/peek/t=5000")), is("hogefuga"));
assertThat(String.class.cast(client.get("hoge")), is("hogefuga"));
assertThat(String.class.cast(client.get("hoge")), is(nullValue()));
assertThat(String.class.cast(client.get("hoge/t=5000")), is("hogemoge")); // 何故かこここでmogeにセットした"aaaaa"という文字列が得られる
}
追う気もしないので適当に自前で書いてみましたとさ。
WSH経由で起動して表示させないようにするのが楽。ddms.batに限らない。
ddms.jsなどとしてスタートメニューなりなんなり適当なところに置いてこのスクリプト経由で起動すると良い。
var shell = WScript.CreateObject("WScript.Shell"); shell.Run("C:/Android/android-sdk/tools/ddms.bat", 0);
当然だがddms.batの場所はインストール先により変わる。