分类目录归档:笔记

【Javascript】获取触发message事件的源iframe

翻了翻message事件的属性,没找到可以直接获取事件源iframe的属性,想想也没毛病,毕竟事件也可以是其它窗口post过来的。于是想了个曲线方法。

先让发送源获取焦点,然后获取焦点元素。

如果不想影响焦点的话,可以遍历一遍所有的iframe

 

【Javascript】base32编解码

用javascript写了个base32的编解码函数

【node】拦截process.stdout和process.stderr

由于解决这个问题花了我一些时间,所以记录一下说不定可以帮到其他人。

process.stdout是一个getter,所以我们不能用普通的替换来换掉process.stdout来拦截写入它的数据。同时,process.stdout是一个Writable Stream,所以也不能简单地直接从它里面获取写入的数据。

 

一开始我花了不少时间来研究怎么可以从这个Writable Stream里读出数据,但是这似乎太麻烦了,然后我甚至想到了利用child process来拦截数据。最后发现其实很简单,我们只要重新定义这个Getter就可以了。

这样我们就成功拦截到标准输出了,要注意,这段代码必须放在有任何输出之前,一旦在之前有了内容输出,它就没用了。

然后我们就可以自己决定怎么处理stdout了比如:

 

 

同理,process.stderr也可以这样拦截

【Javascript】清空数组

上面的清空方式虽然非常不合字面含义,不过还确实清空了。。。

 

 

 

这方法倒是符合字面含义了,不过这个操作会返回整个一个新的数组,所以可能性能不如上面的一种方法。

【Javascript】不要试图给字符串添加属性

虽然我以前就吃过一次这个亏,不过昨天又犯这错误了。

虽然js里万物皆对象,不过也不是啥对象都可以加属性的,比如字符串。

所以字符串是没法添加属性的,同理,数字、Boolean也不能添加属性。

我发现它们都是传值型变量诶。因为本体只有一个值,所以不能添加属性吗。

PHP传入参数

今天我才知道php脚本用php直接执行的时候是可以传入参数的,这样本地共享session就不需要建个服务器再访问啊什么的。
这里放个例子
文件a.php

执行 php a.php -a miao -b 123

结果

让Windows在高DPI显示屏上正确显示

我在macbook上虚拟机里装了个Win10,装好了之后发现,一切都是那么的小,小的几乎看不清。因为这个macbook是Retina屏的,所以dpi比较高,于是东西都变小了。

我的标题里不直接写win10是因为我也不知道自定义项目大小是从哪个系统开始有的,没有这个功能的系统很简单,就是把分辨率按比例调低即可。

继续阅读让Windows在高DPI显示屏上正确显示

【Javascript】数字添加千分位符函数

这种函数虽然百度一大把,不过我还是准备自己用很简单的代码写一个。现在访客暴涨然后我发现了在线人数显示功能好多bug,修了一下午。这个函数也是为此功能而写的。

示例

 

【node】批量重命名音乐专辑内音乐文件名

这只是个便签博,方便以后再拿出来用。。

刚刚下了个LL大法的全套音乐专辑,(原谅我又盗版了),然后里面每个CD的音乐都是一如既往有编号的,不过我们放进自己播放列表的话并不需要这些编号,所以我要把它们去掉。

 

作为一个程序员,怎么能一个个手动改名呢,这简直是耻辱!

继续阅读【node】批量重命名音乐专辑内音乐文件名

node.js isFile

昨天被nodejs的 isfile 坑了一下午。

本来我是这么用的

结果没有任何返回,也没有报错。于是我就研究了一下午是不是相对路径问题,是不是系统问题什么的。。。

为什么我要这么写呢,因为API文档很简单就带过了这个内容,连个例子也没有:


 

Class: fs.Stats

fs.stat() , fs.lstat()  和 fs.fstat()  以及他们对应的同步版本返回的对象。

  • (仅在与 一起使用时合法)

由于看到了 class fs.Stats ,我第一反应就是先 new 一个出来,结果就悲剧了。后来经过不断探索,勇于发现,昂头奋进,披荆斩棘,终于从废渣信息爆满的百度里找到了 isFile 的正确用法,是这样: 


isDirectory() 和 isFile() 同理

【PHP】禁止json_encode显式转换为UTF8编码

我今天发现弹幕播放器载入的弹幕虽然不多,但是传回的弹幕json却很大,于是我想起了一个鬼故事[json_encode对[非正常字符]的显式utf8转换],所以很多弹幕数据会被转换成字符形式的utf8码『\uxxxx』,虽然英文字符和中文字符实际上占用的大小不一样,不过把文字显式转换成utf8码仍然是额外消耗空间的,json完全可以保留原本的文字进行json格式化。

那么现在问题来了,会画画的妹纸好还是会唱歌的妹纸好呢
那么现在问题来了,json是否可以直接取消utf8转换呢?如果可以那真是极好,要是不可以的话还得在转换以后正则替换掉所有utf8码。

还好json_encode的第二个设置参数可以设置

这样就可以取消utf8显式转换了,某视频的弹幕返回的json也从90+K变成了50+K。

windows下创建.htaccess文件

一定有不少人尝试过在win下建立一个.htaccess文件,一般都是先右键新建一个文本文档,然后把它的名字改成.htaccess,然后windows会告诉你一定要输入文件名。(虽然不知道windows为什么要这样做不过看起来好像很高级的样子呢!

那怎么办呢?去找一个现成的.htaccess文件复制过来吗?

当然不是咯,实际上windows也可以命名点点开头的文件,比如你用cmd重命名文件就不会有这样的提示。

不过先创建一个文件再重命名还是有点繁琐,不如直接创建一个.htaccess文件。虽然cmd里没有创建空文件的命令,不过利用输出重定向,很多没有输出内容的命令也是可以用来创建空文件的。

首先在要创建的目录按住shift并右键,点“在此处打开命令窗口”,跳出来一个cmd窗口,然后输入

一个.htaccess文件就出来了, cls 是清空控制台内容的命令,此命令没有输出,所以重定向到.htaccess文件就创建了一个空文件。

更新:有些情况下cls创建的不是空文件,请尝试以下方法。

同理,其他无输出命令也可以创建各种在图形模式下无法创建的文件。比如

以及类似命令。

 

请尝试你的系统是否支持touch命令

如果你的系统支持touch命令,那么一切烦恼就都没有了。直接在控制台输入 touch .htaccess 即可创建一个空的文件

SSL不被浏览器信任

上周末我给luojia.me的几个子域名都配置了https,本吊丝果断使用免费证书。

但是配置的时候发现了一个奇怪的问题,就是我的免费证书在Android里用啥浏览器都不被信任,chrome告诉我系统不信任这个证书(所以这篇文章的标题又起错了呢づ ω ど),难道是Android特别鄙视免费证书吗。
后来觉得不怎么可能,抱着死也要用免费证书的心态,我开始使劲解剖搜索引擎,终于,最后在一篇和这个问题没什么关系的文章里看到了一点思路。(文章地址已经不知道了。。)

文章里说网上的ssl配置教程各种复制粘贴,各种缺少步骤啥的,于是写了个超完整的配置说明。
我在那里面发现他的配置里有3个文件路径,但是我只有两个。那么问题可能就出在这里了,我从沃通获取的压缩包里确实也有3个文件,不过根据网上的神教程,我只配置了两个文件
继续阅读SSL不被浏览器信任

【PHP】清理js文件

花了点时间好好做了个可以清理js文件的php脚本,php确实是个蛋疼的东西,老是出点奇怪的特性。

这个脚本的功能是去掉js文件里的无用部分,输出一个清洁的js文件(当然我不保证这个输出的文件绝对没问题,至少把我的COL放进去输出的文件没问题)

原理:
由于涉及到清理注释,又不能把引号误删,而且 " ' // /*这四个关键符号是同样优先级的,所以谁先出现,谁的优先级就会高(也就是其他符号都会进入这个符号的作用域里)

比如 " 先出现了,后面的 ' // /*都会被包括进这个字符串里,同样如果 /*先出现了后面的内容都会变成注释,除非碰到 */ 。

所以我用了个循环来根据先出现的符号进行相应操作。碰到引号就把字符串整个提出来放个锚,即可保持字符串内容,然后就不用再担心字符串的问题了。

继续阅读【PHP】清理js文件