Pages - Menu

2012年10月26日 星期五

CSS解決各家瀏覽器顯示不一的問題

第一種方法:* {margin: 0px;padding: 0px;}
花了一個多小時再找版面問題,如圖所示,紅色的地方一直消不掉最後發現是各家瀏覽器的問題....

Reset CSS – 重置歸零引用來源

各自為政的瀏覽器

網頁設計的標準(HTML & CSS)是由 W3C 協會所制定的,然而,各大瀏覽器為了展現自身的強大,都自行加入一些有的沒有的設定,造成咱們網頁設計師在排版的時候,就得依每個瀏覽器的不同,而多花好多時間來調整改寫 CSS 語法。

使用 CSS 最令人頭痛的部份就是各家瀏覽器的差異性太多了,用 CSS 寫好的網頁排版明明在 IE 6 看起來很正常,但是到了 Firefox 卻全變了樣,排版的位置都跑位了…. 更何況還有 IE7、IE 8、Safari、Opera、Google Chrome…這麼多種不同的瀏覽器,每一個看起來都是會跑位,很多網頁設計師因此而爆肝的不少!
關於 W3C 標準

造成這樣大差距,主因在於「W3C 所制定的 HTML 標籤在 CSS 中的預設值 」各大瀏覽器的支援程度都不太相同,基本上 Firefox 和 Google Chrome 是最聽話的一家,只要是 W3C 規定的 Firefox 和 Google Chrome 都會乖乖照辦,然而,最不聽話的就是 IE 瀏覽器,常常跟 W3C 唱反調,更慘的是還有 IE6、IE7、IE8、IE9 對於 CSS 的呈現都有些不太一樣啊….唉!
最佳的方法「Reset CSS」

世界知名的 CSS 大師「Eric A. Meyer」整理出一個很棒的解決方法「Reset CSS」,針對 CSS 語法最容易出問題的部份~例如 margin 外間距,各大瀏覽器最常發生不一致的狀況,現在將 margin  全部統一歸 0 ,其他部份,文字大小和行高也全部統成一樣的大小 …. 等,只要掛上這一段「Reset CSS」語法,就可以讓所有的各大瀏覽器乖乖聽話,呈現一樣的結果,CSS 的大同世界就在這裡啊!


/* v1.0 | 20080212 */

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
    margin: 0;
    padding: 0;
    border: 0;
    outline: 0;
    font-size: 100%;
    vertical-align: baseline;
    background: transparent;
}
body {
    line-height: 1;
}
ol, ul {
    list-style: none;
}
blockquote, q {
    quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
    content: '';
    content: none;
}

/* remember to define focus styles! */
:focus {
    outline: 0;
}

/* remember to highlight inserts somehow! */
ins {
    text-decoration: none;
}
del {
    text-decoration: line-through;
}

/* tables still need 'cellspacing="0"' in the markup */
table {
    border-collapse: collapse;
    border-spacing: 0;
}

2012年10月25日 星期四

CSS命名規則

常用的CSS命名規則


頭:header
內容:content/container
尾:footer
導航:nav
側欄:sidebar
欄目:column
頁面外圍控制整體佈局寬度:wrapper
左右中:left right center
登錄條:loginbar
標誌:logo
廣告:banner
頁面主體:main
熱點:hot
新聞:news
下載:download
子導航:subnav
菜單:menu
子菜單:submenu
搜索:search
友情鏈接:friendlink
頁腳:footer
版權:copyright
滾動:scroll
內容:content
標籤頁:tab
文章列表:list
提示信息:msg
小技巧:tips
欄目標題:title
加入:joinus
指南:guild
服務:service
註冊:regsiter
狀態:status
投票:vote
合作夥伴:partner

註釋的寫法:
/* Footer */
內容區
/* End Footer */


id的命名:
(1)頁面結構
容器: container
頁頭:header
內容:content/container
頁面主體:main
頁尾:footer
導航:nav
側欄:sidebar
欄目:column
頁面外圍控制整體佈局寬度:wrapper
左右中:left right center

(2)導航
導航:nav
主導航:mainbav
子導航:subnav
頂導航:topnav
邊導航:sidebar
左導航:leftsidebar
右導航:rightsidebar
菜單:menu
子菜單:submenu
標題: title
摘要: summary

(3)功能
標誌:logo
廣告:banner
登陸:login
登錄條:loginbar
註冊:regsiter
搜索:search
功能區:shop
標題:title
加入:joinus
狀態:status
按鈕:btn
滾動:scroll
標籤頁:tab
文章列表:list
提示信息:msg
當前的: current
小技巧:tips
圖標: icon
註釋:note
指南:guild
服務:service
熱點:hot
新聞:news
下載:download
投票:vote
合作夥伴:partner
友情鏈接:link
版權:copyright


class的命名:
(1)顏色:使用顏色的名稱或者16進制代碼,如
.red { color: red; }
.f60 { color: #f60; }
.ff8600 { color: #ff8600; }
(2)字體大小,直接使用"font+字體大小"作為名稱,如
.font12px { font-size: 12px; }
.font9pt {font-size: 9pt; }
(3)對齊樣式,使用對齊目標的英文名稱,如
.left { float:left; }
.bottom { float:bottom; }
(4)標題欄樣式,使用"類別+功能"的方式命名,如
.barnews { }
.barproduct { }


注意事項::
1.一律小寫;
2.儘量用英文;
3.不加中槓和下劃線;
4.儘量不縮寫,除非一看就明白的單詞.


主要的 master.css
模塊 module.css
基本共用 base.css
佈局,版面 layout.css
主題 themes.css
專欄 columns.css
文字 font.css
表單 forms.css
補丁 mend.css
打印 print.css

2012年10月22日 星期一

html video 標籤

src – 你可以直接使用這個屬性來連接你的視頻。如果你的視頻格式是ogg,那麼Firefox, Chrome, Opera可以支援。如果是IE和Safari的呢,你就得使用MPEG4格式的視頻了。為了省麻煩,個人建議還是使用 好了,放上三種格式,這樣不管你在那個遊覽器,只要支援HTML5視頻,就可以播放了。 因此,如果要為了省事,可以三個一起放上去 如此一來就不用怕什麼瀏覽器有支援了。 source src並不是建立列表..要注意

2012年10月18日 星期四

CSS3:在LI後面加上圖片

ul li:after{content:url(http://www.html5sum.com/images/006.small.gif);}/*在所有的li後面加上圖片*/
ul li:nth-child(3)~li:after{content:none;}/*選擇第三個li,並將其之後的所有li所追加的內容content屬性設置為none,變只有前三個有圖*/

2012年10月15日 星期一

讀取畫面時,呈現黑底讀取字樣


<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
             </asp:ToolkitScriptManager>
             
             
             
           
<asp:UpdatePanel ID="UpdatePanel1" runat="server">                  
                 <ContentTemplate>
           
             <asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1" DisplayAfter="100"  >
             
                   <ProgressTemplate>  
                        <div style =" background :#000;filter:alpha(opacity=50);position:absolute;top: 0px;left: 0px;width: 1360px;height: 3000px">
                        </div>
                        <div style ="border:solid;background-color:white;position:absolute;top: 220px;left: 500px;width: 250px;height: 60px;padding-left:10px;padding-top:5px;z-index:1">
                        <asp:Image ID="Image1" runat="server" Height="50px" ImageUrl="images/load.gif" Width="50px" />
                        <span style="color: #FF3300">資料處理中,請稍後...
                        </span>
                        </div>  
                        </ProgressTemplate>
                       
                       
                      </asp:UpdateProgress>

內文
.
.
.
.
                      </ContentTemplate>
              </asp:UpdatePanel>

ul 橫項排列

<ul id=\"nav\">

<li><a href=\"http://mid.lt263.com/mb/\">Div CSS教程</a></li>

<li><a href=\"http://mid.lt263.com/mb/\">CSS佈局實例</a></li>

<li><a href=\"http://mid.lt263.com/mb/\">CSS2.0教程</a></li>

<li><a href=\"http://mid.lt263.com/mb/\">CSS酷站欣賞</a></li>

<li><a href=\"http://mid.lt263.com/mb/\">CSS模板下載</a></li> </ul>

CSS3簡易相簿功能

CSS3簡易相簿功能
DEMO
參考網站

CSS #album{ width:1000 px; height:300 px; } #album_ul{ width:125px; /* Width of Tab Image */ float: left; list-style: none; } #main_album{ width:580px; height:305px; overflow:hidden; /* Hides the non selected images */ float:left; }

在文章裡顯示優質的程式碼區

在CSS內加入 CODE { display: block; /* fixes a strange ie margin bug */ font-family: Courier New; font-size: 8pt; overflow:auto; background: #333 url(http://klcintw.images.googlepages.com/Code_BG.gif) left top repeat-y; border: 1px solid #ccc; padding: 10px 10px 10px 21px; max-height:200px; height:100px; // for IE6 line-height: 1.2em; } 
之後在文章前後加入<  code>  </  code> 就能有code區塊,
引用自
http://klcintw4.blogspot.tw/2006/11/blog-post_03.html
 另一種
  .post pre { background: #F0F0F0 url(http://你的圖片網址/blogger-code.gif) repeat-y scroll left top; border: 1px solid #CCCCCC; color: #333333; display: block; font-family: Courier New; font-size: 10pt; line-height: 120%; margin: 5px 0 0 20px; max-height: 200px; overflow: auto; padding: 10px 10px 10px 21px; width: 90%; }
這樣子你以後要插入程式碼只要用  <pre> </pre>
包住 也能顯示 引用自:http://gordon168.tw/?p=200

CSS 3 滑鼠移動變大

最近應該會很常寫到css 3 &html5吧...(默)

測試了一段時間才找到其實只要在CSS裡面加


#img2:hover{ transform:translate(80px,120px) rotate(45deg);
-webkit-transform:translate(80px,120px) rotate(45deg);
}
內文
<div id='img2'><img src="../show_mop (4).jpg" width="576" height="360" onMouseMove="img2"></div>

2012年8月29日 星期三

ASP.NET 自動反白

Dim iName As New Text.StringBuilder If Len(TextBox1.Text) > 0 Then TextBox1.Attributes("onfocus") = "javascript:nameEvent(this.value);" iName.Append("function nameEvent(str) {") iName.Append(" document.getElementById('" & TextBox1.ClientID & "').focus();") iName.Append(" document.getElementById('" & TextBox1.ClientID & "').select();") iName.Append("}") '將 JavaScript 字串註冊到頁面中 Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "MyScript19", iName.ToString(), True) End If TextBox1.Focus()
   


2012年8月28日 星期二

我的電腦 磁碟名稱不見

將檔案的檢視模式,先改為除了「縮圖」之外的其他檢視模式(並排、圖示、清單、詳細資料)。 

按住Shift鍵不放,再切回「縮圖」的檢視模式。

2012年8月14日 星期二

SQL YYYYMM的怪問題

先前寫把日期改成YYYYMM的格式,會寫這樣

select rtrim(ltrim(str(year(getdate()))))+REPLACE(STR(datepart(mm, getdate())-1, 2, 0), ' ', '0')
但近日再寫一段SQL的時候只要套用這個,資料都跑不出來,
後來改成這段
select cast(year(dateadd(mm,-1,getdate()))as varchar)+replicate('0',2-len(month(dateadd(mm,-1,getdate()))))+cast(month(dateadd(mm,-1,getdate()))as varchar)
就正常了.......
也試過這段
select RTRIM(LTRIM(((CASE WHEN datepart(mm, getdate()) - 1 = 0 THEN str(year(getdate()) - 1) + '12' ELSE str(year(getdate())-0 ) + REPLACE(STR(datepart(mm,getdate()) - 1, 2, 0), ' ', '0') END))))
一樣出問題......
str跟cast的差異..還需要慢慢找了

2012年7月31日 星期二

SA、SD、SE

這不是3種可以吃的東西XD,轉錄自這裡,寫的很好!台灣地小人稠,有時也受限於公司環境,分工沒這種細膩,不過正如專家說的,SA 給了系統靈魂和神經系統,SD則是給了系統軀體和外觀,兩者的結合,才能產生出正確,美觀又好用的系統。

就算是無法實施如此專業的分工,在專案的開發過程中,自己的角色在其中的轉變間是否可以恰如其份的完成任務?廢話完了,正文開始。


做軟體開發專案規劃時,常會碰到助理問我一個問題,SASDSE的差別在那裡 ?

這個問題我以前也有過,還頗為困擾,系統分析和系統設計及系統工程到底有什麼差別 ? SA和SD的工作又有何不同 ? 這兩者的養成教育又有何差異 ?在過去,SA,SD及SE的確很難區分,甚至這些角色常常會透過軟體工程師來混合發展。

隨著IT領域的發展,SA,SD及SE漸漸的成為了大型專案必需要的專業分工,這三者間是有相當的差異的,不管是養成過程,甚或是未來的發展,都大相逕庭,而要成為一名稱職的PM,是要能區分出這三者的差異,才能妥善的安排工作的。

[SA,System Analyst 系統分析師]

SA是 System Analyst 的縮寫,一般稱為系統分析,主要的工作就是透過一系列的分析工作,把客戶想要的結果產生方式,以各種文件表達出來,讓開發團隊可以根據這些文件實作出這個結果。

這樣的解釋比較文縐縐一點,用個通俗一點的方式比喻,就像是要做出一道宮保雞丁時,就會有食譜一樣,裡面會介紹需要的材料及做菜的順序,然後裡面也會強調要以怎樣手法才能產生出某種效果,以促進色香味。

這樣的過程裡,SA是較為偏重於在工作流程和處理邏輯的,透過SA,開發團隊才可以理出整個系統的架構,一種做事的脈絡,以及系統和工作間的關連性,最重要的,是這些結果都會被SA呈現在文件中,而非放在少數人的腦袋裡。

SA不僅止是要針對電腦裡的東西去運作及規劃,還包括了現實世界裡的實體流程及組織。在很多的情況下,配合新系統的組織及流程,是要由SA來執行的。總結起來,在一個開發案裡,SA執行以下的工作:

‧ 藉由系統需求書,使用者的現有標準作業流程來建立出符合期望的新作業流程及搭配流程的系統功能及模組規劃
‧ 依據功能及模組規劃案,定出初步的資料庫內容及系統與使用者間的權限搭配規範
‧ 定出各個軟體零件的規範,如物件,函數庫,...等等
‧ 設計新的標準作業流程,並把系統功能或模組綁入這些流程中
‧ S.A依據客戶的環境及需求,尋找合適的SD來搭配

而SA也有以下的特色:

‧ 對於系統在怎樣的環境及用什麼開發工具,並不十分在意,良好的S.A產生出來的文件,使用不同的開發工具都應該可以完成,產生相同的結果,但那一種最合適,由SD決定
‧ SA偏重於流程及執行邏輯的表達
‧ SA著重於軟體邏輯,對開發工具的學習並不是十分重要,所以會一種語言即可,主要是以該語言工具來實踐邏輯觀。
‧ SA一定要有全局觀,也就是不能拘泥於一個角度或是一個局部去思考問題,這一點是尋找優秀SA時最困難的。因為在規劃模組及功能時,一定要同時考量到所有直接相關及間接相關的程序及邏輯問題,因此要有全局觀。

相較於SD,SA更側重在邏輯及工作順序搭配的表達,SA並不需要去關切使用什麼作業系統或是什麼開發工具,如前特色所述,好的SA文件,可以用任何一種開發工具來實現。當然,SA不受限於IT技術,但卻會有專業領域的限制。

很少有SA同時專精於數個領域的,熟悉汽車業運作規範的SA,在金融業的開發案裡,就很難討好,反之亦然。但SD沒有這種限制,基本上SD可以和任何行業的專案開發團隊配合運作。

會如此的原因是SA是偏重於流程及管理分析及重新再造工作的。而作業流程,除了少數領域裡共通性高,在核心流程上,是需要長期鑽研的。前面提及的汽車及金融業就是一例。

所以,一個SA必需具備以下的能力,資歷及專業訓練:

1. 至少熟悉一種程式開發語言
2. 熟悉軟體工程,對於開發工具的元素及特色熟悉
3. 對管理制度或作業流程設計熟悉
4. 熟悉UML或類似的系統描述工具
5. 邏輯能力良好
6. 良好的溝通能力,主要作為瞭解需求之用
7. 相關的業界熟悉度

在三者之中,SA是最接近PM的,所以SA在做生涯規劃時,不妨以PM做為下一個發展的專業目標。

[SD ,System Designer系統設計師]

一般來說,SD在生涯規劃裡,並不是SA或是PM。當然,一定要硬來一次也沒有什麼不可以,但要走這條路,就要趁早轉職,因為SD畢竟是較為幕後的工作,在與客戶的溝通協調上,並不會有太高的要求,也較不需要公司管理層面的全局觀。

表面上看起來,SD沒有SA那麼多的工作要求,但實際上SD是最需要天賦的工作,不管是畫面的構成,操作的手順及調整,甚至於元件的定義及物件的規範,全都需要一些天賦。很多軟體,功能很強,但怎麼看怎麼不順眼,或者怎麼用就怎麼憋扭,功能帶來的效益,全都被這些毛病給遮蓋掉了,這就是SD的問題。

另外,SD也扮演了系統最佳化的推手。SA所規劃出來的要求及佈置,都只是邏輯上的構思,在不同的工具上,可能有更好的方法可以表現,也可能會難以展示,這都需要藉由SD對使用環境及開發工具的瞭解,來進行調整和規劃。

舉例來說,同樣是一套財務軟體,在WINDOWS XP,MAC,X WINDOWS下,就會有很不一樣的展現模式和技巧。如果再搭配上不同的開發工具,如C++,JAVA,.NET,PHP,...那差異更多。對SA而言,這些東西他都不用去考慮,但SD就不同了,這些不同的地方,並不僅僅只是如此而已,有時還會包括了開發成本及時間問題,SD的重要度,由此可知。

在一個客製化專案裡,SD的工作內容如下:


‧ 設計畫面元素規範
‧ 設計頁面結構及規則
‧ 設計系統操作畫面,並編定欄位規範及防呆處理
‧ 設計權限管理與系統操作機制
‧ 撰寫使用手冊
‧ 調整DB之各項定義,使其符合畫面欄位規範及操作搭配
‧ 配合SA撰寫系統開發文件,供程式師CODING之用
‧ 撰寫UI(使用者介面)測試計劃書


而做為一名稱職的SD,以下的條件,是必要的:

1. 至少對一個作業系統極為熟悉,對於這個作業系統的各個元件特性及API,有充分的瞭解
2. 熟悉2種以上的開發工具,而專案所需的工具,必需是其擅長的之一,其熟悉度包含了標準安裝裡的各個函數庫,系統常數,物件定義,語法,主要的輔助工具開發廠商,及重要的工具使用方法
3. 具一定的美學感
4. 至少能使用一種繪圖工具軟體
5. 曾經擔任職業軟體工程師三年以上

可以這樣說,SA給了系統靈魂和神經系統,SD則是給了系統軀體和外觀,兩者的結合,才能產生出正確,美觀又好用的系統。如果你覺得自己是個不太愛和太多人打交道的IT人,又對使用者介面有那麼點執著及天賦,那麼,SD絕對是適合你的好選擇。

[SE,System Engineer 系統工程師]

就某種角度來看,SE對PM而言,算是萬金油,只要做IT專案,那就一定用得上,差別只是要選那一個專業的SE而已。系統建置安裝要SE,使用者環境要SE,甚至到硬體選擇及佈建,都要用到SE,有什麼IT專案跟這個沒有關係呢 ?

當然,雖然SE是到處都吃得開,但相對的也是專案裡面最沈默及少有聲音的一群。他們的工作基本上就是建構出一個可以執行系統的環境,系統要如何展現,SE可以給SA和SD一些建議,但建議時機通常都是在系統運行出了些非系統可以掌握的問題後。

系統工程師基本條件上,和SD最為接近,但有一點不同,就是不需要有很好的軟體開發經驗,也就是不太需要會寫程式。但要對作業系統,服務器系統,網路運用環境有相當程度的瞭解。

SE通常是三者中最為博學一員,好的SE雖然不一定要程式寫的呱呱叫,但卻不能對編程一無所知,對作業系統及開發工具也要有一定的熟悉度,甚至部份網管有關的工作也要有所涉獵,所以算得上是專案裡的萬金油。

在專案裡,SE所要執行的工作如下:


‧ 規劃及建置系統執行環境
‧ 安裝及設定使用者端環境
‧ SERVER安裝及設定
‧ 提供環境設置竟見給SA及PM
‧ 最佳化系統可靠度及效度
‧ 撰寫可靠度及效能測試計劃書
‧ 對電腦及相關週邊設備有一定熟悉度


而一名SE則有下列基本要求:

1. 至少熟悉一種作業系統,尤其是讓系統的設定及微調等相關技術
2. 至少熟悉一種網路伺服器作業系統,對如何設定及最佳化熟悉
3. 曾任軟體工程師職務一年以上或熟悉一種開發工具
4. 對網路環境有一定的認識,尤其是一些通訊設置
5. 熟悉可靠度及效能的評估方法,並瞭解與系統環境相關之設定

基本上,如果擁有了像SD一樣的技術背景及個性,但在美學上實在令人不敢恭維,那麼SE算是極佳的選擇了。一般而言,SE的下一個生涯規劃,會比較偏重於技術性兵種,像是DBA或是網管,對於IT產品比較有狂熱或愛好的人,SE是極佳的出路。

[在專案中的運用時機]

基本上SE是萬金油,只要是IT的案子裡就一定要塞一個SE進去,因為沒有IT專案不需要使用工程技術的,差別只在使用何種工程技術而已。在套裝軟體的導入專案裡,SE負責處理軟體使用環境,解決非系統性問題,安置及調整資料庫和網路環境,然後安裝啟動。所有系統運行所需要的條件,都要由SE來解決和處理,但這些工作全都不會出現在眾人的面前,但卻又重要無比,算得上是幕後的英雄。

會同時運用到SA,SD及SE的專案,還是以客製化開發為主的。

在開發型專案裡,SA團隊要負責初期的需求調查及整體架構的規劃,將所有的系統開發工作內容轉化成井井有條的文件,並且適度的分割及派送,並確保未來這些被分割的開發結果能夠在未來可以正確運作。

SD 則在SA的文件中去尋求系統呈現的一致性,易用性及保證開發工具可以正確無誤的展現SA的要求結果。所以SD要負責操作界面的外觀設計,訂定一致的展現規範,設計系統操作畫面及操作手順,同時配合SA完成系統開發文件。基本上,開發文件中,是包含系統使用手冊初稿的。

SD在設計時,必需與SA充分配合,以確保設計的系統符合需求及運作要求。

除了上述的工作內容外,這三者都要撰寫測試計劃,SA著重在於資料的流動符合原先規劃的順序及結果測試,SD則著重在操作畫面中的防呆測試及操作介面的正確性,而SE則在系統可靠度上進行規劃。

[軟體工程師何時轉職 ?]

每一個寫程式的人心裡都明白,這工作不可能做一輩子。不單單是體力及腦力問題,最重要的是寫程式,經濟價值實在有限。

我不會否認有很多的程式高手,但重點不在於你有多優秀,而是有多少老闆願意付出和你努力成正比的薪資來顧用你。不是沒有這種工作,而是如同鳳毛麟角,而且,這種工作通常你也做不久,因為壓力太大,消耗青春太劇烈了。

退一步來說,你也不值得付出這麼多,在良好的SA及SD的規劃下,工程師只要達成一般標準,就可以解決掉九成以上的軟體開發需求,除非是機緣巧合,或是你很有興趣,否則另外那一成的工作,你是很難有機會碰上,或者,就算碰上,也沒法子養活你一輩子。

軟體工程師總有一天要轉職的,這是他們的宿命。

當要轉職時,他們有幾個選擇,SA,SD,SE,出去當老闆及換一行等諸多選擇。看起來雖多,但其實晚景淒涼,因為寫程式都是關起來寫,長期自閉的結果,當他們想轉職時,很難擁有足夠的人脈來支撐他們換個前途光明的事業。一般人羨慕IT人的高薪,卻不曉得只是寅支卯糧,沒有妥善的規劃,後勢看跌的。

前面的五個選項,基本上最後兩項只是充場面,只有少數人才能選那兩個,大多數軟體工程師還是要在前三者中選一個來發展的。

SA看起來最風光,未來也是潛力最好的,但很遺憾的,軟體工程師裡,只有少數人適合這個職務。因為這個工作是很需要和別人打交道的,而好的軟體工程師通常這一點非常不擅長。

因此,如果你自認為擅於溝通,三姑六婆都是你的紅顏知己,邏輯能力不錯,又對管理有興趣,那麼SA是你很好的選擇,程式功力並不是你要考慮的重點。

相對的,你對使用者介面很有心得,而且在美感上也獲得了同事的一致讚賞,程式功力也有那麼一點自信,討厭和不是搞IT的人打屁聊天,那不要懷疑,SD是你最佳的歸宿。

最後,你覺得IT的世界對你充滿了吸引力,無論是作業系統,開發工具或是軟體及IT設備都是如此的吸引你,人與人的接觸對你來說並不是人生的首要需求,層出不窮的IT科技讓你陶醉其中,那麼,SE絕對是你的首選。

要如何轉職,每一個軟體工程師是要誠實面對自己的,而不是依前途來決定自己要選什麼職務,如果你依這種方式選,以我個人在職場生涯的經驗,這樣的人很難散發出光芒,也難以有他期望的成就。所以,現在在寫程式,正在想要轉職的工程師,請謹慎而且誠實的面對自己,做出恰當的選擇。

[結語]

以上是個人提供給對於SA,SD及SE或到困惑的朋友,做為參考及工作分配的依據。這三者的產生,其實也是源於目前IT技術的成長過於快速,所以必需針對軟體工程進行適切的分工,才能應付好日益複雜的IT環境。

Select Case 來將欄位NULL值轉為0




select a.item_no,(a.qty+case  b.qty when null then 0 else sum(b.io*b.qty) end )as 月底庫存數量
from  itmmbemt a left join itmmsum b on a.item_no=b.item_no and a.YYYYMM=b.YYYYmm
where a.YYYYMM='201206' and a.item_no='10010014'
group by a.item_no,a.qty,b.qty


select a.item_no,(a.qty+case when b.qty is null then 0 else sum(b.io*b.qty) end )as 月底庫存數量
from  itmmbemt a left join itmmsum b on a.item_no=b.item_no and a.YYYYMM=b.YYYYmm
where a.YYYYMM='201206' and a.item_no='10010014'
group by a.item_no,a.qty,b.qty

2012年7月25日 星期三

常用網路指令


常用的網路指令

ping
ping用於確定本地主機是否能與另一台主機交換(發送與接收)資料。根據返回的訊息,你就可以推斷TCP/IP參數是否設置正確以及運作是否正常。 Windows上的Ping指令預設發送4個ICMP封包(32byte),如果一切正常,應能得到4個回應封包。Ping還能顯示TTL(Time To Live存在時間)值,你可以通過TTL值推算一下封包已經通過了多少個路由器。
netstat
netstat用於顯示與IP、TCP、UDP和ICMP等協定的統計資料,一般用於檢驗本機各埠的網絡連接情況。
ipconfig
ipconfig用於查詢目前電腦的網路組態,包括IP位址、MAC硬體位址、Gateway、子網路遮罩、DHCP主機、DNS主機& hellip;等等資訊。
arp
arp用於確定對應IP的網卡實際位址。
tracert
tracert命令可以用來追蹤封包使用的路由(路徑)。
pathping
pathping的功能與tracert很類似,一樣可以偵測本機電腦到對方電腦的所經路徑,並列出經過的全部節點。不過 pathping有一個更實用的功能,它可以顯示各節點的資料封包遺失狀況,讓我們可以直接判斷是哪台路由器或電腦造成連線速度驟減或其他網路障礙。
route
route命令可以用來顯示和修改路由表的內容。
nbtstat
nbtstat命令用來提供關於NetBIOS的統計資料。運用NetBIOS,你可以查看本機或遠方主機的NetBIOS名字表格。
net
net命令有很多函數可用於電腦之間的NetBIOS連接,如net view、net config和net use等。

路由表相關
Route Print:印出你現在的Route Table
●route add 用來加入路由路徑
例如:route add 192.168.0.0 mask 255.255.0.0 192.168.1.1 if 0x2 metric 20指出 Network DestinationNetmaskGatewayInterface  metric

Route add指令意義:
c:\ route add 目的IP mask 目的IP的子網遮罩 閘道器IP if 網卡ID
以為例
目的IP=224.1.1.0
目的IP的子網遮罩=255.255.255.0
閘道器IP=B網卡的預設閘道IP

(1)NIC A "不用" 把 default gateway 設上去,設固定 IP 192.168.16.6 NETMASK 255.255.255.0
(2)命令列下,輸入指令 route add 224.1.4.0 mask 255.255.255.0 192.168.16.6 

● route
 -p add 用來永久加入路由路徑,使用-p 參數可以保留路徑設定,不會因為電腦重開機而消失。
例如:route -p add 192.168.0.0 mask 255.255.0.0 192.168.1.1 if 0x2 metric 20

● route
 delete用來刪除路由路徑。
例如:route delete 192.168.0.0 mask 255.255.0.0

● route
 change用來修改現有的路徑設定。
例如:route change 192.168.0.0 mask 255.255.0.0 192.168.1.1 if 0x2 metric 10

2012年7月5日 星期四

SQL 流水號


如果資料表本身並不內含自動地增編號的欄位時,要怎麼作,才能夠讓 SELECT 查詢結果如圖表 所示地額外增加自動遞增序號呢?我們提供下列五種方法供您參考: 
USE 北風貿易;GO

/* 推薦此方法
*/
SELECT 序號= (SELECT COUNT(客戶編號) FROM 客戶
 AS LiMing
                 WHERE LiMing.
客戶編號<= Chang.客戶編號),       客戶編號, 公司名稱
FROM 
客戶 AS
 Chang ORDER BY 1;
GO

/* 
方法二使用SQL Server 2005 獨有的RANK() OVER () 語法*/
SELECT RANK() OVER (ORDER BY 
客戶編號 DESC) AS 序號
,         客戶編號, 公司名稱
FROM 
客戶;GO

/* 
方法三
*/SELECT 序號= COUNT(*), LiMing.客戶編號, LiMing.公司名稱
   FROM 
客戶 AS LiMing, 客戶AS Chang
   WHERE LiMing.
客戶編號>= Chang.客戶編號

   GROUP BY LiMing.
客戶編號, LiMing.公司名稱
   ORDER BY 
序號;GO

/* 
方法四

建立一個「自動編號」的欄位,然後將資料新增至一個區域性暫存資料表,
然後由該區域性暫存資料表中,將資料選取出來,最後刪除該區域性暫存資料表
*/
SELECT 序號= IDENTITY(INT,1,1), 管道, 程式語言, 講師, 資歷
INTO #LiMing
FROM 
問券調查一;GO
SELECT * FROM #LiMing
;GO
DROP TABLE #LiMing
;GO
/*
方法五
使用 SQL Server 2005 獨有的ROW_NUMBER() OVER () 語法
搭配 CTE (一般資料表運算式,就是 WITH 那段語法)選取序號2 ~ 4 的資料
*/
WITH 排序後的圖書 AS  (SELECT ROW_NUMBER() OVER (ORDER BY 客戶編號 DESC) AS 序號,   客戶編號, 公司名稱
   FROM 
客戶)SELECT * FROM 排序後的圖書
WHERE 
序號 BETWEEN 2 AND 4;GO

2012年6月17日 星期日

汽車輪胎

.大家不要錯誤的以為輪胎越新就越好.小弟換胎時儘量挑一年內的胎來換效果真的比較耐磨Q度也較好.
胎廠的說法是新胎製成後橡膠的結構是處於 不安定的狀態 35-52週是輪胎最穩定的時刻.以上給車友參考..


 


米麒麟  PS3/碼牌CSC3/橫濱V103/TOYO T1R




輪胎規格


215-40-18


輪胎寬度(mm)+輪胎斷面的扁平比(%)+輪胎類型代號+輪輞直徑(英吋)+負荷指數+許用車速代號」。輪胎寬度、輪輞直徑及扁平比如上圖所示,其中扁平比為胎厚與胎寬的百分比。




輪胎花紋


目前輪胎的種類依據胎紋不同~大致上可區分為單導向非單導向不對稱三種~目前市面上以前兩種為主

非單導向輪胎(如圖左)的胎紋則沒有所謂的方向性~且胎塊間的縫隙較多~可有效吸收磨擦路面時的噪音
因此滾動噪音較小~使用里程也較長~加上性能需求未若單導向輪胎來的高~胎壁硬度較軟
所以目前市面上常見的舒適胎或經濟胎皆為雙導向輪胎


單導向輪胎(如圖中)顧名思義就是其胎紋走向是朝同一方向(呈八字)若以眼睛觀察可輕易發現其上的胎塊並非是方形而是略呈三角形~此種輪胎多半為性能胎,因此抓地力與轉向反應較佳~排水性較好~在操控上比非導向輪胎更為優異不過安裝時需注意滾動方向不可裝錯~且為應付較大扭力的輸出與滾動速度的瞬間提高~其內鋼絲層構造較為複雜
相對重量亦較重~缺點則是價位上相對較高~磨耗相對較快


不對稱胎紋的輪胎(如圖右)較為少見~該種輪胎的優點在於外側胎塊可朝大面積設計~提供過彎時更加優異的抓地力
內側胎紋則可多針對靜肅性與排水性進行加強~如此便可兼顧多種功能~是目前新興的性能胎設計方向




http://www.wretch.cc/blog/songster/28195878




T1R 吃胎原因


胎紋深度和胎肩深度是不同的
當時日方技術人員就是說...
"胎肩磨完剛好磨到警示線..."
經過吃飽閒閒的實驗發現所言不假
胎肩的深度  約等於  胎面到警示線的深度
胎肩深度  不等於  胎紋深度
大約磨了5,000km~10,000km就開始會以為吃胎了
因為覺得中間看起來還很深,但胎肩看起來沒那麼深
這就造成了誤以為吃胎的假象

好啦
那解決了胎肩吃胎的疑問後...
是不是會想說"那為什麼胎肩不做的一樣深??"


從T1R的胎紋設計可以發現
負責排水的胎紋就是中間V字形的部分
胎肩橫向胎紋則和排水無關
所以儘管快磨到警示線了,代表胎肩紋路也快磨光了
還是不會影響到排水性能
那做淺的原因是什麼??
就是防止"跳花"
簡單的說,胎紋越深
在行走時胎塊晃動的幅度就越大
在起步及煞車的拉扯下,就是造成"跳花"的原因
而在高速下變換車道時也是一樣
胎紋越深的情況下
胎塊的形變越大,穩定性就越差
所以在一般輪胎的設計上(性能胎除外)
胎塊和胎塊間都會有小小的橋接處(有人稱為"胎塊橋")


http://www.wretch.cc/blog/lchan/23609941




2012年6月12日 星期二

令人頭痛的windows server 2003事件1058與1030


錯誤一:事件1058:
Windows 無法存取 GPO CN={31B2F340-016D-11G2-945F-00C04FB984F9},CN=Policies,CN=System,DC=chac,DC=ml,DC=com,DC=tw 的群組原則範本檔案。檔案必須存在位置 <\\chac.ml.com.tw\sysvol\chac.ml.com.tw\Policies\{31B2F340-016D-11G2-945F-00C04FB984F9}\gpt.ini> 中。(存取被拒。 )。群組原則處理已中止。

和緊接錯誤一出現的
錯誤二:事件1030:
Windows 無法查詢群組原則物件的清單。請檢查可能訊息的事件日誌,這些訊息是先前由描述此現象原因的原則引擎所記錄的。

我查了很多資料,似乎沒有一致的有效解決方法,
後來在IT邦幫忙得到了infornet解答:
回答:infornet ( iT邦初學者8級 )
時間:2010-09-20 09:11:15
請先檢查您是否可以存取該GPO
一、開始執行 \\chac.ml.com.tw\sysvol\chac.ml.com.tw\Policies\{31B2F340-016D-11G2-945F-00C04FB984F9}\gpt.ini
看看是否可以存取該GPO,可以話代表該GPO是存在的「這是癈話」。
二、檢查該GPO是否有套用,例如該GPO是螢幕保護時間設定,您就檢查該設定是有有變更。
三、假如以上就成立的話,請下載 Windows 2003 support tools,並安裝。
四、安裝完後,請選 開始 \ 所有程式 \ Windows Support Tools\Command Prompt
五、請下該指令 Dfsutil /? 「這是我怕記錯指令,所以請您先確認一下。」
六、請執行該指令 Dfsutil /pktflush
Dfsutil /purgemupcache
七、請於有發生該錯誤的DC中執行上述指令。
八、待 5- 10分鐘後看看是否沒有該訊息了。
九、執行 gpupdate /force 立即套用 gpo 假如真的沒有錯誤了,那就收工下班了。

2012年6月2日 星期六

將lnk捷徑修復


Windows Registry Editor Version 5.00

;LNK file association fix for Windows Vista.
;Updated on April 24, 2007

[HKEY_CLASSES_ROOT\.lnk]
@="lnkfile"

[HKEY_CLASSES_ROOT\.lnk\ShellEx]

[HKEY_CLASSES_ROOT\.lnk\ShellEx\{000214EE-0000-0000-C000-000000000046}]
@="{00021401-0000-0000-C000-000000000046}"

[HKEY_CLASSES_ROOT\.lnk\ShellEx\{000214F9-0000-0000-C000-000000000046}]
@="{00021401-0000-0000-C000-000000000046}"

[HKEY_CLASSES_ROOT\.lnk\ShellEx\{00021500-0000-0000-C000-000000000046}]
@="{00021401-0000-0000-C000-000000000046}"

[HKEY_CLASSES_ROOT\.lnk\ShellEx\{BB2E617C-0920-11d1-9A0B-00C04FC2D6C1}]
@="{00021401-0000-0000-C000-000000000046}"

[HKEY_CLASSES_ROOT\.lnk\ShellNew]
"Handler"="{ceefea1b-3e29-4ef1-b34c-fec79c4f70af}"
"IconPath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
  74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
  00,68,00,65,00,6c,00,6c,00,33,00,32,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,\
  31,00,36,00,37,00,36,00,39,00,00,00
"ItemName"="@shell32.dll,-30397"
"MenuText"="@shell32.dll,-30318"
"NullFile"=""
"Command"=-

[HKEY_CLASSES_ROOT\.lnk\ShellNew\Config]
"DontRename"=""

[HKEY_CLASSES_ROOT\lnkfile]
@="Shortcut"
"EditFlags"=dword:00000001
"FriendlyTypeName"="@shell32.dll,-4153"
"NeverShowExt"=""
"IsShortcut"=""

[HKEY_CLASSES_ROOT\lnkfile\CLSID]
@="{00021401-0000-0000-C000-000000000046}"

[HKEY_CLASSES_ROOT\lnkfile\shellex]

[HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers]

[HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\OpenContainingFolderMenu]
@="{37ea3a21-7493-4208-a011-7f9ea79ce9f5}"

[HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\{00021401-0000-0000-C000-000000000046}]
@=""

[HKEY_CLASSES_ROOT\lnkfile\shellex\DropHandler]
@="{00021401-0000-0000-C000-000000000046}"

[HKEY_CLASSES_ROOT\lnkfile\shellex\IconHandler]
@="{00021401-0000-0000-C000-000000000046}"

[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lnk\UserChoice]

2012年5月28日 星期一

vb.net stramreader 讀文字檔



Imports System.IO

Public Class _03_StreamReader

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim theFile As FileStream = File.Open("d:\temp\asdf.txt", FileMode.Open, FileAccess.Read)
Dim rdr As StreamReader = New StreamReader(theFile)
TextBox1.Text = rdr.ReadToEnd()
rdr.Close()
theFile.Close()
End Sub


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim rdr As StreamReader = File.OpenText("d:\temp\asdf.txt")
TextBox1.Text = rdr.ReadToEnd()
rdr.Close()
End Sub


Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
MsgBox(File.ReadAllText("d:\temp\asdf.txt"))
End Sub


Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim rdr As StreamReader = File.OpenText("d:\temp\asdf.txt")
While Not rdr.EndOfStream
Dim ft As String = rdr.ReadLine()
If ft.Contains(TextBox2.Text) Then
MsgBox("Found " & TextBox2.Text & vbNewLine & ft)
End If
End While
End Sub


End Class

2012年5月24日 星期四

Power Builder TempTable Decimal

decimal 宣告時要出現小數 必須宣告為decimal(15,4)  抓取整數15個字,小數點4位
EX:

'CURRENCY char(4) _null,'+&
'AMT decimal _null,'+&
'EXCH_RATE decimal(15,4) _null,'+&
'nt_ar_amt decimal _null)'

2012年5月23日 星期三

Power Builder 函數

抓取master的物件設定
dw_master[1].object.apdl_vch_ty.enable=false //將欄位關閉
dw_master[1].object.apdl_vch_ty.text = l_apdl_vch_ty

//取得登入者帳號

l_usr_no=gs.uf_get_usr_no()  

//顯示狀態列   4代表中間的位置
wf_set_statusbar(4,i_vch_no+"-"+i_item_no)

2012年5月22日 星期二

Power Builder 神奇錯誤

下 l_sql 套用 cursor 執行時沒有任何錯誤發生,
但是直接把sql 套在sql manager裡面查的到資料,但在ERP測試卻沒資料,
查了一整個下午最後發現是

eclare lc_cur_mocrpf12 dynamic cursor for sqlsa;
prepare sqlsa from :l_sql;
open dynamic lc_cur_mocrpf12;

do while sqlca.sqlcode=0

 fetch lc_cur_mocrpf12 into :l_XXXX
在into欄位的時候  欄位宣告格式錯誤
currency是 幣別..string


PDF浮水印產生 C#

引用
       
private void Printpdf()
        {
            

            //String sFileIn = args[0];   // command line parameter: input filename

            string sFileIn = @"c:\sample.pdf";
            PdfReader reader = new PdfReader(sFileIn);
            using (MemoryStream ms = new MemoryStream())
            {
                PdfStamper stamper = new PdfStamper(reader, ms);
                for (int i = 1; i <= reader.NumberOfPages; i++)
                {
                    iTextSharp.text.Rectangle pageSize = reader.GetPageSizeWithRotation(i);
                    PdfContentByte pdfPageContents = stamper.GetUnderContent(i);
                    pdfPageContents.BeginText();
                    BaseFont baseFont = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, Encoding.ASCII.EncodingName, false);
                    pdfPageContents.SetFontAndSize(baseFont, 20);
                    pdfPageContents.SetRGBColorFill(200, 200, 200);
                    pdfPageContents.ShowTextAligned(PdfContentByte.ALIGN_RIGHT, sFileIn, pageSize.Width - 5, pageSize.Height - 25, 0);
                    pdfPageContents.EndText();
                }
                stamper.FormFlattening = true;
                stamper.Close();
                FileStream fs = new FileStream("watermarked-output.pdf", FileMode.Create, FileAccess.ReadWrite);
                BinaryWriter bw = new BinaryWriter(fs);
                bw.Write(ms.ToArray());
                bw.Close();
            }
        }

什麼是Hot Spare?RAID 5 RAID6 比較

         當一個正在使用的磁盤發生故障後,一個空閒、加電並待機的磁盤將馬上代替此故障盤,此方法就是熱備用。
        熱備用磁盤上不存儲任何的用戶數據,最多可以有8個磁盤作為熱備用磁盤。一個熱備用磁盤可以專屬於一個單一的冗餘陣列或者它也可以是整個陣列熱備用磁盤池中的一部分。而在某個特定的陣列中,只能有一個熱備用磁盤。當磁盤發生故障時,控制器的固件能自動的用熱備用磁盤代替故障磁盤,並通過算法把原來儲存在故障磁盤上的數據重建到熱備用磁盤上。數據只能從帶有冗餘的邏輯驅動器上進行重建(除了RAID 0以外),並且熱備用磁盤必須有足夠多的容量。系統管理員可以更換發生故障的磁盤,並把更換後的磁盤指定為新的熱備用磁盤。

容量部份,
RAID 5 + HotSpare 和 RAID 6 都是 N-2 ,
沒有什差別!

容錯能力部分,
RAID 5 + HotSpare 也和 RAID 6 一樣,
最多可壞 2 顆HD仍能維持系統運作,

但 RAID 5 + HotSpare 除了 HotSpare 外只能一次壞一顆 HD,
等 HotSpare 加入 RAID 5 HD 群組並完成 Rebuid 後,
才能再壞第 2 顆,
若 RAID 5 本身 HD 組同一時間同時壞 2 顆,
那就回天乏術了,

RAID 6 則可以同一時間同時壞 2 顆 HD ,

結論是,
RAID 6 會比 RAID 5 + HotSpare 安全性來的高 !

要是我選,
我會用 RAID 6 !