== ¼Ò°³ == CTAN:macros/latex/contrib/perltex/ Perl Äڵ带 °¡Áö°í LaTeX ¸ÅÅ©·Î¸¦ Á¤ÀÇÇØ ½á¸Ô´Â Àç¹ÌÀÖ´Â ÆÐÅ°ÁöÀÌ´Ù. Perl ¸ÅÅ©·Î°¡ LaTeX ¸ÅÅ©·Î·Î µÇ´Â °ÍÀÌ´Ù. À̷νá LaTeXÀÇ Á¶ÆÇ ´É·Â°ú PerlÀÇ ÇÁ·Î±×·¡¹Ö ´É·ÂÀ» °áÇÕÇÒ ¼ö ÀÖ°Ô µÈ´Ù. == »ç¿ë¹ý == ÇÁ¸®¾Úºí¿¡ `\usepackage{perltex}`¶ó°í ¼±¾ðÇÑ´Ù. ÀÌÁ¦ `\perlnewcommand`, `\perlrenewcommand`, `\perlnewenvironment`, `\perlrenewenvironment`ÀÇ ³×°¡Áö ¸í·ÉÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. ¹®¼­ÄÄÆÄÀÏÀº `perltex.pl`À̶ó´Â ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÑ´Ù. ¿É¼ÇÀº ´ÙÀ½°ú °°´Ù. {{{ --latex=program ±âº»°ªÀÎ latex ´ë½Å ´Ù¸¥ ½ÇÇà¸í·É(¿¹:pdflatex)À» ÁÙ ¼ö ÀÖ´Ù. --nosafe ±âº»°ªÀ¸·Î À§ÇèÇÑ PerlÄÚµå(¿¹: ÆÄÀÏ»èÁ¦)°¡ ½ÇÇàµÇÁö ¾Êµµ·Ï µÇ¾î Àִµ¥ ÀÌ ¿É¼ÇÀº ¾ÈÀüÀåÄ¡¸¦ Ç®¾îÁØ´Ù. ¸ðµç Perl Äڵ尡 ±×´ë·Î ½ÇÇàµÈ´Ù. --permit=feature ƯÁ¤ PerlÄڵ常À» ¾ÈÀüÀåÄ¡·ÎºÎÅÍ ÇØÁ¦ÇÑ´Ù. ¿©·¯¹ø ¿É¼ÇÀ» ÁÙ ¼ö ÀÖ´Ù. }}} == º¸±â1: ÇÑ±Û Sorting ¿¹Á¦ == TeXÀ¸·Î´Â ¹®ÀÚ¿­À» ¼ÒÆÃÇÏ´Â Äڵ带 Â¥±â°¡ ½±Áö¾Ê´Ù. PerlTeX¿¡°Ô ÀÌ·± °ÍÀº ½ÄÀº Á× ¸Ô±âº¸´Ù ½±´Ù. test.tex: {{{ \documentclass[a4paper]{article} \usepackage{perltex} \usepackage{dhhangul} \perlnewcommand{\sortarg}[1]{join ',', sort split ',', $_[0]} \newcommand{\teststring}{ÇѱÛ,°¡³ª´Ù,¿ì¸®³ª¶ó,´ëÇѹα¹} \begin{document} \begin{center} \teststring\\ $\Downarrow$\\ \sortarg{\teststring} \end{center} \end{document} }}} PerlTeXÀº TeX ¸ÅÅ©·Î¸¦ ¸¸³ª¸é À̸¦ È®Àå(expand)ÇÑ ÈÄ Perl·Î ó¸®ÇÑ´Ù. È®ÀåÀ» ¸øÇÏ°Ô ÇÏ·Á¸é `\noexpand`¸¦ TeX ¸ÅÅ©·Î ¾Õ¿¡ ºÙÀÌ¸é µÈ´Ù. ÄÄÆÄÀÏ: {{{ $ perltex.pl --latex=lambda --nosafe test.tex }}} ±× °á°ú: Uploads:perltexsortexample.png ¿Í~ º¸±â¸¸ Çصµ ½Å³³´Ï´Ù. :D --[Progress] == º¸±â2: DB¿Í ¿¬µ¿ÇÑ List Plot ±×¸®±â == º» ¿¹Á¦´Â DB(MySQL ¶Ç´Â MSSQL)¿¡ ÀúÀåµÇ¾î ÀÖ´Â ¼öÄ¡ µ¥ÀÌÅ͸¦ Perl·Î ÃßÃâÇÏ¿© À̸¦ PSTricks¸¦ ÀÌ¿ëÇÏ¿© List plotÀ» ±×¸®´Â ¿¹Á¦ÀÌ´Ù. ¿©±â¼­ ¿ì¸®°¡ ¿øÇÏ´Â °ÍÀº List plot¿¡¼­ Àüü Æò±Õ°ú ÃÖ´ë°ª, ÃÖ¼Ò°ªÀ» perl·Î »êÃâÇÏ¿© À̸¦ ¹Ù·Î TeXÀ¸·Î Ãâ·ÂÇÏ´Â ±â´ÉÀ» ÁÖ´Â °ÍÀÌ´Ù. ¿©±â ¿¹Á¦´Â Linux¿¡¼­ »ç¿ëÇÏ´Â °ÍÀ» °¡Á¤ÇÏ°í testÇÏ¿´À¸³ª Windows¿¡¼­µµ »ç¿ë°¡´ÉÇϸ®¶ó »ý°¢µÈ´Ù. === DB¿¡¼­ °ü·Ã µ¥ÀÌÅÍ ÃßÃâÇϱâ === º» ¿¹Á¦´Â DB¿¡ °¢ ¼­¹öÀÇ ¸Å´Þ ¼º´É µ¥ÀÌÅÍ°¡ ÀúÀå µÇ¾î ÀÖ°í À̸¦ °¡Á®¿À´Â ¿¹Á¦ÀÌ´Ù. 1. MySQL »ç¿ë½Ã {{{ #! /usr/bin/perl -w # connect.pl - connect to the MySQL server use strict; use DBI; # ¿©±â ¼± localhostÀÇ perf_best1À̶ó´Â MySQL DB¿¡ Á¢¼ÓÇÑ´Ù°í # °¡Á¤ÇÏ¿´´Ù. my $dsn = "DBI:mysql:host=localhost;database=perf_best1"; # ¿©±â¼­ # mysqluser´Â MySQLÀÇ »ç¿ëÀÚ À¯Àú # mysqlpasswd ´Â MySQLÀÇ password ÀÌ´Ù. (ÀÚ±â ȯ°æ¿¡ µû¶ó ¹Ù²Ù±æ ¹Ù¶õ´Ù.) my $mysqldbh = DBI->connect ($dsn, "mysqluser", "mysqlpasswd") or die "Cannot connect to server\n"; # 10¿ùÀÇ µ¥ÀÌÅ͸¦ ¿øÇϸç my $month='10'; # server-A¶ó´Â hostnameÀ» °¡Áö´Â ¼­¹ö¿¡ ´ëÇÑ ÀڷḦ ¿øÇÒ °æ¿ì my @hostnames = ('server-A'); # BMCÀÇ Best1 À̶ó´Â Á¦Ç°À» »ç¿ëÇÑ ¿¹Á¦·Î # test ÇØ º¼ °æ¿ì´Â ¾Æ·¡¿Í °°Àº formatÀ» °¡Áö´Â Àû´çÇÑ SQL ¹®À¸·Î ½ÃÇèÇϸé # µÉ °ÍÀÌ´Ù. # ³¯Â¥ ÀÏÀÏÆò±Õ°ª ÀÏÀÏÃÖ´ë°ª ÀÏÀÏÃÖ¼Ò°ª # 01 30 50 10 # 02 40 70 20 # ... ... ... ... # my $mysqlsth= $mysqldbh->prepare( "SELECT SUBSTRING(C.Int_start_date,7,8), AVG(CPU_UTIL), MAX(CPU_UTIL), MIN(CPU_UTIL) FROM CAXNODE A, CAXNODED B, CAXINTVL C WHERE A.INDEXX=B.SYSTEMS AND B.INTVL=C.INDEXX AND C.INTTYPE=? AND (A.NODE_ALIAS=?) AND B.CPU_UTIL>=0 AND Int_start_date LIKE ? GROUP BY C.Int_start_date ORDER BY C.Int_start_date" ); foreach my $hostname (@hostnames) { open(AVGFH, ">cpu_avg_" . "$hostname". "_" . $month . ".dat"); open(MAXFH, ">cpu_max_" . "$hostname". "_" . $month . ".dat"); open(MINFH, ">cpu_min_" . "$hostname". "_" . $month . ".dat"); # À§ÀÇ SQL¹®¿¡¼­ ?·Î µÈ °ªµéÀÌ ¼ø¼­µ¥·Î 'M', $hostname, '04/' .$month . '/%' # ·Î ´ëü µÈ´Ù. # '04/' .$month . '/%' ´Â '04/10/%' ¿Í °°ÀÌ µÉ °ÍÀÌ´Ù. ( . ´Â ¹®ÀÚ¿­ ¿¬°á operator) $mysqlsth->execute('M', $hostname, '04/' .$month . '/%'); my $count = 0; while (my @val = $mysqlsth->fetchrow_array ()) { my $day = $val[0]; my $avg = $val[1]; my $max = $val[2]; my $min = $val[3]; print AVGFH "$val[0]\t$avg\n"; print MAXFH "$val[0]\t$max\n"; print MINFH "$val[0]\t$min\n"; ++$count; } $mysqlsth->finish(); print "$count rows were returned\n" } }}}