free as in air

2007|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|09|11|12|
2012|03|04|05|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|03|04|06|09|
トップ «前の日記(2009-02-08) 最新 次の日記(2009-02-10)» /編集

2009-02-09 [長年日記]

§ [diary] ski

 昨日後ろゴケして首着地をキメたら、やはり今日になって首が痛い。

 昨日気付いたのだがクッションの絵が間違ってる。Tナットが突き通ってないところが致命的にダメ。こうだよね。XSJado cushion

 表地まで爪が刺さっているので、締められるけど、緩められない。

 ホームセンターに行ったらもっとマシなTナットが売ってた。でも取り付け方法をもう少し考えないといけない。表地に直接つけると、表地のダメージが心配だし。アルミプレートを使おうかなと思っている。

§ [perl] ファイル分割

CPAN見るべきな気がするが。File-Binaryの(get|put)_bytesを使うべきなのかね。

use strict;
use warnings;
 
open my $fd, "<", $ARGV[0];
binmode $fd;
my $size = -s $ARGV[0];
my $size_part = 1000*1000*1000*4 - 1024*1024;
 
my $buflen = 1024*1024*40;
$buflen = $size_part < $buflen ? $size_part : $buflen;
my $times = $size_part / $buflen;
my $file_count = $size / $size_part;
$file_count++ if ($size % $size_part);
 
sub copy_part {
    my ($name, $file, $times, $length) = @_;
	open my $fd, ">", $name;
	my $buf = '';
	binmode $fd;
	for (my $i = 0; $i < $times; $i++) {
		unless(sysread($file, $buf, $length)) {
			print $fd $buf;
			close $fd;
			return 0;
		}
		print $fd $buf;
	}
	close $fd;
	return 1;
}
 
open my $batch, ">", $ARGV[0].".bat";
print $batch "copy ";
for (my $i = 1; $i < $file_count; ++$i) {
	my $name = sprintf($ARGV[0].".%03d", $i);
	copy_part($name, $fd, $times, $buflen);
	print $batch "/b $name";
	print $batch " + " if $i+1 < $file_count;
}
 
print $batch " /b $ARGV[0]\n";
close $batch;
close $fd;

結局Perlにとってバイナリファイルって何かよくわかってないな。

また環境が変わるんでしばらくPerlを触らない予感。

でもモチベーションない。