顯示具有 科技工作者心得 標籤的文章。 顯示所有文章
顯示具有 科技工作者心得 標籤的文章。 顯示所有文章

2008年7月5日 星期六

喲哪桑 Speaking | 管理.軟體.產品.專案: Writer's Problems

喲哪桑 Speaking | 管理.軟體.產品.專案: Writer's Problems

許多軟體公司設有 Technical Writer,為產品撰寫 online help、user documentation。我和不少 Technical Writer 合作過,也可以體會他們的困境,像是 shared resource、人力缺乏等等。但是,客戶對文件的滿意度偏低,仍是事實。根據我和幾位 writer 的合作經驗,我覺得許多 writer 有以下問題:

第一個問題 ─ ,不能按照我們的期待把文件交出來。

我原以為,這問題在於 Technical Writer 太少,使得一個 Technical Writer 要負責的產品太多;如果 writer 無法分辨不同產品、專案與文件何者優先,就容易 delay。

第二個問題 ─ 自以為是,照自己的意思想法寫,而不是照事實寫。

Technical Writer 通常不是專家,因此我們都會指派幾位工程師擔任 subject matter expert (SME),把 user documentation 先打個草稿,再交給 writer 做 editing and formatting。然而,我們常遇到的狀況是,writer 改完的東西,意思全部都變了,好像他在開 spec,要我們加上新 feature,而不是描述目前的產品長什麼樣子、該怎麼使用。

有些工程師對自己的英文沒有自信,不敢質疑 writer,以為是自己不對、人家才對,結果就把錯誤的 user documentation 送了出去。

為了克服「慢」與「自以為是」這兩個問題,我們一方面增加 writer 的人數,疏解人力不足的困境,另一方面,我們也注意工程師的英文能力,並使用 Comment-able PDF 格式,讓大家便於提出自己的意見。

但是,隨著這些改善,情況並未大幅好轉,我才發現真正的 root cause。

第三個問題,Writer 仍有嚴重的 knowledge gap,不懂我們的產品,我懷疑其因來自,他們自己不看也不用這些軟體。

因為 writer 不使用軟體,writer 不易縮小其 knowledge gap,看不懂工程師做的草稿與意見,所以 writer 還是「自以為是」,描述自己心中那個東西的樣子,而非產品實際的樣子,於是乎,rework time 還是很長;或者,writer 不敢下筆寫,要 SME 自己改到內容、文法都無誤了,writer 連 editing 都不用做了,只需要做 formatting。

我曾數度要求 writer,自己安裝幾次,看看自己有沒有辦法照著自己寫的 Installation Guide 來安裝?有沒有辦法照著自己寫的 Admin Guide 來執行一些工作?很遺憾,writer 說,「我不會」。那麼我安排 training 給你好嗎?很遺憾,writer 說,「沒時間」。怎麼會有人,能為自己沒看過、沒用過的東西寫使用手冊呢?如果 writer 依舊不看也不用,我們有辦法讓文件準時交付,改善顧客對文件的滿意度嗎?

3 comments:

syshen 提到...

事實上,我覺得還有一個更嚴重的問題,我們的 writer 通常是以 end user 的角度來寫文件,而非專業 IT,但我們產品的對象多半是專業 IT 人員,所以常常弄出來的文件或者訊息字串對真正的使用者無太大助益。其實兩相比對 CISCO 的文件與我們的文件就可知差異。不過這也很難要求甚麼,畢竟 writer 都不是專業 IT。

通達人 提到...

遇到這個問題,我的解決方案是先換掉他!因為他如果只會Formating,我選個會操作Formation工具的工讀生來就好啦!
此外,當engineer也能寫出更接近user要的內容時,我還需要這個TW作啥?當然,我相信也許老闆還有其他的想法。
另外,我以為選TW時,除了語文能力外,還會要求選:好奇心強、意願高的人,因為具備這2個條件的人才有當個「專業」TW的資格。

中文亂碼"蕞蕞蕞蕞"是怎麼來的? - 黑暗執行緒

中文亂碼"蕞蕞蕞蕞"是怎麼來的? - 黑暗執行緒

中文亂碼"蕞蕞蕞蕞"是怎麼來的?

同事遇到一個問題,User抱怨SSIS由ORACLE轉資料到SQL後,所有的中文字都變成"蕞蕞蕞蕞..."了。

(這個字唸"最",不唸"叢"! 慣用倉頡的我本來是不會去研究讀音的,不過看到個性豪邁的User小姐在信中寫道"不會唸厚,拎北查好了,這二個字叫『最最』不叫『叢叢』…",我想我這輩子都不會唸錯了 XD)

SSIS在ORACLE與SQL搬資料時的編碼問題,過去遇過,加上發現只有用特定的機器跑SSIS時會變亂碼,所以我很快地就想到應與機器上的本機設定有關,果然在改過NLS_LANG後,亂碼問就消失了。

不過,好奇心超重的我,心中仍有迷團未解,為什麼不是出現無規則亂碼或問號,而是全都變成"蕞"呢? 利用中文編碼解析工具,我查出"蕞"的BIG5編碼是%bf%bf,而ASCII 0xBF = ¿,一個倒置的問號。看到這個符號,大家應該有點印象吧?

編碼錯誤解析不出來時,常會出現�、?,但有時也會看到¿。當中文完全無法解析,全都的文字都變成¿,兩個¿接在一起,再被當成BIG5解析,就變成"蕞"了!

用以下的實驗證明,四個中文字變成¿¿¿¿,再以BIG5解讀,就變成"蕞蕞",故得證。

:::zonble’s promptbook » 鎚子與釘子:::

:::zonble’s promptbook » 鎚子與釘子:::

2008 年 5 月 23 日


如果你想要靠單打獨鬥或是光是仰仗社群,光是相容性這份本分,就不知道可以消磨掉多少熱情。文書或是辦公軟體,如果是使用系統的文字元件,或是規規 矩矩的按照系統規格實作,大多沒有問題,但是,你在 2008 年還在做輸入法,你就會發現,許多人的需求,並不是在辦公軟體中使用輸入法,或是用在所謂生產力的用途上,而輸入法最大的相容性問題,大多來自於-線上遊 戲。

以 Windows 作業系統來說,微軟對於 DirectX 應用程式如何支援輸入法,可以說非常自由-或是放任。這一套遊戲可以因為需要,所以完全不支援輸入法,另外一套遊戲可以允許輸入法使用原本的介面,再來一 套遊戲則是為了整個遊戲的外觀與使用體驗,所以輸入法就算可以輸入,但是輸入法應該要關閉自己的介面元件,讓遊戲自己來幫你繪製輸入介面與選字介面(例如 魔獸世界、楓之谷、跑跑卡丁車等),又一套遊戲則是雖然要求輸入法自己提供介面,但是遊戲自己在全螢幕模式下把自己放在所有視窗的最上層,甚至蓋過輸入法 的介面…每一套遊戲之間,對於輸入法的支援,都可以完全不同。有的時候線上遊戲還會把不認識的輸入法當成是非法外掛,有的時候,嗯,是的,輸入法會把遊戲 搞當。

客戶的 QA 部門「天天玩遊戲」,每天不斷重複前述負擔大到可怕的測試工作,找出許許多多在你腦袋裡從來沒有想過的問題-甚至包括,在 Windows 作業系統中,如果您使用 12pt 或是 10pt 的新細明體,微軟將「敪」(U+656A)與「敠」(U+6560)兩個不同的罕用字,在字體中造成同一個字(當然,這是微軟的問題)。然後,客戶撥了經 費,買下 OpenVanilla 團隊的時間,除了製作客戶想要的功能外,就是逐一解決各個已經彙整完畢、可以依照一定步驟重現的問題,嗯,就當做是 job 在做。而各種會打斷開發者的相容性問題回報,也有客服人員可以幫忙(意思就是,我也不會也不能在這裡,就這個產品,代為回答我們這位客戶的客服人員應該解決與回答的問題)。

去年緬甸蕃紅花革命前後,有位緬甸青年朋友寫了一封典雅的英文信件給 OpenVanilla 團隊(收到信的時候,感到相當意外,老實說,平常從來沒有人會用上 noble 這類的字眼稱呼自己)。內容是,他正在從事緬甸語文輸入軟體的工作,而 OpenVanilla 跨平台的特性,該是可以有相當的幫助,不知道 OpenVanilla 是否有英文手冊以及 API 文件-你也知道,唉,沒有;而 OpenVanilla 團隊也不可能自己寫出一套緬甸文輸入法。之後就與這位朋友失去聯絡,你也不知道在緬甸風災之後,這位朋友的近況又是如何。

既然有人樂於討好線上遊戲玩家的輸入需求,OpenVanilla 團隊也樂於解套。而 OpenVanilla 專案接下來的發展方向會是:將合作過程中所發展出的改進,回饋到 OpenVanilla 的核心架構,在輸入法模組方面,重心不再會是自行發展、維護一堆模組,或許也會停止一些不應該繼續支援的模組,而是會投入更多心力,關心怎樣可以讓更多人 更輕易的發展輸入法,照顧到更多到了 2008 年還沒被顧及的語言輸入需求,首先要開始的,就是前述的英文(不可否認,英文還是這年頭真正的世界語)文件工作。而之後的 OpenVanilla 釋出套件,也會與過去的發佈方式有所不同,你會看到的不會是一套像是輸入法產品的東西,而會像是一套剛裝好的新版 apache,陽春,但是更為穩定與強大,更具有新的可能。

2008年6月5日 星期四

鬼打牆事件之『ASP.NET 無法刪除 Cookie 的問題』

 

鬼打牆事件之『ASP.NET 無法刪除 Cookie 的問題』

 

先將我的執行環境說明一下:

  • 我有兩個網站,網域分別為 www1.domain.com 與 www2.domain.com
  • 自己實做單一簽入(Single Sign On, SSO)的機制,並透過 Web Service 進行網站會員登入、登出
  • 兩個網站共用同一組 Cookie 用以儲存 SSO 的 Token,且明訂 Cookie 的 Domain 為 .domain.com

我今天聚焦在「登出」這個簡單的功能就好,實作登出是在簡單不過的機制了,就是把 Cookie 清除掉就好啦!不過要是跟我一樣遇到 ASP.NET 怎樣也清除不掉 Cookie 的情況,那就真的是「鬼打牆」了,而且若要問人家:「請問 Cookie 要怎麼樣才能刪除掉?」這種問題問別人真的會被笑,也不知道怎麼開口。

因為我要共用 Cookie 在兩個網域,所以我的 Cookie Domain 是 .domain.com,所以照理說清除 Cookie 的方法應該是:

Response.Cookies["Token"].Expires = DateTime.Now.AddYears(-1);


或者是



Response.Cookies["Token"].Expires = DateTime.Now.AddYears(-1);
Response.Cookies["Token"].Domain = ".domain.com";


或者是



Response.Cookies["Token"].HttpOnly = true;
Response.Cookies["Token"].Expires = DateTime.Now.AddYears(-1);
Response.Cookies["Token"].Domain = ".domain.com";


反正能試的都試了,而且以我對 HTTP 底層協定的了解,幾乎在 Web 領域沒有什麼問題是無法解決的,但今天遇到 Cookie 清不掉這個問題,真的讓我滿面愁容,程式越寫越氣,用 Fiddler2 看 HTTP 封包看了幾十遍,就是看不出有任何問題,但 Cookie 就是殺不掉。



但是這問題非得要研究出來不可,就因為這個「無法登出」的「小問題」搞了我快 5 個小時才弄清楚所有來龍去脈,所幸問題有被我追根究柢的解決了,以下是要解決此問題的完整解法:




  • 若要清除跨 Domain 的 Cookie 必須清除兩次,例如說使用者在 www1.domain.com 要執行登出動作,必須要先將 Domain 為 www1.domain.com 的 Cookie 給清除掉,在接著將 Domain 為 .domain.com 的這個 Cookie 清除掉。


  • 因為這兩個 Cookie 為「同名」,全部都叫做 Token,所以無法在一個 HTTP Request 中清除掉兩個同名的 Cookie,所以必須要在不同的兩個 HTTP Request 中個別刪除不同 Domain 的 Cookie。



例如說:你必須先連到 Logout.aspx 頁面,在此頁面先將第一組 Cookie 清除:



HttpCookie cookie = new HttpCookie("Token", ""); 

cookie.HttpOnly = true;
cookie.Expires = DateTime.Now.AddYears(-1);
cookie.Domain = Request.Url.Host;
Response.SetCookie(cookie);

Response.Redirect("Logout2.aspx", true);


然後再轉址到 Logout2.aspx 將 Parent Domain 的 Cookie 給清除掉:



HttpCookie cookie = new HttpCookie("Token", ""); 

cookie.HttpOnly = true;
cookie.Expires = DateTime.Now.AddYears(-1);
cookie.Domain = ".domain.com";
Response.SetCookie(cookie);

Response.Redirect("index.aspx", true);


這樣就可以徹底將 Cookie 給清乾淨了,這真是難得的經驗,從沒想到有這種解法,不知道網路上有沒有其他人遇過跟我同樣的問題?



而我的登出程式最後是改成以下這段 Code,濃縮再一支程式裡:



 



protected void Page_Init(object sender, EventArgs e)
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);

HttpCookie cookie = new HttpCookie("Token", "");

cookie.HttpOnly = true;
cookie.Expires = DateTime.Now.AddYears(-1);

if (Request.QueryString["domain"] == null)
{
cookie.Domain = Request.Url.Host;
Response.SetCookie(cookie);
Response.Redirect("Logout.aspx?domain=1"), true);
}
else
{
cookie.Domain = ".domain.com";
Response.SetCookie(cookie);
Response.Redirect("index.aspx", true);
}
}

2008年5月19日 星期一

ZDNet Taiwan - 新聞 - 企業軟體 - 專訪Richard Stallman:線上應用程式讓人不自由(上)

ZDNet Taiwan - 新聞 - 企業軟體 - 專訪Richard Stallman:線上應用程式讓人不自由(上)

Google Docs的第二個壞處是,如果Google今天把Docs釋出成自由軟體,讓你能夠在完全自由軟體的環境中去執行它,從傳統自由軟體的觀點來看是OK的, 但事實上,由於你可能必須透過他人的伺服器才能執行Google Docs這一類的網路型應用軟體,你便喪失了對個人資料、個人運算的掌控權,其不自由的結果與專屬軟體並無不同,雖然造成不自由的方式相當不同。

這很特別,因為就算Google把所有線上服務的軟體都自由化了,卻還是無法改變不自由的結果。

2008年4月10日 星期四

Jserv's blog: 對自己好一些:談技術手冊閱讀

Jserv's blog: 對自己好一些:談技術手冊閱讀

現在由程式碼去產生文件或參考手冊的系統,越來越成熟,個人相當推崇 Trolltech 的 [Qt Reference Documentation],這就是由眾多產品線的原始程式碼,透過工具去自動產生特定版本的文件,並提供有限度的搜尋、交叉參考的功能。其他像是透過 [Javadoc] 或 [Doxygen] 所產生的文件也相當不錯,圖文並茂的精美程度媲美專業的排版系統,而且這無疑是所謂的「第一手資訊」,不先去拜讀,而盲目迷失於「網海」,實在失策。

2008年3月24日 星期一

IP 位址衝突

IP 位址衝突
也有不歸還的,這時請告知網管對方卡號位址 (在控制台的事件檢視器裡有記錄),將請計中在 switch 上鎖定對方網卡。

2008年3月16日 星期日

DearHoney 數位音樂工作室 » 用 Windows 遠端關掉 Linux 主機

DearHoney 數位音樂工作室 » 用 Windows 遠端關掉 Linux 主機

這是我自己公司遇到的需求,我們需要在斷電時後,UPS 不夠力前,把所有機房的機器給安全關機。

先講前公司是怎麼解決的。前公司買的是 APC 的高級 UPS,額外買了 UPS 專用網路卡安裝上去,搖身一變成為一台要插網路線的 UPS,還可以拿瀏覽器以 http 的方式來看這台 UPS 的狀態勒!每一台電腦都可以安裝監控程式去與 UPS 以網路來連線,當 UPS 不夠力時就會通知所有的電腦關機,而這個監控程式是用 Java 寫的,提供了各式各樣作業系統的版本,當然涵蓋了 Windows 與 Linux,所以前公司面對 UPS 不夠力時要關閉所有的 Windows 與 Linux 電腦,是很輕鬆簡單的。

敝公司現在雖然用的是 APC 的 2U 機架 2U UPS,算是比一般 UPS 高級,但是,並沒有能力安裝網路介面。監控這台 UPS 的方式是透過 USB 找台 Windows 來監控。UPS 不夠力時,關機前可以執行命令,該命令只要寫上:

shutdown /m \\(電腦名) /s /t 0

再加上是用 Domain Admins 身份去命令其他網域內的 Windows 電腦,所以也沒有身份認證的問題,全部希哩嘩啦的都可以關掉。

可是 Linux 主機就束手無策啦~

終於這狀況得以露出曙光,朋友 Pxxx 說 plink 這隻命令列工具,可以用 ssh 連進 Linux 且自動執行某文字檔中的命令。我試了一下果然沒錯,真是太棒了,趕快筆記下來。我的方法是:

plink root@(IP 位置) -pw (密碼) -m (文字檔)

把文字檔中寫上 sync;shutdown -h now

這樣子就可以在 windows 中把遠端 Linux 給關機,小缺點就是 root 的密碼會看得一清二楚,不過反正是機房使用,一般員工也看不到,夠用了。

2008年3月10日 星期一

讓Calacanis被罵臭頭的「新創網路公司的18條省錢大法」 (Mr. 6)

讓Calacanis被罵臭頭的「新創網路公司的18條省錢大法」 (Mr. 6)
一、買蘋果電腦,IT多省一點
二、幫每個人都買第二台顯示器,兩台同時用
三、(這點被抨擊得蠻慘)每周帶員工去吃四次免費午餐,順便開會
四、桌子像乞丐,椅子要坐得像皇帝
五、電話系統不要買
六、作二房東,將多出來的空間想辦法租出去
七、將會計與人資部門外包出去
八、不要幫每個人都買Microsoft Office
九、Email系統用Google host的即可以
十、為最認真工作的員工,購買家用的電腦
十一、(這點是火力集中處)將第十點中非工作狂的,通通都解雇fire掉
十二、買一台很貴的、全自動的義大利咖啡機
十三、在冰箱中隨時放一堆可樂
十四、讓上班時間彈性,不要鎖門,同仁能在非傳統時間來工作
十五、時時跑到你的辦公室用品供應商那邊,要求打折
十六、不要花錢在徵才上面
十七、不要隨便花錢在公關公司身上
十八、到美國中部外包