SlideShare a Scribd company logo
PHP & CSS & JavaScript
Coding Style
Bo-Yi Wu
2016.04.21
1
關於我
http://blog.wu-boy.com/
https://github.com/appleboy
https://www.facebook.com/appleboy46
2
為什麼要制定 Coding Style
3
Pull Request
Pull Request
Pull Request
Code Review
4
如果沒有制定程式語言 Style
• 一份程式碼看起來就像是好幾個人寫的
• Code Reviewer 非常辛苦
• 程式碼維護困難
• 新人加入團隊,上手時間增加
5
最終目的讓專案程式碼
看起來像是一個人寫的
6
聊聊後端 PHP Coding Style
7
PHP-FIG
8
請詳細閱讀並且遵守
PSR-1: Basic Coding Standard
PSR-2: Coding Style Guide
9
PHP 只能使用 <?php 或 <?=
10
檔案格式請務必存成
UTF-8 without BOM
Unix Lf (linefeed)
11
檔案內容最後保留留一行空白
12
檔案內容最後不需要有
?>
13
Class Name 務必宣告為
“StudlyCaps”
14
5.3 之後請使用 Namespace
15
5.2.x 或更早版本請遵守底下命名
16
Constant
變數必須為大寫 + 底線命名
const VERSION = '1.0';
const DATE_APPROVED = '2012-06-01';
17
Method
必須宣告為 camelCase()
public function helloWorld() { }
18
縮排原則
請使用 Space 而不是 tab
請勿 space + tab 混用
19
PHP 保留字請務必使用小寫
像是 true, false, null … 等
http://goo.gl/bJH8H
20
if, elseif, else
21
switch, case
22
23
While, do while
注意括號及 space 位置
24
<?php
while ($expr) {
// structure body
}
25
<?php
do {
// structure body;
} while ($expr);
26
for, foreach, try catch
注意括號及 space 位置
27
<?php
for ($i = 0; $i < 10; $i++) {
// for body
}
28
<?php
foreach ($data as $k => $v) {
// foreach body
}
29
<?php
try {
// try body
} catch (FirstExceptionType $e) {
// catch body
} catch (OtherExceptionType $e) {
// catch body
}
30
這麼多 Style Rule 有沒
有工具可以幫忙檢查 ?
31
EditorConfig
http://editorconfig.org/
解決編輯器 config 設定
Tab vs space
32
33
搭配 sublime text editor
https://github.com/sindresorhus/editorconfig-sublime
34
PHP Coding Standards Fixer
http://cs.sensiolabs.org/
The PSR-1 and PSR-2 Coding Standards
fixer for your code
35
安裝方式
• wget http://get.sensiolabs.org/php-cs-
fixer.phar -O php-cs-fixer
• $ sudo chmod a+x php-cs-fixer
• $ sudo mv php-cs-fixer /usr/local/bin/php-
cs-fixer
36
Mac 安裝
brew install homebrew/php/php-cs-fixer
37
38
搭配 PHP CodeSniffer 外掛
https://github.com/benmatselby/sublime-phpcs
39
40
Demo sublime text
41
Code Review
無 style 檢
查
style 檢查
style 檢查
有人會忘記裝 tool 來檢查 coding style42
The PHP Coding Style Service
Because coding standards matter
https://styleci.io
43
44
Code Review
無 style 檢
查
style 檢查
style 檢查
style 檢查錯誤
45
Documenting your Code
務必務必寫註解或文件
http://www.phpdoc.org/docs/latest/index.html
46
47
新成員請先閱讀底下文件
PHP The Right Way
http://www.phptherightway.com/
48
來聊聊前端
JavaScript && CSS
Coding Style
49
Sass/Scss/Less
CSS 預處理器
50
SASS
SCSS
LESS
Compiler CSS
51
缺陷
• 需要經過 compiler 才能變成 CSS 檔案
• 要學習 sass/scss/less 新語法
• 專案成長後,需要 compiler 時間越久
• 無法支援 css lint 檢查語法
52
postcss
a tool for transforming styles with JS plugins.
https://github.com/postcss/postcss
53
CSS
Parser
Plugin 1
Plugin 2
New CSS
Postcss
54
我們只需要挑專案
用到的 Plugin 即可
55
Plugin
• Use Future CSS, Today
– autoprefixer, postcss-cssnext
• Better CSS Readability
– precss, postcss-sorting
• Images and Fonts
– postcss-sprites
56
Usage
gulp.task('css', () => {
let postcss = require('gulp-postcss');
return gulp.src('src/*.css')
.pipe( postcss([ plugin1, plugin2 ]) )
.pipe( gulp.desc('build/') );
});
57
Plugin
postcss.plugin('my-plugin', function () {
return function (css) {
doSomething(css);
};
});
58
Like Sass/Less
PostCSS
.block {
&_title {
font-size: 1.2em;
}
}
CSS
.block_title {
font-size: 1.2em;
}
59
Fallbacks
PostCSS
.foo {
opacity: 0.8;
}
CSS
.foo {
opacity: 0.8;
filter: alpha(opacity=80)9;
}
60
Minify
PostCSS
.foo {
border: none;
}
CSS
.foo {border:0}
61
Plugin for CSS lint
.foo {
margin-top: 10px;
margin: 0 auto;
}
foo.css:3:5: margin overrides margin-top.
62
PostCSS vs Gulp
PostCSS
• Parse
– Transform
– Fallbacks
– Minify
Gulp
• Parse
– Transform
• Parse
– Fallbacks
• Parse
– Minify
63
使用方式
Gulp + Less + PostCSS
64
return gulp.src('src/*.less')
.pipe( less() )
.pipe( postcss([]) )
.pipe( gulp.desc('build/') );
65
postcss([])
沒任何 plugin
input === output
66
postcss([
require('postcss-cssnext'),
require('postcss-csssimple'),
require('autoprefixer')
])
67
Stylelint
A mighty, modern CSS linter
https://github.com/stylelint/stylelint
68
CSS Style Lint
gulp.task('lint:css', function () {
return gulp.src('src/*.less')
.pipe( postcss([
require('stylelint'),
require('postcss-reporter'),
], {
syntax: require('postcss-less')
}) );
}); 69
Less
Less Lint
cssnext
autoprefixer
Minify
CSS
PostCSS Process
70
延伸閱讀
A mostly reasonable approach to CSS and Sass.
https://github.com/airbnb/css
71
來看看 JavaScript Style
推薦 airbna/javascript
https://github.com/airbnb/javascript
72
你是寫 ES5
https://github.com/airbnb/javascript/tree/master/es5
73
寫 object
// bad
var item = new Object();
// good
var item = {};
74
寫 Array
// bad
var item = new Array();
// good
var item = [];
75
使用單引號
var foo = ‘bar’
76
Properties
var luke = {
jedi: true,
age: 28
};
// bad
var isJedi = luke['jedi'];
// good
var isJedi = luke.jedi;
77
動態取 Properties
function getProp(prop) {
return luke[prop];
}
var isJedi = getProp('jedi');
78
變數請宣告在最前面
不管是 global 或在 function 內
79
Use === and !== over == and !=
80
你是寫 ES6
https://github.com/airbnb/javascript
81
建議從現在開始寫 ES6
如果你想踏入 React 世界
https://babeljs.io/
Babel transforms your JavaScript
82
Arrow Functions
[1, 2, 3].map(function(n) { return n * 2; }, this);
// -> [ 2, 4, 6 ]
[1, 2, 3].map(n => n * 2);
// -> [ 2, 4, 6 ]
83
不需要再寫 var self = this
84
function Person() {
this.age = 0;
setInterval(function growUp() {
this.age++;
}, 1000);
}
var p = new Person();
85
function Person() {
var self = this;
self.age = 0;
setInterval(function growUp() {
self.age++;
}, 1000);
}
var p = new Person(); 86
function Person(){
this.age = 0;
setInterval(() => {
this.age++;
}, 1000);
}
var p = new Person();
87
Block Scoping Functions
var a = 5;
var b = 10;
if (a === 5) {
let a = 4;
var b = 1;
console.log(a); // 4
console.log(b); // 1
}
console.log(a); // 5
console.log(b); // 1
var a = 5;
var b = 10;
if (a === 5) {
(function () {
var a = 4;
b = 1;
console.log(a); // 4
console.log(b); // 1
})();
}
console.log(a); // 5
console.log(b); // 1
88
Template
var user = { name: 'Caitlin Potter' };
console.log('Thanks for V8, ' + user.name + '.');
var user = {name: 'Caitlin Potter'};
console.log(`Thanks for V8, ${user.name}.`);
89
Computed Property Names
var prefix = 'foo';
var test= {
[prefix + 'bar']: 'hello',
[prefix + 'baz']: 'world'
};
console.log(test['foobar']);
// -> hello
console.log(test['foobaz']);
// -> world
var prefix = 'foo';
var test= {};
test[prefix + 'bar'] = 'hello';
test[prefix + 'baz'] = 'world';
console.log(test['foobar']);
// -> hello
console.log(test['foobaz']);
// -> world
90
Destructuring Assignment
function f(x, y) {
if (y === undefined) {
y = 12;
}
return x + y;
}
f(3) === 15;
function f(x, y = 12) {
return x + y;
}
f(3) === 15;
91
Classes
function Hello(name) {
this.name = name;
}
Hello.prototype.hello =
function hello() {
return 'Hello ' + this.name;
};
Hello.sayHelloAll = function
() {
return 'Hello everyone!';
};
class Hello {
constructor(name) {
this.name = name;
}
hello() {
return 'Hello ' + this.name;
}
static sayHelloAll() {
return 'Hello everyone!';
}
}
92
Module
var math = require('lib/math');
console.log('2π = ' + math.sum(math.pi, math.pi));
import math from 'lib/math';
console.log('2π = ' + math.sum(math.pi, math.pi));
93
Property Method Assignment
var object = {
value: 42,
toString: function toString() {
return this.value;
}
};
var test= {
value: 42,
toString() {
return this.value;
}
};
94
Rest Parameters
function f(x) {
var y = [];
y.push.apply(y, arguments) &&
y.shift();
// y is an Array
return x * y.length;
}
function f(x, ...y) {
// y is an Array
return x * y.length;
}
console.log(f(3, 'hello', true) === 6);
95
Spread Operator
function f(x, y, z) {
return x + y + z;
}
f.apply(null, [1, 2, 3]) === 6;
function f(x, y, z) {
return x + y + z;
}
f(...[1,2,3]) === 6;
96
ES6 讓開發者少寫很多程式碼
97
ESLint
The pluggable linting utility for JavaScript and JSX
http://eslint.org/
98
{
"extends": "airbnb"
}
99
babel-eslint
ESLint using Babel as the parser.
https://github.com/babel/babel-eslint
100
.eslintrc
{
"parser": "babel-eslint",
"rules": {
"strict": 0
}
}
$ eslint your-files-here 101
Any Question?
102
Ad

Recommended

Gearman work queue in php
Gearman work queue in php
Bo-Yi Wu
 
The Modern Developer Toolbox
The Modern Developer Toolbox
Pablo Godel
 
Vagrant move over, here is Docker
Vagrant move over, here is Docker
Nick Belhomme
 
Symfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovsky
php-user-group-minsk
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
Pablo Godel
 
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
Pablo Godel
 
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)
Chu-Siang Lai
 
Laravel 4 package development
Laravel 4 package development
Tihomir Opačić
 
Ninja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for Beginners
Chang W. Doh
 
Zend Framework 1.8 workshop
Zend Framework 1.8 workshop
Nick Belhomme
 
JCConf 2015 workshop 動手玩 Java 專案建置工具
JCConf 2015 workshop 動手玩 Java 專案建置工具
謝 宗穎
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署
Bo-Yi Wu
 
Everything as a code
Everything as a code
Aleksandr Tarasov
 
Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]
Dana Luther
 
Использование Docker в CI / Александр Акбашев (HERE Technologies)
Использование Docker в CI / Александр Акбашев (HERE Technologies)
Ontico
 
Converting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - Cascadia
Dana Luther
 
Gradle como alternativa a maven
Gradle como alternativa a maven
David Gómez García
 
Crafting Beautiful CLI Applications in Ruby
Crafting Beautiful CLI Applications in Ruby
Nikhil Mungel
 
Live deployment, ci, drupal
Live deployment, ci, drupal
Andrii Podanenko
 
Continous Delivering a PHP application
Continous Delivering a PHP application
Javier López
 
One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.
Javier López
 
はじめてのSymfony2
はじめてのSymfony2
Tomohiro MITSUMUNE
 
PECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life better
ZendCon
 
Golang Project Layout and Practice
Golang Project Layout and Practice
Bo-Yi Wu
 
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
Pablo Godel
 
Drone CI/CD Platform
Drone CI/CD Platform
Bo-Yi Wu
 
Drone 1.0 Feature
Drone 1.0 Feature
Bo-Yi Wu
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with Ansible
Stein Inge Morisbak
 
Why to choose laravel framework
Why to choose laravel framework
Bo-Yi Wu
 
Write microservice in golang
Write microservice in golang
Bo-Yi Wu
 

More Related Content

What's hot (20)

Ninja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for Beginners
Chang W. Doh
 
Zend Framework 1.8 workshop
Zend Framework 1.8 workshop
Nick Belhomme
 
JCConf 2015 workshop 動手玩 Java 專案建置工具
JCConf 2015 workshop 動手玩 Java 專案建置工具
謝 宗穎
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署
Bo-Yi Wu
 
Everything as a code
Everything as a code
Aleksandr Tarasov
 
Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]
Dana Luther
 
Использование Docker в CI / Александр Акбашев (HERE Technologies)
Использование Docker в CI / Александр Акбашев (HERE Technologies)
Ontico
 
Converting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - Cascadia
Dana Luther
 
Gradle como alternativa a maven
Gradle como alternativa a maven
David Gómez García
 
Crafting Beautiful CLI Applications in Ruby
Crafting Beautiful CLI Applications in Ruby
Nikhil Mungel
 
Live deployment, ci, drupal
Live deployment, ci, drupal
Andrii Podanenko
 
Continous Delivering a PHP application
Continous Delivering a PHP application
Javier López
 
One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.
Javier López
 
はじめてのSymfony2
はじめてのSymfony2
Tomohiro MITSUMUNE
 
PECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life better
ZendCon
 
Golang Project Layout and Practice
Golang Project Layout and Practice
Bo-Yi Wu
 
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
Pablo Godel
 
Drone CI/CD Platform
Drone CI/CD Platform
Bo-Yi Wu
 
Drone 1.0 Feature
Drone 1.0 Feature
Bo-Yi Wu
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with Ansible
Stein Inge Morisbak
 
Ninja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for Beginners
Chang W. Doh
 
Zend Framework 1.8 workshop
Zend Framework 1.8 workshop
Nick Belhomme
 
JCConf 2015 workshop 動手玩 Java 專案建置工具
JCConf 2015 workshop 動手玩 Java 專案建置工具
謝 宗穎
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署
Bo-Yi Wu
 
Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]
Dana Luther
 
Использование Docker в CI / Александр Акбашев (HERE Technologies)
Использование Docker в CI / Александр Акбашев (HERE Technologies)
Ontico
 
Converting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - Cascadia
Dana Luther
 
Crafting Beautiful CLI Applications in Ruby
Crafting Beautiful CLI Applications in Ruby
Nikhil Mungel
 
Live deployment, ci, drupal
Live deployment, ci, drupal
Andrii Podanenko
 
Continous Delivering a PHP application
Continous Delivering a PHP application
Javier López
 
One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.
Javier López
 
PECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life better
ZendCon
 
Golang Project Layout and Practice
Golang Project Layout and Practice
Bo-Yi Wu
 
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
Pablo Godel
 
Drone CI/CD Platform
Drone CI/CD Platform
Bo-Yi Wu
 
Drone 1.0 Feature
Drone 1.0 Feature
Bo-Yi Wu
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with Ansible
Stein Inge Morisbak
 

Viewers also liked (20)

Why to choose laravel framework
Why to choose laravel framework
Bo-Yi Wu
 
Write microservice in golang
Write microservice in golang
Bo-Yi Wu
 
Git flow 與團隊合作
Git flow 與團隊合作
Bo-Yi Wu
 
How to choose web framework
How to choose web framework
Bo-Yi Wu
 
用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式
Bo-Yi Wu
 
Git Flow and JavaScript Coding Style
Git Flow and JavaScript Coding Style
Bo-Yi Wu
 
Introduction to Grunt.js on Taiwan JavaScript Conference
Introduction to Grunt.js on Taiwan JavaScript Conference
Bo-Yi Wu
 
Introduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.x
Bo-Yi Wu
 
How to integrate front end tool via gruntjs
How to integrate front end tool via gruntjs
Bo-Yi Wu
 
advanced introduction to codeigniter
advanced introduction to codeigniter
Bo-Yi Wu
 
Phpconf 2011 introduction_to_codeigniter
Phpconf 2011 introduction_to_codeigniter
Bo-Yi Wu
 
Introduction to git
Introduction to git
Bo-Yi Wu
 
RESTful API Design & Implementation with CodeIgniter PHP Framework
RESTful API Design & Implementation with CodeIgniter PHP Framework
Bo-Yi Wu
 
Docker 基礎介紹與實戰
Docker 基礎介紹與實戰
Bo-Yi Wu
 
Automating your workflow with Gulp.js
Automating your workflow with Gulp.js
Bo-Yi Wu
 
2014 OSDC Talk: Introduction to Percona XtraDB Cluster and HAProxy
2014 OSDC Talk: Introduction to Percona XtraDB Cluster and HAProxy
Bo-Yi Wu
 
You must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular Library
Bo-Yi Wu
 
Maintainable PHP Source Code
Maintainable PHP Source Code
Bo-Yi Wu
 
Aula02 Desenvolvimento em Ambiente Web - CSS 3
Aula02 Desenvolvimento em Ambiente Web - CSS 3
Messias Batista
 
JavaScript 快速複習 2017Q1
JavaScript 快速複習 2017Q1
Sheng-Han Su
 
Why to choose laravel framework
Why to choose laravel framework
Bo-Yi Wu
 
Write microservice in golang
Write microservice in golang
Bo-Yi Wu
 
Git flow 與團隊合作
Git flow 與團隊合作
Bo-Yi Wu
 
How to choose web framework
How to choose web framework
Bo-Yi Wu
 
用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式
Bo-Yi Wu
 
Git Flow and JavaScript Coding Style
Git Flow and JavaScript Coding Style
Bo-Yi Wu
 
Introduction to Grunt.js on Taiwan JavaScript Conference
Introduction to Grunt.js on Taiwan JavaScript Conference
Bo-Yi Wu
 
Introduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.x
Bo-Yi Wu
 
How to integrate front end tool via gruntjs
How to integrate front end tool via gruntjs
Bo-Yi Wu
 
advanced introduction to codeigniter
advanced introduction to codeigniter
Bo-Yi Wu
 
Phpconf 2011 introduction_to_codeigniter
Phpconf 2011 introduction_to_codeigniter
Bo-Yi Wu
 
Introduction to git
Introduction to git
Bo-Yi Wu
 
RESTful API Design & Implementation with CodeIgniter PHP Framework
RESTful API Design & Implementation with CodeIgniter PHP Framework
Bo-Yi Wu
 
Docker 基礎介紹與實戰
Docker 基礎介紹與實戰
Bo-Yi Wu
 
Automating your workflow with Gulp.js
Automating your workflow with Gulp.js
Bo-Yi Wu
 
2014 OSDC Talk: Introduction to Percona XtraDB Cluster and HAProxy
2014 OSDC Talk: Introduction to Percona XtraDB Cluster and HAProxy
Bo-Yi Wu
 
You must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular Library
Bo-Yi Wu
 
Maintainable PHP Source Code
Maintainable PHP Source Code
Bo-Yi Wu
 
Aula02 Desenvolvimento em Ambiente Web - CSS 3
Aula02 Desenvolvimento em Ambiente Web - CSS 3
Messias Batista
 
JavaScript 快速複習 2017Q1
JavaScript 快速複習 2017Q1
Sheng-Han Su
 
Ad

Similar to PHP & JavaScript & CSS Coding style (20)

Jslunch6
Jslunch6
Nao Haida
 
Print this
Print this
himanii313
 
JavaScript Web Development
JavaScript Web Development
vito jeng
 
How to build the Web
How to build the Web
Simon Willison
 
第7回みゆっき☆Think 本気で学ぶ JavaScript
第7回みゆっき☆Think 本気で学ぶ JavaScript
Takuya Fujimura
 
みゆっき☆Think#7 「本気で学ぶJavascript」
みゆっき☆Think#7 「本気で学ぶJavascript」
techtalkdwango
 
Артем Яворский "Compile like it's 2017"
Артем Яворский "Compile like it's 2017"
Fwdays
 
Html5
Html5
Mario Delgado
 
Practical JavaScript Programming - Session 1/8
Practical JavaScript Programming - Session 1/8
Wilson Su
 
Bringing sexy back to CSS: SASS/SCSS, LESS and Compass
Bringing sexy back to CSS: SASS/SCSS, LESS and Compass
Claudina Sarahe
 
2021.laravelconf.tw.slides2
2021.laravelconf.tw.slides2
LiviaLiaoFontech
 
UI Realigning & Refactoring by Jina Bolton
UI Realigning & Refactoring by Jina Bolton
Codemotion
 
Programming PHP 4th Edition Peter Macintyre
Programming PHP 4th Edition Peter Macintyre
sandsfaresix
 
JavaScript Beginner Tutorial | WeiYuan
JavaScript Beginner Tutorial | WeiYuan
Wei-Yuan Chang
 
Programming PHP 4th Edition Peter Macintyre 2024 scribd download
Programming PHP 4th Edition Peter Macintyre 2024 scribd download
fotkysewel9
 
Post css - Getting start with PostCSS
Post css - Getting start with PostCSS
Neha Sharma
 
Future of PHP
Future of PHP
Richard McIntyre
 
Jsonsaga 100605143125-phpapp02
Jsonsaga 100605143125-phpapp02
Ramamohan Chokkam
 
Get Programming PHP 4th Edition Peter Macintyre free all chapters
Get Programming PHP 4th Edition Peter Macintyre free all chapters
kleesounsysx
 
Sugar Presentation - YULHackers March 2009
Sugar Presentation - YULHackers March 2009
spierre
 
JavaScript Web Development
JavaScript Web Development
vito jeng
 
第7回みゆっき☆Think 本気で学ぶ JavaScript
第7回みゆっき☆Think 本気で学ぶ JavaScript
Takuya Fujimura
 
みゆっき☆Think#7 「本気で学ぶJavascript」
みゆっき☆Think#7 「本気で学ぶJavascript」
techtalkdwango
 
Артем Яворский "Compile like it's 2017"
Артем Яворский "Compile like it's 2017"
Fwdays
 
Practical JavaScript Programming - Session 1/8
Practical JavaScript Programming - Session 1/8
Wilson Su
 
Bringing sexy back to CSS: SASS/SCSS, LESS and Compass
Bringing sexy back to CSS: SASS/SCSS, LESS and Compass
Claudina Sarahe
 
2021.laravelconf.tw.slides2
2021.laravelconf.tw.slides2
LiviaLiaoFontech
 
UI Realigning & Refactoring by Jina Bolton
UI Realigning & Refactoring by Jina Bolton
Codemotion
 
Programming PHP 4th Edition Peter Macintyre
Programming PHP 4th Edition Peter Macintyre
sandsfaresix
 
JavaScript Beginner Tutorial | WeiYuan
JavaScript Beginner Tutorial | WeiYuan
Wei-Yuan Chang
 
Programming PHP 4th Edition Peter Macintyre 2024 scribd download
Programming PHP 4th Edition Peter Macintyre 2024 scribd download
fotkysewel9
 
Post css - Getting start with PostCSS
Post css - Getting start with PostCSS
Neha Sharma
 
Jsonsaga 100605143125-phpapp02
Jsonsaga 100605143125-phpapp02
Ramamohan Chokkam
 
Get Programming PHP 4th Edition Peter Macintyre free all chapters
Get Programming PHP 4th Edition Peter Macintyre free all chapters
kleesounsysx
 
Sugar Presentation - YULHackers March 2009
Sugar Presentation - YULHackers March 2009
spierre
 
Ad

More from Bo-Yi Wu (14)

用 Go 語言打造多台機器 Scale 架構
用 Go 語言打造多台機器 Scale 架構
Bo-Yi Wu
 
Job Queue in Golang
Job Queue in Golang
Bo-Yi Wu
 
Introduction to GitHub Actions
Introduction to GitHub Actions
Bo-Yi Wu
 
GraphQL IN Golang
GraphQL IN Golang
Bo-Yi Wu
 
Go 語言基礎簡介
Go 語言基礎簡介
Bo-Yi Wu
 
drone continuous Integration
drone continuous Integration
Bo-Yi Wu
 
Gorush: A push notification server written in Go
Gorush: A push notification server written in Go
Bo-Yi Wu
 
用 Drone 打造 輕量級容器持續交付平台
用 Drone 打造 輕量級容器持續交付平台
Bo-Yi Wu
 
用 Go 語言 打造微服務架構
用 Go 語言 打造微服務架構
Bo-Yi Wu
 
Introduction to Gitea with Drone
Introduction to Gitea with Drone
Bo-Yi Wu
 
運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率
Bo-Yi Wu
 
用 Go 語言實戰 Push Notification 服務
用 Go 語言實戰 Push Notification 服務
Bo-Yi Wu
 
用 Go 語言打造 DevOps Bot
用 Go 語言打造 DevOps Bot
Bo-Yi Wu
 
A painless self-hosted Git service: Gitea
A painless self-hosted Git service: Gitea
Bo-Yi Wu
 
用 Go 語言打造多台機器 Scale 架構
用 Go 語言打造多台機器 Scale 架構
Bo-Yi Wu
 
Job Queue in Golang
Job Queue in Golang
Bo-Yi Wu
 
Introduction to GitHub Actions
Introduction to GitHub Actions
Bo-Yi Wu
 
GraphQL IN Golang
GraphQL IN Golang
Bo-Yi Wu
 
Go 語言基礎簡介
Go 語言基礎簡介
Bo-Yi Wu
 
drone continuous Integration
drone continuous Integration
Bo-Yi Wu
 
Gorush: A push notification server written in Go
Gorush: A push notification server written in Go
Bo-Yi Wu
 
用 Drone 打造 輕量級容器持續交付平台
用 Drone 打造 輕量級容器持續交付平台
Bo-Yi Wu
 
用 Go 語言 打造微服務架構
用 Go 語言 打造微服務架構
Bo-Yi Wu
 
Introduction to Gitea with Drone
Introduction to Gitea with Drone
Bo-Yi Wu
 
運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率
Bo-Yi Wu
 
用 Go 語言實戰 Push Notification 服務
用 Go 語言實戰 Push Notification 服務
Bo-Yi Wu
 
用 Go 語言打造 DevOps Bot
用 Go 語言打造 DevOps Bot
Bo-Yi Wu
 
A painless self-hosted Git service: Gitea
A painless self-hosted Git service: Gitea
Bo-Yi Wu
 

Recently uploaded (20)

What is data visualization and how data visualization tool can help.pdf
What is data visualization and how data visualization tool can help.pdf
Varsha Nayak
 
Code and No-Code Journeys: The Coverage Overlook
Code and No-Code Journeys: The Coverage Overlook
Applitools
 
Meet You in the Middle: 1000x Performance for Parquet Queries on PB-Scale Dat...
Meet You in the Middle: 1000x Performance for Parquet Queries on PB-Scale Dat...
Alluxio, Inc.
 
Async-ronizing Success at Wix - Patterns for Seamless Microservices - Devoxx ...
Async-ronizing Success at Wix - Patterns for Seamless Microservices - Devoxx ...
Natan Silnitsky
 
Making significant Software Architecture decisions
Making significant Software Architecture decisions
Bert Jan Schrijver
 
Software Engineering Process, Notation & Tools Introduction - Part 4
Software Engineering Process, Notation & Tools Introduction - Part 4
Gaurav Sharma
 
Step by step guide to install Flutter and Dart
Step by step guide to install Flutter and Dart
S Pranav (Deepu)
 
IBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - Introduction
Gaurav Sharma
 
Transmission Media. (Computer Networks)
Transmission Media. (Computer Networks)
S Pranav (Deepu)
 
Neuralink Templateeeeeeeeeeeeeeeeeeeeeeeeee
Neuralink Templateeeeeeeeeeeeeeeeeeeeeeeeee
alexandernoetzold
 
Reimagining Software Development and DevOps with Agentic AI
Reimagining Software Development and DevOps with Agentic AI
Maxim Salnikov
 
Milwaukee Marketo User Group June 2025 - Optimize and Enhance Efficiency - Sm...
Milwaukee Marketo User Group June 2025 - Optimize and Enhance Efficiency - Sm...
BradBedford3
 
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Maxim Salnikov
 
Looking for a BIRT Report Alternative Here’s Why Helical Insight Stands Out.pdf
Looking for a BIRT Report Alternative Here’s Why Helical Insight Stands Out.pdf
Varsha Nayak
 
Zoneranker’s Digital marketing solutions
Zoneranker’s Digital marketing solutions
reenashriee
 
Women in Tech: Marketo Engage User Group - June 2025 - AJO with AWS
Women in Tech: Marketo Engage User Group - June 2025 - AJO with AWS
BradBedford3
 
GDG Douglas - Google AI Agents: Your Next Intern?
GDG Douglas - Google AI Agents: Your Next Intern?
felipeceotto
 
Migrating to Azure Cosmos DB the Right Way
Migrating to Azure Cosmos DB the Right Way
Alexander (Alex) Komyagin
 
OpenTelemetry 101 Cloud Native Barcelona
OpenTelemetry 101 Cloud Native Barcelona
Imma Valls Bernaus
 
Microsoft Business-230T01A-ENU-PowerPoint_01.pptx
Microsoft Business-230T01A-ENU-PowerPoint_01.pptx
soulamaabdoulaye128
 
What is data visualization and how data visualization tool can help.pdf
What is data visualization and how data visualization tool can help.pdf
Varsha Nayak
 
Code and No-Code Journeys: The Coverage Overlook
Code and No-Code Journeys: The Coverage Overlook
Applitools
 
Meet You in the Middle: 1000x Performance for Parquet Queries on PB-Scale Dat...
Meet You in the Middle: 1000x Performance for Parquet Queries on PB-Scale Dat...
Alluxio, Inc.
 
Async-ronizing Success at Wix - Patterns for Seamless Microservices - Devoxx ...
Async-ronizing Success at Wix - Patterns for Seamless Microservices - Devoxx ...
Natan Silnitsky
 
Making significant Software Architecture decisions
Making significant Software Architecture decisions
Bert Jan Schrijver
 
Software Engineering Process, Notation & Tools Introduction - Part 4
Software Engineering Process, Notation & Tools Introduction - Part 4
Gaurav Sharma
 
Step by step guide to install Flutter and Dart
Step by step guide to install Flutter and Dart
S Pranav (Deepu)
 
IBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - Introduction
Gaurav Sharma
 
Transmission Media. (Computer Networks)
Transmission Media. (Computer Networks)
S Pranav (Deepu)
 
Neuralink Templateeeeeeeeeeeeeeeeeeeeeeeeee
Neuralink Templateeeeeeeeeeeeeeeeeeeeeeeeee
alexandernoetzold
 
Reimagining Software Development and DevOps with Agentic AI
Reimagining Software Development and DevOps with Agentic AI
Maxim Salnikov
 
Milwaukee Marketo User Group June 2025 - Optimize and Enhance Efficiency - Sm...
Milwaukee Marketo User Group June 2025 - Optimize and Enhance Efficiency - Sm...
BradBedford3
 
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Maxim Salnikov
 
Looking for a BIRT Report Alternative Here’s Why Helical Insight Stands Out.pdf
Looking for a BIRT Report Alternative Here’s Why Helical Insight Stands Out.pdf
Varsha Nayak
 
Zoneranker’s Digital marketing solutions
Zoneranker’s Digital marketing solutions
reenashriee
 
Women in Tech: Marketo Engage User Group - June 2025 - AJO with AWS
Women in Tech: Marketo Engage User Group - June 2025 - AJO with AWS
BradBedford3
 
GDG Douglas - Google AI Agents: Your Next Intern?
GDG Douglas - Google AI Agents: Your Next Intern?
felipeceotto
 
OpenTelemetry 101 Cloud Native Barcelona
OpenTelemetry 101 Cloud Native Barcelona
Imma Valls Bernaus
 
Microsoft Business-230T01A-ENU-PowerPoint_01.pptx
Microsoft Business-230T01A-ENU-PowerPoint_01.pptx
soulamaabdoulaye128
 

PHP & JavaScript & CSS Coding style