nodejs中执行系统命令立即输出结果的方法

Posted on 2014-10-17 10:35:29 | 2 comments | 7195℃ | Javascript

前言

最近开始学习nodejs,node真是一门神奇的语言,各种回调

在用node-webkit写应用的时候有写到这样一个小工具,调用系统的ping,tracert命令来调试网络。当时用的是exec来返回命令结果给前端,但他的stdout需要在整个命令执行完成后才返回,这样对tracert这种长时间才有最终返回结果的命令来说,用户体验简直差到极致,因为需要等exec返回stdout后才能往页面写内容。

解决

child_process.spawn(command, [args], [options])

最终解决了的这个问题。


var util  = require('util'),
    spawn = require('child_process').spawn,...

nodejs中md5,sha1,base64编码中文不对的问题

Posted on 2014-10-16 04:39:04 | 0 comments | 3844℃ | Javascript

前言

昨天寒风在用node-webkit写一个小应用的时候,发现这样一个问题,nodejs的utility对页面用户输入的中文进行md5、sha1加密和base64编码解码时结果不对。

在确认用户输入无误且左右空格都去除的情况下,怀疑是编码问题。但查看文件和页面配置都是utf8的编码,于是有点没有头绪,但还是觉得是编码方面的问题,因为英文是正确的。

解答

一直以来,对编码方面的东西了解不是很深入,后面谷歌了很久,网上说javascript对中文的处理是utf16,而不是utf8,这个有点意外,于是找到这两个函数:utf16to8,utf16to8。

将用户输入这样处理:

var input = utf16to8($('#decode-input').val());

然后用util...

让Photoshop支持ico格式文件

Posted on 2014-09-04 13:12:42 | 0 comments | 3379℃ | 杂文

在上一篇博文里面说过,要做一个favicon.ico。但又不想借助其他网上的各种小软件,于是想找一种Photoshop的解决方案。

photoshop默认是不支持ico格式的文件编辑与保存的,通常设计和修改ico文件需要借助其他软件。但有一款ps插件可以让其支持ico格式文件编辑。软件下载地址:

http://www.telegraphics.com.au/sw/icoformat.zh.html

注意需根据自己的ps版本下载。亲测,windows的x64版本也是支持cs6的。

另外,新建文件是,最好新建64 X 64或32 X 32像素的文件,由于标准ico文件是32 X 32或16 X 16像素,如果新建文件像素过高,保存文件时将不会出现ico格式的选项!

浏览器的隐藏请求favicon.ico

Posted on 2014-09-03 05:08:43 | 2 comments | 5175℃ | 杂文

前言

今天发现hisune.com的错误日志文件很大,以为哪里代码出问题了,赶紧down下来看了一下,都是控制器未找到的错误。

并且发现是Controller\Faviconico未找到的错误,刚看这个名字有点奇怪,为啥会有这个请求?后面仔细一看,这不就是favicon.ico吗?

来源

开始怀疑是cnzz统计数据的时候抓了网站的ico,但后面一想,貌似浏览器会去抓这个东东用来显示在浏览器里面,那么真相大白了!

打开chrome的开发工具发现并没有hisune.com/favicon.ico的这条请求:

image

这也是应该的,这不算一条用户的正常请求。

捉奸

既然开发工具里面...

php的异步http请求解决方案

Posted on 2014-09-02 14:41:14 | 0 comments | 3249℃ | PHP

前戏

如果想用php实现一个http异步请求,是否能做到呢?

正题

答案是肯定的,以下是的socket解决方案:


function makeRequestAsync($url, $params = array(), $type='POST')
{
    $query_string = '';
    if(is_array($params) && !empty($params))
        $query_string = http_build_query($params);
    elseif(is_string($params))
        $query_string = $params;

    $type = s...

bootstrap插件bootbox参数和自定义弹出框宽度设置

Posted on 2014-08-31 09:52:56 | 10 comments | 18258℃ | Javascript

关于bootbox

插件官方地址:http://bootboxjs.com/

参数说明

以下是翻译的常用参数和方法使用说明:

alert

bootbox.alert("Hello world!", function() {});

dialog


bootbox.dialog({
  // dialog的内容
  message: "I am a custom dialog",

  // dialog的标题
  title: "Custom title",

  // 退出dialog时的回调函数,包括用户使用ESC键及点击关闭
  onEscape: function() {},

  // 是否显示此dialog...

php5.5新特性之yield性能测试

Posted on 2014-08-18 14:09:49 | 0 comments | 3504℃ | PHP

前言

最近工作有点忙,好不容易抽空更下博客。

yield是php5.5新出来的一个关键字,它可以让你无需将一个生成的数组赋值后操作,而是仅返回一个数组元素并将指针next,这样可以很大程度上节省你的内存。

性能测试

那么yield的性能到底如何呢?由于项目中有用到这个关键字,所以这里测试了一下,测试环境apache+php5.5.12,本机windows环境。

先来看普通的方法:

普通模式


// 需要测试的核心函数
function test()
{
    $array = array();
    for($i = 0; $i < 10000; $i++){
        $array[] = 'item_' . $i...

mysql大数据测试-批量生成测试数据

Posted on 2014-08-08 04:21:39 | 2 comments | 5448℃ | Mysql

前言

如果你想在一个项目的研发阶段测试一个mysql表的分区和索引是否合理,但又没有生产环境中的数据进行测试怎么办呢?最近遇到了这个问题,这个时候可以手动生成一些数据来测试。

当然,你可以写个php程序用while去循环插入mysql,但这种方式效率不是很高,们还有更好的办法,那就是mysql的存储过程。

存储过程

下面是的一个生成测试数据的一个mysql函数,适当进行修改,可以用在任意表结构中:


delimiter $$
create procedure insert_test(in counter integer, in time_stamp integer)
  begin
    while...

ueditor默认图片上传目录问题

Posted on 2014-08-05 06:45:44 | 0 comments | 4012℃ | PHP

前言

ueditor默认图片上传目录是根目录的/ueditor/php/upload/,有一个不好的地方就是,如果你的站点在子目录里面,并且是做了rewrite的那就有点坑了,会出现图片上传成功,但前端无法显示图片的情况,原因就是路径问题。

例如,的本地环境,站点目录是/hisune.com/public/这个,但做了rewrite,通过http://127.0.0.1访问的是http://127.0.0.1/hisune.com/public/这个目录。

这个时候ueditor会上传文件到/而不是/hisune.com/public/,而后端返回给前端的url也为根目录/,rewrite会将根目录/的请求重定向到/hisune.com/public/,实际上这个目录没有这个上传的图片,这样就导致前端页面无法显示。这里[我]...

PhpStorm7.1.3 + xDebug开启断点调试

Posted on 2014-08-04 10:39:16 | 0 comments | 3318℃ | PHP

前言

网上的phpstorm+xdebug断点调试教程都已经比较老了,phpstorm还是2.0的版本,这里介绍一下最新版的phpstorm7.1.3的断点调试教程。

检查xdebug扩展

配置phpstorm之前先确保已经安装好了xdebug扩展,并且在php.ini里面配置好了:


xdebug.remote_enable = on
```bash

## 配置phpstorm
接下来看phpstorm的配置,以下配置为最小化配置,和最简单的调试方法,很多默认参数可自行设置:

1. File -> Settings -> PHP -> Servers 点+号 新增一个server,填写右侧的host,[我](https://hisune.com)这里本机填写127.0.0.1
2. R...
UP