韌館-LearnHouse

Archive for the '程式&軟體' Category

利用MRTG觀看TECOM4031b數據機整體流量

為什麼今天要寫這一篇呢??主要是因為我朋友跟我抱怨說網路超級慢,想要把大量上下傳的使用者抓出來!!

我第一個念頭就是想到用MRTG,只是我沒想到架設好後好像只能偵測整體流量

有需要的朋友也可以參考一下!!其實架設MRTG裡面有很多網路管理的概念

他所用到的協定是SNMP,比較詳細的內容就自行找辜狗大師吧!

之前有迴響說要用圖示教學這樣比較應楚,但這篇可能就要大失所望了

因為我沒那麼多時間一張一張截圖,不過我會盡可能的描述清楚

首先先從硬體先說吧!!

當然要監控TECOM 4031b數據機就要在想要監控的設備開啟SNMP

登入TECOM 4031b後,進入Management -> SNMP Agent

點選SNMP Agent Enable -> Save/Apply  (其他都用預設的)

再來就是安裝軟體了

首先確定三個必要的軟體

1. Apache網頁伺服器(站長傾向用Appserv)

2.運行MRTG所要用的Perl程式(ActivePerl官方)

3.當然就是主角MRTG囉!!(MRTG官方)

分別安裝完後就是重頭戲了,要注意www的所在位置,與解壓縮MRTG後放置的地方

解壓縮MRTG後會是一個版本命名的資料夾,可以重新命名為mrtg,並在www底下建立mrtg資料夾

以我的路徑為例:解壓縮MRTG之後重新命名  ex. C:mrtg

並在www底下建立mrtg   ex. I:Appservwwwmrtg

開啟命令提示字元,切換目錄到C:mrtgbin底下

輸入:(要先切換到C:mrtg bin)
perl cfgmaker public@192.168.1.1 --global "WorkDir: I:Appserv www mrtg" --output mrtg.cfg

此時C:mrtg-2.9.27bin> 會生成 mrtg.cfg,可用記事本編輯它

1. 去掉 Options[_]: growright, bits  其面的#字號

2. 在頁尾加上 Language: big5

輸入:(要先切換到C:mrtg bin)
perl mrtg mrtg.cfg

這時再修改 mrtg.cfg 在頁尾加上 RunAsDaemon: yes

輸入:(要先切換到C:mrtg bin)

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

突破學校防火牆限制

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

就算沒鎖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