CI框架配置socketLog 远程调试

作者:Matrix 发布时间:2017年4月28日星期五 分类:

github: https://github.com/luofei614/socketLog

socketLog是开发api的debug神器,可以在完全不影响客户端调用的时候debug数据,非常NICE.

添加Slog.php文件

下载github项目中的Slog.php到libraries目录

common_helper.php全局函数中添加代码

/**
 * CI框架 socketLog 远程调试
 *
 * 使用:
 * slog($this->db->last_query());
 *
 * chrome安装相关插件之后控制台就能看到相关数据
 *
 * @URL https://github.com/luofei614/SocketLog
 */
use think\org\Slog;
if (!function_exists('slog')) {
    function slog($log, $type = 'log', $css = '')
    {
        require_once APPPATH . 'libraries' . DIRECTORY_SEPARATOR . 'Slog.php'; #注意这里的载入路径,请确保是上一步的操作位置
        if (is_string($type)) {
            $type = preg_replace_callback('/_([a-zA-Z])/', create_function('$matches', 'return strtoupper($matches[1]);'), $type);
            if (method_exists('\think\org\Slog', $type) || in_array($type, Slog::$log_types)) {
                return call_user_func(array('\think\org\Slog', $type), $log, $css);
            }
        }
        if (is_object($type) && 'mysqli' == get_class($type)) {
            return Slog::mysqlilog($log, $type);
        }
        if (is_resource($type) && ('mysql link' == get_resource_type($type) || 'mysql link persistent' == get_resource_type($type))) {
            return Slog::mysqllog($log, $type);
        }
        if (is_object($type) && 'PDO' == get_class($type)) {
            return Slog::pdolog($log, $type);
        }
        throw new Exception($type . ' is not SocketLog method');
    }

    //配置参数加载
    slog(array(
        'enable'=>true,//是否打印日志的开关
        'host'=>'slog.thinkphp.cn',//websocket服务器地址,默认localhost
        'optimize'=>true,//是否显示利于优化的参数,如果运行时间,消耗内存等,默认为false
        'show_included_files'=>true,//是否显示本次程序运行加载了哪些文件,默认为false
        'error_handler'=>false,//是否接管程序错误,将程序错误显示在console中,默认为false
        'force_client_ids'=>array('xxx'),//日志强制记录到配置的client_id,默认为空
        'allow_client_ids'=>array('xxx')//限制允许读取日志的client_id,默认为空,表示所有人都可以获得日志。
    ),'config');
}

配置浏览器以及接收debug的客户端

此工具是TP开发人员编,已经内置于TP5中。
此项功能需要有服务器提供websocket服务,为了避免不必要的折腾,TP也提供了公共服务:http://slog.thinkphp.cn

  1. 打开之后获取SocketLog帐号的client_id,粘贴到上一步的配置参数加载中.

  2. 安装chrome 插件 SocketLog
    https://chrome.google.com/webstore/detail/apkmbfpihjhongonfcgdagliaglghcod

  3. SocketLog 插件配置

监听地址:ws://slog.thinkphp.cn:1229
Client_ID:上面setup1中复制的id

使用

php代码中需要debug的地方slog('data');
然后chrome任意页面 打开Console,当有请求执行到debug的地方控制台即可看到数据

图片3676-CI框架配置socketLog 远程调试

更新OpenSSL库至最新版本导致sss服务无法启动

作者:Matrix 发布时间:2017年4月16日星期日 分类:

ubuntu升级openssl库到OpenssL 1.1.0e版本,过程倒还好,到底还是成功了。但是reboot重启系统之后发现ss服务无法打开,这可是目前我唯一的科学电梯啊。
不过还好找到报错信息有解决办法。

>ssserver --version
shadowsocks 2.8.2 版本

报错:
root@root-VM:/usr/local/bin# ./ssserver  -c /etc/shadowsocks.json -d start
INFO: loading config from /etc/shadowsocks.json
2017-04-16 19:05:10 INFO     loading libcrypto from libcrypto.so.1.1
Traceback (most recent call last):
  File "./ssserver", line 9, in <module>
    load_entry_point('shadowsocks==2.8.2', 'console_scripts', 'ssserver')()
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/server.py", line 34, in main
    config = shell.get_config(False)
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/shell.py", line 262, in get_config
    check_config(config, is_local)
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/shell.py", line 124, in check_config
    encrypt.try_cipher(config['password'], config['method'])
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py", line 44, in try_cipher
    Encryptor(key, method)
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py", line 83, in __init__
    random_string(self._method_info[1]))
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py", line 109, in get_cipher
    return m[2](method, key, iv, op)
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py", line 76, in __init__
    load_openssl()
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py", line 52, in load_openssl
    libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,)
  File "/usr/lib/python2.7/ctypes/__init__.py", line 378, in __getattr__
    func = self.__getitem__(name)
  File "/usr/lib/python2.7/ctypes/__init__.py", line 383, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: /usr/lib/ssl/lib/libcrypto.so.1.1: undefined symbol: EVP_CIPHER_CTX_cleanup

说到底都是升级openssl导致无法使用,旧版EVP_CIPHER_CTX_cleanup函数被弃用改为EVP_CIPHER_CTX_reset

办法

定位到/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py文件:
修改52,111行处的EVP_CIPHER_CTX_cleanupEVP_CIPHER_CTX_reset 重启服务,解决。

实际情况根据自己的ss版本查找修改相关文件

参考:http://blog.csdn.net/blackfrog_unique/article/details/60320737

PEACE

Wechat之外的选择-Telegram

作者:Matrix 发布时间:2017年4月2日星期日 分类:

官网

https://Telegram.org/

聊天软件Telegram来历不小,CEO是俄罗斯最大社交网站创始人,什么什么两兄弟。

软件好像15年就有了,只是我现在才知道。里面真的是好多内容,包括政治,H网等等。很好奇,自然也进去玩玩。

软件开发的初衷就是为了隐私信息安全,信息加密。
https://livc.io/177
好了。我的目的是除了书签之外再留一份TG群的链接。

各种群以及聊天频道

http://120.77.47.131/telegram.html
http://www.telegram.url.tw/index.html
机器人store:https://storebot.me/top/news

或者通过资源机器人Bot: @GroupHub

还没玩过的朋友不妨试试,很Nice. 反正ISIS这类的恐怖组织在用。
现在最新版本V3.18支持免费打电话,使用过程需要梯子科学上网,且无中文,不过这个单词量真心不大。

参考:
https://livc.io/177

PEACE

linux进程管理工具-supervisor

作者:Matrix 发布时间:2017年2月13日星期一 分类: 零零星星

linux后台守护进程化有nohup,screen命令可一般解决。但突发崩溃情况就不能很好的保证进程在后台的驻留。
supervisor是一个python脚本编的工具,可以起到很好的管理、监控进程的作用。

安装

Debian类系统安装:

sudo apt-get install supervisor 

选择y确认操作后即可安装完成。

配置

echo_supervisord_conf > /etc/supervisord.conf

图片3665-linux进程管理工具-supervisor
如图我的启动supervisord时的配置文件是/etc/supervisor/supervisord.conf
在文件最后一行添加执行的命令,或者其中include中载入的配置文件目录中的任意conf文件也可以。
范例:

[program:ws] 
user=www
command=php /home/wwwroot/chat.hhtjim.com/wsServer.php
autostart=true
autorestart=true

说明:
program 表示自定义的任务名称
user 执行进程的用户
command 执行的命令
autostart 自动启动

启动

supervisord -c /etc/supervisord.conf

查看

> supervisorctl #进入命令行
> reload #重新载入配置

参考:
http://www.tuicool.com/articles/Ejm2u2
http://stackoverflow.com/questions/16171338/supervisord-cant-find-command-in-virtualenv-folder
https://neo1218.github.io/supervisor/

mysql 启动失败

作者:Matrix 发布时间:2017年2月11日星期六 分类: 零零星星

重启系统发现mysql启动失败。
环境为 ubuntu Lnmp

Starting MySQL
. * The server quit without updating PID file (/var/run/mysqld/mysqld.pid).

/var/run/mysqld/ 目录中没有pid文件

找到网上说的文件权限、磁盘已满,这些都不符合情况。

解决

删除文件my.cnf
> rm /etc/mysql/my.cnf

启动mysql

lnmp mysql start

最后启动成功就ok
peace

参考:

[分享]MySQL启动报错 The server quit without updating PID file (/var/run/mysqld/mysqld.pid) 解决


https://bbs.vpser.net/viewthread.php?tid=13217

suning云盘解析源码[PHP]

作者:Matrix 发布时间:2015年10月29日星期四 分类: 零零星星

苏宁云盘的下载速度还是不错的,之前获取下载地址很简单。现在必须要求用户登录才能办到,难度也是增加不少。还好suning没做绝。GOOD LUCK!

提示: 回复可见网盘地址

源码

阅读剩余部分 »

获取豆瓣音乐下载地址

作者:Matrix 发布时间:2015年5月20日星期三 分类:兼容并蓄

豆瓣音乐的mp3链接没法外链播放,只有下载用。
例如http://music.douban.com/programme/1312655?sid=2135789#play
打开地址会播放袁惟仁的木吉他。
右键点击“4.木吉他- 袁惟仁”审查元素

如图:
审查元素 可以看到

  1. <div class="song-item" data-index="3" data-title="木吉他" data-performer="袁惟仁" data-songid="2135789" data-plength="241" data-ssid="1b59">

 
其中2135789和1b59是下一步需要的
打开http://music.douban.com/j/songlist/get_song_url?sid=2135789&ssid=1b59
看到{"r":"http:\/\/mr3.douban.com\/201505162003\/579f892209df60970f186024b25c9dee\/view\/song\/small\/p2135789.mp4"}
其中r对应的键值就是这首歌的链接地址(请去掉反斜杠)。
其实也可以简单点,直接审查元素打开后点击NetWork,只要该页面有歌曲播放就会显示出歌曲的地址。
PS:只需要音乐ID就能拼接出音乐地址
http:/ /mr5.douban.com/{任意12位\d,即日期:20150515}/{任意32位\w}/view/song/small/{音乐ID}.mp3