友人が永眠しました。
出会ってから33年が経ちます。時々道が交差することもありましたがほとんどは付かず離れずでした。
工場に配属の同期です。同じレコード関連ですが、彼は原材料、私は検査機、が仕事でした。
入社当時、仕事以外は何でも一緒、放課後の遊びも晩飯も、洗濯機を持っていた彼のところに洗濯物を持って厄介になりました。
終業ベルを待ってタイムレコーダーをガチャン、で会社を飛び出してスケボーに。
朝私を起こすのも彼の役目でした。
VHDを始めて半年たったら今度はCDをやると突然の進路変更です。
原盤を製作する為の準備で彼がいろいろな装置をでっち上げました。
私は規格書を読んで測定機を作るのが担当でした。
本社には巨頭が沢山いましたが、
皆さんはLDの仕事が忙しくCDに関しては勝手にやらせてもらった感じです。
82年の発売後、手書きのスタンパー刻印の代わりのプリンターを作ることになり、メカの設計を彼が行い
御殿場の工場にも納入しました。同じ装置に携わった少ない一こまです。
その後米国で製造することになりそのための準備でてんやわんやの忙しさに。
彼は7人の赴任者の一員で現地にアパートを借りました。
私は出張で長逗留、一緒にナイアガラ、ディズニーワールド、ラスベガス等々。
生まれたばかりの赤ん坊を連れて奥さんが空港に到着したのを出迎えました。
多分その後息子さんに会ったのは先日の病院でになります。
85年テッドターナーの買収騒ぎがあり、資金調達の為に米国の工場は日本の会社に買われました。
居残ったのは2人、その他は日本に帰って、今度は欧州の工場の立ち上げに関わりました。
彼が日本で借りていた住宅を私が引き継いで借りました。
米国帰任で持ってきた大きなテーブル、椅子付きを餞別代わりに買い取りました。
89年インラインのCD製造装置を作りました、彼も担当するはずだったのですが、
帰任した彼はマスタリングのインライン装置の方に携わります。
翌年90年、最初の発病で入院しました。
93年の子会社設立から同じ穴の狢になりました。
遊び仲間復活です。地球1周の出張も一緒の時がありました。
サンフランシスコに出張したときレンタカーでヨセミテ経由でロスまでドライブしました。
後部座席で楽をして、そのときの拾った松ぼっくりが残っています。
それ以来何度もの危機を乗り越えて今に至りますから今度も大丈夫と思っていたのですが。
2009年12月20日日曜日
2009年11月23日月曜日
ナンバープレース
新聞に毎週ナンバープレースと言うゲームが載っています。試しに解いてみたらプログラム化出来そうなので作ってみました。NumAを呼び出すときに引数を渡さなければ下記のnumbが問題とされます。引数ととして9x9の整数配列を渡す事も出来ます。いずれにしても回答が帰ります。途中結果の表示の箇所はコメントで無効化しています。これをJSPで読み出して使っています。まだ保管が出来ないので改造する予定ですが、、、ペーストして見たらインデントが消えていました。見づらいですけど編集も面倒なので。。
public class NumA {
static int[][] numb = {
{1,0,0,2,4,0,0,0,0},
{2,0,8,0,0,6,3,0,0},
{6,0,0,0,3,0,4,0,5},
{0,0,0,0,0,5,0,6,0},
{4,7,0,0,9,0,0,1,3},
{0,3,0,8,0,0,0,0,0},
{7,0,2,0,8,0,0,0,9},
{0,0,9,4,0,0,5,0,8},
{0,0,0,0,6,7,0,0,2}};
public static void main(String[] args){
int[][] numr = new int[9][9];
int i,j;
//問題の配列を表示
for (i=0; i<9; i++){
System.out.print("\n");
for (j=0; j<9; j++)
System.out.print(numb[i][j]+",");
}
NumA num = new NumA();
numr = num.NumA(numb);
//答えの配列を表示
for (i=0; i<9; i++){
System.out.print("\n");
for (j=0; j<9; j++)
System.out.print(numr[i][j]+",");
}
}
public int[][] NumA(int[][] numb){
int[][] numr = new int[9][9];//解析用
int[][] numc = new int[9][9];//変化の比較用
int[][][] result = new int[9][9][9];
int[] judg = new int[10];//判定用の配列 [9]が評価数値、0は要推定 [0~8]に1-9を入れて比較
int[] mark = new int[10];//判定用のマーク
int count = 0;//loopカウンター
int b,c;
int m,n;
int i,j,k;
//問題の配列をコピー
for (i=0; i<9; i++)
for (j=0; j<9; j++)
numc[i][j] = numr[i][j] = numb[i][j];
//問題の配列を表示
// for (i=0; i<9; i++){
// System.out.print("\n");
// for (j=0; j<9; j++)
// System.out.print(numr[i][j]+",");
// }
//評価
do{
//結果の配列をクリアー
for (i=0; i<9; i++)
for (j=0; j<9; j++)
for (k=0; k<9; k++)
result[i][j][k]=0;
for (m=0; m<9; m++){//行を指示
for (n=0; n<9; n++){//列を指示
judg[9]= numr[m][n];//判定用の配列judg[9]に評価数値を代入
if (judg[9] == 0){//評価数値が0なら判定作業
for (i=0; i<10; i++)//判定用のmark[0..9]に0-9を入れる
mark[i] = i;
//行判定
for (i=0; i<9; i++)//判定用の配列judg[0..8]にnumrの行を代入
judg[i]=numr[m][i];
for (i=0; i<9; i++)//数値が有ればmarkの該当位置に0を入力
if (judg[i] != 0)
mark[judg[i]]=0;
//列判定
for (i=0; i<9; i++)//判定用の配列judg[0..8]にnumrの列を代入
judg[i]=numr[i][n];
for (i=0; i<9; i++)//数値が有ればmarkの該当箇所に0を入力
if (judg[i] != 0)
mark[judg[i]]=0;
//ブロック判定
int bx = m/3;
int by = n/3;
for (i=0; i<9; i++)//判定用の配列judg[0..8]にnumrのブロックを代入
judg[i]=numr[bx*3+i/3][by*3+i%3];
for (i=0; i<9; i++)//数値が0が有ればばmarkの該当箇所に0を入力
if (judg[i] != 0)
mark[judg[i]]=0;
//推定される数値の数が1なら確定
j=0;
for (i=0; i<10; i++)//マークの空白=0以外を数える
if (mark[i] != 0){
result[m][n][j]=mark[i];
j++;
}
if (j == 1){//確定
numr[m][n]=result[m][n][0];
// System.out.print("\ndecidea:"+ m +":"+ n +"/"+numr[m][n]);
}
}//判定
}//n-loop
}//m-loop
//結果表示
// for (i=0; i<9; i++){
// System.out.print("\n");
// for (j=0; j<9; j++)
// System.out.print(numr[i][j]+",");
// System.out.print("..");
// for (j=0; j<9; j++)
// for (k=0; k<9; k++){
// if (result[i][j][k] != 0)
// System.out.print(result[i][j][k]+".");
// }
// }
//変化をチェック
b=c=0;
for (i=0; i<9; i++)
for (j=0; j<9; j++){
if (numc[i][j] == numr[i][j])
c++;
if (numr[i][j] == 0)
b++;
}
//今回の結果をコピー
for (i=0; i<9; i++)
for (j=0; j<9; j++)
numc[i][j] = numr[i][j];
// System.out.print("\nm,c,b="+m+","+c+","+b);
}while((count++ < 100) && (c != 81));
return numc;
}
}
public class NumA {
static int[][] numb = {
{1,0,0,2,4,0,0,0,0},
{2,0,8,0,0,6,3,0,0},
{6,0,0,0,3,0,4,0,5},
{0,0,0,0,0,5,0,6,0},
{4,7,0,0,9,0,0,1,3},
{0,3,0,8,0,0,0,0,0},
{7,0,2,0,8,0,0,0,9},
{0,0,9,4,0,0,5,0,8},
{0,0,0,0,6,7,0,0,2}};
public static void main(String[] args){
int[][] numr = new int[9][9];
int i,j;
//問題の配列を表示
for (i=0; i<9; i++){
System.out.print("\n");
for (j=0; j<9; j++)
System.out.print(numb[i][j]+",");
}
NumA num = new NumA();
numr = num.NumA(numb);
//答えの配列を表示
for (i=0; i<9; i++){
System.out.print("\n");
for (j=0; j<9; j++)
System.out.print(numr[i][j]+",");
}
}
public int[][] NumA(int[][] numb){
int[][] numr = new int[9][9];//解析用
int[][] numc = new int[9][9];//変化の比較用
int[][][] result = new int[9][9][9];
int[] judg = new int[10];//判定用の配列 [9]が評価数値、0は要推定 [0~8]に1-9を入れて比較
int[] mark = new int[10];//判定用のマーク
int count = 0;//loopカウンター
int b,c;
int m,n;
int i,j,k;
//問題の配列をコピー
for (i=0; i<9; i++)
for (j=0; j<9; j++)
numc[i][j] = numr[i][j] = numb[i][j];
//問題の配列を表示
// for (i=0; i<9; i++){
// System.out.print("\n");
// for (j=0; j<9; j++)
// System.out.print(numr[i][j]+",");
// }
//評価
do{
//結果の配列をクリアー
for (i=0; i<9; i++)
for (j=0; j<9; j++)
for (k=0; k<9; k++)
result[i][j][k]=0;
for (m=0; m<9; m++){//行を指示
for (n=0; n<9; n++){//列を指示
judg[9]= numr[m][n];//判定用の配列judg[9]に評価数値を代入
if (judg[9] == 0){//評価数値が0なら判定作業
for (i=0; i<10; i++)//判定用のmark[0..9]に0-9を入れる
mark[i] = i;
//行判定
for (i=0; i<9; i++)//判定用の配列judg[0..8]にnumrの行を代入
judg[i]=numr[m][i];
for (i=0; i<9; i++)//数値が有ればmarkの該当位置に0を入力
if (judg[i] != 0)
mark[judg[i]]=0;
//列判定
for (i=0; i<9; i++)//判定用の配列judg[0..8]にnumrの列を代入
judg[i]=numr[i][n];
for (i=0; i<9; i++)//数値が有ればmarkの該当箇所に0を入力
if (judg[i] != 0)
mark[judg[i]]=0;
//ブロック判定
int bx = m/3;
int by = n/3;
for (i=0; i<9; i++)//判定用の配列judg[0..8]にnumrのブロックを代入
judg[i]=numr[bx*3+i/3][by*3+i%3];
for (i=0; i<9; i++)//数値が0が有ればばmarkの該当箇所に0を入力
if (judg[i] != 0)
mark[judg[i]]=0;
//推定される数値の数が1なら確定
j=0;
for (i=0; i<10; i++)//マークの空白=0以外を数える
if (mark[i] != 0){
result[m][n][j]=mark[i];
j++;
}
if (j == 1){//確定
numr[m][n]=result[m][n][0];
// System.out.print("\ndecidea:"+ m +":"+ n +"/"+numr[m][n]);
}
}//判定
}//n-loop
}//m-loop
//結果表示
// for (i=0; i<9; i++){
// System.out.print("\n");
// for (j=0; j<9; j++)
// System.out.print(numr[i][j]+",");
// System.out.print("..");
// for (j=0; j<9; j++)
// for (k=0; k<9; k++){
// if (result[i][j][k] != 0)
// System.out.print(result[i][j][k]+".");
// }
// }
//変化をチェック
b=c=0;
for (i=0; i<9; i++)
for (j=0; j<9; j++){
if (numc[i][j] == numr[i][j])
c++;
if (numr[i][j] == 0)
b++;
}
//今回の結果をコピー
for (i=0; i<9; i++)
for (j=0; j<9; j++)
numc[i][j] = numr[i][j];
// System.out.print("\nm,c,b="+m+","+c+","+b);
}while((count++ < 100) && (c != 81));
return numc;
}
}
2009年9月23日水曜日
祝辞
就職したときの入社式のtop3人の挨拶です。
毎回同じことを話すらしいので聞いた方もいるかも知れません。
その1
会社が自分に合わないと感じたら・・
人生は長い、本人にも会社にも不幸、だから辞める事を。
その2
目の見えない人達が象にさわって、
ある人は鼻が長い、ある人は大きな足、ある人はざらざらの肌、
どれも当たっているがどれからも象のことは分からない。
こういうのを群盲象をなでると言う。
その3
水辺に馬を連れて行く事は出来るけれど
水を飲む呑まないは馬の意志。
聞いて肩の力が抜けました。
来年から年金生活になりますが、止めずに済んだのはこのおかげも有るかもです。
毎回同じことを話すらしいので聞いた方もいるかも知れません。
その1
会社が自分に合わないと感じたら・・
人生は長い、本人にも会社にも不幸、だから辞める事を。
その2
目の見えない人達が象にさわって、
ある人は鼻が長い、ある人は大きな足、ある人はざらざらの肌、
どれも当たっているがどれからも象のことは分からない。
こういうのを群盲象をなでると言う。
その3
水辺に馬を連れて行く事は出来るけれど
水を飲む呑まないは馬の意志。
聞いて肩の力が抜けました。
来年から年金生活になりますが、止めずに済んだのはこのおかげも有るかもです。
2009年9月18日金曜日
galileoの苦労話
galileoをdellのデスクトップにインストしてスイスイで気を良くして、ノート(think-pad)にも入れてみましたがvmのエラーが出て起動しません。メモリーが不足してるみたいですがdellは780M、tpは760Mで不足してるとも思えないし、滅多に見ないreadmeをみると256M有れば動くようです。でもあれこれ覗いて処置方法を発見。
以下が解凍して出来るeclipse.iniの中身です。最後の-Xmx512mを-Xmx256mにしたら立ち上がりました。pluginを追加していくとメモリ-不足が発現しないか心配です。
-startup
plugins/org.eclipse.equinox.launcher_1.0.200.v20090520.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-product
org.eclipse.epp.package.jee.product
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
3.2と違いdropinsと言うホルダーが出来てtomcatのプラグイン
com.sysdeo.eclipse.tomcat_3.2.1
はここに入れないとだめでした。
pluginsとfeatures、さらにdropins ・・区別が分かりません。
以下が解凍して出来るeclipse.iniの中身です。最後の-Xmx512mを-Xmx256mにしたら立ち上がりました。pluginを追加していくとメモリ-不足が発現しないか心配です。
-startup
plugins/org.eclipse.equinox.launcher_1.0.200.v20090520.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-product
org.eclipse.epp.package.jee.product
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
3.2と違いdropinsと言うホルダーが出来てtomcatのプラグイン
com.sysdeo.eclipse.tomcat_3.2.1
はここに入れないとだめでした。
pluginsとfeatures、さらにdropins ・・区別が分かりません。
2009年9月16日水曜日
strutsの苦労話
10年以上ぶりでプログラムを書きたいと思い、無料で配布しているものを物色しましたが、rubyにしようかjavaにしようかcにしようかはたまた。。といろいろ試して、どれも中途半端でダウンロードしたファイルの山がPCに溜まって。。結局eclipse3.2の本を借りたのでしばらく試して観ましたが、strutsが上手く動かず、そうこうしていたらガリレオが出てきました。それで性懲りもなくダウンロードして、ついでにtomcatも6にアップ。いつもは最新版は信用していないのですが、galileoは使ってみて使い勝手も安定性も3.2よりは格段に優れています。(何倍と言えませんが)。wtpで動くサーバーも安定しているしeclipse上で動くブラウザーも別に動いているファイアーフォックスもすいすいです。
で気を良くして・・@いう間にwebアプリを作れる・・を参考にstruts2に挑戦。2.1.6をDLしてtomcatのlibに必要ファイルを追加。参考ファイルをコピペして動かすと何か変。基本が分かっていないのでエラーメッセージを見ても何が変なのか良く分かりません。しばらくソースを眺めていたら”と"が間違えている事に気が付き修正して一件落着。日本語を挟む”が全角になっていてjspの解釈がエラーになっていました。この著者もtomcatとeclipseを推奨してますがOSは何を使っているのか分かりません。”が全角でもエラーにならない方法が有るのか・・不思議。フォントがTTになって画面上では半角か全角か判別が難しくなりました。
で気を良くして・・@いう間にwebアプリを作れる・・を参考にstruts2に挑戦。2.1.6をDLしてtomcatのlibに必要ファイルを追加。参考ファイルをコピペして動かすと何か変。基本が分かっていないのでエラーメッセージを見ても何が変なのか良く分かりません。しばらくソースを眺めていたら”と"が間違えている事に気が付き修正して一件落着。日本語を挟む”が全角になっていてjspの解釈がエラーになっていました。この著者もtomcatとeclipseを推奨してますがOSは何を使っているのか分かりません。”が全角でもエラーにならない方法が有るのか・・不思議。フォントがTTになって画面上では半角か全角か判別が難しくなりました。
2009年1月8日木曜日
QP
たまにはと言う事でモスに行きました。とびきりハンバーグサンド、の張り紙が目に付き食べてみました。国産牛のパテ90gが売り物です。ロッテリアの絶品チーズバーガー対策だと思いますがこちらはまだ食べていないので比較は書けません。モスのとびきりハンバーグサンドですが、バンズが弱い、パテが薄味、デミグラスソースが食べずらいで、ちょっとがっかりでした。このときマックのクオーターパウンダーの話題が出て、やらせの行列が出来た、と聞きました。買って即道ばたで食べてたから間違いなくやらせだよね、との事です。2年くらい前にQP(クオーターパウンダーの事)が食べたいけどアメリカまで食べに行く気はないし、と書きましたが、日本でも食べれる状況に感謝です。ビッグマックも同じようなパテの量ですが、食べやすさはQPに譲ります。ビッグマックは厚すぎます。今度QPを食べに行こうと思います。味の比較はその後で。
登録:
投稿 (Atom)
