本來另還打算寫一篇,「多寫文檔」的,但想了一下,還是不要了,做人不要自欺欺人。做內部開發的,天天開會聊需求,日日在改系統,晚晚在加班,誰會有時間來寫幾乎不會有人看的文檔?每個新入職的都希望公司內部都能有一套自己系統的開發文檔和使用手冊……誰沒天真過呢?遇到比較好的程序員,他可能還可以交出一點點文檔,但絕對都是過時的。系統上線後就要開始應付各種微調要求、數據調整、用戶培訓,還有用戶一堆哭笑不得的問題,哪有時間更新文檔?一般都是在交付系統或上線前交過一份,往後就不再怎麼更新了。

但,為了安心休假,還是得留一點的資訊給隊友或後來者,否則你的工作就永遠都交不出去。這時候,備註就很重要了。代碼裏的備註不用很詳細,大多一兩句就夠,務求簡單易明,複雜的還是需要做個簡單文檔放到部門公用盤。

我的備註都這樣寫:
這樣寫在開頭,讓隊友一打開就看到,也能了解:

過時程式員 發表在 痞客邦 留言(0) 人氣()

以下是一個出貨訂單的信息例子,你可以看到每行的前三個字就是該行的數據類型,「:」、「+」是數據分隔符,然後你就拿出對方給你的信息規範文檔,那個一看就會長出白頭髮的文檔先不要急着寫代碼,要先好好消化它,找出信息分組和層級標籤,還有你需要的數據,以這次的例子來說,「CPS」就是它的分組標籤,「CPS+1++3」裏,1 是第幾組,3是第幾層。

了解了這幾個後就要說說抓取的方法:
1.    逐行讀入並放進變量
2.    檢查變量的前三位,遇到分層標籤就準備按值寫到不同的表,這個例子有四層,分別是訂單頭、貨物要求量、要求批次、要求包裝單位,所以需要建立四個臨時表,我是以 Stored Procedure 處理的,所以會以 create table #temp_header 的寫法建表,在讀取到分層標籤時,你就知道要按層級寫到不同的臨時表中。

文章標籤

過時程式員 發表在 痞客邦 留言(0) 人氣()

EDIFACT message 怎麼拆?(上) 

 

UN/EDIFACT (the United Nations rules for Electronic Data Interchange for Administration, Commerce and Transport)
https://www.unece.org/cefact/edifact/welcome.html

文章標籤

過時程式員 發表在 痞客邦 留言(0) 人氣()

DataWindow 提供了 Template 特性,令單一DataWindow 可以導出好幾款不同的 xml 格式,不同的格式就是不同的 Template,要新建Template 的話,你可以從 View\Import\Export Template\XML 打開一個新的 Template,截圖下半的就是 XML 的 Template,你不妨先右按它 SaveAs 一下,保存後,它的名字就會出現於右上的「User Template」內了,選中的那個就是未來的預設導出格式了。

保存完了以後就可以開始調整 xml 格式,右按各個折點就可以加入 Element 和賦予DataWinodw 上的欄位給它,想看結果的話,只要右按 Result Set ,選 SaveRowAs 就可以了。

執行時要導出的話,只要 Retrieve 好數據,再把 DataWindow SaveAs XML 就可以生成一個xml 檔案了。

image

文章標籤

過時程式員 發表在 痞客邦 留言(0) 人氣()

什麼是電子資料交換(Electronic data interchange)?
https://zh.wikipedia.org/wiki/%E7%94%B5%E5%AD%90%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2

簡單來說就是收發雙方共同協議好格式,用於雙方系統溝通的電子檔案,可能是 txt、csv、html、xml 或者是其他格式的檔案。

現代社會,大部份的商業機構都有其系統,各系統都有其獨特的數據庫設計,你發給我的不一定是我想要的,我發給你的又不一定可以滿足你系統的需要,但大家都想省下輸入數據的時間,從沉悶又重復的工作中爭取一點悠閒的時間(去撩妹),所以天才們就出了交換數據這種方便快捷的方式。

文章標籤

過時程式員 發表在 痞客邦 留言(0) 人氣()

DataWindow 數據源有四種:
1.    External 這是只建個框,數據在代碼裏面拼湊,一般用於比較沒有關聯性的數據,用以展示或導出,
2.    在 DataWindow Painter 裏面從數據表裏面拼湊成的SQL
3.    在 DataWindow Painter 裏面從數據庫視圖(View)裏面拼湊成的SQL

文章標籤

過時程式員 發表在 痞客邦 留言(0) 人氣()

系統常常需要按用戶突然而來的要求而調整,但有時候礙於網速或地理位置所限,我們並不希望頻繁的調整系統和部署,加上如果同一套系統有不同版本的話,例如同時有網上版和本機版的,同樣的需求就可能需要調整兩個不同的系統,由於版本的不一,程式語言不一樣,程式員也可能兩個不同的人,這樣除了增加調整時間以外,也增加了代碼錯誤或版本不一致的風險。

為解決這種問題,我們可以把代碼寫到伺服器中,在MS SQL Server 中,這叫「Stored Procedure」,中文好像是「存儲過程」或「預存程序」。Stored Procedure就是把多項指令打包起來,需要調用的時候就隨時調用,不必再次重寫,不管調用它的是什麼語言,它都能按投入跑出預計的結果。加上 SQL 語言是跟數據庫打交道的好朋友,不管主力是哪種語言的開發員都會懂一點點,有着誰都能看懂、誰都能維護的好處,這很有助於同事間的互助互補 ( 就是我休假的時候你可以替我調一下啦~     ),而且只要部署到伺服器就可以了,不必重新部著整個程式也可以讓所有用戶執行到最新的代碼了。

這是 MS SQL存儲過程的 create 寫法,想有反饋的就要標明是「output」:

image

文章標籤

過時程式員 發表在 痞客邦 留言(0) 人氣()

預設值( Default value/Initial value ),在用戶新增數據的時候,我們會希望先放一點預設值,用以減少用戶的入工輸入時間,也可以設定某些給系統內部使用的值,如 Y 是有效,N 是失效之類不給用戶輸入,但系統內部有用的數據。

預設的方法最少有三種,一是在數據庫裏面設,二是在 PB  InsertRow() 的時候寫,三是在 DataWindow 裏面設,三種方式各有好處,其中涉及系統時間的,在數據庫裏面設會更好,這裏先說 DataWindow 怎麼設。

在打開 DataWindow 後,單擊菜單上的「View\Column Specifications」,你就可以看到這 DataWindow 裏面的所有欄位,然後你就可以在「Initial Value」欄裏填上想要預設的值,填完後只要點菜單上的「Insert Row」就可以看到效果了。

 

文章標籤

過時程式員 發表在 痞客邦 留言(0) 人氣()

郵件溝通可能是初入職場的新鮮人最早要面對的問題,這次就分享一下老屁股入職多年,對用戶及客戶郵件溝通的體驗和潛規則。

 

如下

  1.  他抄送你上司,卻沒有抄送給自己上司,你回信時就替他「」回去。
  2.  他抄送自己上司,卻沒有抄送給你上司,你回信時也替他「」回去。
  3.  他沒有抄送你上司,但你認為事關重大的,「另外轉發」給你上司。
  4.  他沒有抄送你上司,而事情沒特別的,你也不必加入誰,把溝通級別保持在現有狀態。
  5.  他發來吵架的,抄送雙方上司。
  6.  你找他吵架的,不要抄送上司。
  7.  吵架郵件不要馬上發,保持冷靜,再三琢磨,不留漏洞。商業世界,罵人不帶髒,殺人不見紅。
  8.  跟上司吵架的,「另外轉發」一份給可相信的部門同事作為證據。
  9. 郵件不必馬上回,給自己時間慢慢思考,事情緊急的話,來的是電話,不是郵件。
  10.  事情做好了,連「原郵件」回覆,讓故事有頭有尾,完整的結案。
  11.  男神女神發的,不回,打電話過去。(   剛剛的郵件看不太懂,待會一塊午餐仔細聊聊好不好?   )
  12.  閒聊的,調情的,不發郵件。

 

過時程式員 發表在 痞客邦 留言(0) 人氣()

作為一個死老頭,寫這 Blog 其中一個目的就是跟新手們分享一些在行業裏的一點小技巧,讓後來者可以容易適應新環境,活得輕鬆點。有時候進入新環境,老員工們不一定會有時間,也不一定願意(我也是不想再說才動手寫啦~ )把知識傳授給新同事,只能讓新人自行摸索,而網絡上各種談開發的網頁不是太入門就是太專業了,不是看了沒用,就是看了都不懂,加上每家公司的文化都不同,用到的技術也不一樣,所以這裏我就只能以工作經驗去分享一些日常會用到的小技巧,你不懂的就參考一下,你懂的就指點一下,大家交流交流。

這次算是對 SQL Server Profiler 的一個簡單介紹。工作上,常會有用戶說這個慢那個慢,或者是操作起來總是卡卡的,在排除掉網絡、硬件問題,或者他多久沒重啓後(重啓除百病,你懂的~),我們就可以查一下是不是我們的系統寫得不夠好。SQL Server Profiler 能讓你監察指定用戶的 SQL 運行情況,這樣你就可以知道在哪個動作出現問題,慢的是哪一條 SQL 語句,把 SQL 語句抓出來後,再按此去追查原因。

 

SQL Server Profiler 就在 SQL Management Studio 的 Tools 內

文章標籤

過時程式員 發表在 痞客邦 留言(0) 人氣()