改め Objective Technician

はぐれ技術者のやりたい放題

押してだめなら引いてしまえ

2007-09-26 22:02:18 | 陸上競技
9月24日(Mon) 利府 午前

棒高練習


9月26日(Wed) 評定 午後

棒高練習



結局、技術の完成が間に合わなかった。


このままだとNMになる可能性が高い。



ポールにしがみつく昔の跳び方に戻そうとしても、腕伸ばしてポールにぶら下がる感覚が身についちゃってるからムリ。

そして、ポールにぶら下がってから振り上げる動作が未完成。練習でも一回も出来てない。


だから、応急処置的な跳び方でなんとか記録を残す。


スタンスをかなり狭くして右肩が入りやすくして、硬め(15ft-160lbs)のポールでほとんど曲げないで、ポールからの早めの反発を作ってその一瞬の反動で振り上げる。
練習してきたことに逆らって左手を引く。

ほとんど竹跳びになると思う。


感覚としては、七大戦の3m70のときみたいに無意識のうちにいつのまにか一瞬でポールに跳ばせてもらうような、体に負荷がかからない跳躍がいい。




でもそれが出来たとしても1回だけならまぐれかもしれない。





左手がジャマ

2007-09-20 20:54:13 | 陸上競技
ハンパじゃねぇ。


グティのスピード。



評定から利府まで、なんと37分25秒で到着してしまった。

自己記録を5分以上更新!!


すげぇ。なんて速い自転車なんだ。











9月20日(木) 快晴 暑

自転車17km

ストレッチ
ドリル
ポールワーク

短助走跳躍練習
6歩、12m30、14ft-150lbs
握り3m70ぐらい
踏み切り3m10ぐらい

いっぱい

c-down

自転車17km



午後錬 青葉山

研究室対抗駅伝練習





全助走跳躍をまとめるつもりだったけど、相変わらず振り上げられないので短助走で何回も練習。


ドライブの反動をスムーズに振り上げにつなげるためには、左手で支点を作らないこと。振り上げるときの支点は右肩の1点だけ。支点が二つあると体が固定されちゃって絶対に振り上げられない。

左手のつっぱりを消して右肩を入れて、足を後ろに振ってスイングを開始したら反動を使って一気に振り上げる。肩と腰の位置を入れ替えて…ってのが今のところ理想。

肩を前へ前へドライブさせて反動を作る直前まではだいたい出来てる。
そんで、一瞬遅らせて反動を使って振り上げるところのタイミングもだいたいいい。



そっから振り上げが中途半端になっちゃう。てか、腰が絶望的に乗ってない。それよりも、左手がジャマ。


左手で押す方向も、右手と同じで後ろななめぐらいにできればいいんだけど、まだ前方向の力が入っちゃう。


たぶん、このままだと22大に間に合わん。


左手の力を全部抜くか、それかスタンスを前みたいにかなり狭くするか。


時間が足りない!!

左手がジャマ!!











今日ポール送るつもりだったのに、佐川から「今日はムリ」って言われた。しょうがないから利府に置かせてもらって来週の月曜日にもっかい利府行ってそんで値引きバトルしてくる。
レンタカー借りたのに一人自転車で行った意味がないじゃないか。

なんか、ウチが佐川のブラックリストに載ってるんじゃないかって気がしてきた。



関係ないけど、洗濯機が脱水だけできなくなった。脱水メソッドに制御が移った瞬間にバグが発生して落ちる。なんだよ。洗濯機のくせに。

さらに関係ないけど、なんで蚊ってやつはくるぶしとかアキレス腱とかヒザの裏とか鎖骨とか、いやらしいとこばっか刺すんだ。

蚊のくせに。



練習日誌

2007-09-19 23:21:10 | 陸上競技
9月19日(Wed) 評定 小雨 涼

jog
ストレッチ
ラダー
バウンディング

c-down



明日利府で跳びまくるからすげぇ軽め。

跳躍練習してそのまま利府から甲府にポール送るけど、佐川がかなりの確率で時間通りに来ないことが予想される。佐川来るまで待ってなきゃいかんから今回は一人自転車。

新しいグティだと何分で行けるのか楽しみだぜ。

目指せ自己記録(43分09秒)更新!!



そういえば月曜日に宮城野で福祉のボウルターに会って、明日の利府練誘ってみたら、さっき「行く」って返事が来た。

いいのか?福祉はもう授業じゃないのか?

力技

2007-09-18 21:20:58 | プログラミング
あらゆる問題に直面したときに有効かもしれないが決して美しくない対処法。


例えばポールを自転車で利府まで運んだり、自転車で埼玉まで行ったり、助走スピードと踏み切りの破壊力だけで4m以上跳んだり…



プログラミングでいうと、少し頭を使ってロジックを考えれば数十行で実現できてしまいそうな機能を、頭を使わずループにも頼らずにただ己のタイピングスピードとコピー&ペーストの力によって数百行~数千行のコードとともに実現するという狂気の沙汰とも思える実装手法のこと。


昔はプログラムの行数でソフトウェアの値段が決まってたらしくて、プログラマーの間でこの力技がひそかに行われていた、というのはたぶんただのウワサ。



しかも、ベタ書きで実装しているからといってループを使っていないとは限らない。


例えば、何百、何千という項目すべてに同じチェックをかける処理をループを使わずにベタ書きでコーディングする場合、別にソース書いて


for(i = 0; i <1000; i++)

みたいにしてファイル出力すれば、


「要素1000個の配列を初期化するベタ書きコード」が生成できてしまうから。


それに、ライン数が膨大だからといって実行速度が遅くなるわけではないところがトレンディ。





バイトで、あるシミュレーションプログラムのパラメータフィッティング頼まれたけど、同じこと力技で何回も手作業でやるようならそれ用のプログラム書いて自動化しちゃえばいい。人間様はラクをするべきだ。


さっき完成したパラメータフィッティングプログラムが、今バックグラウンドで実行中。たぶん寝てる間に終わる。





割のいいバイトだけど、でも絶対にプログラマーを本職にはしたくないと思う。


ガリ銭

2007-09-17 20:19:14 | ムダ話
ガリガリ君かじって当たった「ガリ銭」。


ヤフオク見てみたら意外と人気あるんだね。



  




練習日誌

9月17日(Mon) 宮城野 小雨 涼

ストレッチ
ドリル

流し150m×3
スタブロ
助走練習

ウェーブ走
150m×3×2

c-down



最初の50mだけがんばって、あとはリラックスしてスピード維持。

技術練習ばっかでだいぶ走練習してないけと、ポイントは外してないから大丈夫。



左手は添えるだけ

2007-09-14 17:57:37 | 陸上競技
練習日誌

9月24日(Fri) 評定 晴れ 暑

jog
ストレッチ
ドリル
ポールワーク
4歩、6歩、ぶら下がり、振り上げ、曲げ

短助走跳躍練習

6歩(12m50)
14ft-150lbsスピリット
握り3m60
ゴムバー3m80

たぶん50本ちかく跳んだ


c-down



空中動作の練習。

いままで、ポールを曲げようとして左手を突っ張ってたから右肩が入らずに振り上げられなかった。

左手に意識を置き過ぎてたのを、今日は意識を右肩に集中させて跳んでみた。


これがハマって、いままで振り上げられなかったのがウソのように楽に腰が乗るようになった。


意識の配分は、右肩7割、左手2割、足1割。ぐらい。


左手を突っ張らないようにして右肩を入れると、一瞬後に反動が来て、その反動で楽に振り上げに持っていける。

左手を突っ張ってしまうと、入りの姿勢で肩の動きが止まってしまう。

肩が常に動いてないときれいに跳べない。

左手のテンションを緩めて、右肩を中に中にドライブしていって、肩の動きを止めないこと。

こうすると、反動で勝手に腰が持ち上がってロックバックの姿勢に楽に移行できる。


ドライブでポールに力を加えた次の瞬間にもう腰がポールに乗ってるぐらい。


腰がポールに乗ればあとは反発を逃がさないようにするだけ。


踏み切ってからの入り、ドライブがきれいに出来ると、後の動作にほとんど力を使うことなく、勝手にポールに乗れて、勝手にポールに跳ばせてもらうような、擬音語で表すと「スポーン」とでもいうような全く体に負荷がかからない跳躍になる。当然、体もかなり浮く。


右肩のドライブができると、左手を突っ張らなくてもそれなりに曲がる。

で、ある程度できるようになってから左手に意識をちょっとだけ戻してみたところ、左手に力入れてなくても肘が伸びてることに気付いた。


あくまでも左手はポールを左によけるのと、体やポールの方向の微調整につかうだけで、突っ張らない。でも、左肘が曲がらないようにちょっとは力を入れる。


右肩を中に入れる動きが止まらないように。

足の7マーク維持に注意。



振り上げてから足をバタバタさせるクセがあるから、ちゃんと足揃えた倒立姿勢になれるように。



ロックバックまではほぼ出来たから、あとは振り上げ、ターンの動作。

あと2週間。

間に合うか。

利府練

2007-09-12 21:43:33 | 陸上競技
9月11日(Tue) 午前 利府 晴 暑

jog
ストレッチ
ドリル

ポールワーク
4歩ぶら下がり
6歩振り上げ

跳躍(ポール立たせるところまで)
15歩、29m60補助つき
踏み切り3m60±10
15ft-150、160lbsスピリット
握り4m20ぐらい


c-down




午後 青葉山 晴 暑

ストレッチ
電気系研究室対抗駅伝の練習
2km坂道コース2周

c-down


次期主将と跳躍PCと、屋根にポール乗せてレンタカーで利府へ。

モカが仲人してくれて、福祉大のボウルターと一緒に跳躍練した。


マッチョなのに控えめな態度のシャイな彼。

試合でも跳躍見てるけど、改めて見るとすっごく上手い。お手本になるとこだらけ。




今日の目的は、全助走のタータンで15ft-160lbsを立たせられるかどうか確かめること。

とりあえず、立った。
使えるかどうかは別として。

試合になればまたいろいろ変わるけど、まぁまぁ条件が良ければ160lbsを立たせられることが分かった。


あとは150lbsに戻して、全助走で踏み切りとか突っ込みとか入りとかの練習。

助走の出だしはリラックスできてて良いけど、踏み切り6歩前がなんか気持ち悪い。

ポールの持つ位置を下げすぎか、それとも後傾してちょこちょこしすぎか。


そういえば、左手でポールをリードして早めに出すのを忘れてた。

なんか変だったのはきっとこれのせいだ。



立つには立つけど、左手で押し過ぎてるから肩が入らない。左足も振られる。

ポールを引かないようにしながら左手を曲げて右肩を入れて、かつ体とポールの空間が潰れないように押す。この力加減が分からん。


曲げると振り上げられなくなる原因の3分の1ぐらいはこのせい。


あとの3分の2の原因は、たぶん気持ちのせい。

急に振り上げができたり、出来なくなったり、もう体で覚えたと思ったらまた出来なくなったり。


このまま振り上げられない病を治せないと、22大でどんなに調子よくても記録なしになる。




空中動作の練習を徹底的にやるしかない。






ESCAPE・グティ・コペルニクスR3

2007-09-10 21:22:20 | 自転車
自転車のチェーンって黒いもんだと思ってるでしょう。


黒いのはオイルで汚れてるからで、ちゃんと掃除すればピカピカの銀色になるんだよ。


汚れたオイルを丁寧に取り除いてオイルさせばチェーンやギアが長持ちするし、なんてったってペダリングが軽くなる。



でも、本気でチェーンをきれいにしようとするとかなり手間がかかる。




そんで、通販でこんなの買った。





ブラシがついたローラーでチェーンを挟むようにして、ケースにディグリーザー入れてペダル回すだけ。ブラシがコロコロ回るのが楽しい。

なんと1分ぐらいでチェーンのクリーニングが終わってしまう。

おまけに手も床も汚れない。

あとはチェーンオイルを薄くさしておわり。


自転車を雨に濡らしちゃったときなんかに、水を拭き取るついでにチェーンの掃除やりたくなっちゃうぐらいラク。







この ESCAPE R3 の名前は「コペルニクス2号」にした。

でも、長いから呼ぶときは略して「グティ」。

WAVE ⇔ ASCII 変換プログラム

2007-09-09 21:27:56 | プログラミング
バイナリwavファイルの中身をASCIIで見られるようにするプログラムと、その逆変換をするプログラム。

研修やってて思いついて書いた。


使い方

wav → ASCII

WavToAscii.exe "wavファイル名" "出力ASCIIファイル名"

ヘッダにちょっと説明をつけた形式で、waveファイルの中身をASCIIで書いてファイルに出力する。


ASCII → wav

AsciiToWav.exe "WavToAsciiで出力したのと同じ形式のファイル名" "出力wavファイル名"

第一引数には、WavToAscii.exeで出力したのと同じ形式でwavファイルの中身を書いたASCIIファイルを指定する。



これでwaveの音データを数値データで取り出して、MATLABとかでフィルタにかけて加工したり、重ね合わせて平井堅みたいに一人でハモったり、ずらして重ねて輪唱にしたり、あの声だけカットしてその場にいなかったことにしちゃったり、平井堅がたまに出すテンション高い曲にローパスフィルタかけてみたり、レジでバーコードを読む前に「ピッ」て口で言ったりすればいいじゃない。




//WavToAscii.c


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
	FILE *wav, *ascii;
	char buffer[4];
	int ibuf;
	int byten;
	int bits;
	int data, i;

	if(argc != 3) {
		printf("プログラム名 WAVファイル名 出力ASCIIファイル名\n");
		exit(1);
	}


	if((sizeof(int) != 4) || (sizeof(short int) != 2)){
		printf("int が4バイト、short int が2バイトの環境で実行してください。\n");
		exit(1);
	}

	if((wav = fopen(argv[1], "rb")) == NULL) {
		printf("%sを開けません\n", argv[1]);
		exit(1);
	}

	if((ascii = fopen(argv[2], "w")) == NULL) {
		printf("%sを開けません\n", argv[2]);
		exit(1);
	}

	fread(buffer, 4, 1, wav);
	fprintf(ascii, "%c%c%c%c\n", buffer[0], buffer[1], buffer[2], buffer[3]);

	fread(&ibuf, 4, 1, wav);
	fprintf(ascii, "ファイルサイズ: %d\n", ibuf);

	fread(buffer, 4, 1, wav);
	fprintf(ascii, "%c%c%c%c", buffer[0], buffer[1], buffer[2], buffer[3]);

	
	fread(buffer, 4, 1, wav);
	fprintf(ascii, "%c%c%c%c\n", buffer[0], buffer[1], buffer[2], buffer[3]);

	
	fread(&ibuf, 4, 1, wav);
	fprintf(ascii, "バイト数: %d\n", ibuf);
	byten = ibuf;


	fread(&ibuf, 2, 1, wav);
	fprintf(ascii, "フォーマットID: %d\n", ibuf);

	fread(&ibuf, 2, 1, wav);
	fprintf(ascii, "チャネル数: %d\n", ibuf);

	fread(&ibuf, 4, 1, wav);
	fprintf(ascii, "サンプリングレート[Hz]: %d\n", ibuf);

	fread(&ibuf, 4, 1, wav);
	fprintf(ascii, "データ転送[Byte/sec]: %d\n", ibuf);

	fread(&ibuf, 2, 1, wav);
	fprintf(ascii, "ブロックサイズ[Byte/sample×チャネル数]: %d\n", ibuf);

	fread(&ibuf, 2, 1, wav);
	fprintf(ascii, "サンプルあたりのビット数[bit/sample]: %d\n", ibuf);
	bits = ibuf;


	if(byten != 16){
		fread(&ibuf, 2, 1, wav);
		fprintf(ascii, "%d\n", ibuf);

	}


	fread(buffer, 4, 1, wav);
	fprintf(ascii, "%c%c%c%c\n", buffer[0], buffer[1], buffer[2], buffer[3]);

	fread(&data, 4, 1, wav);
	fprintf(ascii, "波形データバイト数: %lu\n", data);

	bits /= 8;

	data /= bits;

	i = 0;


	while(!feof(wav)) {
		if(ferror(wav)) {
			printf("wavファイルエラー\n");
			exit(1);
		}

		if(ferror(ascii)) {
			printf("asciiファイルエラー\n");
			exit(1);
		}

		fread(&byten, bits, 1, wav);

		fprintf(ascii, "%hd ", byten);

		printf("\b\b\b\b\b\b\b%d[%%]", (int)(100.0*(double)(i++)/(double)data));
	}

	fclose(wav);
	fclose(ascii);

	return 0;
}















//AsciiToWav.c


#include %lt;stdio.h>
#include %lt;stdlib.h>

int main(int argc, char *argv[])
{
	FILE *wav, *ascii;
	char buffer[4], charactor[80];
	int ibuf;
	int byten;
	int bits;
	short int si;
	int data, i;


	if(argc != 3) {
		printf("プログラム名 AsciiWAVファイル名 出力waveファイル名\n");
		exit(1);
	}


	if((sizeof(int) != 4) || (sizeof(short int) != 2)){
		printf("int が4バイト、short int が2バイトの環境で実行してください。\n");
		exit(1);
	}


	if((ascii = fopen(argv[1], "r")) == NULL) {
		printf("%sを開けません\n", argv[1]);
		exit(1);
	}

	if((wav = fopen(argv[2], "wb")) == NULL) {
		printf("%sを開けません\n", argv[2]);
		exit(1);
	}

	fscanf(ascii, "%c%c%c%c\n", &buffer[0], &buffer[1], &buffer[2], &buffer[3]);
	fwrite(buffer, 4, 1, wav);
	printf("%c%c%c%c\n", buffer[0], buffer[1], buffer[2], buffer[3]);


	fscanf(ascii, " %s %d\n", charactor, &ibuf);
	fwrite(&ibuf, 4, 1, wav);
	printf("%s %d\n", charactor, ibuf);

	fscanf(ascii, "%c%c%c%c\n", &buffer[0], &buffer[1], &buffer[2], &buffer[3]);
	fwrite(buffer, 4, 1, wav);
	printf("%c%c%c%c", buffer[0], buffer[1], buffer[2], buffer[3]);

	fscanf(ascii, "%c%c%c%c\n", &buffer[0], &buffer[1], &buffer[2], &buffer[3]);
	fwrite(buffer, 4, 1, wav);
	printf("%c%c%c%c\n", buffer[0], buffer[1], buffer[2], buffer[3]);

	
	fscanf(ascii, " %s %d\n", charactor, &ibuf);
	fwrite(&ibuf, 4, 1, wav);
	printf("%s %d\n", charactor, ibuf);
	byten = ibuf;

	fscanf(ascii, " %s %hd\n", charactor, &si);
	fwrite(&si, 2, 1, wav);
	printf("%s %hd\n", charactor, si);

	fscanf(ascii, " %s %hd\n", charactor, &si);
	fwrite(&si, 2, 1, wav);
	printf("%s %hd\n", charactor, si);

	fscanf(ascii, " %s %d\n", charactor, &ibuf);
	fwrite(&ibuf, 4, 1, wav);
	printf("%s %d\n", charactor, ibuf);

	fscanf(ascii, " %s %d\n", charactor, &ibuf);
	fwrite(&ibuf, 4, 1, wav);
	printf("%s %d\n", charactor, ibuf);

	fscanf(ascii, " %s %hd\n", charactor, &si);
	fwrite(&si, 2, 1, wav);
	printf("%s %hd\n", charactor, si);

	fscanf(ascii, " %s %hd\n", charactor, &si);
	fwrite(&si, 2, 1, wav);
	printf("%s %hd\n", charactor, si);
	bits = (int)si;


	if(byten != 16){
		fscanf(ascii, " %s %hd\n", charactor, &si);
		fwrite(&si, 2, 1, wav);
		printf("%s %hd\n", charactor, si);

	}


	fscanf(ascii, "%c%c%c%c\n", &buffer[0], &buffer[1], &buffer[2], &buffer[3]);
	fwrite(buffer, 4, 1, wav);
	printf("%c%c%c%c\n", buffer[0], buffer[1], buffer[2], buffer[3]);
	

	fscanf(ascii, " %s %d\n", charactor, &ibuf);
	fwrite(&ibuf, 4, 1, wav);
	printf("%s %d\n", charactor, ibuf);
	data = ibuf;

	bits /= 8;

	data /= bits;

	i = 0;


	while(!feof(ascii)) {

		if(ferror(wav)) {
			printf("wavファイルエラー\n");
			exit(1);
		}

		if(ferror(ascii)) {
			printf("asciiファイルエラー\n");
			exit(1);
		}
		fflush(wav);

		fscanf(ascii, "%hd ", &si);

		fwrite(&si, bits, 1, wav);

		printf("\b\b\b\b\b\b\b%d[%%]", (int)(100.0*(double)(i++)/(double)data));
	}

	fclose(wav);
	fclose(ascii);

	return 0;
}