Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
難解な自己紹介プログラムを書く
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
nasa
June 26, 2024
410
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
難解な自己紹介プログラムを書く
https://gotanda-rb.connpass.com/event/321786/
nasa
June 26, 2024
More Decks by nasa
See All by nasa
鉄は熱いうちに打て - Kaigi Effect LT大会
nasa_desu
2
610
リンカを変えてgo buildを 速く出来るか
nasa_desu
2
4k
RustでOS開発はじめの一歩
nasa_desu
8
7.6k
ログから学ぶgo build
nasa_desu
4
1.6k
goのメモリアロケーターの話
nasa_desu
1
850
GoとRust - 並行処理編
nasa_desu
5
4.2k
Featured
See All Featured
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
240
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
The Spectacular Lies of Maps
axbom
PRO
1
990
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
330
So, you think you're a good person
axbom
PRO
2
2.2k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
3
4.3k
The agentic SEO stack - context over prompts
schlessera
0
940
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Marketing to machines
jonoalderson
1
5.8k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Transcript
Gotanda.rb#59 難解な自己紹介プログラムを書く
この発表で 得られること
この発表で得られること 3 Rubyを使って自己紹介ができるようになる その過程で、Rubyに少し詳しくなる(かも) 日曜大工のネタが手に入る
突然ですが
5 自己紹介の目的ってなに??
自己紹介の目的 6 たぶん覚えてもらうこと 普通に自己紹介して覚えてもらえる? 僕は無理、、、人の名前覚えられない(ごめんなさい)
7 我々はRubyが書ける。 覚えてもらえる自己紹介をRubyで書こう(?) 謎の提案
8 例えばこういうの? Rubyで自己紹介
9 いや、もう少し技巧を凝らしたい。 インパクトが欲しい Rubyで自己紹介
10 Rubyで自己紹介
これは全てRubyの プログラムです
コレを作りましょう
工程 13 1. プログラムの形を自由に変えられるようにします 2. アスキーアートを準備します 3. クワインを書きます 完成!
プログラムの形を変える 14 `puts "Hello,I am nasa."`を変形してみる eval, %w, joinを使う
プログラムの形を変える 15 • eval, %w, joinを使う • %wは文字列配列を返す • スペースが区切り文字として解釈される
• %wで作った配列をjoinで連結 • あとは手で頑張って整形
プログラムの形を変える 16 ただし、いくつか出来ないことがある • )が使えない。%wを閉じると解釈 • 複数命令かけない • スペースが使えない
プログラムの形を変える 17 () が使いたい • %w'のように終了文字を変更できる • puts(“..”)としてみた
プログラムの形を変える 18 複数命令かけない • 改行の他に;が区切り文字として使える • これを手でやるのはめんどくさい • プログラムを書くプログラムがあると便利
プログラムの形を変える 19 スペースや%wと競合する文字が使いたい • スペースは%wによって消える、改行も同様 • %w'とやると'は使えない。他の文字も同様
プログラムの形を変える 20 スペースや%wと競合する文字が使いたい • ""<<10 で改行 • 32がスペース、39がシングルクオート
工程 21 1. プログラムの形を自由に変えられるようにします 2. アスキーアートを準備します 3. クワインを書きます 完成!
アスキーアートを準備します 22 AAを準備します • ChatGPT, jp2a • jp2aがお勧め
アスキーアートを準備します 23 jp2aがお勧め • brewで入ります • charsで利用する文字を指定すると 使いやすいAAができる
工程 24 1. プログラムの形を自由に変えられるようにします 2. アスキーアートを準備します 3. クワインを書きます 完成!
クワイン 25 クワインとは • プログラム自身を出力するプログラム • 例えば eval$s="puts'eval$s='+$s.inspect"
クワイン 26 AAをプログラム中に埋め込む • AAの長さがソースコード長の上限になる • なるべく小さいデータにしてAAを埋め込みたい
クワイン 27 AA変換処理 • 01の羅列にして二進数として解釈 • その後Base64エンコーディング • 記号が入り込む心配がない
クワイン 28
クワイン 29 あとはクワインを書くだけ! コード生成コードを書いてる • d: AAデータ • e: プログラム自身
• w: アスキーアートの幅 • h: アスキーアートの高さ
クワイン 30 あとは、AAの定義を見て • 文字があったらe • 文字がなければスペース を出力する
クワイン 31 AA表現さえあればクワインが生成できるようになった
完成 32 1. プログラムの形を自由に変えられるようにします 2. アスキーアートを準備します 3. クワインを書きます 完成! 🎉
🎉 🎉 🎉 🎉 🎉
完成 33 https://github.com/k-nasa/quine_sandbox
whoami 34 nasa • STORES, Inc.(2024-04-15~) ◦ STORES予約チーム ◦ Backend中心にあれこれ
• ハンドルネームnasaを追い求める ◦ GitHub: @k-nasa ◦ Twitter: @nasa_desu
時間があれば 次回予告
供養 36 いろんなAAを作って遊べるようになった。 でもAAだけじゃん。。。。
供養 37 実行できる画像が作りたい! アイコン画像が実はRubyプログラムだったら 面白くない?
供養 38 GIFならマジックナンバー的に行ける! GIF comment extensionにプログラムを埋め込める (詳しくは懇親会で話しましょう) (ジフ、ギフどっちやねん)
供養 39 今は、悲しきgifたちが生まれている。。。 これらを動く画像にするぞ!