分类目录归档:笔记

PHP传入参数

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

<?php
    $args = getopt('a:b:');
    print_r($args);
?>

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

结果

Array
(
    [a] => miao
    [b] => 123
)

[PHP]禁止json_encode显式转换为UTF8编码

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

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

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

 json_encode(数组,JSON_UNESCAPED_UNICODE);

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

SSL不被浏览器信任

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

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

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

正则表达式匹配引号内内容

用正则匹配引号内容还是很常用的嘛,于是我来发一篇相关文章。也是因为我自己用到了,并自己写了个,所以来记录一下。

匹配所有的成对单双引号

/((?<!\\)['"`]).*?\1/g

匹配效果是:寻找一个没有被转义的单引号或双引号,然后匹配包括引号在内的内容,直到下一个对应的没有被转义的单引号或双引号,这样匹配可以不受单双引号嵌套的干扰。

如果只要引号内的内容,只要给.*?加上括号即可,只是这样似乎没法一次匹配所有的结果

/((?<!\\)['"`])(.*?)\1/

然后提取编号为2的结果即为引号里的内容

Canvas文字绘制性能测试

做了个canvas文字测试,看看效果如何。
由于代码中包含了图片的base64码所以放在最后了,测试结果如下:

//代码内容:一张写了5个蓝色喵的图片和5个无任何样式的喵字各绘制十万次
123.8950000006298	//图片
153.4990000000107	//文字
91.63100000114355	//图片
150.8400000002439	//文字
88.55799999946612	//图片
150.93399999932444	//文字
88.62000000044645	//图片
150.16500000092492	//文字
87.77499999996508	//图片
149.93399999912072	//文字
87.90600000065751	//图片
149.8909999991156	//文字
87.98000000024331 	//图片
65.1319999997213 	//文字

为了尽量准确一点,避免浏览器热身等原因我把测试放在循环里进行多次测试。
可见文字渲染确实是效率比较低的,不过这里还不是太明显。
这里的文字渲染还是无任何样式的,平常应用的时候不可能就这么用没样式的字,所以我还要再来一个有样式文字渲染测试。
继续阅读Canvas文字绘制性能测试

【复习】C++定义变量

好久没动C++了,几乎都给忘得差不多了,于是我来打一些复习笔记的说。

写了那么久的js都已经没有主函数的概念了。。。所以出现了函数到处定义,变量到处定义,企图动态修改类之类的事情,然后就是一堆错误信息<(。_。)>

首先从定义变量开始

//括号里代表写不写都一个意思
(signed) short (int) a;
(signed) int miao;
(signed) (long) int b;
(signed) long long (int) d;
unsigned short (int) c;
unsigned int;
unsigned (long) int d;
unsigned long long (int) bilibili;

float e;//-3.4e38~3.4e38
double f;//long double的默认形式 -1.7e308~1.7e308
(signed) char g;//-128~127(不同值代表不同符号)
unsigned char h;//0~255
bool i;//true/false

继续阅读【复习】C++定义变量

使用git备份网站

这两天我突然想备份一下网站,总是担心啥时候openshift会挂掉。

一开始我想直接把网站打包下载下来,但是现在我的网络太不争气了,下载只有10K/s的速度了。。。。这得下到什么时候(ーー;)
于是我就想把网站备份到在线服务上去,然后发现了各种备份wordpress的插件巴拉巴拉巴拉。。。。

但是感觉这样每次备份都要把整个网站打包发出去实在太伤身了啊,于是我就想到了用git来备份这个方法。。இ௰இ,这样只要朝备份服务器push改动的文件就行了,而且这样也方便在网站搬家的时候直接从备份拉取,免了上传下载的烦恼。

那么接下来就开始做吧!

1是设置git服务的教程,已经有了的跳到底下看2

继续阅读使用git备份网站

接触node.js有感

今天我出于好奇接触了一下node.js。
由于还有点js基础,看起来不是很费劲,先不说我学到了什么,我想说的是我发现了自己一直以来的错误观念。

原来我认为:访问一个url,它的地址就是对应的服务器路径。比如http:\\blog.luojia.me\1.html,这里1.html就是对应网站目录里的1.html。
但其实并不是,url应该当作一整个字符串来看而不是分成目录层级或文件,如何处理这个1.html文件的请求完全是由服务器程序说了算的。

也许和我有一样误解的人还没看懂是啥意思,那就举个例子:
我在用node.js启动一个最简单的hello world服务器时,访问了同目录下的其它文件,结果浏览器结果还是那个hello world页面,也就是服务器在不解析url的情况下,完全不可能访问到任何文件。这个问题自己尝试的时候比较好理解,但是就我这极渣的表达能力可能说不清楚。

总之就是说明了url路径和服务器路径并没有一定的相关关系,这也就是服务器路径重写的原理。

另外nodejs给了我一点惊奇,我原以为它类似于php需要个像apache或iis这样的服务器来运行,没想到它本身就可以做成服务端(虽然PHP似乎也有内置的服务器功能)。从编写代码层面来说,如果php是用钢筋混凝土在造房子,那nodejs就像在造钢筋混凝土材料,然后再搭房子。虽然当我看到连静态文件都得自己写代码路由的时候我有点想找小伙伴来一起惊呆,不过从零配件角度来看还是可以理解的。

再另外,每改一次代码我就得ctrl+c停掉服务器再启动真是太不科学的设计了吖,难道没有debug模式自动监视文件更改吗。(到底有没有我也不知道,有的话求方法)

函数指针利用

在C++里,变量有指针,比如int *a;之类的,指针的用处是很大的,可以让程序操作过程更加灵活。
我写这篇文章是为了记录刚刚自己无师自通的函数指针和它的用法。

一般的函数用法类似这样【只是举个例子我懒得写return了_( •́ ​ω •̀ 」∠)/_】

int a(){
	cout<<"这是a函数";
}
a();
//输出结果:这是a函数

继续阅读函数指针利用

禁止百度网页转码

现在进入移动设备时代以后,百度自然也会有相应的移动版百度,移动百度我用到今天最蛋疼的地方就是百度的网页转码,通常转码结果都是不能直视的,比如看不到代码,顺序混乱什么的。
所以建议禁止百度转码你的网站(每次都要我进入转码结果再去点查看原网页简直有种轰炸百度的冲动)

那么只要在你的网页head里加入一个meta就行了

然后按理说百度就不会转码你的网页了

在css中使用函数,减少js代码

博主昨天才发现原来css里也是有函数的,【为我以前浪费在写调整样式的js代码上的时间默哀

我现在知道的css函数有这么几个

attr()
calc()  /*opera不支持*/
counter()
cycle() /*支持情况不明*/  
max()   /*支持情况不明*/
min()   /*支持情况不明*/

个人认为里面最实用的就是calc

继续阅读在css中使用函数,减少js代码

Minecraft命令方块无法使用问题

最近搞MC服的时候碰到命令方块没办法用的问题,于是整理了一下放到这里

首先要使用命令方块要记得在server.properties里把enable-command-block=false改成enable-command-block=true

我碰到了这样的问题

上面写着”必须为在创造模式的管理员”
继续阅读Minecraft命令方块无法使用问题

单片机的第二次尝试

首先感谢昨[jin]天凌晨金也君一直到3点多的热心帮助,我终于让我的单片机可以跑了起来。

昨晚经过我和金也一起折腾了好久,最后发现了问题的关键,那就是我的单片机实际上没有内置晶振,所以要外接一个晶振才可以让它开始工作,然后经过我又好好研究了一下,把它接成这个样子

多霸气的样子啊,灯泡会轮流着组队亮,晶振是从一个旧显卡上烙下来的间接接在单片机的18、19脚上。

在这里修正一下上一篇的错误,供电为5V,而且资料里的说明也有错误,这不是内置振荡器的单片机。

话说我把它开了一上午了怎么一点热量也没有。。。没有满频跑起来吗?

第一次的单片机尝试

其实单片机什么的我什么都不知道,写到这里的时候我还不知道它怎么通电【这是一篇边写边搞的文章,你看到的这篇文章可能是我写了几个星期的结果】。

那么我也是从一些书里知道了一些弄单片机需要的材料,比如单片机、什么板、什么线包括灯泡一起从坑爹网上买来了。从管子[管子是什么?点这里]里拉出单片机,然后可以看到它上面有三个很大的鸟语字母,是STC,据说是国货来着,具体什么我也不清楚。
如图

然后后面跟着三排很不清楚的字。
第一排是89C52RC,目测是型号。
第二排是401-PDIP40,这个就不知道是什么了。
第三排是1309H4V095.90C,这个也不知道是啥。
继续阅读第一次的单片机尝试