- iPodで音楽を聴くのは外を歩いているときとCafeとかにいるときのみだ
- つまり連続して聞ける時間は長くても2時間、短いと20分程度だ
- そうすると自分のお気に入りの曲しかほとんど聞かない
- だから実際にはiPodにはきっと最近入手したばかりのアルバムの曲とお気に入りの200曲程度入れられれば十分だ
- むしろそれ以外の曲が入っていると邪魔な曲が多くなって、曲選択に無駄な時間を取られる
- おそらくこのことが分かっていても大量の曲を入れてしまうのは、結局選曲が面倒だからだろう
Thursday, September 23, 2010
music on iPod
music on iPod
Monday, September 20, 2010
Sunday, September 19, 2010
rake task
Rake taskがスクリプトの一元管理にも使えるということがわかったので、早速やってみる
ただ引数を取るスクリプトのやり方がよくわからない
ただ引数を取るスクリプトのやり方がよくわからない
task :default do
system("rake -T")
end
desc "Login to coosa's mac as user coosa"
task :login_coosamac do
system("ssh coosa@coosamac.local")
end
desc "Backup keyes's files to Bigmac, then mirror it to Eggmac"
task :backup_and_mirror_keyesmac => [:backup_keyesmac, :mirror_bigmac] do
puts "backup and mirror to Eggmac completed"
end
desc "Backup keyes's mac important files to Bigmac"
task :backup_keyesmac do
system("rsync -avz -e ssh --delete --exclude 'Library/Caches/' --exclude 'tmp/' --exclude '.Trash' --exclude '.mddata'
--exclude 'Library/Application Support/MobileSync/Backup/' /Users/keyes/ /Volumes/BIGMAC/backups/keyesmac/")
end
desc "Mirror Bigmac with Eggmac"
task :mirror_bigmac do
system("rsync -avz -e ssh --delete --exclude '.*' --exclude 'Desktop*' --exclude 'backups/' /Volumes/BIGMAC/ coosa@coo
samac.local:/Volumes/EGGMAC/backups/keyesmac/")
end
synegy file
.synegy.conf
synergy.sh
# sample synergy configuration file
#
# comments begin with the # character and continue to the end of
# line. comments may appear anywhere the syntax permits.
section: screens
keyesmac.local:
gos:
end
section: links
keyesmac.local:
left = gos
gos:
right = keyesmac.local
end
section: aliases
keyesmac.local:
keyesmac
end
synergy.sh
/usr/bin/synergys --name keyesmac --config .synergy.conf
Saturday, September 18, 2010
千趣会ブラインドが届いたんだけど…
不良交換ということで千趣会ブラインドが届いた
同じ製品がないということで別の製品が来る予定だったんだけど
全く同じ製品が届いた
まあ文句はないんだけど気をつけないとまたジョイント部分が破損するな
今回は回しすぎないようにとの注意書きが添えてあったので同じトラブルが多発したと予想
一方で取り付けは元の金具がそのまま使えたので簡単に済んで助かる
窓枠の木材が硬くてネジをねじ込むのにとても苦労したことを思い出した
同じ製品がないということで別の製品が来る予定だったんだけど
全く同じ製品が届いた
まあ文句はないんだけど気をつけないとまたジョイント部分が破損するな
今回は回しすぎないようにとの注意書きが添えてあったので同じトラブルが多発したと予想
一方で取り付けは元の金具がそのまま使えたので簡単に済んで助かる
窓枠の木材が硬くてネジをねじ込むのにとても苦労したことを思い出した
Processing to Hatena Diary
- Processingのfile->exportでxxx.jarファイルを生成
- iGoogle用のxmlファイルを作成(xxx.xmlを見よ)
- DropboxのPublicにxxx.jarとxxx.xmlを配置
- iGoogleでxxx.xmlをgadgetとして登録(コンテンツを追加->フィードやガジェットを追加, urlはxxx.xmlのpublic linkを指定)
- はてなの投稿ページにgadgetにアクセスするタグを追加(tagを見よ)
xxx.xml
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Fun of Processing!" height="460" />
<Content type="html">
<![CDATA[
<applet archive= "http://dl.dropbox.com/u/58702/bounce04.jar"
code="bounce04.class" width="320" height="460" ></applet>
]]>
</Content>
</Module>
tag
<div class="hatena-widget">
<script src="http://gmodules.com/ig/ifr?url=http://yoursite.jp/applet/yourgadget.xml&
synd=open&w=100&h=35&title=&border=%23ffffff%7C0px%2C0px+solid+%23ffffff&
output=js"></script> </div>
Friday, September 17, 2010
java applet
java appletのarchiveには絶対パスを指定する
<script type="text/javascript">
/* <![CDATA[ */
var attributes = {
code: 'bounce04.class',
archive: 'http://localhost:4567/applet/bounce04.jar',
width: 500,
height: 700,
image: 'loading.gif'
};
var parameters = { };
var version = '1.5';
deployJava.runApplet(attributes, parameters, version);
/* ]]> */
</script>
Wednesday, September 15, 2010
Processing: ballを止める
Ballクラスにboolean on_colliitonを持たせる
mag(x, y)はdist(0, 0, x, y)と等価
if (mag(vx, vy) < 0.3 && on_collition){
vx = vy = 0;
}
on_collition = false;
mag(x, y)はdist(0, 0, x, y)と等価
if (mag(vx, vy) < 0.3 && on_collition){
vx = vy = 0;
}
on_collition = false;
Tuesday, September 14, 2010
Processing: collition2
衝突でボールが離れなくなるバグ有り
float X1, X2, Y1, Y2;
float Spx1, Spy1, Spx2, Spy2;
int r;
void setup(){
size(400, 400);
colorMode(HSB, 100);
X1 = random(r, width-r);
X2 = random(r, width-r);
Y1 = random(r, height-r);
Y2 = random(r, height-r);
Spx1 = 5;
Spy1 = Spx1;
Spx2 = 3;
Spy2 = -Spx2;
r = 20;
frameRate(60);
smooth();
}
void draw(){
fadeToWhite(99, 100);
bounce();
collide();
X1 += Spx1;
Y1 += Spy1;
X2 += Spx2;
Y2 += Spy2;
fill(90, 60, 60, 90);
ellipse(X1, Y1, r*2, r*2);
fill(40, 60, 60, 90);
ellipse(X2, Y2, r*2, r*2);
}
void bounce() {
if (X1 <= r || X1 >= width-r){
Spx1 = -Spx1;
if (X1 <= r) { X1 = 2*r - X1; }
if (X1 >= width-r) { X1 = 2*(width-r) - X1; }
}
if (X2 <= r || X2 >= width-r){
Spx2 = -Spx2;
if (X2 <= r){ X2 = 2*r - X2; }
if (X2 >= width-r) { X2 = 2*(width-r) - X2; }
}
if (Y1 <= r || Y1 >= height-r){
Spy1 = -Spy1;
if (Y1 <= r) { Y1 = 2*r - Y1; }
if (Y1 >= height-r) { Y1 = 2*(height-r) - Y1; }
}
if (Y2 <= r || Y2 >= height-r){
Spy2 = -Spy2;
if (Y2 <= r){ Y2 = 2*r - Y2; }
if (Y2 >= height-r) { Y2 = 2*(height-r) - Y2; }
}
}
void collide() {
float dd = dist(X1, Y1, X2, Y2);
float min = r * 2;
if (dd <= min){
Spx1 = -Spx1;
Spy1 = -Spy1;
Spx2 = -Spx2;
Spy2 = -Spy2;
X1 = X1 - (min - dd);
X2 = X2 - (min - dd);
Y1 = Y1 - (min - dd);
Y2 = Y2 - (min - dd);
}
}
void fadeToWhite(int max_color, float fade_speed) {
noStroke();
fill(max_color, fade_speed);
rectMode(CORNER);
rect(0, 0, width, height);
}
Processing: collition
float X1, X2, Y;
float Sp1, Sp2;
int r;
void setup(){
size(400, 400);
colorMode(HSB, 100);
X1 = width/2 + 30;
X2 = width/2 - 30;
Y = height/2;
Sp1 = 5;
Sp2 = -Sp1;
r = 20;
frameRate(30);
smooth();
}
void draw(){
fadeToWhite(99, 100);
bounce();
collide();
X1 += Sp1;
X2 += Sp2;
fill(90, 60, 60, 90);
ellipse(X1, Y, r*2, r*2);
fill(40, 60, 60, 90);
ellipse(X2, Y, r*2, r*2);
}
void bounce() {
if (X1 <= r || X1 >= width-r){
Sp1 = -Sp1;
if (X1 <= r) { X1 = 2*r - X1; }
if (X1 >= width-r) { X1 = 2*(width-r) - X1; }
}
if (X2 <= r || X2 >= width-r){
Sp2 = -Sp2;
if (X2 <= r){ X2 = 2*r - X2; }
if (X2 >= width-r) { X2 = 2*(width-r) - X2; }
}
}
void collide() {
float dd = dist(X1, Y, X2, Y);
float min = r * 2;
if (dd <= min){
Sp1 = -Sp1;
Sp2 = -Sp2;
X1 = X1 - (min - dd);
X2 = X2 - (min - dd);
}
}
void fadeToWhite(int max_color, float fade_speed) {
noStroke();
fill(max_color, fade_speed);
rectMode(CORNER);
rect(0, 0, width, height);
}
Subscribe to:
Posts (Atom)