放置してたGitHubを使う話
perlでhtmlのテーブルを書く話
瀬野です。
前回こんなん書いたんですが、まあつまんないですよね。内容的に
んで、今回はテーブルをPerlで書いてみようと思いました。
テーブルはエクセルの表みたいなもんです。格子状にデータが入ってるあれです。
メアド、名前、年齢順になってる配列データを元にテーブルを作ってみます。
test4-6
#! /usr/bin/env perl use strict; use warnings; #メアド、名前、年齢の配列データ my @info = ( 'seno@foo.com:Seno Foo:68', 'Gohan@hoge.com:Gohan Tabetai:24', 'Bread@fuga.com:Bread:36', ); #html化して表示 print "<html><table border=\"1\">\n"; my $num = 0; foreach(0..2){ my @kugiri = split(/:/, $info[$num]); print "<tr><td>$kugiri[0]</td><td>$kugiri[1]</td><td>$kugiri[2]</td></tr>\n"; $num++; } print "</table></html>\n";
これをターミナルからhtmlファイルとして出力します。
コマンドはこんな感じです。
すると、ファイルが出力されたので
ブラウザで開きますと…
無事にテーブルが作成できました。
【考察】
・たぶん同じことやもっと上のレベルのことはPHPでもできる。
・単純にhtmlをメンテしたり、書き換えてやるだけならPerlで書いたほうが手っ取り早い。
・出力する際に出力名を変えることで、htmlの内容そのままパクれる。
・htmlはサーバに置けばwebページとして公開できる。
・てことは、出力されたhtmlの内容を弄って仮にミスしても、perlで書いたものがあれば手戻り可能。
・え?Gitでブランチ作って管理すりゃいい?やり方知らん
続きはまた次回
Ubuntuのpasswdファイルから要素を切り出した話
お疲れ様です。瀬野です。
ソースコードを見やすくしたいのでデザインを変更しました。
はてなって便利。しゅき…
あと、Perlに入学してから1週間経ちました。
現場が忙しくなる前に本を読み進めながら色々書いてました。
んで、こうすればUbuntuの各ユーザ情報を引っ張り出せるみたいなコードが有ったので、
書いてみました。
login.pl
#! /usr/bin/env perl use strict; use warnings; open(FILE, '/etc/passwd') or die "$!"; foreach my $line (<FILE>){ my( $login, $passwd, $uid, $gid, $realname, $home, $shell, ) = split(/:/, $line); print "login = $login, realname = $realname\n"; } close(FILE);
実行した結果がこちらです。
Ubuntuには/etc配下にpasswdファイルというものがありまして、
ログインの際に必要な情報が含まれてます。とても大事なファイルですね。
2.2 パスワードファイル /etc/passwd の構造
↑参考文献はこちら
今回出力したものはユーザ名と、コメント欄で、パスやシェルなどは出力していません。
ひとまず自分とゲストのログイン名だけを書き出しました。
実行結果を全部書き出しても問題ないような気はしますが…念のため省きました。
実際は切り取った出力結果の上にpasswdファイルの中身が大量にあります。
読みやすいコードになっているかは、自信ありません。サーセン
あとは、本を読みながら遊びでこんなのも書きました。
他にも何個か書いてますが、書き出すとキリがないのでまた今度。
Git出来るようになったら楽なんだろうなあ…
guruguru.pl
#! /usr/bin/env perl use strict; use warnings; my $a = 1; my $b = 3; my $c = 5; my $d = 7; my $e = 9; #ヘビロテ foreach (0..20){ print "$a,$b,$c,$d,$e\n"; ($a, $b, $c, $d, $e) = ($b, $c, $d, $e ,$a); }
奇数がぐーるぐる回ってます。
ジョジョが好きな人は素数にでもすればいいのではと思います(適当)
変数の書き方がこれだとあまりよろしくない気もするので、その辺はまたおいおいレベルを上げながら…
続きはまた次回
Perlに入学した話
あーあー、どれもこれも中途半端に手を付けてたし、自分が低レベルすぎて嫌になるなー。
なんか一つ武器になる言語持ちたい…持ちたくない?
と思ったので
perl-entrance-sapporo.connpass.com
こちらに参加してきました。
早速Ubuntuさんの出番だよ!やったねたえちゃん!
講師の方々がとても親切で凄まじくデキる方なので、参加してきて正解でした。
Macも欲しくなりました。買わなきゃ(使命感)
講義の内容(さっくりと)
・環境構築(VirtualBoxにUbuntu入れて仮想環境を作る。
(日本語入力周りを整えてなかったので、環境はあったのですがここから参加しました)
・ターミナル、エディタの説明
(Ubuntuは標準搭載されてるターミナルとgeditを使用しました。)
geditの存在は初めて知りました。ずっと単なるメモ帳だとばかり。
・Hello,World(その他)を書く
(軽い計算も少々。)
【感想】
・PerlはCに似ている(よく言われるらしいっす)
・とってもとっつきやすく感じました。
・他の勉強会も、導入らへんから始めて欲しいなって…思います(贅沢?)
あんまりにも楽しかったので2次会帰りに本屋寄って
SBクリエイティブ:新版Perl言語プログラミングレッスン入門編
これを買ってきました。
他のお勧め書籍も勉強会中に紹介されたのですが、PCの付箋に書いてて見れなかったので、咄嗟にあいほんでググりました。
今見ながら書いてるのですが控えめに言ってPerlすごいと思いました(小並感)
Cっぽいんですがシェルスクリプトっぽくもあるし、なおかつ文字列と数の型とか
その辺が凄く楽に感じます。
Perlって神かな…?
もう家ではPerlだけを集中して勉強します。今の現場?知らん
それだけの価値はある言語だと思うし、一つを極めたら他にも応用効くはずなので。
話は変わりますが、勉強や業務で一通り広く浅く(キッティング作業,Java,C,VB,シェルスクリプト,HTML5,JS,PHP,MySQL,サーバ,インフラ…自分は勉強含めてこのくらい薄く手広く)やった後、一つの分野に熱を傾けるのはとてもとても大事で、今回のPerl勉強会は、自分はこれがやりたい!と思う切っ掛けになりました。
なんというか、迷いが吹っ切れた気分ですね。
主催の皆様には感謝感謝です。
今後は読み進めながらPerlで色々書いていきたいので、続きはまた次回。
やっぱりUbuntuを使いたい話
さて、こんなことやらかしたわたくし瀬野さんですが、やっぱりUbuntu使いたいんですよ。
でも、デュアルブートはリスク高すぎるし…
あ、そうだ(唐突)
そんな時はVMware使えばいいんですよ!
早い話が、仮想環境作っちまおうぜって話ですね。
ちょっと前までVMware Playerだった気がしましたが、今は名前が変わってますね。
VMware Workstation Playerになってました。はい
Ubuntuが入ったDVDを入れて…っと
あとは設定するだけですね。マシン再生ポチっとな
は?(半ギレ)
あ、VMwareにUbuntuが存在してるのに満足してDVD取り出してたわ。
もう一度DVDを入れます。気を取り直して…っと
無事にインストールしてくれてます。めでたしめでたし。
続きはまた次回
環境構築したのでCでpee書いた話(2) 実際に頭使って書かないと実感できないことだらけだから困るorz
環境構築したのでCでpee書いた話
環境構築まで出来たので、C言語で何か書いてみることにしました。
ところで、パソコン関係のお仕事についてる方はみんなコーヒー好きだと(勝手に)思ってるんですけど、飲みすぎたら近くなりますよね?
ですが、配属先がブラック企業なのでWCに行くにも許可が要ります。
上司の機嫌がいいときはすぐに「行ってこい!」と言ってくれます。ラッキーですね。
でも機嫌が悪いと何万回も聞かないと許してもらえません。世知辛いですね。
ちなみに、書いたuncordならぬpeecordは以下になります。
========ここから=============================================
#include <stdio.h>
#include <stdlib.h>
static int jadge; /*上司の判断を返すだけのstatic変数 */
/***************************************************/
/*がばがばコーヒー飲みまくって Pee値インクリメント */
/*尿意が限界(100)超えたら上司に尋ねる */
/*上司が「いいよ」と言ったらトイレへ */
/***************************************************/
int main(){
int pee = 0;
while(tired()) {
drinkCoffee();
pee++;
printf("Pee Point: %d\n", pee);
if(pee >= 100){
printf("Humm...Boss,Can't I go to WC!?\n");
bossParmit(jadge);
if(jadge == 1){
printf("BOSS:Huh!? hurry!\n");
return 0;
}else{
printf("BOSS:Yes you can't.\n");
}
}
}
return 0;
}
/***************************************************/
/*コーヒーを飲むだけの関数(要改良) */
/***************************************************/
int drinkCoffee(void){
printf("Let's take a cup of coffee.\n");
}
/***************************************************/
/*ボスが許可を決める関数(要改良) */
/***************************************************/
int bossParmit(){
srand(time(NULL));
jadge = rand() % 2;
return jadge;
}
/***************************************************/
/*PGは常に疲れているのでひたすらフラグに1を返す */
/***************************************************/
int tired(){
return 1;
}
========ここまで=============================================
【書いてて思った改善点とりとめもなく書き連ねる】
・絶対英語が間違ってる。こんな受け答えはまずしない
・mainの中のif文処理は切り分けできる気がする
・絶対間違ったsrandの使い方してる
・フラグの立て方がわからん(致命的)
・なんでこいつこんなコーヒーがばがば飲んでんだよ
・何万回も尋ねてるため上司側がウザがってる
・コーヒー飲みすぎ
・上司の許可がクッソ渋い。まず間違いなく漏れる
【改良案】
・ランダムに0と1を出すようにしてるけど、割合を半々にしたい
・どっかのタイミングでもう飲めねーよってしたい
・1万Pee Pointごとに一度の割合で尋ねるようにしたい
・peeは生理現象ゆえ飲まなくてもPee Pointが増えるようにしたい
・jadgeの結果を1~50くらいにして20くらいでGOサインにしたい
・聞きすぎたら上司が「うぜえからお前クビ」とかにしたい
・限界超えてその場でpeeする処理にしたい
自分で書いててなんなんですが、本当に何書いてんですかね…
あ、当然ながらWCの許可取らないとだめってのは
フィクションですよ?フィクション
この業界入ってからはそんなことありませんし。はい
パン屋やってた時はWCの許可要りましたけど控えめに言って店畳めクソがって思ってましたが
続きはまた次回