Windows 客戶端程序員如何才能轉到 Linux 開發?
01-12
具體情況是這樣的,題主做了兩年windows程序,想轉linux開發。
雖然linux開發可以自學一些,但是畢竟沒有linux項目經驗,很多公司連簡歷的關都過不了。求問這種情況下如何才能完成轉型?是否真的有公司會提供學習成長的機會?
別去寫什麼 OS X 或者 gnome/kde下面的 GUI,寫桌面學不到 linux的精髓,直接寫 server代碼:
1. 實現簡單的 HTTP伺服器(支持 GET/POST/CGI),然後用瀏覽器訪問,裡面有個CGI留言板。2. 實現一個簡版 REDIS,或者給 Redis加10條命令,或者把後面存儲引擎換成 unqlite,再開源3. 給 apache實現一個 module,可以支持 lua來寫服務。4. 給 nginx寫一個 python模塊,可以python來寫服務。5. 用 C/C++/go寫個代理翻牆軟體,跑在你的海外租的 vps上。6. 實現一套簡單的 TCP RPC框架,並再基礎上做一個簡單聊天。7. 閱讀 Linux代碼,應用層實現一個 Linux的定時器。----------------
隨便找了幾個簡單的,有意思的東西做一下。等你有了概念以後,可以嘗試一些其他東西增加熟練度:
1. 構建分散式架構,比如用腳本模擬實現一個分散式文件系統。2. 構建個簡單的遊戲伺服器,比如模擬寫個 RPG服務端,可以用 telnet玩。3. 實現個簡單的的分散式發布訂閱系統。隨便接入,任意PUB/SUB,有冗餘。4. 做一個 MySQL前端,可以分解任務,拆分到各個節點上執行,並將結果合併返回。找個好點的工作應該不難了。先學會用linux,把它當成日常工具。其它沒什麼神秘的,linux的編程模型還要簡單一點。
難道第一步不是要從emacs和vim中選一個?
還好我兩個都用,就沒這個煩惱了
菜碼農一枚,僅針對C++強答一發,大牛們請輕噴。
1、挑一些比較複雜的STL容器實現一遍,比如std::map / std::tuple 等等2、寫一個非同步io框架(包括socket),可能這個比較泛,領會精神就行。
3、把Windows的GDI+和Linux的x11封裝成統一的介面,用來繪圖(封裝好就行了,邊寫邊做測試)如果能用上述介面寫個簡單的窗口那就最好了。是的你沒有看錯,每個像素都要你親自來繪製)
如果跨平台沒弄過的話,兩種方式,一種么函數內部 #ifdef 掉,另一種外面做個os的枚舉,在全局範圍#ifdef掉,然后里面寫上typedef current_os_platform xxx / yyy, 然後所有的介面都泛型,分別對兩個OS進行特化實現,當然編譯速度可能比較感人……光速逃……Qt大法好,跨平台客戶端保平安
學一下Evented Network Server怎麼寫就行了
為什麼我覺得Windows開發難很多 Windows程序設計 Windows核心編程者兩本書太特么難了
Linux下面的desktop開發么?那就去學qt或者kde,不是desktop就去弄Java吧
慕課網有個Linux guide for developer.的課程!學習一下,就可以迅速過度了!本屌學完已可以在ubantu下生存,大牛表噴!收到點贊跟評論,有點意外,貼下課程地址 Linux Guide for Developers
其實我很喜歡有Windows開發經驗的Linux開發工程師,編碼這個事情,舉一反三。
PS:Windows程序員,只要搞端MVC,自己也搭過這樣子一個框架,能力絕對米有問題!從最開始的折騰編譯環境(IDE)到回歸程序員的核心工作 -- 編碼。
Linux、Windows下其實都是一個事兒。從Windows轉Linux開發,也有不一樣的地方,主要開發方向的不同1.Linux 應用開發 集中在嵌入式Linux中,多是C/C++開發語言,一個Makefile走天下2.Linux Server開發 開發語言就五花八門了,C++/Java/JS/PHP從前景上看,搞Server端開發會比較吃香
會寫Qt程序即可
參加過誇平台項目開發,寫過Windows和Linux代碼(OSX老大寫了),感覺題主如果Windows混的好,切換到Linux問題應該不大,我唯一覺得有障礙的是Windows那個又臭又長的Windows API參數,但習慣了就好。
cl,nmake,這兩個你的老本行如果沒有問題的話,不就是換套API嘛?
1.首先掌握 vi,bash,Makefile 2.盡量不使用桌面,用控制台3.盡量不用apt/yum,下載源碼編譯4.從下載的源碼中,挑選感興趣的研究5.做小項目------------------------------------------------------------------是否真的有公司會提供學習成長的機會?我覺得培養難度不高,但是不能一點經驗都沒.如果從簡歷上一點linux經驗都沒,就沒法衡量是否適合培養,風險係數比較大
推薦閱讀:
※我是一名剛上任的飛行員,如何才能跳到藏航?
※員工跳槽到對面的競爭對手公司…並帶走部分客戶以及員工…還怎麼做才能減少損失?