$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
omoon.org の裏側 〜FuelPHP の task 活用例〜
Search
omoon
October 12, 2013
Technology
0
180
omoon.org の裏側 〜FuelPHP の task 活用例〜
2013/10/12 の FuelPHP&CodeIgniter ユーザの集い LT 資料です。
omoon
October 12, 2013
Tweet
Share
More Decks by omoon
See All by omoon
My First Adobe XD Plugin
omoon
0
160
LaravelでTDDを体験しよう #phpcon2018
omoon
1
4.3k
Laravel でアプリケーションを開発し Heroku で公開するまでの一部始終 #laravel_osaka
omoon
3
1.4k
Why don't you try "Query Builder"
omoon
1
2.9k
素晴らしき Carbon の世界 〜あなたも今日から日時マスター〜
omoon
4
14k
Dive into the Cloud with our buddy, lovely PHP!
omoon
0
1.1k
FuelPHP をさわってみて #phpkansai
omoon
2
220
Other Decks in Technology
See All in Technology
Sansanが実践する Platform EngineeringとSREの協創
sansantech
PRO
2
840
生成AI活用の型ハンズオン〜顧客課題起点で設計する7つのステップ
yushin_n
0
140
品質のための共通認識
kakehashi
PRO
3
250
Lessons from Migrating to OpenSearch: Shard Design, Log Ingestion, and UI Decisions
sansantech
PRO
1
120
Karate+Database RiderによるAPI自動テスト導入工数をCline+GitLab MCPを使って2割削減を目指す! / 20251206 Kazuki Takahashi
shift_evolve
PRO
1
730
Debugging Edge AI on Zephyr and Lessons Learned
iotengineer22
0
180
日本Rubyの会の構造と実行とあと何か / hokurikurk01
takahashim
4
1.1k
Snowflakeでデータ基盤を もう一度作り直すなら / rebuilding-data-platform-with-snowflake
pei0804
5
1.5k
20251209_WAKECareer_生成AIを活用した設計・開発プロセス
syobochim
7
1.5k
エンジニアリングをやめたくないので問い続ける
estie
2
1.2k
.NET 10の概要
tomokusaba
0
100
非CUDAの悲哀 〜Claude Code と挑んだ image to 3D “Hunyuan3D”を EVO-X2(Ryzen AI Max+395)で動作させるチャレンジ〜
hawkymisc
2
180
Featured
See All Featured
BBQ
matthewcrist
89
9.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Fireside Chat
paigeccino
41
3.7k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Writing Fast Ruby
sferik
630
62k
Being A Developer After 40
akosma
91
590k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
For a Future-Friendly Web
brad_frost
180
10k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Transcript
PNPPOPSHͷཪଆ 'VFM1)1ͷUBTL׆༻ྫ 'VFM1)1ˍ$PEF*HOJUFSϢʔβͷू͍ʢ'VFM1)1౦ژษڧձɺ$PEF*HOJUFSUBMLʣ 0DUPCFS 4PUBSP0.63" !PNPPO
"CPVU.F
"CPVU.F w4PUBSP0.63"
"CPVU.F w4PUBSP0.63" wେࡕ͔Βདྷ·ͨ͠
"CPVU.F w4PUBSP0.63" wେࡕ͔Βདྷ·ͨ͠ w,BOTBJ1)16TFST(SPVQ4UB⒎
"CPVU.F w4PUBSP0.63" wେࡕ͔Βདྷ·ͨ͠ w,BOTBJ1)16TFST(SPVQ4UB⒎ w1)1ྺ΄Ͳʢ࠷ۙ'VFM1)1ʣ
"CPVU.F w4PUBSP0.63" wେࡕ͔Βདྷ·ͨ͠ w,BOTBJ1)16TFST(SPVQ4UB⒎ w1)1ྺ΄Ͳʢ࠷ۙ'VFM1)1ʣ wPNPPOPSH
"CPVU.F w4PUBSP0.63" wେࡕ͔Βདྷ·ͨ͠ w,BOTBJ1)16TFST(SPVQ4UB⒎ w1)1ྺ΄Ͳʢ࠷ۙ'VFM1)1ʣ wPNPPOPSH w!PNPPO
"CPVU.F w4PUBSP0.63" wେࡕ͔Βདྷ·ͨ͠ w,BOTBJ1)16TFST(SPVQ4UB⒎ w1)1ྺ΄Ͳʢ࠷ۙ'VFM1)1ʣ wPNPPOPSH w!PNPPO
ΊΜͲ͕͘͞Γ
None
None
"CPVU.F
"CPVU.F
ϑϨʔϜϫʔΫΛͬͨ αϯϓϧΞϓϦέʔγϣϯ
1 <?php 2 require __DIR__ . '/../vendor/autoload.php'; 3 4
$app = new Silex\Application(); 5 6 $app-‐>register(new Silex\Provider\TwigServiceProvider(), array( 7 'twig.path' => __DIR__.'/../views', 8 )); 9 10 // σʔλϕʔεଓใͷಡࠐ 11 $env = getenv('APP_ENV') ?: 'development'; 12 $config = require __DIR__ . "/../config/$env.php"; 13 $app-‐>register(new Silex\Provider\DoctrineServiceProvider(), array( 14 'db.options' => $config['db'], 15 )); 16 17 // τοϓը໘ 18 $app-‐>get('/', function(Silex\Application $app) { 19 $posts = $app['db']-‐>fetchAll(' 20 SELECT name, message, unix_timestamp(created) as created 21 FROM posts ORDER BY created DESC LIMIT 5 22 '); 23 return $app['twig']-‐>render('index.twig', array( 24 'posts' => $posts, 25 )); 26 }); 27 28 // ߘॲཧ 29 $app-‐>post('/speak', function(Silex\Application $app) { 30 $name = $app['request']-‐>get('name'); 31 $message = $app['request']-‐>get('message'); 32 if ($name && $message) { 33 $app['db']-‐>insert('posts', array('name' => $name, 'message' => $message)); 34 } 35 return $app-‐>redirect('/'); 36 }); 37 38 $app-‐>run();
1 <?php 2 require __DIR__ . '/../vendor/autoload.php'; 3 4
$app = new Silex\Application(); 5 6 $app-‐>register(new Silex\Provider\TwigServiceProvider(), array( 7 'twig.path' => __DIR__.'/../views', 8 )); 9 10 // σʔλϕʔεଓใͷಡࠐ 11 $env = getenv('APP_ENV') ?: 'development'; 12 $config = require __DIR__ . "/../config/$env.php"; 13 $app-‐>register(new Silex\Provider\DoctrineServiceProvider(), array( 14 'db.options' => $config['db'], 15 )); 16 17 // τοϓը໘ 18 $app-‐>get('/', function(Silex\Application $app) { 19 $posts = $app['db']-‐>fetchAll(' 20 SELECT name, message, unix_timestamp(created) as created 21 FROM posts ORDER BY created DESC LIMIT 5 22 '); 23 return $app['twig']-‐>render('index.twig', array( 24 'posts' => $posts, 25 )); 26 }); 27 28 // ߘॲཧ 29 $app-‐>post('/speak', function(Silex\Application $app) { 30 $name = $app['request']-‐>get('name'); 31 $message = $app['request']-‐>get('message'); 32 if ($name && $message) { 33 $app['db']-‐>insert('posts', array('name' => $name, 'message' => $message)); 34 } 35 return $app-‐>redirect('/'); 36 }); 37 38 $app-‐>run();
1 <?php 2 require __DIR__ . '/../vendor/autoload.php'; 3 4
$app = new Silex\Application(); 5 6 $app-‐>register(new Silex\Provider\TwigServiceProvider(), array( 7 'twig.path' => __DIR__.'/../views', 8 )); 9 10 // σʔλϕʔεଓใͷಡࠐ 11 $env = getenv('APP_ENV') ?: 'development'; 12 $config = require __DIR__ . "/../config/$env.php"; 13 $app-‐>register(new Silex\Provider\DoctrineServiceProvider(), array( 14 'db.options' => $config['db'], 15 )); 16 17 // τοϓը໘ 18 $app-‐>get('/', function(Silex\Application $app) { 19 $posts = $app['db']-‐>fetchAll(' 20 SELECT name, message, unix_timestamp(created) as created 21 FROM posts ORDER BY created DESC LIMIT 5 22 '); 23 return $app['twig']-‐>render('index.twig', array( 24 'posts' => $posts, 25 )); 26 }); 27 28 // ߘॲཧ 29 $app-‐>post('/speak', function(Silex\Application $app) { 30 $name = $app['request']-‐>get('name'); 31 $message = $app['request']-‐>get('message'); 32 if ($name && $message) { 33 $app['db']-‐>insert('posts', array('name' => $name, 'message' => $message)); 34 } 35 return $app-‐>redirect('/'); 36 }); 37 38 $app-‐>run(); ͳΜ͔͢Έ·ͤΜ
'VFM1)1ͱͷͳΕͦΊ
None
None
None
None
None
͓͖Ͱ͢Ͷ
ଞʹ
None
࠷ۙ
None
None
None
None
None
+40/ͰΓͱΓ
None
͋Γ͕ͱ͏
ͯ͞
PNPPOPSH
None
PNPPOPSH
PNPPOPSH w͝Ζελʔτ
PNPPOPSH w͝Ζελʔτ wࣸਅͱҰߦίϝϯτ͚ͩ
PNPPOPSH w͝Ζελʔτ wࣸਅͱҰߦίϝϯτ͚ͩ w࠷ॳ)5.- '51Ξοϓϩʔυ
ΊΜͲ͕͘͞Γ
None
None
None
؆қԽͷྺ࢙
؆қԽͷྺ࢙ w'MJDLS
؆қԽͷྺ࢙ w'MJDLS w1)1 .Z42-
؆қԽͷྺ࢙ w'MJDLS w1)1 .Z42- w'MJDLS &ZF'J
؆қԽͷྺ࢙ w'MJDLS w1)1 .Z42- w'MJDLS &ZF'J wಠࣗDSPOKPC
None
ΦϨΦϨͳͷͰ͠ͳ͍
None
5BTLTBSFDMBTTFTUIBUDBOCFSVOUISPVHIUIFDPNNBOEMJOFPS TFUVQBTBDSPOKPC5IFZBSFHFOFSBMMZVTFEGPSCBDLHSPVOE QSPDFTTFT UJNFEUBTLTBOENBJOUFOBODFUBTLT5BTLTDBODBMMT NPEFMTBOEPUIFSDMBTTFTKVTUMJLFDPOUSPMMFST
5BTLT
5BTLT wίϚϯυϥΠϯ͔ΒݺΔ
5BTLT wίϚϯυϥΠϯ͔ΒݺΔ wDSPOKPCͱͯ͑͠Δ
5BTLT wίϚϯυϥΠϯ͔ΒݺΔ wDSPOKPCͱͯ͑͠Δ wόοΫάϥϯυॲཧͱ͔
5BTLT wίϚϯυϥΠϯ͔ΒݺΔ wDSPOKPCͱͯ͑͠Δ wόοΫάϥϯυॲཧͱ͔ wఆظతͳॲཧͱ͔
5BTLT wίϚϯυϥΠϯ͔ΒݺΔ wDSPOKPCͱͯ͑͠Δ wόοΫάϥϯυॲཧͱ͔ wఆظతͳॲཧͱ͔ wϝϯςφϯεʹ
5BTLT wίϚϯυϥΠϯ͔ΒݺΔ wDSPOKPCͱͯ͑͠Δ wόοΫάϥϯυॲཧͱ͔ wఆظతͳॲཧͱ͔ wϝϯςφϯεʹ wϞσϧΫϥεΛίϯτϩʔϥ͔ΒݺͿ࣌Έ͍ͨʹݺΔ
͍͚Δ͔
ͬͯΈͨ
None
▾ fuel/ ▾ app/ ▸ cache/
▾ classes/ ▸ controller/ ▸ model/ ▸ twig/ ▸ view/ flickr.php ▾ config/ ▸ development/ ▸ production/ ▸ test/ config.php db.php parser.php rest.php routes.php ▸ lang/ ▸ less/ ▸ logs/ ▸ migrations/ ▸ modules/ ▾ tasks/ flickr.php robots.php ▸ tests/ ▸ tmp/ ▾ vendor/ ▸ Goutte/ ▾ phpFlickr/ auth.php example.php getToken.php phpFlickr.php README.txt ▸ Twig/ .gitkeep ֎෦ϥΠϒϥϦ
▾ fuel/ ▾ app/ ▸ cache/
▾ classes/ ▸ controller/ ▸ model/ ▸ twig/ ▸ view/ flickr.php ▾ config/ ▸ development/ ▸ production/ ▸ test/ config.php db.php parser.php rest.php routes.php ▸ lang/ ▸ less/ ▸ logs/ ▸ migrations/ ▸ modules/ ▾ tasks/ flickr.php robots.php ▸ tests/ ▸ tmp/ ▾ vendor/ ▸ Goutte/ ▾ phpFlickr/ auth.php example.php getToken.php phpFlickr.php README.txt ▸ Twig/ .gitkeep Ϋϥε
require_once APPPATH . 'vendor' . DS . 'phpFlickr' . DS
. 'phpFlickr.php'; class Flickr { protected static $_instance = null; private function __construct() { $this-‐>api = new phpFlickr( 'xxxxxxxxxxxxxxxxxxxx' //Config::get('app.flickr_api_key') ); } public static function forge() { if (empty(self::$_instance)) { static::$_instance = new static(); } return static::$_instance-‐>api; } }
▾ fuel/ ▾ app/ ▸ cache/
▾ classes/ ▸ controller/ ▸ model/ ▸ twig/ ▸ view/ flickr.php ▾ config/ ▸ development/ ▸ production/ ▸ test/ config.php db.php parser.php rest.php routes.php ▸ lang/ ▸ less/ ▸ logs/ ▸ migrations/ ▸ modules/ ▾ tasks/ flickr.php robots.php ▸ tests/ ▸ tmp/ ▾ vendor/ ▸ Goutte/ ▾ phpFlickr/ auth.php example.php getToken.php phpFlickr.php README.txt ▸ Twig/ .gitkeep λεΫ
namespace Fuel\Tasks; class Flickr { public static
function run($limit = 4) { $response = \Flickr::forge()-‐>photos_search( array( 'user_id' => '94387617@N00', 'per_page' => $limit, 'tags' => 'asgt,cover', 'tag_mode' => 'all', 'sort' => 'date-‐taken-‐desc' ) ); foreach ($response['photo'] as $photo) { $r = \Flickr::forge()-‐>photos_getInfo($photo['id']); $e = \Flickr::forge()-‐>photos_getExif($photo['id']); //print_r($e['camera']); if (null === \Model_Coverphoto::find_by('flickr_id', $r['photo']['id'])) { $r['photo']['dates']['taken']; $coverphoto = \Model_Coverphoto::forge(); $coverphoto-‐>flickr_id = $r['photo']['id']; $coverphoto-‐>title = $r['photo']['description']; $coverphoto-‐>taken_at = $r['photo']['dates']['taken']; $coverphoto-‐>camera = $e['camera']; $coverphoto-‐>data = json_encode($r['photo']); $coverphoto-‐>save(); } } } }
# crontab -‐e * * * * * cd /var/www/omoon.org;
/usr/bin/php oil refine flickr:run
None
PNPPOPSH
λά͚͚ͩͰߋ৽Մೳ
J1IPOFͷqJDLSΞϓϦͰ
ࠓޙͷల
None
None
UBTLΛੵۃతʹ͍·͠ΐ͏
͋Γ͕ͱ͏͍͟͝·ͨ͠