Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CGIプログラムを書いてみた
Search
uutan1108
August 25, 2024
Programming
1
240
CGIプログラムを書いてみた
ゆるWeb勉強会@札幌 #27 / フロントエンドカンファレンス北海道2024 お疲れ様会
https://mild-web-sap.connpass.com/event/327040/
uutan1108
August 25, 2024
Tweet
Share
More Decks by uutan1108
See All by uutan1108
「何か」を求めて参加したカンファレンスから持ち帰ってきた「熱」を維持して、活用するために
ohmori_yusuke
2
99
1人150秒、2人で5分 LT
ohmori_yusuke
2
72
Tidy First?個人で実践する経験主義的ソフトウェア設計を読んでみた感想
ohmori_yusuke
2
51
今年始めた 「アニメから得た学びを発表会」
ohmori_yusuke
2
1.9k
行き当たりばったりの二年
ohmori_yusuke
1
350
技書博に参加したら執筆できた
ohmori_yusuke
1
1.8k
開発終了後こそ成長のチャンス!プロダクト運用を見送った先のアクションプラン
ohmori_yusuke
2
300
学生の時に開催したPerl入学式をきっかけにエンジニアが組織に馴染むために勉強会を主催や仲間と参加して職能間の境界を越えていく
ohmori_yusuke
2
660
やりっぱなしで終わらない勉強法
ohmori_yusuke
3
510
Other Decks in Programming
See All in Programming
『GO』アプリ バックエンドサーバのコスト削減
mot_techtalk
0
150
Conform を推す - Advocating for Conform
mizoguchicoji
3
690
pylint custom ruleで始めるレビュー自動化
shogoujiie
0
120
SwiftUIで単方向アーキテクチャを導入して得られた成果
takuyaosawa
0
270
密集、ドキュメントのコロケーション with AWS Lambda
satoshi256kbyte
0
190
責務と認知負荷を整える! 抽象レベルを意識した関心の分離
yahiru
7
690
負債になりにくいCSSをデザイナとつくるには?
fsubal
10
2.4k
バックエンドのためのアプリ内課金入門 (サブスク編)
qnighy
8
1.8k
Grafana Cloudとソラカメ
devoc
0
170
第3回関東Kaggler会_AtCoderはKaggleの役に立つ
chettub
3
1k
データベースのオペレーターであるCloudNativePGがStatefulSetを使わない理由に迫る
nnaka2992
0
170
『GO』アプリ データ基盤のログ収集システムコスト削減
mot_techtalk
0
130
Featured
See All Featured
Optimizing for Happiness
mojombo
376
70k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Scaling GitHub
holman
459
140k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
630
Fireside Chat
paigeccino
34
3.2k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Visualization
eitanlees
146
15k
Transcript
PerlでCGIスクリプトを書いてみた ゆるWeb勉強会@札幌 #27 / フロントエンドカンファレンス北海道2024 お疲れ様会 うーたん
自己紹介
自己紹介 • うーたん ◦ X:@uutan1108 • 株式会社ゆめみ ◦ 新卒2年目 ◦
サーバーサイドエンジニア • 趣味 ◦ アニメを観ること
私とゆるWeb勉強会@札幌
初めてのLT発表|うーたん https://note.com/uutan1108/n/nffce0e70facd
オンラインの時のゆるWebだったけど楽しかった • ワイワイする時間がいい • ハッシュタグでリアクションしてくださる方が多くて いい • 当時大学生の私でも発表しやすくてよかった • 司会、運営のtacckさんから感想がもらえるのがいい
以上、私とゆるWeb勉強会@札幌でした
本題 「PerlでCGIスクリプトを書いてみた」
CGIとは
CGIとは? CGI とは Common Gateway Interface の略です。通常の ページでは、あらかじめ用意された HTML ページを表示す
るだけですが、CGI を用いることにより、例えば、以下の ようなページを作成することができるようになります。 - カウンター - チャット - 掲示板 - アンケートフォーム CGIの概要 - とほほのWWW入門 https://www.tohoho-web.com/wwwcgi1.htm
CGIスクリプトとは 「CGIプログラム」のうち、Perl、awk、sh などコンパイ ル作業が不要なスクリプト言語で記述されたものを「CGI スクリプト」と呼びます。CGI プログラムは Perl で記述 されたものが多いですが、環境変数と標準入力を参照でき て、結果を標準出力に書き出せるものであれば、C言語、
C++言語、VisualBasic でも何でも構いません。 CGIの概要 - とほほのWWW入門 https://www.tohoho-web.com/wwwcgi1.htm
CGIスクリプトとは 「CGIプログラム」のうち、Perl、awk、sh などコンパイ ル作業が不要なスクリプト言語で記述されたものを「CGI スクリプト」と呼びます。CGI プログラムは Perl で記述さ れたものが多いですが、環境変数と標準入力を参照でき て、結果を標準出力に書き出せるものであれば、C言語、
C++言語、VisualBasic でも何でも構いません。 CGIの概要 - とほほのWWW入門 https://www.tohoho-web.com/wwwcgi1.htm
まずはPerlでCGIを書いてみる
アイドルマスター(765プロ、346プロ) のアイドル 検索アプリ
None
None
機能 - キャラクターの情報で検索 - クエリパラメータで検索機能 - キャラクターの名前漢字または名前カナで検索機能
構成図
Perl(CGIスクリプト) +Apache+MySQL
None
Perlを書いた感想
書いてみてへぇと思ったところを紹介
サブルーチン🤔
ユーザーが定義する関数 Perl では様々な組み込み関数が用意されていますが、自分 で関数を定義することも可能です。 ユーザーが定義する関数をサブルーチンと呼びます。 Perl | サブルーチン https://www.javadrive.jp/perl/sub/
もう少し詳しく
サブルーチンとは🤔 #!/usr/bin/perl sub hello { my ($world) = @_; return
"Hello " . $world; } my $result = hello("World"); print $result;
サブルーチンとは🤔 #!/usr/bin/perl sub hello { my ($world) = @_; return
"Hello " . $world; } my $result = hello("World"); print $result; サブルーチンを呼び出す
サブルーチンとは🤔 #!/usr/bin/perl sub hello { my ($world) = @_; return
"Hello " . $world; } my $result = hello("World"); print $result; @_ に引数”World”
サブルーチンとは🤔 #!/usr/bin/perl sub hello { my ($world) = @_; return
"Hello " . $world; } my $result = hello("World"); print $result; . で“Hello”と”World”を連結
サブルーチンとは🤔 #!/usr/bin/perl sub hello { my ($world) = @_; return
"Hello " . $world; } my $result = hello("World"); print $result; 文字列の Hello World が出力
へぇ 💡
$ と @ の違い🤔
$と@の違いは、データの種類 $: スカラ変数を表し、単一の値(例えば、数字や文字列) を保持する 例: $scalar = 10; → 1つの値を保持する
@: 配列を表し、複数の値を保持する 例: @array = (1, 2, 3); → 複数の値を保持する
$: スカラ変数 #!/usr/bin/perl my $message = "Hello"; print $message; 文字列の
Hello が出力
@: 配列 #!/usr/bin/perl my @nums = (1, 2, 3); print
@nums; 配列の 123 が出力
もう少し詳しく
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; my @array = @$array_ref; print @array; my ($data) = @array; print $data;
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; my @array = @$array_ref; print @array; my ($data) = @array; print $data; 配列のリファレンス
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; 配列のリファレンス
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; print $array_ref > ARRAY(0x560c6a730788) リファレンスが得られる
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; my @array = @$array_ref; print @array; my ($data) = @array; print $data; デリファレンス
$ と @ の違いは🤔 #!/usr/bin/perl my @array = @$array_ref; デリファレンス
$ と @ の違いは🤔 #!/usr/bin/perl my @array = @$array_ref; print
$array_ref > ARRAY(0x560c6a730788) print @$array_ref; > 123 リファレンス先の値を参照して出力する
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; my @array = @$array_ref; print @array; my ($data) = @array; print $data; 配列の (1, 2, 3) を出力
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; my @array = @$array_ref; print @array; my ($data) = @array; print $data; 配列の先頭の要素を $data に代入
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; my @array = @$array_ref; print @array; my ($data) = @array; print $data; $data の 1 を出力
へぇ 💡
最後に
アイドル図鑑のコード
None
タグの閉じ忘れでスタイル崩れてしんどかった
宣伝
PHPカンファレンス沖縄2024前夜祭 で登壇します PHPカンファレンス沖縄2024前夜祭 - connpass https://phpcon-okinawa.connpass.com/event/324902/
Scrum Fest Mikawa 2024 で登壇します Scrum Fest Mikawa 2024 -
新卒エンジニアが組織に馴染むために勉強会を主催して職能間の境界を越える | ConfEngine - Conference Platform https://confengine.com/conferences/scrum-fest-mikawa-2024/proposal/20268
アイドル名簿(今回作ったアプリのコード) OHMORIYUSUKE/perl-mysql-apache-on-docker https://github.com/OHMORIYUSUKE/perl-mysql-apach e-on-docker
お わ り