SlideShare uma empresa Scribd logo
1 de 76
Baixar para ler offline
是
2016/09/22
主 'Shengyou'Fan
PHP' 'Day'#28
Composer 是PHP Day #28
好
https://youtu.be/1cABv5Ou0oE
http://www.slideshare.net/shengyou/
composerJfromscratch
https://github.com/laravelJdojo/
20160922JphpJtheJdayJdemo
Composer 是PHP Day #28
{'
''''"name":'"shengyou/self>introduction",'
''''"description":'" 還增",'
''''"authors":'['
''''''''{'
''''''''''''"name":'"主 '(Shengyou'Fan)",'
''''''''''''"email":'"shengyoufan@gmail.com",'
''''''''''''"homepage":'"http://www.shengyoufan.com",'
''''''''''''"company":'" 覺 '(The'Qwan)",'
''''''''''''"role":'[" 兩 ",'"Laravel' ⼀一以"]'
''''''''}'
''''],'
''''"support":'{'
''''''''"facebook":'"http://fb.me/shengyoufan",'
''''''''"twitter":'"@shengyou"'
''''}'
}
Composer 是PHP Day #28
只
•
• Composer
• Composer
• Composer 啊
• 不
•
很
Composer 是PHP Day #28
PHP
三只
HTTP
⾝身
要成會
index.php
posts.php
inc/
libs/
出 ⼼心 再
多
A
B
classes/
bootstrap.php
那 URL
php 再
Composer 是PHP Day #28
include 實
//' 'lib1' 'Class'
include'__DIR__'.'"/libs/lib1/Class.php";'
//'lib1' 那 'lib2' 'lib3'
include'__DIR__'.'"/libs/lib2/Class.php";'
include'__DIR__'.'"/libs/lib3/Class.php";'
//'lib2' 那 'lib4'
include'__DIR__'.'"/libs/lib4/Class.php";'
//'lib3' 那 'lib999'
include'__DIR__'.'"/libs/lib999/Class.php";
Composer 是PHP Day #28
多 new 多 ⾯面
//' 'Class'
$class'='new'MyClass();'
//' 'Class' 然'
PHP'Fatal'error:''Class''MyClass''not'found'
in'scripts.php'on'line'x
Composer 是PHP Day #28
那 都
libs/
A
B
C
E E
話情
D D
道
A
v.2v.1
Composer 是PHP Day #28
Composer
• 點
• 嗎 那都
• 第
• 於最
•
Composer
因 ⼒力 情
Composer 是PHP Day #28
composer.phar
再
+ +
git
果
php 5.3.2
(openssl extension)
Composer 是PHP Day #28
*nix 發
php'>r'"copy('https://getcomposer.org/installer',''composer>setup.php');"'
php'>r'"..."'
php'composer>setup.php'
php'>r'"unlink('composer>setup.php');"
installer' 不 發 太 'Composer' 樣
能 樣 網 'composer.phar'
會
mv'composer.phar'/usr/local/bin/composer
'composer' 不 想學
https://getcomposer.org/download/'
Composer 是PHP Day #28
Windows 發
• 中 Composer 起 for Windows
• 那 起 看 能同看
Composer 那 PHP網 起 php.exe
道網 PHP 道 起 ⼼心
https://getcomposer.org/Composer>Setup.exe
Composer 是PHP Day #28
wagon 已
• wagon Laravel 享 PHP/Laravel 發
網 去 Cmder因Composer因git
AMP網 wagon網家 wagon Cmder
已 Composer
P.S'wagon' 去 'cmder'發 中 'Composer'發
不 網 今 不 ⼼心
http://www.laravel>dojo.com/opensource/wagon
Laravel wagon與
Composer 是PHP Day #28
再
• Composer PHAR 再 (PHP archive)網
感 PHP Runtime 有 ( )
• composer.phar 道 成會 網
想學 與
$'php'composer.phar'[command]
Composer 是PHP Day #28
• 想學著增 網 想學與
$'[php]'composer[.phar]'[>>version]
Composer 是PHP Day #28
Composer
• 上 Composer網 bug-
fix
$'[php]'composer[.phar]'self>update
Composer 是PHP Day #28
PHP
• HTTP PHP CLI PHP
個 CLI PHP 個 CLI PHP 定
$'php'>v $'php'>r'"echo'PHP_BINARY;"
Composer 是PHP Day #28
次 extension
• HTTP CLI php.ini
個 CLI PHP
php.ini ⼼心
$'php'>>ini
個 CLI extension
$'php'>m
Composer 是PHP Day #28
XDebug 今下
• Composer XDebug
alias 過 XDebug
alias'composer='php'>n'/usr/local/bin/composer'
⽣生 網 都 做 ^.<
Composer
Composer 啊 ⼼心
Composer 是PHP Day #28
Composer
• 為 成會
• Composer
$'cd'~/Code/{MyProject}
$'composer'init
(那 給 'composer.json)
Composer 是PHP Day #28
{'
''''"name":'"{vendor/package}",'
''''"type":'"project",'
''''"license":'"proprietary",'
''''"authors":'['
''''''''{'
''''''''''''"name":'"{author'name}",'
''''''''''''"email":'"{author'email}"'
''''''''}'
''''],'
''''"minimum>stability":'"stable",'
''''"require":'{'
''''''''"{vendor/package}":'"{version}"'
''''},'
''''"autoload":'{}'
}
Composer ⼼心 再
Composer 是PHP Day #28
時⼈人
• PHP 都 與Packagist.org
• PHP ⽤用 網 ⾃自
說 因 那
/ 說
P.S Composer Packagist
Composer 是PHP Day #28
$'composer'require'{vendor}/{project}'
$'composer'install
Composer 是PHP Day #28
$'composer'update
Composer 是PHP Day #28
⼼心
<?php'
require'__DIR__.'/vendor/autoload.php';
多 'require
Composer 是PHP Day #28
多 網 …
Composer 是PHP Day #28
新
X Y Z
Major
Breaks
Minor
Features
Patch
Fixes
. .
Composer 是PHP Day #28
0.1.0 0.2.0 1.0.1 1.1.0
0.1.1 1.0.0 1.0.2 2.0.0
'
享
享 '
'
'
享
'
'
'
'
Composer 是PHP Day #28
Version Constraints
Exact Match 1.2.3 1.2.3
Wildcard Range 1.0.* >=1.0 <1.1
Hyphen Range 1.0 - 2.0 >=1.0.0 <2.1
Tilde Operator ~1.2 >=1.2 <2.0
Caret Operator
^1.2.3
^0.3
>=1.2.3 <2.0
>=0.3.0 <0.4.0
Stability Flags
@stable
@dev
dev > alpha > beta > RC > stable
⼼心種 stable網 @ 想
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^與 ^嗎 Composer
網 上 中 Copmposer
Composer 是PHP Day #28
所多 得
• 網 composer'require
• 樣 composer.json 網
composer'validate
• 情這 網太 ⽂文 dev-master 的
* ( 全 在 裡 Packagist )
• ⼿手 把 SemVer ⾏行 ( 享 很 把
)
• 樣 所多 樂 網 中
Packagist Semver Checker 多
Composer 是PHP Day #28
json 再 lock 再!?
年 commit VCS
Composer 是PHP Day #28
• composer.json
- 那 ⼼心
• composer.lock
- 知
• vendor
- 起
Composer 是PHP Day #28
(lock'再 )
After'installing'the'dependencies,'Composer'writes'
the'list'of'the'exact'versions'it'installed'into'a'
composer.lock'file.
This'locks'the'project'to'those'specific'versions.
Composer 是PHP Day #28
VCS
update install
jsonV.S lock
Composer 是PHP Day #28
/vendor'
/node_modules'
composer.phar
.gitignore
(Jordi' '
lock'再 果 )
Composer 是PHP Day #28
install 的 update
想學 歡 網 …
Composer 是PHP Day #28
1. 'composer.lock' 太最 '
2. 最 網 'composer'update' '
3. 最 網那 'lock' 'package'
$'[php]'composer[.phar]'install
Composer 是PHP Day #28
1. 'composer.json'再'
2. ⼼心 網作 ''
3. 作 'packages'
4. 'composer.lock
$'[php]'composer[.phar]'update
Composer 是PHP Day #28
• $'composer'install
- (git'clone) 網
那
• $'composer'update
- composer.json
-
( composer.lock 再)
( 那快沒後第 )
不
多 起
Composer 是PHP Day #28
能⾏行
• 能⾏行 與
- 錯 (recca0120/laravel>tracy)
- 發 (vlucas/phpdotenv)
- 說對 都 (robmorgan/phinx)
- 可說對 (fzaninotto/faker)
- (nesbot/carbon)
Composer 是PHP Day #28
錯
$'composer'require'recca0120/laravel>tracy
• 起 給
• 起 多 等如 網 全 ⽅方 好
• print_r()因var_dump() 發 ⼦子
• 說對 sql 新 情
Composer 是PHP Day #28
use'Recca0120LaravelTracyTracy;'
Tracy::instance();'
//'sql'log'helper'
function'sql($sql)'{'
' $tracy'='Tracy::instance();'
' $databasePanel'='$tracy>>getPanel('database');'
' $databasePanel>>logQuery($sql);'
}
Composer 是PHP Day #28
發
$'composer'require'vlucas/phpdotenv
• 說 多 起
• 都 不 網 說
都 都
• 起 網 ⼼心 說
Composer 是PHP Day #28
//'bootstrap.php'
use'DotenvDotenv;'
$dotenv'='new'Dotenv(__DIR__);'
$dotenv>>load();'
include'__DIR__.'/inc/database.php';'
//'inc/database.php'
define('DB_HOST','getenv('DB_HOST'));'
define('DB_PORT','getenv('DB_PORT'));'
//'...
Composer 是PHP Day #28
說對 都
$'composer'require'robmorgan/phinx
• 起 都 網 說對
• 網 說對
• 看 說對 本
• 說對 也也
Composer 是PHP Day #28
//'init'phinx'
$'vendor/bin/phinx'init'.'
//'edit'phinx.yml'
environments:'
''''development:'
''''''''adapter:'mysql'
''''''''host:'127.0.0.1'
''''''''//'...'
//'create'folders'
$'mkdir'>p'db/migrations'db/seeds
Composer 是PHP Day #28
//'create'migration'class'
$'vendor/bin/phinx'create'CreatePostsTable'
//'write'migration'script'
$table'='$this>>table('posts');'
$table>>addColumn('title',''string')'
' >>addColumn('content',''text')'
' >>addColumn('created_at',''timestamp')'
' >>addColumn('updated_at',''timestamp')'
' >>create();'
//'run'migrate'
$'vendor/bin/phinx'migrate
Composer 是PHP Day #28
//'create'seeder'class'
$'vendor/bin/phinx'seed:create'PostSeeder'
//'truncate'table'first'
$this>>execute('TRUNCATE'TABLE'posts');'
//'generate'seeding'data'
$data'='[...];'
$posts'='$this>>table('posts');'
$posts>>insert($data)'
' >>save();'
//'run'seeding'
$'vendor/bin/phinx'seed:run
Composer 是PHP Day #28
可說對
$'composer'require'fzaninotto/faker
• 多 說對 起 網每 說對
aaa因xxx因asdf 我 說對
• 剛 因 無 說對
• 網 可 說對
Composer 是PHP Day #28
use'FakerFactory'as'Faker;'
//'init'faker'
$faker'='Faker::create('zh_TW');'
//'generate'seeding'data'
$data[]'='['
' 'title''''=>'$faker>>realText(10),'
' 'content''=>'$faker>>realText(500),'
];
Composer 是PHP Day #28
$'composer'require'nesbot/carbon
• date() 不著 去
•
• 真真
• 新
Composer 是PHP Day #28
use'CarbonCarbon;'
//'generate'seeding'data'
$data[]'='['
' 'title'''''''=>'$faker>>realText(10),'
' 'content'''''=>'$faker>>realText(500),'
' 'created_at''=>'Carbon::now()'
' ' ' ' ' ' >>subDays($total'>'$index),'
' 'updated_at''=>'Carbon::now()'
' ' ' ' ' ' >>subDays($total'>'$index)'
' ' ' ' ' ' >>addHours(rand(1,'24)),'
];
Composer 是PHP Day #28
{'
''''"autoload":'{'
''''''''"psr>4":'{...},'
''''''''"classmap":'[...],'
''''''''"files":'[...]'
''''},'
''''"autoload>dev":'{'
''''''''"psr>4":'{...},'
''''''''"classmap":'[...],'
''''''''"files":'[...]'
''''},'
}
$'vim'composer.json
Composer 是PHP Day #28
psr>4
{'
''''"autoload":'{'
''''''''"psr>4":'{'
''''''''''''"App":'"app/"'
''''''''}'
''''}'
}
$'composer'dump>autoload
Composer 是PHP Day #28
index.php
composer.lock
composer.json
vendor/
app/
autoload.php
MyAwesomeClass.php
<?php'
namespace'App;'
class'MyAwesomeClass'extends'SuperPower'
{'
''''//'...'
}
Composer 是PHP Day #28
index.php
composer.lock
composer.json
vendor/
app/
autoload.php
MyAwesomeClass.php
<?php'
require'__DIR__.'/vendor/autoload.php';'
use'AppMyAwesomeClass;'
$awesomeness'='new'MyAwesomeClass();'
?>
Composer 是PHP Day #28
classmap
{'
''''"autoload":'{'
''''''''"classmap":'['
'''''''''''"libs"'
'''''''']'
''''}'
}
$'composer'dump>autoload
Composer 是PHP Day #28
index.php
composer.lock
composer.json
vendor/
libs/
autoload.php
my>old>school>class.php
<?php'
class'my_old_school_class'
{'
''''//'...'
}
Composer 是PHP Day #28
index.php
composer.lock
composer.json
vendor/
libs/
autoload.php
my>old>school>class.php
<?php'
require'__DIR__.'/vendor/autoload.php';'
$oldschool'='new'my_old_school_class();'
?>
Composer 是PHP Day #28
files
{'
''''"autoload":'{'
''''''''"files":'{'
''''''''''''"helpers/my>functions.php"'
''''''''},'
''''}'
}
$'composer'dump>autoload
Composer 是PHP Day #28
index.php
composer.lock
composer.json
vendor/
helpers/
autoload.php
my>functions.php
<?php'
if'(!'function_exists('super_power'))'{'
''''function'super_power()'{'
''''''''//...'
''''}'
}
Composer 是PHP Day #28
index.php
composer.lock
composer.json
vendor/
helpers/
autoload.php
my>functions.php
<?php'
require'__DIR__.'/vendor/autoload.php';'
?>'
<!>>'...'>>>'
''''<h1><?='super_power()'?></h1>'
<!>>'...'>>>
Composer 是PHP Day #28
• 那 Composer
• Composer
• 不
•
• 很
Legacy 開
⽇日 和和
http://www.theqwan.com/contact
覺 JetBrains 麼才
更 回網 PhpStrom ⼀一
更 很
Laravel
http://www.laravel-dojo.com
事 PHP/Laravel ⼀一 更
Composer 是PHP Day #28
動 Composer 想到
PHP
Composer
https://goo.gl/OfJK3C
⽇日 email網
PHPConf Taiwan 2016
PHP 間 網 2016/10/29 現們
Composer 是PHP Day #28
Q & A
您 ⽇日就

Mais conteúdo relacionado

Mais procurados

Bash shell
Bash shellBash shell
Bash shell
xylas121
 
Zend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探るZend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探る
Yoshio Hanawa
 

Mais procurados (20)

使用 laravel 的前與後
使用 laravel 的前與後使用 laravel 的前與後
使用 laravel 的前與後
 
給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説
 
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
 
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみたOPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
 
使用 Controller
使用 Controller使用 Controller
使用 Controller
 
ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話
 
PHPとシグナル、その裏側
PHPとシグナル、その裏側PHPとシグナル、その裏側
PHPとシグナル、その裏側
 
OPcache の最適化器の今
OPcache の最適化器の今OPcache の最適化器の今
OPcache の最適化器の今
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법
 
Bash shell
Bash shellBash shell
Bash shell
 
kubernetes : From beginner to Advanced
kubernetes : From beginner to Advancedkubernetes : From beginner to Advanced
kubernetes : From beginner to Advanced
 
PHPの今とこれから2023
PHPの今とこれから2023PHPの今とこれから2023
PHPの今とこれから2023
 
PHPにおけるI/O多重化とyield
PHPにおけるI/O多重化とyieldPHPにおけるI/O多重化とyield
PHPにおけるI/O多重化とyield
 
とある診断員とSQLインジェクション
とある診断員とSQLインジェクションとある診断員とSQLインジェクション
とある診断員とSQLインジェクション
 
Zend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探るZend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探る
 
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
 
안정적인 서비스 운영 2014.03
안정적인 서비스 운영   2014.03안정적인 서비스 운영   2014.03
안정적인 서비스 운영 2014.03
 
Distributed Compiler Icecc
Distributed Compiler IceccDistributed Compiler Icecc
Distributed Compiler Icecc
 

Semelhante a Composer 從入門到實戰

OpenWebSchool - 02 - PHP Part I
OpenWebSchool - 02 - PHP Part IOpenWebSchool - 02 - PHP Part I
OpenWebSchool - 02 - PHP Part I
Hung-yu Lin
 
Php More
Php MorePhp More
Php More
henbo
 
Web安全解决方案V1.0
Web安全解决方案V1.0Web安全解决方案V1.0
Web安全解决方案V1.0
xuanliang
 
The ruby-way
The ruby-wayThe ruby-way
The ruby-way
fangdeng
 
Openshift by mtchang
Openshift by mtchangOpenshift by mtchang
Openshift by mtchang
Chang Mt
 
[20081118] How To Trace Code Like Source Insight Through Vim
[20081118] How To Trace Code Like Source Insight Through Vim[20081118] How To Trace Code Like Source Insight Through Vim
[20081118] How To Trace Code Like Source Insight Through Vim
Payton Chou
 

Semelhante a Composer 從入門到實戰 (20)

[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊
[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊
[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊
 
Vim hacks
Vim hacksVim hacks
Vim hacks
 
Python 于 webgame 的应用
Python 于 webgame 的应用Python 于 webgame 的应用
Python 于 webgame 的应用
 
OpenWebSchool - 02 - PHP Part I
OpenWebSchool - 02 - PHP Part IOpenWebSchool - 02 - PHP Part I
OpenWebSchool - 02 - PHP Part I
 
Php More
Php MorePhp More
Php More
 
用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式
 
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
 
Continuous Delivery Workshop with Ansible x GitLab CI (5th)
 Continuous Delivery Workshop with Ansible x GitLab CI (5th) Continuous Delivery Workshop with Ansible x GitLab CI (5th)
Continuous Delivery Workshop with Ansible x GitLab CI (5th)
 
Web安全解决方案V1.0
Web安全解决方案V1.0Web安全解决方案V1.0
Web安全解决方案V1.0
 
凌波微步:wagon + VS Code 的輕功哲學
凌波微步:wagon + VS Code 的輕功哲學凌波微步:wagon + VS Code 的輕功哲學
凌波微步:wagon + VS Code 的輕功哲學
 
Django step0
Django step0Django step0
Django step0
 
Ruby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for UbuntuRuby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for Ubuntu
 
The ruby-way
The ruby-wayThe ruby-way
The ruby-way
 
老司機帶你上手 PostgreSQL 關聯式資料庫系統
老司機帶你上手 PostgreSQL 關聯式資料庫系統老司機帶你上手 PostgreSQL 關聯式資料庫系統
老司機帶你上手 PostgreSQL 關聯式資料庫系統
 
Openshift by mtchang
Openshift by mtchangOpenshift by mtchang
Openshift by mtchang
 
COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境
COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境
COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境
 
[20081118] How To Trace Code Like Source Insight Through Vim
[20081118] How To Trace Code Like Source Insight Through Vim[20081118] How To Trace Code Like Source Insight Through Vim
[20081118] How To Trace Code Like Source Insight Through Vim
 
Php可调试团队开发环境配置
Php可调试团队开发环境配置Php可调试团队开发环境配置
Php可调试团队开发环境配置
 
Php可调试团队开发环境配置
Php可调试团队开发环境配置Php可调试团队开发环境配置
Php可调试团队开发环境配置
 
Ruby on Rails 開發環境建置 for Mac
Ruby on Rails 開發環境建置 for MacRuby on Rails 開發環境建置 for Mac
Ruby on Rails 開發環境建置 for Mac
 

Mais de Shengyou Fan

[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
Shengyou Fan
 

Mais de Shengyou Fan (20)

[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
 
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
 
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
 
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
 
How I make a podcast website using serverless technology in 2023
How I make a podcast website using serverless technology in 2023How I make a podcast website using serverless technology in 2023
How I make a podcast website using serverless technology in 2023
 
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
 
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
 
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
 
Using the Exposed SQL Framework to Manage Your Database
Using the Exposed SQL Framework to Manage Your DatabaseUsing the Exposed SQL Framework to Manage Your Database
Using the Exposed SQL Framework to Manage Your Database
 
[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園
 
初探 Kotlin Multiplatform
初探 Kotlin Multiplatform初探 Kotlin Multiplatform
初探 Kotlin Multiplatform
 
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
 
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
 
老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具
 
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
 
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
 
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
 
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
 
用 Kotlin 打造讀書會小幫手
用 Kotlin 打造讀書會小幫手用 Kotlin 打造讀書會小幫手
用 Kotlin 打造讀書會小幫手
 
Kotlin 讀書會第三梯次第一章
Kotlin 讀書會第三梯次第一章Kotlin 讀書會第三梯次第一章
Kotlin 讀書會第三梯次第一章
 

Composer 從入門到實戰