上周在facebook看到小鐵大大的分享一個有關於HEAD的元素的repo,
有需要的時候可以速查一下:
https://github.com/joshbuchea/HEAD
星期日, 5月 29, 2016
星期三, 5月 25, 2016
星期二, 5月 24, 2016
[PHP] php-extension: 範例練習
經過前幾次的練習與說明,筆記一下因為自已的需求測試的範例
範例: 從自已建一個額外的C語言的檔案呼叫
1.修正一下config.m4指定載入額外的C語言
dnl config.m4 for extension
PHP_ARG_ENABLE(foo, whether to enable foo extension support,
[--enable-foo Enable foo extension support])
dnl 檢測extension是否已被啟動
if test $PHP_FOO != "no"; then
AC_MSG_CHECKING("start to enable extension");
dnl PHP_NEW_EXTENSION(foo, php_foo.c, $ext_shared)
dnl 注意多引用了自定義C語言func
PHP_NEW_EXTENSION(foo, php_foo.c hello_world_c.c, $ext_shared)
fi
2.先建立自已的C的實作與標頭檔
hello_world_c.h, hello_world_c.c
int hello_world_c_add(int, int);
/*Hello World program*/
#include <stdio.h>
#include "hello_world_c.h"
int hello_world_c_add(int a,int b){
int sum = 0;
printf("hello_world_c_add is coming Orz\n");
printf("%d\n", a);
printf("%d\n", b);
sum = a+b;
printf("sum=%d\n", sum);
return sum;
}
int main(){
printf("Hello World C :D");
printf("sum=%d",hello_world_c_add(10,10));
return 0;
}
3. 在php_foo.c裡面include hello_world_c.h檔
#include "hello_world_c.h"//內部的c func
#include "php_foo.h"
#if COMPILE_DL_FOO
ZEND_GET_MODULE(foo)
#endif
....
3. 新增一個PHP_FUNCTION: 呼叫剛剛的hello_world_c_add
//呼叫自定義的c函數,來處理加法
PHP_FUNCTION(foo_hello_add) {
php_printf("run foo_hello_add\n");
int val1;
int val2;
int sum;
//parse parameters
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &val1,&val2 ) == FAILURE) {
RETURN_FALSE;
}
php_printf("val1=%d\n",val1);
php_printf("val2=%d\n",val2);
sum = hello_world_c_add(val1,val2);
RETURN_DOUBLE(sum);
}
範例: C實作/標頭檔搬到子資料夾
接著想把不同自定義的C函式庫分裝到不同的sub-folder後就爆了以下訊息:
目前這個範例卡關中...
範例: 全域變數的操作
範例: 回傳resouce
參考
- https://github.com/jheth/hello-php-extension
- 在 PHP Extension 中加入 static 和 dynamic library
- Linux静态链接库与动态链接库的区别及动态库的创建
- Linux中创建静态库和动态库
- http://php.net/manual/en/internals2.structure.globals.php
- https://github.com/walu/phpbook/blob/master/12.5.md
星期一, 5月 23, 2016
[PHP] php-extension編譯C++
如有c++函式庫需要處理,請在config.m4加入以下指令:
PHP_REQUIRE_CXX()
PHP_SUBST(YOUREXTENSION_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(stdc++, "", YOUREXTENSION_SHARED_LIBADD)
PHP_ADD_LIBRARY(stdc++,EXTRA_LDFLAGS)
dnl 上面設定好了,PHP_NEW_EXTENSION的第二個參數就可以輸入 c++的檔案了,下面的例子還是C
PHP_NEW_EXTENSION(foo, php_foo.c, $ext_shared)
[PHP] config.m4 指令集筆記
記錄一下一定會忘記的php-ext常用的指令說明。
指令集
- AC_MSG_CHECKING
畫面輸出訊息
checking whether to enable foo extension support
PHP_SUBST(XXXX_SHARED_LIBADD), 其中 XXXX 為 PHP Extension 的名稱 (全大寫)
完整指令
XXXX: 你想要載入的extension name
PHP_ADD_LIBRARY_WITH_PATH([library name], [library path], XXXX_SHARED_LIBADD)
例如我們想加入 libabc.so, 而該檔案在 /usr/lib, 則我們會加入: PHP_ADD_LIBRARY_WITH_PATH(abc, /usr/lib, XXXX_SHARED_LIBADD)
範例 PHP_NEW_EXTENSION(foo, foo.c bar.c baz.cpp, $ext_shared)
參考
http://tglcowcow.blogspot.tw/2008/05/php-extension-static-dynamic-library.html
- PHP_SUBST
PHP_SUBST(XXXX_SHARED_LIBADD), 其中 XXXX 為 PHP Extension 的名稱 (全大寫)
- PHP_ADD_LIBRARY_WITH_PATH
- PHP_CHECK_LIBRARY
- PHP_ADD_INCLUDE
- PHP_ADD_BUILD_DIR
- PHP_ADD_LIBRARY_WITH_PATH
完整指令
XXXX: 你想要載入的extension name
PHP_ADD_LIBRARY_WITH_PATH([library name], [library path], XXXX_SHARED_LIBADD)
例如我們想加入 libabc.so, 而該檔案在 /usr/lib, 則我們會加入: PHP_ADD_LIBRARY_WITH_PATH(abc, /usr/lib, XXXX_SHARED_LIBADD)
- PHP_NEW_EXTENSION
範例 PHP_NEW_EXTENSION(foo, foo.c bar.c baz.cpp, $ext_shared)
參考
http://tglcowcow.blogspot.tw/2008/05/php-extension-static-dynamic-library.html
星期五, 5月 20, 2016
[Flickrlinkr] phpFlickr: The web service endpoint returned a "HTTP/1.1 403 Forbidden" response
今天在VM重建flickrlinkr偵錯時發生了以下錯誤:
The web service endpoint returned a "HTTP/1.1 403 Forbidden" response
由於使用phpFlickr類別時,有用到curl,所以請安裝curl for php元件
安裝方法如下
sudo apt-get install php5-curl
安裝完畢後,請重啟apache2
sudo service apache2 restart
[GIT] server certificate verification failed. 錯誤排除
fatal: unable to access 'https://bigd@bitbucket.org/shark_tech/thegrand.git/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
bigd@ubuntu:/var/www/thegrand$ export GIT_SSL_NO_VERIFY=1
bigd@ubuntu:/var/www/thegrand$ git submodule update --init --recursive
星期三, 5月 18, 2016
[CSS 3動畫] animation 語法動畫筆記
最近一些case需要使用大量的css動畫,把一些處理到的指令筆記一下
animation: name duration timing-function delay iteration-count direction;
animation-fill-mode : none | forwards | backwards | both;
none:不改变默认行为。
forwards :当动画完成后,保持最后一个属性值(在最后一个关键帧中定义)。
backwards:在 animation-delay 所指定的一段时间内,在动画显示之前,应用开始属性值(在第一个关键帧中定义)。
both:向前和向后填充模式都被应用。
animation的短指令
animation: name duration timing-function delay iteration-count direction;
定義動畫結束後如何停止最後一個狀態
animation-fill-mode : none | forwards | backwards | both;none:不改变默认行为。
forwards :当动画完成后,保持最后一个属性值(在最后一个关键帧中定义)。
backwards:在 animation-delay 所指定的一段时间内,在动画显示之前,应用开始属性值(在第一个关键帧中定义)。
both:向前和向后填充模式都被应用。
星期一, 5月 16, 2016
[PHP] php extension 初試: extension parser parameter (接收參數)
接續先前的基本範例,接著要來練習怎麼接收帶入extension的參數:
zend_parse_parameters方法
zend_parse_parameters提供不同的接收變數的方式,
變數1: ZEND_NUM_ARGS() TSRMLS_CC, 二個值中間是空白,ZEND_NUM_ARGS表示傳入參數的個數
變數2: 傳入變數的格式化字串
星期五, 5月 13, 2016
[PHP] php extension 初試
拜讀完php-extension骨架練習,
如果C語言忘得差不多錄影檔有從基本的C語言開始教起:D
Note:
如果C語言忘得差不多錄影檔有從基本的C語言開始教起:D
如果C語言已經很熟的話,可以跳至26:38秒開始
測試環境
- MacOSX EI
- MAMP (所以流程中有其他錯誤要處理一下:D)
ZVal是什麼
http://php.net/manual/en/internals2.variables.intro.php
Note:
PHP is a dynamic, loosely typed language, that uses copy-on-write and reference counting.
所有的php變數型態都是定義在一個zval的struct,並且使用copy-on-write(寫入時複製)與reference counting(來判斷變數是否還有被使用)。
初始化 ZVAL
簡化
ZVAL設定值
ZVAL_STRING
ZVAL_LONG
ZVAL_BOOL
星期四, 5月 12, 2016
[PHP] php 呼叫 C library一些方法
最近工作轉換跑道寫php,然後還要用php呼叫同事寫的c library,找了一些相關的筆記:
1. 寫php extension
中文相關
學習資源
1. 寫php extension- http://php.net/manual/en/internals2.ze1.zendapi.php
- http://www.phpinternalsbook.com/
- PHP Extensions Made Eldrich: Installing PHP
- PHP Extensions – How and Why?
- https://programm.froscon.de/2012/system/attachments/182/original/main.pdf
中文相關
- 手動編譯
安裝PHP Extension、 Linux( ) - 如何寫 PHP Extension
- PHP Extension & Makefile 製作
- 撰寫自己的 PHP extensions - 1 hello world
- [PHP] PHP 也有 Day #21 - c9s 主講:從 C 語言到 PHP Extension 學習筆記
- PHP 也有 Day #21 - 從 C 語言到 PHP Extension by 林佑安
c9s)( - 寫一個Hello World的PHP Extension
星期二, 5月 10, 2016
星期五, 5月 06, 2016
[PHP] ffmepg 相關筆記
最近工作需要用到一些audio的處理,記錄一下相關的ffmpeg討論資源。
php 使用exec 執行 ffmpeg指令
http://www.phpro.org/tutorials/Video-Conversion-With-FFMPEG.html
Binary data 處理
http://blog-en.openalfa.com/how-to-work-with-binary-data-in-php
Audio codec:
https://trac.ffmpeg.org/wiki/audio%20types
讀取WAV檔
http://www.mcpressonline.com/web-languages/easily-manage-wav-files-with-php.html
WAV file/read
https://gist.github.com/Xeoncross/3515883
https://github.com/boyhagemann/Wave
音频格式详解:WAV
http://www.aliog.com/39896.html
READ WAV
http://www.bloggingzeal.com/how-to-read-a-wav-file-with-php/
pack /unpack format
a - NUL-padded string
A - SPACE-padded string
h - Hex string, low nibble first
H - Hex string, high nibble first
c - signed char
C - unsigned char
s - signed short (always 16 bit, machine byte order)
S - unsigned short (always 16 bit, machine byte order)
n - unsigned short (always 16 bit, big endian byte order)
v - unsigned short (always 16 bit, little endian byte order)
i - signed integer (machine dependent size and byte order)
I - unsigned integer (machine dependent size and byte order)
l - signed long (always 32 bit, machine byte order)
L - unsigned long (always 32 bit, machine byte order)
N - unsigned long (always 32 bit, big endian byte order)
V - unsigned long (always 32 bit, little endian byte order)
f - float (machine dependent size and representation)
d - double (machine dependent size and representation)
x - NUL byte
X - Back up one byte
@ - NUL-fill to absolute position
a一个填充空的字节串
A一个填充空格的字节串
b一个位串,在每个字节里位的顺序都是升序
B一个位串,在每个字节里位的顺序都是降序
c一个有符号char(8位整数)值
C一个无符号char(8位整数)值;关于Unicode参阅U
d本机格式的双精度浮点数
f本机格式的单精度浮点数
h一个十六进制串,低四位在前
H一个十六进制串,高四位在前
i一个有符号整数值,本机格式
I一个无符号整数值,本机格式
l一个有符号长整形,总是32位
L一个无符号长整形,总是32位
n一个16位短整形,“网络”字节序(大头在前)
N一个32位短整形,“网络”字节序(大头在前)
p一个指向空结尾的字串的指针
P一个指向定长字串的指针
q一个有符号四倍(64位整数)值
Q一个无符号四倍(64位整数)值
s一个有符号短整数值,总是16位
S一个无符号短整数值,总是16位,字节序跟机器芯片有关
u一个无编码的字串
U一个Unicode字符数字
v一个“VAX”字节序(小头在前)的16位短整数
V一个“VAX”字节序(小头在前)的32位短整数
w一个BER压缩的整数
x一个空字节(向前忽略一个字节)
X备份一个字节
Z一个空结束的(和空填充的)字节串
php 使用exec 執行 ffmpeg指令
http://www.phpro.org/tutorials/Video-Conversion-With-FFMPEG.html
Binary data 處理
http://blog-en.openalfa.com/how-to-work-with-binary-data-in-php
Audio codec:
https://trac.ffmpeg.org/wiki/audio%20types
讀取WAV檔
http://www.mcpressonline.com/web-languages/easily-manage-wav-files-with-php.html
WAV file/read
https://gist.github.com/Xeoncross/3515883
https://github.com/boyhagemann/Wave
音频格式详解:WAV
http://www.aliog.com/39896.html
READ WAV
http://www.bloggingzeal.com/how-to-read-a-wav-file-with-php/
a - NUL-padded string
A - SPACE-padded string
H - Hex string, high nibble first
C - unsigned char
S - unsigned short (always 16 bit, machine byte order)
I - unsigned integer (machine dependent size and byte order)
L - unsigned long (always 32 bit, machine byte order)
N - unsigned long (always 32 bit, big endian byte order)
V - unsigned long (always 32 bit, little endian byte order)
X - Back up one byte
@ - NUL-fill to absolute position
a一个填充空的字节串
A一个填充空格的字节串
b一个位串,在每个字节里位的顺序都是升序
B一个位串,在每个字节里位的顺序都是降序
c一个有符号char(8位整数)值
C一个无符号char(8位整数)值;关于Unicode参阅U
d本机格式的双精度浮点数
f本机格式的单精度浮点数
h一个十六进制串,低四位在前
H一个十六进制串,高四位在前
i一个有符号整数值,本机格式
I一个无符号整数值,本机格式
l一个有符号长整形,总是32位
L一个无符号长整形,总是32位
n一个16位短整形,“网络”字节序(大头在前)
N一个32位短整形,“网络”字节序(大头在前)
p一个指向空结尾的字串的指针
P一个指向定长字串的指针
q一个有符号四倍(64位整数)值
Q一个无符号四倍(64位整数)值
s一个有符号短整数值,总是16位
S一个无符号短整数值,总是16位,字节序跟机器芯片有关
u一个无编码的字串
U一个Unicode字符数字
v一个“VAX”字节序(小头在前)的16位短整数
V一个“VAX”字节序(小头在前)的32位短整数
w一个BER压缩的整数
x一个空字节(向前忽略一个字节)
X备份一个字节
Z一个空结束的(和空填充的)字节串
星期日, 5月 01, 2016
[jQuery plugin/CSS] 處理Youtube影片置入背景RWD的方法 :D
最近製作的網站有需要將youtube影片放置某一個元素裡面當背景,
找了二個不錯的資料如下,有興趣的朋友可以試玩一下。
http://rochestb.github.io/jQuery.YoutubeBackground/
https://github.com/chriscoyier/Fluid-Width-Video
http://www.seanmccambridge.com/tubular/
找了二個不錯的資料如下,有興趣的朋友可以試玩一下。
http://rochestb.github.io/jQuery.YoutubeBackground/
https://github.com/chriscoyier/Fluid-Width-Video
http://www.seanmccambridge.com/tubular/
星期五, 4月 29, 2016
[PHP] Composer 教學筆記
現在寫php一定要會用的套件管理工具composer
http://iambigd.blogspot.tw/2013/07/php-composer.html
2. 然後執行composer install
3. 接著就會在專案下產生composer.lock檔案以及vendor目錄
require 'vendor/autoload.php';
安裝
參考一下這篇http://iambigd.blogspot.tw/2013/07/php-composer.html
快速安裝使用
1. 首先要在專案下建立composer.json,加入你要引用的套件(管理套件相依性){
"require": {
"monolog/monolog": "1.2.*"
}
}
2. 然後執行composer install
3. 接著就會在專案下產生composer.lock檔案以及vendor目錄
composer.lock
在首次安裝套件完畢後,會產生這個檔案,裡面記錄了所安裝套件的資訊。這個檔案的真正作用是:如果目錄中有這個檔案,執行安裝時,就不會去搜尋更新的版本,而是依照這個檔案中記錄的版本來安裝。這個設計很重要,因為新版的套件很有可能與目前使用的版本不相容,如果不是使用同樣版本,很難保證系統的穩定。過去在使用pear來管理套件時,如果不注意,就有可能發生升級導致的慘劇。
vendor目錄(預設目錄)
主要含以下內容
- vender/autoload.php
require 'vendor/autoload.php';
- vender/composer
自動載入的載入器與快取檔
- 各套件資料夾目錄
依造命名規則/
場景應用注意(From 大澤小木鐵phpconf簡報):
- Git只需要加入composer.json 與composer.lock,方便其他成員使用
- 請由專案負責人進行composer的第一次安裝與之後的更新
- 不要將vendor資料夾送入Git,其他團隊成員應該只要透過composer install安裝
- Library的composer.lock不要加入Git
參考
星期四, 4月 28, 2016
[EC2] 安裝 ffmpeg
記錄一下成功安裝ffmepg在EC2的步驟。
$cd /usr/local/bin/
$sudomkdir ffmpeg
$cdffmpeg
ffmpeg version N-63893-gc69defd
built on Jul 16 2014 05:38:01 with gcc 4.6 (Debian 4.6.3-1)
libavutil 52. 89.100 / 52. 89.100
libavcodec 55. 66.101 / 55. 66.101
libavformat 55. 43.100 / 55. 43.100
libavdevice 55. 13.101 / 55. 13.101
libavfilter 4. 8.100 / 4. 8.100
libswscale 2. 6.100 / 2. 6.100
libswresample 0. 19.100 / 0. 19.100
libpostproc 52. 3.100 / 52. 3.100
TIP: 軟連結請勿打錯路徑,否則在/usr/bin/ffmpeg 會顯示紅色!!
官網stable build
http://ffmpeg.gusari.org/static/64bit/
本文參考
http://stackoverflow.com/questions/15057151/installing-ffmpeg-on-amazon-linux-cpp-gcc-libstdc-dependancies
1. 首先建立ffmepg資料夾
$cd /usr/local/bin/
$sudo
$cd
2. weget下載stable 包
$sudo wget http://ffmpeg.gusari.org/static/64bit/ffmpeg.static.64bit.2014-07-16.tar.gz
3. 解開下載的tar檔
$sudo tar -xzf ffmpeg.static.64bit.2014-07-16.tar.gz
之後會解出ffmpeg與ffprobe二個資料夾
$ls -al
ffmpeg ffmpeg.static.64bit.2014-07-16.tar.gz ffprobe
4. 執行測試
$. /ffmpeg -version
列出這一版的資訊
configuration: --prefix=/root/ffmpeg-static/64bit --extra-cflags='-I/root/ffmpeg-static/64bit/include -static' --extra-ldflags='-L/root/ffmpeg-static/64bit/lib -static' --extra-libs='-lxml2 -lexpat -lfreetype' --enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable-zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-gray --enable-libass --enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-version3 --enable-libvpx
5. 如果要在每個路徑下都能使用請做一下symbol link
$sudo ln -s /usr/local/bin/ffmpeg/ffmpeg /usr/bin/ffmpeg
TIP: 軟連結請勿打錯路徑,否則在/usr/bin/ffmpeg 會顯示紅色!!
參考資源
官網stable build
http://ffmpeg.gusari.org/static/64bit/
本文參考
http://stackoverflow.com/questions/15057151/installing-ffmpeg-on-amazon-linux-cpp-gcc-libstdc-dependancies
星期三, 4月 27, 2016
[快快樂樂學WordPress] 記錄一些wordpress plugin需要用的資料
Google到的Wordpress plugin教學蒐集
//好像很老的玩家lol
http://blog.wpjam.com/article/write-plugin-by-yourself/
//官方
http://codex.wordpress.org/Writing_a_Plugin
http://codex.wordpress.org/Adding_Administration_Menus
http://codex.wordpress.org/Plugin_API
//好像很老的玩家lol
http://blog.wpjam.com/article/write-plugin-by-yourself/
//官方
http://codex.wordpress.org/Writing_a_Plugin
http://codex.wordpress.org/Adding_Administration_Menus
http://codex.wordpress.org/Plugin_API
星期二, 4月 26, 2016
[CSS3] CSS transform/transition/animation 初學筆記
最近幫朋友弄了一個網站,需要使用很多CSS transition與animation的效果,
順道找了一些不錯的資訊學習,看完就可以馬上上手許多:D,很適合初學者們
參考如下:
https://www.openfoundry.org/tw/tech-column/9233-css3-animation
http://www.ruanyifeng.com/blog/2014/02/css_transition_and_animation.html
http://blog.iwege.com/posts/the-different-between-transform-transition-animation.html
超強transform解說:
https://desandro.github.io/3dtransforms/
順道找了一些不錯的資訊學習,看完就可以馬上上手許多:D,很適合初學者們
短語法
可用屬性
參考如下:
https://www.openfoundry.org/tw/tech-column/9233-css3-animation
http://www.ruanyifeng.com/blog/2014/02/css_transition_and_animation.html
http://blog.iwege.com/posts/the-different-between-transform-transition-animation.html
超強transform解說:
https://desandro.github.io/3dtransforms/
[CSS] 讓youtube影片放入DIV後能夠填滿寬高的解法
如果你有需要使用youtube連結當背景播放影片的話,可以參考以下網址的解法,
試過是可行的:D 有需要的朋友可以看看。
https://www.h3xed.com/web-development/how-to-make-a-responsive-100-width-youtube-iframe-embed
試過是可行的:D 有需要的朋友可以看看。
https://www.h3xed.com/web-development/how-to-make-a-responsive-100-width-youtube-iframe-embed
訂閱:
意見 (Atom)







