2008年3月29日土曜日

ただの白痴だろ。自炊しろ

http://tech.g.hatena.ne.jp/itkz/20080328/1206654763
そろそろこのテーマ、俺的にもまともに攻略しないといけないと思ってた矢先であった....ナイスタイミングだな(w



2008年3月27日木曜日

Rubyとそっくりな外観で値がすべてimmutableな言語があったとしたら

http://www.rubyist.net/~matz/20080320.html#p03


その言語欲しい!その言語キボンヌ!!
もともとオブジェクトに状態を持たせるなんてのが間違いなのよ



ゲーム好き、1人で食事

http://www.cm.kj.yamagata-u.ac.jp/blog/index.php?logid=8407


偏向以前というか...たいしたジャーナリズムだな(藁



量子情報ネットワーク実現につながる新実験

http://wiredvision.jp/news/200803/2008032623.html


スゲ、メインストリームの力技での開発風景ってこんな感じ?



ハウンドドッグ

http://d.hatena.ne.jp/aniota/20080325/1206447737


実はカラオケで友人の何を言ってるのかよくわかんないぐらい下手な歌しか聞いたこと無かった....いいコンテンツだな、だけどもう再生産されそうにないコンテンツだな



海腹川背portableがダメゲーだけど

http://slashdot.jp/it/article.pl?sid=08/03/25/0346241


うはは、カルドセプトの乱数作れないプログラムの会社じゃん、なぜ仕事してんの?



2008年3月26日水曜日

なぜテレビを見ないのか

http://chalow.net/2008-03-23-2.html
なぜテレビを見ないのかというと、私にはハッキリとした理由がある
あるとき実家に帰ったら、家族が全員サッカー好きになっていた
「あんなに野球好きだったのに、いつからサッカーの歴史語るようになったんだよ」とちょっと引いた
それ以降、別段たいした失点もなさそうなのに政治家に怒ったりするのを見るにつれて「やはりネットかな」と思うようになったのだ

本当だろうと嘘だろうと「自分から探しに行こう」と、よしんばそんな暇がなくても「信頼できる個人ニュースさんから情報を得よう」と...


無自覚に洗脳されるなんて耐え切れない、
「自分の命さえ自由にできないなら死んじまえばいいんだよ」とガッツさんも仰ってますよ?
全てのメッセージとは融合の果てにどこまで侵食され変容を受けるのかを、
対峙し闘争の過程で明らかにしなければ...あきらめが猫を殺すのです



なんてな(w



2008年3月24日月曜日

75億年前

http://blog.livedoor.jp/dqnplus/archives/1106203.html


この一時間のショーに、75億年の進化が間に合ってよかったな、近くにあった惑星も蒸発し甲斐が合ったってもんよ(w



2008年3月23日日曜日

「その数学が戦略を決める」を読んでるけど

プログレッサの話に感動した(泣



可憐な

可憐な女子高生と留年してる大学生が付き合い始めて....3ヶ月ぐらい経って大学生の部屋に遊びに来るのよ、それでなんとなくそわそわしてDVD見たりとか家事したりとかでなんか変な雰囲気に....
そして初めてのXXXX

「そのとき、彼女はティガレックスでした」「ええ、シッポ切るのとか超無理」

ってなマンガを冬目景風な感じで誰か書かないかなー



2008年3月19日水曜日

音楽業界史上最大の失敗は

http://slashdot.jp/articles/08/03/16/221201.shtml


調子こいて客を泥棒扱いにした挙句...って感じか



プログラミングGauche(ゴーシュ)を買う

ずーっとガウチって読んでた...あとLispのソースって読んでると眠くなるんだよねぇ...ま、それはともかく再帰のデバッグとか載ってるしCLOSがどういうノリなのかとか、そもそも最初のスタイルとしてどう書くのかみたいな話がとても面白い、



アップロード最終(?)版

package application;



import java.io.*;

import java.util.Hashtable;

import java.util.Properties;



import javax.mail.BodyPart;

import javax.mail.Session;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

import javax.servlet.ServletException;

import javax.servlet.ServletInputStream;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;



import org.apache.log4j.Logger;





public class upload_app extends HttpServlet{

/**

*

*/

private static final long serialVersionUID = 1L;

private static Logger logger = Logger.getLogger(upload_app.class);



public void doGet(HttpServletRequest request, HttpServletResponse response)

throws IOException, ServletException{

// doGet、書いてやらねー(w

}



public void doPost(HttpServletRequest request, HttpServletResponse response)

throws IOException, ServletException{

logger.info("upload_app start");

request.setCharacterEncoding("UTF-8");



// ユーザID(仮)

String strUSERID = "Set_USER";



try {

// ファイルのアップロード



ServletInputStream is=request.getInputStream();

ByteArrayOutputStream baos=new ByteArrayOutputStream();

PrintStream ps=new PrintStream(baos,true);

ps.print("Content-Type: " + request.getContentType());

ps.println(System.getProperty("line.separator"));



// リクエストデータをバイナリとして読み込み、JavaMailの機能を利用して本体部分を取得。

int i;

while((i=is.read())!=-1){baos.write(i);}

Properties prop=System.getProperties();

Session sess=Session.getDefaultInstance(prop);

MimeMessage msg=new MimeMessage(sess,new ByteArrayInputStream(baos.toByteArray()));





MimeMultipart mm = (MimeMultipart)msg.getContent();

int mmcount = mm.getCount();



for(int l=0;l
{

BodyPart body = mm.getBodyPart(l);

// 取得したバイナリデータからファイル名の部分を取り出す。

// ヘッダ部分はContent-Disposition: ... filename="...upload.dat"のような形式になっている

String[] ary=body.getHeader("Content-Disposition");

//form-data; name="userid"

//form-data; name="fl"; filename="C:\Documents and Settings\ito\デスクトップ\新規ビットマップ イメージ.bmp"



Hashtable ht = new Hashtable();

Hashtable ht_hedparm = new Hashtable();

for(int j=0;j
{

String[] ary2 = ary[j].split(";");

for(int k=0;k
{

String[] parms = ary2[k].split("=");

ht.put(parms[0].trim(), parms.length==1?"":parms[1].trim());

}

}



if(ht.containsKey("filename"))

{

// ファイル名のあるBodyPartも名前を持っている

//String n = ht.get("name").toString();



// ファイル名取得(文字化け対応済utf-8で来るものと仮定 Win-tomcatで確認)

//String filename_fullpath = new String(ht.get("filename").toString().getBytes("iso-8859-1"), "utf-8");

//String filename = filename_fullpath.substring(filename_fullpath.lastIndexOf('\\')+1, filename_fullpath.length());



// 取得したデータ本体部分を、取得したファイル名で/フォルダに格納し、アップロード結果を出力

InputStream stream=body.getInputStream();

File fl=new File("C:\\test.bin");//ht.get("filename").toString()

FileOutputStream fos=new FileOutputStream(fl);

while((i=stream.read())!=-1){fos.write(i);}

fos.close();

}

else

{

// ファイル名が無いBodyPartから、通常のパラメータを取得

//String n = ht.get("name").toString();

InputStream stream=body.getInputStream();

ByteArrayOutputStream bao = new ByteArrayOutputStream();

while((i=stream.read())!=-1){bao.write(i);}

bao.close();

String parmval = bao.toString("utf-8");

ht_hedparm.put(ht.get("name").toString(), parmval);

//logger.info(ht.get("name").toString() + ":" + parmval);

}

}

} catch (Exception ex) {

// ログ出力

logger.fatal("USERID:" + strUSERID,ex);

}

}

}



2008年3月15日土曜日

JAVAのファイルアップロード、commons使わない版

http://www.wings.msn.to/index.php/-/A-03/978-4-7980-1669-6/


のサーブレットでのファイルアップロードが塩っぱすぎるので書き直し

大体あんな書き方してたら、パラメータと供に渡せないじゃんよ、マルチパートを理解してないのが丸分かりだわさ

それなりに頑張って網羅してるのはいいんだけど....

もしかしてJ2EEのほうに書いてあったのでマニュアル探せなかったみたいなオチか?



public class sample_binup extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
private static Logger logger = Logger.getLogger(sample_binup.class);


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
  // doGet
}


public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
  logger.info("sample_binup start");
  request.setCharacterEncoding("UTF-8");


  // このパラメタの取り方は使えない
  //String strUSERID = (request != null) ? request.getParameter("userid") : "";


      try {
   // ファイルのアップロード


   ServletInputStream is=request.getInputStream();
   ByteArrayOutputStream baos=new ByteArrayOutputStream();
   PrintStream ps=new PrintStream(baos,true);
   ps.print("Content-Type: " + request.getContentType());
   ps.println(System.getProperty("line.separator"));
   
   // リクエストデータをバイナリとして読み込み、JavaMailの機能を利用して本体部分を取得。
   int i;
   while((i=is.read())!=-1){baos.write(i);}
   Properties prop=System.getProperties();
   Session sess=Session.getDefaultInstance(prop);
   MimeMessage msg=new MimeMessage(sess,new ByteArrayInputStream(baos.toByteArray()));


   MimeMultipart mm = (MimeMultipart)msg.getContent();
   int mmcount = mm.getCount();


   for(int l=0;l<mmcount;l++)
   {
    BodyPart body = mm.getBodyPart(l);
   
    // 取得したバイナリデータからファイル名の部分を取り出す。
    // ヘッダ部分はContent-Disposition: ... filename="...upload.dat"のような形式になっている
    // 例えば以下
    //form-data; name="userid"
    //form-data; name="fl"; filename="C:\Documents and Settings\ito\デスクトップ\新規ビットマップ イメージ.bmp"
    String[] ary=body.getHeader("Content-Disposition");
      
    Hashtable ht = new Hashtable();
    for(int j=0;j<ary.length;j++)
    {
     String[] ary2 = ary[j].split(";");
     for(int k=0;k<ary2.length;k++)
     {
      String[] parms = ary2[k].split("=");
      ht.put(parms[0].trim(), parms.length==1?"":parms[1].trim());
     }
    }
       
    if(ht.containsKey("filename"))
    {
     // 取得したデータ本体部分を、取得したファイル名で/フォルダに格納し、アップロード結果を出力
     InputStream stream=body.getInputStream();
     File fl=new File("C:\\test.bin");//ht.get("filename").toString()
     FileOutputStream fos=new FileOutputStream(fl);
     while((i=stream.read())!=-1){fos.write(i);}
     fos.close();   
    }
    else
    {
     // ファイル名が無いものを通常のパラメータとして扱う
     //String n = ht.get("name").toString(); //これでパラメータの名前は取れる
     InputStream stream=body.getInputStream();
     ByteArrayOutputStream bao = new ByteArrayOutputStream();
     while((i=stream.read())!=-1){bao.write(i);}
     bao.close();
     String parmval = bao.toString("utf-8");
     logger.info(ht.get("name").toString() + ":" + parmval);
    }
   }
  } catch (Exception ex) {
   // ログ出力
   logger.fatal(ex);
  }
}
}



クジラとカンガルーの取り扱いの違いについて

http://www.yomiuri.co.jp/world/news/20080313-OYT1T00721.htm


テキトーなこと言ってんじゃねーぞ、野蛮人が(w



2008年3月9日日曜日

カスケードスタイルシート

a.直接書く場合
<style type="text/css">
TABLE.c {
     border: 1px solid gray;
}
TH.c {
     border: 1px solid gray;
     padding: 5px;
     white-space: pre;
     width: 100%;
     background-color: #fffff0;
}
THEAD.c {
     background-color: #ccffcc;
}
TBODY.c {
     background-color: #bbbbff;
}
</style>



※ちなみにTHEAD.cにborderを設定しても無反応だったりする



b.ファイルに切り離す場合
<link rel="stylesheet" type="text/css" href="Maintenance.css" />



※Maintenance.cssの中身は以下
@CHARSET "UTF-8";
TABLE.c {
     border: 1px solid gray;
}
TH.c {
     border: 1px solid gray;
     padding: 5px;
     white-space: pre;
     width: 100%;
     background-color: #fffff0;
}
THEAD.c {
     background-color: #ccffcc;
}
TBODY.c {
     background-color: #bbbbff;
}



●CSS利用(class=cと書いてあるのがそれに相当する)
※切れ端なのでdataclassとかdatamakerとかを作らないと動かないけど(w
※ちなみにTHやTHEADを積極的に使うことによってTDでクラス分けしたりする手間が省けるかも
<TABLE class=c>
  <THEAD class=c>
    <TR>
      <TH>項目1</TH>
      <TH>項目2</TH>
    </TR>
    </THEAD>
  <TBODY class=c>
    <% for (int i=0; i<datamaker.size(); i++) {
  dataclass data = (dataclass)datamaker.get(i);
    %>
    <TR>
      <TD><%=data.koumoku1 %></TD>
      <TD><%=data.koumoku2 %></TD>
    </TR>
    <% } %>
  </TBODY>
</TABLE>
----------------------------------------------------------------------------
TABLE {
     border: 1px solid gray;
}


とクラス名つけずに書くと


<link rel="stylesheet" type="text/css" href="Maintenance.css" />
の一行でデフォルト適用される



はじめまして。中2男子の母です

http://madug.cocolog-nifty.com/weblog/2008/03/2_4f52.html


この後、2時間ドラマ並の息子の復讐とか起きないかな...チン毛、死ぬっしょ、うははは...奥さんJビーフッスよ!、がははは



ノルマを達成できそうもないので

http://akutoku.seesaa.net/article/87519143.html


謎の言い訳...そんなことがあるんだ(w



2008年3月7日金曜日

リア充

http://ja.uncyclopedia.info/wiki/%E3%83%AA%E3%82%A2%E5%85%85


いつもこの言葉を検索で調べるのに、ぜんぜん覚えられない....



ソフトウェア技術者の世界は脅迫に満ちている

http://d.hatena.ne.jp/naoya/20080306/1204801971


たしかにね



電気オートバイの疾走

http://jp.makezine.com/blog/2008/03/electric_motorcycle.html?CMP=OTC-T10K41815721


音が静かじゃん!!これはもう決まりだね



透明人間になれる

http://jp.makezine.com/blog/2008/03/invisible_clothing.html?CMP=OTC-T10K41815721


アートとして面白い...しかしそろそろ本物も出てきそうな



ようやく.NETのログ出し

app1.exeがあるとすると


app1.exe.configを作成して以下の内容を入れる


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics>
    <trace autoflush="true" indentsize="4">
      <listeners>
        <add name="delimitedListener"
          type="System.Diagnostics.DelimitedListTraceListener"
          delimiter=":"
          initializeData="test.log"
          traceOutputOptions="ProcessId,DateTime,Timestamp" />
        <remove name="Default" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>


これでどうよ



2008年3月6日木曜日

2008年3月1日土曜日

いつも見積もりの3倍時間が

http://q.hatena.ne.jp/1203667934
無能だ、3倍はやばい、せめて1.2倍ぐらいじゃないと...


しかし、私にもそんな時期がありました、
いつも破綻する計画、かならずモメるプロジェクト、そして怒ってる人人人、
これ以外の風景なんてこの業界には存在しないのか?
とすら絶望したものでした、昔々のお話でしたとさ、終わり



氷河期の猛吹雪マッチョ

http://d.hatena.ne.jp/fromdusktildawn/20080228/1204203051


ダンコーガイさんがジェットコースターに乗ってポージングしまくる絵が頭から離れない


http://www.youtube.com/watch?v=Pzx3j4wCB9M



ノキアの未来の携帯

http://slashdot.jp/mobile/article.pl?sid=08/02/27/036214
そうそう、このムービー見たかったのよ


で、記事中にもリンク先にもムービーがない....最近はこういう行儀の悪い記事が増えた喃


http://www.youtube.com/watch?v=IX-gTobCJHs



いかんなー

死神のバラッド。読んでたら涙腺がユルんで....歳か喃