亚洲国产综合一区第一页_亚洲最大的中文字幕无码_国产野外一区二区理伦片_免费国产直接看Av片

菜鳥(niǎo)程序員如何提高自己的技術(shù)

菜鳥(niǎo)程序員如何才能快速提高自己的技術(shù)?雖然我也是菜鳥(niǎo),但是依然覺(jué)得除了制定一個(gè)自主學(xué)習(xí)計(jì)劃之外,還應(yīng)該多讀源碼,多寫(xiě)代碼,多看看那些開(kāi)源的優(yōu)秀源碼,然后模仿著寫(xiě)...。

GitHub Pages

下面,我把自己的一些經(jīng)驗(yàn),分享給大家,希望對(duì)你們們也有所幫助!如果你們覺(jué)得好的,可以網(wǎng)站一起換一個(gè)友情鏈接,站點(diǎn)新建設(shè)起來(lái)的!

殷實(shí)的基礎(chǔ)

  • 首先,就我個(gè)人經(jīng)歷而言,我認(rèn)為初學(xué)者應(yīng)該特別注意這個(gè)點(diǎn),要注重基礎(chǔ),夯實(shí)語(yǔ)言,應(yīng)該不能急于求成,欲速則不達(dá),好像和快速提高自己的技術(shù)這個(gè)題目有點(diǎn)沖突,其實(shí)題目本來(lái)就是一個(gè)偽命題,要想真正的快速提高,必須要以慢打快,才能更快。因?yàn)閷?duì)于初學(xué)者而言,基礎(chǔ)知識(shí),編程語(yǔ)言必須要夯實(shí),只有真正懂了基礎(chǔ),才能舉一反三。
  • 舉個(gè)我的例子吧,我記得我在大二的時(shí)候,移動(dòng)互聯(lián)網(wǎng)剛剛興起,那時(shí)候我本來(lái)想學(xué)習(xí)java web開(kāi)發(fā)來(lái),后來(lái)感覺(jué)移動(dòng)開(kāi)發(fā)更有前途,就毅然決然地轉(zhuǎn)向了移動(dòng)開(kāi)發(fā),由于比較窮,干不起ios,就學(xué)了android,那時(shí)大學(xué)我就知道玩,沒(méi)怎么學(xué),剛自學(xué)android的時(shí)候,必須先學(xué)java,java就懂個(gè)大概,真的,什么匿名內(nèi)部類(lèi)什么的,回調(diào)接口,文件流啥的都不懂,學(xué)起來(lái)超費(fèi)勁,被迫自己又在網(wǎng)上下載視頻,重新學(xué)習(xí)了一遍java,之后再去看android的時(shí)候,才豁然開(kāi)朗。所以基礎(chǔ)絕對(duì)重要,我的總結(jié)就是:再快不能快基礎(chǔ),再爛不能爛語(yǔ)言。
  • 記筆記,寫(xiě)博客
  • 學(xué)習(xí)的時(shí)候,要學(xué)會(huì)總結(jié),要記筆記,告訴你們一個(gè)記筆記的好方法,就是寫(xiě)技術(shù)博客。在學(xué)習(xí)過(guò)程中,老師講的demo,總結(jié)的知識(shí)點(diǎn),自己記錄到技術(shù)博客中,由于編程知識(shí)點(diǎn)太多,爛熟于心是不可能的,那就好記性不如寫(xiě)博客。寫(xiě)在博客中,既能分享,又能方便自己查找,還能鞏固自己的知識(shí)點(diǎn)。去看看我的博客你就知道了,里面有很多現(xiàn)在看來(lái)不值一提的內(nèi)容,但是對(duì)于初學(xué)者而言,絕對(duì)重要??偨Y(jié),記筆記,寫(xiě)博客就跟冠希哥的電腦一樣,方便,好看,說(shuō)不定哪一天就能一博成名。

缺點(diǎn)也是有的:

  • 學(xué)會(huì)查文檔,調(diào)bug
  • 文檔這東西,肯定有很多程序員不喜歡看,尤其是英文文檔,這個(gè)坎我們一定要跨過(guò)去,自己看不懂,可以找翻譯軟件啊,翻譯翻譯多了,估計(jì)就能認(rèn)識(shí)了,也能看個(gè)大概了。學(xué)會(huì)了自己查文檔,就提高了自己解決問(wèn)題的能力了,也提高了學(xué)習(xí)新技術(shù)的能力。別問(wèn)我為什么這么說(shuō),別說(shuō)話(huà),直接吻我,以后你會(huì)感謝我的。調(diào)試bug我就不多說(shuō)了,這個(gè)重不重要,還用問(wèn)嗎?總結(jié),學(xué)會(huì)了查文檔,調(diào)bug,就跟在百度上谷歌一樣,其實(shí)沒(méi)那么難。
  • 對(duì)于自學(xué)者而言,在網(wǎng)上搜上一套完整的教學(xué)視頻,網(wǎng)上教學(xué)視頻多的是,自己找一套完整的,系統(tǒng)的去學(xué),學(xué)完之后,自己要嘗試著做一些軟件。

【二】針對(duì)初入社會(huì)的程序員

Jekyll 介紹

其實(shí)對(duì)于剛到一個(gè)新的公司,新的環(huán)境的程序員,肯定會(huì)有各種不適應(yīng),那么自然而然,我們首先要做的就是盡快適應(yīng)環(huán)境,學(xué)習(xí)代碼,剛到公司的一周,肯定是先讓你看代碼,了解公司,這一兩周,也盡快調(diào)整自己,適應(yīng)環(huán)境,對(duì)于剛到公司的人來(lái)說(shuō),有很多不好意思,代碼你可能不熟悉,不太懂,所以你一定要有勇氣去問(wèn),都說(shuō)了不恥下問(wèn),何況你這是上問(wèn)呢。

在工作的時(shí)候,也要時(shí)刻總結(jié),了解公司代碼的架構(gòu),為什么這么寫(xiě),有什么好處,做到自省和常問(wèn),如果工作之余還有時(shí)間,就嘗試著去了解新的技術(shù)和一些框架知識(shí),對(duì)于以后的發(fā)展還是非常有幫助的。多去瀏覽一些技術(shù)博客和網(wǎng)站,提高自己。說(shuō)實(shí)話(huà),我還真沒(méi)有什么好的建議和意見(jiàn)。markdown 使用總結(jié)。

對(duì)于初入社會(huì)剛工作的程序員,我的總結(jié)就是:要有鳳姐一樣厚的臉皮,無(wú)恥劉皇叔一樣的不羞上問(wèn),跟穿山甲一樣的能力,你就能混的成功。。

我的個(gè)人博客

我的博客經(jīng)過(guò)了三個(gè)階段,第一個(gè)階段,完全依托于使用 GitHub Pages 來(lái)構(gòu)建;第二個(gè)階段,將博客托管于國(guó)外的一個(gè)服務(wù)商;第三個(gè)階段,服務(wù)器遷移回到國(guó)內(nèi)、域名備案。之前也寫(xiě)過(guò)幾篇關(guān)于技術(shù)博客的文章,如下:

使用 Github Pages + Jekyll 構(gòu)建一個(gè)技術(shù)博客很簡(jiǎn)單,基本上步驟就是網(wǎng)上找一個(gè)自己喜歡的主題,直接 Fork 到自己的 Github ,然后在刪掉原博客中的內(nèi)容,在上傳自己的文章即可,以我自己的博客為例。

我的博客最初使用的是Yummy-Jekyll,但這個(gè)主題已經(jīng)盡兩年多都沒(méi)有更新了。因此后期我在這個(gè)主題的基礎(chǔ)上做了一些改動(dòng),其中有依賴(lài)組件的更新,結(jié)合個(gè)人情況對(duì)個(gè)別頁(yè)面進(jìn)行了改版,就成為了現(xiàn)在的樣子:

使用這個(gè)主題的原因是,我比較喜歡簡(jiǎn)潔大氣的風(fēng)格,并且此博客主題對(duì)代碼展示支持良好。

快速構(gòu)建一個(gè)博客

以我的博客為例,介紹如何最快搭建一個(gè)博客。這也是我博客經(jīng)歷的第一個(gè)階段。

1、首先打開(kāi)地址https://github.com/ityouknow/ityouknow.github.io,點(diǎn)擊 Fork 按鈕將代碼復(fù)制一份到自己的倉(cāng)庫(kù)。

過(guò)上一分鐘,你的 github 倉(cāng)庫(kù)發(fā)現(xiàn)一個(gè) ityouknow.github.io 項(xiàng)目。

2、刪除 CNAME 文件

刪除項(xiàng)目中的 CNAME 文件,CNAME 是定制域名的時(shí)候使用的內(nèi)容,如果不使用定制域名會(huì)存在沖突。

3、設(shè)置 GitHub Pages

點(diǎn)擊 Settings 按鈕打開(kāi)設(shè)置頁(yè)面,頁(yè)面往下拉到 GitHub Pages 相關(guān)設(shè)置,在 Source 下面的復(fù)選框中選擇 master branch ,然后點(diǎn)擊旁邊的 Save 按鈕保存設(shè)置。

4、重命名項(xiàng)目

點(diǎn)擊 Settings 按鈕打開(kāi)設(shè)置頁(yè)面,重命名項(xiàng)目名稱(chēng)為:github_username.github.io。

github_username 是你的 github 登錄用戶(hù)名

5、重命名之后,再次回到 Settings > GitHub Pages 頁(yè)面

會(huì)發(fā)現(xiàn)存在這樣一個(gè)地址: https://github_username.github.io

這個(gè)時(shí)候,你訪(fǎng)問(wèn)此地址已經(jīng)可以看到博客的首頁(yè),但是點(diǎn)擊文章的時(shí)鏈接跳轉(zhuǎn)地址不對(duì),這是因?yàn)樯倥渲昧艘粋€(gè)文件。

6、配置 _config.yml

打開(kāi)項(xiàng)目目錄下的 _config.yml 文件,修改以下配置:

repository: github_username/github_username.github.io
github_url: https://github.com/github_username
url: https://github_username.github.io

這時(shí)候在訪(fǎng)問(wèn)地址: https://github_username.github.io,就會(huì)發(fā)現(xiàn)博客就已經(jīng)構(gòu)建完成了。剩下的事情就是去項(xiàng)目的 _posts 目錄下刪除掉我的文章,然后按照 Jekyll 的語(yǔ)法就寫(xiě)自己的文章就好了。

github_username 為你的 github id。

自定義域名

雖然通過(guò)地址https://github_username.github.io可以正常訪(fǎng)問(wèn)博客,但是技術(shù)小伙伴們肯定有人想使用自己的域名訪(fǎng)問(wèn)博客,這樣的需求 GitHub Pages 也是支持的。

首先需要設(shè)置域名解析,將域名的地址指向自己的 github 博客地址。這里以萬(wàn)網(wǎng)的域名配置為例,選擇需要設(shè)置的域名點(diǎn)擊解析,在域名解析頁(yè)面添加以下兩條記錄

紅框內(nèi),需要填寫(xiě)自己github_username值。

然后重新打開(kāi)項(xiàng)目的 Settings > GitHub Pages 頁(yè)面,Custom domain 下的輸入框輸入剛才設(shè)置的域名:xxx.com,點(diǎn)擊保存即可。

重新配置 _config.yml

打開(kāi)項(xiàng)目目錄下的 _config.yml 文件,修改以下配置:

url: http://www.xxx.com

等待一分鐘之后,瀏覽器訪(fǎng)問(wèn)地址:www.xxx.com 即可訪(fǎng)問(wèn)博客。

自定義 DIY 博客

一般同學(xué)到上面這一步也就完成了,基本滿(mǎn)足了 80% 技術(shù)同學(xué)的需求。但還是有一些同學(xué)們有更高的追求,比如說(shuō)使用 Github Pages 雖然簡(jiǎn)單方便,但是不能被百度檢索白白流失了大量的流量,還有一個(gè)原因有些時(shí)候,博客網(wǎng)絡(luò)訪(fǎng)問(wèn)穩(wěn)定性不是很高。

當(dāng)時(shí)我在國(guó)外有幾個(gè)虛擬機(jī),本來(lái)用作它用,后來(lái)在上面安裝了一個(gè) Nginx 作為靜態(tài)頁(yè)面的服務(wù)器。首先我在本機(jī)(win10)安裝了 Jekyll 環(huán)境,將 Github 上的博客代碼下載下來(lái)之后,在本機(jī)編譯成靜態(tài)的 Html ,然后手動(dòng)上傳到服務(wù)的 Nginx 目錄下;然后將域名指向虛擬機(jī)。

非常不建議大家實(shí)踐以上這段內(nèi)容,win10 上面安裝 Jekyll 環(huán)境是一段慘痛的經(jīng)歷。

就這樣很麻煩的步驟我用了幾個(gè)月后,實(shí)在是受不了了,一方面因?yàn)榉?wù)器在國(guó)外,有時(shí)候仍然不穩(wěn)定(可能因?yàn)榉?wù)器安裝了代理),另一方面我需要使用一些功能,使用這些功能的前提是網(wǎng)站需要備案,那段時(shí)間騰訊云在做活動(dòng),就把博客又從國(guó)外搬了回來(lái),順便重新優(yōu)化了一下流程。

仍然把博客托管在 Github 上面,每次提交完代碼后,在騰訊云上面執(zhí)行一個(gè)腳本,這個(gè)腳本會(huì)自動(dòng)從 Github 拉取最新更新的文件,并自動(dòng)生產(chǎn)靜態(tài)的 Html 文件推送到 Nginx 目錄,域名重新指向這臺(tái)服務(wù)器??梢栽?Github 上面設(shè)置一些鉤子,當(dāng)提交代碼的時(shí)候自動(dòng)觸發(fā)腳本,也可以定時(shí)觸發(fā)腳本來(lái)發(fā)布文章。

腳本內(nèi)容如下:

cd /usr/local/ityouknow.github.io
git pull http://github.com/ityouknow/ityouknow.github.io.git
jekyll build --destination=/usr/share/nginx/html

執(zhí)行此腳本的前提是安裝好 git\jekyll 環(huán)境,這個(gè)網(wǎng)上有很多案例,這里就不再多描述了。
關(guān)于 Jekyll 環(huán)境搭建和使用可以參考這里:https://jekyllcn.com/docs/home/

自動(dòng)化部署

這兩天看到方志朋搞了自動(dòng)化部署,我也按照他的步驟實(shí)踐了一番,很好用,所以把自動(dòng)化部署這段寫(xiě)補(bǔ)上。

配置 Webhook

在開(kāi)發(fā)過(guò)程中的 Webhook,是一種通過(guò)通常的 callback,去增加或者改變 Web page或者 Web app 行為的方法。這些 Callback 可以由第三方用戶(hù)和開(kāi)發(fā)者維持當(dāng)前,修改,管理,而這些使用者與網(wǎng)站或者應(yīng)用的原始開(kāi)發(fā)沒(méi)有關(guān)聯(lián)。Webhook 這個(gè)詞是由 Jeff Lindsay 在 2007 年在計(jì)算機(jī)科學(xué) hook 項(xiàng)目第一次提出的。

用大白話(huà)講就是,代碼倉(cāng)庫(kù)在收到代碼提交的時(shí)候,會(huì)自動(dòng)觸發(fā)一個(gè) url 類(lèi)型的通知,你可以根據(jù)這個(gè)通知去做一些事情,比如提交了代碼就自動(dòng)去部署項(xiàng)目。

我們的自動(dòng)部署博客也是利用了這個(gè)機(jī)制,Github 自帶了 Webhook 功能,我們直接配置即可使用。

在 Github 倉(cāng)庫(kù)的項(xiàng)目界面,比如本博客項(xiàng)目 https://github.com/ityouknow/ityouknow.github.io,點(diǎn)擊 Setting->Webhooks->Add Webhook,在添加 Webhooks 的配置信息,我的配置信息如下:

Payload URL: http://www.ityouknow.com/deploy
Content type: application/json
Secret: 123456

如下圖:

服務(wù)器接受推送

我們需要在博客的服務(wù)器上面建立一個(gè)服務(wù),來(lái)接收 Github 提交代碼后的推送,從而來(lái)觸發(fā)部署的腳本。 Github 上有一個(gè)開(kāi)源項(xiàng)目可以做這個(gè)事情 github-webhook-handler

這個(gè)開(kāi)源項(xiàng)目目的很單純,就是負(fù)責(zé)接收 Github 推送過(guò)來(lái)的通知,然后執(zhí)行部署腳本,不過(guò)他是使用 NodeJs 來(lái)開(kāi)發(fā)的,所以我們先需要在 Centos 上面按照 Node 環(huán)境。

centos7 安裝 Node 環(huán)境

首先添加源

sudo rpm -ivh https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm

//yum安裝node.js
yum install -y nodejs

然后在安裝 github-webhook-handler

npm install -g github-webhook-handler     #安裝 github-webhook-handler
#如果沒(méi)有安裝成功,可以選擇法2來(lái)安裝
npm install -g cnpm --registry=http://r.cnpmjs.org
cnpm install -g github-webhook-handler

安裝成功之后,我們需要添加一個(gè)腳本。進(jìn)入到安裝目錄下:

cd  /usr/lib/node_modules/github-webhook-handler

新建 deploy.js

vi deploy.js

腳本內(nèi)容如下:

var http = require('http')
var createHandler = require('github-webhook-handler')
var handler = createHandler({ path: '/deploy', secret: 'ityouknow' }) //監(jiān)聽(tīng)請(qǐng)求路徑,和Github 配置的密碼
 
function run_cmd(cmd, args, callback) {
  var spawn = require('child_process').spawn;
  var child = spawn(cmd, args);
  var resp = "";
 
  child.stdout.on('data', function(buffer) { resp += buffer.toString(); });
  child.stdout.on('end', function() { callback (resp) });
}
 
http.createServer(function (req, res) {
  handler(req, res, function (err) {
    res.statusCode = 404
    res.end('no such location')
  })
}).listen(3006)//監(jiān)聽(tīng)的端口
 
handler.on('error', function (err) {
  console.error('Error:', err.message)
})
 
handler.on('push', function (event) {
  console.log('Received a push event for %s to %s',
    event.payload.repository.name,
    event.payload.ref);
  run_cmd('sh', ['/usr/local/depoly.sh'], function(text){ console.log(text) });//成功后,執(zhí)行的腳本。
})

腳本的作業(yè)就是啟動(dòng)一個(gè)監(jiān)聽(tīng)端口來(lái)接收請(qǐng)求,接收到請(qǐng)求后執(zhí)行部署腳本,腳本內(nèi)容的關(guān)鍵點(diǎn)已經(jīng)標(biāo)注上注釋。

部署博客的腳本如下:depoly.sh

echo `date`
cd /usr/local/ityouknow.github.io
echo start pull from github 
git pull http://github.com/ityouknow/ityouknow.github.io.git
echo start build..
jekyll build --destination=/usr/share/nginx/html

就是拉取代碼,進(jìn)行部署而已。

這個(gè)腳本的啟動(dòng)需要借助 Node 中的一個(gè)管理 forever 。forever 可以看做是一個(gè) nodejs 的守護(hù)進(jìn)程,能夠啟動(dòng),停止,重啟我們的 app 應(yīng)用。

不過(guò)我們的先安裝 forever,然后需要使用 forever 來(lái)啟動(dòng) deploy.js 的服務(wù),執(zhí)行命令如下:

npm install forever -g   #安裝
$ forever start deploy.js          #啟動(dòng)
$ forever stop deploy.js           #關(guān)閉
$ forever start -l forever.log -o out.log -e err.log deploy.js   #輸出日志和錯(cuò)誤
/root/node-v8.12.0-linux-x64/lib/node_modules/forever/bin/forever start -l forever.log -o out.log -e err.log deploy.js

如果報(bào)錯(cuò):
/root/node-v8.12.0-linux-x64/lib/node_modules/forever/bin/forever start -a -l forever.log -o out.log -e err.log deploy.js

同時(shí)一般情況下,我們不會(huì)對(duì)外保留很多端口,所以需要通過(guò)博客的地址來(lái)轉(zhuǎn)發(fā),需要在 Nginx 上面添加一個(gè)轉(zhuǎn)發(fā)配置,用來(lái)監(jiān)聽(tīng)的 /deploy 請(qǐng)求轉(zhuǎn)發(fā)到 nodejs 服務(wù)上,配置代碼如下:

location = /deploy {
     proxy_pass http://127.0.0.1:3006/deploy;
}

這樣我們整個(gè)自動(dòng)化部署就完了,每次提交代碼時(shí),Github 會(huì)發(fā)送 Webhook 給地址http://www.ityouknow.com/deploy,Nginx 將 /deploy 地址轉(zhuǎn)發(fā)給 Nodejs 端口為 3306 的服務(wù),最后通過(guò) github-webhook-handler 來(lái)執(zhí)行部署腳本,已到達(dá)自動(dòng)部署的目的。

以后只需要我們提交代碼到 Github ,就會(huì)自動(dòng)觸發(fā)博客的自動(dòng)化部署。

可能會(huì)出現(xiàn)的問(wèn)題

有一些小伙伴反饋在克隆博客的時(shí)候出現(xiàn)了一些問(wèn)題,在這里集中回復(fù)一下。

1、克隆博客后格式丟失

這是很多讀者反饋的第一個(gè)問(wèn)題,因?yàn)槲业牟┛?css 和 圖片是放到另外一個(gè)域名下的:www.itmind.net ,因此這塊大家克隆過(guò)去需要改成本地的。

主要涉及的文件 ityouknow.github.io\_includes 目錄下 head.html 和 footer.html 兩個(gè)文件夾,將文件中的 http://www.ityouknow.com/xxx/xxx 改為相對(duì)路徑/xxx/xxx即可。

2、留言功能丟失

這里就需要大家修改一下 _config.yml 中 gitalk 的配置信息。具體如何操作大家可以參考這篇文章 jekyll-theme-H2O 配置 gitalk
。注冊(cè)完之后,需要在 _config.yml 配置以下信息:

gitalk:
    owner: ityouknow
    repo: blog-comments
    clientID: 61bfc53d957e74e78f8f
    clientSecret: 31c61e66cdcc9ada8db2267ee779d0bdafac434c

將這里改成你注冊(cè)好的信息

3、博客

博客現(xiàn)在還缺檢索功能,下一頁(yè)和上一頁(yè)功能、系列文章優(yōu)化查看的功能,大家克隆后有完善功能的,也請(qǐng)幫忙留意,共同把這個(gè)博客完善的更好。

最后,大家可以在這篇文章下留下你的個(gè)人博客地址,方便同行們觀(guān)賞、交流、學(xué)習(xí)。

posted @ 2023-11-20 12:33   閱讀(13531)  評(píng)論(7編輯 收藏  舉報(bào)