SlideShare ist ein Scribd-Unternehmen logo
1 von 56
MT meets PHP
MTCafe Saitama 2013
Junnama Noda @ Alfasado, Inc.
About  Me  (野⽥田  純⽣生)
•アルファサード株式会社  代表取締役
•CMS/受託開発を通じてクライアントを爆速化
•Movable  Type  エバンジェリスト
•http://junnama.alfasado.net/online/
•http://twitter.com/junnama
• https://www.facebook.com/junnama.noda
http://alfasado.net/
http://powercms.jp/
どのくらいMTが好きか
http://www.amazon.co.jp/dp/4774147109
http://www.amazon.co.jp/dp/4839927537
https://github.com/alfasado
http://2012.osaka.wordcamp.org/
http://2012.osaka.wordcamp.org/
http://2012.osaka.wordcamp.org/speakers/sumio-noda/
エイプリルフールのネタではない!
http://powercms.alfasado.net/blog/2011/04/wordpressmovable_type.html
Movable  Type
• マルチサイトの管理理機能
• 強⼒力力なテンプレートエンジン(MTML)
• プラグインによる拡張
• テーマの作成
• パートナー企業によるサードパーティ製品
• 開発⾔言語はPerl
開発⾔言語はPerl
Perl
Perl
MT  meets  PHP
MT  meets  PHP
•Ver.3.1でダイナミックパブリッシングサポート
• class  MT
• class  MTDatabase
• class  BaseObject  extends  ADOdb_̲Active_̲Record
• class  MTViewer  extends  Smarty
• PHPでプラグインによる拡張が可能
Example  1
<?php
$blog_id = 2;
include('/path/to/mt/php/mt.php');
$mt = MT::get_instance($blog_id,
'/path/to/mt/mt-config.cgi');
$blog = $mt->db()->fetch_blog($blog_id);
echo $blog->name . "n";
?>
Example  2
<?php
require_once( 'class.mt_entry.php' );
$_entry = new Entry;
$where = "entry_status=2 and
entry_blog_id=2";
$where .= " order by entry_authored_on
DESC ";
$extra['limit'] = 10;
$entries = $_entry->Find( $where, FALSE,
FALSE, $extra );
foreach ( $entries as $entry ) {
echo $entry->title . "n";
}
?>
Example  3
<?php //class.mt_log.php
require_once( "class.baseobject.php" );
class Log extends BaseObject {
public $_table = 'mt_log';
protected $_prefix = "log_";
}
?>
<?php
require_once( 'class.mt_log.php' );
$_log = new Log;
$_log->message = “This is test.”;
$ts = gmdate( "YmdHis" );
$_log->created_on = $ts;
$_log->modified_on = $ts;
$_log->Save();
?>
MTML
Movable  Type  Markup  Language
MTML=Movable  Type  
Markup  Language
•MTML=Viewを担当するもの
•MTIf  MTElse  MTLoopなど、実はロジックも書け
る
•テンプレートにプログラムは書けない(完全に分
離離している)=>デザイナに敷居が低い
•<MTFoo>  でも  <mt:foo>  でも  <mtfoo  />  で
も  <$MTFoo$>  でも良良い(緩い)
<ul>
<?php
$myposts =
get_posts('posts_per_page=10');
foreach($myposts as $post) :
setup_postdata($post);
?>
<li><a href="<?php the_permalink(); ?>">
<?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>
Template  for  WordPress
<ul>
<MT:Entries limit="10">
<li><a href="<MT:EntryPermalink>">
<MT:EntryTitle></a></li>
</MT:Entries>
</ul>
Template  for  Movable  Type
MTMLの拡張
• ダイナミックパブリッシングのタグはPHPで書く
• mt_̲dir/plugins/PluginName/php/以下に設置
• block.mtfoo.php,  function.mtloop.php(命名規則)
• Smartyのプラグインとして書く
• MTがSmartyプラグインをMTMLに内部変換して実⾏行行
モディファイア
<?php
// modifier.addstring.php
function smarty_modifier_addstring
( $text, $arg ) {
return "{$text}{$arg}";
}
//<mt:foo addstring= “ただしイケメンに限る。”>
?>
ファンクションタグ
<?php
//function.mtrand.php
function smarty_function_mtrand( $args, &$ctx ) {
$min = $args['min'];
$max = $args['max'];
return rand( $min, $max );
}
//<mt:rand min=”1” max=”10”>
?>
条件タグ
<?php
//block.mtifrand.php
function smarty_block_mtifrand
($args, $content, &$ctx, &$repeat) {
$rand = (rand(0, 1)) ? TRUE : FALSE;
return $ctx->_hdlr_if
($args, $content, $ctx, $repeat, $rand);
}
//<mt:ifRand><mt:else></mt:if>
?>
ブロックタグ(1)
<?php
//block.mtsampleblock.php
function smarty_block_mtsampleblock
( $args, $content, &$ctx, &$repeat ) {
! $from = $args['from'];
! $to = $args['to'];
! $glue = $args['glue'];
! if (! isset( $content ) ) {
! ! $vars =& $ctx->__stash['vars'];
! ! $ctx->stash( '__counter__', $from );
! ! $ctx->__stash['vars']['__counter__'] = $from;
! } else {
ブロックタグ(2)
! } else {
! ! $out = $ctx->stash('__out');
! ! $counter = $ctx->__stash['vars']
['__counter__'] + 1;
! ! if ( $glue && $content && $out ) {
! ! ! $content = $glue . $content;
! ! } else {
! ! ! $ctx->stash('__out', TRUE);
! ! }
! ! if ( $counter <= $to ) {
! ! ! $ctx->__stash['vars']['__counter__']
= $counter;
! ! ! $repeat = TRUE;
! ! } else {
! ! ! $repeat = FALSE;
! ! }
! ! return $content;
! }
ブロックタグ(3)
<mt:SampleBlock from="1" to="10" glue=",">
</mt:SampleBlock>
! 1,2,3,4,5,6,7,8,9,10
DynamicMTML
PHP  Extension  for  MT
DynamicMTML
• MTのダイナミックパブリッシングの拡張
• 静的ファイル内のMTMLをPHPによって実⾏行行
• SmartyのテンプレートがMTタグで書ける!
• ORマッパ、Worker、静的パブリッシュ,etc
• Class  MTPlugin(config.phpにまとめて書ける)
DynamicMTML
-‐‑‒  Demo  -‐‑‒
drwxrwxrwx 32 alfasado admin 1088 3 10 15:17 .
drwxr-xr-x 11 alfasado admin 374 3 8 13:40 ..
-rw-rw-rw- 1 alfasado admin 935 2 27 16:08 .htaccess
-rw-rw-rw- 1 alfasado admin 1223 2 27 16:08 .mtview.php
-rw-rw-rw- 1 alfasado admin 24609 3 2 14:41 index.html
Example  1
<MTIfFacebookLoggedIn>
<$MTFacebookGetProfile
target="gender" setvar="__gender__"$>
<MTIf name="__gender__" eq="male">
                        男性向けページ
<MTElseIf name="__gender__" eq="famale">
⼥女女性向けページ
</MTif>
</MTIfFacebookLoggedIn>
Example  2
<MTSalesforceGetSObjects
object=”Case” limit=”10”>
<h2><$MTSalesforceObjectTitle$></h2>
<p><$MTSalesforceObjectBody$></p>
</MTSalesforceGetSObjects>
Example  3
<MT:IfUserAgent wants="smartphone">
        スマホでしょ?
<MTElse>
        スマホじゃないでしょ?
</MT:IfUserAgent>
<MT:IfUserAgent wants="tablet">
        タブレットでしょ?
<MTElse>
        タブレットじゃないでしょ?
</MT:IfUserAgent>
Example  4
<MT:IfUserAgent wants="keitai">
<MT:IfUserAgent like="DoCoMo">
DoCoMo?
<MTElse>
<MT:IfUserAgent like="UP.Browser">
AU?
<MTElse>
SoftBank?
</MT:IfUserAgent>
Example  5
<MT:IfLogin>
<MTAuthorDisplayName escape="html">
            さん、ようこそ
<MTElse>
        ここから先はユーザー登録してください。
</MT:IfLogin>
Example  6
<MT:IfIE lt=”7”>
Internet Exproler ver.7以上?
<MTElse>
Internet Exproler ver.6以下?
</MT:IfIE>
Example  7
$terms = array(‘status’ => 2,
‘blog_id’ => 2,
‘class’=>‘entry’);
$args = array(‘sort’ => ‘authored_on’,
‘direcrtion’ => ‘descend’,
‘limit’ => 10 );
$entries = $app->load(‘Entry’,$terms,$args);
SELECT * FROM ‘mt_entry’
WHERE entry_status=2 AND
entry_class=‘entry’
ORDER BY `mt_entry`.`entry_authored_on` DESC
LIMIT 0,10
Example  8
class ExamplePlugin extends MTPlugin {
'config_settings' => array( // mt-config.cgi
'DynamicForceCompile' => array( 'default' => 0 ),),
'settings' => array( // PluginSettings
'example_setting' => array( 'default' => 1 ),),
'tags' => array( // Template Tags
'block' => array('dynamicmtml' => 'dynamicmtml'),
'function' => array('authorlanguage' => 'authorlanguage'),
'modifier' => array('trimwhitespace' => 'trimwhitespace'),),
'task_workers' => array( // Workers
'mt_rebuild' => array('label' => 'Publishes content.',
'code' => 'workers_mt_rebuild',
'class' => 'MT::Worker::Publish',),),
'callbacks' => array( // Callbacks
'build_page' => 'filter_build_page',),);
mt_dir/plugins/EsamplePlugin/php/config.php
<ul>
<?php
$myposts =
get_posts('posts_per_page=10');
foreach($myposts as $post) :
setup_postdata($post);
?>
<li><a href="<?php the_permalink(); ?>">
<?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>
Template  for  WordPress
<ul>
<MT:Entries limit="10">
<li><a href="<MT:EntryPermalink>">
<MT:EntryTitle></a></li>
</MT:Entries>
</ul>
Template  for  Movable  Type
<ul>
<MT:WP:Entries limit="10">
<li><a href="<MT:WP:EntryPermalink>">
<MT:WP:EntryTitle></a></li>
</MT:WP:Entries>
</ul>
Using  DynamicMTML
<!-- File: /app/controllers/posts_controller.php -->
<?php
class PostsController extends AppController {
var $name = 'Posts';
function index() {
$this->set('posts',
$this->Post->find('all'));
}
function view($id = null) {
$this->Post->id = $id;
$this->set('post', $this->Post->read());
}
}
?>
Original(Controller)
<!-- File: /app/views/posts/index.ctp -->
<h1>Blog posts</h1>
<table>
<tr>
<th>Id</th><th>Title</th><th>Created</th>
</tr>
<?php foreach ($posts as $post): ?>
<tr>
<td><?php echo $post['Post']['id']; ?></td>
<td>
<?php echo
$html->link($post['Post']['title'],
array('controller' => 'posts',
'action' => 'view',
$post['Post']['id'])); ?>
</td>
<td><?php echo $post['Post']['created']; ?
></td>
</tr>
<?php endforeach; ?>
</table>
Original(View)
<!-- File: /app/controllers/posts_controller.php -->
<?php
class PostsController extends AppController {
var $name = 'Posts';
function index() {
$ctx = $this->ctx;
$ctx->__stash['vars']['page_title']
= 'Blog posts';
$ctx->stash('Post',
$this->Post->find('all'));
}
function view( $id = null ) {
$ctx = $this->ctx;
$this->Post->id = $id;
$ctx->stash('Post', $this->Post->read());
}
}
?>
DynamicMTML(Controller)
<!-- File: /app/views/posts/index.ctp -->
<h1><mt:var name="page_title" escape="html"></h1>
<mt:cake:loop model="Post">
<mt:if name="__first__">
<table>
<tr>
<th>Id</th><th>Title</th><th>Created</th>
</tr>
</mt:if>
<tr>
<td><mt:var name="id"></td>
<td>
<a href=".view/<mt:var name="id">">
<mt:var name="title" escape="html"></a>
</td>
<td><mt:var name="created"></td>
</tr>
<mt:if name="__last__">
</table>
</mt:if>
</mt:cake:loop>
DynamicMTML(View)
まとめ
• MVCきれいに分けられるよ分業できるよ
• MT実はPHPで拡張できるよ便便利利だよ
• GPLライセンス版もあるよ
• アルファサードではPHP/Perlエンジニア募集中
• アルファサードではスマホアプリエンジニア募集中
Thank  you!

Weitere ähnliche Inhalte

Was ist angesagt?

脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_QueryHidekazu Ishikawa
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~leverages_event
 
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)Arata Fujimura
 
Perl logging
Perl loggingPerl logging
Perl loggingkeroyonn
 
俺のフックがこんなに簡単なわけがない。
俺のフックがこんなに簡単なわけがない。俺のフックがこんなに簡単なわけがない。
俺のフックがこんなに簡単なわけがない。Hishikawa Takuro
 
PHP基本的関数QUIZ
PHP基本的関数QUIZPHP基本的関数QUIZ
PHP基本的関数QUIZWataru Terada
 
Creators'night#12今井
Creators'night#12今井Creators'night#12今井
Creators'night#12今井Daisuke Imai
 
Jqm20120210
Jqm20120210Jqm20120210
Jqm20120210cmtomoda
 
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5Nishida Kansuke
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)Hiroaki KOBAYASHI
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるjamadam
 
画像を縮小するお話
画像を縮小するお話画像を縮小するお話
画像を縮小するお話technocat
 
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道20123時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012Yusuke Ando
 
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数Wataru Terada
 
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Tomohito Adachi
 
-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろう-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろうnico0927
 

Was ist angesagt? (19)

脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
 
Django boodoo
Django boodooDjango boodoo
Django boodoo
 
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
 
Perl logging
Perl loggingPerl logging
Perl logging
 
俺のフックがこんなに簡単なわけがない。
俺のフックがこんなに簡単なわけがない。俺のフックがこんなに簡単なわけがない。
俺のフックがこんなに簡単なわけがない。
 
swooleを試してみた
swooleを試してみたswooleを試してみた
swooleを試してみた
 
PHP基本的関数QUIZ
PHP基本的関数QUIZPHP基本的関数QUIZ
PHP基本的関数QUIZ
 
Try Jetpack
Try JetpackTry Jetpack
Try Jetpack
 
Creators'night#12今井
Creators'night#12今井Creators'night#12今井
Creators'night#12今井
 
Jqm20120210
Jqm20120210Jqm20120210
Jqm20120210
 
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
 
画像を縮小するお話
画像を縮小するお話画像を縮小するお話
画像を縮小するお話
 
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道20123時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
 
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数
 
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Webシステム脆弱性LT資料
Webシステム脆弱性LT資料
 
-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろう-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろう
 

Ähnlich wie MT meets PHP

【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方kwatch
 
Ext.Directについて
Ext.DirectについてExt.Directについて
Ext.DirectについてYuki Naotori
 
Launch a Web Service in 3 Days Using WordPress
Launch a Web Service in 3 Days Using WordPressLaunch a Web Service in 3 Days Using WordPress
Launch a Web Service in 3 Days Using WordPressKite Koga
 
Cake php4designers
Cake php4designersCake php4designers
Cake php4designersSeiji Ogawa
 
ブログメディアにおけるData APIの活用について
ブログメディアにおけるData APIの活用についてブログメディアにおけるData APIの活用について
ブログメディアにおけるData APIの活用についてHatsuhito UENO
 
20090606 わんくま(がる)
20090606 わんくま(がる)20090606 わんくま(がる)
20090606 わんくま(がる)galluda
 
詳説ぺちぺち
詳説ぺちぺち詳説ぺちぺち
詳説ぺちぺちdo_aki
 
SQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなしSQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなしKazuki Minamitani
 
MySQLerの7つ道具
MySQLerの7つ道具MySQLerの7つ道具
MySQLerの7つ道具yoku0825
 
Apacheの展望とmod_perlの超絶技巧 #yapcasia
Apacheの展望とmod_perlの超絶技巧 #yapcasiaApacheの展望とmod_perlの超絶技巧 #yapcasia
Apacheの展望とmod_perlの超絶技巧 #yapcasia鉄次 尾形
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!Shinpei Ohtani
 
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみようKentaro Matsui
 
XMPP仕様簡単解説
XMPP仕様簡単解説XMPP仕様簡単解説
XMPP仕様簡単解説Keiichi Daiba
 
2005 09 17_osc2005_xoops
2005 09 17_osc2005_xoops2005 09 17_osc2005_xoops
2005 09 17_osc2005_xoopsTom Hayakawa
 
拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化Kazunori Jo
 
スマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザイン
スマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザインスマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザイン
スマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザインinvogue
 
Zend Frameworkで始める携帯サイト
Zend Frameworkで始める携帯サイトZend Frameworkで始める携帯サイト
Zend Frameworkで始める携帯サイト清水樹
 

Ähnlich wie MT meets PHP (20)

【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
 
Ext.Directについて
Ext.DirectについてExt.Directについて
Ext.Directについて
 
Launch a Web Service in 3 Days Using WordPress
Launch a Web Service in 3 Days Using WordPressLaunch a Web Service in 3 Days Using WordPress
Launch a Web Service in 3 Days Using WordPress
 
Cake php4designers
Cake php4designersCake php4designers
Cake php4designers
 
ブログメディアにおけるData APIの活用について
ブログメディアにおけるData APIの活用についてブログメディアにおけるData APIの活用について
ブログメディアにおけるData APIの活用について
 
20090606 わんくま(がる)
20090606 わんくま(がる)20090606 わんくま(がる)
20090606 わんくま(がる)
 
詳説ぺちぺち
詳説ぺちぺち詳説ぺちぺち
詳説ぺちぺち
 
Using Dancer
Using DancerUsing Dancer
Using Dancer
 
SQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなしSQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなし
 
URLで遊ぼう
URLで遊ぼうURLで遊ぼう
URLで遊ぼう
 
MySQLerの7つ道具
MySQLerの7つ道具MySQLerの7つ道具
MySQLerの7つ道具
 
Keynote In Japanese
Keynote In JapaneseKeynote In Japanese
Keynote In Japanese
 
Apacheの展望とmod_perlの超絶技巧 #yapcasia
Apacheの展望とmod_perlの超絶技巧 #yapcasiaApacheの展望とmod_perlの超絶技巧 #yapcasia
Apacheの展望とmod_perlの超絶技巧 #yapcasia
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!
 
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
 
XMPP仕様簡単解説
XMPP仕様簡単解説XMPP仕様簡単解説
XMPP仕様簡単解説
 
2005 09 17_osc2005_xoops
2005 09 17_osc2005_xoops2005 09 17_osc2005_xoops
2005 09 17_osc2005_xoops
 
拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化
 
スマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザイン
スマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザインスマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザイン
スマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザイン
 
Zend Frameworkで始める携帯サイト
Zend Frameworkで始める携帯サイトZend Frameworkで始める携帯サイト
Zend Frameworkで始める携帯サイト
 

Mehr von 純生 野田

アクセシビリティで企業価値を高める、小さな会社の戦い方
アクセシビリティで企業価値を高める、小さな会社の戦い方アクセシビリティで企業価値を高める、小さな会社の戦い方
アクセシビリティで企業価値を高める、小さな会社の戦い方純生 野田
 
次世代版 PowerCMS 開発プロジェクトのご紹介
次世代版 PowerCMS 開発プロジェクトのご紹介次世代版 PowerCMS 開発プロジェクトのご紹介
次世代版 PowerCMS 開発プロジェクトのご紹介純生 野田
 
アルファサード株式会社はなぜ アクセシビリティに取り組むのか
アルファサード株式会社はなぜ アクセシビリティに取り組むのかアルファサード株式会社はなぜ アクセシビリティに取り組むのか
アルファサード株式会社はなぜ アクセシビリティに取り組むのか純生 野田
 
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用純生 野田
 
オーサリングツールとしてのCMSとWebアクセシビリティ
オーサリングツールとしてのCMSとWebアクセシビリティオーサリングツールとしてのCMSとWebアクセシビリティ
オーサリングツールとしてのCMSとWebアクセシビリティ純生 野田
 
Color Testerはどうやって文字の色を拾っているのか?
Color Testerはどうやって文字の色を拾っているのか?Color Testerはどうやって文字の色を拾っているのか?
Color Testerはどうやって文字の色を拾っているのか?純生 野田
 
ウェブアクセシビリティチェックツール開発者の頭ん中
ウェブアクセシビリティチェックツール開発者の頭ん中ウェブアクセシビリティチェックツール開発者の頭ん中
ウェブアクセシビリティチェックツール開発者の頭ん中純生 野田
 
PowerCMS 8341 のご紹介
PowerCMS 8341 のご紹介PowerCMS 8341 のご紹介
PowerCMS 8341 のご紹介純生 野田
 
Something Different for the Best Web Solution!
Something Different for the Best Web Solution!Something Different for the Best Web Solution!
Something Different for the Best Web Solution!純生 野田
 
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化純生 野田
 
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティングMTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング純生 野田
 
Mt seminar hiroshima_public
Mt seminar hiroshima_publicMt seminar hiroshima_public
Mt seminar hiroshima_public純生 野田
 
Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)
Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)
Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)純生 野田
 

Mehr von 純生 野田 (20)

アクセシビリティで企業価値を高める、小さな会社の戦い方
アクセシビリティで企業価値を高める、小さな会社の戦い方アクセシビリティで企業価値を高める、小さな会社の戦い方
アクセシビリティで企業価値を高める、小さな会社の戦い方
 
PowerCMS X
PowerCMS XPowerCMS X
PowerCMS X
 
次世代版 PowerCMS 開発プロジェクトのご紹介
次世代版 PowerCMS 開発プロジェクトのご紹介次世代版 PowerCMS 開発プロジェクトのご紹介
次世代版 PowerCMS 開発プロジェクトのご紹介
 
PowerCMS Conference
PowerCMS ConferencePowerCMS Conference
PowerCMS Conference
 
PowerCMS X
PowerCMS XPowerCMS X
PowerCMS X
 
アルファサード株式会社はなぜ アクセシビリティに取り組むのか
アルファサード株式会社はなぜ アクセシビリティに取り組むのかアルファサード株式会社はなぜ アクセシビリティに取り組むのか
アルファサード株式会社はなぜ アクセシビリティに取り組むのか
 
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
 
About PowerCMS4.3
About PowerCMS4.3About PowerCMS4.3
About PowerCMS4.3
 
オーサリングツールとしてのCMSとWebアクセシビリティ
オーサリングツールとしてのCMSとWebアクセシビリティオーサリングツールとしてのCMSとWebアクセシビリティ
オーサリングツールとしてのCMSとWebアクセシビリティ
 
Color Testerはどうやって文字の色を拾っているのか?
Color Testerはどうやって文字の色を拾っているのか?Color Testerはどうやって文字の色を拾っているのか?
Color Testerはどうやって文字の色を拾っているのか?
 
The Next PowerCMS
The Next PowerCMSThe Next PowerCMS
The Next PowerCMS
 
The Next PowerCMS
The Next PowerCMSThe Next PowerCMS
The Next PowerCMS
 
ウェブアクセシビリティチェックツール開発者の頭ん中
ウェブアクセシビリティチェックツール開発者の頭ん中ウェブアクセシビリティチェックツール開発者の頭ん中
ウェブアクセシビリティチェックツール開発者の頭ん中
 
PowerCMS 8341 のご紹介
PowerCMS 8341 のご紹介PowerCMS 8341 のご紹介
PowerCMS 8341 のご紹介
 
Something Different for the Best Web Solution!
Something Different for the Best Web Solution!Something Different for the Best Web Solution!
Something Different for the Best Web Solution!
 
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
 
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティングMTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
 
Mt seminar hiroshima_public
Mt seminar hiroshima_publicMt seminar hiroshima_public
Mt seminar hiroshima_public
 
Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)
Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)
Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)
 
Power cms3+azure
Power cms3+azurePower cms3+azure
Power cms3+azure
 

Kürzlich hochgeladen

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介: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論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 

Kürzlich hochgeladen (10)

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介: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論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 

MT meets PHP