2018/03/27

何種鐵槌?何種鏈? 何等火爐煉你的髓?

何種鐵槌?何種鏈?
何等火爐煉你的髓?

威廉.布萊克 〈老虎〉(The Tyger)
這是在圖書館翻書時看到的,我對外國文學沒有研究,上網查了一下,這首詩的意境似乎是在表達上帝與魔鬼的關係,但我單純看到這二句時,關連到的反而是軟體工匠道德聲明裡的 Practice .

軟體工匠道德聲明是 Jason Gorman 分享在 Google 的 software craftsmanship 討論群組裡的簡短聲明,他認為做為一個軟體工匠,需要一個簡潔的口號讓每個從事軟體開發的人員更重視自己的工作及產品。全文是 We Care, We Learn, We Practice, We Share.

其中的 Practice 指的是要成為一個合格的軟體工匠,需要不斷的練習,練習把工作做好,練習專注,並測量你練習後的成果。

這是一段持續且艱苦的過程,透過不斷的練習內化所學到的知識,讓這些軟體開發的力量變成肌肉記憶,直到變成一個高效率的程式人員。

你會需要思考,我如何練習?我找了那些資源?我練習的成果是什麼?能不能像鐡槌一樣的磨練自己的技能?能不能鏈住自己想要放棄的想法,讓自己投入試煉的火爐而成為一隻二眼炯炯有神的老虎?

老虎在生物界裡是一個強大的象徵。自然界裡只有弱小的動物會聚集在一起,把自己藏在群體裡依靠大家生活下來,就像羊群或牛群;反之,強大的生物幾乎不必靠群體就能活,可以獨來獨往,例如老虎。

身為一個程式人員,應該期許自己成為一隻老虎,不是說你不需要靠團隊合作來完成工作,而是你的技能被訓練到足以應付各種的狀況,就算是一個團隊,也會是一群老虎的團隊。

威廉.布萊克的 The Tyger 全文如下 (有人說詩不能翻譯,所以我不想翻… XD)

Tyger Tyger, burning bright,
In the forests of the night;
What immortal hand or eye,
Could frame thy fearful symmetry?

In what distant deeps or skies.
Burnt the fire of thine eyes?
On what wings dare he aspire?
What the hand, dare seize the fire?

And what shoulder, & what art,
Could twist the sinews of thy heart?
And when thy heart began to beat,
What dread hand? & what dread feet?

What the hammer? what the chain,
In what furnace was thy brain?
What the anvil? what dread grasp,
Dare its deadly terrors clasp!

When the stars threw down their spears
And water’d heaven with their tears:
Did he smile his work to see?
Did he who made the Lamb make thee?

Tyger Tyger burning bright,
In the forests of the night:
What immortal hand or eye,
Dare frame thy fearful symmetry?

2017/04/07

Console Application在64bit機器上卻以32bit執行?

可能有人有疑問, 我建置時我明明"方案平台"選擇的是"Any CPU", 但為什麼在64bit的機器上, 卻沒有預設走64bit呢?

以下程式為例:
   1:  using System;
   2:   
   3:  namespace TestConsole
   4:  {
   5:      class Program
   6:      {
   7:          static void Main(string[] args)
   8:          {
   9:              if (IntPtr.Size == 4)
  10:              {
  11:                  Console.WriteLine("現在跑在x86機器上");
  12:              }
  13:              else if (IntPtr.Size == 8)
  14:              {
  15:                  Console.WriteLine("現在跑在x64機器上");
  16:              }
  17:   
  18:              Console.Read();
  19:          }
  20:      }
  21:  }
印出的結果:
現在跑在x86機器上

但是我明明是64位元的機器啊~~



原來, Visual Studio的組態設定上, 預設會將"建議使用32位元" 打勾, 建置時就變成以32位元執行了, 所以, 如果日後有新增新的組態設定 (e.g. QA, Prod環境), 記得也要檢查這部份哦



2017/02/15

NuGet package source設定


建置Jenkins的時候, 如果有自建的NuGet Server, 在建置CI Job時會因為找不到NuGet Server而Build失敗, 通常我們會在Jekinkes上裝Visual Studio然後設定完NuGet的Package Source後, 再重新建置就會成功

但這裡有個方法可以解決這個問題

到Jenkins主機上, 在%ProgramData%\NuGet\下, 新增NuGetDefaults.config, 把自建的NuGet Server加進去就OK了

PS C:\ProgramData\nuget> Get-ChildItem .\NuGetDefaults.config | select fullname
FullName
--------
C:\ProgramData\nuget\NuGetDefaults.config
PS C:\ProgramData\nuget> cat .\NuGetDefaults.config
xml version="1.0" encoding="utf-8"?>
<configuration>
   <packageSources>
      <add key="mynuget" value="http://nuget.mynuget/nuget" />
      <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
   </packageSources>
</configuration>
PS C:\ProgramData\nugget>

2017/02/07

Jenkins 權限設定災難復原



有時候在安裝Jenkins的過程中, 會發生設定 jenkins credentials時, 沒有注意到權限是否設定正確, 就把Anonymous的權限拿掉, 造成所有user都無法再進到管理介面的悲劇...

這時候, 有個簡單的處置辦法, 參考官方的文件: Disable security 的作法

1. 停止Jenkins Service
2. 到$JENKINS_HOME 目錄(通常是C:\Program Files (x86)\Jenkins)
3. 修改config.xml, 修改useSecurity為false. e.g. false
4. Restart Jenkins Service

就可以看到權限變成開放給所有人, 再重新把權限加回去即可

何種鐵槌?何種鏈? 何等火爐煉你的髓?

何種鐵槌?何種鏈? 何等火爐煉你的髓? 威廉.布萊克 〈老虎〉(The Tyger) 這是在圖書館翻書時看到的,我對外國文學沒有研究,上網查了一下,這首詩的意境似乎是在表達上帝與魔鬼的關係,但我單純看到這二句時,關連到的反而是軟體工匠道德聲明裡的 Practice . ...