over 4 years ago

矛盾大對決 - 能入侵任何網站的駭客 vs. 絕對不會被入侵的網站

Slide:
PHPConf 2013 - 矛盾大對決 by Orange
PHPConf 2013 - 矛盾大對決 by Allen Own

  • 重現經典的名片交換

sql injection

  • 進攻
    • outfile
    • 種木馬
    • union
    • 結合 sql 語法結果
  • 防守
    • 空白
    • 單引號
    • prepareed statements
    • 變數型態
    • store pocedures

xss

  • 任何 input output 都不可信任的
  • xss 盲打?

戲劇效果大於內容...老話長談

A: 當駭客打字要夠快, 例如說 www 不要打成 ww

O: 這是你的密碼嗎?
A: 我可以說不是嗎?

無用小知識:

資料庫帳號密碼不會存在資料庫

local file inclusion

php-cgi argument injection

駭客的思為、腦袋結構跟一般人不太一樣

A: 身為一個駭客..
O: 你是駭客?
A: 呃... 我有辦駭客年會

實戰 Phalcon Kernel

Slide:
Phalcon / Phalcon Kernel / Zephir 簡介 by Rack Lin (阿土伯)

只要出問題 C4 都可以搞定

  • php 5.3 升到 php 5.4 效能大前進
  • console application
  • 要效能, 交給 c 就對了...
  • zend api, phalcon kernel

阿: 應該沒有人在用 smarty 了吧

zephir

http://zephir-lang.com/

mac 掛掉了

阿: microsoft 的東西啊, 就算寫到 mac 也是個垃圾

用 php 寫 c

阿: 這種 live coding 實在是, 風險好大

SiteTag 系統窮人調校法經驗談

Slide:
SiteTag 系統窮人調校法經驗談

講了五分鐘還沒進入主題...一直廣告...

apache * 1, mysql * 2...

問題
request
備份

server 可以掛掉, 網站外掛不能掛掉

site tag 一個月掛一顆硬碟

  • 連線多
  • 回應快
  • 不能掛

cdn

要快, cache

apc (apache restart 就炸了)

memcache

mysql cache (MyISAM) QPI 4000+

用 Gearman 與 CodeIgniter 打造 PHP 排程系統

Slide:
Gearman work queue in php

(一個 worker 只做單一件單純工作?)

基礎... 很基礎

  • Don't pass 2GB Object
  • 用 proxy server 管理 gearman server

demo email queue

5 Easy Ways To Speed Up Your Web Application

Slide:
5 Easy Ways To Speed Up Your Web Application

time to first byte TTFB

front end performance today

file size: using tool to make smaller file

gzip

css on top, js on button

use a CDN

Optimize images

實戰 AssetToolkit

PHP - AssetToolKit
https://github.com/c9s/php-AssetToolkit

require.js

PHP 也是可以很 event - 用 PHP 打造一個 Realtime Web

Slide:
PHPConf 2013 php 也是可以很 event

http://pecl.php.net/package/event

long pulling

chunked transfer encoding

web socket

c10k problem

block io

asynchronous io

php event 完勝

phpsoscket.io

lighting talk

c9s - phpbrew

https://github.com/c9s/phpbrew

Wake - 向 PHP Framework 邁進

吳怡穎 - 寫好前端,不要搞瘋你的 PHP 後端工程師

PHPconf 2013 - 寫好前端,不要搞瘋你的 PHP 後端工程師

林熙哲 - 當 Nexmo 遇上 PHP

Allen Own - 我的密碼沒加密,你的呢?

http://plainpass.com/


以下是沒有去現場聽的

Evernote SDK for PHP 你所不知道的 Evernote

http://apptrunks.com/phpconf.html

MagentoCommerce Extension 開發

http://www.slideshare.net/finjonkiang/magento-phpconf-2013

 
over 4 years ago

新的嘗試, 不同於以往的 LAMP
LEMP 是 linux + nginx + mysql + php

安裝 php-fpm

ubuntu 13.04 上面預設的 php 版面已經到 5.4 了, 暫時很夠用

$ sudo apt-get install php5-cli php5-common php-pear php5-fpm php5-curl php5-mcrypt

安裝 nginx

直接從 ppa 安裝 stable 版本

$ sudo add-apt-repository ppa:nginx/stable
$ sudo apt-get update
$ sudo apt-get install -y nginx
#啟動 nginx

$ sudo /etc/init.d/nginx start

設定 nginx

設定前先備份

$ cd /etc/nginx/sites-available
$ sudo cp default default.bak

把 default 裡面跟 php 相關的設定開啟

server {
  ...
    index index.html index.htm index.php;
    location ~ \.php$ {

        # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
  ...
}

最後重新載入 nginx 設定

$ sudo /etc/inid.t/nginx reload

安裝 mysql

$ sudo apt-get install mysql-server php5-mysql mysql-client

安裝過程中, 會設定 root 密碼

安裝 phpmyadmin

$ sudo apt-get install phpmyadmin

安裝過程中, 會設定 phpmyadmin 的密碼

設定 phpmyadmin

原本想要在 nginx 裡加設定檔好讓 phpmyadmin 可以運作
但是, 先暫時用快速法好了XD

$ cd /usr/share/nginx/html/
$ sudo ln -s /usr/share/phpmyadmin/

小記

nginx 和 apache 要跟 php 搭配的方法不太一樣, 剛開始下手時不太習慣
nginx 目前沒有類似 a2ensite/a2dissite 之類的小工具, 不過 github 上似乎有人有寫小工具, 之後可以試試看

Reference

架設 Nginx + PHP FastCGI 於 Ubuntu Linux 10.04
Nginx + PHP-FPM + MySQL + phpMyAdmin on Ubuntu 12.04

 
over 4 years ago

在 fstab 設定掛載最直接的方式,就是用 /dev/sda1 /dev/sdb2 的格式進行設定。
但是這些代號會隨著硬碟放置的位置不同而改變。

如果是改用 UUID 的方式去設定,就不會有問題了。

查看 UUID

blkid 指令,是用來查看磁區的一些屬性資料,可以用來看磁區的 UUID
blkid 查看所有的磁區資料:

$ blkid
/dev/sda1: UUID="46da40b4-xxxx-xxxx-bcbc-15ed29818721" TYPE="ext4" 
/dev/sdb1: UUID="8715d004-xxxx-xxxx-a5c9-982a9c59ece9" TYPE="ext4" 
/dev/sdb2: UUID="11ea6fc9-xxxx-xxxx-ba56-e356dd6648fa" TYPE="ext4" 
/dev/sdb3: UUID="e6bce8b4-xxxx-xxxx-a6ee-7324949156d7" TYPE="swap" 

blkid <dev> 查看指定磁區的 UUID:

$ blkid /dev/sda1
/dev/sda1: UUID="46da40b4-xxxx-xxxx-bcbc-15ed29818721" TYPE="ext4" 

以列表的格式查看磁區資料

$ blkid -o list
device     fs_type label    mount point    UUID
------------------------------------------------------------------------------
/dev/sda1  ext4             /              46da40b4-xxxx-xxxx-bcbc-15ed29818721
/dev/sdb1  ext4             (not mounted)  8715d004-xxxx-xxxx-a5c9-982a9c59ece9
/dev/sdb2  ext4             (not mounted)  11ea6fc9-xxxx-xxxx-ba56-e356dd6648fa
/dev/sdb3  swap             (not mounted)  e6bce8b4-xxxx-xxxx-a6ee-7324949156d7
/dev/sda5                   <swap>         

設定 /etc/fstab

sudo vi /etc/fstab

+# HDD
+UUID=8715d004-xxxx-xxxx-a5c9-982a9c59ece9 /home/nyo/zero/sys ext4 defaults 0 0
+UUID=11ea6fc9-xxxx-xxxx-ba56-e356dd6648fa /home/nyo/zero/book ext4 defaults 0 0

存檔後,執行 $sudo mount -a 或是 $sudo reboot 讓 fstab 生效

Reference

How do I find the UUID of a partition
鳥哥的Linux 私房菜 - 開機掛載 /etc/fstab 及 /etc/mtab
凍仁的筆記: mount - 掛載儲存裝置指令

 
over 4 years ago

裝好中文的 Ubuntu 之後,家目錄裡面的資料夾預設也是中文的
這幾個中文字讓我在使用上變的很不方便,特別是打指令的時候...

以下指令幫你快速換名稱

$ export LANG=C
$ xdg-user-dirs-gtk-update 

Don't ask me again
再點 Update Names

Moving DESKTOP directory from 桌面 to Desktop
Moving DOWNLOAD directory from 下載 to Downloads
Moving TEMPLATES directory from 模板 to Templates
Moving PUBLICSHARE directory from 公共 to Public
Moving DOCUMENTS directory from 文件 to Documents
Moving MUSIC directory from 音樂 to Music
Moving PICTURES directory from 圖片 to Pictures
Moving VIDEOS directory from 影片 to Videos

執行完成!!

 
over 4 years ago

前進 logdown

http://nyo-sutdybook.logdown.com/

試試全世界最好用的線上編輯器

 
over 4 years ago

啟用 TRIM

備份,並修改 /etc/fstab

$ sudo cp /etc/fstab /etc/fstab.bak
$ sudo vi /etc/fstab

找到要加上 TRIM 的磁區,於 errors=remount-ro 前加上 discard

加上 noatime 可以減少讀寫次數

結果如下:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>

# / was on /dev/sdb1 during installation

UUID=46da40b4-XXX-XXXX-XXX-15ed29818721 /               ext4    discard,noatime,errors=remount-ro 0       1

掛載 /tmp 於 tmpfs

修改 /etc/fstab,並在底下加上:

# tmp

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0

以上設定於重開後生效

測試 SSD 的速度

執行指令 $ sudo hdparm -Tt /dev/sda/dev/sda 請依照想要測試的硬碟做更換

/dev/sda:
 Timing cached reads:   10862 MB in  2.00 seconds = 5433.09 MB/sec
 Timing buffered disk reads: 1318 MB in  3.00 seconds = 439.04 MB/sec

查看與設定 I/O schedulers

網路上許多人做過測試,對 SSD 來說,noop 或是 deadline 的 I/O scheduler 會是比較好的。

要查看當前系統使用的 I/O scheduler

$ cat /sys/block/sda/queue/scheduler
noop [deadline] cfq

看來我的電腦目前預設就是 deadline 了

如果要修改所有硬碟的 I/O schedulers 為 noop
$ sudo vi /etc/default/grub

修改

-GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
+GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

最後執行 $sudo update-grub

如果要修改指定硬碟目前使用的 I/O schedulers 為 deadline
$sudo echo deadline > /sys/block/sda/queue/scheduler

Reference

Linux平台使用SSD必讀 (範例為Ubuntu)
新寵Linux-Ubuntu 12.04(SSD固態硬碟)安裝

[all variants] SSD benchmark of I/O schedulers

 
over 4 years ago

How to check directory in bash?

using -d expression.

if [ -d "$DIRECTORY" ]; then
  # Control will enter here if $DIRECTORY exists.

fi

or

if [ ! -d "$DIRECTORY" ]; then
  # Control will enter here if $DIRECTORY doesn't exist.

fi

Reference

How to check if a directory exists in a shell script

 
over 4 years ago

A Little Note of Install Redis

on gist.

 
over 4 years ago

Ubuntu 13.04 with Unity and conky.

 
over 4 years ago

edit blow file.

sudo vi /etc/default/grub

uncomment the setting "GRUB_GFXMODE=640x480", and change to the resolution what you want.

update grub and reboot

sudo update-grub
sudo reboot

i test it on ubuntu 13.04, and it works.

Reference

ubuntu 10.04 console resolution
Grub 2 and the VGA parameter