Soumettre la recherche
Mettre en ligne
Pietソースコード精読
•
1 j'aime
•
1,998 vues
H
Hideaki Nagamine
Suivre
2015年5月24日. 京大マイコンクラブ部室. 第11回KMC学習発表会. http://www.slideshare.net/KMC_JP/piet-46068527 を読め
Lire moins
Lire la suite
Ingénierie
Signaler
Partager
Signaler
Partager
1 sur 38
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
Piet に木構造を追加したUltrapiet でゲームを作ってみたという話です
Ultra piet
Ultra piet
京大 マイコンクラブ
KMC春合宿で発表した、難解プログラミング言語で競技プログラミングに挑戦するLTです。
Pietで競プロしよう
Pietで競プロしよう
京大 マイコンクラブ
関西情報系学生団体交流会2017 Piet勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
京大 マイコンクラブ
第55回勉強会(2017/03/17) - 長岡 IT開発者 勉強会(NDS) : http://nagaoka.techtalk.jp/no55
新しい世界の学び方 by @masaru_b_cl #nds55
新しい世界の学び方 by @masaru_b_cl #nds55
将 高野
NSEEM(R4/3/12)にて発表させていただいた資料です
MARICON発表資料
MARICON発表資料
TadaTeruki
Simple Way with Django + SQLAlchemy AT PyCon JP 2020 https://pycon.jp/2020/timetable/?id=203756 質疑応答 > Ryuji Tsutsui から全員に: 02:58 PM > INNNER JOIN > Nが1個多い? ほんとだ。slideshareにあげた資料、直せません! > Taku Shimizu から全員に: 03:00 PM > 「ドキュメントに記載されていない」なかなかのパワーフレーズですね でしょー > uranusjr から全員に: 03:04 PM > g2の別名はT3になるのはなぜですか? Djangoが自動的にテーブルを2回JOINすることもあって、そういう場合自動的にテーブル名の別名が付けられます。T2,T3,T4と連番で増えていきます。 たぶん、登場する3つ目のテーブルだからT3なのだと思います。 `annotate(g2=FilteredRelation(...)` のように名前指定しているのに使われないのは、バグなのかどうなのか追ってません。SQLは動作するので、バグとはいえないかも。 > Manabu から全員に: 03:17 PM > SQLAlchemy の モデルクラスを直接書いていましたが、 automap_base() は使わないのですか? 全テーブルを使いたいわけではないのと、用途の目的から、SQLAlchemyでForeignKeyを独自に追加定義したいなどもあるため、個別に書いています。 automap_base()を使っても良いと思います。 > c-bata から全員に: 03:19 PM > DBのマイグレーションはalembicを使う感じでしょうか? Dango ORM側で全てマイグレーションするか、それ以外(alembicや生DDL)でマイグレーションするかは統一すればよいと思います。 Django ORM側でやるのが楽だと思いますが、Redshiftなどの場合生DDLでやるしかなかったりするし、そういう環境でこそこの方法が有用だったりします。 > あ、基本的にDjango ORMを使っていて、難しいクエリだけSQLALchemyで SQL生成している感じですかね。 はい。そういう感じです。
【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay
Takayuki Shimizukawa
https://2021.pycon.jp/time-table/?id=273396 Webアプリ開発とデータベースマイグレーションには密接な関係があり、Pythonでよく採用されるDjangoやSQLAlchemyには、DBのスキーマを変更するマイグレーション機能があります。一般的に、プログラムを実装するときはリポジトリでブランチを作りそれぞれのブランチで実装作業を進めます。Webアプリの開発でも同様ですが、各ブランチでDBスキーマを変更する場合には注意が必要です。例えば、複数のブランチで同じテーブルのカラムを追加して使いたい場合や、DBスキーマの変更が競合する場合は、ブランチのマージ時に競合してしまいます。多くの機能を並行開発したり、マージするまでの期間が長い場合には、このような競合が増えてしまいます。 このトークでは、Djangoを例に、データベースマイグレーションの仕組みから、実際の開発現場で発生したトラブルとその解決方法について紹介します。 Migration strategies for parallel development of web applications
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
Takayuki Shimizukawa
Media StreamはPicture-in-Pictureに対応しているのか?を検証したスライドです
PinP機能をWebRTCで実現できるか検証してみた
PinP機能をWebRTCで実現できるか検証してみた
Yuto Nishikawa
Recommandé
Piet に木構造を追加したUltrapiet でゲームを作ってみたという話です
Ultra piet
Ultra piet
京大 マイコンクラブ
KMC春合宿で発表した、難解プログラミング言語で競技プログラミングに挑戦するLTです。
Pietで競プロしよう
Pietで競プロしよう
京大 マイコンクラブ
関西情報系学生団体交流会2017 Piet勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
京大 マイコンクラブ
第55回勉強会(2017/03/17) - 長岡 IT開発者 勉強会(NDS) : http://nagaoka.techtalk.jp/no55
新しい世界の学び方 by @masaru_b_cl #nds55
新しい世界の学び方 by @masaru_b_cl #nds55
将 高野
NSEEM(R4/3/12)にて発表させていただいた資料です
MARICON発表資料
MARICON発表資料
TadaTeruki
Simple Way with Django + SQLAlchemy AT PyCon JP 2020 https://pycon.jp/2020/timetable/?id=203756 質疑応答 > Ryuji Tsutsui から全員に: 02:58 PM > INNNER JOIN > Nが1個多い? ほんとだ。slideshareにあげた資料、直せません! > Taku Shimizu から全員に: 03:00 PM > 「ドキュメントに記載されていない」なかなかのパワーフレーズですね でしょー > uranusjr から全員に: 03:04 PM > g2の別名はT3になるのはなぜですか? Djangoが自動的にテーブルを2回JOINすることもあって、そういう場合自動的にテーブル名の別名が付けられます。T2,T3,T4と連番で増えていきます。 たぶん、登場する3つ目のテーブルだからT3なのだと思います。 `annotate(g2=FilteredRelation(...)` のように名前指定しているのに使われないのは、バグなのかどうなのか追ってません。SQLは動作するので、バグとはいえないかも。 > Manabu から全員に: 03:17 PM > SQLAlchemy の モデルクラスを直接書いていましたが、 automap_base() は使わないのですか? 全テーブルを使いたいわけではないのと、用途の目的から、SQLAlchemyでForeignKeyを独自に追加定義したいなどもあるため、個別に書いています。 automap_base()を使っても良いと思います。 > c-bata から全員に: 03:19 PM > DBのマイグレーションはalembicを使う感じでしょうか? Dango ORM側で全てマイグレーションするか、それ以外(alembicや生DDL)でマイグレーションするかは統一すればよいと思います。 Django ORM側でやるのが楽だと思いますが、Redshiftなどの場合生DDLでやるしかなかったりするし、そういう環境でこそこの方法が有用だったりします。 > あ、基本的にDjango ORMを使っていて、難しいクエリだけSQLALchemyで SQL生成している感じですかね。 はい。そういう感じです。
【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay
Takayuki Shimizukawa
https://2021.pycon.jp/time-table/?id=273396 Webアプリ開発とデータベースマイグレーションには密接な関係があり、Pythonでよく採用されるDjangoやSQLAlchemyには、DBのスキーマを変更するマイグレーション機能があります。一般的に、プログラムを実装するときはリポジトリでブランチを作りそれぞれのブランチで実装作業を進めます。Webアプリの開発でも同様ですが、各ブランチでDBスキーマを変更する場合には注意が必要です。例えば、複数のブランチで同じテーブルのカラムを追加して使いたい場合や、DBスキーマの変更が競合する場合は、ブランチのマージ時に競合してしまいます。多くの機能を並行開発したり、マージするまでの期間が長い場合には、このような競合が増えてしまいます。 このトークでは、Djangoを例に、データベースマイグレーションの仕組みから、実際の開発現場で発生したトラブルとその解決方法について紹介します。 Migration strategies for parallel development of web applications
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
Takayuki Shimizukawa
Media StreamはPicture-in-Pictureに対応しているのか?を検証したスライドです
PinP機能をWebRTCで実現できるか検証してみた
PinP機能をWebRTCで実現できるか検証してみた
Yuto Nishikawa
kintoneを上司より無理矢理勉強しろと言われたエンジニアのお話
kintone Café 名古屋 Vol.3 「マジでkintoneに恋する5秒前!?」
kintone Café 名古屋 Vol.3 「マジでkintoneに恋する5秒前!?」
kintone Café 名古屋支部
まんまとリレーションされた話
まんまとリレーションされた話
まんまとリレーションされた話
m ishizaki
kintoneを使って開発しているとき、ふと寂しくなってしまうあなたに送る、kintoneをしゃべらせるカスタマイズ紹介(汗) kintoneのAPI、DoCoMoの雑談APIや、chromeのspeech APIを使った実用性は??のプレゼン資料です。
kintone Café 名古屋 Vol.3 「寂しくないKintone」
kintone Café 名古屋 Vol.3 「寂しくないKintone」
kintone Café 名古屋支部
kintone Cafe 名古屋 Vol.3(2016/2/18)のLT資料
【kintone Cafe 名古屋】kintone×○○○の可能性
【kintone Cafe 名古屋】kintone×○○○の可能性
Hiroyasu Yamada
PyCon mini Hiroshima 2018( https://hiroshima.pycon.jp/ ) のキーノートの資料です。
Pythonの10年と今、これから
Pythonの10年と今、これから
Haruo Sato
LT at OSS X Users Meeting #19 Python
OSS Study#19_LT
OSS Study#19_LT
NaoY-2501
3Dプリンタの出力は遅いのでいろいろ対策を考えてみました。
3Dプリンタの出力は遅いのでどうにかしたい
3Dプリンタの出力は遅いのでどうにかしたい
NISHIMOTO Keisuke
ZendEngine Study Meeting @Tokyo
ZendEngine Study Meeting @Tokyo
Masaki Fujimoto
kintone Cafe 名古屋 Vol.2(2015年11月13日)LT資料 一部改変
【kintone Cafe 名古屋】kintone初心者がプラグイン作ってみた話
【kintone Cafe 名古屋】kintone初心者がプラグイン作ってみた話
Hiroyasu Yamada
業務のためのPython勉強会#3:まとめ
S03 t4 wrapup
S03 t4 wrapup
Takeshi Akutsu
kawasaki.rb #008での発表です。何故Pythonが科学計算に用いられるかを、翻訳記事の解説とともに話しました。元記事 http://chezou.hatenablog.com/entry/20140118/1389978078
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?
Aki Ariga
Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-
BrainPad Inc.
This is the slide about Zapier, automation workflows. Mainly talk about how to use Zapier as a non-programmer.
自動化は仕様が9割(Zapier Meetup #0)
自動化は仕様が9割(Zapier Meetup #0)
Marina Suzuki
みんなのpython勉強会のネタ
コボラーがPython始めてみた話
コボラーがPython始めてみた話
Yuuki Nakajima
Hokkaido.pm.casual #03 slide
Hokkaido.pm.casual #03 slide
Tohru Shinohara
みんなのPython勉強会#22 2017/03/08 driller@patraqushe
WindowsでPython
WindowsでPython
drillan
難解プログラミング言語「Piet」の解説とそのエディタを作った話です。 2015/08/21 Pidet公開しました。 https://github.com/kndama/Pidet
Pietのエディタを作った話
Pietのエディタを作った話
京大 マイコンクラブ
2015年8月21日. YAPC::Asia Tokyo 2015 Day 1.
PietでLISP処理系を書くのは難しい
PietでLISP処理系を書くのは難しい
Hideaki Nagamine
2015年8月8日. Open Source Conference 京都 2015.
Pietでlisp処理系を書くのは難しい 進捗報告
Pietでlisp処理系を書くのは難しい 進捗報告
Hideaki Nagamine
京大マイコンクラブでdrafear担当のプロジェクト「JavaScriptから始めるプログラミング2016」の第一回のスライドです
KMC JavaScriptから始めるプログラミング2016 第一回
KMC JavaScriptから始めるプログラミング2016 第一回
kyoto university
2016年度の京大マイコンクラブ(KMC)の新入生プロジェクトである「JavaScriptから始めるプログラミング2016」の第二回のスライドです 今回はCSSの入門を主に行います
第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016
kyoto university
KMC’の新入生プロジェクトの一つ「C#でゲームを作る2016」で使ったスライドです。 まとめ記事:http://kmc.hatenablog.jp/entry/2016/11/20/100421
C#でゲームを作る2016 第3回
C#でゲームを作る2016 第3回
京大 マイコンクラブ
Contenu connexe
Tendances
kintoneを上司より無理矢理勉強しろと言われたエンジニアのお話
kintone Café 名古屋 Vol.3 「マジでkintoneに恋する5秒前!?」
kintone Café 名古屋 Vol.3 「マジでkintoneに恋する5秒前!?」
kintone Café 名古屋支部
まんまとリレーションされた話
まんまとリレーションされた話
まんまとリレーションされた話
m ishizaki
kintoneを使って開発しているとき、ふと寂しくなってしまうあなたに送る、kintoneをしゃべらせるカスタマイズ紹介(汗) kintoneのAPI、DoCoMoの雑談APIや、chromeのspeech APIを使った実用性は??のプレゼン資料です。
kintone Café 名古屋 Vol.3 「寂しくないKintone」
kintone Café 名古屋 Vol.3 「寂しくないKintone」
kintone Café 名古屋支部
kintone Cafe 名古屋 Vol.3(2016/2/18)のLT資料
【kintone Cafe 名古屋】kintone×○○○の可能性
【kintone Cafe 名古屋】kintone×○○○の可能性
Hiroyasu Yamada
PyCon mini Hiroshima 2018( https://hiroshima.pycon.jp/ ) のキーノートの資料です。
Pythonの10年と今、これから
Pythonの10年と今、これから
Haruo Sato
LT at OSS X Users Meeting #19 Python
OSS Study#19_LT
OSS Study#19_LT
NaoY-2501
3Dプリンタの出力は遅いのでいろいろ対策を考えてみました。
3Dプリンタの出力は遅いのでどうにかしたい
3Dプリンタの出力は遅いのでどうにかしたい
NISHIMOTO Keisuke
ZendEngine Study Meeting @Tokyo
ZendEngine Study Meeting @Tokyo
Masaki Fujimoto
kintone Cafe 名古屋 Vol.2(2015年11月13日)LT資料 一部改変
【kintone Cafe 名古屋】kintone初心者がプラグイン作ってみた話
【kintone Cafe 名古屋】kintone初心者がプラグイン作ってみた話
Hiroyasu Yamada
業務のためのPython勉強会#3:まとめ
S03 t4 wrapup
S03 t4 wrapup
Takeshi Akutsu
kawasaki.rb #008での発表です。何故Pythonが科学計算に用いられるかを、翻訳記事の解説とともに話しました。元記事 http://chezou.hatenablog.com/entry/20140118/1389978078
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?
Aki Ariga
Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-
BrainPad Inc.
This is the slide about Zapier, automation workflows. Mainly talk about how to use Zapier as a non-programmer.
自動化は仕様が9割(Zapier Meetup #0)
自動化は仕様が9割(Zapier Meetup #0)
Marina Suzuki
みんなのpython勉強会のネタ
コボラーがPython始めてみた話
コボラーがPython始めてみた話
Yuuki Nakajima
Hokkaido.pm.casual #03 slide
Hokkaido.pm.casual #03 slide
Tohru Shinohara
みんなのPython勉強会#22 2017/03/08 driller@patraqushe
WindowsでPython
WindowsでPython
drillan
Tendances
(16)
kintone Café 名古屋 Vol.3 「マジでkintoneに恋する5秒前!?」
kintone Café 名古屋 Vol.3 「マジでkintoneに恋する5秒前!?」
まんまとリレーションされた話
まんまとリレーションされた話
kintone Café 名古屋 Vol.3 「寂しくないKintone」
kintone Café 名古屋 Vol.3 「寂しくないKintone」
【kintone Cafe 名古屋】kintone×○○○の可能性
【kintone Cafe 名古屋】kintone×○○○の可能性
Pythonの10年と今、これから
Pythonの10年と今、これから
OSS Study#19_LT
OSS Study#19_LT
3Dプリンタの出力は遅いのでどうにかしたい
3Dプリンタの出力は遅いのでどうにかしたい
ZendEngine Study Meeting @Tokyo
ZendEngine Study Meeting @Tokyo
【kintone Cafe 名古屋】kintone初心者がプラグイン作ってみた話
【kintone Cafe 名古屋】kintone初心者がプラグイン作ってみた話
S03 t4 wrapup
S03 t4 wrapup
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?
Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-
自動化は仕様が9割(Zapier Meetup #0)
自動化は仕様が9割(Zapier Meetup #0)
コボラーがPython始めてみた話
コボラーがPython始めてみた話
Hokkaido.pm.casual #03 slide
Hokkaido.pm.casual #03 slide
WindowsでPython
WindowsでPython
En vedette
難解プログラミング言語「Piet」の解説とそのエディタを作った話です。 2015/08/21 Pidet公開しました。 https://github.com/kndama/Pidet
Pietのエディタを作った話
Pietのエディタを作った話
京大 マイコンクラブ
2015年8月21日. YAPC::Asia Tokyo 2015 Day 1.
PietでLISP処理系を書くのは難しい
PietでLISP処理系を書くのは難しい
Hideaki Nagamine
2015年8月8日. Open Source Conference 京都 2015.
Pietでlisp処理系を書くのは難しい 進捗報告
Pietでlisp処理系を書くのは難しい 進捗報告
Hideaki Nagamine
京大マイコンクラブでdrafear担当のプロジェクト「JavaScriptから始めるプログラミング2016」の第一回のスライドです
KMC JavaScriptから始めるプログラミング2016 第一回
KMC JavaScriptから始めるプログラミング2016 第一回
kyoto university
2016年度の京大マイコンクラブ(KMC)の新入生プロジェクトである「JavaScriptから始めるプログラミング2016」の第二回のスライドです 今回はCSSの入門を主に行います
第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016
kyoto university
KMC’の新入生プロジェクトの一つ「C#でゲームを作る2016」で使ったスライドです。 まとめ記事:http://kmc.hatenablog.jp/entry/2016/11/20/100421
C#でゲームを作る2016 第3回
C#でゲームを作る2016 第3回
京大 マイコンクラブ
シェーダーのシャドウマッピングをUnityで実装する方法が載っています
ひまわり本7章
ひまわり本7章
CHY72
KMC’の新入生プロジェクトの一つ「C#でゲームを作る2016」で使ったスライドです。 まとめ記事:http://kmc.hatenablog.jp/entry/2016/11/20/100421
C#でゲームを作る2016 第5回
C#でゲームを作る2016 第5回
京大 マイコンクラブ
お絵かき初心者向け講座「お絵かきをはじめよう!」
お絵かきをはじめよう!
お絵かきをはじめよう!
京大 マイコンクラブ
KMC’の新入生プロジェクトの一つ「C#でゲームを作る2016」で使ったスライドです。 まとめ記事:http://kmc.hatenablog.jp/entry/2016/11/20/100421
C#でゲームを作る2016 第7回
C#でゲームを作る2016 第7回
京大 マイコンクラブ
CUI環境でも3Dアニメーションがしたい!
CUI3D
CUI3D
京大 マイコンクラブ
KMC’の新入生プロジェクトの一つ「C#でゲームを作る2016」で使ったスライドです。 まとめ記事:http://kmc.hatenablog.jp/entry/2016/11/20/100421
C#でゲームを作る2016 第1回
C#でゲームを作る2016 第1回
京大 マイコンクラブ
CAMPHOR- KMC 合同LT会(https://atnd.org/events/64077)で発表したBFmetaを紹介するスライドです。
BFmeta
BFmeta
京大 マイコンクラブ
For talk about code golf in program symposium.
Code Golf
Code Golf
Shinichiro Hamaji
KMC’の新入生プロジェクトの一つ「C#でゲームを作る2016」で使ったスライドです。
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
京大 マイコンクラブ
KMC春合宿2017で使ったスライドです 「暗号技術入門 第3版 秘密の国のアリス 著:結城 浩」 をまとめたものです
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
京大 マイコンクラブ
ゲームエンジンをお探しのあなたに
Altseed
Altseed
京大 マイコンクラブ
FM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作った
CHY72
テストプレイを観察するための心得などを紹介します。 KMC春合宿2017で使用したものに加筆修正を加えたもの。
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
京大 マイコンクラブ
KMC(京大マイコンクラブ)春合宿2017で発表したときのスライドです。 予備知識のない人にもわかるようにsymplectic数値積分法を紹介することを目標としました。
数値解析と物理学
数値解析と物理学
すずしめ
En vedette
(20)
Pietのエディタを作った話
Pietのエディタを作った話
PietでLISP処理系を書くのは難しい
PietでLISP処理系を書くのは難しい
Pietでlisp処理系を書くのは難しい 進捗報告
Pietでlisp処理系を書くのは難しい 進捗報告
KMC JavaScriptから始めるプログラミング2016 第一回
KMC JavaScriptから始めるプログラミング2016 第一回
第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016
C#でゲームを作る2016 第3回
C#でゲームを作る2016 第3回
ひまわり本7章
ひまわり本7章
C#でゲームを作る2016 第5回
C#でゲームを作る2016 第5回
お絵かきをはじめよう!
お絵かきをはじめよう!
C#でゲームを作る2016 第7回
C#でゲームを作る2016 第7回
CUI3D
CUI3D
C#でゲームを作る2016 第1回
C#でゲームを作る2016 第1回
BFmeta
BFmeta
Code Golf
Code Golf
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
Altseed
Altseed
FM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作った
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
数値解析と物理学
数値解析と物理学
Plus de Hideaki Nagamine
間違ってたら教えて
フェーザとか
フェーザとか
Hideaki Nagamine
2015年5月8日. 京大マイコンクラブ部室.
競技プログラミング練習会2015 Normal 第4回
競技プログラミング練習会2015 Normal 第4回
Hideaki Nagamine
2015年5月1日. 京大マイコンクラブ部室. グラフと最短経路問題.
競技プログラミング練習会2015 Normal 第3回
競技プログラミング練習会2015 Normal 第3回
Hideaki Nagamine
2015年4月17日 京大マイコンクラブ部室. - 計算量 -- ランダウの記号 -- ソートアルゴリズムと計算量 - 動的計画法
競技プログラミング練習会2015 Normal 第1回
競技プログラミング練習会2015 Normal 第1回
Hideaki Nagamine
2015/04/17 京大マイコンクラブ部室. スタックとキュー/全探索/累積和
競技プログラミング練習会2015 Normal 第2回
競技プログラミング練習会2015 Normal 第2回
Hideaki Nagamine
KMC春合宿2015
Gaucheでマクロを書こう
Gaucheでマクロを書こう
Hideaki Nagamine
若干の修正と共にアップロード hnagaminはあなたの指摘を待っています!
On Lisp読書会2014 第3回「第2章 関数 (つづき)」
On Lisp読書会2014 第3回「第2章 関数 (つづき)」
Hideaki Nagamine
Plus de Hideaki Nagamine
(7)
フェーザとか
フェーザとか
競技プログラミング練習会2015 Normal 第4回
競技プログラミング練習会2015 Normal 第4回
競技プログラミング練習会2015 Normal 第3回
競技プログラミング練習会2015 Normal 第3回
競技プログラミング練習会2015 Normal 第1回
競技プログラミング練習会2015 Normal 第1回
競技プログラミング練習会2015 Normal 第2回
競技プログラミング練習会2015 Normal 第2回
Gaucheでマクロを書こう
Gaucheでマクロを書こう
On Lisp読書会2014 第3回「第2章 関数 (つづき)」
On Lisp読書会2014 第3回「第2章 関数 (つづき)」
Pietソースコード精読
1.
Pietソースコード精読 ID: hnagamin(長嶺英朗) 2015/05/24 第11回KMC学習発表会
2.
おまえだれ ● ID: hnagamin(長嶺英朗) –
KMC-2回生 – KMC38第会計 ● 京都大学工学部電気電子工学科2回 ● Piet歴2ヶ月 Twitter: @hnagamin GitHub: 1995hnagamin
3.
今日話すこと ● Pietの概要 ● プログラミングするときに考えること ● ソースコードの解説(逆ポーランド記法電卓の実装)
4.
Pietの概要 http://www.slideshare.net/KMC_JP/piet-46068527 を読め(終了)
5.
プログラミングするときに考えること ● 最初からゴルフをしない ● 解くべき問題の難易度を下げる – 超重要 – そもそも(人間が)Pietでできることはあまり多くない –
徐々に難易度を上げていくと士気が落ちない ● スタックの上での再帰 ● 黒ドットが少ないと良いプログラムみたいなとこある
6.
逆ポーランド記法電卓の実装
7.
背景 ● Pietでそれなりに(大きな|実用的な)プログラムを 書きたかった ● Pietはスタックの操作と相性が良いので、逆ポーラ ンド記法数式計算を実装することは完成度の割に 難易度が小さそうだと思った
8.
課題設定 ● とりあえず実装できることを確かめる – キャンバスが余っても気にしない ● 1桁の数字の入力だけ受け付ける – 複数桁の処理はつらい ● 四則演算くらいは実装する ● 知らない文字が出てきたらエラー処理 ● 終了記号を使おう –
PietはEOFを受け取れない
9.
課題 逆ポーランド記法の数式を入力として受け取り、 その計算結果を出力する
10.
課題 受け付ける入力は以下とする <stmt> := <expr> <DOT> <expr> := <NUM> | <expr> <expr> <operator> <operator> := <PLUS> <MINUS> <MULT> <DIV> <NUM> [09] <DOT> . <PLUS>
+ <MINUS> <MULT> * <DIV> /
11.
方針 ● 入力ストリームから1文字ずつ受け取る ● 受け取った文字が – '.'ならスタックの先頭要素を出力 –
数字なら対応する数をスタックにpush – 演算子ならスタックから2要素popして計算結果をpush – どれにも当てはまらなければエラーとして終了(“E”と出力)
12.
イメージ stack<int> s; while (true) { char c = getchar(); if (c == '.') { int ans = s.top(); cout << ans; break; } else if (isdigit(c)) { s.push(c48); } else if (c == '+') { int a = s.top(); s.pop(); int b = s.top(); s.pop(); s.push(a + b); } else if (c == '') { ...
13.
イメージ stack<int> s; while (true) { char c = getchar(); if (c 46 == 0) { int ans = s.top(); cout << ans; break; } else if (c > 47 && 58 > c) { s.push(c48); } else if (c 43 == 0) { int a = s.top(); s.pop(); int b = s.top(); s.pop(); s.push(a + b); } else if (c 43 == 0) { ...
14.
文字コード * 42 + 43 45 . 46 / 47 0 48
15.
実装
16.
// ここでデモを行う
17.
さらなる高みへ ● ソースコードのサイズを小さくしよう – エラー処理は省こう ● 複数桁の入力を受け付けよう
18.
課題 受け付ける入力は以下とする <stmt> := <expr> <DOT> <expr> := <NUM> | <expr> <expr> <operator> <operator> := <PLUS> <MINUS> <MULT> <DIV> <NUM> [09]+ <DOT> . <PLUS>
+ <MINUS> <MULT> * <DIV> / (デリミタ) #Space
19.
複数桁の入力 ● 再帰する ● 保存している数を10倍しながら入力された数を 足しあわせていく
20.
動作例 入力: “2014+” スタック: [0]
21.
動作例 入力: “014+” スタック: [0,2] 入力を受け取る
22.
動作例 入力: “014+” スタック: [0,2] 保存している数を10倍する 0×10
= 0
23.
動作例 入力: “014+” スタック: [2] 足す
24.
動作例 入力: “14+” スタック: [2,0] 入力を受け取る
25.
動作例 入力: “14+” スタック: [20,0] 保存している数を10倍する
26.
動作例 入力: “14+” スタック: [20] 足す
27.
動作例 入力: “4+” スタック: [20,1] 入力を受け取る
28.
動作例 入力: “4+” スタック: [200,1] 保存している数を10倍する
29.
動作例 入力: “4+” スタック: [201] 足す
30.
動作例 入力: “+” スタック: [201,4] 入力を受け取る
31.
動作例 入力: “+” スタック: [2010,4] 保存している数を10倍する
32.
動作例 入力: “+” スタック: [2014] 足す
33.
動作例 入力: “” スタック: [2014,43(+)] 入力を受け取る
34.
動作例 入力: “” スタック: [2014,43(+)] 数字じゃないので終了
35.
実装
36.
さらなる高みへ ● ゴルフをする ● ロジックは変えない ● コードの進む向きをうねらせる
37.
実装
38.
もう話すことがない ● Pietは楽しい ● スタックで再帰するのは意外と簡単、意外と楽しい – 2変数くらいまでだったらなんとなくいける –
3変数以上でも多分何とかなる ● 書こう
Télécharger maintenant