2014年12月30日 星期二

C# 從 textbox 讀進 IP位址後移除前面0的原始碼

剛好需要用到,不懂C#靠著google瞎矇搞定了,貼給需要的人

如果你讀到 IP位址格式是這樣 "172.016.001.123"

但是你的程式必須轉換成 "172.16.1.123" 格式 (不能帶前面的 "0")

把這段加進去用
(程式碼寫到剛好可用,看不慣的請自行優化)
(只有下面這段我懂,其他 C# 我都不懂)

static class Extensions
{
    public static string Right(this string value, int length)
    {
        return value.Substring(value.Length - length);
    }

    public static string RemoveUnwantedZeros(this string value)
    {
        int i;
        string subStr="";
        bool ignore = false;


        for (i = 0; i < value.Length; i++)
        {
            if (value.Substring(i, 1).Equals("."))
            {
                subStr += value.Substring(i, 1);
                ignore = false;
            }
            else if (value.Substring(i, 1).Equals("0"))
            {
                if (ignore)
                {
                    subStr += value.Substring(i, 1);
                }
            }

            else
            {
                subStr += value.Substring(i, 1);
                ignore = true;
            }
        }
        return subStr;
    }
}


然後你程式內就可以用這個功能消掉不要的 '0'

realIP = Extensions.RemoveUnwantedZeros(txtIP);

祝福你~

2014年10月24日 星期五

ASUS RT-N12 D1無法燒Tomato by Shibby磚塊解法

2014.10 買了ASUS RT-N12 D1版 無線路由器
Tomato by Shibby支援的硬體裡 便宜又易買的選擇
拿來當翻牆用的PPtP VPN server

先試了N12內建的 PPtP server
做得很標準  只能連回來存取家裡網路的NAS跟PC

改燒Tomato韌體時 發現沒預期中簡單

網路上大家都說
插電時按住reset十秒左右 就會進入急救(recovery)模式
再用ASUS官網的Firmware Restoration軟體就可以硬燒

試了無數多次 這台完全進不了狀況

乾脆心一橫  改採極端的磚塊製造模式
(以下步驟,不想機器真的變磚塊的請勿模仿)

1.從官網下載原廠韌體
2.登入N12網頁進行韌體更新
3.進行到一半(我是讓它跑到90%確定正在寫flash)
4.拔電...

終於  它掛了!

重開幾次之後  在嘗試用瀏覽器登入192.168.1.1

哈~ Broadcom好樣的
Bootloader裡還有簡易版的web server讓你重燒韌體

就這樣把tomato-K26-1.28.RT-N5x-MIPSR2-123-Max.trx燒進去

重新開機後  番茄icon出現在瀏覽器tab上

大功告成!


2014年7月24日 星期四

dhcpd.conf 裡自訂 option 時的格式定義鳥問題

為這個困擾自己三個小時的鳥問題做個記錄:

想用 dhcpd 做更多事的人難免要自訂 options
翻開 dhcpd-options 說明檔會看到一段敘述

The int32 data type specifies a signed 32-bit integer. The uint32 data type specifies an unsigned 32-bit integer. The int16 and uint16 data types specify signed and unsigned 16-bit integers. The int8 and uint8 data types specify signed and unsigned 8-bit integers. Unsigned 8-bit integers are also sometimes referred to as octets.

說得很好,馬上動手改 dhcpd.conf 加入這條定義

(前略) 
option tr069_agent_switch code 200 = uint8;
(後略)

啟動 dhcp server 
/etc/init.d/dhcpd start
啊~ 錯誤!!!

/var/log/messages 多了這行
Jul 22 02:55:16 cento58 dhcpd: /etc/dhcpd.conf line 13: unknown data type uint8

照說明檔裡的順序逐一試了 int32, unit32, int16....結果是這樣
unknown data type int32
unknown data type uint32
unknown data type int16
unknown data type uint16
unknown data type int8


更怪的是貼錯誤訊息問 google,清一色是 man 檔裡的廢話

直到救星出現 http://ipxe.org/howto/dhcpd


原來要寫成這樣


(前略)
option tr069_agent_switch code 200 = unsigned integer 8;
(後略)

可以跑了....

應該是自己悟性不夠,慚愧又無奈地冷笑兩聲  

動起來就好...

2014年2月10日 星期一

Windows XP對時失敗 (無法取得RPC伺服器)

不曉得當初微軟是怎麼個想法

從第一次裝Windows XP開始
都要處理相同的問題

大致上就是電腦裝好後, 想讓它透過網路自動對時

按下那直觀又簡單的 "立即更新" 後都出現這個錯誤

取得上次同步處理狀態時,發生錯誤。無法取得RPC伺服器。



微軟網站上有個Microsoft MVP, Mr.Ramesh Srinivasan大哥

提供了直接又有效的解法

開啟 "命令提示字元" 視窗

依序打入以下指令

net stop w32time (這行可能會有錯誤,可忽略)
w32tm /register (手動加入Windows Time服務)
net start w32time (啟動Windows Time服務)


再去點 "立即更新" 看看

對時成功!


以上獻給堅持用XP但腦筋又不靈光的老怪物們

(建議各位用台灣本地SNTP server就好, 伺服器填 tick.stdtime.gov.tw)


2014年2月6日 星期四

放棄在老筆電裝 CentOS 5.10 了

從 CentOS 4.9 改安裝 CentOS 5.8 i386 再線上更新成 5.10
有線網路運作正常,無線網路還沒

狐疑 CentOS 怎沒幫忙裝上好用的圖形介面讓我能夠走
[掃描]] -> [連線] -> [輸入金鑰]  -> [連線成功] 的懶人流程

ifconfig -a 確實看到有個隱藏介面 eth1 (為何不是 wlan0?)

System --> Administration --> Network 裡 eth1 顯示
Type 確實是 Wireless

手動設定無線網路參數,改來改去都無法連線 (check cable?)
準備上 Google 找解法

lspci 得到老筆電的無線網卡晶片是

Broadcom Corporation BCM4318 [AirForce One 54g] 
802.11g Wireless LAN Controller (rev 02)

系統確實有抓到網卡,只是某個地方不太正常吧我猜


找到蠻多可能有幫助的建議
可回文者都先說到

"在 CentOS 這種 server 導向的 distro 上設定無線真的不簡單"

隱約萌生放棄的念頭


偷懶想找個掃描無線網路的程式跑看看
iwScanner 看來好用又簡單

下載回來,執行 iwscanner.py 問題一堆
首先是.py裡的 if 寫法我的 CentOS 不支援
手動改了至少十個地方,會跑了
(如果有人需要,請這裡下載)
Device的地方竟然是空的?!!!?


再查了查,似乎要自己掛上無線晶片的 firmware
下載 http://downloads.openwrt.org/sources/wl_apsta-3.130.20.0.o
再下載 bcm43xx-fwcutter-006.tar.gz 來處理它

先make
真的開始裝 firmware

export FIRMWARE_INSTALL_DIR="/lib/firmware"

./bcm43xx-fwcutter-006/bcm43xx-fwcutter -w "$FIRMWARE_INSTALL_DIR" wl_apsta-3.130.20.0.o


重開機載入 firmware (自己猜的步驟)

成功了,iwScanner 裡出現了 eth1,掃描一分鐘後列出一堆 AP

咦? 它只提供無線環境掃描,沒有提供快速設定連線的介面....

殘念!!!

再次用 CentOS 內建介面改了一點無意義的參數
依然無法連線

唉,搞了兩、三小時

煩透了決定放棄~

forum 裡前輩講的對,不懂別搞

耐心看完的朋友

對不起,這次沒幫上忙


2014年2月5日 星期三

CentOS 4.9 i386版 yum 執行失敗問題

手邊舊電腦想裝Linux湊合著當測試機

想說它規格差,裝舊系統比較不挑

燒了片 CentOS 4.9 i386 版安裝完成

確定連上 Internet 後,firefox 開網頁一切正常

想更新些套件,發現執行 yum list 或 yum update 都失敗

yum update 出現這樣的訊息:

Setting up Update Process
Setting up repositories
not using ftp, http[s], or file for repos, skipping -4 is not a valid release or hasnt been released yet
Cannot find a valid baseurl for repo: update
Error: Cannot find a valid baseurl for repo: update

這4.9版的備份iso檔多年前用過,沒印象有類似問題


終於透過 Google 查到了這段話(下方點選可連到centos.org原址)

I will removed the 4.x stuff from the mirrorlist server 
(like we have the 2.x and 3.x items).


看來是CentOS版本維護政策造成的

它們主動將已不維護且有安全疑慮的舊版從mirrorlist裡移除了


身為用戶知道原因就不強求了,重新下載安裝CentOS 5去

2014年1月16日 星期四

OSX 10.9 Mavericks透過Android手機上網

剛設定完成,方便裝又好用

搜尋了一下中文分享,下面enpan寫的這帖非常清楚

請直接參考



HoRNDIS讓Mac經Android手機以USB連線上網



以下僅補充文裡沒貼的Android 4.3手機畫面

找不到的人請自行參考:

"設定"  --> "更多內容" -->
     -->  "網路共用與可攜式無線基地台" --> "USB網路共用"


照著enpan把pkg裝完,

手機上開啟USB網路共用後OSX馬上就自動連線上網了









2014年1月15日 星期三

OSX 10.9.1同步Google Calendar問題

想把OSX 10.9.1行事曆與Android手機上的Google Calendar同步

網路上多半推薦透過Google提供的CalDav服務讓OSX自動讀取

大概都是填入這種形式的路徑


或是透過Google開發者平台


微調試了多種設定,依然是跳出 "無法驗證帳號資訊" 的錯誤訊息
(後來了解可能是因為Google要求較嚴謹的兩段式密碼驗證方式)

對岸有網友提到Google的CalDav服務已經不能用了

但Google support網站明明還有提供設定說明...


氣餒之餘,開啓Safari直接透過網頁方式登入Google使用

神奇的事發生了!

登入完成後,Safari跳出一個小視窗問我要不要將Calendar同步到電腦?

"好...好.....當然好"

然後,一切就自然無負擔的完成了


回到OSX設定裡的Internet帳號檢視被自動做了什麼設定

就一樣是剛才試過不下數十次的

帳號: abc@gmail.com
密碼: *******


哎~ 其中的奧秘,我不想知道了


for all confused OSXers