Thursday, September 23, 2010

music on iPod

music on iPod
  • iPodで音楽を聴くのは外を歩いているときとCafeとかにいるときのみだ
  • つまり連続して聞ける時間は長くても2時間、短いと20分程度だ
  • そうすると自分のお気に入りの曲しかほとんど聞かない
  • だから実際にはiPodにはきっと最近入手したばかりのアルバムの曲とお気に入りの200曲程度入れられれば十分だ
  • むしろそれ以外の曲が入っていると邪魔な曲が多くなって、曲選択に無駄な時間を取られる
  • おそらくこのことが分かっていても大量の曲を入れてしまうのは、結局選曲が面倒だからだろう

Monday, September 20, 2010

iphone size size(320, 460);

iphone size size(320, 460);

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
# 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

  1. Processingのfile->exportでxxx.jarファイルを生成

  2. iGoogle用のxmlファイルを作成(xxx.xmlを見よ)

  3. DropboxのPublicにxxx.jarとxxx.xmlを配置

  4. iGoogleでxxx.xmlをgadgetとして登録(コンテンツを追加->フィードやガジェットを追加, urlはxxx.xmlのpublic linkを指定)

  5. はてなの投稿ページに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

昔のiPodの電卓

こっちのほうがよかったのに

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;

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);

}