果有小米工程師看到此貼,愿意幫助我協(xié)助排查問題,非常歡迎,咱們一起把問題搞清楚,解決掉
歡迎帶出處進行轉(zhuǎn)載!懇請大家把這個頂上去,望能得到小米官方的回復(fù)!我希望小米能夠重視用戶的聲音!及時懸崖勒馬,成為一個受人尊敬的公司!我可是你們的忠實用戶啊!手機都買過幾部了!千萬別讓我失望!
此文展示了我的推理過程:
- 發(fā)現(xiàn)通過小米路由器打開某些網(wǎng)頁,網(wǎng)頁HTML后面會被加入一段javascript代碼,會導(dǎo)致:1)網(wǎng)頁右下角顯示廣告 和 2)無緣無故跳轉(zhuǎn)廣告頁面!
- 該JS代碼指向 http://tjqonline.cn,這個網(wǎng)站通過查詢,屬于小米公司
- 通過修改hosts文件,可以打開或禁止電腦對http://tjqonline.cn的訪問。實驗發(fā)現(xiàn),當禁止電腦對http://tjqonline.cn的訪問時,打開同一個網(wǎng)頁,在html同樣被注入的情況下,右下角廣告和頁面廣告跳轉(zhuǎn)現(xiàn)象消失。可以得出,廣告和這段js代碼有關(guān)系!
- 通過做對比試驗,發(fā)現(xiàn)當直接通過寬帶Modem上網(wǎng)的時候(繞過小米路由器),該段js注入代碼消失
得出結(jié)論:很可能是小米路由器劫持了我的正常上網(wǎng),惡意給我推送廣告,嚴重損害了我的正常上網(wǎng)體驗!!!!偷偷摸摸顯示一個小廣告擋住我瀏覽也就算了,我點擊一個鏈接,你給我打開了一個無關(guān)廣告頁面??!!!忍無可忍!!!拜托,這個路由器是我花錢買的!不是免費送的!
詳細的證據(jù)請往后看
===============
=======法律援助=============
我強忍住怒火,非常慎重的組織我的語言,并且認真的做各種各樣的實驗,為的就是更公正的把客觀事實展現(xiàn)在大家的面前。
我非常清醒的知道,這樣可能會觸及到一些利益,而且一旦我的整篇文章中,有一絲的描述偏差,我可能就會惹上官司。不要覺得我大題小做。
所以這件事我作為一個普通用戶,必須非常慎重,在表達自己的憤怒以及向公眾揭露這種問題的同時,需要避免各種官司。所以希望大家可以提供一些法律上的幫助和建議,比如如何公證,如何留證據(jù)之類的?
======22:10 分更新=====
已經(jīng)在評論區(qū)看到一些不友善言論了啊!我敢發(fā)這篇文章,說明1)我真的很憤怒被劫持 2)我有充分的證據(jù)和推理過程
我曝光這個,希望小米可以跟我心平氣和地交流下。如果你們確實做了錯事,跟我道個歉,改正就好了
===================
【癥狀描述】
如果你也有以下經(jīng)歷,那你可能跟我一樣,可能是因為小米路由器網(wǎng)頁劫持造成的:
- 你使用小米路由器
- 點擊網(wǎng)頁鏈接的時候,會莫名其妙彈出一個另外的網(wǎng)站
- 有的網(wǎng)頁右下角會出現(xiàn)百度網(wǎng)盟的彈窗廣告:
我這篇文章是為了證明,這很可能是小米路由器做的!!!!它在偷偷修改我的頁面內(nèi)容!!給我推送垃圾廣告!!!流氓!!!這個小米路由器是我花錢買的!!!不是免費拿的!!!竟然敢給我推廣告!!!而且強制劫持我點擊打開操作跳轉(zhuǎn)到另一個廣告頁面!!!
【什么是網(wǎng)頁劫持】
首先大概科普一下,什么是網(wǎng)頁劫持:當你在家通過小米路由器上網(wǎng)的時候,所有的網(wǎng)頁其實都會通過小米路由器轉(zhuǎn)給你,所以你訪問的網(wǎng)頁內(nèi)容小米路由器都可以看得到,并且,他還會偷偷的篡改你的內(nèi)容!!!!!
【追蹤問題】
我最近上網(wǎng)總是發(fā)生這種詭異的事情,在排除了是惡意瀏覽器插件做的事情之后,我發(fā)現(xiàn)一些線索:
- 這個情況只在家里上網(wǎng)的時候出現(xiàn),在非小米路由環(huán)境是不會出現(xiàn)的
- 當我開啟VPN之后,這個問題消失(因為VPN連接是加密的,瀏覽器到服務(wù)器端到端加密,路由器也無法看到和篡改其中內(nèi)容)
于是,對于同一個網(wǎng)頁,我保存下來正常時候的網(wǎng)頁(通過連接VPN獲得),還保存了有廣告的頁面源代碼,做了一下diff:
左邊是被劫持的有廣告的html,可以看到,多出了一行java script,域名是 http://tjqonline.cn,真是明目張膽,隨隨便便whois了一下,赫然寫著:小米通訊技術(shù)有限公司:
網(wǎng)站備案信息:http://icp.chinaz.com/info?q=tjqonline.cn
【對比試驗】
我又做了另一個實驗,證明,只有在連接小米路由器的時候,才會有http://tjqonline.cn這個注入:
- 同樣的電腦(OSx),同樣的瀏覽器(Chrome Canary版本),同樣的兩個測試網(wǎng)頁
- 在連接小米路由器的情況下,打開兩個被劫持的網(wǎng)站,查看網(wǎng)頁源代碼,均發(fā)現(xiàn)下面提到的來自于http://tjqonline.cn的script代碼
- 斷掉小米路由器,直接把寬帶Modem的RJ45以太網(wǎng)線插入我的電腦以太網(wǎng)接口
- 退出瀏覽器,重新打開。重新打開同樣兩個網(wǎng)站,查看網(wǎng)頁源代碼,http://tjqonline.cn的注入代碼消失!
- 重復(fù)以上步驟兩遍,確保http://tjqonline.cn的注入代碼只是在連接小米路由器的時候出現(xiàn);直連路由器Modem不會出現(xiàn)注入代碼
【臨時解決問題】
我是機器學(xué)習(xí)工程師,不是前端網(wǎng)頁工程師,不知道怎么追蹤修改js代碼,但是我TM可以把這個域名從我的電腦里給禁掉,直接把這個域名在hosts文件里面跳轉(zhuǎn)到127.0.0.1了!!(即,在我的電腦上訪問http://tjqonline.cn拉廣告數(shù)據(jù)的時候,都會被系統(tǒng)強制砍掉!!)
(如何在mac上修改hosts:http://jingyan.baidu.com/article/8cdccae965875c315413cdfe.html)
(如何在windows上修改hosts:http://jingyan.baidu.com/article/a501d80cee03d8ec630f5e14.html)
重啟瀏覽器(為了清除瀏覽器里面的DNS緩存),問題解決!進一步證明,剛剛的網(wǎng)頁跳轉(zhuǎn)劫持和廣告,確實就是小米路由器干的!
【寫在最后】
- 這件事我搜了下,發(fā)現(xiàn)已經(jīng)有很多用戶在網(wǎng)上提到過這個了:
小米路由器劫持用戶網(wǎng)頁植入廣告
請小米停止http劫持!!!!
小米路由器劫持用戶瀏覽器事件回顧 - 烏云知識庫 - 知乎專欄
小米路由器~我TMD買你這個是瞎了眼!居然給... 來自雷子獻
通過小米路由器上網(wǎng)就有廣告(求原因)
并且,當年插入的script是http://api.xiaomi.com這個域名,過了一段時間,換成http://tjqonline.cn改頭換面重新來了!以及,之前的帖子里有人提到可以通過設(shè)置什么插件的來禁止,但我沒有找到相關(guān)選項。(而且就算是第三方插件,小米也需要負責(zé)審核!)
- 以前覺得小米是一家大公司,不會干出這么齷齪的事情,何況這個路由器是我花了錢買的!不是免費的!應(yīng)該是一個嚴肅的商業(yè)產(chǎn)品
- 上次在雷鋒網(wǎng)主辦的人工智能大會上,聽小米的一個副總裁KK的演講,說小米如何根據(jù)和用戶行為數(shù)據(jù)和機器學(xué)習(xí)算法來建立用戶畫像,能夠知道你是男的女的,你的消費水平,你的家庭地址等等,當時覺得很牛逼啊,可以通過用戶的匿名使用習(xí)慣來做用戶畫像(對,我當時以為他用的是非隱私數(shù)據(jù))
但是今天這件事讓我完全喪失了對小米的信任。理論上,小米可以通過路由器知道你平時上什么網(wǎng),知道你平時買了什么東西,知道你用的是哪個銀行的賬號,知道你搜過哪些地址,知道你親朋好友的電話、住址。按照今天發(fā)現(xiàn)的小米的德行,想想看小米如果真的要利用你的隱私數(shù)據(jù)做點什么事,真是不寒而栗!
所有你通過小米路由器的非加密信息,都被小米路由器看在眼里,偷偷摸摸篡改!
(修改host的方式只是權(quán)宜之計,希望大家獻言獻策,在我新路由器送到的這幾天里,看看有什么方法可以徹底解決這個問題!)
(轉(zhuǎn)自知乎)
者:極客小俊
一個專注于web技術(shù)的80后
你不用拼過聰明人,你只需要拼過那些懶人 你就一定會超越大部分人!
第一步: 卸載軟件
注意:此步驟雖然刪掉了應(yīng)用軟件,但是此時重新安裝會發(fā)現(xiàn)之前下載的插件和個人配置信息都還會重新加載出來,所以繼續(xù)進行以下步驟:
第二步: 找到下圖中文件夾的目錄,然后將之刪除,即可徹底清除已安裝的插件個個人配置信息
第三步:
路徑是: C:\Users\Administrator\AppData\Roaming\Code
注意:AppData默認是隱藏文件夾
解決問題場景: 配置失誤,導(dǎo)致vscode無法使用,如窗口縮放太大,快捷鍵失效。
打開如目錄 例如: C:\Users\Administrator\AppData\Roaming\Code\User
用記事本打開目錄下的settings.json,修改里面的對應(yīng)配置可以解決對應(yīng)的問題,重置的話全部刪除就好了!
.mtk3 {
color: #f92aad;
text-shadow: 0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3;
}
.mtk4 {
color: #6d77b3;
}
.mtk5 {
color: #f97e72;
}
.mtk6 {
color: #fdfdfd;
text-shadow: 0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975;
}
?
.mtk7 {
color: #fff5f6;
text-shadow: 0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75;
}
?
.mtk8 {
color: #72f1b8;
text-shadow: 0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475;
}
?
.mtk9 {
color: #f4eee4;
text-shadow: 0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575;
}
?
.monaco-editor .margin, .monaco-editor-background, .monaco-editor .inputarea.ime-input {
background: transparent;
}
?
/* Add the subtle gradient to the editor background */
.monaco-editor {
background-color: transparent !important;
background-image: linear-gradient(to bottom, #2a2139 75%, #34294f);
background-size: auto 100vh;
background-position: top;
background-repeat: no-repeat;
}
?
/* Sweet sunset dots */
.monaco-workbench .activitybar > .content .monaco-action-bar .badge .badge-content {
background: linear-gradient(to bottom, #fff951 25%, #fc28a8);
}
?
/* Active tab neon */
.monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab.sizing-fit.active {
box-shadow: inset 0 -5px 25px #fc28a825;
position: relative;
}
?
/* Active tab stripe */
.monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab.sizing-fit.active::after {
content: '';
position: absolute;
bottom: -1px;
left: 0;
right: 0;
height: 4px;
background: linear-gradient(to right, #fc28a8, #03edf9) !important;
opacity: 1;
z-index: 6;
}
?
.monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab.sizing-fit::after {
content: '';
position: absolute;
bottom: -1px;
left: 0;
right: 0;
height: 0px;
transition: opacity 1s;
opacity: 0;
z-index: 6;
}
?
/* Active sidebar item */
.monaco-workbench .activitybar > .content .monaco-action-bar .action-item.checked {
box-shadow: inset 0 -5px 25px #fc28a825;
position: relative;
}
?
.monaco-workbench .activitybar > .content .monaco-action-bar .action-item.checked::after {
content: '';
position: absolute;
bottom: 0px;
top: 0px;
left: 0px;
width: 4px;
background: linear-gradient(to bottom, #fc28a8, #03edf9) !important;
opacity: 1;
}
?
.monaco-workbench .activitybar > .content .monaco-action-bar .action-item::after {
content: '';
position: absolute;
bottom: 0px;
top: 0px;
left: 0px;
width: 0px;
transition: opacity 1s;
opacity: 0;
}
?
/* update lightbuld to be neon */
.lightbulb-glyph {
background: url("data:image/svg+xml,%3Csvg id='Layer_1' data-name='Layer 1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect fill='%23ffffff' x='5.68' y='6.93' width='2.1' height='6.1' rx='0.96' transform='translate(-1.94 1.63) rotate(-12.09)'/%3E%3Cpath fill='%2303edf9' d='M7.08,13.5a1.46,1.46,0,0,1-1.43-1.16L4.77,8.26A1.47,1.47,0,0,1,5.9,6.53l.17,0A1.46,1.46,0,0,1,7.81,7.61l.87,4.09a1.46,1.46,0,0,1-1.12,1.73l-.18,0Zm-.7-6h-.1l-.17,0a.45.45,0,0,0-.29.21.45.45,0,0,0-.07.34l.88,4.09a.46.46,0,0,0,.54.35l.18,0a.46.46,0,0,0,.29-.2.48.48,0,0,0,.07-.35L6.83,7.82A.46.46,0,0,0,6.38,7.46Z'/%3E%3Crect fill='%23ffffff' x='8.22' y='6.93' width='2.1' height='6.1' rx='0.96' transform='translate(16.25 21.68) rotate(-167.91)'/%3E%3Cpath fill='%2303edf9' d='M8.93,13.5a1.63,1.63,0,0,1-.31,0l-.18,0A1.46,1.46,0,0,1,7.32,11.7l.87-4.09A1.47,1.47,0,0,1,9.93,6.49l.18,0a1.45,1.45,0,0,1,.92.63,1.47,1.47,0,0,1,.2,1.1l-.88,4.08a1.45,1.45,0,0,1-.63.93A1.48,1.48,0,0,1,8.93,13.5Zm.69-6a.45.45,0,0,0-.25.07.5.5,0,0,0-.2.29L8.3,11.9a.43.43,0,0,0,.06.35.46.46,0,0,0,.29.2l.18,0a.47.47,0,0,0,.55-.35l.87-4.09a.45.45,0,0,0-.06-.34A.47.47,0,0,0,9.9,7.5l-.18,0Z'/%3E%3Cpath fill='%23ffffff' d='M11.77,9l-3.53.67a1,1,0,0,1-1.15-.88h0A1.09,1.09,0,0,1,7.9,7.48l3.53-.67a1,1,0,0,1,1.15.89h0A1.08,1.08,0,0,1,11.77,9Z'/%3E%3Cpath fill='%2303edf9' d='M8.07,10.18A1.54,1.54,0,0,1,6.6,8.83a1.74,1.74,0,0,1,.25-1.22,1.46,1.46,0,0,1,1-.66l3.52-.67A1.51,1.51,0,0,1,13.07,7.6a1.61,1.61,0,0,1-1.22,1.88l-3.52.67A1.15,1.15,0,0,1,8.07,10.18ZM11.6,7.34h-.09L8,8a.53.53,0,0,0-.4.62.5.5,0,0,0,.57.44l3.52-.67a.54.54,0,0,0,.41-.62A.53.53,0,0,0,11.6,7.34Z'/%3E%3Cpath fill='%23ffffff' d='M11.74,6.74,4.67,8.08A1,1,0,0,1,3.52,7.2h0A1.08,1.08,0,0,1,4.33,6l7.06-1.34a1,1,0,0,1,1.16.88h0A1.08,1.08,0,0,1,11.74,6.74Z'/%3E%3Cpath fill='%2303edf9' d='M4.5,8.64a1.44,1.44,0,0,1-.86-.29A1.64,1.64,0,0,1,3,7.29a1.72,1.72,0,0,1,.25-1.21,1.48,1.48,0,0,1,1-.67l7.07-1.34a1.39,1.39,0,0,1,1.11.27A1.65,1.65,0,0,1,13,5.4a1.72,1.72,0,0,1-.25,1.21,1.48,1.48,0,0,1-1,.67L4.76,8.62Zm7.07-3.5h-.09L4.42,6.49a.45.45,0,0,0-.32.22.56.56,0,0,0-.09.4.61.61,0,0,0,.21.35.47.47,0,0,0,.36.09L11.65,6.2A.47.47,0,0,0,12,6a.51.51,0,0,0,.08-.4.55.55,0,0,0-.2-.35A.47.47,0,0,0,11.57,5.14Z'/%3E%3Cpath fill='%23ffffff' d='M11.7,4.52,4.64,5.86A1,1,0,0,1,3.49,5h0A1.09,1.09,0,0,1,4.3,3.72l7.06-1.34a1,1,0,0,1,1.15.88h0A1.09,1.09,0,0,1,11.7,4.52Z'/%3E%3Cpath fill='%2303edf9' d='M4.46,6.42a1.36,1.36,0,0,1-.85-.3,1.58,1.58,0,0,1-.61-1A1.61,1.61,0,0,1,4.21,3.19l7.07-1.34a1.35,1.35,0,0,1,1.11.27,1.58,1.58,0,0,1,.61,1,1.74,1.74,0,0,1-.25,1.22,1.44,1.44,0,0,1-1,.66L4.72,6.39A1.09,1.09,0,0,1,4.46,6.42Zm7.07-3.51h-.08L4.38,4.26a.53.53,0,0,0-.4.62.5.5,0,0,0,.57.44L11.62,4a.47.47,0,0,0,.32-.22.62.62,0,0,0,.08-.4.56.56,0,0,0-.2-.35A.53.53,0,0,0,11.53,2.91Z'/%3E%3Cpath fill='%23ffffff' d='M8.34,2.89,4.57,3.6a1,1,0,0,1-1.15-.88h0a1.08,1.08,0,0,1,.81-1.25L8,.75a1,1,0,0,1,1.15.89h0A1.08,1.08,0,0,1,8.34,2.89Z'/%3E%3Cpath fill='%2303edf9' d='M4.4,4.16a1.44,1.44,0,0,1-.86-.29,1.69,1.69,0,0,1-.61-1.05A1.74,1.74,0,0,1,3.18,1.6a1.51,1.51,0,0,1,1-.67L7.91.22A1.38,1.38,0,0,1,9,.49a1.58,1.58,0,0,1,.61,1.05,1.74,1.74,0,0,1-.25,1.22,1.47,1.47,0,0,1-1,.66l-3.77.72A1.18,1.18,0,0,1,4.4,4.16ZM8.17,1.28H8.09L4.32,2A.45.45,0,0,0,4,2.23a.51.51,0,0,0-.08.4.55.55,0,0,0,.2.35.49.49,0,0,0,.37.09l3.77-.72a.47.47,0,0,0,.32-.22.62.62,0,0,0,.08-.4.56.56,0,0,0-.2-.35A.53.53,0,0,0,8.17,1.28Z'/%3E%3Cpolygon fill='%231e1e1e' points='5.5 11.1 5.5 11.1 5.5 14.4 7.1 16 9.1 16 10.6 14.4 10.6 11.1 5.5 11.1'/%3E%3Cpath fill='%23c5c5c5' d='M6.5,12h3v1h-3Zm1,3H8.6l.9-1h-3Z'/%3E%3C/svg%3E") 50% no-repeat !important;
filter: drop-shadow(0 0 5px #03edf9);
}
在setting.json中配置synthwave84.css的文件路徑
注意: 如果還有其他的配置,需要在最后一個值后需要補一個逗號! 這是JSON格式的配置寫法
注意: 文件路徑不一定非要在C盤,其他盤也是可以的
注意: 本地路徑前面必須加 file:/// , 絕對不能刪!!!!
注意: 下面的大括號并不一定復(fù)制過去,取決于有沒有其他配置,如果setting.json文件是空的就全部復(fù)制過去!
例如:
windows格式:
{
"vscode_custom_css.imports": [ "file:///C:/Users/Administrator/synthwave84.css" ]
}
?
mac格式:
?
{
"vscode_custom_css.imports": [ "file:///Users/用戶名/synthwave84.css" ]
}
?
注意: 路徑是用的正斜杠
打開synthwave-color-theme文件
位置: C:\Users\Administrator\.vscode\extensions\robbowen.synthwave-vscode-0.1.5\themes
在synthwave-color-theme文件中, 搜索: italic 把fontStyle的值全部清空, 然后重啟vscode 斜體注釋就取消了!
vscode怎么用瀏覽器打開htm頁面l預(yù)覽?這里大家可以通過安裝open in browser插件解決!
在安裝完open in browser插件后,在html代碼中鼠標右鍵可以看到多了兩個打開選擇,點擊選項即可打開瀏覽器進行預(yù)覽。
Open in Default Browsers:使用默認瀏覽器打開 快捷鍵:alt+b
Open in Other Browsers: 使用其他瀏覽器打開 快捷鍵:alt+shift+b
那么怎么修改默認瀏覽器呢?
打開setting.json配置文件, 加入open-in-browser.default配置,例如: 把默認瀏覽器配置為火狐瀏覽器,如下圖:
vscode其實就是一個網(wǎng)頁程序,所以可以找到vscode中的一個文件進行修改它的背景圖片,這個文件就是:workbench.desktop.main.css
這個文件的路徑是在vs code安裝目錄,如下
例如: D:\Microsoft VS Code\resources\app\out\vs\workbench\workbench.desktop.main.css
然后打開這個workbench.desktop.main.css 文件進行 背景的添加設(shè)置, 注意這個文件打開后需要格式化代碼一下!
背景圖可以設(shè)置全局顯示背景圖 也可以 局部顯示背景圖
局部顯示背景圖,如下css代碼:
body {
background-image: url('file:///圖片地址');
background-size: 20%;
background-position: 100% 100%;
opacity: 0.75;
background-repeat: no-repeat;
}
如下圖:
注意: 局部顯示的圖片格式最好選擇png格式的
設(shè)置完成后重啟vscode、效果如下圖:
全局顯示背景圖,如下css代碼:
body {
background-image: url('file:///圖片地址');
background-size: 100%;
opacity: 0.75;
background-repeat: no-repeat;
}
設(shè)置完成后重啟vscode、效果如下:
注意: 這種修改workbench.desktop.main.css 文件的方法來設(shè)置背景 如果VScode自動軟件更新后 背景會消失,需要重新設(shè)置!
在vscode插件市場搜索: background插件、然后進行安裝 如下圖
安裝background背景插件后重啟 vscode 會看見走下角的背景圖片效果, 如下:
這里background背景插件還提供了一些用戶自定義的配置參數(shù), 這些配置參數(shù)設(shè)定在setting.json文件中
如下表
nameTypeDescriptionbackground.enabledBoolean插件是否啟用 If background enabled 默認truebackground.useDefaultBoolean是否使用默認圖片 If use default images 默認truebackground.customImagesArray<String地址>自定義圖片 Your Your custom imagesbackground.styleObject自定義樣式 Custom stylebackground.stylesArray<Object>每個圖片的獨立樣式 Style of each imagebackground.useFrontBoolean前景圖/背景圖。 在代碼上面還是下面 一般設(shè)置truebackground.loopBoolean循環(huán)模式,會重復(fù)顯示圖片 loop mode, may repeat your images
在setting.json中配置案例:
"background.customImages": [
"file:///D:/6.png" //圖片地址
],
"background.style": {
"content":"''",
"pointer-events":"none",
"position":"absolute",//圖片位置
"width":"100%",
"height":"100%",
"z-index":"99999",
"background.repeat":"no-repeat",
"background-size":"25%,25%",//圖片大小
"opacity":0.2 //透明度
},
"background.useFront": true,
"background.useDefault": false,//是否使用默認圖片
如下圖:
介紹: 這個插件的原理其實也就是修改workbench.desktop.main.css這個CSS文件,但是比起第一種方法 來說 使用插件去修改比手工去修改更方便一些而已
為了測試方便,首先安裝這個插件之前 如果有設(shè)定前面兩種方法的背景配置 就先把setting.json中的相關(guān)配置注釋一下!
注意: 方法2 和 方法3 的背景設(shè)置時可以共存的!!
然后再安裝background-cover 插件
安裝后重啟! 如果你看到依舊沒有效果 那說明還沒有進行設(shè)置, 可以使用 ctrl + shift + P 選擇 "backgroundCover - start",然后就可以對背景圖片進行選擇和設(shè)置了!
其實在setting.json配置文件當中也會產(chǎn)生一行配置: 例如 : "backgroundCover.imagePath": "d:\background\4.jpg",
效果如下:
Notice
1.點擊底部切換背景圖按鈕 / Click the bottom toggle background button
2.ctrl + shift + P > "backgroundCover - start"
3.ctrl + shift + F7 > "Random update background and restart"
注意: VSCode更新版本時會導(dǎo)致背景圖消失,需要手動重新設(shè)置, 所以這種方法跟第一種其實也差不多! 只不過選擇圖片方便了一點!
這個插件的作用就是快速的在vscode內(nèi)部使用瀏覽器預(yù)覽html頁面效果, 在插件市場搜索Browser Preview
安裝完成后,在Bar上多出一個圖標,點擊圖標就可以在VSCode里打開瀏覽器了 ,
默認情況下打開的是vscode的官方網(wǎng)站, 如果要配置到我們自己的站點目錄方法如下:
打開設(shè)置,然后找到Extensions,再找到Browser Preview,找到Start Url寫上你默認打開的地址就可以了。
效果如下:
安裝好后,需要重啟一下VSCode,就可以出現(xiàn)透明效果了。
插件的設(shè)置: 打開設(shè)置界面,在左邊找到Extensions選項卡,然后找到Windows opacity進行設(shè)置
這里邊只有一個設(shè)置項,就是Opacity,也就是我們要設(shè)置的透明度,值從0-255,數(shù)值越小透明度越高,數(shù)值越大透明度越低。
如果想關(guān)閉透明 設(shè)置透明度255即可!!
為我們自動查找匹配標簽開始結(jié)尾,括號匹配。從此再也不用花時間再成對標簽或者括號開始與結(jié)尾的查找上了, 提高了工作效率
雖然vscode也自帶了 標簽,括號的代碼區(qū)塊提示,但是個人覺得不夠明顯!! 所以推薦這款插件
進入插件,在搜索欄上搜索, Bracket Pair Colorizer 然后找到如果插件,直接點擊Install按鈕進行安裝
安裝后 vscode重啟 效果如下:
有興趣的同學(xué) 可以找到File-->Preferences-->settings-->Extensions-->BracketPair 進行更多設(shè)置 這里就不多講了!
這個插件就是可以快速生成漂亮的代碼截圖, 比如要在博客里放置一個漂亮的代碼截圖,或者是快速分享到其它網(wǎng)絡(luò)平臺 都可以使用這個截圖插件 進行代碼截圖 非常漂亮!!
打開VSCode中的插件,搜索 Polacode,這個你可以找到多個版本,這里我推薦的是 2020版本 點擊install進行安裝
使用方法
安裝完成后,先打開你要分享的代碼,然后按Ctrl + Shift + p 打開命令面板,然后再輸入框中輸入Polacode,就可以打開使用了
把自己想截圖的代碼拖拽選中后 就可以點擊右邊的截圖按鈕,生成圖片了!
也是一個vscode代碼截圖捕捉插件, 截圖更加清晰, 清晰度類似于蘋果電腦!
直接在插件市場搜索CodeSnap
安裝后重啟vscode
使用方法:
安裝完成后,先打開你要分享的代碼,然后按Ctrl + Shift + p 打開命令面板,然后再輸入框中輸入CodeSnap,就可以截圖代碼了!
CodeSnap想更改相關(guān)配置如下可以在settings.json中添加相關(guān)配置
CodeSnap是高度可配置的, 以下是可以更改的設(shè)置列表,以調(diào)整屏幕截圖的外觀
配置名稱值說明codesnap.backgroundColor十六進制顏色值代碼段容器邊緣的背景色。可以是任何有效的CSS顏色。codesnap.boxShadow默認值: rgba(0, 0, 0, 0.55) 0px 20px 68px代碼段的CSS框陰影。可以是任何有效的CSS框陰影codesnap.containerPadding整數(shù) , 默認值: 3em, 也可以使用px代碼段容器邊緣的填充。可以是任何有效的CSS填充codesnap.roundedCorners布爾值 默認為:true圓角配置 用于配置邊緣內(nèi)部代碼塊邊緣是否是圓角或方形角codesnap.showWindowControls布爾值 默認為:true顯示或隱藏OS X樣式窗口按鈕的布爾值。codesnap.showWindowTitle布爾值 默認為:false顯示或隱藏窗口標題欄上的文件夾或文件名。codesnap.showLineNumbers布爾值 默認為:true顯示或隱藏行號的布爾值codesnap.realLineNumbers布爾值 默認為:false從文件的實際行號開始的布爾值,而不是1。codesnap.transparentBackground布爾值 默認為:false用于在拍攝屏幕快照時使用透明背景。codesnap.target值: window [不顯示邊緣容器] container [顯示邊緣容器]意思就是是否要顯示外部的邊緣容器
我的配置如下:
{
//codesnap代碼截圖配置
"codesnap.backgroundColor":"#f2f2f2", //截圖代碼容器邊緣顏色
"codesnap.boxShadow": "5px 5px 60px 0px #888888", //陰影設(shè)置
"codesnap.containerPadding":"3em",
"codesnap.roundedCorners":true,
"codesnap.showWindowControls":true,
"codesnap.showWindowTitle":false,
"codesnap.showLineNumbers":true,
"codesnap.realLineNumbers":false,
"codesnap.transparentBackground":false,
"codesnap.target":"container"
}
在代碼中 注釋的顏色 默認是灰色的 ,可能你會覺得不好看 那么 就可以使用這款插件來讓注釋更加漂亮
Better Comments插件就可以實現(xiàn)注釋代碼高亮
點擊VSCode中的插件,然后在搜索欄中輸入Better Comments,然后點擊install就可以安裝
使用方法
其實使用就是在注釋開頭加上特殊的符號。
! : 紅色注釋
? : 藍色注釋
// : 灰色刪除線注釋
todo : 橘紅色注釋
* : 淺綠色注釋
在html,php代碼中修改注釋的顏色如下圖:
PHP注釋
HTML注釋
配置顏色注釋
Notice: 你也可以自己定義屬于自己的顏色。方法如下:
點擊后打開了settings.json, 復(fù)制下面代碼到settings.json,根據(jù)自己的喜好自定義了
也可以增加新的注釋顏色標識符到setting.json中,
注意: 原有的配置不能刪除 如果刪除就沒有效果了 ,只能新增注釋顏色標識!!
如下:
"better-comments.tags": [
{
"tag": "@", //自己定義一個字符串名字
"color": "yellow", //顏色
"strikethrough": false,
"backgroundColor": "transparent"
},
{
"tag": "!",
"color": "#FF2D00", //顏色
"strikethrough": false,
"backgroundColor": "transparent"
},
{
"tag": "?",
"color": "#3498DB", //顏色
"strikethrough": false,
"backgroundColor": "transparent"
},
{
"tag": "//",
"color": "#474747", //顏色
"strikethrough": true,
"backgroundColor": "transparent"
},
{
"tag": "todo", //顏色
"color": "#FF8C00",
"strikethrough": false,
"backgroundColor": "transparent"
},
{
"tag": "*", //顏色
"color": "#98C379",
"strikethrough": false,
"backgroundColor": "transparent"
}
],
修改完成之后一定要重啟vscode!
作用是生成文件頭部注釋和函數(shù)注釋 , 但這個插件可以支持所有主流語言生成注釋!
安裝完成后可以新建一個test.js文件,就可以看到文件頭部會自動生成一堆注釋
如果你是windows電腦,使用ctrl+shift+p鍵
Mac電腦使用shift+command+p鍵
然后輸入: codeDesign,就可以選擇注釋圖案了
==koroFileHeader Notice
如果沒有注釋 ,或者 想快速生成文件頭部注釋:
在文件頭部點擊快捷鍵`ctrl+alt+i`(Windows)
函數(shù)注釋快捷鍵 `ctrl+alt+t`
如果你是Mac電腦點擊`ctrl+cmd+i` (Mac)
就會快速生成代碼注釋了!
這時候你會發(fā)現(xiàn)不管是文件頭生成的注釋,還是函數(shù)頭部生成的注釋 都是需要在settings.json中配置的!
文件頭注釋自定義配置 在settings.json中配置文件頭的注釋如下
"fileheader.customMade": {
"Author": "3#",
"objectDescription" : "目前是測試項目",
"Date": "Do not edit", // 文件創(chuàng)建時間(不變)
"LastEditors": "3#", // 文件最后編輯者
"LastEditTime": "Do not edit", // 文件最后編輯時間
"FilePath": "Do not edit" ,// 增加此項配置即可
"Version": "2.0",
},
修改完成后,要保存,然后退出VSCode,再進來,進入文件, 輸入ctrl+alt+i 就可以生成自定義文件頭部注釋了!
函數(shù)頭注釋自定義配置 在settings.json中配置文件頭的注釋如下
"fileheader.cursorMode": { //此為函數(shù)注釋
"author":"3#",
"description":"",
"param": "",
"return": ""
}
效果如下:
Notice
1. 描述內(nèi)容(descripition)為了便捷添加,直接設(shè)置為空;
2. 這里的日期(Date)和修改時間(LastEditTime)設(shè)置,本身軟件就會自行添加和更新,所以直接寫“Do not edit”即可。
3. 除日期和參數(shù)(param)外的其他內(nèi)容,均可嘗試設(shè)置為漢字,方便查看
Consolas在windows下是一款很好看的字體
同時兩款值得推薦的字體是 Source Code Pro和Fira Code, 可以在settings.json中進行配置!
也可以直接修改settings.json配置文件 添加如下配置:
"editor.fontFamily": "Fira Code", //字體
"editor.fontSize": 12, //字體大小
"editor.fontWeight":"normal", //字體粗細
"editor.fontLigatures":true, //是否字體連字
安裝完成后重啟vscode即可
markdown PDF這個插件可用于將markdown文檔轉(zhuǎn)化為 PDF、HTML、PNG等文件的插件
打開vscode插件市場搜索markdown PDF 進行安裝
安裝markdown PDF插件會依賴Chromium, 因此默認情況下 它會嘗試下載Chromium, 并且時間會等待很長一段時間
但是 某些時候在國內(nèi),認情況下它是無法下載的,所以您得手動下載它。
其實不必非要下載 Chromium,如果您的電腦中已經(jīng)安裝了 Chrome 瀏覽器,那只需要簡單配置一下路徑即可。
1. 找到 Chrome 應(yīng)用的路徑,比如,在我的電腦上是 "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"。
2. 打開 VS Code settings.json設(shè)置 、建議在用戶設(shè)置下面添加 。
注意: 這一項,注意路徑中是兩個反斜杠。
{
"markdown-pdf.executablePath": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"
}
配置完畢后,用 VS Code 隨意打開一個 Markdown 文件,右擊文本編輯區(qū)域,就可以看到 Markdown PDF 的上下文菜單了
這款插件的作用就是可以在保存的時候自動代碼格式化,
直接在插件市場搜索它,并安裝后重啟vscode
這款插件需要進行一些配置,修改settings.json配置文件,添加如下配置信息
配置名稱值說明editor.formatOnSavetrue | false保存時格式化editor.tabSizeint 默認:2tab 大小為2個空格editor.wordWrapColumnint 自定義100 列后換行breadcrumbs.enabledtrue | false開啟 vscode 文件路徑導(dǎo)航prettier.semitrue | false設(shè)置語句末尾不加分號 (有效果)prettier.singleQuotetrue | false設(shè)置強制單引號 (有效果)vetur.format.defaultFormatter.htmlprettyhtml選擇 vue 文件中 template 的格式化工具editor.renderControlCharacterstrue | false顯示 markdown 中英文切換時產(chǎn)生的特殊字符vetur.format.defaultFormatterOptions"prettier": { "singleQuote": true, "semi":false }vetur 的自定義設(shè)置
打開vscode插件市場搜索Community Material Theme 進行安裝
然后點擊圖標下面的 set Color Theme按鈕切換主題,如圖:
使縮進更具可讀性的簡單擴展
打開vscode插件市場搜索indent-rainbow 直接安裝即可!
插件效果如下:
它的作用就是刷算法題 可以在vscode內(nèi)部進行測試!
打開vscode插件市場搜索LeetCode 進行安裝
安裝完成之后需要登錄!
登錄的時候有國際版 和 中國版 的選擇 我們 這里選擇的是中國版! 如下圖
然后輸出用戶名與密碼就可以登錄了! 登錄成功后如下圖所示!
就可以刷題了!
這款插件的作用就是會讓vscode的文件產(chǎn)生好看的文件圖標
在插件市場中搜索Material Icon Theme 進行安裝 后重啟vscode即可
效果如下:
這個插件其實我認為沒什么 多大的用處,但是 安裝上玩玩倒是可以的!!
在插件市場搜索:Rainbow Fart
安裝完成之后,在 VSCode 的菜單欄中找到 查看 - 命令面板,或使用快捷鍵 Ctrl + Shift + P(MacOS 使用 Command + Shift + P)呼出 命令面板。
在 命令面板 中輸入 Enable Rainbow Fart 并回車。
此時應(yīng)該會彈出一個消息通知,點擊通知上的 Open 按鈕。
在打開的頁面上點擊 授權(quán) 即可。
現(xiàn)在就可以在vscode中 輸入代碼的時候 會有語音聲音了!!
持續(xù)更新..........
@極客小俊,首發(fā)原創(chuàng)文章
如果喜歡話請 "點贊 評論 收藏" 一鍵三連
大家的支持就是我堅持下去的動力!
不要忘了??哦!
B站: https://space.bilibili.com/395999414
ersion:1.0 StartHTML:000000199 EndHTML:000016704 StartFragment:000001563 EndFragment:000016638 StartSelection:000001563 EndSelection:000016634 SourceURL:http://www.leikeji.com/article/29191
如果問起國內(nèi)最好用的安卓系統(tǒng)是哪家,眾說紛紜,未必有個確切的答案。
但是呢,在諸多的選項里,小米的MIUI必然有它的一席之地。
但它真正好用的地方,還遠遠沒有被小伙伴們挖掘出來。
從MIUI 8用到MIUI 11,基本上每個小角落都被小雷摸了一個遍。
小雷當然不會吃獨食,這次就把使用MIUI這么久以來發(fā)現(xiàn)的小技巧分享給大家吧。
在小米社區(qū)里隨便看幾眼,就能發(fā)現(xiàn)有一大堆網(wǎng)友抱怨MIUI里不斷出現(xiàn)的廣告。
雖然說對使用體驗影響沒那么大,但是去掉之后心里會舒坦很多。
方法超簡單,在MIUI 11里面,只要在設(shè)置里面點擊小米賬號一欄,再點隱私協(xié)議等,你就會發(fā)現(xiàn)系統(tǒng)廣告的選項啦。
把這里的系統(tǒng)工具廣告關(guān)閉后,MIUI自帶的所有App再也不會出現(xiàn)煩人的廣告啦。
討厭廣告的小伙伴還不趕快試試?
講到攔截騷擾短信,一部分小伙伴可能會不以為然,不就是個默認開啟的功能嘛,我都用了好久了。
但實際上呢,你還是會接受到其他的騷擾短信,數(shù)量還不少。
小雷要教大家的,就是如何把這部分頑固分子給干掉的辦法。
首先點開短信的設(shè)置界面,再點開里面短信攔截一欄,你就會發(fā)現(xiàn)有一個關(guān)鍵詞黑名單的選項。
在這里把那些退訂、TD和XX退啥的全都加進去,再把騷擾攔截設(shè)置為不提醒……
恭喜你,獲得了一個永遠收不到辣雞騷擾短信的小米手機啦。
有時候給重要的人發(fā)微信,TA老是忘了回?
在兩人的小米手機上同時開啟免費網(wǎng)絡(luò)短信的選項,這樣就能直接免費收發(fā)短信啦。
不過要注意的是,必須在有網(wǎng)絡(luò)的情況下才能使用它,一旦你沒信號了,還是會通過運營商來發(fā)送短信的哦。
小雷作為一個男生,經(jīng)常會多出一些有益于身心健康的視頻和照片。
那給別人發(fā)文件的時候不小心點錯,或者把手機借給別人的時候被發(fā)現(xiàn),豈不是尷尬到爆炸?
所以小雷一直在找能避免這一切的辦法,終于功夫不負有心人,真讓小雷找到了!
只要在文件管理頁面用力下滑,就能開啟MIUI里隱藏非常深的隱私空間了。
把它開啟后呢,你就能選中文件把它們統(tǒng)統(tǒng)放到這個隱私空間里了。
但放進去之后,就只能通過預(yù)先設(shè)置的密碼或者指紋識別來打開它咯。
隱私短信也是通過相同的辦法來開啟的,只要在短信界面用力下拉就行啦,不想被發(fā)現(xiàn)奇怪短信來往的小伙伴可以試試這個~
大學(xué)里經(jīng)常上課的小伙伴可能會面臨一個不大不小的問題,就是老師講課太快,筆記跟不上,只能拍投影儀放出來的PPT。
打開MIUI系統(tǒng)工具里的掃一掃應(yīng)用,選擇掃文檔后,對準老師的PPT“咔嚓”一下。
恭喜你,直接獲得了一張高清版本的PPT。
除了掃文檔功能外呢,掃一掃里面還內(nèi)置了其他的功能,比如掃描翻譯、掃描識物、拍照購物以及掃題等等。
強烈安利給那些買小米手機之后還沒用過這個功能的小伙伴們~
在MIUI 11中,小米正式上線了地震預(yù)警的功能,能在地震來臨之前為大家提供警報,給大家留出緩沖的時間。
但是這個功能并不是默認開啟的哦,需要你自己在手機管家里手動開啟。
但目前支持的地區(qū)比較有限,在地震多發(fā)的四川地區(qū)才能夠得到有效啟用。
四川地區(qū)的小伙伴可以先把這個功能開啟了,這樣就能在地震到達前做好避難措施,保護自己的安全。
這項同樣是MIUI 11上發(fā)布的功能,一出來就受到了非常多的好評。
畢竟嘛,單純的粗體和細體不能滿足全部人的需求,像小雷自己就比較喜歡偏粗一點的文本。
開啟方式很簡單,只要在系統(tǒng)設(shè)置-顯示-字體大小和粗細里找到滑動的選項,就能調(diào)節(jié)到自己喜歡的字體粗細模式啦。
當你更新到MIUI 11之后,只要選中某張照片或者某個文件,就會蹦出分享的界面。
不同于之前的是,現(xiàn)在里面會多出一行小米互傳設(shè)備的界面。
跟蘋果的隔空投送相似,只要你小米手機和小米電腦有開啟這個功能,就能很方便地傳輸文件照片了。
并且不止小米,OPPO、vivo和Realme手機同樣可以使用這個功能,是不是很方便呢?
手機就剩5%的電量了怎么辦?
別急,MIUI 11里面已經(jīng)內(nèi)置了超級省電模式,哪怕是5%的電量,也能堅持二十幾個小時。
你可以通過設(shè)置里的“電池與性能”開啟這個模式,當然也可以直接下拉通知欄一鍵開啟,這樣就不用擔(dān)心旅途中突然沒電這個問題了。
自從發(fā)生過多起順風(fēng)車司機蓄意殺害獨身女性事件后,各家手機系統(tǒng)就紛紛開始加上SOS緊急求助功能。
MIUI當然也把這項功能及時地加上了,開啟的方法很簡單。
在設(shè)置里找到“SOS緊急求助”這一選項后點擊進入,就能用上這項能救命的功能啦。
說到分屏,小雷就想到之前要給別人發(fā)消息的時候,有些圖片中的文字不能直接復(fù)制啥的,就得兩個應(yīng)用來回切換,就非常麻煩。
后來發(fā)現(xiàn)MIUI里其實還是有分屏功能的,只是隱藏的比較深。
長按多任務(wù)界面的應(yīng)用,就會有三個圓形的按鈕跳出來,第二個按鈕就是分屏啦。
當你把一個應(yīng)用加入分屏之后,只要再把另一個拖拽到下面,就能完成兩個應(yīng)用的分屏咯。
會開車的小伙伴們都知道,車牌號是必不可少的,不然怎么上車呢?
但是呢開車的時候如果不能聚精會神,就會容易出事故。
還好MIUI里有駕駛模式,能夠語音播報收到的消息,并且能通過小愛同學(xué)來回復(fù)。
不過這項功能需要小伙伴們自己去MIUI實驗室里開啟哦。
用語音來接管手機的全部操作,開車是不是安心了很多呢?
QQ號、微信號和微博號大家可能都不止一個,有時候想用其他的號但又不想來回切換,這個時候呢,就輪到應(yīng)用雙開上場啦。
通過小愛同學(xué)、設(shè)置和安全中心都可以打開,這樣就能快速在兩個賬號之間切換啦。
而在最新的MIUI 11中,你可以直接通過長按應(yīng)用呼出多開的選項,要多方便就有多方便!
還記得微軟的人工智能小冰嗎?
由于小米和微軟的關(guān)系太鐵,現(xiàn)在已經(jīng)可以通過小愛同學(xué)召喚出微軟小冰了~
不用你燒香吃齋念佛,直接對小愛同學(xué)說一句“召喚小冰”就能叫出她咯~
沒試過的小伙伴趕緊去調(diào)戲一下小冰吧~
啥叫街拍?
就是沒有被人發(fā)現(xiàn)的拍照。
怎么用手機街拍?
當然是開啟街拍功能咯~
MIUI里開啟方法很簡單,點開手機相機設(shè)置界面后找到街拍模式就行啦。
沒玩過的小伙伴可以試試這個很紳士的功能哦……
走親訪友,碰見不熟的長輩忘了該叫啥?
沒關(guān)系哦,MIUI的計算器里內(nèi)置了親戚稱呼計算功能,輸入幾次就能得到正確叫法,完全不用擔(dān)心尷尬的問題。
當然MIUI的計算器遠不止這一個功能,什么轉(zhuǎn)換啊匯率啊個人所得稅啊,沒有一個不是手到擒來。
啊,從微博上保存的圖片有水印,太難受了,我還想用來當自己的頭像和表情包呢。
還好小雷找到MIUI圖片編輯里的一個隱藏功能——魔法消除。
用它就可以把水印通通去光了,完全不用為此多下一個軟件了~
還能去掉一些照片里的雜物呢,是不是很實用?
出行要帶的最多的就是各種卡,什么門卡啊交通卡啊,忘帶就要命了。
但是如果你用的是小米手機呢,以上兩種卡可以通通不用帶了,直接用手機刷就行啦。
在小米錢包里選擇公交卡,就能開卡啦,而且目前免費開卡的京津冀一卡通是支持交通聯(lián)合的,能支持全國幾百個城市的公交和地鐵。
開通門卡方式也很簡單,點開門卡模擬之后,把要模擬的門卡貼到手機背后,手機就能識別并開通虛擬門卡啦。
需要注意的是,目前小米是不支持那些加密卡模擬的。
系統(tǒng)動畫這件事呢,也是眾口難調(diào),有的喜歡快,有的喜歡慢。
但是只要去開發(fā)者選項里調(diào)節(jié)幾個選項,想快想慢都由你自己決定。
首先要在MIUI系統(tǒng)的全部參數(shù)里點擊10下MIUI版本,再跑到更多設(shè)置里找到開發(fā)者選項并進入。
在開發(fā)者選項里找到這三項之后,可以把它們調(diào)節(jié)到0.5X或者2X,前者會讓動畫更快,后者就會讓動畫更慢一點。
以上就是小雷要偷偷告訴大家的MIUI技巧啦,學(xué)會了的小伙伴趕緊去試試吧。
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。