前不久我买了一台新电脑,原打算给孩子用,于是有过一段时间我经常和她视频教她用电脑。

没多久,windows系统就彻底打破了我“远程视频教用电脑”的幻想。

我不是百分百确定只是windows系统的原因,亦或有联想笔记本的加成。因为路由器和笔记本在不同的卧室,所以笔记本wifi很弱——这让我很无语,笔记本的WIFI信号怎么也该比手机强啊?但答案是否定的

后来又出了个怪问题:打开wifi列表,里面空空如也。首先当然使用“网络”里面的疑难解答尝试解决问题,不出所料毫无作用。当时我是没想明白,后来我弟去看,才知道是因为系统服务里一个WIFI的基础服务没有启动,启动了就能看到WIFI列表了

当时我真想骂人(现在想起来还是想骂)!

首先WIFI对笔记本来说可以是最重要的功能了,买回来的时候,连接WIFI是没问题的,怎么用着用着连WIFI列表都显示不出来呢?

其次,基础服务没启动导致看不到WIFI列表,你windows系统能不能显示个提示啊?没提示,好吧,那我疑难解答,应该很容易就可以发现这个问题啊?你解答了个P啊

再次,我很好奇为什么那个基础服务会没启动(因为最开始是好的),或者怎么会自己就关闭了呢?那次我弟搞好之后,没多久又是老样子,我通过视频指挥了一下孩子,不一会就果断放弃。现在电脑放那儿吃灰

说到交互,我又想起windows 10打开电脑第一件事:登录,这一块简直劝退。

我有一台笔记本支持指纹登陆,指纹登陆有个通病:时灵时不灵。不灵的时候还分两种情况,一种是没识别到指纹,一种是指纹不对;如果你尝试几十次,就会提示你用其他方式(比如PIN)登录。

问题来了:如果我看到提示说指纹不对,那我想换成PIN登录,要怎么操作?答案是,用鼠标点一下屏幕,在显示的登录选项里点PIN,然后输入pin

之所以强调鼠标,是因为在上面的情况下,按键盘没有任何反应。我想要那种既然你提示指纹不对那我按下任意键你就给我显示输入框让我用pin登录的正常交互完全没有!

很多时候没插鼠标,那抱歉,你就得用触摸板操作;登录选项那几个选项(指纹,密码,PIN)还特小,而且只有图形,需要鼠标指上去才显示具体文字

另外还有,就是没识别到指纹的时候,我一直尝试,它就一直提示,可以提示几十次。何必呢?提示几次不行就显示出其他登录选项又咋了?而且你可以显示其他登录选项并且还保持指纹识别啊

更奇葩的是,有时候尝试几次指纹,没通过的话按下键盘,可以直接显示PIN登录,有时候他妈的又不行,非要你用鼠标点一下桌面,然后从登录选项里找。

windows 10想把登录界面玩出花来,比如自动更新的背景图,但我觉得基础的交互更应该优先做好。

不过,windows 10的系统缺点数不胜数,我有点强人所难了

今天碰到将字符串拆分成数组进行操作的情况,发现如果判断下字符串里有没有需要拆分的特定字符,就可以省下拆分的操作。理所当然用了indexOf。

Javascript一直在更新,比如字符串就有了一个includes方法用来判断是否包含某子串。includes方法用起来要比indexOf简洁。

然后如果要判断一个字符串是否包含好几个不同的子串,自然而然会想到正则。正则在这种情况下是代码最少的,比如:

1
/o|u|l/i.test('Hello world')
,甚至可以忽略大小写

google了一下,发现已经有相关的bench测试了:http://jsbench.github.io/#a4612afd0cd26e911ee8

可以发现indexOf比其余方式也就快个几十上百倍。当然,大家都很快,只是indexOf最快

如果考虑到判断多个子串的情况,我们可以把以上bench里的代码修改一下,把正则改复杂,然后indexOf改成多个,再次运行,你会发现:差距更大了

简单地说,就是复杂的正则,意味着更复杂的处理逻辑,效率也呈几何下降;多个indexOf效率下降很少

当然,即使最慢的正则,也足够平常使用了。不过要注意,避免用在循环里,以及缓存正则不要每次都声明。要考虑高效的话,indexOf吊打其余的,但是如果要写好多个indexOf也让人有点烦,有需要的话可以自己造个函数

本文属于《Javascript基础纪要

今天在看一个模板引擎的源码里,发现一个函数:

1
2
3
4
5
function regexpLiteral(source) {
        return source.replace(/[\^\[\]\$\(\)\{\}\?\*\.\+]/g, function (c) {
            return '\' + c;
        });
    }

这函数本来没有问题。但在用于模板引擎中,在解析模板语法的过程中,可能大量调用,此时就会有一个潜在问题——或者说,可以优化之处:

函数中给replace传入了一个正则表达式,是直接使用正则表达式字面量传入的,而这实际上相当于,每次执行这个函数,都会创建一个正则表达式。继续阅读

今天是周六,而我还在上班。国庆前夕公司突然改制,提出大小周上班(即双周周六上班),而今天就是国庆来后的第一个大周,恰好又赶上国庆来的连续7天班,所以个人的心情好不了。

这也是个人对互联网寒冬最直接的体验了。

本周四的时候,陪舅妈去把房子买了。舅妈来成都买房,没有靠得住的亲戚在这边,于是整个看房到买房的阶段我都有参与,就在这里记录一下吧,但我对某些事情不发表评论。

舅妈是国庆前来的,国庆假间我们陪她看了几天的房子。不得不说舅妈回来得不是时候,正赶上10.1黄金周,且又正是回成人口炒房的高峰期,我们看了几个区域,最后只有选双流,因为那边位置不算太远而最便宜。

节后我上班了,我表妹陪舅妈又看了两天。我们的意思就是先不买了,但舅妈应该是觉得回都回来了,不买就又出去打工,太不划算,最终决定买了。但这次要买的,比之前看中的同样条件的一套房,多了一万。

而且要去房东上班的地方签合同。

由于年轻人都在上班,要签合同就得请假,但只有我与我弟买过房,最终决定由我陪舅妈去。继续阅读

是中文的哟。https://angular.cn/docs/ts/latest/guide/webpack.html

虽说是入门文章,但我觉得我需要用的都说到了。感觉比官方文档好太多。

讽刺的是,是Google写的。这些大公司也挺奇特,生产工具的写个文档超复杂;用工具的完全有能力自己写个,却用了别人的,并写了一篇别人工具的教程。

看这篇文章需忍受将bundler翻译成”包儿”的别扭感。

注意,是相同,不是相等。

比如:

1
2
3
<div>This is the first element.</div>
<div>This is the second element.</div>
<div>This is the first element.</div>

其中第1个div与第3个div明显完全相同,但用==或===判断他们时,永远会得到false。

判断两个DOM节点相同的需求在哪里呢?最近React不是很热吗,他提出了“虚拟DOM”的概念,其中提到,他们会判断虚拟dom与真实dom,并只更新需要更新的部分,这是一种需求;

而平时我们自己写JS时,比如你用各种办法生成了一段html,想用他替换已存在的一个dom节点,不过如果此html与现存dom节点本来就是一样的,那不管不顾的更新dom就会造成性能浪费。

此时你可以用一个临时节点(不用添加到document里都行),将你的html赋进去,然后与现存的dom节点对比,如果有不同,再更新(或做其他你想做的)。

Node.isEqualNode()

继续阅读

网上有不少如何使用七牛加速wordpress的教程,之前我一直觉得应该很难很繁琐,所以没尝试过。不过老婆总是觉得她的网站很慢让我想办法,迫不得已研究了一下,发现比想像中要简单些。

我参考的主要有两篇文章:

这是不使用插件的: http://cuiqingcai.com/357.html

这是使用我爱水煮鱼提供的七牛云存储插件的: http://blog.wpjam.com/project/wpjam-qiniutek/

本站使用的是无插件的办法,因为本站恰好也用了wp-super-cache。我老婆的站则使用了插件。目前不论是我的站还是她的站,速度都有很明显的提升。

使用插件的情况下,配置相对要简单些。

不论是否启用插件,都要使用七牛云自身的“镜像存储”功能。具体请参考上面两篇文章。

今天把系统升级到了Win10,为什么呢?因为原来的win7安虚拟机总是有各种各样的问题。。。

于是今天特地升级到win10,现在已经安装好了虚拟机,且安装好了Ubuntu了。正式开启Linux学习之旅!

第一个要安装的,就是node.js了,我cd到根目录,居然无法wget,一想觉得应该是我不该切换到根目录的,于是我切换到home/user下,终于可以wget了。

后续安装教程请在网上搜索吧,我也要开始了!

今天在图灵社区发现一本书,《JavaScript设计模式与开发实践》,有意购买,网页上也就有几个主要图书电商网站的购买链接,比如当当,京东,亚马逊等,我打开了当当与亚马逊,居然发现亚马逊的价格超便宜!

一本原价也50多(本身也不算贵)的书,亚马逊居然标价39.5,相当于7-8折吧。

amazon

当当标价51.4.不知道是亚马逊正在搞活动还是咋的。

可以去看看,过期不候。JavaScript设计模式与开发实践 当然,如果价格比39.5高了,大家可以再等等。

另外我发现,当当的网页变漂亮了。。看来我已经好久没买过书了,不过亚马逊的页面还是一如继往

问题发生在我帮别人远程安wordpress的时候。

通常是输入数据库相关信息后,点下一步,就报一片英语错误,最显眼的是:Internal Server Error,以及让你联系管理员之类的(我就是管理员,靠!)

为了解决这个问题,我用过 https://www.aliyun.com/zixun/content/3_12_194015.html 里说的办法(也是别人转到阿里云上的),好不容易找到。解决办法简单的说是改WP的文件:wp-includes/class-http.php。

改了后,可以安装了,结果又有问题:无法在线安装WP插件。进入安装插件页面,本来会显示WP插件推荐,但实际上却报:发生意外错误,可能是wordpress.org。。。

今天我终于把这个错误与前面改掉的文件联系起来了,于是我改回原样传上去,好吧,又报Internal Server Error了,网站直接进不去了。

气得我马上填了个阿里云的工单,因为这是我第2次重装WP了,还是故意找的较低的版本。

刚发去就有人回了,让我在空间管理后台切换php版本至5.3以上

就此问题解决。也不报错了,插件也能正常安了。

虽然对阿里云处理工单的速度挺满意,但还是很好奇为啥aliyun默认的PHP版本不能适配wordpress较新的版本(最新都4.4了,我用4.0安也安不起)

完毕