LearnHouse

Archive for the '程式&軟體' Category

突破學校防火牆限制

大學的同學跟我抱怨說他們他們政戰學校很多網頁都鎖,即時通訊也都不能用

就算沒鎖80 port可以找到web msn,但很多web IM性質的也幾乎被鎖了

所以要我架設破解的平台,當然這篇文章其實不適合寫的

因為這方法可適用於企業與學校等任何有防火牆限制

學校或企業會有如此限制就是有他的安全考量

不過網管人員也不是省油的燈,假使限制只能用公司的proxy或只能瀏覽網頁的80 443等port

這樣這個方法還是無用武之地,不過道高一尺魔高一丈,其實還是有破解的方法

但我在這就不提供怎麼做了,只講述如何利用SOCKS來突破學校防火牆 Read more...

posted by admin in 程式&軟體 and have Comments (4)

[PHP]foreach

內容來源:LINK     (此篇文章僅供站長備份參考用,固為加密文章)

PHP 4(不是 PHP 3)包括了 foreach 結構,和 Perl 以及其他語言很像。這只是一種遍歷陣列簡便方法。foreach 僅能用於陣列,當試圖將其用於其它資料型別或者一個未初始化的變數時會產生錯誤。有兩種語法,第二種比較次要但卻是第一種的有用的擴展。

foreach(array_expression as $value) statement
foreach(array_expression as $key => $value) statement

第一種格式遍歷給定的 array_expression 陣列。每次循環中,當前單元的值被賦給 $value 並且陣列內部的指針向前移一步(因此下一次循環中將會得到下一個單元)。

第二種格式做同樣的事,只除了當前單元的鍵值也會在每次循環中被賦給變數 $key

 

註: foreach 開始執行時,陣列內部的指針會自動指向第一個單元。這意味著不需要在 foreach 循環之前呼叫 reset()

 

註: 此外注意 foreach 所操作的是指定陣列的一個拷貝,而不是該陣列本身。因此即使有 each() 的建構,原陣列指針也沒有變,陣列單元的值也不受影響。

註: foreach 不支援用“@”來禁止錯誤訊息的能力。

你可能注意到了以下的代碼功能完全相同:

reset ($arr);
while (list(, $value) = each ($arr)) {
echo "Value: $value<br>n";
}

foreach ($arr as $value) {
echo "Value: $value<br>n";
}

以下代碼功能也完全相同:

reset ($arr);
while (list($key, $value) = each ($arr)) {
echo "Key: $key; Value: $value<br>n";
}

foreach ($arr as $key => $value) {
echo "Key: $key; Value: $value<br>n";
}

示範用法的更多例子:

/* foreach example 1: value only */

$a = array (1, 2, 3, 17);

foreach ($a as $v) {
print "Current value of $a: $v.n";
}

/* foreach example 2: value (with key printed for illustration) */

$a = array (1, 2, 3, 17);

$i = 0; /* for illustrative purposes only */

foreach($a as $v) {
print "$a[$i] => $v.n";
$i++;
}

/* foreach example 3: key and value */

$a = array (
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => 17
);

foreach($a as $k => $v) {
print "$a[$k] => $v.n";
}

/* foreach example 4: multi-dimensional arrays */

$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach($a as $v1) {
foreach ($v1 as $v2) {
print "$v2n";
}
}

/* foreach example 5: dynamic arrays */

foreach(array(1, 2, 3, 4, 5) as $v) {
print "$vn";
}
posted by admin in 程式&軟體 and have Comment (1)

[PHP]全域變數-global

內容來源:Link    (此篇文章僅供站長備份參考用,固為加密文章)

變數的範圍即它定義的上下文背景(譯者:說白了,也就是它的生效範圍)。大部分的 PHP 變數只有一個單獨的範圍。這個單獨的範圍跨度同樣包含了 include 和 require 引入的文件。範例:

<?php
$a = 1;
include "b.inc";
?>

這裡變數 $a 將會在包含文件 b.inc 中生效。但是,在用戶自定義函式中,一個局部函式範圍將被引入。任何用於函式內部的變數按預設情況將被限制在局部函式範圍內。範例:

<?php
$a = 1; /* global scope */

function Test()
{
echo $a; /* reference to local scope variable */
}

Test();
?>

這個腳本不會有任何輸出因為 echo 語句引用了一個局部版本的變數 $a, 而且在這個範圍內,它並沒有被設值。你可能注意到 PHP 的全域變數和 C 語言有一點點不同,在 C 語言中,全域變數在函式中自動生效,除非被局部變數覆蓋。這可能引起一些問題,有些人可能漫不經心的改變一個全域變數。 PHP 中全域變數在函式中使用時必須申明為全域。例如:

<?php
$a = 1;
$b = 2;

function Sum()
{
global $a, $b;

$b = $a + $b;
}

Sum();
echo $b;
?>

以上腳本的輸出將是 "3"。在函式中申明了全域變數 $a$b,任何變數的所有引用變數都會指向到全域變數。對於一個函式能夠申明的全域變數的最大個數,PHP 沒有限制。

在全域範圍內連接變數的第二個辦法,是用特殊的 PHP 自定義 $GLOBALS 陣列。前面的例子可以寫成:

<?php
$a = 1;
$b = 2;

function Sum()
{
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}

Sum();
echo $b;
?>

$GLOBALS 陣列中,每一個變數為一個元素,鍵名對應變數名,值變數的內容。$GLOBALS 之所以在全域範圍內存在,是因為 $GLOBALS 是一個 superglobal 變數。

posted by admin in 程式&軟體 and have No Comments

[Java]autoboxing與unboxing

內容來源良葛格學習筆記    (此篇文章僅供站長備份參考用,固為加密文章)
 

在Java中,所有您要處理的東西「幾乎」都是物件(Object),例如您之前所使用的Scanner是物件,字串(String)是物件,您之後還會看到更多的物件。

然而有些是例外,基本(Primitive)資料型態不是物件,也就是您使用int、double、boolean等宣告的變數,以及您在程式中直接寫下的字面常量。

使用Java有一段時間的人都知道,有些時候您需要將基本型態轉換為物件,例如使用Map時,要使用put()方法時需要的是物件而不是基本型態。

您要使用包裹型態(Wrapper Types)才能將基本資料型態包裝為物件,例如在 J2SE 1.4.2 之前,您要如下才能將int包裝為一個Integer物件:

Integer integer = new Integer(10);

J2SE 5.0 之後您可以這麼寫:

Integer integer = 10;

事實上編譯器在背後自動根據您寫下的陳述,為您進行自動裝箱(Autoboxing)動 作,同樣的動作可以適用於 boolean、byte、short、char、long、float、double等基本型態,分別會使用對應的包裹型態(Wrapper Types)Boolean、Byte、Short、Character、Integer、Long、Float或Double。

自動裝箱運用的方法還可以如下:

int i = 10;
Integer integer = i;

 
您也可以使用更一般化的Number,例如:

Number number = 3.14f;

3.14f會先被自動裝箱為Float,然後指定給number。

J2SE 5.0中可以自動裝箱,也可以自動拆箱(Unboxing),例如下面這樣寫是可以的:

Integer fooInteger = 10;
int fooPrimitive = fooInteger;

 
在運算時,也可以自動裝箱與拆箱,例如:

Integer i = 10;
System.out.println(i + 10);
System.out.println(i++);

上例中會顯示20與10,編譯器會自動幫您進行自動裝箱與拆箱,即10會先被裝箱,然後在i + 10時會先拆箱,進行加法運算;i++該行也是先拆箱再進行遞增運算。再來看一個例子:

Boolean boo = true;
System.out.println(boo && false);

同樣的,先將boo拆箱,再與false進行AND運算,結果會顯示false。

posted by admin in 程式&軟體 and have No Comments

Here are my pictures from my vacation

MSN又出現新的變種病毒了,這支蠕蟲已有好幾個變種

今天早上醒來,發現從同學的MSN傳來一些訊息

當時我也沒注意到那串字,只注意到下面的一個檔案myalbum2007.zip

以為是他暑假去玩的照片,所以不假思索的就下載了!! 

 

 

 

posted by admin in 程式&軟體 and have No Comments

Allowed memory size of 8388608 bytes exhausted

一直以來發現在發表迴響或新增文章時

有時候都會出現:

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 393216 bytes)

但有時候卻又很正常而不會顯示這類的錯誤

本來想說反正出現錯誤也有正常發表,所以就沒管它了

今天有空就來給他看一下這問題出在哪

按照Allowed memory size of 8388608 bytes exhausted這句簡短的語句來判斷

應該不難找出問題點,大意就是說允許記憶體大小比8388608 bytes多一點

所以問題應該出現在記憶體給的不夠大吧!!

原來是memory_limit 的預設值通常為 8M,而LifeType需要約8.3M

所以啦!!就把它改大一點就沒事囉!!由於這個錯誤是隨機的,有時候會很正常

所以如果還有人在我的網誌中迴響時出現錯誤時,麻煩回報一下!!

好啦!!廢話不多說,來說一下有哪些改善的方法:

  1. 自架主機
  2. 如果是自己架站的話,管理員的權限是最大的,修改php.ini檔裡的memory_limit,可以設定memory_limit = 16M(或更大)

  3. 虛擬主機
  4. 修改 .htaccess 檔,新增一段語法php_value memory_limit 16M(或更大)

posted by admin in 程式&軟體 and have No Comments