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

Posted on 2016-08-02 12:49:33 | 6 comments | 3747℃ | 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 | 3740℃ | 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...

composer用不了怎么办?npm用不了怎么办?

Posted on 2016-07-16 13:47:53 | 9 comments | 508285℃ | PHP

问题来了

image

遇到这样的情况怎么办?公司的网络是国外网站都走翻墙的,家庭的网络只针对gfwlist做了处理,compser和npm用不了了怎么办?

看看访问了哪些域名

composer

抓了个包瞄了瞄:

  • composer:
  • packagist.com
  • cacert.digicert.com
  • api.github.com
  • codeload.github.com

把这些加入到自定义的gfwlist里面,完美解决。

npm

  • registry.npmjs.org

理论上来说npm只需要加入上面这个域名。

汇总

如果是github...

说一下nwjs开发中遇到的几个坑

Posted on 2016-05-07 19:44:45 | 0 comments | 3449℃ | Javascript

序言

最近人变懒了,很久没有更新博客了,决定趁周末来一发!

公司要开发一个PC跨平台工具,参考了electron、nwjs、有道hex。

其中,electron虽然成熟,已经开发出的成功产品也一大堆,包括微软的VSC,但他不支持xp,但开发的工具面向的使用对象是国内用户,所以排除;

有道hex很久没维护了,且开发出的成熟产品基本没有,也排除。

剩下就是nwjs了,其实nwjs几年前就使用过,当时名字还叫node-webkit,还开发过一个开发人员小工具:https://github.com/hisune/hisune-coder-tools,但这次使用nwjs还是遇到了一些坑,下面[我](https://hisun...

Echarts图表的php库开源了

Posted on 2015-07-06 20:00:42 | 25 comments | 15446℃ | PHP

关于Echarts-PHP

Echarts-PHP 是一个对echarts js封装的PHP库。

安装方法

composer require "hisune/echarts-php"

特性

Echarts-PHP使用PHP的property来绑定echarts js的options,同时支持所有options的IDE代码提示,使用非常方便。

所有IDE自动提示的PHPDoc都由脚本自动生成,因此当echarts js的options的属性有变动时,PHPDoc的更新变得异常简单。

们可以通过直接对property赋值来指定options:


// The most simple exampleuse Hisune\EchartsPHP\EChar...

一个简单的websocket协议的客户端服务端nodejs实现

Posted on 2015-05-28 18:32:54 | 3 comments | 3832℃ | Javascript

协议内容

http://chenjianlong.gitbooks.io/rfc-6455-websocket-protocol-in-chinese/content/index.html

文档最重要,一开始,直接过一遍文档再说。

实现协议就以下几点:

  • 握手
  • 获取数据内容
  • 发送消息

关于握手

  • 服务端获取到Sec-WebSocket-Key
  • 将这个key与字符串258EAFA5-E914-47DA-95CA-C5AB0DC85B11相连
  • 对新的字符串通过sha1散列算法进行计算
  • base64编码
  • 写入"Sec-WebSocket-Accept"响应给客户端
  • 完成握手

// 获取响应string
exports.getHandshake = function(header)
{...

Mongodb logs日志含义说明

Posted on 2015-05-13 11:24:18 | 0 comments | 4757℃ | Mongo

关于mongodb的日志含义,中文资料没有,只好自己动手了,下面是的总结,拿去不谢!

ntoreturn:1 keyUpdates:0 numYields: 1 locks(micros) r:1503023 reslen:48 952ms

ntoreturn:1   请求返回的文档个数
keyUpdates:0  请求导致的索引更新个数
numYields:1   请求产生的锁的次数
locks(micros) r:1503023 时间单位:微妙,数据库读取的锁时间,其他锁:
R - 全局读锁
W - 全局写锁
r - 数据库读锁
w - 数据库写锁
reslen:48  长度单位bytes,返回的结果长度
952ms     执行这条语句的时间,默认100毫秒mongo...

jetbrains全系列产品PyCharm,PhpStorm,RubyMine,WebStorm,IntelliJ全部版本key序列号

Posted on 2015-04-04 21:41:35 | 0 comments | 2826℃ | 杂文

有经济能力的还是请购买正版吧!jetbrains的系列产品用起来还是很爽的


IntelliJ
username: hisune.com
key: 31028-IGSTY-JLOOW-R5TZR-BNGV6-MLTC5

PyCharm
username: hisune.com
key:
5845-D50006T
000000HBB4G5C062tGsehilSVS6iuR
eX0ct3i3mFsGTO43ywXUt3FDHY0I8l
4x7VTcvaiIg1Deo060TffcYxDbfgrL

PhpStorm
username: hisune.com
key:
8786-D26773T
00001D7HexFLZjnKFxldTrfuchaS"X
mstY"oXn3Esm2XbBCcduaNnVBgxF6"
m"R8HRwYr8Q...

关于yii2-grid组件的date-range过滤无效的问题及解决办法

Posted on 2015-01-17 23:17:34 | 0 comments | 3232℃ | PHP

前言

最近实在是工作有点忙,都抽不出来时间好好的玩耍,感觉压力好大啊!一转眼,又已经10天没有更新博客了,其实早就想写了,那么今天就抽出时间来写一下吧!。

今天要介绍的是在项目中遇到过的一个问题,怎么在yii2里面的gridview加入date-range过滤搜索框。

通过查看yii2的官方文档可以发现yii2的gridview的过滤方式很有限,但他官方有个yii2-grid组件的介绍,看了下,这个组件非常不错,是一个开挂名族程序猿写的。

试用后发现了一个问题:yii2-grid的date-range在apply一个新日期范围后不会触发yii2的数据搜索。

原因是由于的val()赋值操作是无法对元素触发change()事件...

关于php的获取客户端IP和伪造客户端IP的若干事

Posted on 2015-01-07 23:01:22 | 1 comments | 2414℃ | PHP

前言

最近在工作中做一个投票功能被刷票了。

虽然这个刷票的bug不是今天文中要说的这个,但这个问题却是在后续发现的bug,并且很多网上的方法及开源框架中都有这个问题存在,鉴于问题的普遍性,这里有必要说一下。

错误姿势

以下是一个随处可见的获取客户端ip的php函数:


function ip()
{
    if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
        $ip = getenv('HTTP_CLIENT_IP');
    } elseif (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(get...
UP