我们都知道mysql的默认端口就是3306,一般默认是对外开放的,也就是可以通过ip + 端口的访问直接远程访问,这样是有安全隐患,类似百度云观察这样的服务扫描到的话就会把这当成安全隐患提示站长。 对于只有一个服务器的用户,也就是只用使用单机版的mysql就行了。 我们怎么关闭3306端口对外开放呢? 修改/etc/my.cnf文件里面的[mysqld]的内容 最狠的办法 把 s
前面的一篇文章 Javascript保留格式翻译选区内容及预览(一) ,我们已经知道了,怎么获取选中的文字,然后交个接口返回,现在我们接着继续将这么讲翻译好的词语替换到原文的对应位置。 首先我们在选择文本并进行翻译时,我们的选区还在的,如果后续操作有存在丢掉选区的操作的话,我们需要先将选区暂存起来。 怎么保存选区 首先保存选区的前提是: 选区还存在 。 怎么说 ? 如果我们选中的词语是
上一篇里面讲到运行 npm run serve 时运行的是 serveice.run(comand, args, rawArgv) 并且提到它提示返回的是一个promise,所以后面还接着 .catch(err => {...}) ; run 方法里面是 return fn(args, rawArgv); 而 fn 就是 registerCommand (name, opts
目前市面上的不少翻译,一般场景比较简单,都是纯文本翻译(可能会包含换行\n之类的),但是最近遇到一个需求是要实现富文本里面的翻译,这里的翻译很大的概率会有格式,比如这种 我们需要带格式翻译,翻译成如下的效果 这种翻译跟大多数翻译一样,也需要一个预览的功能,便于用户预览翻译结果和微调翻译结果,然后点击替换就直接将翻译结果替换到富文本的内容里面,样式需要保留,比如上面的加粗。
原生的单选就是 <input type="radio"/> ,正常情况在 name 相同的单选之间只能选一个,如果只有一个单选框的情况下,一经选中是无法自己取消的,和checkbox不一样。但是有时我们的需求是需要有一个radio,并且还要支持能选中和取消的。 当radio的被选中的时候,其实它的 checked 属性是 true ,取消时为 false 。并且如
大家用 addEventListener 肯定也听过 removeAddeventListener ,但是不少朋友使用有误区。 事件的添加和移除 // 示例1 // 添加事件 document.addEventListener('click', (e) => { console.log('冒泡 点击', e) }); // 移除事
我们先写两 try catch ,因为我们顺便测试 catch 来捕获 try catch 的异常。 function try2() { try { console.log("try2"); } catch (e) { console.log("err2", e); } } function try1() { try
vuex 怎么单元测试,我们只能通过检验state的值是否符合预期来测试,所以,正常的套路应该是测试mutation,然后看看对应的state是否发生了符合预期的变化。没错。 mutation 怎么测 比如这种 SET_LIST(state, payload) { state.listData = payload; }, // test.spec.js des
网上搜很多vue多语言的,一般都是介绍vue-i18n怎么使用,当然这是不错的,但是我们如果只是讲这个的话,只是解决了静态文字的多语言化。 这一部分我们也简单讲一下 npm install vue-i18n --save 安装 // main.js import VueI18n from 'vue-i18n'; import messages from �
目前android Q的root貌似还没有搞定,还是老老实实先用android P吧 root的准备工作 解锁bootloader,步骤自行搜索 已经打过补丁的boot.img文件,目前有以下几个版本,自己对号入座,貌似3A和3A XL通用 PD2A.190115.029 | PD2A.190115.032 | PQ3B.190605.006 ADB M