This page looks plain and unstyled because you're using a non-standard compliant browser. To see it in its best form, please visit upgrade to a browser that supports web standards. It's free and painless.

James の Blog::空中的向日葵 會員登入 會員註冊

今天上站來一看,上一篇PO文都是去年聖誕節的事了

真是一年容易又一年啊

為何今天想上站來呢?

是想分享一個程式給大家,是什麼程式呢?

不是別的,就是賓果遊戲券產生器

雖然尾牙的時間已過(今年還是得到不錯的獎品與獎金 $_$),不過春節聯歡也是OK的啦!

 (閱讀全文)
http://ithelp.ithome.com.tw/question/10016594我是沒有參與訂票也沒有看相關的新聞報導

個人比較贊同 fillano 大的回答
就資料庫而言給定 sequencial 欄位或是 identity 欄位即可輕易抓取前 100 筆記錄

程式在進入的頁面上,設計先取得目前資料庫中已有多少筆記錄,超過 100 就就導向「謝謝再聯絡」的頁面,根本不會寫到資料庫。
如果同時間取得的筆數小於 100,那在submit之後由程式去控制,回應給程式的 nbr 超過 100,就導向「謝謝再聯絡」的頁面,這樣就能夠控制100張票,不需要 Lock不Lock Talbe或Transaction的問題,由資料庫自行 Handle 即可

要不要控制170萬人次/秒的點擊?我想華航本身或委包的廠商可能也沒有想過這個問題

而如何處理170萬人次/秒的點擊而網站不掛點?只要 Web Server 與其硬體等級夠強悍加上 load balance 機制去分流(不過前提是 load balance機器要能撐住),瞬間流量的問題,只要華航與 ISP 協調過,應該不是問題
資料庫伺服器本身的硬體規格也要夠高,在同一時間寫進資料庫的筆數會有多少,要看資料庫伺服器本身如何去處理這些Traction,所以真正寫進資料庫的紀錄有多少不會曉得,
但是只要取前 100 筆即可2009-01-22 09:01:48 補充
http://ithelp.ithome.com.tw/question/10015233System.NullReferenceException
將物件參考設定為物件的執行個體的概念,請參考微軟論壇的回覆
如何將物件參考設定為物件的執行個體???
有的 Client 可以運作,有的不行
我遇過的情況是使用 DataReader 來擷取資料,如果您的 Connection 沒有初始化
或者是透過別的方式建立 Connection 如自訂 Class 中初始化 Connection 然後供程式使用
時會發生

發生的原因有可能是 Connection 已經 Timeout 掉了
或者是在程式的某處將 Connection Release 了,但後面的程式仍然參考該 Connection 所致

至於為什麼有些 Client 可以有些 Client 不行
這是因為 .Net 使用了跟 Java 一樣的 Garbage Collection,雖然讓 Connection=Nothing 但在資源中並未真正 Release 掉
所以有些 Client 還是可以使用到該 Connection,所以會正常(可以下 GC.Collect() 來回收)

以上是個人的經驗與看法,並不代表一定正確

Excel 是一個相當好用的工具,提供了相當多的內建函數與巨集可以讓我們做出相當漂亮與豐富的報表。

但對於習慣寫程式或者是需要使用 Excel 來當作程式主體的人來說,這些 Menu Bar 可以說是擾亂程式的元兇。

所以本篇就要介紹,如何關掉 Excel 的 Menu Bar,讓 Excel 看起來乾乾淨淨。

其實只有一個指令,

  1. Application.CommandBars("Worksheet Menu Bar").Enabled=False
這個指令是將主 Menu 關掉的意思,其他的像 ToolBar 等都還會存在。

如果您只想要關掉某些功能呢?

首先您要知道那些功能的名稱是什麼,怎麼知道呢? Google? 可能找到的都是片段,可以透過一段程式將所有的 Menu Bar 名稱 Show 出來,如下面這一小段程式碼
  1. Dim oBar as CommandBar
  2. For Each oBar in Application.CommandBars
  3. Debug.Print oBar.Name
  4. Next
這樣就可以知道有哪些 Menu Bar 存在於 Excel 中,所以將這些名稱透過 Application.CommandBars 的指令,一一把它關掉即可。

您必須在一開啟 Workbook 時就去下這一段的指令(在 ThisWorkBook當中),如:
  1. Private Sub Workbook_Open()
  2. Application.CommandBars("Worksheet Menu Bar").Enabled=False
  3. End Sub
將上述的動作寫成了一個 VB Module,提供開關的方式供網友參考。有些功能表的名稱需要對照(或Google)一下,或是測試一下關掉的是哪一個部份。也歡迎網友修正後再分享出來。

原始碼:mdlMenu.bas

如果是刪掉 Excel 內建的功能表
可以在Excel 的 工作表標籤上按右鍵,選檢視程式碼
開啟 VBA Editor,然後在 ThisWorkbook 中加入

  1. Private Sub Workbook_Open()
  2. Application.CommandBars("worksheet menu bar").reset
  3. End Sub
即可將 Menu 回復(沒試過)

參考資料:http://qa.pcuser.com.tw/modules/newbb/viewtopic.php?viewmode=flat&topic_id=25382&forum=24

今天 Google 時,發現了一篇很詳盡的文章
http://www.rondebruin.nl/menuid.htm

http://ithelp.ithome.com.tw/question/10014166提供一個我抓取銀行匯率的作法供您參考
我是撰寫 VB.Net 的 AP,在上頭放一個 Web Browser Control
首先讓 Browser 去連覽網頁
  1. WebBrowser1.Navigate(My.Settings.RateURL)

然後在 WebBrowser1 的 DocumentCompleted 事件撰寫 Parsing 程式
主要是判斷您要得資訊是存在哪一個儲存格(TD Cell)然後透過 .innerText 的方式,將值取出

這是一般網頁沒有提供 XML data 時的作法,缺點是當網頁格式變動程式也要跟著修改,而且這樣做其實是有點偷懶,沒有真正利用 DOM 的結構(程式還可以更精進一些)

另外要如何去抓取到正確的 cell?可以透過 IE 的 Web Developer Toolbar 或 Firefox 的 Firebug 來解析 DOM 的結構
  1. Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
  2. Try
  3. Dim objDocument As HtmlDocument
  4. Dim allTDs As Object
  5. objDocument = WebBrowser1.Document
  6. allTDs = objDocument.GetElementsByTagName("td")
  7. If Not allTDs Is Nothing Then
  8. oRate.usd_in = CDbl(allTDs.Item(My.Settings.usd_in).innerText)
  9. oRate.usd_out = CDbl(allTDs.Item(My.Settings.usd_out).innerText)
  10. oRate.hkd_in = CDbl(allTDs.Item(My.Settings.hkd_in).innerText)
  11. oRate.hkd_out = CDbl(allTDs.Item(My.Settings.hkd_out).innerText)
  12. oRate.jpd_in = CDbl(allTDs.Item(My.Settings.jpd_in).innerText)
  13. oRate.jpd_out = CDbl(allTDs.Item(My.Settings.jpd_out).innerText)
  14. oRate.eur_in = CDbl(allTDs.Item(My.Settings.eur_in).innerText)
  15. oRate.eur_out = CDbl(allTDs.Item(My.Settings.eur_out).innerText)
  16. oRate.rmb_in = CDbl(allTDs.Item(My.Settings.rmb_in).innerText)
  17. oRate.rmb_out = CDbl(allTDs.Item(My.Settings.rmb_out).innerText)
  18. oRate.rate_date = Format(Now().AddDays(1), "yy/MM/dd")
  19. oRate.Update_Rate() ' 更新 ERP 匯率資料
  20. End If
  21. WebBrowser1.Dispose()
  22. Catch ex As Exception
  23. ExceptionHandler(ex, Application.ProductName & ":" & Me.Name & ":WebBrowser1_DocumentCompleted")
  24. Finally
  25. oRate = Nothing
  26. End
  27. End Try
  28. End Sub

可以透過排程的方式,每天固定時間去讀取運彩網站的資料,將讀取到的資料儲存在您的 Database 中,網頁直接將 Database 中的資料 Show 出即可

另外不透過這種方式,您可能要在網頁的程式中寫一個 Parser 去 Parsing 運彩網站的網頁資料,然後透過 CSS 將資料整合在你的網頁中,這樣資料是同步的,但 Sorry 我沒有這樣做過
http://ithelp.ithome.com.tw/question/10010361方式有很多種,使用 IE 元件/Winsock/Win32API 都可以 最偷懶的方式,您可以拉一個 Web Browser 元件(可以把他的 visible 設成 false),將參數組成 URL 的 QueryString 然後用 Navigate 的方式去瀏覽組好的 URL 這樣就可以將參數傳給 ASP 程式了 (詳細作法再找給您) http://www.vbforums.com/showthread.php?t=384076 該篇講解得很詳細,可以參考看看
http://ithelp.ithome.com.tw/question/10010273在您的 input textbox 中加上 autocomplete=off 屬性即可

  1. <input type="text" name="name" AUTOCOMPLETE="OFF">


請參考這篇有詳盡的描述

What is autocomplete?

參考資料:Google autocomplete off

http://ithelp.ithome.com.tw/question/10008545
根據 PCHome 首頁的原始碼
他是透過 CSS & Javascript 做出來的

最簡單的方式就是將他的首頁存下來(要存完整 HTML,IE 反正就是要連 js & css 一起存起來),再去 study 一下他的寫法即可

(不過他的 js 不一定存的下來就是)

  1. <script language="JavaScript" type="text/JavaScript" src="js/index.js?1220669429"></script>
  2. <link href="css/pcstyle.css" rel="stylesheet" type="text/css">
  3. <!-- 區塊一 -->
  4. <div id="forad">
  5. <div id="mnavob1">
  6. <span class="mnavbl"></span>
  7. <span class="mnavb11"><div id="mnav_7" name="mnav1"><a href="counter.php?sid=114564" name="block_a" onmouseover="setCSS2(7,1,this)">線上購物</a></div></span>
  8. <span class="mnavb11"><div id="mnav_6" name="mnav1"><a href="counter.php?sid=114565" name="block_a" onmouseover="setCSS2(6,1,this)">24h購物</a></div></span>
  9. <span class="mnavb11"><div id="mnav_29" name="mnav1"><a href="counter.php?sid=114567" name="block_a" onmouseover="setCSS2(29,1,this)">樂屋網</a></div></span>
  10. <span class="mnavb11"><div id="mnav_5" name="mnav1"><a href="counter.php?sid=114568" target="_blank" name="block_a" onmouseover="setCSS2(5,1,this)">觀光旅遊</a></div></span>
  11. <span class="mnavbn"><div id="mnav_4" name="mnav1"><a href="counter.php?sid=114569" name="block_a" onmouseover="setCSS2(4,1,this)">露天拍賣</a></div></span>
  12. <span class="mnavbr"></span>
  13. </div>
  14. <div id="mainb1">&nbsp;</div>
  15. </div>
  16. <!-- 區塊一 end-->
<script language="JavaScript" type="text/JavaScript" src="js/index.js?1220669429"></script>
<link href="css/pcstyle.css" rel="stylesheet" type="text/css">
<!-- 區塊一 -->
<div id="forad">
<div id="mnavob1">
<span class="mnavbl"></span>
<span class="mnavb11"><div id="mnav_7" name="mnav1"><a href="counter.php?sid=114564" name="block_a" onmouseover="setCSS2(7,1,this)">線上購物</a></div></span>
<span class="mnavb11"><div id="mnav_6" name="mnav1"><a href="counter.php?sid=114565" name="block_a" onmouseover="setCSS2(6,1,this)">24h購物</a></div></span>
<span class="mnavb11"><div id="mnav_29" name="mnav1"><a href="counter.php?sid=114567" name="block_a" onmouseover="setCSS2(29,1,this)">樂屋網</a></div></span>
<span class="mnavb11"><div id="mnav_5" name="mnav1"><a href="counter.php?sid=114568" target="_blank" name="block_a" onmouseover="setCSS2(5,1,this)">觀光旅遊</a></div></span>
<span class="mnavbn"><div id="mnav_4" name="mnav1"><a href="counter.php?sid=114569" name="block_a" onmouseover="setCSS2(4,1,this)">露天拍賣</a></div></span>
<span class="mnavbr"></span>
</div>
<div id="mainb1">&nbsp;</div>
</div>
<!-- 區塊一 end-->

[-隱藏]

回應 jamesjan

fillano 說:

我用firefox+JSView,按一個按鈕就可以抓下全部的script跟css。如果用webdeveloper,還可以抓下被javascript修改過的html source。

2008-09-07 07:33:28

fillano 說:

setCSS2函數在index.js裡面。

http://ithelp.ithome.com.tw/question/10008034

我自己的習慣是在 View 方面以 vw_ 為 prefix
Trigger -> tri_
Stored Procedure -> sp_
Index -> idx_
Table -> tbl_ (比較少用,通常以其命名為主,不做區分,因為還是以 Table 為主體)
Function -> fn_
User Defined Type -> udt_

這樣的好處是,您在程式中有撰寫 SQL Statement時,可以很清楚知道他是放在什麼位置的
我的 RDBMS 通常為 MS SQL Server

通常如果是專案所需,或有跨 Database 的 issue
還會將專案代碼帶入 物件的命名規則中
如 專案代碼 wms 我要讓別的專案使用到我的 table 時
我會在 Table 上命名 wms_Cell_Code
這樣就可以知道這個 Table 是在 WMS 這個 Database 中

Table 的命名規則

Item

prefix

Primary Key

Tablename

Employee

emp

emp_id (Identity 1,1)

emp_employee

Company

cmp

cmp_id (Identity 1,1)

cmp_company, cmp_dept

Function

fun

fun_id (Identity 1,1)

fun_function

Customer

cst

cst_id (Identity 1,1)

cst_customer

User

usr

usr_menu

System

Sys

sys_menu

http://ithelp.ithome.com.tw/question/10007744
還是一句老話,一理通百理通
學程式語言其實不難,難在怎麼寫得好,怎麼寫得上手
網際網路的時代,靠書學習,會趕不上,也很浪費廣大的資源
Google 是你的圖書館,也是你的 Library & Help

看工作所需,重點在邏輯的思考能力與工具的運用
觀念通,工具的好壞(正確應該說使用的上手程度),在於您投入多少時間在上頭

學 Java 一本書必須要熟讀
Thinking in Java


這個網站您也不能錯過

JavaWorld@TW

如果要談開發工具發展史
我們從 Delphi 這個工具看起
在視覺開發工具還停留在拖拉放的年代
Delphi 是第一個將開發 UI 以物件導向的觀念呈現的第一套工具
(UI 也是一種 Class 的 Define)
Delphi 深度歷險 您絕對要努力造訪
(也有 C++ Builder 深度歷險)作者官網
傳奇性人物 李維 他同時也是 C++ Builder 的高手

後期的開發工具,多少都受到 Delphi 的激勵或影響(如 C++ Builder/JBuilder),帶來相當大的變革
(微軟更是將整個 Delphi Team 挖走,產生 Visual Studio .Net 這套工具
從 .Net 用的 Imports 與 System 物件庫可以看出端倪)

Pascal 是一種高階的結構化程式語言,定義相當嚴謹,語法也很優雅
在程式語言當中,可比擬做 法語
寫的人有優越感,可是講的人少,但是不容忽略

Eclipse 的前身,記得沒錯的話是 IBM 的 Visualage for Java
這算是 IBM 對 Open Source 的最大貢獻
以開放式 Shell 的架構,提供各種 Plug-in 共同運作的平台

幾個社群絕對要去參拜

JavaWorld@TW Eclipse

中国Eclipse社区
http://ithelp.ithome.com.tw/question/10002665Java 是比較學院派的產物(雖然他是很實務面的產品),定義嚴謹,所以會受到學院派的教授歡迎

另外一點就是授權費用的問題,用 .Net 你還是必須付給微軟教育版的授權費
在大學教育經費自主化的情況下,免費及 Open Source 當然會受到更多的青睞

當然微軟也不會小墟教育單位這一塊,畢竟由鄉村包圍城市才是致勝的戰略
學校訓練愈多微軟的信徒,企業就愈容意成為微軟的禁臠
http://ithelp.ithome.com.tw/question/10007389
要學好物件導向,不得不把神主牌搬出來了
他就是 侯捷(走過那個美好年代的人不認識他?別混了)
要常常跟他上香(不是啦 他依然健在 是感念他對資訊界的貢獻)

C++ Primer 3/e 中文版 . 2001修訂版

不然三劍客,劉燈 賀元 賴明宗 的書 也很值得一讀(2000年網路泡沫時代,賀元的 資訊人 與 酷必得 轟動一時)

世紀末軟體革命復刻版:C++、GUI與物件導向理論

唉 不知不覺又暴露我的年紀

http://ithelp.ithome.com.tw/question/10007347

程式人人會寫,各有巧妙不同

當你看到一段寫得很簡捷的程式碼時,會不會有如獲至寶之感?
當你摸索了一段演算法,會不會有驀然回首,伊人就在燈火闌珊處?

或許我們不必全然成為頂尖的程式設計師,但懂得如何用簡單有效的方法來處理問題,是我們可以學習的地方

本書是繼 程式之美-微軟技術面試心得之後,MSDN又一本好書
值得一看

作者簡介:
Ozy (本名岡田佑一) 出生於日本大阪府的一位 Short Coder。作者花費相當長的時間提升名為短碼編程的技術,而且將其發表成為一種「技能」。筆名為 Ozy。作者對於一般的程式當然也能編寫,本身擁有經營補習班的經歷,目前持續研究有關於數學教育以及程式設計師培育工作。

本書簡介:
「Short Coding -寫短碼」是指一邊探討程式原始碼可以縮到多短,一邊研究資料結構、演算法、執行環境的過程。程式高手可透過思考如何寫出簡捷好程式的過程,加強其邏輯思 考與解決問題的能力,甚至對數學、資料結構與演算法等的活用有更多的體會。「寫短碼」可是涵蓋了程式設計者的思考方式、程式語法功力、和哲學思維的本質。

本書有非常多的範例題型可讓您體會如何寫短碼,作者除了說明解題的思考方式,並傳授不同程式語法及其深入應用的經驗,在縮短原始碼的過程式中對程式語法、函式庫和程式環境有更深入的了解,是想要訓練和提升程式設計功力的讀者不可少的參考用書。

本書目錄:

Chapter 1:短碼入門

1-1:開始寫短碼
1-2:戰場 ~線上評分系統~
1-3:動手試試 ~寫短碼的基礎~
1-4:暖身
COLUMN POJ 的記憶體用量測定程式

Chapter 2:必見!超絕技巧

2-1:把規則發揮到極致
COLUMN 寫短碼時不可欠缺的 De Morgan 定理
2-2:Quick Sort Hack COLUMN 很大的數字
2-3:精通函式庫功能
2-4:確實精簡 1 byte 的靠山
2-5:超魔法.位元運算
2-6:精通指標
2-7:數學問題
2-8:精通演算法
COLUMN 計算量的數量級
2-9:數字的新常識
2-10:1 byte 的熱情

Chapter 3:短碼研究

3-1:邁向進階技巧
3-2:精簡迴圈
3-3:功能強大的擴充語法
3-4:巨集能不能縮短原始碼
3-5:遞迴 main 的奇蹟
COLUMN BFS.DFS 演算法
3-6:Quick Sort Hack II
3-7:作弊原始碼與系統安全
3-8:挑戰難題

Chapter 4:語言對決

4-1:短碼不限語言
4-2:Java vs C
4-3:Pascal vs C
4-4:C++ vs C
4-5:迎接更多挑戰

Chapter 5:鍛鍊自己!

5-1:寫給每位讀者
5-2:寶貴的參考資料
5-3:厲害的短碼寫手們
5-4:最後

Appendix 附錄

A-1:題目一覽
A-2:ASCII 字碼表
A-3:運算子的優先順序與結合規則

參考資料:http://www.microsoft.com/taiwan/msdn/books/skills/sk3.htm

http://ithelp.ithome.com.tw/question/10002681如果有心成為專業/優秀的程式設計師
有三本書值得去看看

1.Writing Solid Code by Steve Maguire
如何撰寫0錯務程式 旗標 出版
2.Code Complete by Steve McConnell
如何進入程式設計的專業領域 旗標 出版
3.Code Complete by Steve McConnell
如何進入程式設計的專業領域續篇 旗標 出版

見山是山 見山不是山 見山又是山
http://ithelp.ithome.com.tw/question/10002991如果沒有弄清楚物件導向的基本觀念,就去接觸 Design Pattern或更高深的物件導向技術,我想您會學得很痛苦!!

建議先從程式基本入門開始,找介紹物件導向觀念的書籍搭配Java or C++語言的實作,會比較讓您容易上手

從建築的觀念來看,物件導向中的 Class,就好比建築藍圖一般,物件(Object)就是依據藍圖所構建出來的實體(Instance),藉由這些實體間的搭配與介接(Interface)而逐步的將建築物構築出來

一磚一瓦都是基本功,要將建築物蓋得好蓋得穩,你必須要懂得工程結構(物件導向系統分析OOSA),要懂得如何鑄模(物件導向系統設計OOSD),怎樣的 搭配會比較省時省本有效率(Design Pattern),是不是有好的方法來幫助您做這些事情(UML),如果您是總體架構師,有什麼樣的工具能幫您管理好這些事情,包括建築的規劃、測試、驗 收、結案(e.g. Rational Rose等)

不從最基本的開始,怎能知道什麼樣的材質才是最堅固耐用的,模具如何重複的使用(Reuse)

物件導向的觀念,是很貼近生活中的一些事情,就看您自己如何領會