Soumettre la recherche
Mettre en ligne
Plack::Request with Encoding
•
1 j'aime
•
1,531 vues
M
moznion
Suivre
2013-11-20, shibuya.pl (plackcon)
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 60
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
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
Recommandé
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
Contenu connexe
En vedette
これからの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
En vedette
(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
Plus 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
Plus 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
Dernier
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Dernier
(11)
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
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.
おわり
Télécharger maintenant