2007년 3월 29일 목요일
2007년 3월 28일 수요일
2007년 3월 25일 일요일
Excel로 전환
한글 테스트 해봐야 함
#!/usr/bin/perl -w # # Parse ace file and extract read names of destined contig # # Written by Suk Namgoong # use strict; use Spreadsheet::WriteExcel; my $usage = "aceprimer.pl <ace file name>"; my $acefilename = shift or die $usage; my $workbook = Spreadsheet::WriteExcel->new($acefilename.".xls"); my ($contigfound, $fofname, $readname, $ctstart); my $worksheet1 = $workbook->add_worksheet("forward"); my $worksheet2 = $workbook->add_worksheet("reverse"); my $format = $workbook->add_format(); $format->set_bold(); $format->set_bg_color(18); $format->set_pattern(1); my $align = $workbook->add_format(); $align->set_align('center'); my $align2 = $workbook->add_format(); $align2->set_align('vjustify'); $contigfound = 0; my %primerhash = (); # # Parse Ace File and put start postion and length of each reads into hash (%read_start and %read length)) # $worksheet1->write(0,0,"Experiment ID", $format); $worksheet1->write(0,1,"Contig Name", $format); $worksheet1->write(0,2,"Primer Name", $format); $worksheet1->write(0,3 ,"Sequence", $format); $worksheet1->write(0,4,"Tm", $format); $worksheet1->write(0,5,"Comment", $align2); $worksheet2->write(0,0,"Experiment ID", $format); $worksheet2->write(0,1,"Contig Name", $format); $worksheet2->write(0,2,"Primer Name", $format); $worksheet2->write(0,3,"Sequence", $format); $worksheet2->write(0,4,"Tm", $format); $worksheet2->write(0,5,"Comment", $align2); my $frow = 1; my $rrow = 1; my $col = 0; my $exp_no = 1; $ctstart = 0; open (FILEHANDLE, "<$acefilename"); my ($contigname, $primername, $sequence, $comment, $oligostart, $oligoend, $meltingTemp); while (my $readline = <FILEHANDLE>) { chomp($readline); if ($readline =~ m/^CT{/) { $ctstart = 1; $comment = ""; next; } if ($ctstart eq 1 ) { if ($readline =~ m/^(\S+) oligo consed (\S+) (\S+)/) { $contigname = $1; $oligostart = $2; $oligoend = $3; $ctstart = 2; next; } else { $ctstart = 0; next; } } if ($ctstart eq 2) { if ($readline =~ m/^(\S+) (\S+) (\S+)/) { $primername = $1; $sequence = $2; $meltingTemp = $3; $ctstart = 3; next; } } if ($ctstart eq 3) { if ($readline =~ m/^COMMENT{/) { $ctstart = 4; next; } } if ($ctstart eq 4) { if ($readline =~ m/}$/) { $ctstart = 0; if (exists($primerhash{$comment})) { $worksheet2->write($frow,0,$primerhash{$comment}); $worksheet2->write($frow,1,$contigname); $worksheet2->write($frow,2,$primername); $worksheet2->write($frow,3,$sequence); $worksheet2->write($frow,4,$meltingTemp,$align); $worksheet2->write($frow,5,$comment, $align2); $frow++; } else { $primerhash{$comment} = $exp_no; $worksheet1->write($rrow,0,$exp_no); $worksheet1->write($rrow,1,$contigname); $worksheet1->write($rrow,2,$primername); $worksheet1->write($rrow,3,$sequence); $worksheet1->write($rrow,4,$meltingTemp,$align); $worksheet1->write($rrow,5,$comment, $align2); $exp_no++; $rrow++; } next; } else { $comment = $comment.$readline; next; } } } close FILEHANDLE;
2007년 3월 23일 금요일
new HTTP::Request POST sample
my $req = new HTTP::Request POST => $url;
# $req->content_type('application/x-www-form-urlencoded');
$req->content($cstr);
my $res = $ua->request($req);
print "\n--after login action----------------------------------\n";
print $res->content;
2007년 3월 20일 화요일
[매칭관련] php에서 [] 사이의 내용 가져오기
<?php
$html = "123123123[12345][00001][11111]12312312";
preg_match_all("|[\[](\d{5})[\]]|U", $html, $matches);
for ($i=0; $i< count($matches[0]); $i++) {
echo "matched: " . $matches[0][$i] . "\n";
echo "part 1: " . $matches[1][$i] . "\n\n";
$packs .= $matches[1][$i].",";
}
echo $packs;
?>
결과--------------------------------
matched: [12345]
part 1: 12345
matched: [00001]
part 1: 00001
matched: [11111]
part 1: 11111
샘플 2
<?
$string = "타입과색상;CMT0025댄디PK/블랙M(3000원)./(3000원)";
preg_match_all("|[\(](.*)[원\)]|U", $string, $matches);
for( $i=0; $i < count($matches[1]); $i++ )
{
$total = $total + $matches[1][0];
}
echo "total: $total\n";
?>
~
total: 6000
2007년 3월 16일 금요일
php에서 excel, csv, txt파일 읽어 들여 작업하기
php에서 file reading할때
global $admin_file;
if ($admin_file)
{
$file_params = pathinfo($_FILES['admin_file']['name']);
$file_ext = strtoupper($file_params["extension"]);
if ($file_ext != "XLS" && $file_ext != "CSV" && $file_ext != "TXT")
fatal("잘못된 파일포맷입니다. 지원가능한 파일포맷은 (.xls | .csv | .txt)입니다.");
}
#============================================
#
# data insert
#
switch ($file_ext)
{
case "XLS" :
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP949');
$data->read($admin_file);
$num_rows = $data->sheets[0]['numRows'];
break;
case "CSV" :
$data = file($admin_file);
$num_rows = count($data) + 1;
$fp = fopen($admin_file, "r");
break;
case "TXT" :
$data = file($admin_file);
$num_rows = count($data);
$fp = fopen($admin_file, "r");
break;
}
for ($i = 1; $i <= $num_rows; $i++)
{
switch( $file_ext )
{
case "XLS" :
$x = 0;
$data_array = $data->sheets[0]['cells'][$i];
break;
case "CSV" :
$x = 1;
$data_array = fgetcsv($fp, 1000, ",");
break;
case "TXT" :
$x = 1;
$buffer = fgets($fp, 4096);
$data_array = explode("\t", $buffer);
break;
}
// 작업
$this->save2( $data_array, $x );
flush();
}
2007년 3월 10일 토요일
인간의 시간은 원형으로 돌지 않고 직선으로 나간다. - 참을 수 없는 존재의 가벼움
흠 토마스와 테레사가 키우는 개가 있다 그의 이름은 카네닌.
개는 아침마다 테레사를 따라 장에 가고, 입에 크로아상을 하나 물고는 너무나 행복해 한다.
매일 테레사를 따라 송아지를 돌보며 또 행복해 한다...
그의 시간은 원형이다, 매일 같은 일을 하지만 매일 행복하다. 하지만 사람의 시간은 원형으로 돌지 않는다. 사람은 매일 같은 일에 지겨워 하고 흥미를 읽고 불행해 한다. 인간의 시간은 직선이기 때문이다.
과연 인간은 만물의 영장 이어서 다른 작은 것에 만족할 줄 아는 모든 동물의 최 상위에서 가장 큰 행복을 누리며 살아가는 것일까?...
자신의 개를 아끼고 사랑하는 테레사는 이렇게 생각한다, 자신과 토마스의 관계보다 자신과 자신의 개인 카네닌의 관계가 더 나은 관계가 아닌가? 하고...
2007년 3월 9일 금요일
2007년 3월 7일 수요일
php에서 A to Z까지 표시하기
$j = 1;
for ( $i=ord('A'); $i <= ord('Z'); $i++ )
{
?>
<tr>
<td width=10 align=center><?= $j ?></td>
<td width=10><?= chr($i) ?></td>
<td width=30><input type=text name=macro<?= chr($i)?> class=input></td>
<td width=30>A</td>
</tr>
<?
$j++;
} ?>
2007년 3월 6일 화요일
perl HTTP::Request 샘플 ebay.api 예제
# $Revision: 1.1.1.3 $ # # $Date: 2003/06/25 17:40:00 $ use strict; use LWP::UserAgent; use HTTP::Request; use HTTP::Headers; my $objUserAgent = LWP::UserAgent->new; my $request = "<?xml version='1.0' encoding='utf-8' ?> <request> <RequestToken>ABC...123</RequestToken> <ErrorLevel>1</ErrorLevel> <DetailLevel>0</DetailLevel> <Verb>GeteBayOfficialTime</Verb> </request>"; my $objHeader = HTTP::Headers->new; $objHeader->push_header('X-EBAY-API-COMPATIBILITY-LEVEL' => '311'); $objHeader->push_header( 'X-EBAY-API-SESSION-CERTIFICATE' => 'rbrown;rbrownapp01;12321AB121A2A1B'); $objHeader->push_header('X-EBAY-API-DEV-NAME' => 'rbrown'); $objHeader->push_header('X-EBAY-API-APP-NAME' => 'rbrownapp01'); $objHeader->push_header('X-EBAY-API-CERT-NAME' => '12321AB121A2A1B'); $objHeader->push_header('X-EBAY-API-CALL-NAME' => 'GeteBayOfficialTime'); $objHeader->push_header('X-EBAY-API-SITEID' => '0'); $objHeader->push_header('X-EBAY-API-DETAIL-LEVEL' => '0'); $objHeader->push_header('Content-Type' => 'text/xml'); $objHeader->push_header('Content-Length' => length($request)); my $objRequest = HTTP::Request->new("POST", 'https://api.sandbox.ebay.com/ws/api.dll', $objHeader, $request); # for https you will need an ssl enabling package # the following line from the PPM directory will install # one such PPM package based on OpenSSL for the ActiveState 5.6 Perl build # PPM> install http://www.activestate.com/PPMPackages/5.6plus/Crypt-SSLeay.ppd my $objResponse = $objUserAgent->request($objRequest); if (!$objResponse->is_error) { # your error handling code here } else { # success, your processing code here }