利用echarts的option.json自动生成ECharts-PHP的property PHPDoc

Posted on 2017-03-23 18:19:37 | 5 comments | 3527℃ | PHP

最近一篇博客已经是几个月以前写的了,再次不忍直视 -_-|||

决定要把mongo的高级应用第二篇继续推后,先写一下这篇博文。

Echarts-PHP项目上线已经有些日子了,在未做任何推广的情况下,安装量在低速提升,截至到现在,下载量已经到17k+。也算有一个小的用户群体,那么一些优化建议也被反馈到这里。其中有一个是一直想做,但没有做的。

根源

在这个项目设计之初,就想要用property来做前端的json数据绑定。原因是,echarts各种属性更新很频繁,而用property可以完美...

mongo的findAndModify应用之实现原子锁

Posted on 2016-12-06 20:35:29 | 2 comments | 1873℃ | Mongo

打开自己的博客,发现已经1个多月没有更新博客了,不忍直视!-_-|||

决定下班后来一发!

通常们会用mongo的findAndModify来生成类似mysql的自增ID,例如


/**
 * Generate a increase id.
 * @author Hisune <hi@hisune.com>
 * @param string $name Key name.
 * @return int Increase id.
 */
public static function generateId($name)
{
    /* @var $variable \MongoCollection */
    // !!! 以下所有Collection::get君代表返回对应mong...

关于PHP的curl的ssl验证CURLOPT_SSL_VERIFYPEER及为什么需要验证ssl证书

Posted on 2016-10-28 13:09:40 | 0 comments | 2259℃ | PHP

序言

先来看几个PHP的curl设置参数的文档解释:

  • CURLOPT_SSL_VERIFYPEER:禁用后cURL将终止从服务端进行验证。使用CURLOPT_CAINFO选项设置证书使用CURLOPT_CAPATH选项设置证书目录 如果CURLOPT_SSL_VERIFYPEER(默认值为2)被启用,CURLOPT_SSL_VERIFYHOST需要被设置成TRUE否则设置为FALSE。
  • CURLOPT_SSL_VERIFYHOST:1 检查服务器SSL证书中是否存在一个公用名(common name)。译者注:公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。2 检查公用名是否存在,并且是否与提供的主机名匹配。
  • CURLOPT_CAINFO:一个保存着1个或多个用来让服务端验证的证书的文件...

Windows下的mongo启动/关闭vbs脚本

Posted on 2016-10-09 15:05:53 | 0 comments | 1026℃ | Mongo

上代码

很久以前写的一个vbs脚本,用来管理windows下的mongo开启和关闭,备忘顺便分享下来:


' 公用函数
Function Is_Runing(ProcessName)
    On Error Resume Next
        strComputer = "."
        Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
        Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name = '" & ProcessName & "'")
        I...

关于windows下npm的node_modules目录过长无法删除的问题

Posted on 2016-09-20 22:48:04 | 3 comments | 1267℃ | Javascript

序言

一个天坑,之前在用nwjs开发一个公司的项目的时候,发现有的人的电脑不兼容,无法正常打开应用,出现nwjs的默认页面,但有的电脑又没问题。后面发现是node_modules过长的原因,之所以会有的电脑没问题,是因为不同的人会把你的应用装到不同的地方,如果某个人的安装路径本身就比较长,那么恭喜你,你掉坑里了!

windows的目录长度

先来看一下这个windows的目录长度限制:

https://msdn.microsoft.com/en-us/library/aa365247.aspx

In the Windows API (with some exceptions discussed in the following paragraphs), the maximum length for a path is MAX_PATH, which...

有了http1.1的keeplive长连接后是否可以不需要websocket

Posted on 2016-09-13 10:52:23 | 0 comments | 1137℃ | 杂文

问题

有人问,http1.1里面已经有了keeplive,那么http1.1本身就是一个长连接,那么还要websocket干肾?

答案

答案当然是要的,主要原因有以下几点:

  1. 开销:http长连接的每次请求仍然需要发送头信息;而websocket仅需要在发起请求时发送头信息。
  2. 真正意义的长连接:http长连接仅仅是为了复用tcp连接,只是一种口头约定,服务端可以不遵守;而websocket是完全意义上的长连接。
  3. 是否平等:http长连接依旧无法摆脱一个request对应一个response的模式,且仅允许客户端往服务端发送request,所以对于实时通信的实现依旧只能是轮询;而websocket双方是对等的,可以相互发送消息,可以实现真正意义的实时通信。来啊,互相伤害吧!

开发人员工具合集HCT的新electron版出来了

Posted on 2016-08-26 22:26:10 | 0 comments | 1434℃ | Javascript

关于HCT

很久之前写过一个nwjs版的开发人员工具,这段时间用election重新写了一遍,并且加了很多新功能,感兴趣的欢迎下载。个人感觉还是比较好用的,基本web开发的常用工具都在里面了。

做这个工具的初衷是因为,每次需要查一些东西或用一些工具需要打开N个网站或页面,并且公司网络有时候并不是那么稳定,偶尔断网了,就坑爹了。所以做了这个离线的工具箱。

由于开发的时间比较短,代码可能还不太完善,欢迎敲砖,并且由于人太穷,买不起MAC,所以MAC版仅在卡得半死的虚拟机中做过简单测试,如果有bug欢迎提出。

用过electron后,发现比nw.js顺手太多,社区也非常活跃,整个生态也比nwjs好太多,但体积真的很大。由于人懒,直接修改的Electron DEMO项目,UI就搞定啦!

如果觉得还能用,那么欢迎贡献代码。

特性

  • 集成N种web开发人...

临时统计脚本耗时测试PHP vs NodeJS

Posted on 2016-08-17 10:36:23 | 2 comments | 1083℃ | Javascript

序言

由于前段时间需要写一个脚本统计一个日志里面的某个字段的值出现的次数,需要写一个脚本。一开始是使用php写的,写完后执行,发现实在是太慢了,不能忍,于是用nodejs写了一遍,对比测试后惊呆了。

配置

  • 总记录条数 29w 条
  • 文件大小 190MB
  • 系统 I5 win7
  • php版本 5.5.12
  • node版本 4.4.2

对比

php


$account = [];
$i = 0;
$started = time();

$handle = fopen("hour.log", "r");
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle, 4096);
        $array...

SockIO PPT, the programmer's PPT!支持远程控制的html ppt开源了

Posted on 2016-08-02 12:49:33 | 6 comments | 1487℃ | Javascript

关于SockIO PPT

https://hisune.com/view/42/sockio-ppt-remote-control-html-ppt

Online demo

有句话叫做,不会写PPT的程序猿不是一个好美工,那么究竟怎么样才能做一个高逼格的PPT呢?

为了做一个公司内部的PPT,花了几个小时写了个简单的html版的PPT,那么他有什么特性呢?

特性

  • 简单,常用PPT展示功能实现,包括翻页、点击显示、提示器。嗯,代码也很简单
  • 快捷...

谨慎使用MySQL5.7

Posted on 2016-07-29 12:47:30 | 0 comments | 1473℃ | Mysql

粗大事了

几个月前使用了MySQL的5.7版本,具体版本号是mysql5.7.10,用了几个月没问题。

突然有一天,某位同事告诉,后台数据有点异常。查了一下,惊呆了,果然有问题,并且是mysql查询语句(distinct)的结果有问题导致的。最直观的表现:


SELECT
    count(DISTINCT ooo)
FROM
    xxx
WHERE
    reserve = 1047
-- 结果 81915
SELECT
    count(*)
FROM
    (
        SELECT DISTINCT
            ooo
        FROM
            xxx
        WHERE...
UP