星期三, 9月 28, 2016

[Wordpress Plugin] MySimpleSpace計算硬碟使用空間


想要看一下wp用了多少主機空間,可以裝一下MySimpleSpace



這裡有一篇討論區也是教你寫一個dashboard的wigget來顯示空間,不過貼了會爆炸。
沒仔細看哪裡錯了,先筆記起來

http://wordpress.stackexchange.com/questions/67876/how-to-check-disk-space-used-by-media-library

星期一, 9月 26, 2016

[WordPress] TinyPNG外掛: 省空間的好幫手lol

最近虛擬主機的空機開始不足了,
感覺應該被幾個wp的站台用掉太多圖片空間,找了一下wp的圖片外掛,
原來TinyPNG也有出wordpress外掛,
在你安裝好TinyPNG外掛之後,
可以到TinyPNG申請開發者API KEY

https://tinypng.com/developers



就可以享受每個月五百張的額度。
另外壓縮圖片對於搜尋引擎最佳化(SEO)來說有正面的影響。

星期日, 9月 25, 2016

[工具] 記錄一下免費圖庫的資源

設計師常用的找免費圖庫資源

https://unsplash.com/

http://www.gratisography.com/

[php] PDO 批次插入與更新筆記

記錄批次插入並檢查已存在就更新的寫法



$sql = "INSERT INTO `table` (`id`, `name`) VALUES (?,?),(?,?) ON DUPLICATE KEY UPDATE `name` = VALUES(`name`) ";//將要批次插入的值放到 (?,?),看你要插入幾組
 $values = array(1, "test", 2, "so so");//要插入的值
 $stmt = $this->db->prepare($sql);//建立pdo statment
 $stmt->execute($values);//執行時把要插入的值丟入pdo



http://stackoverflow.com/questions/1176352/pdo-prepared-inserts-multiple-rows-in-single-query

https://gist.github.com/kublaios/007ee6b7b7936c6cd80a

星期三, 8月 31, 2016

[Wordpress] wp_users 與 wp_usermeta tables取值的key

記錄一下常用到get_userdata與get_user_meta常要用取值key的值!!!
  • users
    • ID
    • user_login
    • user_pass
    • user_nicename
    • user_email
    • user_url
    • user_registered
    • display_name
  • user_meta
    • first_name
    • last_name
    • nickname
    • description
    • wp_capabilities (array)
    • admin_color (Theme of your admin page. Default is fresh.)
    • closedpostboxes_page
    • primary_blog
    • rich_editing
    • source_domain

星期一, 8月 29, 2016

[MySQL] 如何判斷要插入新資料還是更新

今天要算一下統計表格需要的sql,如果資料已存在就要更新,反之就插入一筆,記錄一下。


Step1: 未設unique key是會失敗的

ALTER TABLE 你的表格名 ADD UNIQUE (要UNIQUE的欄位)



Step2:
INSERT ... ON DUPLICATE KEY UPDATE:



http://stackoverflow.com/questions/14383503/on-duplicate-key-update-same-as-insert

星期四, 8月 18, 2016

[Wordpress] sql查詢特色圖片(featured images)

如果要查詢縮圖的資訊直接查詢postmeta這張表_wp_attached_file這個meta_key即可。文章縮圖的id則為_thumbnail_id

[Wordpress] 使用自訂的sql抓取WMPL翻譯的文章類型

記錄如何自已下sql取得文章的多國類型,裝的外掛為WMPL。
請注意WMPL此外掛是將翻譯的關連資訊存到mywp_icl_translations



以下為sql語句


select
posts.ID,
posts.post_name,
posts.post_date,

IFNULL((SELECT PM.meta_value FROM mywp_postmeta AS PM WHERE posts.ID = PM.post_id AND PM.meta_key = "your_post_type"),'') as link,
IFNULL((SELECT PM.meta_value FROM mywp_postmeta AS PM WHERE posts.ID = PM.post_id AND PM.meta_key = "_thumbnail_id"),'') as thumbnail_id

FROM mywp_posts AS posts
where
post_status = 'publish'
AND
post_type = 'emel_ad_slider'
AND
ID
IN
(
select element_id from mywp_icl_translations
where element_type = 'post_your_post_type' and language_code = 'zh-hans'
)
order by posts.post_date desc

星期日, 8月 14, 2016

[Paypal] paypal direct payment 直接使用信用卡付款

測試paypal direct payment api的筆記過程。

Website Payments Pro 解決方案

https://developer.paypal.com/docs/classic/products/website-payments-pro/

在Website Payments Pro這一包的產品下,裡面包含以下的整合技術
Direct Payment, Express Checkout, and additional PayPal solutions and tools — like Virtual Terminal, Fraud Management Filters, and reference transactions.

簡介Website Payments Pro
https://developer.paypal.com/docs/classic/paypal-payments-pro/integration-guide/WPWebsitePaymentsPro/

星期一, 8月 08, 2016

[Wordpress] WooCommerce 自訂頁面呼叫相關API


今天要在自訂的php頁面呼叫wc的api記錄,因為老闆說要另外做一頁就這樣搞了XD不要問

載入WP的函式庫

require_once(dirname(dirname(__FILE__)).'/wp-load.php');


星期日, 8月 07, 2016

[Wordpress] 取出指定user meta值的用戶清單


這次想要在wordpress的帳號管理的查詢功能新增自已的user meta key查詢。
使用到的Hook分別為如下:

  • restrict_manage_users ACTION:

這個Action可以替users表格上面的filter區塊自訂我們要的html 語法,這次要做的效果一樣弄一個下拉式選單就OK了。送出後你會發現網址QueryString會加了我們指定的值

// Adds a dropdown to filter users based on a meta field
function add_recommand_filter_into_user_table() {

    global $pagenow;

    if (is_admin() && $pagenow == 'users.php') {
        $optNone = '';
        $optYes = '';
        $optNo = '';
        if(isset($_GET['recommand'])){
          if(strcmp($_GET['recommand'],'1') == 0){
            $optYes  = 'selected="selected"';
          }else{
            $optNo  = 'selected="selected"';
          }
        }else{
           $optNone  = 'selected="selected"';
        }

        echo '';
    }
}
add_action('restrict_manage_users', 'add_recommand_filter_into_user_table');



  • pre_get_users FILTER:


這個Filter簡言之就是要處理我們新增的action所送出的值為何,然後可以重改變動query物件的meta參數
// Updates user query based on filtering criteria
function query_recommand_query_from_user_table($query) {
 
    global $pagenow;

    if (is_admin() && $pagenow == 'users.php' && isset($_GET['recommand'])) {
        $recommandValue = wp_strip_all_tags($_GET['recommand']);
       
       if(strcmp($recommandValue,'') != 0){
          $meta_query = array(
            array(
           'key' => RECOMMAND_KEY,
           'value' => $recommandValue
           )
         ); 
   
         $query->set('meta_key', RECOMMAND_KEY);
         $query->set('meta_query', $meta_query);
        }   
    }
 
}

add_filter('pre_get_users','query_recommand_query_from_user_table');


參考


  1. http://wordpress.stackexchange.com/questions/189077/how-to-get-users-by-a-custom-field-by-user-meta-data
  2. http://www.davemccourt.com/wp-user-filtering/

星期三, 8月 03, 2016

[jQuery] 偵測元素是否進入到viewpoint外掛

今天想要處理偵測用戶scroll的位置判斷是否有進入指定元素viewpoint的議題。
找到以下三個jQuery外掛

http://imakewebthings.com/waypoints/guides/getting-started/

https://github.com/protonet/jquery.inview

https://github.com/morr/jquery.appear

比較過後,暫時先用inview即可解決,
其他二個外掛有比inview強的地方就是增加了offset的參數可設定。
不過inview有pull-request已解決這個功能




[jQuery] Offset 詳細圖


最近在做的專案需要detect 元素的位置,查了一下找到以下這張圖解。
可以清楚了解jQuery offset,筆記一下唷


星期一, 8月 01, 2016

[Wordpress] 擴充User management 的表格欄位

如果你想要自已擴充全部帳號(users.php)頁面,只需要透過二個hook機制就可以快速完成。
所以你就可以自已加欄位加按鈕,做更多客製化操作啦。


  • 使用filter hook: manage_users_columns來擴充欄位
  • 使用action hook: manage_users_custom_column來修改欄位值

範例


參考

https://www.tipsandtricks-hq.com/adding-a-custom-column-to-the-users-table-in-wordpress-7378

[Wordpress] 如何ajax來呼叫 php function

記錄一下如何在wp操作ajax function呼叫php function,意思就是你可以透過hook機制寫自已的api嚕

官網的sample說明


  • action命名規則wp_ajax_[你的方法]
  • action function 命名規則 [你的方法]_callback
tips: 請注意你的方法命名不可以長的不一樣,會無法對應呼叫

add_action( 'wp_ajax_my_action', 'my_action_callback' );

function my_action_callback() {
 global $wpdb; // this is how you get access to the database

 $whatever = intval( $_POST['whatever'] );

 $whatever += 10;

        echo $whatever;

 wp_die(); // this is required to terminate immediately and return a proper response
}

在頁面render一個jquery的方法(因為是範例所以方法很簡單,page_load之後就打)可以搭配admin_enqueue_scripts來整理你自已外掛所需的js
 jQuery(document).ready(function($) {

  var data = {
   'action': 'my_action',
   'whatever': 1234
  };

  // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
  jQuery.post(ajaxurl, data, function(response) {
   alert('Got this from the server: ' + response);
  });
 });

參考

https://codex.wordpress.org/AJAX_in_Plugins

[Wordpress] wp_enqueue_script / wp_enqueue_style 在wp自訂你的js與css檔

wp_enqueue_script 允許我們快速的在wp的頁面加入js函式庫,
反之 wp_enqueue_style讓我們加入樣式檔。

你可以寫法functions.php做全域的載入或至到外掛模組佈景主題裡面做客製化的載入唷

範例

以下範例教你怎麼加入bootstrap框架

function reg_scripts() {
    wp_enqueue_style( 'bootstrapstyle', get_template_directory_uri() . '/css/bootstrap.min.css' );
    wp_enqueue_style( 'bootstrapthemestyle', get_template_directory_uri() . '/css/bootstrap-theme.min.css' );
    wp_enqueue_script( 'bootstrap-script', get_template_directory_uri() . '/js/bootstrap.min.js', array(), true );
}
add_action('wp_enqueue_scripts', 'reg_scripts');

參考


  1. https://digwp.com/2009/06/including-jquery-in-wordpress-the-right-way/
  2. http://stackoverflow.com/questions/26583978/how-to-load-bootstrap-script-and-style-in-functions-php-wordpress
  3. https://codex.wordpress.org/zh-cn:%E5%87%BD%E6%95%B0%E5%8F%82%E8%80%83/wp_enqueue_script

星期四, 7月 28, 2016

[GIT] 分支更新至master最新版本的處理方法筆記

常常遇到branch開工到一半遇到要更新master上面的code,
找了一些Stackoverflow上面的方法來研究看看:

Merge


git checkout develop
git merge master


Cheey-Pick

Rebase


參考


  1. http://stackoverflow.com/questions/3876977/update-git-branches-from-master
  2. https://blog.wu-boy.com/2011/03/git-%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6-branch-model-%E5%88%86%E6%94%AF%E6%A8%A1%E7%B5%84%E5%9F%BA%E6%9C%AC%E4%BB%8B%E7%B4%B9/
  3. https://blog.wu-boy.com/2016/04/git-flow-tips/

[jQuery] 視差滾動元件: scrollme 簡單、快速、好上手


最近在做某個網站使用視差效果,原來使用stellar.js,
但網頁滾動起來發生很卡的現像,非常不平滑。
於是又找了到 scrollme這個元件,由於我們的目的可以針對元件某些元素進行一些特效
加上scrollme的效能非常的平滑,使用語意也超級簡單(連教學都不用寫了XD),所以推給大家使用。


http://scrollme.nckprsn.com/

星期三, 7月 27, 2016

[Linux] 常用的一些Server狀態指令


記錄一下Server常用指令集

linux基礎的檔案目錄說明
目錄名稱說明
bin系統的一些重要執行檔Kill、cp、df
boot系統開機的一些載入檔 
cdrom光碟機裡的資料被掛上來的地方 
dosc開機時把dos檔案系統掛上來的地方 
etc系統設定檔 
home使用者的自家目錄所在、ftp server 
lib基本函數庫 
Lost+found系統檢查結果 
mnt可以掛上其它檔案系統 
proc整個系統運作資訊 
root系統管理者的自家目錄所在 
sbin一些設定的可執行程式、設定網路 
tmp雜七雜八的東西 
usr應用程式X-window
var記載著各種系統上的變數的地方 
vmlinuz系統核心檔案 

星期一, 7月 25, 2016

[MAMP] 手動變更php版本

如果想要自行變動php版本的話,可以下載php版本後
放置以下目錄


再修正httpd.conf

sudo vim /Applications/MAMP/conf/apache/httpd.conf


開啟後再修正版本模組即可

#LoadModule php5_module        /Applications/MAMP/bin/php/php5.6.10/modules/libphp5.so

#你想要的版本
LoadModule php5_module        /Applications/MAMP/bin/php/php5.6.24/modules/libphp5.so

[MAMP] Mac的php版本改用MAMP的php版本的方法

直接用MAMP來取代mac原本裝裝php5版本,

請參考下面流程,請注意MAMP_PHP改為你要使用的版本號即可

open terminal, type
touch ~/.bash_profile; open ~/.bash_profile
edit as follows below, save, quite and restart terminal or alternately
source ~/.bash_profile
to execute new PATH without restarting terminal
and in the fashion of the DavidYell's post above, also add the following. You can stack various variables by exporting them followed by a single PATH export which I demonstrated below
export MAMP_PHP=/Applications/MAMP/bin/php/php5.6.10/bin
export MAMP_BINS=/Applications/MAMP/Library/bin
export USERBINS=~/bins
export PATH="$USERBINS:$MAMP_PHP:$MAMP_BINS:$PATH"
http://stackoverflow.com/questions/4145667/how-to-override-the-path-of-php-to-use-the-mamp-path

星期四, 6月 23, 2016

[php] 用命令提示字元檢查語法是否有誤

今天寫物件發生一些sytax錯誤,
開了display_errors, error_reporting都沒什麼錯誤印出來。
於是直接使用cmd line語法檢查..

php -l UserScoreGradeDAO.class.php 
No syntax errors detected in UserScoreGradeDAO.class.php

就會告訴你錯在哪一行了,真的方便多了。

星期二, 6月 21, 2016

[CSS 3] 描繪路徑

http://codepen.io/paintbycode/pen/JDbcF/
下拉Iron Man範例

如果要用Stroke效果來描述的話,需要計算path的數值。
以下記錄一下計算的方法

純JS
var path = document.querySelector('path');
var length = path.getTotalLength();

jQuery的方法
var path = $('#目的元素').get(0);
var pathLen = path.getTotalLength();

星期一, 6月 13, 2016

[ubuntu] 調整系統時間與時區

最近在裝VM踩到系統時間未設定正確的雷,導致API的授權認證一直過期。
記錄一下這個腦洞的錯誤。


#查看系統時間 (發現時間錯誤)
date


Sun Apr 10 19:12:58 CST 2016 

#國家時間與頻率標準實驗室
sudo ntpdate time.stdtime.gov.tw
Tue Jun 14 10:20:14 CST 2016

#將硬體時間與系統時間同步
sudo hwclock -w

#重設時區 (需為root的權限)
sudo dpkg-reconfigure tzdata

Local time is now:      Sun Apr 10 19:14:39 CST 2016.
Universal Time is now:  Sun Apr 10 11:14:39 UTC 2016.


星期日, 6月 12, 2016

[C] error: unknown type name 'bool'這種錯誤

error: unknown type name 'bool'這種錯誤
可以加入#include

或換編譯 C99之後才有 http://zh.wikipedia.org/wiki/Stdbool.h

[ubuntu] 常用的指令


記錄一下常用的指令集

安裝SMB


#安裝
apt-get install samba


#安裝完畢後,先暫停服務修改設定檔.
/etc/init.d/samba stop


#編輯設定檔
sudo vim /etc/samba/smb.conf


#測試設定檔有無錯誤 (不用在指定的目錄下執行即可)
testparm





#重新啟動
/etc/init.d/samba restart

#顯示目前smb的狀態

sudo smbstatus


#新版後的ubuntu

sudo service smbd start
Stop
sudo service smbd stop
Restart
sudo service smbd restart

網路設定


[CSS] 使用css transition 做出underline的效果

作者示範了各種underline的動畫效果,有需要的朋友可以參考一下。
我的案例需要下圖中記錄的SlideIn效果。


http://bradsknutson.com/blog/css-sliding-underline/

星期二, 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 


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(extname, sources [, shared [,sapi_class[, extra-cflags]]])
範例 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的短指令

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


如果C語言已經很熟的話,可以跳至26:38秒開始

測試環境

  1. MacOSX EI
  2. 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(來判斷變數是否還有被使用)。

Null-Terminated String



初始化 ZVAL



簡化


ZVAL設定值

ZVAL_STRING
ZVAL_LONG
ZVAL_BOOL

星期二, 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一个空结束的(和空填充的)字节串

星期五, 4月 29, 2016

[PHP] Composer 教學筆記

現在寫php一定要會用的套件管理工具composer

安裝

參考一下這篇
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簡報):


  1. Git只需要加入composer.json 與composer.lock,方便其他成員使用
  2. 請由專案負責人進行composer的第一次安裝與之後的更新
  3. 不要將vendor資料夾送入Git,其他團隊成員應該只要透過composer install安裝
  4. Library的composer.lock不要加入Git




參考

  1. https://speakerdeck.com/jaceju/begining-composer
  2. http://ithelp.ithome.com.tw/question/10136653


星期四, 4月 28, 2016

[EC2] 安裝 ffmpeg

記錄一下成功安裝ffmepg在EC2的步驟。


1. 首先建立ffmepg資料夾


$cd /usr/local/bin/

$sudo mkdir ffmpeg

$cd ffmpeg


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

列出這一版的資訊

ffmpeg version N-63893-gc69defd
built on Jul 16 2014 05:38:01 with gcc 4.6 (Debian 4.6.3-1)
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
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

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

星期二, 4月 26, 2016

fullpage.js 一頁式的網站樣版工具

如果你需要一頁式的網站樣版,可以參考一下fullpage.js這個套件


http://alvarotrigo.com/fullPage/#firstPage

[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/

[CSS] 讓youtube影片放入DIV後能夠填滿寬高的解法

如果你有需要使用youtube連結當背景播放影片的話,可以參考以下網址的解法,
試過是可行的:D 有需要的朋友可以看看。

https://www.h3xed.com/web-development/how-to-make-a-responsive-100-width-youtube-iframe-embed

[jQuery] scroll animation 外掛

快速上手的scroll animation外掛

https://github.com/mpalpha/animate-scroll

其他你感興趣的文章

Related Posts with Thumbnails