SlideShare una empresa de Scribd logo
1 de 116
Hokkaido.pm #3
 超初心者向け Perl/CGI ~
Slideshare 用の補足
 Hokkaido.pm #3 で発表したスライドです。
 表紙は29ページ目にあり、本編はそこから始まります。
 前半は、Macbook Pro 購入記念につきipad のCM音楽を流し
ながら、Apple 風に perl を紹介するというネタ部分です。
 興味のない方は、29ページ目からご覧ください。
Hokkaido.pm #3
Perl は
Hokkaido.pm #3
↓
perl -ip -MEncode -e ‘$_ = encode(“utf-8”, decode(“cp932”, $_)); file'
↓
グループ名の由来
グループ名のAKBの由来は、ホームグラウンドが位置する秋葉
原(あきはばら)の略称「アキバ」(AKiBa)からである。プロ
ジェクト開始当初は、「秋葉原48」として募集告知などをして
おり[7]、NTT DoCoMoとのメンバー募集タイアップCMなどを始
め、インディーズデビュー当時の各種メディアでは
「Akihabara48」とされていたこともある。その後、「エーケー
ビー」に統一された
Hokkaido.pm #3
効率的
Hokkaido.pm #3
べ、べつにAKBの
ファンじゃないんだからねっ!
Hokkaido.pm #3
use MooseX::Declare;
class BankAccount {
has 'balance' => ( isa => 'Num', is => 'rw', default => 0 );
method deposit (Num $amount) {
$self->balance( $self->balance + $amount );
}
method withdraw (Num $amount) {
my $current_balance = $self->balance();
( $current_balance >= $amount )
|| confess "Account overdrawn";
$self->balance( $current_balance - $amount );
}
}
Hokkaido.pm #3
最先端
Hokkaido.pm #3
use Mojolicious::Lite;
# /hello/* (everything)
# /hello/test
# /hello/test123
# /hello/test.123/test/123
get '/hello/(*you)' => sub {
shift->render('groovy');
};
__DATA__
@@ groovy.html.ep
Your name is <%= $you %>.
Hokkaido.pm #3
直感的
Hokkaido.pm #3
Hokkaido.pm #3
大規模
Hokkaido.pm #3
BioPerl
Hokkaido.pm #3
科学的
Hokkaido.pm #3
Image::Magick
Hokkaido.pm #3
芸術的
Hokkaido.pm #3
package Earth;sub Greet{
%_=('Y','~');$_='$;=!(Middle
Earth.age~~~<Eart~~~~~~~~~~~~~h
.age)?!(defined$ti~~~~~~~~~~~mez~~~On
e[2])?!(push@time~~~~~~~~~~~~~~~~Zone,loc
~altime())?rotation?~~~~~~~~~~~~~q~~?The Worl
~~d?:q:[w]::q=[~~~~~~~~~~~~~~~~~d~a-f]=:q?..~~
~~~?:q:.:;"42b3d3~~~~~~~~~~~~~~~~~~~~~728656c6c6f6
~~~~~0277f627c64672~~~~~~~~~~~~~~~~~~~~~b3072796e647
~~~~~~~42b3b3rg7d"=Ym~~~~~~~~~~~~~~~~~~~$;~~*;p~~~~u
~~~~~~~~~sh@_,$&;bless~~~~~~~~~~~~~~~~~~~~~~~~~$c~~~~~~~
~~~~~~~~~o~ntine~~~~~nt~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~s=~~~~~~~$~~~~~~~~~~~~~~~~~~~~~~~pangaea~~~~
~~~~~~~~~~~~~~~;{l~~~~~~~~~~~~~~~~~~~~~~~~~~~~ocal@_;local$;
~~~~~~~~~~~~~~~~~="o~~~~~~~~~~~~~~~~~~~~~~~~~cean";$^A=(defi
~~~~~~~~~~~~~~~~~~~n~~~~~~~~~~~~~~~~~~~~~~~~~ed$continents)?
~~~~~~~~~~~~~~~~~~~(vec(~~~~~~~~~~~~~~~~~~~~~~$;, YYsplit('
~~~~~~~~~~~~~~~~~',${$;}~~~~~~~~~~~~~~~~~~~~~~)%3,YYsplit(
~~~~~~~~~~~~~~~~q??,$;)**2-~~~~~~~~~~~~~~~~~~~~~~(($;=Ytr/oa
~~~~~~~~~~~~~~~~eiu//)**2))=~~~~~~~~~~~~~~~~~~~~~~=28160)?q:
~~~~~~~~~~~~~~~~~.::q?!?:'?~~~~~~~~~~~~~~~~~~~~~~';}$^A=Ys
~~~~~~~~~~~~~~~~:Q.E:pack(~~~~~~~~~~~~~~~~~~~~~~'h*',j
~~~~~~~~~~~~~~~~~oin(q(),~~~~~~~~~~~~~~~~~~~~~~~grep{$_=
~~~~~~~~~~~~~~~~~~Ym,$,,}~~~~~~~~~~~~~~~~~~~~~~~split("
~~~~~~~~~~~~~~~~~",@_~~~~~~~~~~~~~~~~~~~~~~~~~~[0]))
~~~~~~~~~~~~~~~~):e~~~~~~~~~~~~~~~~~~~~~~~~~~~gexe
~~~~~~~~~~~~~~~;$d~~~~~~~~~~~~~~~~~~~~~~~~~~~="s
~~~~~~~~~~~~~~ort~~~~~~~~~~~~~~~~~~~~~~~~~~<=
~~~~~~~~~~~~>,~~~~~~~~~~~~~~~~~~~~~~~~~~YY
~~~~~~~~~~~@_~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~"~~~~~~~~~~~~~~~~~~~';;
s,(~|r|n|s),,g;s.Y.x7e.g;
eval};Greet;'the world';
Hokkaido.pm #3
呪文のよう
Hokkaido.pm #3
Acme::POE::Tree
perl -MAcme::POE::Tree -e 'Acme::POE::Tree->new()->run()'
Hokkaido.pm #3
魔法のよう
Xmas にひとりでもさみしくないぜ!!
Hokkaido.pm #3
ナ カ ーマ
Hokkaido.pm #3
友好的
Hokkaido.pm #3
まとめサイトから画像をぶっこ抜いてウマー
お小遣い稼ぎサイトで自動クリックさせてウマー
Hokkaido.pm #3
美味しい
Hokkaido.pm #3
リビドー駆動開発
Hokkaido.pm #3
Hokkaido.pm #3
Hokkaido.pm #3
放送禁止的
プログラミング初めての方に送る
Perl のインストールから簡単なCGIアプリの作成まで
谷内 元 (keroyonn) / Hokkaido.pm
Hokkaido.pm #3
 WEB系プログラマ in Sapporo
 仕事のメイン:Flex/ExtJS
 趣味のメイン:C# +WPF
 サーバーサイド: Perl
 ちょっとずつ違う素敵なID達
 cpan : keroyon http://search.cpan.org/~keroyon/
 github : keroyonn http://github.com/keroyonn
 twitter : keroyonn_ http://twitter.com/keroyonn_
 hatena :keroyon0630 http://d.hatena.ne.jp/keroyon0630
Hokkaido.pm #3
 Perl と CGI についてやさしくゆるく語ります
 プログラムを書いたことがない方でもOK
 内容
 Perl と CGI について
 インストール
 Perl の基本文法
 CGIの基本
 簡単なアプリを作ってみる
Hokkaido.pm #3
Hokkaido.pm #3
Hokkaido.pm #3
Perl とは?
Hokkaido.pm #3
Ruby とか PHP とかの LL の始祖
Hokkaido.pm #3
LLって何さ?
サイズがでかいのかよ!?
Hokkaido.pm #3
Hokkaido.pm #3
違います
Hokkaido.pm #3
本当は…
Hokkaido.pm #3
Hokkaido.pm #3
違います
Hokkaido.pm #3
でも何か6枚くらい
あるらいしいよー
 軽量言語(Lightweight Language)
 簡 単: Java や C++ に比べて学習曲線が緩やか
つまり覚えやすいってことです
 得意分野 :テキスト処理、ネットワーク処理など
 苦手分野 :数値計算や画像処理など。
苦手分野もモジュール機構を使ってそれが得意な
人と連携することである程度克服できる
Perl は発展を遂げ続けており、perlをまねた後発の言語の良いと
ころをどんどん取り入れている。
結果として、どれも良く似ている。
人気の言語は多くは大規模サイトでの実績もあり、仕事で使わ
れている
Hokkaido.pm #3
 柔軟 (TMTOWTDI)
There's more than one way to do it.
 厳格(use strict)
コンパイル時に未定義変数チェックとか
コーディング規約のチェックとか
 変なものに寛容 (Acme)
Oppai / モーニング娘
 CPAN (膨大なライブラリ群)
 テスト文化
Hokkaido.pm #3
Hokkaido.pm #3
Hokkaido.pm #3
ブラウザ
・InternetExplorer
・Firefox
WEBサーバー(接続要求を待受)
・Apache
・anHTTPD
HTMLファイル
要求(リクエスト)解釈/実行
HTML/JS/CSSを送信(レスポンス)
CGIファイル
要求
CGIプログラムを送信
解釈/実行
CGIファイル
プログラミング言語
・Perl、Ruby、Cなど
解釈/実行
HTMLを送信
解釈/実行
要求
データベースサーバー
・PostgreSQL
・MySQL
・Oracle など
抽出/保存
リッチクライアント
デスクトップアプリ
Flex/ExtJS/Silverlight/WPF
XML/JSON/MessagePack とか
古典的
CGIアプリ
今時
WEBアプリ
Hokkaido.pm #3
 WEBサーバー
ホームページを公開しているプロバイダのコンピューターでは、WEBサー
バーというプログラムが動作しています。
これはインターネットの利用者がHTMLファイルを見たいという要求を
送ってこないかどうかを常時監視しているプログラムです。
 リクエスト/レスポンス
利用者がIEなどのブラウザでURLを入力すると、WEBサーバーへそのファ
イルを見たいという要求をしたことになります。
要求を感知したWEBサーバーは、そのHTMLファイルをブラウザに送りつ
けます。
 ブラウザの解釈/レンダリング
それがHTMLファイルであるうちは問題ありません。HTMLファイルに書か
れるHTMLタグや、スタイルシート、JavaScriptはブラウザが解釈・実行で
きるので、送られてきたファイルを実行すれば終わりです。
しかし、要求されたものがCGIファイルであった場合、ブラウザはそこに
書かれている特殊な命令が理解できません。
Hokkaido.pm #3
 サーバーサイドによるHTML生成
WEBサーバーはCGIファイルが要求された場合、一度Perlというプログラム
にCGIファイルを送りつけ、実行させます。
PerlはCGIファイルを実行し、HTMLファイルを自動生成します。そのHTML
ファイルをWEBサーバーが送信するので、ブラウザでも解釈・実行ができ
るようになります。
 データベース連携
つまりCGIは利用者のパソコンで実行されるのではなく、サーバー上で動
作することになります。それによって、サーバー上にファイルを保存した
り、サーバー上で動作しているデータベースサーバーからデータを抽出し
てHTMLに変換するなどといったことが可能となります。
 Perl とWEBサーバーが必要
自分が作成したHTMLファイルをチェックするには、ダブルクリックして
実行させればOKでしたが、CGIファイルはダブルクリックしてもブラウザ
が解釈できません。そこでWEBサーバーとPerlをダウンロードし、インス
トールする必要があります。
Hokkaido.pm #3
Perl とWEBサーバーのインストール
Hokkaido.pm #3
 Active Perl
 一番手軽。昔からのWindowsでの定番
 モジュールの管理方法が Unix 環境とかなり違う
 Strawberry Perl
 手軽でUnix の perl に近い感覚で扱える
 LarryWall 氏推奨
 Cygwin
 Linux にそっくり。でも微妙に違う。
 導入もそんなに簡単じゃない
 本物(VMWare で Ubuntuなど)
 意外と導入が簡単 / OSはGUIでも操作できる
 実際の本番環境にそっくりにできる
 初心者向け参考書籍がたくさん出ている
Hokkaido.pm #3
 Cで書かれた有名どころ
 Apache(アパッチ)
 nginx(エンジンエックス)
 Lighttpd(ライティ)
 Perl で書かれたPlack対応サーバー
 Starlet (スターレット旧:Plack::Server::Standalone::Prefork::Server::Starter)
 Starman (スターマン 旧: HTTP::Server::PSGI::Net::Server::PreFork)
 Twiggy (トゥイッギー 旧:AnyEvent::Server)
 Windowsオンリーな開発用
 AN HTTPD
Hokkaido.pm #3
 「わけわからん/とりあえず動かすだけで精一杯」の場合
 AN HTTPD + Active Perl
OR
 AN HTTPD + Strawberry Perl (今日はこれ)
 ちゃんと開発するなら
 本番環境と同じ構成にします
なので要件しだいです
 たぶんVMWare などで Linux を動かすことになるでしょう
 たぶん Apache(mod_perl/mod_fastcgi) か、Starlet/Starman になるで
しょう
 WAF を使った開発になるでしょう。WAF付属のサーバーも使うこと
になります。
 どんなに複雑な構成になったとしても、基礎/教養として古典的な
CGI開発は知っておいて損はないでしょう
Hokkaido.pm #3
 ダウンロードURL
 http://strawberry-perl.googlecode.com/files/strawberry-perl-
5.12.1.0.m
 インストール
 GUIのインストーラがついている
 ダブルクリックで実行すれば勝手に入れてくれる
 インストールの確認
 一度ログアウトしてログインしなおす
 コマンドプロンプトを開く
 perl –v と入力して Enter キーを押した時にバージョン番号
が表示されればOK
Hokkaido.pm #3
 ダウンロードURL
 http://www.st.rim.or.jp/~nakata/httpd142p.zip
 インストール
 インストーラはないので、任意のフォルダに解凍します
 実行
 解凍したフォルダ内の「httpd.exe」をダブルクリックしま
す
 タスクバーの時計の表示されているあたりに黄色いアイコ
ンが表示されたら、無事実行されています
Hokkaido.pm #3
 時計の横に常駐しているANHTTPDのアイコンを右ク
リックして「オプション一般(G)」をクリックします
 「一般」タブの「ドキュメントルート」を任意の内容に
変更します
※この設定値が、外部に公開されるファイルの置き場所
となります。つまり、Perl プログラムの保存先となりま
す。
 「表示/インデックス」タブのwww.browseableのチェッ
クがついていたら、はずしておきます
Hokkaido.pm #3
 メモ帳などのテキストエディタで以下の内容を入力後、
「hello.cgi」という名前で「ドキュメントルート」に設定したフォ
ルダに保存します。
print "Content-type:text/htmlnn";
print "<html>";
print "<head>";
print "<title>Hello CGIWorld.</title>";
print "<style>";
print "h2 {background-color:aqua;}";
print "</style>";
print "<script>";
print "window.resizeTo(300,300);";
print "</script>";
print "</head>";
print "<body>";
print "<h2>Hello CGIWorld</h2>";
print "<p><b>CGI</b>テストプログラムです。</p>";
print "<p>スタイルシート・JavaScriptともに動いていますか?</p>";
print "<p>動いていない場合は;などの打ち忘れがないか確認しましょう</p>";
print "</body>";
print "</html>";
Hokkaido.pm #3
 ブラウザから「http://localhost/ 」にアクセスします
 hello.cgi というファイル名がブラウザにあらわれるので、
それをクリックします
※あらわれない場合は以下をチェックします
 www.browseableのチェックがついていないこと
 「ドキュメントルート」で設定したフォルダにファイルが保存
されていること
 HTML文書が正しくレンダリングして表示されたら、動
作テストは完了です
Hokkaido.pm #3
 入力間違いなどがあった場合に、ブラウザにエラーメッセー
ジが表示されません。
 WAFを使った場合には大抵きれいなエラーメッセージが表示されま
す。
 もしくはそのようにプログラムを書けば表示させることもできます。
 WAFのような抽象化レイヤを使わないでWEBアプリを書いていいの
は、基本的に勉強するためのコードの時だけ!!
 WAF 使いたい人は、とりあえず Mojolicious::Lite でググるといい
よ!!!!
 リーダーが次回懇切丁寧に教えてくれるかもね!!!!!
 っていうか今日懇親会で石垣さんに訊いてみるといいよ!!!!!!!!!!!!!
 僕達は今日初めてプログラミングをする人達なので、コマン
ドプロンプトを使ってエラーメッセージのチェックを行いま
す。
Hokkaido.pm #3
Hokkaido.pm #3
Hokkaido.pm #3
 次のソースを入力し、「ドキュメントルート」フォルダ
に「debug.cgi」という名前で保存してください
print "Content-type:text/htmlnn";
print "<html>";
print "<head><title>間違い探し</title></head>";
print "<body>";
# #をつけた行はコメント扱いになり、実行時には無視されます。
この行はどうなるでしょう?
# 次の行には行末に「;」が抜けていますが、このまま入力してください。
print "<i>Hello</i>"
print "<b>CGI World</b>";
print "</body>";
print "</html>";
Hokkaido.pm #3
 「スタート」→「プログラム」→「アクセサリ」→「コマンドプロ
ンプト」をクリックする
 C:¥>と表示されたら、cd 半角スペース を入力後、「ドキュメン
トルート」フォルダをウィンドウ内にドラッグします。
 cd “ [あなたのフォルダ]”と表示されたら、Enterキーを押します
 perl debug.cgiと入力してEnterキーを押します。
エラーが英文で表示されます。メッセージは英文ですが、「line
7」のように間違っている箇所の行数が表示されるので間違いを訂
正後、再度perl debug.cgiとします。
※エラーが表示されなくなるまで繰り返します。
 エラーが表示されなくなったら、ブラウザからhttp://localhost/を表
示させ、debug.cgiをクリックします。
正常に表示されることを確認してください。
Hokkaido.pm #3
Hokkaido.pm #3
Perl プログラムは単なるテキストファイル
OS付属の「メモ帳」でプログラムを作ることができます。
Eclipse やVisual Studio といった「統合開発環境」は必要としません。
print で「標準出力」
標準出力でコマンドプロンプトだけでなく、CGIを使ったブラウザへの出力も可能です。
つまりWEBアプリケーションを作ることができます。
ファイルに出力することもできますが、今回は扱いません。
細かい書き方
 コメント:プログラマの覚書のようなものです。どのような文字も書き込むことができます
 命令文:組み込み関数。組み込み関数を組合せて自分で関数/命令を作成することもできます
 引数:命令文に与えるデータです。
 文字列:引数には数値と文字列を渡すことができます。文字列はダブルコーテーションで囲んでやる必
要があります。
 エスケープシーケンス:文字列内には(バックスラッシュ)で始まる表示制御用の文字列を埋め込むこと
ができます。nは改行を表わします。
 セミコロン:命令文が終了することを表わす区切りの記号です。日本語の「。」と同じです
# HelloWorld と画面に表示します
print "Hello Worldn";
hello.pl
Hokkaido.pm #3
 命令の一覧はどこで見れば?
 「perl 関数 リファレンス」で検索すると見ることができます。
PHPとの違い
Perl の組み込み関数は PHP ほど種類が多くありません。
多くの機能はモジュールとして提供されています。
たくさんのモジュールが標準で組込まれています。
 中級者向け
perldoc perlfunc で組み込み関数の一覧を見ることができます。
perldoc –f 組み込み関数名で命令の詳細を確認することができます。
ただし英語です。日本語もありますが、ちょっとセットアップが
難しいです。
試したい方は、「perldoc 日本語化」で検索すると出てきます。
Hokkaido.pm #3
 perlのインストール場所の記述
1行目は「#!」に続けてperlがインストールされている絶対パスを記述します。
Strawberry Perlの場合は、#!/strawberry/perl/bin/perlとなります。
ホスティングサービスなどでUNIX系のサーバーを利用している場合には、
#!/usr/local/bin/perl または #!/usr/bin/perlなどとなることが多いようです。
 #によるコメント
3行目と6行目の行頭に#がついています。こう書くとその行は Perl が無視します。
プログラマが自分のためのメモとして使ったりします。
1: #!/strawberry/perl/bin/perl
2:
3: # HTTPヘッダー出力
4: print "Content-type:text/htmlnn";
5: この空行は出力されません
6: # HTML本文出力
7: print "<HTML>";
8: print "<HEAD><TITLE>sample</TITLE></HEAD>";
9: print "<BODY>Hello!!</BODY>";
10:print "</HTML>";
Hokkaido.pm #3
 Content-typeヘッダーの出力
 昔風の素朴なCGIプログラムでは主にHTML文書を生成します。ところがそ
のファイル名はcgiという拡張子です。
 ブラウザは拡張子でファイルの種類を判断するため、そのままではHTML文
書として取り扱ってくれません。「HTTPヘッダー」を書くとコンテンツの
種類などをブラウザに伝えることができるようになります。
 ブラウザは最初の空行までを、特殊な命令、空行以降をタグとして解釈しま
す。その特殊な命令をHTTPヘッダーといいます。Content-type:text/htmlを最
初に出力することで、拡張子を無視し、HTMLファイル扱いさせることがで
きます。その後は空行を出力するために、改行コードnを2回書かなければ
いけません。
Content-type:text/html
<html>
前は特殊命令
後はHTML
空行 2回の改行で空行ができる
Hokkaido.pm #3
 記号には、それに続く一文字の特殊性を奪い、単なる文字として解釈させるという効果がありま
す。
これをエスケープといいます。シングルコーテーションまたはダブルコーテーションの前にをつ
けると、それを単なる文字として扱わせることで、正しいHTMLをつくることができます。
 例
■ "を文字として出力したい
print """;
■ を文字として出力したい
print "";
 ポイント:ダブルコーテーションはでエスケープする。
記号自体を出力するためには¥¥とする必要がある。
<p align="center">
print "<p align="center">"; # これはエラー
print "<p align="center">";
print '<p align="center">';
print "<p align='center'>";
Hokkaido.pm #3
 Quoted like operators を使うとダブルコーテーションやシングルコー
テーションの代わに任意の記号を文字列の区切り記号に使うことが
できます。
 qq任意の文字hogehoge任意の文字qq
ダブルコーテーションと同じ
 q任意の文字hogehoge任意の文字q
シングルコーテーションと同じ
print qq{<p align="center">};
print qq!<p align="center">!;
print q{<p align="center">};
print q!<p align="center">!;
Hokkaido.pm #3
 CGIでは非常に長いに及ぶHTML文書を書き出すこともありますが、
その際に毎回print文を書くのは非効率的です。ヒアドキュメントを
利用すると、ひとつのprint文で大量のHTMLを生成できます。
 やや癖のある書き方となるので、特徴を覚えることが必要です。
#!/perl/bin/perl
print <<”END”;
Content-type:text/html
<html>
<head>
<title>ヒアドキュメント・テスト</title>
</head>
<body bgcolor=”#0099cc”>
<h3>サンプルです。</h3>
</body>
</html>
END
空白推奨 < と ” 間の空白不可
改行必須
改行が反映される
(nは不要)
改行は不可
改行必須
セミコロン不可
空白不可
任意の文字列でマーク(通常大文字)
Hokkaido.pm #3
 __DATA__ と入力された行以降はプログラムでなく、データとして認識され
るため、文字列を設定するのに利用できます。
※Data::Section::Simple といったモジュールを利用すると楽に扱うことがで
きます
 YAMLやINI形式といった設定ファイルを利用して文字列を設定することも多
いです
 実際には長い文字列は「テンプレートエンジン」と呼ばれる仕組みを使って
出力させます。
Text::MicroTemplate やText::Xslate が Perl でテンプレートエンジンの定番です。
※今でもヒアドキュメントによる出力がなくなったわけではありません。
SQL文の埋め込みなどに利用するのに便利です。
Hokkaido.pm #3
Hokkaido.pm #3
 perlでは通常の変数をスカラー変数と呼びます。
 $マークを先頭につけることでそれが単なるアルファベットなのか、変数
なのかの判別を行います。
 変数名には英数字とアンダースコアを利用することができますが、数字か
ら始まる変数名は使えません。
#!/strawberry/perl/bin/perl
$seisuu = 10; # 数値はただ=で代入します
$shousuu = -0.8; # 負や小数も利用できます
$moji1 = "Hello!"; # 文字は”が必要です。
$moji_2 = 'Good morning.'; # ‘も利用できます。
print $moji1;
Hokkaido.pm #3
 スカラー変数は文字列内に混ぜることで文字と一緒に出力できます。
※「展開される」と言います。
 ‘ (シングルコーテーション)では変数は出力できません。ただの文字とみな
されます。
 (応用) UTF8フラグを立てたソースコードではprint “値は${seisuu}です”;など
のように、{} で変数を覆う必要があります。
#!/strawberry/perl/bin/perl
$seisuu = 1000;
print $seisuu; # 変数名だけで出力できます
print "$seisuun"; # “内でも展開されます
print $seisuun; # nは文字なので”が必要です(エラー)
print '$seisuun'; # ‘内では展開されません
print ‘${seisuu}hogen’; # {} で前後の変数と結合されるのを防ぎます
print "$seisuu='$seisuu'n"; # “内の’内では展開されます
Hokkaido.pm #3
 + ー * / で、変数と定数どうしの四則演算ができます。
 計算の優先順位を示すための かっこ() を利用することもできます。
 これらの記号を演算子といいます
 特に計算に使う演算子を算術演算子と呼びます。
 「perl 演算子」でググるといいよ!
#!/strawberry/perl/bin/perl
$a = 100;
$b = 3;
$answer = $a * $b * 1.05;
print "<p>お見積もり金額は<i>$answer</i>円(税込み)となりました。</p>";
数値定数
#!/strawberry/perl/bin/perl
$nedan = 800;
$kazu = 39;
$waribiki = 0.2;
$kingaku = $nedan * $kazu * (1 - $waribiki);
print “お見積もり金額は” . ”<b>$kingaku円</b>(税抜き)となりました。<br>";
文字列の足し算(連結)もできたりします
Hokkaido.pm #3
 変数名の後ろに[番号]を添えることで、複数の値をひとつの変数で管理で
きます。
 @を使うことで、一括代入、一括出力が可能です
 通常の変数に[番号]をつけるだけなので、$a[0]というような形になります。
@a[0]ではないことに気をつけてください。
 算術演算子を使った計算などもスカラー変数と同様に可能です
#!/strawberry/perl/bin/perl
$sinchou[0] = 173; # 個別に代入しています。
$sinchou[1] = 165;
$sinchou[2] = 181;
print "1番目の生徒の身長は$sinchou[0]cmです。n";
print "3番目の生徒の身長は$sinchou[2]cmです。n";
@taijuu = (68,50,92); # 一括で代入する場合には、@を使います。
print "2番目の生徒の身長は$sinchou[1]cm、体重は$taijuu[1]kgです。n";
print "3番目の生徒の体重は$taijuu[2]kgです。n";
print "一括表示:@sinchoun";
Hokkaido.pm #3
もの足りない人は、
List::Util、List::MoreUtils で
ググって!!
Hokkaido.pm #3
一応補足。
$a と $b は特別な変数です
あんまり気軽に使うと><
Hokkaido.pm #3
さらに補足。
こんな便利なものもあるよ!
qw(apple orange banana)
Hokkaido.pm #3
 $変数名[番号]に対して、$変数名{‘文字’}というように文字を添えて複数の
データを管理できるのがハッシュです。
 配列は番号による管理なので、同種のデータをまとめる場合には有効です
が、様々な種類のデータを格納するのには向いていません。多様なデータ
を扱う場合にはハッシュが向いています。
 %を使うことで、一括代入が可能です
 通常の変数に{‘文字’}をつけるだけなので、$a{‘文字’}というような形になり
ます。
%a{‘文字’}ではないことに気をつけてください。
 算術演算子を使った計算などもスカラー変数と同様に可能です
Hokkaido.pm #3
#!/strawberry/perl/bin/perl
# 複数人の1種類のデータは配列(リスト)
@kokugo = (98, 59, 67, 12, 33);
print "<p>1番目の生徒の国語の得点は$kokuko[0]点です。</p>n";
print "<p>3番目の生徒の国語の得点は$kokugo[2]点です。</p>n";
# 一人の複数種類のデータは連想配列(ハッシュ)
# 個別に代入しています
$seito1{'sinchou'}=173;
$seito1{'taijuu'}=67;
$seito1{'IQ'}=0;
print "<p>1番目の生徒の身長は$seito1{‘sinchou’}cmです。</p>n";
print "<p>1番目の生徒の体重は$seito1{‘taijuu’}kgです。</p>n";
print "<p>1番目の生徒の知能指数は$seito1{‘IQ’}です。</p>n";
# 一括代入するためには変数名に%をつけます
%seito1 = ('kokugo'=>98, 'rika'=>65, 'suugaku'=>41, 'eigo'=>89);
print "<p>1番目の生徒の理科の点数は$seito1{'rika'}点です。</p>n";
print "<p>1番目の生徒の英語の点数は$seito1{'eigo'}点です。</p>n";
Hokkaido.pm #3
Hokkaido.pm #3
■条件式
-数値の場合-
等しい == 等しくない !=
以上 >= より大きい >
以下 <= より小さい <
-文字の場合-
等しい eq 等しくない ne
■条件の成立 1が返される
■条件の不成立 空文字列(0も同じ意味)が返される
■条件式の結合
同時に2つの条件を満たす
条件1 && 条件2
いずれかを一方を満たす
条件1 || 条件2
複雑な場合
条件1 && (条件2 || 条件3)
1を満たしていて、かつ
2または3のいずれかを満たす
 処理の繰り返しと選択はプログラミングの基本的で重要な要素です。
 perlでは「if」という選択構文と 「while」「for」 「foreach」という3種類
の繰り返し構文が用意されています。
 このような構文のことを制御構文と呼びます。
 これらに共通して重要なのが、「条件式」です。
Hokkaido.pm #3
#!/strawberry/perl/bin/perl
%profile = (
'name' => "鈴木", # 苗字
'tall' => 185, # 身長
'weight' => 80, # 体重
'blood' => "AB", # 血液型
'age' => 25 # 年齢
);
$hantei1 = $profile{'name'} == "佐藤"; # あえて==を利用しています。
$hantei2 = $profile{'tall'} >= 180;
$hantei3 = $profile{'weight'} < 80;
$hantei4 = $profile{'blood'} eq "AB";
$hantei5 = $profile{'age'} > 20 && $profile{'age'} <=30;
$hantei6 = ($hantei1 || $hantei2) && $hantei3;
print <<"END";
結果
$hantei1 = '$hantei1'
$hantei2 = '$hantei2'
$hantei3 = '$hantei3'
$hantei4 = '$hantei4'
$hantei5 = '$hantei5'
$hantei6 = '$hantei6'
END
Hokkaido.pm #3
 if 文を利用すると、条件を満している/いない場合に応じて複数の処理から
ひとつを選択することができます。
 else if は elsif と書きます
if( 0または1 ){
命令文1;
命令文2;
…
}
if( 0または1 ){
命令文;
}else{
命令文;
}
if( 0または1 ){
命令文;
}elsif( 0または1 ){
命令文;
}else{
命令文;
}
Hokkaido.pm #3
#!/strawberry/perl/bin/perl
$hantei = 500 > 400;
$count = 1000;
# ifの基本は0または1です
if(0){
print "出力されませんn";
}
if(1){
print "出力されますn";
}
# 条件式の判定結果を入れることで、実行する命令文を選択できます
if($hantei){
print "条件式の結果が"$hantei"だったので出力されました。n";
}else{
print "条件式の結果が"$hantei"だったので出力されませんでした。n";
}
# 条件式を直接いれることもできます
if($count == 100){
print "あなたは記念すべき100人目の訪問者です。";
}elsif( A ){
print "100人突破記念!!101番目からの限定10名様はn";
print "下記パスワードで会員限定サイトにアクセスできます。n";
print "パスワード:$password";
}
Hokkaido.pm #3
 whileを利用することで、同じを処理を何度も繰り返すことができます。
 最も一般的な用途で使われる繰り返し命令であり、シンプルであるが故に
様々な目的に柔軟に対応できます。
while( 条件式 ){
命令文1;
命令文2;
…
}
#!/strawberry/perl/bin/perl
# 10回繰り返されるようにしてください
$i=0;
while( A ){
print "$i回目の繰り返しですn";
$i++; # $i=$i+1と同義。自分自身を加算する
}
Hokkaido.pm #3
ループ制御はこうです
break → last
continue → next
??? → continue
後置式のif とラベルのコンボ
last ラベル名 if $a == 0;
Hokkaido.pm #3
 forは指定回数を繰り返す処理に向いています。
 for構文のカッコ内には3つの要素を入力します。
 前述の while や 後述の foreach と比べるとちょっと難しいです。
#!/strawberry/perl/bin/perl
# 10回繰り返されるようにしてください
for($i=0; A ;$i++){
print "$i回目の繰り返しですn";
}
for($i=10; B ;$i--){
print "$i=$in";
}
for( 繰り返し前に実行する命令文; 条件式; 2回目以降の繰り返しで実行される命令文){
命令文1;
命令文2;
…
}
Hokkaido.pm #3
 foreachは配列要素を処理するための専用の繰り返し命令です。
 配列要素の処理は非常に頻繁に行われるため、そのための専用命令が用意
されました。
 指定された配列変数から、配列要素を順番に取り出し、スカラ変数に代入
します。
 配列からすべての要素を取り出した時点で自動的に繰り返しが終了するの
で条件式が必要ありません。
foreach スカラ変数 ( 配列変数 ){
命令文1;
命令文2;
…
}
Hokkaido.pm #3
#!/strawberry/perl/bin/perl
@tokuten = (52,29,58,98,100);
# forで配列要素の繰り返し
$max = scalar(@tokuten); # scalar(配列)は配列の要素数を求めます
print "@tokutenの要素数は$maxです。n";
for($index=0; $index < $max; $index++){
print "$tokuten[$index] = $tokuten[$index]n";
}
# whileで配列要素の繰り返し
$i = 0;
while($i<scalar(@tokuten)){
print "$tokuten[$i] の値は $tokuten[$i] ですn";
$i++;
}
# foreachで配列要素の繰り返しその1
foreach $youso ( @tokuten ){
print "$youson";
}
# foreachで配列要素の繰り返しその2
$i = 0;
foreach $t ( @tokuten ){
print "$tokuten[$i] = $tn";
$i++;
}
Hokkaido.pm #3
#!/strawberry/perl/bin/perl
@namelist = ("阿部","伊藤","伊東","宇野","田辺","高橋","中村");
print <<"HEADER";
Content-Type: text/html
<html>
<head>
<title>foreachによるtable</title>
</head>
<body>
<table border="0" cellspacing="1" bgcolor="black">
HEADER
foreach $name (@namelist){
print " <tr><td bgcolor=”white”>$name</td></tr>n";
}
print <<"FOOTER";
</table>
</body>
</html>
FOOTER
Hokkaido.pm #3
 処理の選択と繰り返しはプログラミングの最重要事項です。
 複雑な処理も、選択と繰り返しの組み合わせでできています。
#!/strawberry/perl/bin/perl
@tokuten = (52,29,58,98,100,91,27,51,92,85,61,90,75,14,12,95,61,90,47,12,94,7,15,14,95,61,
97,59);
# 計算の仕組み
# $sum = 0;
# $sum = $sum + 52; → $sum = 0 + 52;
# $sum = $sum + 29; → $sum = 52 + 29;
# …と繰り返すことで合計値が計算されます。
$sum = 0;
foreach $t ( @tokuten ){
$sum = $sum + $t;
}
$avg = $sum / scalar(@tokuten);
print "合計得点は$sumです。n";
print "平均得点は$avgです。n";
Hokkaido.pm #3
#!/strawberry/perl/bin/perl
@tokuten = (52,29,58,98,100,91,27,51,92,85,61,90,75,14,12,95,61,90,47,12,94,7,15,14,9
5,61,97,59);
# 50点以上だった場合のみ、$countが加算されるので、
# 50点以上を獲得した人数がカウントされます。
$count = 0;
foreach $t ( @tokuten ){
if($t >= 50){
$count++;
}
}
print "50点以上を獲得した受験者数は$count人です。n";
Hokkaido.pm #3
map とか grep とか
@ret = grep {$_>=50} @tokuten
@ret = map {$_ *=2} @tokuten
Hokkaido.pm #3
#!/strawberry/perl/bin/perl
@tokuten = (52,29,58,98,100,91,27,51,92,85,61,90,75,14,12,95,61,90,47,12,94,7,15,14,9
5,61,97,59);
# 50点の受験者がいたら、$exists_flagに1を代入
$exists_flag = 0;
foreach $t ( @tokuten ){
if($t == 50){
$exists_flag = 1;
}
}
if($exists_flag){
print "発見しました。n";
}
Hokkaido.pm #3
#!/strawberry/perl/bin/perl
@tokuten = (52,29,58,98,100,91,27,51,92,85,61,90,75,14,12,95,61,90,47,12,94,7,15,14,9
5,61,97,59);
# 最初に0を最大値($max)として仮定し、
# 繰り返しながら、逐次、個々の得点と$maxの大小関係を調べます。
# $maxよりも個々の得点の方が大きかった場合、
# $maxにはその得点が代入されます。
# 最終的には$maxに一番大きな値が代入されているはずです。
$max = 0;
foreach $t ( @tokuten ){
if($max < $t){
$max = $t;
}
}
print "最高得点は$maxです。n";
Hokkaido.pm #3
もの足りない人は、
List::Util、List::MoreUtils で
ググって!!
Hokkaido.pm #3
#!/strawberry/perl/bin/perl
@tokuten = (52,29,58,98,100,91,27,51,92,85,61,90,75,14,12,95,61,90,47,12,94,7,15,14,9
5,61,97,59);
$i=0;
foreach $t (@tokuten) {
if($t >= 50){
$over50[$i] = $t;
$i++;
}
}
print "@over50";
Hokkaido.pm #3
#!/strawberry/perl/bin/perl
@tokuten = (52,29,58,98,100,91,27,51,92,85,61,90,75,14,12,95,61,90,47,12,94,7,15,14,9
5,61,97,59);
@tokuten = sort(@tokuten); # 昇順に並べ替え
print "@tokutenn";
@tokuten = reverse(@tokuten); # 降順に並べ替え
print "@tokutenn“;
 sort でデータの整列(並び替え) ができます。
 文字列として並べ替えが行われるため、数値の並び順がおかしくなります。
※ 10o と 9 だと 9の方が大きいと判断される
 sort { $a < => $b } 配列 とすると数値の昇順
sort{ $b <= > $a } 配列とすると数値の降順
Hokkaido.pm #3
Hokkaido.pm #3
第二部にご期待ください!
Hokkaido.pm #3
Hokkaido.pm #3
 CGIプログラムではフォームまたはファイルからデータを受け取り(入
力)、それを加工した後でブラウザまたはファイルに出力します。また、
CGIプログラム自身にデータを埋め込むこともできます。
ブラウザ
CGI
ファイル
ブラウザ
ファイル
入力 出力加工
Hokkaido.pm #3
■アクセスカウンタにおける処理
入力 アクセス回数が記録された1行のテキストファイルを読み取り、変数に代入
加工 その変数を1つ加算する。さらにHTML形式に整形する
出力 加算した結果をテキストファイルに上書きし、さらにブラウザにも出力
■掲示板における処理
入力 フォームから投稿されたデータを変数に入力(最新の記事)
入力 ファイルに保存されている過去の記事を配列に入力(古い記事)
加工 フォームのデータとファイルのデータを結合し、配列に入力(全記事)
出力 全記事が揃った配列をカンマ区切り形式でファイルに上書き保存
出力 配列を1件ずつ繰り返しながらtable形式で整形表示
■商品の注文フォームにおける処理
入力 注文フォームで入力された商品データを変数に入力
加工 金額などを計算し、見積もりを作成
出力 注文データをファイルに追加保存
出力 見積もりをHTMLで生成して出力
出力 注文があったことをメールで管理者に出力
Hokkaido.pm #3
form.html
<html>
<head><title>住所入力</title></head>
<body>
<form action="form.cgi">
氏名:<input type="text" name="name"><br>
住所:<input type="text" name="address"><br>
<input type="submit" value="送信">
</form>
</body>
</html>
 formタグのaction属性 にこのフォームの入力処理を行うCGIプログラムの
URLを設定します。
 submit タグを押下すると、CGIプログラムにユーザーの入力データが渡り
ます。
Hokkaido.pm #3
form.cgi
#!/strawberry/perl/bin/perl
use CGI;
$q = CGI->new;
$name = $q->param(‘name’);
$address = $q->param(‘address’);
print <<"END";
Content-type:text/html
氏名入力欄:$name
住所入力欄:$address
END
 use CGI とすると、CGI.pm というプログラム(モジュール)が読み込まれます
 スカラ変数 = モジュール名->new とすると、モジュールが初期化されて使
えるようになります
 スカラ変数->命令とすると、そのモジュールの命令が利用できます
 CGI モジュールの場合には、param(フォーム名) で値が取得できます
Hokkaido.pm #3
#!/strawberry/perl/bin/perl
# ここで右のフォームのHTMLを出力
# 入力の準備
use CGI;
$q = CGI->new;
#入力
$title = $q->param(‘title’);
$url = $q->param(‘url’);
$description = $q->param(‘description’);
# 加工
$data = "$title,$url,$descriptionn"; # カンマ区切りの文字列に変換
# 出力
open $output, ‘>>’, ‘link.txt’;
print $output $data;
close $output;
Hokkaido.pm #3
 フォームからの取得したデータは、データベースやテキストファイル(CSV
形式など)に保存することができます。
 その際に様々な問題が起きるため、回避するの工夫が必要になります。
 問題の例
 何も入力していない状態でもデータが追加されてしまった
 郵便番号を入力すべき箇所に日本語が入力されてしまった
 半角の数値と全角の数値がまざってしまった
 不正な命令を入力されてセキュリティが侵害されてしまった
 複数行入力すると、データが壊れてしまった(CSV形式の場合)
 漢字コードを変換しないと文字化けして表示されてしまった
 同じデータを何回も追加できてしまった
 などなど
Hokkaido.pm #3
きりがないのでひとつだけ
Hokkaido.pm #3
 textareaを利用した複数行入力フィールドなどで、複数行の入力を行った
場合、改行マークも同時に保存されるため、テキストファイルのフォー
マットが崩れます。
 そこで改行マークを発見したら、<BR>タグに置き換えるという作業が必
要になります。
 検索処理
 if(変数名 =~ /検索文字列/){}
「検索文字列」を発見すると1が返り、ifの条件が満たされることにな
ります。
変数の中に「検索文字列」を含んでいればよいので、変数と「検索文
字列」が完全に一致している必要はありません。
 if(変数名 !~ /検索文字列/){}
「検索文字列」が変数に含まれなかった場合に条件が満たされます。
Hokkaido.pm #3
 置換処理
 スカラ変数 =~ s/検索文字列/置換文字列/g;
「検索文字列」を発見したら、それを「置換文字列」に置き換えます。
gは発見されたすべての文字列を置換するという意味になります。
gをつけなかった場合には最初に見つかった文字列を置換すると、終了
します。
 例. 変数 =~ s/rn|r|n/<br>/g;
rnはWindowsの、rはMacintoshの、nはUNIXの改行コードを表します。
「|」は「または」を表し、3つのコードのうちどれか一つを見つけた
らという意味になります。
Hokkaido.pm #3
#!/strawberry/perl/bin/perl
# ここで右のフォームのHTMLを出力
# 入力の準備
use CGI;
$q = CGI->new;
#入力
$title = $q->param(‘title’);
$url = $q->param(‘url’);
$description = $q->param(‘description’);
# 加工
$description =~ s/rn|r|n/<br>/g;
$data = "$title,$url,$descriptionn"; # カンマ区切りの文字列に変換
# 出力
open $output, ‘>>’, ‘link.txt’;
print $output $data;
close $output;
Hokkaido.pm #3
正規表現はまた今度!
Hokkaido.pm #3
Hokkaido.pm #3
今回できなかったこと
リファレンス
関数
正規表現
CPAN/便利モジュール
ネットワークプログラミング
オブジェクト指向
モダンPerl
ベストプラクティス
セキュリティ
Linux
Apache
Plack
WAF
AKB48
…
Hokkaido.pm #3
千里の道も一歩から
今後のHokkaido.pmの活動に
ご期待ください
Hokkaido.pm #3

Más contenido relacionado

La actualidad más candente

W&B webinar finetuning_配布用.pdf
W&B webinar finetuning_配布用.pdfW&B webinar finetuning_配布用.pdf
W&B webinar finetuning_配布用.pdfYuya Yamamoto
 
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】Hiro H.
 
C# における Redis 徹底活用
C# における Redis 徹底活用C# における Redis 徹底活用
C# における Redis 徹底活用Takaaki Suzuki
 
2017年11月02日「radare2」トーク/ワークショップAVTokyo 2017
2017年11月02日「radare2」トーク/ワークショップAVTokyo 2017 2017年11月02日「radare2」トーク/ワークショップAVTokyo 2017
2017年11月02日「radare2」トーク/ワークショップAVTokyo 2017 unixfreaxjp
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話Daichi Koike
 
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみたKohei Tokunaga
 
ドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてKota Mizushima
 
Spring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のことSpring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のこと心 谷本
 
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!デベロッパーネットワーク
 
事業成長にコミットするエンジニア組織への道のり
事業成長にコミットするエンジニア組織への道のり事業成長にコミットするエンジニア組織への道のり
事業成長にコミットするエンジニア組織への道のりRecruit Lifestyle Co., Ltd.
 
C/C++とWebAssemblyを利用したライブラリ開発
C/C++とWebAssemblyを利用したライブラリ開発C/C++とWebAssemblyを利用したライブラリ開発
C/C++とWebAssemblyを利用したライブラリ開発祐司 伊藤
 
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Serviceメルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes ServiceTadashi Nemoto
 
クソザコ鳥頭が非順序連想コンテナに入門してみた
クソザコ鳥頭が非順序連想コンテナに入門してみたクソザコ鳥頭が非順序連想コンテナに入門してみた
クソザコ鳥頭が非順序連想コンテナに入門してみたMitsuru Kariya
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門Fixstars Corporation
 
CDNのパフォーマンス比較/Cedexis
CDNのパフォーマンス比較/CedexisCDNのパフォーマンス比較/Cedexis
CDNのパフォーマンス比較/CedexisJ-Stream Inc.
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンAkihiko Horiuchi
 
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~JustSystems Corporation
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツpospome
 
C#とILとネイティブと
C#とILとネイティブとC#とILとネイティブと
C#とILとネイティブと信之 岩永
 

La actualidad más candente (20)

W&B webinar finetuning_配布用.pdf
W&B webinar finetuning_配布用.pdfW&B webinar finetuning_配布用.pdf
W&B webinar finetuning_配布用.pdf
 
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
 
C# における Redis 徹底活用
C# における Redis 徹底活用C# における Redis 徹底活用
C# における Redis 徹底活用
 
2017年11月02日「radare2」トーク/ワークショップAVTokyo 2017
2017年11月02日「radare2」トーク/ワークショップAVTokyo 2017 2017年11月02日「radare2」トーク/ワークショップAVTokyo 2017
2017年11月02日「radare2」トーク/ワークショップAVTokyo 2017
 
Kotlinアンチパターン
KotlinアンチパターンKotlinアンチパターン
Kotlinアンチパターン
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
 
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
 
ドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修について
 
Spring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のことSpring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のこと
 
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
 
事業成長にコミットするエンジニア組織への道のり
事業成長にコミットするエンジニア組織への道のり事業成長にコミットするエンジニア組織への道のり
事業成長にコミットするエンジニア組織への道のり
 
C/C++とWebAssemblyを利用したライブラリ開発
C/C++とWebAssemblyを利用したライブラリ開発C/C++とWebAssemblyを利用したライブラリ開発
C/C++とWebAssemblyを利用したライブラリ開発
 
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Serviceメルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
 
クソザコ鳥頭が非順序連想コンテナに入門してみた
クソザコ鳥頭が非順序連想コンテナに入門してみたクソザコ鳥頭が非順序連想コンテナに入門してみた
クソザコ鳥頭が非順序連想コンテナに入門してみた
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
CDNのパフォーマンス比較/Cedexis
CDNのパフォーマンス比較/CedexisCDNのパフォーマンス比較/Cedexis
CDNのパフォーマンス比較/Cedexis
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツ
 
C#とILとネイティブと
C#とILとネイティブとC#とILとネイティブと
C#とILとネイティブと
 

Destacado

Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろうPerl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろうkeroyonn
 
Perlで次世代ゲーム開発
Perlで次世代ゲーム開発Perlで次世代ゲーム開発
Perlで次世代ゲーム開発keroyonn
 
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 20130から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013Tasuku Suenaga
 
中高生向けUnity講座
中高生向けUnity講座中高生向けUnity講座
中高生向けUnity講座MakotoItoh
 
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイドYAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイドkeroyonn
 
Games::* - Perlで 「ゲーム」しよう #hokkaidopm
Games::* - Perlで 「ゲーム」しよう #hokkaidopmGames::* - Perlで 「ゲーム」しよう #hokkaidopm
Games::* - Perlで 「ゲーム」しよう #hokkaidopm鉄次 尾形
 
Takao.mt 2013
Takao.mt 2013Takao.mt 2013
Takao.mt 2013moznion
 
Plack::Request with Encoding
Plack::Request with EncodingPlack::Request with Encoding
Plack::Request with Encodingmoznion
 
Google trends to_irc
Google trends to_ircGoogle trends to_irc
Google trends to_ircrarere
 
"Ops Tools with Perl" 2012/05/12 Hokkaido.pm
"Ops Tools with Perl" 2012/05/12 Hokkaido.pm"Ops Tools with Perl" 2012/05/12 Hokkaido.pm
"Ops Tools with Perl" 2012/05/12 Hokkaido.pmRyosuke IWANAGA
 
YAPCレポートの舞台裏
YAPCレポートの舞台裏YAPCレポートの舞台裏
YAPCレポートの舞台裏Masahiro Honma
 
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)goccy
 
テーマ「最適化」
テーマ「最適化」テーマ「最適化」
テーマ「最適化」technocat
 
理解したつもりになるGit入門
理解したつもりになるGit入門理解したつもりになるGit入門
理解したつもりになるGit入門Yoshihiro Sasaki
 
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使うYAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使うmoznion
 
テーマ「なんでもないようなこと」
テーマ「なんでもないようなこと」テーマ「なんでもないようなこと」
テーマ「なんでもないようなこと」technocat
 

Destacado (20)

Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろうPerl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
 
Perlで次世代ゲーム開発
Perlで次世代ゲーム開発Perlで次世代ゲーム開発
Perlで次世代ゲーム開発
 
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 20130から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
 
中高生向けUnity講座
中高生向けUnity講座中高生向けUnity講座
中高生向けUnity講座
 
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイドYAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
 
Games::* - Perlで 「ゲーム」しよう #hokkaidopm
Games::* - Perlで 「ゲーム」しよう #hokkaidopmGames::* - Perlで 「ゲーム」しよう #hokkaidopm
Games::* - Perlで 「ゲーム」しよう #hokkaidopm
 
Takao.mt 2013
Takao.mt 2013Takao.mt 2013
Takao.mt 2013
 
Plack::Request with Encoding
Plack::Request with EncodingPlack::Request with Encoding
Plack::Request with Encoding
 
Using Dancer
Using DancerUsing Dancer
Using Dancer
 
Google trends to_irc
Google trends to_ircGoogle trends to_irc
Google trends to_irc
 
"Ops Tools with Perl" 2012/05/12 Hokkaido.pm
"Ops Tools with Perl" 2012/05/12 Hokkaido.pm"Ops Tools with Perl" 2012/05/12 Hokkaido.pm
"Ops Tools with Perl" 2012/05/12 Hokkaido.pm
 
Asset Pipeline for Perl
Asset Pipeline for PerlAsset Pipeline for Perl
Asset Pipeline for Perl
 
YAPCレポートの舞台裏
YAPCレポートの舞台裏YAPCレポートの舞台裏
YAPCレポートの舞台裏
 
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
 
テーマ「最適化」
テーマ「最適化」テーマ「最適化」
テーマ「最適化」
 
理解したつもりになるGit入門
理解したつもりになるGit入門理解したつもりになるGit入門
理解したつもりになるGit入門
 
Currying in perl
Currying in perlCurrying in perl
Currying in perl
 
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使うYAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
 
テーマ「なんでもないようなこと」
テーマ「なんでもないようなこと」テーマ「なんでもないようなこと」
テーマ「なんでもないようなこと」
 
YAPC::AsiaとHokkaido.pm
YAPC::AsiaとHokkaido.pmYAPC::AsiaとHokkaido.pm
YAPC::AsiaとHokkaido.pm
 

Similar a Perl/CGI 入門

Scala + Finagleの魅力
Scala + Finagleの魅力Scala + Finagleの魅力
Scala + Finagleの魅力Kota Mizushima
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計maebashi
 
ABEMA を次のフェーズへ進化させる技術への取り組み
ABEMA を次のフェーズへ進化させる技術への取り組みABEMA を次のフェーズへ進化させる技術への取り組み
ABEMA を次のフェーズへ進化させる技術への取り組みYusuke Goto
 
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めCell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めYou&I
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!Minoru Naito
 
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発Shinya Takamaeda-Y
 
COBOL技術者のためのJava勉強会
COBOL技術者のためのJava勉強会COBOL技術者のためのJava勉強会
COBOL技術者のためのJava勉強会naka hide
 
Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Masaki Muranaka
 
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)v6app
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜Hideki Takase
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016Yu Ito
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますinfinite_loop
 
開発検証環境の自動化@自動化大好きエンジニアLT会 - vol.2
開発検証環境の自動化@自動化大好きエンジニアLT会 - vol.2開発検証環境の自動化@自動化大好きエンジニアLT会 - vol.2
開発検証環境の自動化@自動化大好きエンジニアLT会 - vol.2Takahiro Yamada
 
runC概要と使い方
runC概要と使い方runC概要と使い方
runC概要と使い方Yuji Oshima
 

Similar a Perl/CGI 入門 (20)

Scala + Finagleの魅力
Scala + Finagleの魅力Scala + Finagleの魅力
Scala + Finagleの魅力
 
Niigata.pm #1
Niigata.pm #1Niigata.pm #1
Niigata.pm #1
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
 
ABEMA を次のフェーズへ進化させる技術への取り組み
ABEMA を次のフェーズへ進化させる技術への取り組みABEMA を次のフェーズへ進化させる技術への取り組み
ABEMA を次のフェーズへ進化させる技術への取り組み
 
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めCell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始め
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!
 
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
 
COBOL技術者のためのJava勉強会
COBOL技術者のためのJava勉強会COBOL技術者のためのJava勉強会
COBOL技術者のためのJava勉強会
 
Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料
 
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016
 
Tekton 入門
Tekton 入門Tekton 入門
Tekton 入門
 
Lithium Labo #1
Lithium Labo #1Lithium Labo #1
Lithium Labo #1
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
Haikara
HaikaraHaikara
Haikara
 
開発検証環境の自動化@自動化大好きエンジニアLT会 - vol.2
開発検証環境の自動化@自動化大好きエンジニアLT会 - vol.2開発検証環境の自動化@自動化大好きエンジニアLT会 - vol.2
開発検証環境の自動化@自動化大好きエンジニアLT会 - vol.2
 
runC概要と使い方
runC概要と使い方runC概要と使い方
runC概要と使い方
 

Último

知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 

Último (12)

知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

Perl/CGI 入門