Suche senden
Hochladen
Ruby で書く! Quine aa
•
0 gefällt mir
•
350 views
誠 小林
Folgen
https://github.com/kasei-san/quine
Weniger lesen
Mehr lesen
Ingenieurwesen
Melden
Teilen
Melden
Teilen
1 von 29
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
計算量
計算量
Ken Ogura
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
目指せグラフマスター
目指せグラフマスター
HCPC: 北海道大学競技プログラミングサークル
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
2023-03-23_Spiral.AI
2023-03-23_Spiral.AI
SasakiYuichi1
充足可能性問題のいろいろ
充足可能性問題のいろいろ
Hiroshi Yamashita
DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜
Jun Okumura
強化学習 DQNからPPOまで
強化学習 DQNからPPOまで
harmonylab
Empfohlen
計算量
計算量
Ken Ogura
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
目指せグラフマスター
目指せグラフマスター
HCPC: 北海道大学競技プログラミングサークル
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
2023-03-23_Spiral.AI
2023-03-23_Spiral.AI
SasakiYuichi1
充足可能性問題のいろいろ
充足可能性問題のいろいろ
Hiroshi Yamashita
DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜
Jun Okumura
強化学習 DQNからPPOまで
強化学習 DQNからPPOまで
harmonylab
スパースモデリング入門
スパースモデリング入門
Hideo Terada
cvpaper.challenge 研究効率化 Tips
cvpaper.challenge 研究効率化 Tips
cvpaper. challenge
「知識」のDeep Learning
「知識」のDeep Learning
Yuya Unno
強化学習その3
強化学習その3
nishio
強化学習その2
強化学習その2
nishio
Quine・難解プログラミングについて
Quine・難解プログラミングについて
mametter
[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.
[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.
Deep Learning JP
ResNetの仕組み
ResNetの仕組み
Kota Nagasato
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善
Naoaki Okazaki
[DL輪読会]機械学習におけるカオス現象について
[DL輪読会]機械学習におけるカオス現象について
Deep Learning JP
強化学習その1
強化学習その1
nishio
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
論文紹介:Dueling network architectures for deep reinforcement learning
論文紹介:Dueling network architectures for deep reinforcement learning
Kazuki Adachi
競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略
K Moneto
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
クックパッド特売情報 における自然言語処理 〜固有表現抽出を利用した検索システム〜
クックパッド特売情報 における自然言語処理 〜固有表現抽出を利用した検索システム〜
Takeshi Arabiki
辺彩色
辺彩色
Ken Ogura
実用Brainf*ckプログラミング
実用Brainf*ckプログラミング
京大 マイコンクラブ
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
Marp Tutorial
Marp Tutorial
Rui Watanabe
転職活動ふりかえり
転職活動ふりかえり
誠 小林
Unicodeの square era name から新元号を占う
Unicodeの square era name から新元号を占う
誠 小林
Weitere ähnliche Inhalte
Was ist angesagt?
スパースモデリング入門
スパースモデリング入門
Hideo Terada
cvpaper.challenge 研究効率化 Tips
cvpaper.challenge 研究効率化 Tips
cvpaper. challenge
「知識」のDeep Learning
「知識」のDeep Learning
Yuya Unno
強化学習その3
強化学習その3
nishio
強化学習その2
強化学習その2
nishio
Quine・難解プログラミングについて
Quine・難解プログラミングについて
mametter
[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.
[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.
Deep Learning JP
ResNetの仕組み
ResNetの仕組み
Kota Nagasato
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善
Naoaki Okazaki
[DL輪読会]機械学習におけるカオス現象について
[DL輪読会]機械学習におけるカオス現象について
Deep Learning JP
強化学習その1
強化学習その1
nishio
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
論文紹介:Dueling network architectures for deep reinforcement learning
論文紹介:Dueling network architectures for deep reinforcement learning
Kazuki Adachi
競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略
K Moneto
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
クックパッド特売情報 における自然言語処理 〜固有表現抽出を利用した検索システム〜
クックパッド特売情報 における自然言語処理 〜固有表現抽出を利用した検索システム〜
Takeshi Arabiki
辺彩色
辺彩色
Ken Ogura
実用Brainf*ckプログラミング
実用Brainf*ckプログラミング
京大 マイコンクラブ
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
Marp Tutorial
Marp Tutorial
Rui Watanabe
Was ist angesagt?
(20)
スパースモデリング入門
スパースモデリング入門
cvpaper.challenge 研究効率化 Tips
cvpaper.challenge 研究効率化 Tips
「知識」のDeep Learning
「知識」のDeep Learning
強化学習その3
強化学習その3
強化学習その2
強化学習その2
Quine・難解プログラミングについて
Quine・難解プログラミングについて
[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.
[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.
ResNetの仕組み
ResNetの仕組み
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善
[DL輪読会]機械学習におけるカオス現象について
[DL輪読会]機械学習におけるカオス現象について
強化学習その1
強化学習その1
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
論文紹介:Dueling network architectures for deep reinforcement learning
論文紹介:Dueling network architectures for deep reinforcement learning
競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略
プログラムを高速化する話
プログラムを高速化する話
クックパッド特売情報 における自然言語処理 〜固有表現抽出を利用した検索システム〜
クックパッド特売情報 における自然言語処理 〜固有表現抽出を利用した検索システム〜
辺彩色
辺彩色
実用Brainf*ckプログラミング
実用Brainf*ckプログラミング
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Marp Tutorial
Marp Tutorial
Mehr von 誠 小林
転職活動ふりかえり
転職活動ふりかえり
誠 小林
Unicodeの square era name から新元号を占う
Unicodeの square era name から新元号を占う
誠 小林
お仕事のコミュニケーションをスキルで解決
お仕事のコミュニケーションをスキルで解決
誠 小林
遊ぶニンジャ学会の紹介
遊ぶニンジャ学会の紹介
誠 小林
いかにしてバンデラスはうまれるか
いかにしてバンデラスはうまれるか
誠 小林
ニンジャは忍者か
ニンジャは忍者か
誠 小林
The visualization of relationships between Ninja Slayer episodes by ninjas
The visualization of relationships between Ninja Slayer episodes by ninjas
誠 小林
人類にはまだ早いCSV
人類にはまだ早いCSV
誠 小林
圧縮率による著者推定法の ニンジャスレイヤーへの応用
圧縮率による著者推定法の ニンジャスレイヤーへの応用
誠 小林
サキブレの統計および 更新期間帯の予測
サキブレの統計および 更新期間帯の予測
誠 小林
ニンジャ学会のご紹介
ニンジャ学会のご紹介
誠 小林
サイバーサングラス製作記
サイバーサングラス製作記
誠 小林
Javascript を使ってみよう!!
Javascript を使ってみよう!!
誠 小林
Mehr von 誠 小林
(13)
転職活動ふりかえり
転職活動ふりかえり
Unicodeの square era name から新元号を占う
Unicodeの square era name から新元号を占う
お仕事のコミュニケーションをスキルで解決
お仕事のコミュニケーションをスキルで解決
遊ぶニンジャ学会の紹介
遊ぶニンジャ学会の紹介
いかにしてバンデラスはうまれるか
いかにしてバンデラスはうまれるか
ニンジャは忍者か
ニンジャは忍者か
The visualization of relationships between Ninja Slayer episodes by ninjas
The visualization of relationships between Ninja Slayer episodes by ninjas
人類にはまだ早いCSV
人類にはまだ早いCSV
圧縮率による著者推定法の ニンジャスレイヤーへの応用
圧縮率による著者推定法の ニンジャスレイヤーへの応用
サキブレの統計および 更新期間帯の予測
サキブレの統計および 更新期間帯の予測
ニンジャ学会のご紹介
ニンジャ学会のご紹介
サイバーサングラス製作記
サイバーサングラス製作記
Javascript を使ってみよう!!
Javascript を使ってみよう!!
Ruby で書く! Quine aa
1.
Rubyで書く! Quine AA! @kasei_san
(小林 誠)
2.
何者 id: kasei_san 小林
誠 株式会社LCL勤務 元株式会社フィードフォース勤務 Railsエンジニア 兼 エンジニアリングマネジャー
3.
広告 あ バス x
ITの会社です!
4.
今日のお話 そんな業務とは関係ないお話です
5.
今日のお話 業務だとキモいコード書けない
6.
今日のお話 業務だとキモいコード書けない キモいコード書きたい欲
7.
今日のお話 業務だとキモいコード書けない キモいコード書きたい欲 → そうだ Quine
AA 書こう!!
8.
今日のお話 Quine(クワイン) AA
9.
今日のお話 Quine(クワイン) AA ご存知な方? ✋
10.
今日のお話 まずは見て頂きましょう (デモ)
11.
Quine AA とは アスキーアートで書かれた 実行されると同じコードを 返すコード
12.
今日のお話 キモいですね?
13.
今日のお話 Quine AAの原理を知って 書けるようになって 帰りましょう!
14.
Quine AAの原理 Quine +
実行可能なAA
15.
Quine AAの原理 まずは Quineの解説
16.
Quineの基礎 シンプルなQuine eval s="a='eval s='+s.inspect;
puts(a)"
17.
Quineの基礎 原理ははしょります。興味のある方はいじってみてね! eval s="a='eval s='+s.inspect;
puts(a)" ● s.inspect が ""a='eval s='+s.inspect; puts(a)"" を返す ● 'eval s='+""a='eval s='+s.inspect; puts(a)"" を a に格納して puts しているので、同じ文字列が返る
18.
Quine AAの原理 実行可能なAA
19.
実行可能なAAの基礎 %w'' 記法を使うと、 コードの中に空白と改行を好きに混ぜ込めます! eval$s=%w'p uts "hell
ow _wor ld"'.join #=> hellow_world (代わりにコード内で空白とシングルクォートが使用不可に)
20.
QuineAA まず、%w'' 記法と混ぜたQuineを作ります eval$s=%w'a="a";o="eval$s=%w"<<39<<$s<<39<<".join";puts(o)'.jo in ● 39
はasciiでシングルクォート
21.
Quine応用編 まず、%w'' 記法と混ぜたQuineを作ります eval$s=%w'a="a";o="eval$s=%w"<<39<<$s<<39<<".join";puts(o)'.jo in ● ここでのポイントはa="a"のところ この部分に任意のコードを仕込むことができます!!!
22.
Quine応用編 なので、そこに以下のコードを仕込みます...! eval$s=%w'a="a";o="eval$s=%w"<<39<<$s<<39<<".join";puts(o)'.jo in ● AAのbase64のデータ ● base64のデータを元に、AAを複製するジェネレータ ●
AA複製時に使用する文字列は自身のコード!
23.
QuineAA 具体的にはこんな感じのジェネレータをつくります
24.
QuineAA これを実行すると...(デモ
25.
QuineAA 応用編 ● base64のデータは当然複数持てる ●
ソースコードを文字列として持っているので 実行時コードを加工できる 何ができるかというと... → デモ
26.
QuineAA 応用編 キモいですね?
27.
まとめ ● QuineAAキモい ● けど楽しい ●
自己複製コードを書くことで普段使わないRubyの 機能を触れて楽しい!
28.
結論 QuineAA たのしい!
29.
結論 コード https://github.com/kasei-san/quine
Jetzt herunterladen