鍍金池/ 問(wèn)答/ Linux問(wèn)答
扯不斷 回答

你說(shuō)不是就不是嘍

The -e option is used to edit the current crontab using the editor specified by the VISUAL or EDITOR environment variables. After you exit from the editor, the modified crontab will be installed automatically. If neither of the environment variables is defined, then the default editor /usr/bin/editor is used.

在我的機(jī)器上的結(jié)果是

$ ls -al /usr/bin/editor

lrwxrwxrwx 1 root root 24 11月 25  2014 /usr/bin/editor -> /etc/alternatives/editor

$ ls -al /etc/alternatives/editor

lrwxrwxrwx 1 root root 16 1月  21  2016 /etc/alternatives/editor -> /usr/bin/emacs24

所以我機(jī)器上用的是emacs, 看看你的機(jī)器上是什么就知道了.


用`$ sudo update-alternatives --list editor` 查看本機(jī)器究竟有哪些editors,
/bin/ed
/bin/nano
/usr/bin/emacs24
/usr/bin/mcedit
/usr/bin/vim.basic
/usr/bin/vim.tiny

然后用sudo update-alternatives --set editor設(shè)置成你喜歡的.

不歸路 回答

docker可以理解為一個(gè)簡(jiǎn)單的虛擬機(jī)。所有在docker容器里的操作都是獨(dú)立的。使用python鏡像一定要啟動(dòng)容器

入她眼 回答
proxy_intercept_errors on;
error_page 504 = @500;
location @500 {
    default_type application/json;
    return 500 '{"code": -1,"message":"failed to connect remote error"}';
}
過(guò)客 回答

偽靜態(tài)設(shè)置了嗎?
Nginx 偽靜態(tài)

location / {
    if (!-e $request_filename){
        rewrite  ^(.*)$  /index.php?s=$1  last;   break;
    }
}
情殺 回答

npm cache clean --force

脾氣硬 回答

代碼文件在編輯器打開沒,打開的話ctrl+z;沒打開文件的話,重新寫吧,無(wú)能為力

淡墨 回答

可以在server_name下面這行這個(gè)試試

server {
  listen 443;
  # server_name *.ht920.com ht920.com;
  server_name www.ht920.com;
  server_name_in_redirect off;
  ssl on;
  ssl_certificate   cert/1523974750873.pem;
  ssl_certificate_key  cert/1523974750873.key;
  ssl_session_timeout 5m;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  location / {
    index index.html index.htm index.php;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass https://localhost:8443;
  }
  access_log logs/ht920.com_access.log;
}
祈歡 回答

node-gyp是編譯c++文件的,nodejs的很多包都是依賴c++的,比較nodejs也是c++寫的嘛
babel-preset-es2015里面有些依賴到了node-gyp,你的mac下還缺少c++的編譯環(huán)境
我當(dāng)時(shí)用win裝的時(shí)候也報(bào)過(guò)這個(gè)錯(cuò),后來(lái)裝了vs2015就好了,mac應(yīng)該要裝xcode
vs2015和xcode都自帶c++環(huán)境

空白格 回答

useragent設(shè)置一下

空白格 回答
歡迎關(guān)注我的微信公眾號(hào):前端指南 如果回答合適請(qǐng)采納哦

1、刪除本地master分支

2、將本地x分支名稱改為master分支

3、強(qiáng)制推送本地master分支到遠(yuǎn)程

git push origin master --force
玄鳥 回答
  1. 建議裝一個(gè)圖形客戶端,Windows 下可以用烏龜 TortoiseGit,Mac 下可以用 GitHub 或者 SourceTree,這樣直接右鍵 revert 即可。
  2. 如果沒有提交,那么直接 git checkout master 文件名 檢出到正常版本即可。
浪婳 回答

個(gè)人的一點(diǎn)點(diǎn)理解:
如果你的網(wǎng)站都是自己內(nèi)部的地址,那帶token應(yīng)該是沒什么問(wèn)題的。但是如果在一些論壇之類的地方,一個(gè)網(wǎng)站上可能有各種鏈接,那就有問(wèn)題了。
一個(gè)論壇網(wǎng)站W(wǎng):http://a.com,如果訪問(wèn)論壇里面某個(gè)鏈接的地址是article.html?id=&token=, 這時(shí)候有個(gè)危險(xiǎn)鏈接article.html?id=222&token=111,該頁(yè)面是用戶編輯的,里面掛了個(gè)誘惑性的地址http://d.com/danger.html, 在danger.html里面有個(gè)獲取Referer的方法,得到了一個(gè)token,還有一個(gè)圖<img src="http://a.com/modifyPwd?token=*">

  1. 用戶U登錄論壇W,授權(quán)成功
  2. 用戶點(diǎn)擊鏈接article.html?id=222&token=111,
  3. 用戶點(diǎn)擊了誘惑性的網(wǎng)址http://d.com/danger.html
  4. danger.html內(nèi)通過(guò)img發(fā)出了http://a.com/modifyPwd?token=*
  5. 跨域攻擊成功
萌二代 回答

我的理解是php是apache的一部分,也就是php是作為模塊被apache包含進(jìn)去用來(lái)處理動(dòng)態(tài)語(yǔ)言的,當(dāng)用戶請(qǐng)求php文件的時(shí)候apache調(diào)用子進(jìn)程(也就是我們??吹降膆ttpd)去處理php的請(qǐng)求,多個(gè)請(qǐng)求會(huì)開多個(gè)子進(jìn)程同時(shí)去處理多個(gè)php請(qǐng)求,這多個(gè)php請(qǐng)求是相互獨(dú)立的,所以我理解的是,這同時(shí)能處理多少個(gè)請(qǐng)求,就能同時(shí)承受多大的并發(fā),處理不過(guò)來(lái)就一直阻塞,所以在這里所說(shuō)的apache是阻塞式的。這個(gè)連接數(shù)是可配置的,有上限,具體多少忘記了。你配置的越高他占用的資源就越多。
個(gè)人理解是這樣,還請(qǐng)其他大牛,指點(diǎn),交流

離魂曲 回答

dist 是最終輸出文件,都是靜態(tài)的,如果后臺(tái)需要在某個(gè)路由顯示頁(yè)面,把靜態(tài)文件導(dǎo)入到視圖模版中,匹配路由之后后臺(tái)直接返回視圖就好啦

伐木累 回答

在做你所述以上事情之前需要明確一點(diǎn),那就是CPU架構(gòu)問(wèn)題。
PC系統(tǒng)和嵌入式系統(tǒng)的CPU架構(gòu)不同,你可能需要了解:i386、x86_64、arm32、arm64、armv7、armv8(aarch32、aarch64)等cpu架構(gòu)的區(qū)別

很明顯,樹莓派屬于嵌入式系統(tǒng),使用的是arm架構(gòu),樹莓派3以上(包含3b和3b+)可支持64位cpu,也就是采用的是armv8架構(gòu),armv8支持兩種屬性,即:aarch32、aarch64,通俗的說(shuō)就是最新發(fā)行的樹莓派已經(jīng)可以支持64位,而以往的版本僅支持32位

如果你的Docker是裝在PC上的或者是PC上的虛擬機(jī)里的(比如vm虛擬機(jī)之類的)那么Docker所使用的硬件是與宿主機(jī)共享硬件核心,所以,宿主機(jī)的硬件核心決定了docker的核心,換句話說(shuō)就是docker并非虛擬機(jī),并不能虛擬出一套與宿主機(jī)不同cpu架構(gòu)的硬件,即便是vm虛擬機(jī),也是不能運(yùn)行arm版本的操作系統(tǒng)的

在樹莓派中可以安裝centos系統(tǒng),并且centos官方有img鏡像,但僅是32位的。
在樹莓派中運(yùn)行的centos系統(tǒng)一樣可以安裝Docker,值得注意的是Docker官方的文檔中指出:不建議嵌套Docker,也就是在Docker中創(chuàng)建一個(gè)centos鏡像容器,然后在此容器中又安裝一個(gè)Docker,雖然支持但不建議這樣做。

想要實(shí)現(xiàn)如你所述的測(cè)試環(huán)境,可以參考以下做法:
1、使用和樹莓派同樣cpu架構(gòu)的真機(jī),也就是arm架構(gòu)的真實(shí)測(cè)試機(jī)器
2、使用qemu虛擬機(jī),qemu是一個(gè)軟件模擬環(huán)境,可以模擬運(yùn)行arm架構(gòu)的操作系統(tǒng),不過(guò)據(jù)說(shuō)性能堪憂
3、使用交叉編譯環(huán)境,也就是讓pc上的Linux具有編譯不同cpu架構(gòu)程序的能力,程序經(jīng)過(guò)交叉編譯后即可移植到arm架構(gòu)的機(jī)器上去

以上所述如有偏頗或不同方案,希望不吝賜教。

孤客 回答

1、利用progress-stream獲取上傳進(jìn)度

如果只是想在服務(wù)端獲取上傳進(jìn)度,可以試下如下代碼。注意,這個(gè)模塊跟express、multer并不是強(qiáng)綁定關(guān)系,可以獨(dú)立使用。

var fs = require('fs');
var express = require('express');
var multer  = require('multer');
var progressStream = require('progress-stream');

var app = express();
var upload = multer({ dest: 'upload/' });

app.post('/upload', function (req, res, next) {
    // 創(chuàng)建progress stream的實(shí)例
    var progress = progressStream({length: '0'}); // 注意這里 length 設(shè)置為 '0'
    req.pipe(progress);
    progress.headers = req.headers;
    
    // 獲取上傳文件的真實(shí)長(zhǎng)度(針對(duì) multipart)
    progress.on('length', function nowIKnowMyLength (actualLength) {
        console.log('actualLength: %s', actualLength);
        progress.setLength(actualLength);
    });

    // 獲取上傳進(jìn)度
    progress.on('progress', function (obj) {        
        console.log('progress: %s', obj.percentage);
    });

    // 實(shí)際上傳文件
    upload.single('logo')(progress, res, next);
});

app.post('/upload', function (req, res, next) {
    res.send({ret_code: '0'});
});

app.get('/form', function(req, res, next){
    var form = fs.readFileSync('./form.html', {encoding: 'utf8'});
    res.send(form);
});

app.listen(3000);

2、獲取上傳文件的真實(shí)大小

multipart類型,需要監(jiān)聽length來(lái)獲取文件真實(shí)大小。(官方文檔里是通過(guò)conviction事件,其實(shí)是有問(wèn)題的)

    // 獲取上傳文件的真實(shí)長(zhǎng)度(針對(duì) multipart)
    progress.on('length', function nowIKnowMyLength (actualLength) {
        console.log('actualLength: %s', actualLength);
        progress.setLength(actualLength);
    });

3、關(guān)于progress-stream獲取真實(shí)文件大小的bug?

針對(duì)multipart文件上傳,progress-stream 實(shí)例子初始化時(shí),參數(shù)length需要傳遞非數(shù)值類型,不然你獲取到的進(jìn)度要一直是0,最后就直接跳到100。

至于為什么會(huì)這樣,應(yīng)該是 progress-steram 模塊的bug,看下模塊的源碼。當(dāng)length是number類型時(shí),代碼直接跳過(guò),因此你length一直被認(rèn)為是0。

    tr.on('pipe', function(stream) {
        if (typeof length === 'number') return;
        // Support http module
        if (stream.readable && !stream.writable && stream.headers) {
            return onlength(parseInt(stream.headers['content-length'] || 0));
        }

        // Support streams with a length property
        if (typeof stream.length === 'number') {
            return onlength(stream.length);
        }

        // Support request module
        stream.on('response', function(res) {
            if (!res || !res.headers) return;
            if (res.headers['content-encoding'] === 'gzip') return;
            if (res.headers['content-length']) {
                return onlength(parseInt(res.headers['content-length']));
            }
        });
    });

參考鏈接

https://github.com/expressjs/...
https://github.com/freeall/pr...

鐧簞噯 回答

報(bào)錯(cuò)在最后一行: libgfortran.so.3: cannot open shared object file: No such file or directory

安裝這個(gè)lib理論上應(yīng)該就能解決 sudo apt install -y libgfortran3

半心人 回答

不知道大家有沒有遇到這種情況,發(fā)現(xiàn)是我更換了網(wǎng)絡(luò)的原因,在公司和在家里之后可能IP變動(dòng)了,需要重新設(shè)置下虛擬機(jī)的網(wǎng)卡。
我解決的方法是把的192.168.10.1改成192.168.10.2或者重新保存下然后就可以。

clipboard.png

心沉 回答

request header的cache-control: max-age=0只有在CTRL + F5強(qiáng)刷時(shí)才會(huì)加入
正常訪問(wèn)并不會(huì)加這種頭

你要控制瀏覽器的行為,應(yīng)該在服務(wù)端的cache-control里配置
不能脫離服務(wù)端的cache-control討論瀏覽器的緩存機(jī)制

request header是給服務(wù)器看的,不是給瀏覽器看的,你的理解本身就不對(duì)

服務(wù)端通過(guò)cache-control、etag、last-modified告訴瀏覽器和緩存服務(wù)器應(yīng)該怎么存儲(chǔ)和處理這個(gè)URL
如果符合一定規(guī)則(具體看下方文章),瀏覽器并不會(huì)向服務(wù)器發(fā)出請(qǐng)求,而是直接使用本地緩存

如果符合一定規(guī)則需要向服務(wù)器發(fā)出請(qǐng)求,瀏覽器通過(guò)If-Modified-Since If-None-Match cache-control告訴服務(wù)器應(yīng)該響應(yīng)304還是200

這篇文章已經(jīng)講得很清楚了:
https://developers.google.com...