国产精品一区二区在线观看完整版,在线观看91精品国产性色,欧美日韩另类视频

杭州校區切換校區

新聞資訊

  • news

    為什么人們不足夠信任云計算?

    發布時間:2019-01-15

    <p style="color:inherit;font-family:&quot;font-size:inherit;text-align:justify;background-color:#FFFFFF;">試想在一家沒有云數據的大公司上班,處理器本身效率也低,不可避免地影響我們的工作質量。再者,如果您負責開發或營銷云軟件,那么對云計算的不夠信任就會導致顧客對您的產品失去興趣。那么,為什么會有很多人不相信“云”呢?</p><p style="color:#3E3E3E;font-family:&quot;font-size:15px;text-align:center;background-color:#FFFFFF;"><img src="http://115.29.210.249/tggPic/content/2019-01/1547521497676.jpg" data-ke-src="http://115.29.210.249/tggPic/content/2019-01/1547521497676.jpg" alt=""><br></p><p style="color:inherit;font-family:&quot;font-size:inherit;text-align:justify;background-color:#FFFFFF;">現如今有成千上萬的應用程序依賴云計算來存儲客戶的重要信息和文件,但人們仍然不完全相信“云”的本質。例如,擁有iPhone的消費者可能不愿意使用蘋果的云備份服務來備份他們最重要的信息;甚至企業所有者可能會抵制在工作中采用基于云的解決方案。</p><p style="color:inherit;font-family:&quot;font-size:inherit;text-align:justify;background-color:#FFFFFF;">表面上來看,這似乎并不會影響什么,就像處理個人的數據,是否采用云方案就看個人的選擇和效率了。但隨著企業和消費者越來越多的依賴數據信息,以及各種數字化服務,那么定期使用便捷的、成本低、效益高的工具就顯得越來越重要了。</p><p style="color:inherit;font-family:&quot;font-size:inherit;text-align:justify;background-color:#FFFFFF;">試想在一家沒有云數據的大公司上班,處理器本身效率也低,不可避免地影響我們的工作質量。再者,如果您負責開發或營銷云軟件,那么對云計算的不夠信任就會導致顧客對您的產品失去興趣。那么,為什么會有很多人不相信“云”呢?</p><h4 style="font-size:1.2em;font-family:&quot;text-align:justify;color:#37474F;background-color:#FFFFFF;"><span style="font-size:inherit;color:inherit;line-height:inherit;">缺乏對“云”的深入理解</span></h4><p style="color:inherit;font-family:&quot;font-size:inherit;text-align:justify;background-color:#FFFFFF;">首先最明顯的原因是,人們通常對“云”的真正含義理解不足。它成為一個流行詞,描述了這種從任何設備都能訪問所有產品和服務的模式。從而給人的錯誤印象是,他們的數據以“云”的方式被處理并存儲的到處都是,任何擁有訪問權限的人都可以獲取這些數據。</p><p style="color:inherit;font-family:&quot;font-size:inherit;text-align:justify;background-color:#FFFFFF;">實際上,云是指使用互聯網運行的服務,而不是依賴于設備上的本地軟件。比如您的文件存儲在“云”端,這意味著它們存在專業服務(付費服務)的數據中心,也只有您有權限。您可以隨時隨地訪問文件,表面看起來像在本地訪問這些文件,其實是調用云端的數據中心的信息。</p><h4 style="font-size:1.2em;font-family:&quot;text-align:justify;color:#37474F;background-color:#FFFFFF;"><span style="font-size:inherit;color:inherit;line-height:inherit;">加密和黑客攻擊</span></h4><p style="color:inherit;font-family:&quot;font-size:inherit;text-align:justify;background-color:#FFFFFF;">如果把文件存儲在“云”上——別人的硬盤上,人們可能會擔心文件的安全性,擔心其他人也會訪問這些文件。</p><p style="color:inherit;font-family:&quot;font-size:inherit;text-align:justify;background-color:#FFFFFF;">這種擔憂不無道理,云存儲確實面臨著一些潛在的安全問題。大多數云服務公司,如谷歌為云存儲的數據進行了一些基本的加密和保護措施。他們會用堅固的防火墻對數據中心進行物理保護,并對存儲的數據進行加密,以減少攻擊破壞的可能性。盡管如此,數據泄露還是防不勝防,而且沒有一種系統能夠保證絕對安全,完全御防黑客攻擊的。</p><p style="color:inherit;font-family:&quot;font-size:inherit;text-align:justify;background-color:#FFFFFF;">除此之外,一旦用戶的授權受到威脅,即使是最安全的云服務也可能受到威脅。例如,您存儲的文件服務器本身無法被黑客入侵和攻破,但黑客非法獲得您的用戶名和密碼,就可以輕而易舉的訪問文件了。</p><p style="color:inherit;font-family:&quot;font-size:inherit;text-align:justify;background-color:#FFFFFF;">其實我們很清楚,每個系統都有固有的一些弱點。您保存在云存儲中的文件可以被訪問,就像本地硬盤上的文件一樣,也同樣存在用戶名和密碼被盜用的風險?;蛟S您可以通過云服務的云端額外一層加密來保護數據,并確保在密碼設置、更改或校驗時遵循最佳邏輯和規定。</p><h4 style="font-size:1.2em;font-family:&quot;text-align:justify;color:#37474F;background-color:#FFFFFF;"><span style="font-size:inherit;color:inherit;line-height:inherit;">文件完整性和可訪問性</span></h4><p style="color:inherit;font-family:&quot;font-size:inherit;text-align:justify;background-color:#FFFFFF;">數據變得越來越重要,而且數據的存儲或展現形式也更加多樣化。它可能是記錄公司財務狀況的電子表格,也可能是包含商業秘密的word文檔,也可能是包含所有重要客戶詳細信息的CRM平臺。在任何情況下,這都是至關重要的信息,一旦泄露后果不堪設想。</p><p style="color:inherit;font-family:&quot;font-size:inherit;text-align:justify;background-color:#FFFFFF;">除了擔心這些文件可能會被黑客攻擊或假冒訪問之外,人們還想占有控制這些文件??傆X得把文件存在自己的U盤上,比存在“云”上訪問更安心。</p><p style="color:inherit;font-family:&quot;font-size:inherit;text-align:justify;background-color:#FFFFFF;">要消除這種成見并不容易,但是對于憂心忡忡的企業所有者來說,除了存儲在云上之外,還可以將文件存儲在本地的物理硬盤上,這種冗余備份是一種有效可行的方法,以確保文件不會丟失。</p><h4 style="font-size:1.2em;font-family:&quot;text-align:justify;color:#37474F;background-color:#FFFFFF;"><span style="font-size:inherit;color:inherit;line-height:inherit;">云服務的普適性</span></h4><p style="color:inherit;font-family:&quot;font-size:inherit;text-align:justify;background-color:#FFFFFF;">之前有些人討厭依賴云來訪問他們最重要的服務,因為這需要互聯網連接。如今互聯網應用已經相當廣泛。即使在家里工作時遇到網絡連接中斷,你可以用智能手機作為熱點,或者開車去咖啡館或圖書館,使用他們的熱點。但是也有突發狀況,小區附近都停電了,這可能會讓你無法訪問云端服務。即便如此,大多數云平臺現在也提供離線版本,當在線版本無法訪問時,這些離線版本可以暫時使用。</p><h4 style="font-size:1.2em;font-family:&quot;text-align:justify;color:#37474F;background-color:#FFFFFF;"><span style="font-size:inherit;color:inherit;line-height:inherit;">價值觀念</span></h4><p style="color:inherit;font-family:&quot;font-size:inherit;text-align:justify;background-color:#FFFFFF;">公眾的價值觀念往往會影響技術的發展趨勢和應用范圍。如果客戶看到產品和服務的價值,超出他們愿意支付的價格,就很可能會購買更多,從而增加需求,并刺激更多的企業致力于該項技術/新產品的研發。</p><p style="color:inherit;font-family:&quot;font-size:inherit;text-align:justify;background-color:#FFFFFF;">云計算一開始便以時髦的名字產生了足夠的吸引力,足以支持成千上萬種不同應用和服務的開發。然而,仍有數百萬消費者不理解云計算與本地存儲文件之間的真正區別。改變這一觀念的最佳途徑就是,重申云服務的真正優勢,包括冗余性、安全性、可訪問性,還有更低的成本。如果綜合考慮這些因素,應該能客觀地解釋為什么基于云的應用程序比本地程序更好。</p><p style="color:inherit;font-family:&quot;font-size:inherit;text-align:justify;background-color:#FFFFFF;">在未來幾年,雖然我們還沒有完全解決云計算中的信任問題,但是用戶對云服務的接受度正逐步提升,特別是在大數據時代,人們也不得不正確面對它。如果您愿意為云計算做點什么——無論是說服公司老板轉向云服務,還是推廣云軟件——請參考上述幾點分析,并幫助人們客觀的、正確的看待云計算。</p>
  • news

    dbxfs:在 Linux 中本地掛載 Dropbox 文件夾

    發布時間:2019-01-04

    雖然在 Linux 中很容易安裝 Dropbox 客戶端,但這種方法與官方方法略有不同。它是一個命令行 dropbox 客戶端,且無需磁盤空間即可訪問。-- Sk<br class=""><br><p>不久前,我們總結了所有&nbsp;<span style="color:#4D8AD8;">在本地掛載 Google Drive</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[1]</span>&nbsp;作為虛擬文件系統,并從 Linux 系統訪問存儲在 Google Drive 中的文件的方法。今天,我們將學習使用&nbsp;dbxfs&nbsp;將 Dropbox 文件夾掛載到本地文件系統中。dbxfs&nbsp;用于在類 Unix 操作系統中本地掛載 Dropbox 文件夾作為虛擬文件系統。雖然在 Linux 中很容易<span style="color:#4D8AD8;">安裝 Dropbox 客戶端</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[2]</span>,但這種方法與官方方法略有不同。它是一個命令行 dropbox 客戶端,且無需磁盤空間即可訪問。dbxfs&nbsp;是自由開源的,并且是用 Python 3.5+ 編寫的。</p><p class="" style="color:#FFFFFF;font-size:1.4em;background-color:#3F51B5;">安裝 dbxfs</p><p>dbxfs&nbsp;官方支持 Linux 和 Mac OS。但是,它應該適用于任何提供&nbsp;<span style="color:#C40F0F;">FUSE 兼容庫</span>或能夠掛載 SMB 共享的 POSIX 系統。由于它是用 Python 3.5 編寫的,因此可以使用 pip3 包管理器進行安裝。如果尚未安裝 pip,請參閱以下指南。</p>?&nbsp;<span style="color:#4D8AD8;">如何使用 pip 管理 Python 包</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[3]</span><p>并且也要安裝 FUSE 庫。</p><p>在基于 Debian 的系統上,運行以下命令以安裝 FUSE:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#B8FFB8;">$ </span><span class="" style="color:#E28964;">sudo</span><span class="" style="color:#B8FFB8;"> apt install libfuse2</span></p></li></ol></pre> <p>在 Fedora 上:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#B8FFB8;">$ </span><span class="" style="color:#E28964;">sudo</span><span class="" style="color:#B8FFB8;"> dnf install fuse</span></p></li></ol></pre> <p>安裝完所有必需的依賴項后,運行以下命令以安裝&nbsp;dbxfs:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#B8FFB8;">$ pip3 install dbxfs</span></p></li></ol></pre> <p class="" style="color:#FFFFFF;font-size:1.4em;background-color:#3F51B5;">在本地掛載 Dropbox 文件夾</p><p>創建一個掛載點以將 Dropbox 文件夾掛載到本地文件系統中。</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#B8FFB8;">$ </span><span class="" style="color:#E28964;">mkdir</span><span class="" style="color:#B8FFB8;"> </span><span class="" style="color:#B8FFB8;">~/</span><span class="" style="color:#B8FFB8;">mydropbox</span></p></li></ol></pre> <p>然后,使用&nbsp;dbxfs&nbsp;在本地掛載 dropbox 文件夾,如下所示:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#B8FFB8;">$ dbxfs </span><span class="" style="color:#B8FFB8;">~/</span><span class="" style="color:#B8FFB8;">mydropbox</span></p></li></ol></pre> <p>你將被要求生成一個訪問令牌:</p><p class="" style="text-align:center;"><img src="http://115.29.210.249/tggPic/content/2019-01/1546595280273.jpg" data-ke-src="http://115.29.210.249/tggPic/content/2019-01/1546595280273.jpg" alt=""><br></p><p>要生成訪問令牌,只需在 Web 瀏覽器中輸入上面輸出的 URL,然后單擊&nbsp;<span style="color:#C40F0F;">允許</span>&nbsp;以授權 Dropbox 訪問。你需要登錄 Dropbox 帳戶才能完成授權過程。</p><p>下一個頁面將生成新的授權碼。復制代碼并返回終端將其粘貼到 cli-dbxfs 提示符中以完成該過程。</p><p>然后,系統會要求你保存憑據以供將來訪問。根據你是要保存還是拒絕,輸入&nbsp;Y&nbsp;或&nbsp;N。然后,你需要為新的訪問令牌輸入兩次密碼。</p><p>最后,輸入&nbsp;Y&nbsp;接受&nbsp;/home/username/mydropbox&nbsp;作為默認掛載點。如果你要設置不同的路徑,輸入&nbsp;N&nbsp;并輸入你選擇的位置。</p><p class="" style="text-align:center;"><img src="http://115.29.210.249/tggPic/content/2019-01/1546595291599.jpg" data-ke-src="http://115.29.210.249/tggPic/content/2019-01/1546595291599.jpg" alt=""><br></p><p class="" style="text-align:center;"><em>Generate access token 2</em></p><p>完成了!從現在開始,你可以看到你的 Dropbox 文件夾已掛載到本地文件系統中。</p><p class="" style="text-align:center;"><img src="http://115.29.210.249/tggPic/content/2019-01/1546595301766.jpg" data-ke-src="http://115.29.210.249/tggPic/content/2019-01/1546595301766.jpg" alt=""><br></p><p class="" style="color:#FFFFFF;font-size:1.4em;background-color:#3F51B5;">更改訪問令牌存儲路徑</p><p>默認情況下,dbxfs&nbsp;會將 Dropbox 訪問令牌存儲在系統密鑰環或加密文件中。但是,你可能希望將其存儲在 gpg 加密文件或其他地方。如果是這樣,請在&nbsp;<span style="color:#4D8AD8;">Dropbox 開發者應用控制臺</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[4]</span>上創建個人應用來獲取訪問令牌。</p><p class="" style="text-align:center;"><img src="http://115.29.210.249/tggPic/content/2019-01/1546595313902.jpg" data-ke-src="http://115.29.210.249/tggPic/content/2019-01/1546595313902.jpg" alt=""><br></p><p>創建應用后,單擊下一步中的<span style="color:#C40F0F;">生成</span>按鈕。此令牌可用于通過 API 訪問你的 Dropbox 帳戶。不要與任何人共享你的訪問令牌。</p><p class="" style="text-align:center;"><img src="http://115.29.210.249/tggPic/content/2019-01/1546595328318.jpg" data-ke-src="http://115.29.210.249/tggPic/content/2019-01/1546595328318.jpg" alt=""><br></p><p>創建訪問令牌后,使用任何你選擇的加密工具對其進行加密,例如&nbsp;<span style="color:#4D8AD8;">Cryptomater</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[5]</span>、<span style="color:#4D8AD8;">Cryptkeeper</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[6]</span>、<span style="color:#4D8AD8;">CryptGo</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[7]</span>、<span style="color:#4D8AD8;">Cryptr</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[8]</span>、<span style="color:#4D8AD8;">Tomb</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[9]</span>、<span style="color:#4D8AD8;">Toplip</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[10]</span>&nbsp;和&nbsp;<span style="color:#4D8AD8;">**GnuPG</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[11]</span>等,并在你喜歡的位置保存。</p><p>接下來編輯 dbxfs 配置文件并添加以下行:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#65B042;">"access_token_command"</span><span class="" style="color:#B8FFB8;">:</span><span class="" style="color:#B8FFB8;"> </span><span class="" style="color:#B8FFB8;">[</span><span class="" style="color:#65B042;">"gpg"</span><span class="" style="color:#B8FFB8;">,</span><span class="" style="color:#B8FFB8;"> </span><span class="" style="color:#65B042;">"--decrypt"</span><span class="" style="color:#B8FFB8;">,</span><span class="" style="color:#B8FFB8;"> </span><span class="" style="color:#65B042;">"/path/to/access/token/file.gpg"</span><span class="" style="color:#B8FFB8;">]</span></p></li></ol></pre> <p>你可以通過運行以下命令找到 dbxfs 配置文件:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#B8FFB8;">$ dbxfs </span><span class="" style="color:#B8FFB8;">--</span><span class="" style="color:#E28964;">print</span><span class="" style="color:#B8FFB8;">-</span><span class="" style="color:#E28964;">default</span><span class="" style="color:#B8FFB8;">-</span><span class="" style="color:#B8FFB8;">config</span><span class="" style="color:#B8FFB8;">-</span><span class="" style="color:#E28964;">file</span></p></li></ol></pre> <p>有關更多詳細信息,請參閱 dbxfs 幫助:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#B8FFB8;">$ dbxfs </span><span class="" style="color:#B8FFB8;">-</span><span class="" style="color:#B8FFB8;">h</span></p></li></ol></pre> <p>如你所見,使用&nbsp;dbxfs&nbsp;在你的文件系統中本地掛載 Dropfox 文件夾并不復雜。經過測試,dbxfs&nbsp;如常工作。如果你有興趣了解它是如何工作的,請嘗試一下,并在下面的評論欄告訴我們你的體驗。</p>
  • news

    Linux系統的命令應該如何記?

    發布時間:2018-12-07

    <p style="font-family:-apple-system-font, BlinkMacSystemFont, &quot;font-size:14px;text-align:justify;background-color:#FFFFFF;color:inherit;">如果你問我,學習掌握Linux最快的方式是什么?我認為是背Linux常用命令,因為你在服務器上面操作的時候,無論你想做什么,都是在使用命令。比如:當服務器的應用有問題的時候,你想查看日志使用cat或者tail –f;比如你需要批量替換一個文件里面的指定字符串的時候,你會使用sed;當你要使用docker的時候,依然是使用docker下面的對應的命令,不過很多命令你看名字,就會知道這個命令是干什么的。</p><p style="font-family:-apple-system-font, BlinkMacSystemFont, &quot;font-size:14px;text-align:justify;background-color:#FFFFFF;color:inherit;">因而,假如你是一名學生,那么在進入互聯網行業之前,想快速打下一個比較好的根底,那么可以采用背重要命令的方式來進行學習,就可以快速掌握Linux了。當然,并不是說你背了越多的Linux下面的命令,你會使用了,你就更精通了,還是需要了解一些Linux的系統知識、原理、理論的內容,比如Linux下面的FHS是怎么樣的?文件系統有些什么格式?磁盤的常見分區技術等。還是必須理解了一些必要的理論知識,才能更加明白命令使用的原理,對命令有更深入的認識。</p><p style="font-family:-apple-system-font, BlinkMacSystemFont, &quot;font-size:14px;text-align:center;background-color:#FFFFFF;color:#3E3E3E;"><img src="http://115.29.210.249/tggPic/content/2018-12/1544162431451.jpg" data-ke-src="http://115.29.210.249/tggPic/content/2018-12/1544162431451.jpg" alt=""></p><p style="font-family:-apple-system-font, BlinkMacSystemFont, &quot;font-size:14px;text-align:justify;background-color:#FFFFFF;color:inherit;"><strong>Linux入門篇:</strong><br>很多剛入門的同學,就像無頭的蒼蠅一樣,到處找視頻、書籍、網站帖子之類的學習方式,視頻雖然講得詳細,但是時間的投入也是巨大的,播放時間,練習時間,加起來很嚇人,其實啊很少有人能堅持把一套視頻看完;技術帖子之類的,一般都比較散亂,不成學習系統,學起來沒有一個系統的框架,隨意翻翻也還好;推薦一本書《Linux就該這么學》,感覺還不錯,建議新手入手。書籍從目錄來看就非常有條理,看書可以系統化的學習、循序漸進,不會初學者不知道從哪兒開始的感覺。建議使用我上面的那本,如果有更好的,也你可以,但是一定要堅持,前期可以安裝一個VMware或者virtualbox虛擬機,重復練習為主要手段,把一本書好好吃透,重點是吃透,那么你也就入門了。</p><p style="font-family:-apple-system-font, BlinkMacSystemFont, &quot;font-size:14px;text-align:justify;background-color:#FFFFFF;color:inherit;">那么具體需要掌握哪些命令呢?這里羅列一些必須掌握的命令:<br>目錄類的命令是我們需要得最多的:<br><strong><span style="color:#666666;line-height:26px;font-size:13px;">cd [24] &nbsp; &nbsp;改變工作目錄<br>chmod [25] &nbsp; &nbsp;改變文件或目錄的文件權限<br>dirs [24] &nbsp; &nbsp;顯示/清除目錄棧中的內容<br>du [24] &nbsp; &nbsp;顯示文件使用的磁盤空間量<br>file [24] &nbsp; &nbsp;分析文件的類型<br>ls [24/25] &nbsp; &nbsp;顯示文件的各種類型的信息<br>mkdir [24] &nbsp; &nbsp;創建目錄<br>mv [24/25] &nbsp; &nbsp;移動或重命名文件或目錄<br>popd [24] &nbsp; &nbsp;改變工作目錄,將名稱從目錄棧中彈出<br>pushd [24] &nbsp; &nbsp;改變工作目錄,將名稱壓入到目錄棧中<br>pwd [24] &nbsp; &nbsp;顯示工作目錄的路徑名<br>rm [25] &nbsp; &nbsp;刪除文件或目錄<br>rmdir [24] &nbsp; &nbsp;刪除空目錄<br>tree [24] &nbsp; &nbsp;顯示目錄樹的圖表</span></strong></p><p style="font-family:-apple-system-font, BlinkMacSystemFont, &quot;font-size:14px;text-align:justify;background-color:#FFFFFF;color:inherit;"><strong>構建塊</strong><br><span style="font-family:&quot;color:#666666;line-height:26px;font-size:13px;"><strong>cat [16] &nbsp; &nbsp;組合文件,將標準輸入復制到標準輸出<br>tee [15] &nbsp; &nbsp;將標準輸入復制到文件和標準輸出<br>xargs [25] &nbsp; &nbsp;使用來自標準輸入的參數運行命令<br>當你不知道需要查找命令的相關信息的時候,可能就需要下面的命令工具了:<br>alias [13] &nbsp; &nbsp;創建/顯示別名<br>type [8] &nbsp; &nbsp;定位命令:顯示命令的路徑名或別名<br>unalias [25] &nbsp; &nbsp;刪除別名<br>whence [8] &nbsp; &nbsp;定位命令:顯示命令的路徑名或別名<br>which [8] &nbsp; &nbsp;定位命令:顯示命令的路徑名或別名</strong></span></p><p style="font-family:-apple-system-font, BlinkMacSystemFont, &quot;font-size:14px;text-align:justify;background-color:#FFFFFF;color:inherit;">當我們需要顯示內容的時候,需要我們的顯示輸出命令,非常重要:<br><span style="font-family:&quot;color:#666666;line-height:26px;font-size:13px;"><strong>cat [16] &nbsp; &nbsp;組合文件,將標準輸入復制到標準輸出<br>echo [12] &nbsp; &nbsp;將參數寫到標準輸出<br>head [16/21] &nbsp; &nbsp;從數據的開頭選擇行<br>hexdump [21] &nbsp; &nbsp;顯示二進制(非文本)文件<br>less [21] &nbsp; &nbsp;分頁程序:每次一屏地顯示數據<br>more [21] &nbsp; &nbsp;分布程序:每次一屏地顯示數據<br>od [21] &nbsp; &nbsp;顯示二進制(非文本)文件<br>print [12] &nbsp; &nbsp;將參數寫到標準輸出<br>tail [21] &nbsp; &nbsp;在數據的末尾選擇行</strong></span></p><p style="font-family:-apple-system-font, BlinkMacSystemFont, &quot;font-size:14px;text-align:justify;background-color:#FFFFFF;color:inherit;">當我們需要對服務器配置的時候,那么編輯命令就非常重要了:<br><strong><span style="color:#666666;line-height:26px;font-size:13px;">sed [19] &nbsp; &nbsp;非交互式文本編輯<br>vi [22] &nbsp; &nbsp;vi文本編輯器<br>view [22] &nbsp; &nbsp;以只讀模式啟動vi文本編輯器<br>vim [22] &nbsp; &nbsp;vim文本編輯器</span></strong></p><p style="font-family:-apple-system-font, BlinkMacSystemFont, &quot;font-size:14px;text-align:justify;background-color:#FFFFFF;color:inherit;">當我們需要對文件的權限,搜索,操作之類的,那么就需要下面的命令了:<br><strong><span style="color:#666666;line-height:26px;font-size:13px;">chmod [25] &nbsp; &nbsp;改變文件或目錄的文件權限<br>cp [25] &nbsp; &nbsp;復制文件;復制目錄<br>du [24] &nbsp; &nbsp;顯示文件使用的磁盤空間量<br>find [25] &nbsp; &nbsp;在目錄樹中搜索文件,處理結果<br>ln [25] &nbsp; &nbsp;創建文件的一個新鏈接<br>locate [25] &nbsp; &nbsp;搜索文件<br>ls [24/25] &nbsp; &nbsp;顯示文件的各種類型的信息<br>mkfifo [23] &nbsp; &nbsp;創建命名管道<br>mv [24/25] &nbsp; &nbsp;移動或重命名文件或目錄<br>rm [25] &nbsp; &nbsp;刪除文件或目錄<br>shred [25] &nbsp; &nbsp;安全刪除文件<br>stat [25] &nbsp; &nbsp;顯示i節點的信息<br>touch [25] &nbsp; &nbsp;更新文件的訪問/修改時間;創建文件<br>umask [25] &nbsp; &nbsp;在文件創建過程中設置文件模式掩碼<br>whence [8] &nbsp; &nbsp;定位命令:顯示命令的路徑名或別名<br>whereis [25] &nbsp; &nbsp;查看與命令關聯的文件</span></strong></p><p style="font-family:-apple-system-font, BlinkMacSystemFont, &quot;font-size:14px;text-align:justify;background-color:#FFFFFF;color:inherit;">那么我們知道了這么多命令,或者忘記了命令的參數和使用那萬一忘記了,如何找到呢?下面就教大家幾個必備命令:<br><strong>神器一:man命令 &nbsp; &nbsp;格式:man[空格][需要查看的命令]<span class="Apple-converted-space" style="color:#666666;line-height:28px;">&nbsp;</span></strong><br>比如我們輸入:man ls &nbsp; 就會看到man page 如下圖</p><p style="font-family:-apple-system-font, BlinkMacSystemFont, &quot;font-size:14px;text-align:center;background-color:#FFFFFF;color:#3E3E3E;"><img src="http://115.29.210.249/tggPic/content/2018-12/1544162447143.jpg" data-ke-src="http://115.29.210.249/tggPic/content/2018-12/1544162447143.jpg" alt=""></p><p style="font-family:-apple-system-font, BlinkMacSystemFont, &quot;font-size:14px;text-align:justify;background-color:#FFFFFF;color:inherit;"><strong>神器二:info命令 格式:info [需要查看的命令] &nbsp;</strong><br>比如我們輸入info ls 回車,就會看到下圖:</p><p style="font-family:-apple-system-font, BlinkMacSystemFont, &quot;font-size:14px;text-align:center;background-color:#FFFFFF;color:#3E3E3E;"><img src="http://115.29.210.249/tggPic/content/2018-12/1544162458236.jpg" data-ke-src="http://115.29.210.249/tggPic/content/2018-12/1544162458236.jpg" alt=""></p>
  • news

    2018 重溫 Unix 哲學

    發布時間:2018-11-27

    <p style="color:#333333;font-family:Optima-Regular, PingFangTC-light;font-size:14px;text-align:justify;">1984 年,Rob Pike 和 Brian W. Kernighan 在 AT&amp;T 貝爾實驗室技術期刊上發表了名為 “<span style="color:#4D8AD8;">Unix 環境編程</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[1]</span>” 的文章,其中他們使用 BSD 的&nbsp;cat -v&nbsp;例子來認證 Unix 哲學。簡而言之,Unix 哲學是:構建小型、單一的應用程序 —— 不管用什么語言 —— 只做一件小而美的事情,用&nbsp;stdin&nbsp;/&nbsp;stdout&nbsp;進行通信,并通過管道進行連接。</p><p style="color:#333333;font-family:Optima-Regular, PingFangTC-light;font-size:14px;text-align:justify;">聽起來是不是有點耳熟?</p><p style="color:#333333;font-family:Optima-Regular, PingFangTC-light;font-size:14px;text-align:justify;">是的,我也這么認為。這就是 James Lewis 和 Martin Fowler 給出的&nbsp;<span style="color:#4D8AD8;">微服務的定義</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[2]</span>&nbsp;。</p><blockquote style="color:#333333;font-family:Optima-Regular, PingFangTC-light;font-size:14px;text-align:justify;"><p>簡單來說,微服務架構的風格是將單個 應用程序開發為一套小型服務的方法,每個服務都運行在它的進程中,并用輕量級機制進行通信,通常是 HTTP 資源 API 。</p></blockquote><p style="color:#333333;font-family:Optima-Regular, PingFangTC-light;font-size:14px;text-align:justify;">雖然一個 *nix 程序或者是一個微服務本身可能非常局限甚至不是很有用,但是當這些獨立工作的單元組合在一起的時候就顯示出了它們真正的好處和強大。</p><p class="" style="font-family:Optima-Regular, PingFangTC-light;text-align:justify;color:#FFFFFF;font-size:1.4em;background-color:#3F51B5;">*nix程序 vs 微服務</p><p style="color:#333333;font-family:Optima-Regular, PingFangTC-light;font-size:14px;text-align:justify;">下面的表格對比了 *nix 環境中的程序(例如&nbsp;cat&nbsp;或&nbsp;lsof)與微服務環境中的程序。</p>&lt; 如顯示不全,請左右滑動 &gt;<table cellpadding="4" width="694" style="margin:0px 0px 10px;padding:0px;width:378px;"><tbody><tr><th style="text-align:left;font-weight:400;background:#F7F7F7;">&nbsp;</th><th style="text-align:left;font-weight:400;background:#F7F7F7;">*nix 程序</th><th style="text-align:left;font-weight:400;background:#F7F7F7;">微服務</th></tr></tbody><tbody><tr><td style="border:1px solid #DDDDDD;">執行單元</td><td style="border:1px solid #DDDDDD;">程序使用&nbsp;stdin/stdout</td><td style="border:1px solid #DDDDDD;">使用 HTTP 或 gRPC API</td></tr><tr><td style="border:1px solid #DDDDDD;">數據流</td><td style="border:1px solid #DDDDDD;">管道</td><td style="border:1px solid #DDDDDD;">?</td></tr><tr><td style="border:1px solid #DDDDDD;">可配置和參數化</td><td style="border:1px solid #DDDDDD;">命令行參數、環境變量和配置文件</td><td style="border:1px solid #DDDDDD;">JSON/YAML 文檔</td></tr><tr><td style="border:1px solid #DDDDDD;">發現</td><td style="border:1px solid #DDDDDD;">包管理器、man、make</td><td style="border:1px solid #DDDDDD;">DNS、環境變量、OpenAPI</td></tr></tbody></table><p style="color:#333333;font-family:Optima-Regular, PingFangTC-light;font-size:14px;text-align:justify;">讓我們詳細的看看每一行。</p><p class="" style="font-family:Optima-Regular, PingFangTC-light;text-align:justify;color:#FFFFFF;font-size:1.2em;background-color:#3F51B5;">執行單元</p><p style="color:#333333;font-family:Optima-Regular, PingFangTC-light;font-size:14px;text-align:justify;">*nix 系統(如 Linux)中的執行單元是一個可執行的文件(二進制或者是腳本),理想情況下,它們從&nbsp;stdin&nbsp;讀取輸入并將輸出寫入&nbsp;stdout。而微服務通過暴露一個或多個通信接口來提供服務,比如 HTTP 和 gRPC API。在這兩種情況下,你都會發現無狀態示例(本質上是純函數行為)和有狀態示例,除了輸入之外,還有一些內部(持久)狀態決定發生了什么。</p><p class="" style="font-family:Optima-Regular, PingFangTC-light;text-align:justify;color:#FFFFFF;font-size:1.2em;background-color:#3F51B5;">數據流</p><p style="color:#333333;font-family:Optima-Regular, PingFangTC-light;font-size:14px;text-align:justify;">傳統的,*nix 程序能夠通過管道進行通信。換句話說,我們要感謝&nbsp;<span style="color:#4D8AD8;">Doug McIlroy</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[3]</span>,你不需要創建臨時文件來傳遞,而可以在每個進程之間處理無窮無盡的數據流。據我所知,除了我在&nbsp;<span style="color:#4D8AD8;">2017 年做的基于 Apache Kafka 小實驗</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[4]</span>,沒有什么能比得上管道化的微服務了。</p><p class="" style="font-family:Optima-Regular, PingFangTC-light;text-align:justify;color:#FFFFFF;font-size:1.2em;background-color:#3F51B5;">可配置和參數化</p><p style="color:#333333;font-family:Optima-Regular, PingFangTC-light;font-size:14px;text-align:justify;">你是如何配置程序或者服務的,無論是永久性的服務還是即時的服務?是的,在 *nix 系統上,你通常有三種方法:命令行參數、環境變量,或全面的配置文件。在微服務架構中,典型的做法是用 YAML(或者甚至是 JSON)文檔,定制好一個服務的布局和配置以及依賴的組件和通信、存儲和運行時配置。例如&nbsp;<span style="color:#4D8AD8;">Kubernetes 資源定義</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[5]</span>、<span style="color:#4D8AD8;">Nomad 工作規范</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[6]</span>&nbsp;或&nbsp;<span style="color:#4D8AD8;">Docker 編排</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[7]</span>&nbsp;文檔。這些可能參數化也可能不參數化;也就是說,除非你知道一些模板語言,像 Kubernetes 中的&nbsp;<span style="color:#4D8AD8;">Helm</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[8]</span>,否則你會發現你使用了很多&nbsp;sed -i&nbsp;這樣的命令。</p><p class="" style="font-family:Optima-Regular, PingFangTC-light;text-align:justify;color:#FFFFFF;font-size:1.2em;background-color:#3F51B5;">發現</p><p style="color:#333333;font-family:Optima-Regular, PingFangTC-light;font-size:14px;text-align:justify;">你怎么知道有哪些程序和服務可用,以及如何使用它們?在 *nix 系統中通常都有一個包管理器和一個很好用的 man 頁面;使用它們,應該能夠回答你所有的問題。在微服務的設置中,在尋找一個服務的時候會相對更自動化一些。除了像&nbsp;<span style="color:#4D8AD8;">Airbnb 的 SmartStack</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[9]</span>&nbsp;或&nbsp;<span style="color:#4D8AD8;">Netflix 的 Eureka</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[10]</span>&nbsp;等可以定制以外,通常還有基于環境變量或基于 DNS 的<span style="color:#4D8AD8;">方法</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[11]</span>,允許您動態的發現服務。同樣重要的是,事實上&nbsp;<span style="color:#4D8AD8;">OpenAPI</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[12]</span>&nbsp;為 HTTP API 提供了一套標準文檔和設計模式,<span style="color:#4D8AD8;">gRPC</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[13]</span>&nbsp;為一些耦合性強的高性能項目也做了同樣的事情。最后非常重要的一點是,考慮到開發者經驗(DX),應該從寫一份好的&nbsp;<span style="color:#4D8AD8;">Makefile</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[14]</span>&nbsp;開始,并以編寫符合&nbsp;<span style="color:#4D8AD8;">風格</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[15]</span>&nbsp;的文檔結束。</p><p class="" style="font-family:Optima-Regular, PingFangTC-light;text-align:justify;color:#FFFFFF;font-size:1.4em;background-color:#3F51B5;">優點和缺點</p><p style="color:#333333;font-family:Optima-Regular, PingFangTC-light;font-size:14px;text-align:justify;">*nix 系統和微服務都提供了許多挑戰和機遇。</p><p class="" style="font-family:Optima-Regular, PingFangTC-light;text-align:justify;color:#FFFFFF;font-size:1.2em;background-color:#3F51B5;">模塊性</p><p style="color:#333333;font-family:Optima-Regular, PingFangTC-light;font-size:14px;text-align:justify;">要設計一個簡潔、有清晰的目的,并且能夠很好地和其它模塊配合的某個東西是很困難的。甚至是在不同版本中實現并引入相應的異常處理流程都很困難的。在微服務中,這意味著重試邏輯和超時機制,或者將這些功能外包到服務網格service mesh是不是一個更好的選擇呢?這確實比較難,可如果你做好了,那它的可重用性是巨大的。</p><p class="" style="font-family:Optima-Regular, PingFangTC-light;text-align:justify;color:#FFFFFF;font-size:1.2em;background-color:#3F51B5;">可觀測性</p><p style="color:#333333;font-family:Optima-Regular, PingFangTC-light;font-size:14px;text-align:justify;">在一個獨石monolith(2018 年)或是一個試圖做任何事情的大型程序(1984 年),當情況惡化的時候,應當能夠直接的找到問題的根源。但是在一個</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#E28964;">yes</span><span class="" style="color:#B8FFB8;"> </span><span class="" style="color:#B8FFB8;">|</span><span class="" style="color:#B8FFB8;"> </span><span class="" style="color:#E28964;">tr</span><span class="" style="color:#B8FFB8;"> \\n x </span><span class="" style="color:#B8FFB8;">|</span><span class="" style="color:#B8FFB8;"> </span><span class="" style="color:#E28964;">head</span><span class="" style="color:#B8FFB8;"> </span><span class="" style="color:#B8FFB8;">-</span><span class="" style="color:#B8FFB8;">c </span><span class="" style="color:#3387CC;">450m</span><span class="" style="color:#B8FFB8;"> </span><span class="" style="color:#B8FFB8;">|</span><span class="" style="color:#B8FFB8;"> </span><span class="" style="color:#E28964;">grep</span><span class="" style="color:#B8FFB8;"> n</span></p></li></ol></pre> <p style="color:#333333;font-family:Optima-Regular, PingFangTC-light;font-size:14px;text-align:justify;">或者在一個微服務設置中請求一個路徑,例如,涉及 20 個服務,你怎么弄清楚是哪個服務的問題?幸運的是,我們有很多標準,特別是&nbsp;<span style="color:#4D8AD8;">OpenCensus</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[16]</span>&nbsp;和&nbsp;<span style="color:#4D8AD8;">OpenTracing</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[17]</span>。如果您希望轉向微服務,可預測性仍然可能是較大的問題。</p><p class="" style="font-family:Optima-Regular, PingFangTC-light;text-align:justify;color:#FFFFFF;font-size:1.2em;background-color:#3F51B5;">全局狀態</p><p style="color:#333333;font-family:Optima-Regular, PingFangTC-light;font-size:14px;text-align:justify;">對于 *nix 程序來說可能不是一個大問題,但在微服務中,全局狀態仍然是一個需要討論的問題。也就是說,如何確保有效的管理本地化(持久性)的狀態以及盡可能在少做變更的情況下使全局保持一致。</p><p class="" style="font-family:Optima-Regular, PingFangTC-light;text-align:justify;color:#FFFFFF;font-size:1.4em;background-color:#3F51B5;">總結一下</p><p style="color:#333333;font-family:Optima-Regular, PingFangTC-light;font-size:14px;text-align:justify;">最后,問題仍然是:你是否在使用合適的工具來完成特定的工作?也就是說,以同樣的方式實現一個特定的 *nix 程序在某些時候或者階段會是一個更好的選擇,它是可能在你的組織或工作過程中的一個<span style="color:#4D8AD8;">最好的選擇</span><span class="" style="font-size:9px;vertical-align:super;color:#FFFFFF;line-height:1em;background-color:#666666;">[18]</span>。無論如何,我希望這篇文章可以讓你看到 Unix 哲學和微服務之間許多強有力的相似之處。也許我們可以從前者那里學到一些東西使后者受益。</p>
  • news

    寫直白的代碼

    發布時間:2018-11-20

    <p style="font-family:Optima-Regular, PingFangTC-light;color:#333333;font-size:14px;background-color:#FFFFFF;text-align:justify;">為開源項目作貢獻最好的方式是為它減少代碼,我們應致力于寫出讓新手程序員無需注釋就容易理解的代碼,讓維護者也無需花費太多精力就能著手維護。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#333333;font-size:14px;background-color:#FFFFFF;text-align:justify;">在學生時代,我們會更多地用復雜巧妙的技術去挑戰新的難題。首先我們會學習循環,然后是函數啊,類啊,等等。當我們到達一定高的程度,能用更高級的技術寫更長的程序,我們會因此受到稱贊。此刻我們發現老司機們用 monads 而新手們用 loop 作循環。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#333333;font-size:14px;background-color:#FFFFFF;text-align:justify;">之后我們畢業找了工作,或者和他人合作開源項目。我們用在學校里學到的各種炫技尋求并驕傲地給出解決方案的代碼實現。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#333333;font-size:14px;background-color:#FFFFFF;text-align:justify;"><br></p><p style="font-family:Optima-Regular, PingFangTC-light;color:#333333;font-size:14px;background-color:#FFFFFF;text-align:justify;">我們實現了某個小的功能,并以充分的理由覺得自己做到了。現實項目中的編程卻不是針對某某部分的功能而言。以我個人的經驗而言,以前我很開心的去寫代碼,并驕傲地向世界展示我所知道的事情。有例為證,作為對某種編程技術的偏愛,這是用另一種元編程語言構建的一個&nbsp;<span style="font-family:&quot;color:#4D8AD8;line-height:28px;">線性代數語言</span><span class="" style="font-family:&quot;color:#FFFFFF;line-height:1em;font-size:9px;vertical-align:super;background-color:#666666;">[1]</span>,注意,這么多年以來一直沒人愿意碰它。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#333333;font-size:14px;background-color:#FFFFFF;text-align:justify;">在維護了更多的代碼后,我的觀點發生了變化。</p><span style="color:#666666;font-family:&quot;font-size:14px;background-color:#FFFFFF;">1.&nbsp;我們不應去刻意探求如何構建軟件。軟件是我們為解決問題所付出的代價,那才是我們真實的目的。我們應努力為了解決問題而構建較小的軟件。2.&nbsp;我們應使用盡可能簡單的技術,那么更多的人就越可能會使用,并且無需理解我們所知的高級技術就能擴展軟件的功能。當然,在我們不知道如何使用簡單技術去實現時,我們也可以使用高級技術。</span><p style="font-family:Optima-Regular, PingFangTC-light;color:#333333;font-size:14px;background-color:#FFFFFF;text-align:justify;">所有的這些例子都不是聽來的故事。我遇到的大部分人會認同某些部分,但不知為什么,當我們向一個新項目貢獻代碼時又會忘掉這個初衷。直覺里用復雜技術去構建的念頭往往會占據上風。</p><p class="" style="font-family:Optima-Regular, PingFangTC-light;color:#FFFFFF;text-align:justify;font-size:1.4em;background-color:#3F51B5;">軟件是種投入</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#333333;font-size:14px;background-color:#FFFFFF;text-align:justify;">你寫的每行代碼都要花費人力。寫代碼當然是需要時間的,也許你會認為只是你個人在奉獻,然而這些代碼在被審閱的時候也需要花時間理解,對于未來維護和開發人員來說,他們在維護和修改代碼時同樣要花費時間。否則他們完全可以用這時間出去曬曬太陽,或者陪伴家人。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#333333;font-size:14px;background-color:#FFFFFF;text-align:justify;">所以,當你向某個項目貢獻代碼時,請心懷謙恭。就像是,你正和你的家人進餐時,餐桌上卻沒有足夠的食物,你只索取你所需的部分,別人對你的自我約束將肅然起敬。以更少的代碼去解決問題是很難的,你肩負重任的同時自然減輕了別人的重負。</p><p class="" style="font-family:Optima-Regular, PingFangTC-light;color:#FFFFFF;text-align:justify;font-size:1.4em;background-color:#3F51B5;">技術越復雜越難維護</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#333333;font-size:14px;background-color:#FFFFFF;text-align:justify;">作為學生,逐漸使用技術證明了自己的價值。這體現在,首先我們有能力在開源項目中使用函數,接著是類,然后是高階函數,monads 等等。我們向同行顯示自己的解決方案時,常因自己所用技術高低而感到自豪或卑微。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#333333;font-size:14px;background-color:#FFFFFF;text-align:justify;">而在現實中,和團隊去解決問題時,情況發生了逆轉?,F在,我們致力于盡可能使用簡單的代碼去解決問題。簡單方式解決問題使新手程序員能夠以此擴展并解決其他問題。簡單的代碼讓別人容易上手,效果立竿見影。我們藉以只用簡單的技術去解決難題,從而展示自己的價值。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#333333;font-size:14px;background-color:#FFFFFF;text-align:justify;"><br></p><p style="font-family:Optima-Regular, PingFangTC-light;color:#333333;font-size:14px;background-color:#FFFFFF;text-align:justify;">如果你是個好的程序員,你不需要證明你知道很多炫技。相應的,你可以通過用一個簡單的方法解決一個問題來顯示你的價值,并激發你的團隊在未來的時間里去完善它。</p><p class="" style="font-family:Optima-Regular, PingFangTC-light;color:#FFFFFF;text-align:justify;font-size:1.4em;background-color:#3F51B5;">當然,也請保持節制</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#333333;font-size:14px;background-color:#FFFFFF;text-align:justify;">話雖如此,過于遵循 “用簡單的工具去構建” 的教條也會降低生產力。通常用遞歸會比用循環解決問題更簡單,用類或 monad 才是正確的途徑。還有兩種情況另當別論,一是只是只為滿足自我而創建的系統,或者是別人毫無構建經驗的系統。</p>
在線咨詢 ×

您好,請問有什么可以幫您?我們將竭誠提供最優質服務!

<bdo id="pdyax"></bdo>

    <pre id="pdyax"></pre>
    <menuitem id="pdyax"></menuitem>
      <form id="pdyax"><tbody id="pdyax"></tbody></form>

      1. <center id="pdyax"><center id="pdyax"></center></center>
          1. 主站蜘蛛池模板: 上饶县| 普宁市| 日喀则市| 永德县| 丹棱县| 临桂县| 炉霍县| 铜梁县| 临沧市| 龙陵县| 罗定市| 石台县| 宜川县| 金坛市| 高台县| 保靖县| 苗栗市| 永康市| 甘孜县| 米脂县| 靖边县| 晋中市| 湖州市| 马鞍山市| 三亚市| 肇庆市| 华容县| 景德镇市| 镇平县| 南昌市| 全椒县| 榆树市| 金塔县| 织金县| 新宁县| 栾城县| 淮安市| 马山县| 贵州省| 新和县| 临漳县|