果有小米工程师看到此贴,愿意帮助我协助排查问题,非常欢迎,咱们一起把问题搞清楚,解决掉
欢迎带出处进行转载!恳请大家把这个顶上去,望能得到小米官方的回复!我希望小米能够重视用户的声音!及时悬崖勒马,成为一个受人尊敬的公司!我可是你们的忠实用户啊!手机都买过几部了!千万别让我失望!
此文展示了我的推理过程:
- 发现通过小米路由器打开某些网页,网页HTML后面会被加入一段javascript代码,会导致:1)网页右下角显示广告 和 2)无缘无故跳转广告页面!
- 该JS代码指向 http://tjqonline.cn,这个网站通过查询,属于小米公司
- 通过修改hosts文件,可以打开或禁止电脑对http://tjqonline.cn的访问。实验发现,当禁止电脑对http://tjqonline.cn的访问时,打开同一个网页,在html同样被注入的情况下,右下角广告和页面广告跳转现象消失。可以得出,广告和这段js代码有关系!
- 通过做对比试验,发现当直接通过宽带Modem上网的时候(绕过小米路由器),该段js注入代码消失
得出结论:很可能是小米路由器劫持了我的正常上网,恶意给我推送广告,严重损害了我的正常上网体验!!!!偷偷摸摸显示一个小广告挡住我浏览也就算了,我点击一个链接,你给我打开了一个无关广告页面??!!!忍无可忍!!!拜托,这个路由器是我花钱买的!不是免费送的!
详细的证据请往后看
===============
=======法律援助=============
我强忍住怒火,非常慎重的组织我的语言,并且认真的做各种各样的实验,为的就是更公正的把客观事实展现在大家的面前。
我非常清醒的知道,这样可能会触及到一些利益,而且一旦我的整篇文章中,有一丝的描述偏差,我可能就会惹上官司。不要觉得我大题小做。
所以这件事我作为一个普通用户,必须非常慎重,在表达自己的愤怒以及向公众揭露这种问题的同时,需要避免各种官司。所以希望大家可以提供一些法律上的帮助和建议,比如如何公证,如何留证据之类的?
======22:10 分更新=====
已经在评论区看到一些不友善言论了啊!我敢发这篇文章,说明1)我真的很愤怒被劫持 2)我有充分的证据和推理过程
我曝光这个,希望小米可以跟我心平气和地交流下。如果你们确实做了错事,跟我道个歉,改正就好了
===================
【症状描述】
如果你也有以下经历,那你可能跟我一样,可能是因为小米路由器网页劫持造成的:
- 你使用小米路由器
- 点击网页链接的时候,会莫名其妙弹出一个另外的网站
- 有的网页右下角会出现百度网盟的弹窗广告:
我这篇文章是为了证明,这很可能是小米路由器做的!!!!它在偷偷修改我的页面内容!!给我推送垃圾广告!!!流氓!!!这个小米路由器是我花钱买的!!!不是免费拿的!!!竟然敢给我推广告!!!而且强制劫持我点击打开操作跳转到另一个广告页面!!!
【什么是网页劫持】
首先大概科普一下,什么是网页劫持:当你在家通过小米路由器上网的时候,所有的网页其实都会通过小米路由器转给你,所以你访问的网页内容小米路由器都可以看得到,并且,他还会偷偷的篡改你的内容!!!!!
【追踪问题】
我最近上网总是发生这种诡异的事情,在排除了是恶意浏览器插件做的事情之后,我发现一些线索:
- 这个情况只在家里上网的时候出现,在非小米路由环境是不会出现的
- 当我开启VPN之后,这个问题消失(因为VPN连接是加密的,浏览器到服务器端到端加密,路由器也无法看到和篡改其中内容)
于是,对于同一个网页,我保存下来正常时候的网页(通过连接VPN获得),还保存了有广告的页面源代码,做了一下diff:
左边是被劫持的有广告的html,可以看到,多出了一行java script,域名是 http://tjqonline.cn,真是明目张胆,随随便便whois了一下,赫然写着:小米通讯技术有限公司:
网站备案信息:http://icp.chinaz.com/info?q=tjqonline.cn
【对比试验】
我又做了另一个实验,证明,只有在连接小米路由器的时候,才会有http://tjqonline.cn这个注入:
- 同样的电脑(OSx),同样的浏览器(Chrome Canary版本),同样的两个测试网页
- 在连接小米路由器的情况下,打开两个被劫持的网站,查看网页源代码,均发现下面提到的来自于http://tjqonline.cn的script代码
- 断掉小米路由器,直接把宽带Modem的RJ45以太网线插入我的电脑以太网接口
- 退出浏览器,重新打开。重新打开同样两个网站,查看网页源代码,http://tjqonline.cn的注入代码消失!
- 重复以上步骤两遍,确保http://tjqonline.cn的注入代码只是在连接小米路由器的时候出现;直连路由器Modem不会出现注入代码
【临时解决问题】
我是机器学习工程师,不是前端网页工程师,不知道怎么追踪修改js代码,但是我TM可以把这个域名从我的电脑里给禁掉,直接把这个域名在hosts文件里面跳转到127.0.0.1了!!(即,在我的电脑上访问http://tjqonline.cn拉广告数据的时候,都会被系统强制砍掉!!)
(如何在mac上修改hosts:http://jingyan.baidu.com/article/8cdccae965875c315413cdfe.html)
(如何在windows上修改hosts:http://jingyan.baidu.com/article/a501d80cee03d8ec630f5e14.html)
重启浏览器(为了清除浏览器里面的DNS缓存),问题解决!进一步证明,刚刚的网页跳转劫持和广告,确实就是小米路由器干的!
【写在最后】
- 这件事我搜了下,发现已经有很多用户在网上提到过这个了:
小米路由器劫持用户网页植入广告
请小米停止http劫持!!!!
小米路由器劫持用户浏览器事件回顾 - 乌云知识库 - 知乎专栏
小米路由器~我TMD买你这个是瞎了眼!居然给... 来自雷子献
通过小米路由器上网就有广告(求原因)
并且,当年插入的script是http://api.xiaomi.com这个域名,过了一段时间,换成http://tjqonline.cn改头换面重新来了!以及,之前的帖子里有人提到可以通过设置什么插件的来禁止,但我没有找到相关选项。(而且就算是第三方插件,小米也需要负责审核!)
- 以前觉得小米是一家大公司,不会干出这么龌龊的事情,何况这个路由器是我花了钱买的!不是免费的!应该是一个严肃的商业产品
- 上次在雷锋网主办的人工智能大会上,听小米的一个副总裁KK的演讲,说小米如何根据和用户行为数据和机器学习算法来建立用户画像,能够知道你是男的女的,你的消费水平,你的家庭地址等等,当时觉得很牛逼啊,可以通过用户的匿名使用习惯来做用户画像(对,我当时以为他用的是非隐私数据)
但是今天这件事让我完全丧失了对小米的信任。理论上,小米可以通过路由器知道你平时上什么网,知道你平时买了什么东西,知道你用的是哪个银行的账号,知道你搜过哪些地址,知道你亲朋好友的电话、住址。按照今天发现的小米的德行,想想看小米如果真的要利用你的隐私数据做点什么事,真是不寒而栗!
所有你通过小米路由器的非加密信息,都被小米路由器看在眼里,偷偷摸摸篡改!
(修改host的方式只是权宜之计,希望大家献言献策,在我新路由器送到的这几天里,看看有什么方法可以彻底解决这个问题!)
(转自知乎)
者:极客小俊
一个专注于web技术的80后
你不用拼过聪明人,你只需要拼过那些懒人 你就一定会超越大部分人!
第一步: 卸载软件
注意:此步骤虽然删掉了应用软件,但是此时重新安装会发现之前下载的插件和个人配置信息都还会重新加载出来,所以继续进行以下步骤:
第二步: 找到下图中文件夹的目录,然后将之删除,即可彻底清除已安装的插件个个人配置信息
第三步:
路径是: C:\Users\Administrator\AppData\Roaming\Code
注意:AppData默认是隐藏文件夹
解决问题场景: 配置失误,导致vscode无法使用,如窗口缩放太大,快捷键失效。
打开如目录 例如: C:\Users\Administrator\AppData\Roaming\Code\User
用记事本打开目录下的settings.json,修改里面的对应配置可以解决对应的问题,重置的话全部删除就好了!
.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:/// , 绝对不能删!!!!
注意: 下面的大括号并不一定复制过去,取决于有没有其他配置,如果setting.json文件是空的就全部复制过去!
例如:
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预览?这里大家可以通过安装open in browser插件解决!
在安装完open in browser插件后,在html代码中鼠标右键可以看到多了两个打开选择,点击选项即可打开浏览器进行预览。
Open in Default Browsers:使用默认浏览器打开 快捷键:alt+b
Open in Other Browsers: 使用其他浏览器打开 快捷键:alt+shift+b
那么怎么修改默认浏览器呢?
打开setting.json配置文件, 加入open-in-browser.default配置,例如: 把默认浏览器配置为火狐浏览器,如下图:
vscode其实就是一个网页程序,所以可以找到vscode中的一个文件进行修改它的背景图片,这个文件就是:workbench.desktop.main.css
这个文件的路径是在vs code安装目录,如下
例如: D:\Microsoft VS Code\resources\app\out\vs\workbench\workbench.desktop.main.css
然后打开这个workbench.desktop.main.css 文件进行 背景的添加设置, 注意这个文件打开后需要格式化代码一下!
背景图可以设置全局显示背景图 也可以 局部显示背景图
局部显示背景图,如下css代码:
body {
background-image: url('file:///图片地址');
background-size: 20%;
background-position: 100% 100%;
opacity: 0.75;
background-repeat: no-repeat;
}
如下图:
注意: 局部显示的图片格式最好选择png格式的
设置完成后重启vscode、效果如下图:
全局显示背景图,如下css代码:
body {
background-image: url('file:///图片地址');
background-size: 100%;
opacity: 0.75;
background-repeat: no-repeat;
}
设置完成后重启vscode、效果如下:
注意: 这种修改workbench.desktop.main.css 文件的方法来设置背景 如果VScode自动软件更新后 背景会消失,需要重新设置!
在vscode插件市场搜索: background插件、然后进行安装 如下图
安装background背景插件后重启 vscode 会看见走下角的背景图片效果, 如下:
这里background背景插件还提供了一些用户自定义的配置参数, 这些配置参数设定在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前景图/背景图。 在代码上面还是下面 一般设置truebackground.loopBoolean循环模式,会重复显示图片 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文件,但是比起第一种方法 来说 使用插件去修改比手工去修改更方便一些而已
为了测试方便,首先安装这个插件之前 如果有设定前面两种方法的背景配置 就先把setting.json中的相关配置注释一下!
注意: 方法2 和 方法3 的背景设置时可以共存的!!
然后再安装background-cover 插件
安装后重启! 如果你看到依旧没有效果 那说明还没有进行设置, 可以使用 ctrl + shift + P 选择 "backgroundCover - start",然后就可以对背景图片进行选择和设置了!
其实在setting.json配置文件当中也会产生一行配置: 例如 : "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更新版本时会导致背景图消失,需要手动重新设置, 所以这种方法跟第一种其实也差不多! 只不过选择图片方便了一点!
这个插件的作用就是快速的在vscode内部使用浏览器预览html页面效果, 在插件市场搜索Browser Preview
安装完成后,在Bar上多出一个图标,点击图标就可以在VSCode里打开浏览器了 ,
默认情况下打开的是vscode的官方网站, 如果要配置到我们自己的站点目录方法如下:
打开设置,然后找到Extensions,再找到Browser Preview,找到Start Url写上你默认打开的地址就可以了。
效果如下:
安装好后,需要重启一下VSCode,就可以出现透明效果了。
插件的设置: 打开设置界面,在左边找到Extensions选项卡,然后找到Windows opacity进行设置
这里边只有一个设置项,就是Opacity,也就是我们要设置的透明度,值从0-255,数值越小透明度越高,数值越大透明度越低。
如果想关闭透明 设置透明度255即可!!
为我们自动查找匹配标签开始结尾,括号匹配。从此再也不用花时间再成对标签或者括号开始与结尾的查找上了, 提高了工作效率
虽然vscode也自带了 标签,括号的代码区块提示,但是个人觉得不够明显!! 所以推荐这款插件
进入插件,在搜索栏上搜索, Bracket Pair Colorizer 然后找到如果插件,直接点击Install按钮进行安装
安装后 vscode重启 效果如下:
有兴趣的同学 可以找到File-->Preferences-->settings-->Extensions-->BracketPair 进行更多设置 这里就不多讲了!
这个插件就是可以快速生成漂亮的代码截图, 比如要在博客里放置一个漂亮的代码截图,或者是快速分享到其它网络平台 都可以使用这个截图插件 进行代码截图 非常漂亮!!
打开VSCode中的插件,搜索 Polacode,这个你可以找到多个版本,这里我推荐的是 2020版本 点击install进行安装
使用方法
安装完成后,先打开你要分享的代码,然后按Ctrl + Shift + p 打开命令面板,然后再输入框中输入Polacode,就可以打开使用了
把自己想截图的代码拖拽选中后 就可以点击右边的截图按钮,生成图片了!
也是一个vscode代码截图捕捉插件, 截图更加清晰, 清晰度类似于苹果电脑!
直接在插件市场搜索CodeSnap
安装后重启vscode
使用方法:
安装完成后,先打开你要分享的代码,然后按Ctrl + Shift + p 打开命令面板,然后再输入框中输入CodeSnap,就可以截图代码了!
CodeSnap想更改相关配置如下可以在settings.json中添加相关配置
CodeSnap是高度可配置的, 以下是可以更改的设置列表,以调整屏幕截图的外观
配置名称值说明codesnap.backgroundColor十六进制颜色值代码段容器边缘的背景色。可以是任何有效的CSS颜色。codesnap.boxShadow默认值: rgba(0, 0, 0, 0.55) 0px 20px 68px代码段的CSS框阴影。可以是任何有效的CSS框阴影codesnap.containerPadding整数 , 默认值: 3em, 也可以使用px代码段容器边缘的填充。可以是任何有效的CSS填充codesnap.roundedCorners布尔值 默认为:true圆角配置 用于配置边缘内部代码块边缘是否是圆角或方形角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", //阴影设置
"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插件就可以实现注释代码高亮
点击VSCode中的插件,然后在搜索栏中输入Better Comments,然后点击install就可以安装
使用方法
其实使用就是在注释开头加上特殊的符号。
! : 红色注释
? : 蓝色注释
// : 灰色删除线注释
todo : 橘红色注释
* : 浅绿色注释
在html,php代码中修改注释的颜色如下图:
PHP注释
HTML注释
配置颜色注释
Notice: 你也可以自己定义属于自己的颜色。方法如下:
点击后打开了settings.json, 复制下面代码到settings.json,根据自己的喜好自定义了
也可以增加新的注释颜色标识符到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!
作用是生成文件头部注释和函数注释 , 但这个插件可以支持所有主流语言生成注释!
安装完成后可以新建一个test.js文件,就可以看到文件头部会自动生成一堆注释
如果你是windows电脑,使用ctrl+shift+p键
Mac电脑使用shift+command+p键
然后输入: codeDesign,就可以选择注释图案了
==koroFileHeader Notice
如果没有注释 ,或者 想快速生成文件头部注释:
在文件头部点击快捷键`ctrl+alt+i`(Windows)
函数注释快捷键 `ctrl+alt+t`
如果你是Mac电脑点击`ctrl+cmd+i` (Mac)
就会快速生成代码注释了!
这时候你会发现不管是文件头生成的注释,还是函数头部生成的注释 都是需要在settings.json中配置的!
文件头注释自定义配置 在settings.json中配置文件头的注释如下
"fileheader.customMade": {
"Author": "3#",
"objectDescription" : "目前是测试项目",
"Date": "Do not edit", // 文件创建时间(不变)
"LastEditors": "3#", // 文件最后编辑者
"LastEditTime": "Do not edit", // 文件最后编辑时间
"FilePath": "Do not edit" ,// 增加此项配置即可
"Version": "2.0",
},
修改完成后,要保存,然后退出VSCode,再进来,进入文件, 输入ctrl+alt+i 就可以生成自定义文件头部注释了!
函数头注释自定义配置 在settings.json中配置文件头的注释如下
"fileheader.cursorMode": { //此为函数注释
"author":"3#",
"description":"",
"param": "",
"return": ""
}
效果如下:
Notice
1. 描述内容(descripition)为了便捷添加,直接设置为空;
2. 这里的日期(Date)和修改时间(LastEditTime)设置,本身软件就会自行添加和更新,所以直接写“Do not edit”即可。
3. 除日期和参数(param)外的其他内容,均可尝试设置为汉字,方便查看
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文档转化为 PDF、HTML、PNG等文件的插件
打开vscode插件市场搜索markdown PDF 进行安装
安装markdown PDF插件会依赖Chromium, 因此默认情况下 它会尝试下载Chromium, 并且时间会等待很长一段时间
但是 某些时候在国内,认情况下它是无法下载的,所以您得手动下载它。
其实不必非要下载 Chromium,如果您的电脑中已经安装了 Chrome 浏览器,那只需要简单配置一下路径即可。
1. 找到 Chrome 应用的路径,比如,在我的电脑上是 "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"。
2. 打开 VS Code settings.json设置 、建议在用户设置下面添加 。
注意: 这一项,注意路径中是两个反斜杠。
{
"markdown-pdf.executablePath": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"
}
配置完毕后,用 VS Code 随意打开一个 Markdown 文件,右击文本编辑区域,就可以看到 Markdown PDF 的上下文菜单了
这款插件的作用就是可以在保存的时候自动代码格式化,
直接在插件市场搜索它,并安装后重启vscode
这款插件需要进行一些配置,修改settings.json配置文件,添加如下配置信息
配置名称值说明editor.formatOnSavetrue | false保存时格式化editor.tabSizeint 默认:2tab 大小为2个空格editor.wordWrapColumnint 自定义100 列后换行breadcrumbs.enabledtrue | false开启 vscode 文件路径导航prettier.semitrue | false设置语句末尾不加分号 (有效果)prettier.singleQuotetrue | false设置强制单引号 (有效果)vetur.format.defaultFormatter.htmlprettyhtml选择 vue 文件中 template 的格式化工具editor.renderControlCharacterstrue | false显示 markdown 中英文切换时产生的特殊字符vetur.format.defaultFormatterOptions"prettier": { "singleQuote": true, "semi":false }vetur 的自定义设置
打开vscode插件市场搜索Community Material Theme 进行安装
然后点击图标下面的 set Color Theme按钮切换主题,如图:
使缩进更具可读性的简单扩展
打开vscode插件市场搜索indent-rainbow 直接安装即可!
插件效果如下:
它的作用就是刷算法题 可以在vscode内部进行测试!
打开vscode插件市场搜索LeetCode 进行安装
安装完成之后需要登录!
登录的时候有国际版 和 中国版 的选择 我们 这里选择的是中国版! 如下图
然后输出用户名与密码就可以登录了! 登录成功后如下图所示!
就可以刷题了!
这款插件的作用就是会让vscode的文件产生好看的文件图标
在插件市场中搜索Material Icon Theme 进行安装 后重启vscode即可
效果如下:
这个插件其实我认为没什么 多大的用处,但是 安装上玩玩倒是可以的!!
在插件市场搜索:Rainbow Fart
安装完成之后,在 VSCode 的菜单栏中找到 查看 - 命令面板,或使用快捷键 Ctrl + Shift + P(MacOS 使用 Command + Shift + P)呼出 命令面板。
在 命令面板 中输入 Enable Rainbow Fart 并回车。
此时应该会弹出一个消息通知,点击通知上的 Open 按钮。
在打开的页面上点击 授权 即可。
现在就可以在vscode中 输入代码的时候 会有语音声音了!!
持续更新..........
@极客小俊,首发原创文章
如果喜欢话请 "点赞 评论 收藏" 一键三连
大家的支持就是我坚持下去的动力!
不要忘了??哦!
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
如果问起国内最好用的安卓系统是哪家,众说纷纭,未必有个确切的答案。
但是呢,在诸多的选项里,小米的MIUI必然有它的一席之地。
但它真正好用的地方,还远远没有被小伙伴们挖掘出来。
从MIUI 8用到MIUI 11,基本上每个小角落都被小雷摸了一个遍。
小雷当然不会吃独食,这次就把使用MIUI这么久以来发现的小技巧分享给大家吧。
在小米社区里随便看几眼,就能发现有一大堆网友抱怨MIUI里不断出现的广告。
虽然说对使用体验影响没那么大,但是去掉之后心里会舒坦很多。
方法超简单,在MIUI 11里面,只要在设置里面点击小米账号一栏,再点隐私协议等,你就会发现系统广告的选项啦。
把这里的系统工具广告关闭后,MIUI自带的所有App再也不会出现烦人的广告啦。
讨厌广告的小伙伴还不赶快试试?
讲到拦截骚扰短信,一部分小伙伴可能会不以为然,不就是个默认开启的功能嘛,我都用了好久了。
但实际上呢,你还是会接受到其他的骚扰短信,数量还不少。
小雷要教大家的,就是如何把这部分顽固分子给干掉的办法。
首先点开短信的设置界面,再点开里面短信拦截一栏,你就会发现有一个关键词黑名单的选项。
在这里把那些退订、TD和XX退啥的全都加进去,再把骚扰拦截设置为不提醒……
恭喜你,获得了一个永远收不到辣鸡骚扰短信的小米手机啦。
有时候给重要的人发微信,TA老是忘了回?
在两人的小米手机上同时开启免费网络短信的选项,这样就能直接免费收发短信啦。
不过要注意的是,必须在有网络的情况下才能使用它,一旦你没信号了,还是会通过运营商来发送短信的哦。
小雷作为一个男生,经常会多出一些有益于身心健康的视频和照片。
那给别人发文件的时候不小心点错,或者把手机借给别人的时候被发现,岂不是尴尬到爆炸?
所以小雷一直在找能避免这一切的办法,终于功夫不负有心人,真让小雷找到了!
只要在文件管理页面用力下滑,就能开启MIUI里隐藏非常深的隐私空间了。
把它开启后呢,你就能选中文件把它们统统放到这个隐私空间里了。
但放进去之后,就只能通过预先设置的密码或者指纹识别来打开它咯。
隐私短信也是通过相同的办法来开启的,只要在短信界面用力下拉就行啦,不想被发现奇怪短信来往的小伙伴可以试试这个~
大学里经常上课的小伙伴可能会面临一个不大不小的问题,就是老师讲课太快,笔记跟不上,只能拍投影仪放出来的PPT。
打开MIUI系统工具里的扫一扫应用,选择扫文档后,对准老师的PPT“咔嚓”一下。
恭喜你,直接获得了一张高清版本的PPT。
除了扫文档功能外呢,扫一扫里面还内置了其他的功能,比如扫描翻译、扫描识物、拍照购物以及扫题等等。
强烈安利给那些买小米手机之后还没用过这个功能的小伙伴们~
在MIUI 11中,小米正式上线了地震预警的功能,能在地震来临之前为大家提供警报,给大家留出缓冲的时间。
但是这个功能并不是默认开启的哦,需要你自己在手机管家里手动开启。
但目前支持的地区比较有限,在地震多发的四川地区才能够得到有效启用。
四川地区的小伙伴可以先把这个功能开启了,这样就能在地震到达前做好避难措施,保护自己的安全。
这项同样是MIUI 11上发布的功能,一出来就受到了非常多的好评。
毕竟嘛,单纯的粗体和细体不能满足全部人的需求,像小雷自己就比较喜欢偏粗一点的文本。
开启方式很简单,只要在系统设置-显示-字体大小和粗细里找到滑动的选项,就能调节到自己喜欢的字体粗细模式啦。
当你更新到MIUI 11之后,只要选中某张照片或者某个文件,就会蹦出分享的界面。
不同于之前的是,现在里面会多出一行小米互传设备的界面。
跟苹果的隔空投送相似,只要你小米手机和小米电脑有开启这个功能,就能很方便地传输文件照片了。
并且不止小米,OPPO、vivo和Realme手机同样可以使用这个功能,是不是很方便呢?
手机就剩5%的电量了怎么办?
别急,MIUI 11里面已经内置了超级省电模式,哪怕是5%的电量,也能坚持二十几个小时。
你可以通过设置里的“电池与性能”开启这个模式,当然也可以直接下拉通知栏一键开启,这样就不用担心旅途中突然没电这个问题了。
自从发生过多起顺风车司机蓄意杀害独身女性事件后,各家手机系统就纷纷开始加上SOS紧急求助功能。
MIUI当然也把这项功能及时地加上了,开启的方法很简单。
在设置里找到“SOS紧急求助”这一选项后点击进入,就能用上这项能救命的功能啦。
说到分屏,小雷就想到之前要给别人发消息的时候,有些图片中的文字不能直接复制啥的,就得两个应用来回切换,就非常麻烦。
后来发现MIUI里其实还是有分屏功能的,只是隐藏的比较深。
长按多任务界面的应用,就会有三个圆形的按钮跳出来,第二个按钮就是分屏啦。
当你把一个应用加入分屏之后,只要再把另一个拖拽到下面,就能完成两个应用的分屏咯。
会开车的小伙伴们都知道,车牌号是必不可少的,不然怎么上车呢?
但是呢开车的时候如果不能聚精会神,就会容易出事故。
还好MIUI里有驾驶模式,能够语音播报收到的消息,并且能通过小爱同学来回复。
不过这项功能需要小伙伴们自己去MIUI实验室里开启哦。
用语音来接管手机的全部操作,开车是不是安心了很多呢?
QQ号、微信号和微博号大家可能都不止一个,有时候想用其他的号但又不想来回切换,这个时候呢,就轮到应用双开上场啦。
通过小爱同学、设置和安全中心都可以打开,这样就能快速在两个账号之间切换啦。
而在最新的MIUI 11中,你可以直接通过长按应用呼出多开的选项,要多方便就有多方便!
还记得微软的人工智能小冰吗?
由于小米和微软的关系太铁,现在已经可以通过小爱同学召唤出微软小冰了~
不用你烧香吃斋念佛,直接对小爱同学说一句“召唤小冰”就能叫出她咯~
没试过的小伙伴赶紧去调戏一下小冰吧~
啥叫街拍?
就是没有被人发现的拍照。
怎么用手机街拍?
当然是开启街拍功能咯~
MIUI里开启方法很简单,点开手机相机设置界面后找到街拍模式就行啦。
没玩过的小伙伴可以试试这个很绅士的功能哦……
走亲访友,碰见不熟的长辈忘了该叫啥?
没关系哦,MIUI的计算器里内置了亲戚称呼计算功能,输入几次就能得到正确叫法,完全不用担心尴尬的问题。
当然MIUI的计算器远不止这一个功能,什么转换啊汇率啊个人所得税啊,没有一个不是手到擒来。
啊,从微博上保存的图片有水印,太难受了,我还想用来当自己的头像和表情包呢。
还好小雷找到MIUI图片编辑里的一个隐藏功能——魔法消除。
用它就可以把水印通通去光了,完全不用为此多下一个软件了~
还能去掉一些照片里的杂物呢,是不是很实用?
出行要带的最多的就是各种卡,什么门卡啊交通卡啊,忘带就要命了。
但是如果你用的是小米手机呢,以上两种卡可以通通不用带了,直接用手机刷就行啦。
在小米钱包里选择公交卡,就能开卡啦,而且目前免费开卡的京津冀一卡通是支持交通联合的,能支持全国几百个城市的公交和地铁。
开通门卡方式也很简单,点开门卡模拟之后,把要模拟的门卡贴到手机背后,手机就能识别并开通虚拟门卡啦。
需要注意的是,目前小米是不支持那些加密卡模拟的。
系统动画这件事呢,也是众口难调,有的喜欢快,有的喜欢慢。
但是只要去开发者选项里调节几个选项,想快想慢都由你自己决定。
首先要在MIUI系统的全部参数里点击10下MIUI版本,再跑到更多设置里找到开发者选项并进入。
在开发者选项里找到这三项之后,可以把它们调节到0.5X或者2X,前者会让动画更快,后者就会让动画更慢一点。
以上就是小雷要偷偷告诉大家的MIUI技巧啦,学会了的小伙伴赶紧去试试吧。
*请认真填写需求信息,我们会在24小时内与您取得联系。