[WordPress] WP Page Numbers 外掛設定

WP Page Numbers是個不錯的外掛,套用的步驟也很簡單,詳見外掛介紹
http://wordpress.org/plugins/wp-page-numbers/

不過要在自己的網站上開新頁面做一些特殊用途,又需要用到換頁功能
但是新頁面又和文章不相關時,外掛便不會運作
不過使用一點小方法便可解決這問題

$rows = 200; // 資料筆數
$display_rows = 20; // 每頁顯示20筆資料

// 宣告全域變數
global $max_page; // 最大頁數
$max_page = $rows / $display_rows; // 計算總頁數,並存到$max_page這個變數

// 若沒有使用固定網址時則需要再加入下列兩行
global $paged;
$paged = $_GET['paged'];

// 如果有設定固定網址,可用這種方式取得當前頁碼
$get_currentPage = $wp_query->query_vars['paged'];

 

這樣就可以正常運作了

[PHP] PHP 5.4 的 session 寫法變革

前陣子把 PHP 升級到5.4後
發現有用到session的程式都爆了

Fatal error: Call to undefined function session_register()

 

google一下
原來是PHP 5.4的session寫法有改變
PHP 5.4 移除了 session_is_registered()  、 session_register()  與 session_unregister()  三支function。
Session 的操作更簡化了一些。

//判斷 Session 是否存在
if( isset($_SESSION['foo']) ) {
    echo 'session is exist';
}

//註冊 Session
$_SESSION['foo'] = 'bar';

//移除 Session
unset($_SESSION['foo']);

 

這樣操作其實更直覺,也不需要額外多記函式(個人很健忘),這三支函式早該移除了。
但是大大小小的舊系統改起來也是不少麻煩
所以另一個做法就是把移除的function在script執行前先定義好:

<?php
if ( !function_exists('session_register') ) {
    function session_register() {
        $args = func_get_args();
        foreach ($args as $key) {
            $_SESSION[ $key ] = $GLOBALS[ $key ];
        }
    }
}

if ( !function_exists('session_is_registered') ) {
    function session_is_registered( $key ) {
        return isset( $_SESSION[ $key ] );
    }
}

if ( !function_exists('session_unregister') ) {
    function session_unregister( $key ){
        unset( $_SESSION[ $key ] );
    }
}

 

這樣就可以相容舊系統了
不過還是比較建議移除舊寫法囉
Reference:http://blog.wu-boy.com/2012/06/what-has-changed-in-php-5-4-x/

[Git] Basic Command

# 設定個人資訊 (這些資訊會顯示在commit log上)
git config --global username "your name"
git config --global email "your E-mail"

#------------------------------[init]-----------------------------------
# 切換到自己的專案目錄
cd my_project

# 管理初始化
git init


#------------------------------[add]----------------------------------
# 新增檔案
git add (file name)

# 將當前目錄下的所有檔案及目錄加入管理
git add .

# 將指定子目錄下的指定檔案加入管理
git add dir_name/file_name

# 將指定子目錄下的所有檔案加入管理
git add dir_name/.

# 新增修改過的檔案 (兩者皆可)
git add -u
git add modifyfile


#-------------------------------[commit]----------------------------------
# commit並添加註解
git commit -m "commit message"

# 自動add修改過的檔案(不包含未納管的檔案)並commit (會開啟editor,需要寫commit massage)
git commit -a

# 同上,差異在於commit massage直接寫在-m後面,並不會開啟editor
git commit -a -m "commit message"

# -v 可以看到檔案哪些內容有被更改
git commit -a -v


#-------------------------------[branch]----------------------------------
# 列出現有branch
git branch

# 列出所有branch
git branch -a

# 新增branch
git branch (branch name)

# 從master新增branch
git branch test-branch master

# 刪除branch
git branch -d (branch name)

# 強制刪除branch
git branch -D (branch name)

# 重新命名branch (當前branch為old branch時可忽略參數old branch name)
git branch -m (old branch name) (new branch name)

# 切換至指定branch
git checkout (branch name)

# 將指定的branch與當前branch合併
git merge (branch name)

#-------------[push、pull、clone、remote(以girhub為例)]-------------
# 提交變更至git server
git push git@github.com:(user name)/(project name).git

# 提交指定branch的變更
git push git@github.com:(user name)/(project name).git (branch name)

# 刪除git server上的branch(下列兩種方式皆可)
git push git@github.com:(user name)/(project name) .git :(branch name)
git push origin --delete (branch name)

# 檢查git server有無較新的變更,並拉下來更新本機的檔案(未指定remote+branch name則對目前branch進行作業)
git pull (remote) (branch name)

# 將該專案資料夾從git server拉下來
git clone git@github.com:(user name)/(project name).git

# 新增遠端名稱
git remote (remote name) git@github.com:(user name)/(project name).git

# 顯示現有remote清單
git remote -v

# 將project上傳到指定的remote
git push (remote name)

# 將project裡指定branch的上傳到指定的remote
git push (remote name) (branch name)
example:
git remote origin git@github.com:athlon20147/myproject.git //remote name : origin
新增好remote後,以下兩行功能相等
git push git@github.com:athlon20147/myproject.git
git push origin

-------------------------------[other]----------------------------------
# 檢視變更紀錄
git log

# 還原已經commit刪除的檔案
git checkout <deleteing_commit>^ -- <file_path>
ex: git checkout b05128e3ebd4f38c317f066d679aee21c7d3af65^ -- config/ldap-sample.php

[Git] Github、Bitbucket綁定ssh-key

若環境是Windows,請先安裝Git 


產生一組新的SSH Key(如果已經有現成的,可跳過這步驟)

# 切換到使用者家目錄
cd ~

# 產生ssh key
ssh-keygen -t rsa -C "你的E-mail"

# 這裡是指定key的擺放位置,直接Enter下去使用預設值就好
Generating public/private rsa key pair.
Enter file in  which to have the key
(/Users/your_user_directory/.ssh/id_rsa):

# key的驗證密碼,在進行驗證時使用者端需要額外輸入密碼做驗證,也可以留空 (建議不要在公用電腦使用空密碼)
Enter passphrase (Empty for nopassphrase):

# 再次輸入
Enter same passphrase again:

# 完成後會看到家目錄多了一個.ssh的目錄,裡面有 id_rsa (Private-Key) 與 id_rsa.pub (Public-Key) 兩個檔案
# 使用 cat 指令顯示自己的public-key (要加入到git server用)
cat ~/.ssh/id_rsa.pub

 

 


將Key加入至 Github 帳號

git-hub-add-public-key


將Key加入至 Bitbucket 帳號

bitbucket-add-public-key

[JAVA] StringTokenizer

今天閒著跑去高中生點了一題出來 – 讀取練習-強大的加法

用Scanner自動濾掉空格結果還是有錯,

看得出來測資應該就不像範例只有一位元那麼單純。

google 一下,找到了一個可以拆解字串的類別 – StringTokenizer

StringTokenizer 預設情況下是以空白符號分解字串。

先讀取整行:

String si = input.nextLine();

再來拆解:

StringTokenizer sc = new StringTokenizer(si);

這時候整行字串會依空格將整行字串拆解。

例如今天傳入一行 Hello world   by           Calos

那麼拆解後就會變成:

Hello
world
by
calos

有人應該有疑問說,空格很多格,不會拆解出一堆空白字串嗎??

上面有提到:<strong>StringTokenizer預設情況下是以空白符號分解字串

即讀取到space時是自動忽略,並且以 space 來判定一個字串的結尾。

題目範例輸入:

1 2
2 5 8 8 8 5

依第二行測資,字串會拆解為:2、5、8、8、8、5

把拆解過後的數字轉型並加總:

int sum = 0;
while ( sc.hasMoreTokens() ) {
    sum += Long.parseLong( sc.nextToken() );
}

輸出:

System.out.println(sum); //36

ps: 先拉套件進來才能正常運作

import java.util.*;
import java.math.*;