Enviar pesquisa
Carregar
Plack::Request with Encoding
•
1 gostou
•
1,530 visualizações
M
moznion
Seguir
2013-11-20, shibuya.pl (plackcon)
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 60
Baixar agora
Baixar para ler offline
Recomendados
Drupal 8.4.x の core にみるフロントエンド開発の現状紹介
Drupal 8.4.x の core にみるフロントエンド開発の現状紹介
tom_konda
Drupal 8 における TypeScript を使用する JavaScript 開発の現状
Drupal 8 における TypeScript を使用する JavaScript 開発の現状
tom_konda
Database sql
Database sql
明 高橋
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
Takashi Someda
Drawing Dataflow On Dalvik Bytecodes
Drawing Dataflow On Dalvik Bytecodes
Takahiro Yoshimura
Google Perf Tools (tcmalloc) の使い方
Google Perf Tools (tcmalloc) の使い方
Kazuki Ohta
VBCPP - ICT+R 2012
VBCPP - ICT+R 2012
Yuki Igarashi
Shibuya Perl Mongers#12 No Sql Couch Db
Shibuya Perl Mongers#12 No Sql Couch Db
Makoto Ohnami
Recomendados
Drupal 8.4.x の core にみるフロントエンド開発の現状紹介
Drupal 8.4.x の core にみるフロントエンド開発の現状紹介
tom_konda
Drupal 8 における TypeScript を使用する JavaScript 開発の現状
Drupal 8 における TypeScript を使用する JavaScript 開発の現状
tom_konda
Database sql
Database sql
明 高橋
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
Takashi Someda
Drawing Dataflow On Dalvik Bytecodes
Drawing Dataflow On Dalvik Bytecodes
Takahiro Yoshimura
Google Perf Tools (tcmalloc) の使い方
Google Perf Tools (tcmalloc) の使い方
Kazuki Ohta
VBCPP - ICT+R 2012
VBCPP - ICT+R 2012
Yuki Igarashi
Shibuya Perl Mongers#12 No Sql Couch Db
Shibuya Perl Mongers#12 No Sql Couch Db
Makoto Ohnami
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
goccy
Use Carton
Use Carton
Yoshihiro Sasaki
Using Dancer
Using Dancer
Yoshihiro Sasaki
テーマ「最適化」
テーマ「最適化」
technocat
テーマ「なんでもないようなこと」
テーマ「なんでもないようなこと」
technocat
Currying in perl
Currying in perl
Masahiro Honma
PHPカンファレンス北海道_20160416
PHPカンファレンス北海道_20160416
Yoshihiro Sasaki
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
moznion
"Ops Tools with Perl" 2012/05/12 Hokkaido.pm
"Ops Tools with Perl" 2012/05/12 Hokkaido.pm
Ryosuke IWANAGA
Asset Pipeline for Perl
Asset Pipeline for Perl
Yoshihiro Sasaki
YAPCレポートの舞台裏
YAPCレポートの舞台裏
Masahiro Honma
理解したつもりになるGit入門
理解したつもりになるGit入門
Yoshihiro Sasaki
Google trends to_irc
Google trends to_irc
rarere
Takao.mt 2013
Takao.mt 2013
moznion
Games::* - Perlで 「ゲーム」しよう #hokkaidopm
Games::* - Perlで 「ゲーム」しよう #hokkaidopm
鉄次 尾形
YAPC::AsiaとHokkaido.pm
YAPC::AsiaとHokkaido.pm
Yoshihiro Sasaki
CPAN/便利モジュール
CPAN/便利モジュール
Yoshihiro Sasaki
Perl 非同期プログラミング
Perl 非同期プログラミング
lestrrat
変数、リファレンス
変数、リファレンス
charsbar
cpanfile
cpanfile
Yoshihiro Sasaki
Static analysis for perl
Static analysis for perl
moznion
Yet Another Perl Cooking
Yet Another Perl Cooking
moznion
Mais conteúdo relacionado
Destaque
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
goccy
Use Carton
Use Carton
Yoshihiro Sasaki
Using Dancer
Using Dancer
Yoshihiro Sasaki
テーマ「最適化」
テーマ「最適化」
technocat
テーマ「なんでもないようなこと」
テーマ「なんでもないようなこと」
technocat
Currying in perl
Currying in perl
Masahiro Honma
PHPカンファレンス北海道_20160416
PHPカンファレンス北海道_20160416
Yoshihiro Sasaki
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
moznion
"Ops Tools with Perl" 2012/05/12 Hokkaido.pm
"Ops Tools with Perl" 2012/05/12 Hokkaido.pm
Ryosuke IWANAGA
Asset Pipeline for Perl
Asset Pipeline for Perl
Yoshihiro Sasaki
YAPCレポートの舞台裏
YAPCレポートの舞台裏
Masahiro Honma
理解したつもりになるGit入門
理解したつもりになるGit入門
Yoshihiro Sasaki
Google trends to_irc
Google trends to_irc
rarere
Takao.mt 2013
Takao.mt 2013
moznion
Games::* - Perlで 「ゲーム」しよう #hokkaidopm
Games::* - Perlで 「ゲーム」しよう #hokkaidopm
鉄次 尾形
YAPC::AsiaとHokkaido.pm
YAPC::AsiaとHokkaido.pm
Yoshihiro Sasaki
CPAN/便利モジュール
CPAN/便利モジュール
Yoshihiro Sasaki
Perl 非同期プログラミング
Perl 非同期プログラミング
lestrrat
変数、リファレンス
変数、リファレンス
charsbar
cpanfile
cpanfile
Yoshihiro Sasaki
Destaque
(20)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
Use Carton
Use Carton
Using Dancer
Using Dancer
テーマ「最適化」
テーマ「最適化」
テーマ「なんでもないようなこと」
テーマ「なんでもないようなこと」
Currying in perl
Currying in perl
PHPカンファレンス北海道_20160416
PHPカンファレンス北海道_20160416
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
"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 Perl
YAPCレポートの舞台裏
YAPCレポートの舞台裏
理解したつもりになるGit入門
理解したつもりになるGit入門
Google trends to_irc
Google trends to_irc
Takao.mt 2013
Takao.mt 2013
Games::* - Perlで 「ゲーム」しよう #hokkaidopm
Games::* - Perlで 「ゲーム」しよう #hokkaidopm
YAPC::AsiaとHokkaido.pm
YAPC::AsiaとHokkaido.pm
CPAN/便利モジュール
CPAN/便利モジュール
Perl 非同期プログラミング
Perl 非同期プログラミング
変数、リファレンス
変数、リファレンス
cpanfile
cpanfile
Mais de moznion
Static analysis for perl
Static analysis for perl
moznion
Yet Another Perl Cooking
Yet Another Perl Cooking
moznion
Jesque robust-worker-pool
Jesque robust-worker-pool
moznion
Hachioji persec
Hachioji persec
moznion
Inner world of Perl::Lint
Inner world of Perl::Lint
moznion
命名の話
命名の話
moznion
Hachiojipm 44
Hachiojipm 44
moznion
Perl::Lint is over, for the present
Perl::Lint is over, for the present
moznion
Perl::Lint - Yet Another Perl Source Code Linter
Perl::Lint - Yet Another Perl Source Code Linter
moznion
Hachioji pm 41
Hachioji pm 41
moznion
Hachioji.pm 40
Hachioji.pm 40
moznion
Hachioji.pm #39
Hachioji.pm #39
moznion
Talking About Japanese Area Code of Phone
Talking About Japanese Area Code of Phone
moznion
Hachioji.pm 38
Hachioji.pm 38
moznion
Hokkaido.pm #11
Hokkaido.pm #11
moznion
Hachiojipm 36
Hachiojipm 36
moznion
Net stalking with-lastfm
Net stalking with-lastfm
moznion
Perl beginners #08
Perl beginners #08
moznion
Hachiojipm 28
Hachiojipm 28
moznion
Hachiojipm 26
Hachiojipm 26
moznion
Mais de moznion
(20)
Static analysis for perl
Static analysis for perl
Yet Another Perl Cooking
Yet Another Perl Cooking
Jesque robust-worker-pool
Jesque robust-worker-pool
Hachioji persec
Hachioji persec
Inner world of Perl::Lint
Inner world of Perl::Lint
命名の話
命名の話
Hachiojipm 44
Hachiojipm 44
Perl::Lint is over, for the present
Perl::Lint is over, for the present
Perl::Lint - Yet Another Perl Source Code Linter
Perl::Lint - Yet Another Perl Source Code Linter
Hachioji pm 41
Hachioji pm 41
Hachioji.pm 40
Hachioji.pm 40
Hachioji.pm #39
Hachioji.pm #39
Talking About Japanese Area Code of Phone
Talking About Japanese Area Code of Phone
Hachioji.pm 38
Hachioji.pm 38
Hokkaido.pm #11
Hokkaido.pm #11
Hachiojipm 36
Hachiojipm 36
Net stalking with-lastfm
Net stalking with-lastfm
Perl beginners #08
Perl beginners #08
Hachiojipm 28
Hachiojipm 28
Hachiojipm 26
Hachiojipm 26
Último
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
Último
(10)
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
Plack::Request with Encoding
1.
Plack::Request with Encoding Hachioji.pm @moznion
2.
@moznion 大学院生 ! アルバイター ! Hachioji.pm 所属
3.
Plack::Requestと 文字列の エンコーディングの話
4.
Plack::Request
5.
皆さん使ってますか
6.
Plack::Request おさらい
7.
教典こと miyagawaさんの Plack Handbook から引用
8.
Plack::Requestは, PSGI環境変数や レスポンス配列に対して, 簡単な オブジェクト指向APIを提供します. Plack
Handbook 14章より引用
9.
新しいミドルウェアを記述する際の ライブラリとしても利用できますし, PlackをベースにしたWebフレームワー クを記述する際のリクエスト/レスポ ンスのベースクラスとしても使えます. Plack Handbook 14章より引用
10.
WAF作る時とか Webアプリケーション 作る時とかに使う (大体はparentとして)
11.
例 (あくまで例)
12.
13.
さてコレ
14.
param()やparameters()など を使うと, GETやPOSTの パラメータを取れる
15.
param()やparameters()など を使うと, GETやPOSTの パラメータを取れる ただしバイト列で
16.
つまり?
17.
予期しない エンコーディングの 文字列が来ると 文字化けを起こす
18.
予期しない エンコーディングの 文字列が来ると 文字化けを起こす
19.
予期しない エンコーディングの 文字列が来ると 文字化けを起こす
20.
予期しない エンコーディングの 文字列が来ると 文字化けを起こす
21.
適切に decodeを施して Perl-Stringにしてやる 必要が有る
22.
(Plack::Requestは) WAF作る時とか Webアプリケーション 作る時とかに使う (大体はparentとして)
23.
(Plack::Requestは) WAF作る時とか Webアプリケーション 作る時とかに使う (大体はparentとして)
24.
decode処理を みんないちいち 書いてる
25.
職人が! 心をこめて! 書いている
26.
めっちゃ再発明されてる (大体コピペ[要出典]で)
27.
もう嫌
28.
もう嫌
29.
という訳で そこら辺にケリを 付けるべく作ったのが
30.
Plack::Request::WithEncoding https://metacpan.org/pod/Plack::Request::WithEncoding https://github.com/moznion/Plack-Request-WithEncoding
31.
これを使うと, param()やparameters()が decode済み文字列を 返してくれるので便利!
32.
例
33.
例 エンコーディングを指定
34.
例 decodedな文字列が得られる
35.
職人の仕事を 肩代わり!
36.
フレームワークを使わなくても Plack::Request::WithEncodingと Plack::Requestの組み合わせで カジュアルにアプリが書ける!
37.
と偉そうに言ったものの 中身はほぼAmon2からの パク^H^Hインスパイア
38.
パッチやご意見 お待ちしています
39.
で,
40.
Plack::Middlewareで, リクエストの エンコーディングの判別をして $env->{‘plack.request.withencoding.encoding'}に 格納しておくみたいなことをすることにより よしなに文字列をdecodeしたりすることが 出来るようになります. Plack Handbook
Plack::Request::WithEncodingがなぜ便利なのか http://www.songmu.jp/riji/entry/2013-10-01-plack-request-with-encoding.html
41.
アーハン?
42.
という訳で実装
43.
Plack::Middleware:: AutoDetectEncoding https://github.com/moznion/Plack-Middleware-AutoDetectEncoding
44.
Rails3で言うところの snowmanに近い実装
45.
☃
46.
☃ Him!
47.
☃のような 特定の文字コードでしか 使われない文字を使って 文字コードを特定
48.
ただ今回のケースでは ☃が使えないので (↑Unicodeの為) 別の文字で代替
49.
formタグ内に <input type="hidden" name=“__plack_middleware_auto_detect_encoding” value="駱駝" /> のようなinput要素を追加 フォームデータと共に 判別用文字を送ってもらう
50.
リクエストとして来た URLエンコード済み 判別用文字を 各エンコーディングと比較
51.
エンコーディングを 特定したら $env->{‘plack.request.withencoding.encoding’} にそれを格納する
52.
こんな感じ
53.
ただ, これで良いのか感
54.
なんか微妙なので GitHub止まりです
55.
56.
57.
斬新なdescription!
58.
なにか良いアイデア ございましたら 教えてください
59.
あと思いつきで vim-plackというvim plug-in を書きましたが あまり便利になりませんでした
60.
おわり
Baixar agora