Time of Update: 2018-12-05
今天咱們先來聊聊招聘的話題。為啥要先聊招聘捏?因為招聘工作是其它各項管理工作的源頭(先得有人可管才能談管理嘛)。並且招聘工作有其特殊性:招聘方面的失誤傳遞到了後續的環節,其影響會成倍放大。這個現象非常類似於軟體開發流程:如果需求階段出了問題,該問題到設計階段會放大十倍(設計人員會罵娘),到編碼階段會放大百倍(程式員會抓狂),到測試階段...... 費了這許多口水之後,大伙兒應該看出招聘工作的重要性了吧?既然知道了重要性,下面我就來個現身說法,講一下當初搭建Team
Time of Update: 2018-12-05
在前一個文章裡,咱們介紹了“資訊收集”,今天咱們來講一講“假冒身份”的手法。 為了避免某些同學誤解,有必要事先澄清一下:“資訊收集”、“假冒身份”、“施加影響”這三個手法不是孤立存在的,而是有機結合的。攻擊者在幹壞事的時候,總會混用這三個手法以達到最終目的。俺只是限於時間和篇幅,所以才大卸三塊,分開來介紹。 ★為啥要假冒? 假冒身份說白了就是“封裝”。攻擊者又不是傻冒,他們當然不會輕易暴露自己的真實身份,自然要找一個馬甲來偽裝一下。一般來說,攻擊者會根據面對的目標來選取針對性的馬甲。選
Time of Update: 2018-12-05
上次聊社交工程學中關於“施加影響”的話題,其中提到了心理學上的“光環效應”。今天想把這個話題深入地八卦一下。 ★什麼是“光環效應” 考慮到某些同學比較健忘,還考慮到某些同學沒有看過上次的文章,俺再囉嗦一下“光環效應”的解釋。 “光環效應”也叫“光暈效應”或“暈輪效應”,是指對某人的某個顯著的局部特徵的看法被盲目擴大化,變成對此人整體的看法。維基百科的解釋在“這裡”。 上述這個定義是針對“人”而言的,不妨稱之為狹義的光環效應。假如把上述定義中的“某人”替換成“某事物”,這種效應依然存在
Time of Update: 2018-12-05
今天來點評一下cURL,這是一個老資格的開源項目,使用它可以基於多種應用程式層網路通訊協定進行資料轉送(包括上傳和下載)。它的特點是:支援的協議多、跨平台、支援多種程式設計語言介面。後面我會針對這些特點作一些簡單的介紹。 cURL項目實際上包含兩個部分:命令列工具和編程用的庫(libcurl)。兩者支援的功能基本相同。由於開發人員更多地是和libcurl打交道,所以後面我會主要介紹libcurl。 ★支援多種應用程式層協議 多種網路通訊協定支援是cURL的主要賣點。截至到目前的7.19
Time of Update: 2018-12-05
前兩周由於聊了“每日構建”系列和“C++對象之死”系列,把二八原理系列給擱置了一些時間。今天終於又回到這個系列上了。我估計列位看官中,可能有不少人打算將來往管理方向發展,所以在聊完“二八原理在軟體開發的應用”之後,咱們就來聊聊管理方面的話題。 如果你已經在管理崗位上幹活,希望後面的文章能夠對你有協助;如果你尚未擔任管理職能,但是將來有這方面的打算,也可以先大概瞭解一下。事先聲明:管理方面文章聊的內容只是我個人的經驗,僅供大伙兒參考
Time of Update: 2018-12-05
1、在EasyDBO-0.6的交易處理中,預設在不使用事務的情況下並沒有釋放資料來源,這樣會造成資料來源的浪費,導致系統死機。 需要在EasyJDBEngine引擎中JDBC相關操作的finally子句中加入釋放資料來源的代碼,修改大致如下: finally { try { dba.close(); if(autoCommit)releaseConnection(); } catch
Time of Update: 2018-12-05
今天打算來介紹一下“生產者/消費者模式”,這玩意兒在很多開發領域都能派上用場。由於該模式很重要,打算分幾個文章來介紹。今天這個文章先來掃盲一把。如果你對這個模式已經比較瞭解,請跳過本掃盲帖,直接看下一個文章(關於該模式的具體應用)。 看到這裡,可能有同學心中犯嘀咕了:在四人幫(GOF)的23種模式裡面似乎沒聽說過這種嘛!其實GOF那經典的23種模式主要是基於OO的(從書名《Design Patterns: Elements of Reusable
Time of Update: 2018-12-05
在前一個文章“什麼俺推薦Python[2]”裡面,順便提到了動態語言中常用的eval手法。當時為了給大伙兒加深印象,俺舉了個數字運算的例子(詳見“原文”)來說明eval的好處。 後來有一個“很有才”的同學,在回複中提到說,可以用如下編譯預先處理語句來搞定:#define Foo(op, p1, p2) (p1 op
Time of Update: 2018-12-05
由於激勵是除了招聘之外,又一個非常重要的管理環節。上次已經介紹了把二八原理應用到招聘中,今天就該說說和激勵有關的話題。 ★激勵的目的 大伙兒應該知道:IT相關的行業,大都屬於知識密集型;行業中的員工,大都是純腦力勞動者。對於這樣的員工,他們的產出是無形的,因此就無法像傳統的製造業那樣進行“記件式”的考核。因此也就不容易衡量員工的績效。 所以,在知識密集型的企業內,激勵就顯得非常重要。企業要通過激勵手段,讓員工覺得工作很爽、很high,然後幹活就會很主動、很自覺。有效激勵措施是雙贏的,不
Time of Update: 2018-12-05
既然前一個文章已經搞過掃盲了,那接下來應該開始聊一些具體的編程技術問題了。不過在進入具體的技術細節之前,咱們先要搞明白一個問題:如何確定資料單元?只有把資料單元分析清楚,後面的技術設計才好搞。 ★啥是資料單元 何謂資料單元捏?簡單地說,每次生產者放到緩衝區的,就是一個資料單元;每次消費者從緩衝區取出的,也是一個資料單元。對於前一個文章中寄信的例子,我們可以把每一封單獨的信件看成是一個資料單元。 不過光這麼介紹,太過於簡單,無助於大伙兒分析出這玩意兒。所以,後面咱們來看一下資料單元需要具
Time of Update: 2018-12-05
近幾年開源項目越發普及,很多商業軟體都逐漸引入開源項目。由於我負責的產品線採用了不少開源項目(主要是C++、Java、Python),這幾年就經常會碰到開源項目選型的問題(從幾個具有類似功能的開源軟體項目中進行抉擇)。今天我就大概聊一下自己的幾點看法,供大伙兒參考。 ★License(授權協議) License是很多人容易忽略的一個問題,所以我們先來聊一下License的問題。因為公司裡面開發的軟體基本上都屬於商業軟體,根據開源協議和商業的衝突程度,可以分為三種:非常友好、不太友好、很敵
Time of Update: 2018-12-05
最近看到一個汽車對冰淇淋過敏的小故事(原文在此),轉述如下: 某汽車公司收到投訴信,使用者抱怨說他每晚都從家裡開車去商店買冰淇淋。如果買的是香草冰淇淋,則回家時汽車就無法發動;如果買其它口味的冰淇淋,則汽車可以正常發動。天天如此。該使用者懷疑這汽車是否對香草冰淇淋過敏。 汽車公司的頭頭覺得這太過詭異,不過還是派了一個工程師去該使用者家調查原因。第一天,工程師和使用者一起去買冰淇淋。在店裡,工程師要求買香草口味,結果出來後,汽車果然不能發動。此後幾天,工程師每次都和使用者一起去買,每次都由
Time of Update: 2018-12-05
今天來介紹一下“Protocol
Time of Update: 2018-12-05
從上一個文章“做正確的事”寫完到現在已經過去2周了,有網友已經等不及,在評論中催我了。在此向等待本系列的網友致歉。 和“做正確的事”相對應,“正確地做事”主要討論的是有關工作效率和工作品質的問題(也就是如何多、快、好、省地完成工作)。由於"正確地做事"這個話題比較大,涉及到幾個不同方面的方法論問題,考慮了很久,感覺一個文章難以全部寫完(我不喜歡寫長篇大論的文章)。最後決定搞個子系列,針對每個方面寫一個文章。
Time of Update: 2018-12-05
有感於國內軟體開發人員的素質普遍低下,招聘程式員往往面試了N個人都看不到一個順眼的(當然這裡面有很大原因是教育體制的問題)。因此考慮寫一個系列,聊一下“如何成為優秀的開發人員”這個話題。 要想成為一個優秀的開發人員,先得搞清楚什麼樣的開發人員才能稱得上是優秀的?要給“優秀開發人員”下一個準確的定義有一點點困難,於是我用舉例來說明。 經我多年觀察,對於大部分的軟體Team
Time of Update: 2018-12-05
俗話說“工欲善其事,必先利其器”,今天我們來說說和開發工具有關的話題。由於開發過程中會用到的工具多種多樣,根據“二八原理”,我只挑選和開發最密切相關的少數幾種工具來聊一聊。 ★編輯器
Time of Update: 2018-12-05
前幾天聽說Adobe發布了用於Flash Player的RTMP(即時訊息協議),在“這裡”。乍一看,好像是一個不錯的東東。號稱有如下優點:支援高效能地把資料(主要是音頻、視頻)PUSH給Flash Player;支援over
Time of Update: 2018-12-05
經過前面兩個文章的鋪墊,今天終於開始聊一些具體的編程技術了。由於不同的緩衝區類型、不同的並發情境對於具體的技術實現有較大的影響。為了深入淺出、便於大伙兒理解,咱們先來介紹最傳統、最常見的方式。也就是單個生產者對應單個消費者,當中用隊列(FIFO)作緩衝。 關於並發的情境,在之前的文章“進程還線程?是一個問題!”中,已經專門論述了進程和線程各自的優缺點,兩者皆不可偏廢。所以,後面對各種緩衝區類型的介紹都會同時提及進程方式和線程方式。 ★線程方式 先來說一下並發線程中使用隊列的例子,以及相
Time of Update: 2018-12-05
這是昨天我跟天意在一次閑聊中一次有起的討論,標籤介面真有那麼重要嗎?比如說很多初學者認為java.io.Serializable這樣的介面,很多時候可用可不用,不用一樣能執行對象系列化功能。 為此,我們通過一個通俗而有趣的樣本!這個樣本是設計一個獵人,其持有一把智能獵槍,這就是說這把獵槍會自動識別人類,若發現瞄準的目標是人類,就不會開火,而其它的任何事物都通殺。 為此,我們使用了下面三個介面: 一個用來表示萬事萬物的SomeThing public interface
Time of Update: 2018-12-05
我估計看我部落格的人裡面,應該有很多人聽說過二八原理(如果你之前從來沒聽說過,那你的知識面有太窄的嫌疑)。但是知道二八原理的人有很多卻不會(或者不善於)運用。直接的後果就是你在各種事情上付出了很多時間與精力,但是回報卻很少。鑒於該原理非常非常的實用,我打算專門寫一個系列來聊聊和它相關的話題。 ★什麼是二八原理 按照慣例,先說說什麼是二八原理(如果你已經知道二八原理,可以跳過這部分)。二八原理(又名80/20原理、帕雷托原理)最早是由意大利的經濟學家帕雷托提出來的,具體的定義請看這裡。通俗