Enviar búsqueda
Cargar
The new Text::Hatena
•
Descargar como KEY, PDF
•
6 recomendaciones
•
2,140 vistas
Yasuhiro Onishi
Seguir
Denunciar
Compartir
Denunciar
Compartir
1 de 34
Descargar ahora
Recomendados
RESTful #とは RailsスタイルからRESTを学ぼう
RESTful #とは RailsスタイルからRESTを学ぼう
Toru Kawamura
WordBench京都 WordPress with Linked Open Data
WordBench京都 WordPress with Linked Open Data
Hidetaka Okamoto
Swift + JSON via WordPress
Swift + JSON via WordPress
Masahiro Nakashima
20121103 #odstudy できる! VBAマクロ
20121103 #odstudy できる! VBAマクロ
Hiyou Shinnonome
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Toru Kawamura
設定ファイルに使われそうなデータ形式
設定ファイルに使われそうなデータ形式
鉄次 尾形
oEmbed と Text::Hatena
oEmbed と Text::Hatena
Yasuhiro Onishi
HTML5 入門
HTML5 入門
NOAN
Recomendados
RESTful #とは RailsスタイルからRESTを学ぼう
RESTful #とは RailsスタイルからRESTを学ぼう
Toru Kawamura
WordBench京都 WordPress with Linked Open Data
WordBench京都 WordPress with Linked Open Data
Hidetaka Okamoto
Swift + JSON via WordPress
Swift + JSON via WordPress
Masahiro Nakashima
20121103 #odstudy できる! VBAマクロ
20121103 #odstudy できる! VBAマクロ
Hiyou Shinnonome
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Toru Kawamura
設定ファイルに使われそうなデータ形式
設定ファイルに使われそうなデータ形式
鉄次 尾形
oEmbed と Text::Hatena
oEmbed と Text::Hatena
Yasuhiro Onishi
HTML5 入門
HTML5 入門
NOAN
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
Takuto Wada
Html5でword pressテーマを作るよ!
Html5でword pressテーマを作るよ!
Muyuu Fujita
HTML5 for IA
HTML5 for IA
Atsushi HASEGAWA, Ph.D.
Contao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こう
Takahiro Kambe
WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?
Shinichi Nishikawa
HTML5での制作、いつから始める?
HTML5での制作、いつから始める?
Fuminori Mori
CRF を使った Web 本文抽出 for WebDB Forum 2011
CRF を使った Web 本文抽出 for WebDB Forum 2011
Shuyo Nakatani
Web班番外編
Web班番外編
XMLProJ2014
いいパブッ!! - よくわかるEPUB 3
いいパブッ!! - よくわかるEPUB 3
Hiroshi Takase
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
ericsagnes
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
Yuki Okada
WEB開発はじめの一歩 講師:村井亮介様
WEB開発はじめの一歩 講師:村井亮介様
株式会社GreenHack
使いやすいWordPressのためのCSSのつくりかた
使いやすいWordPressのためのCSSのつくりかた
Hiroshi Urabe
かたログッ!! - 本をネットに解き放て
かたログッ!! - 本をネットに解き放て
Hiroshi Takase
メディア工房サマーワークショップ「Webアプリ制作」1日目
メディア工房サマーワークショップ「Webアプリ制作」1日目
Takashi Endo
Introduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature Engineers
Takeshi Arabiki
Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5
Sho Ito
Yesod でブログエンジンをつくってみた
Yesod でブログエンジンをつくってみた
Hiromi Ishii
開発合宿!!!!
開発合宿!!!!
Yasuhiro Onishi
Hatena blogdevelopmentflow
Hatena blogdevelopmentflow
Yasuhiro Onishi
wget.pl
wget.pl
Yasuhiro Onishi
Redmine::ChanでIRCからプロジェクト管理
Redmine::ChanでIRCからプロジェクト管理
Yasuhiro Onishi
Más contenido relacionado
Similar a The new Text::Hatena
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
Takuto Wada
Html5でword pressテーマを作るよ!
Html5でword pressテーマを作るよ!
Muyuu Fujita
HTML5 for IA
HTML5 for IA
Atsushi HASEGAWA, Ph.D.
Contao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こう
Takahiro Kambe
WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?
Shinichi Nishikawa
HTML5での制作、いつから始める?
HTML5での制作、いつから始める?
Fuminori Mori
CRF を使った Web 本文抽出 for WebDB Forum 2011
CRF を使った Web 本文抽出 for WebDB Forum 2011
Shuyo Nakatani
Web班番外編
Web班番外編
XMLProJ2014
いいパブッ!! - よくわかるEPUB 3
いいパブッ!! - よくわかるEPUB 3
Hiroshi Takase
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
ericsagnes
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
Yuki Okada
WEB開発はじめの一歩 講師:村井亮介様
WEB開発はじめの一歩 講師:村井亮介様
株式会社GreenHack
使いやすいWordPressのためのCSSのつくりかた
使いやすいWordPressのためのCSSのつくりかた
Hiroshi Urabe
かたログッ!! - 本をネットに解き放て
かたログッ!! - 本をネットに解き放て
Hiroshi Takase
メディア工房サマーワークショップ「Webアプリ制作」1日目
メディア工房サマーワークショップ「Webアプリ制作」1日目
Takashi Endo
Introduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature Engineers
Takeshi Arabiki
Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5
Sho Ito
Yesod でブログエンジンをつくってみた
Yesod でブログエンジンをつくってみた
Hiromi Ishii
Similar a The new Text::Hatena
(18)
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
Html5でword pressテーマを作るよ!
Html5でword pressテーマを作るよ!
HTML5 for IA
HTML5 for IA
Contao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こう
WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?
HTML5での制作、いつから始める?
HTML5での制作、いつから始める?
CRF を使った Web 本文抽出 for WebDB Forum 2011
CRF を使った Web 本文抽出 for WebDB Forum 2011
Web班番外編
Web班番外編
いいパブッ!! - よくわかるEPUB 3
いいパブッ!! - よくわかるEPUB 3
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
WEB開発はじめの一歩 講師:村井亮介様
WEB開発はじめの一歩 講師:村井亮介様
使いやすいWordPressのためのCSSのつくりかた
使いやすいWordPressのためのCSSのつくりかた
かたログッ!! - 本をネットに解き放て
かたログッ!! - 本をネットに解き放て
メディア工房サマーワークショップ「Webアプリ制作」1日目
メディア工房サマーワークショップ「Webアプリ制作」1日目
Introduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature Engineers
Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5
Yesod でブログエンジンをつくってみた
Yesod でブログエンジンをつくってみた
Más de Yasuhiro Onishi
開発合宿!!!!
開発合宿!!!!
Yasuhiro Onishi
Hatena blogdevelopmentflow
Hatena blogdevelopmentflow
Yasuhiro Onishi
wget.pl
wget.pl
Yasuhiro Onishi
Redmine::ChanでIRCからプロジェクト管理
Redmine::ChanでIRCからプロジェクト管理
Yasuhiro Onishi
新はてなダイアリーの裏側
新はてなダイアリーの裏側
Yasuhiro Onishi
ウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニング
Yasuhiro Onishi
Más de Yasuhiro Onishi
(6)
開発合宿!!!!
開発合宿!!!!
Hatena blogdevelopmentflow
Hatena blogdevelopmentflow
wget.pl
wget.pl
Redmine::ChanでIRCからプロジェクト管理
Redmine::ChanでIRCからプロジェクト管理
新はてなダイアリーの裏側
新はてなダイアリーの裏側
ウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニング
The new Text::Hatena
1.
この夏の最新 Text::Hatena をお届けします!!
2012/08/18 大西康裕 (id:onishi) はてな
2.
自己紹介 • id:onishi -
大西康裕 • 株式会社はてな (2001∼) • チーフエンジニア • はてなブログディレクター • @yasuhiro_onishi • PAUSE: ONISHI - Devel::KYTProf
3.
Text::Hatena とは はてな記法を HTMLに変換 するモジュール
4.
はてな記法とは • はてなブログやはてなダイアリーやはてなグ
ループで使える書式 • かんたんな記述でHTML文書構造や自動リン クが書ける • hatenadiary.g.hatena.ne.jp/keyword/ はてな記法一覧
5.
入力支援(ブロック記法)
6.
自動リンク(インライン記法)
7.
たくさんのText::Hatena • Text::Hatena ∼0.16
(jkondo) • https://metacpan.org/release/JKONDO/Text-Hatena-0.16 • Text::Hatena 0.20 (jkondo) • https://metacpan.org/module/Text::Hatena • Text::Xatena (cho45) • https://metacpan.org/module/Text::Xatena • Text::HatenaLite (wakabatan) • https://github.com/wakaba/perl-text-hatenalite
8.
Text::Hatena # ∼0.16 use
Text::Hatena; # 0.16 my $parser = Text::Hatena->new; $parser->parse($text); my $html = $parser->html;
9.
Text::Hatena # 0.20 use
Text::Hatena; # 0.20 my $html = Text::Hatena->parse($text);
10.
Text::Xatena use Text::Xatena; my $thx
= Text::Xatena->new; $thx->format($string);
11.
Text::HatenaLite use Text::HatenaLite::Parser; my $html
= Text::HatenaLite::Parser ->parse_string($string);
12.
もっとたくさんの… • Hatena::Diary::HTMLParserBody • Hatena2::Group::HTMLParserBody •
Hatena::Bookmark::TextFormat • Hatena::Haiku::Body
13.
Hatena::Diary::HTMLParserBody • 最初のはてな記法 Parser •
2008年までテストなかった • 1200行のメソッド • まだ使われています…
14.
H::D::HTMLParserBody#makelink
15.
記法展開の難しさ(1) テキストをHTMLにするものだけど
HTML::Parserベース • はてな記法はHTMLタグが使える • コメント記法 • スーパーPRE記法
16.
記法展開の難しさ(1) <script> ここは記法展開しないよ </script> <!-- ここは消えるよ --> >|| 記法展開しないでPREになるよ ||<
17.
記法展開の難しさ(1) <script> >|| ここはどうなる? ||< </script> >|| <!-- ここはどうなる? --> ||<
18.
記法展開の難しさ(1) 記法とHTMLを 同時に解釈しな ければいけない
19.
記法展開の難しさ(2)
3つのことを同時にやっている • 記法の展開 • キーワードリンク • XSS対策(ホワイトリストによるscript制限)
20.
記法展開の難しさ(2)
どうしてこうなった • 記法とキーワードリンクが密結合している • []キーワードリンクしない記法[] • 記法展開すると意味を失う
21.
記法展開の難しさ(2) 記法展開とキーワー ドリンクを同時に行 わなければならない
22.
このため 記法展開とキーワードリンクが密結 合であるため、Text::Hatena な どの記法展開だけのモジュールを 作っても、実際のプロダクト(はて なダイアリー)で利用できなかった
23.
どうしよう
24.
メタデータによる疎結合化 記法展開時に 「これ以上リンクしない」という カスタムデータ属性を付与 <span data-unlink>
ここはこれ以上リンクしない </span>
25.
メタデータによる疎結合化
} • 記法パーサ • data-unlink属性を付与 疎結合化 • キーワードリンカ • data-unlink属性を見てリンクを判断
26.
The new Text::Hatena •
Text::Xatena をベースに (©cho45) • カスタムデータ属性を使って記法展開とキー ワードリンクを疎結合化 • 過去(や類似)のインターフェース互換 • 多くのはてな記法に対応 • 実際にはてなブログで利用している
27.
インターフェース後方互換 use Text::Hatena; my $parser
= Text::Hatena->new; my $html = $parser->parse($string); # Text::Hatena 0.16 style my $html = $parser->html; # Text::Hatena 0.20 style my $html = Text::Hatena->parse($string); # Text::Xatena style my $html = $parser->format($string);
28.
単体でも使える便利モジュール •Text::Hatena::Keyword • キーワードリンカ •Text::Hatena::Embed
• URL埋め込み支援([http:embed]記法)
29.
Text::Hatena::Keyword data-unlink 属性を考慮してキーワードリンク my
$parser = Text::Hatena::Keyword->new( rules => [ qr/hoge|fuga/ => sub { sprintf '/keyword/%s', uri_escape($_) }, [qw/foo bar/] => sub { sprintf '/other/%s', uri_escape($_) }, ], ); my $words = $parser->extract($html); # 抽出 my $formatted_html = $parser->format($html); # リンク
30.
Text::Hatena::Embed
URLを渡すといい感じにembed my $embed = Text::Hatena::Embed->new; my $html = $embed->render($url); www.slideshare.net/onishi/oembed-texthatena
31.
github.com/onishi/Text-Hatena 本日公開しました!!
どうぞご利用ください!! pull request ください!!
32.
はてなブログ 27週連続新機能リリース中 日本一開発がホットなブログ hatenablog.com
33.
人材募集 • 株式会社はてなではエンジニアその他 全職種を募集しています •
一緒にブログを作りましょう! www.hatena.ne.jp/company/staff
34.
ご清聴ありがとうございました
Notas del editor
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Descargar ahora