設定與解除封鎖IP

設定封鎖 IP
#iptables -I INPUT -s xxx.xxx.xxx.xxx -j DROP :  加在第 1 筆
#iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP :  加在最後 1 筆

解除封鎖 IP
#iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP

Block 192.168.1.*
#iptables -I INPUT -s 192.168.1.0/24 -j DROP

Block 192.168.*.*
#iptables -I INPUT -s 192.168.0.0/16 -j DROP

Block 192.*.*.*
#iptables -I INPUT -s 192.0.0.0/8 -j DROP

動態排序後執行function

var queue = [];

$scope.queue = [
{
‘key’: ‘KEY’,
‘value’: get from DB,
‘func’: runSomething
},
{
‘key’: ‘KEY_1’,
‘value’: get from DB,
‘func’: runSomething_1
}
];

// 排序
$scope.queue = $filter(‘orderBy’)($scope.queue, ‘value’, true);

queue = angular.copy($scope.queue);

 

function execQueue() {
if (queue.length === 0 ) {
$scope.finish();
} else {
var funcObj = queue.shift();
funcObj.func();
}
}

function doConfirm(type, msg) {
switch (type) {
case ‘2’:
confirm(msg[‘2’])
.then(function () {
execQueue();
});
break;
case ‘3’:
alert(msg[‘3’]);
break;
default:
execQueue();
break;
}
}

 

function runSomething() {
if (condition1) {
execQueue();
} else {
if (condition2) {
doConfirm();
} else {
execQueue();
}
}

}

function runSomething_1() {
if (condition1) {
execQueue();
} else {
if (condition2) {
doConfirm();
} else {
execQueue();
}
}
}

 

date.timezone

PHP 5開始,date.timezone 一開始是未設置,所以在使用date相關的函式的時候,時間會對不起起來,因此必須去設定date.timezone的值,

1.使用php.ini

[Date]
;date.timezone =

改為
[Date]
date.timezone = “Asia/Taipei”

將前面的冒號 ; 拿掉,然後重新啟動apache。

 

2.使用 php function

php的檔案內,增加一行設定,
date_default_timezone_set(“Asia/Taipei”)

angular-vs-repeat

來源: https://github.com/kamilkp/angular-vs-repeat

在實作中,
1. 使用 vs-repeat 搭配 ng-repeat 時,html可以產生固定的列數,比如 6~8 列,當資料源大於 8 時,會動態移動資料源的指標,讓資料動態顯示在 html裡。

2.如果僅使用ng-repeat 時,資料源有幾筆,在html裡,就會產生幾列。

 

Javascipt的{}大括號和[]中括號的用法

Javascipt的{}大括號和[]中括號的用法

一、{} 大括號,表示定義一個物件,需要有成對的屬性和值,或是函數。
如:var object = {
id: “123”,
name: “john”
};

上面宣告一個 object 的物件,多個屬性或函數用,(逗號)隔開,因為是物件的屬性,
在訪問時,
(1)用.(點)來層層訪問,如: object.id 或 object.name,
(2)也可以用數組的方式來訪問,如: object[“id”] 、 object[“name”],
得到的結果是一樣的。

另外,寫函數組的時候,如:
var object = {
id = function{
return “123”;
},
name = function{
return “john”;
}
}
在調用時,因為是函數組物件,所以必須加上.(點),如:console.log(object.id);

 

二、[]中括號,表示一個數組,也可以理解為一個數組物件。
如:var object = [ “id”, “123”, “name”, “john” ];
每個值或函數,都是各自獨立的,每個值間需用,(逗號)隔開,

因為是數組物件,所以也等於:
var object = Array( “id”, “123”, “name”, “john” );
訪問時,使用數組調用,如:console.log(object[0]);

 

三、{}與[]和 一起使用時,{}是一個物件, []是一個數組,
當組成一個物件數組時,如:
var object = {
“id”: “123”,
“name”: [“firstName”, “john”],
“lucky”:[
{“animal”: “dog”},
{“animal”: “cat”},
{“animal”: “dragon”}
]
}

從結構來說,object 物件裡面的第一項是個屬性,第二項是一個數組,第三個是包含有多個物件的數組。

調用時,也是一層一層的訪問,物件的屬性用.(點),數組用[索引值]。
如:console.log(object.lucky[1].animal);

sshd 停用 root 遠端登入

1.  編輯 ssh 設定檔 sshd_config。
#vi / etc / ssh / sshd_config

# Authentication:
#LoginGraceTime 2m
PermitRootLogin yes  # 預設為 yes,要改為no。

2.重新啟動 ssh server 服務。
#service sshd restart

 

PHP array的extract

資料來源
http://php.net/manual/en/function.extract.php
http://www.w3school.com.cn/php/func_array_extract.asp

/* Suppose that $var_array is an array returned from   wddx_deserialize */

$size = “large”;
$var_array = array(
“color” => “blue”,
“size”  => “medium”,
“shape” => “sphere”
);
extract($var_array, EXTR_PREFIX_SAME, “wddx”);

echo “$color, $size, $shape, $wddx_size\n”;

The above example will output:

blue, large, sphere, medium

 

語法

extract( array , extract_rules , prefix )
參數 描述
array 必需。規定要使用的數組。
extract_rules 可選。extract() 函數將檢查每個鍵名是否為合法的變量名,同時也檢查和符號表中已存在的變量名是否衝突。對不合法和衝突的鍵名的處理將根據此參數決定。

可能的值:

  • EXTR_OVERWRITE – 默認。如果有衝突,則覆蓋已有的變量。
  • EXTR_SKIP – 如果有衝突,不覆蓋已有的變量。
  • EXTR_PREFIX_SAME -如果有衝突,在變量名前加上前綴prefix
  • EXTR_PREFIX_ALL -給所有變量名加上前綴prefix
  • EXTR_PREFIX_INVALID -僅在不合法或數字變量名前加上前綴prefix
  • EXTR_IF_EXISTS – 僅在當前符號表中已有同名變量時,覆蓋它們的值。其它的都不處理。
  • EXTR_PREFIX_IF_EXISTS – 僅在當前符號表中已有同名變量時,建立附加了前綴的變量名,其它的都不處理。
  • EXTR_REFS – 將變量作為引用提取。導入的變量仍然引用了數組參數的值。
prefix 可選。請注意prefix僅在extract_type的值是EXTR_PREFIX_SAME,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID或EXTR_PREFIX_IF_EXISTS時需要。如果附加了前綴後的結果不是合法的變量名,將不會導入到符號表中。

前綴和數組鍵名之間會自動加上一個下劃線。

物件與函式的傳址呼叫

文章來源
http://www.php5.idv.tw/bb-1646.htm

作 者: sparkler

==============================================================================
//在 PHP 5 裡面,
//運算元若為物件, =號後面運算式 若有& 代表位置相同, 而不是拷貝結構
//記憶體實際上只有一份
//而且 PHP 5 即使是透過 function 傳遞, 只要變數是物件 不論有無加 &
//都是傳址呼叫

class PObject{
var $i;
}

$lpObject1 = new PObject();
$lpObject1->i = 123;
$lpObject2 = $lpObject1;
echo $lpObject2->i.'<br/>’; //出現 123
$lpObject3 = &$lpObject1;
echo $lpObject3->i.'<br/>’; //出現 123

unset($lpObject1);
echo $lpObject2->i.'<br/>’; //出現 123
echo $lpObject3->i.'<br/>’; //出現 123

$lpObject2->i = 1234;
echo $lpObject3->i.'<br/>’; //出現 1234 不管是不是用 & 生成的變數

// PHP 5 即使是透過 function 傳遞, 只要變數是物件 不論有無加 &
//都是傳址呼叫

function foo1($m){
echo $m->i.'<br/>’; ; //出現 1234
$m->i = 456;
}

foo1($lpObject2);
echo $lpObject2->i.'<br/>’; //出現 456

function foo2(&$n){
echo $n->i.'<br/>’; //出現 456, 因為 $lpObject3 和 $lpObject2 是同一個記憶體
$n->i = 789;
}

foo2($lpObject3);
echo $lpObject3->i.'<br/>’; //出現 789
echo $lpObject2->i.'<br/>’; //出現 789 因為 $lpObject3 和 $lpObject2 是同一個記憶體

//PHP5 若有多個物件變數指向同一份記憶體
//則當所有指向同一份記憶體的變數全部都 unset 才會真正清除該記憶體
unset($lpObject2);
echo $lpObject3->i.'<br/>’; //$lpObject2 和 $lpObject3 相同記憶體, unset $lpObject2 後仍然出現 789

//但是當變數用來存放非物件 比如說整數,
則 function 裡面有 &$i 表示傳址, 不加 & 表示傳值
等號表示拷貝記憶體變成不同的兩塊
就是說單純型別時 =& $i 和 = $i 意義不同
就是說物件型別時 =& $i 和 = $i 意義相同
?>

^_^ 小心用囉, 包括 unset 和 =號 和 &
意義都和 PHP4 不同

==============================================================================
//function(參數…) 參數宣告沒有加 & 表示傳值呼叫
//則宣告的參數將會生成於 function 的開始符號 {
//摧毀於 結束符號 }
//就是說 function 內宣告的參數和呼叫來源傳入的參數 是不同的記憶體
//變數生命週期於 function

function foo($input,$y){
$input = ‘aaa’;
$y = ‘bbb’;
}
$x = 123;
$y = 456;
foo($x,$y);
echo $x; //出現 123
echo $y; //出現 456

//在 function 的宣告式 將參數加上 & 符號, 表示傳址呼叫
//不論傳入前的名稱 是否和宣告的參數名稱是否相同 都會按照順序配對記憶體相同
//如下 $x 和 function 裡面的 $input 的記憶體相同
// $y 和 function 裡面的 $y 的記憶體相同
//既然記憶體相同 那麼 function 裡面的變數一但變更 所有對應的相同的記憶體的變數 echo 結果當然一樣
function foo2(&$input,&$y,$qoo){
echo $input;
echo $y;
echo $qoo;
$input = ‘aaa’;
$y = ‘bbb’;
$qoo = ‘3388’; //function 結束標記 } 時摧毀 $qoo
//…
//…
}
$x = 123;
$y = 456;
$zoo = ‘2266’;
foo2($x,$y,$zoo);
echo $x; //出現 aaa
echo $y; //出現 bbb
echo $zoo; //出現 2266

// PHP 不支援指標運算, 所以 & 在等號之後不能進行運算式
$input1 = 1;
$input1 = &$input1; //可以這樣寫 奇怪的寫法 對 C++ 而言是指標, 但 沒什意義等同 $input1 = $input1; //執行期解譯不會錯誤
//echo *$input; ///錯 不能這樣寫, PHP 不支援 * 用法, echo *$input 這是 C++ 的用法
echo $input1;
$input2 = &$input1; //可以這樣寫 表示兩個變數是同一個記憶體
echo $input2;
//$input = &$input + 1; //可以這樣寫 不會發生執行期解譯錯誤, 但是等同 $input = $input
//$input = (&$input + 1); //錯 不能這樣寫 發生執行期解譯錯誤
//$input = &($input + 1); //錯 不能這樣寫 發生執行期解譯錯誤
//$input2 = (&$input) + 1; //錯 不能這樣寫 發生執行期解譯錯誤