PHP 调用 exec 带中文的命令
1 | $input = shell_exec($cmd = '/usr/bin/python3 ' . APP_PATH . "/library/OpsKG/input_jieba.py $input"); |
无输出,python其实并没有收到正确的中文输入,exec的中文编码问题
需要先设置exec的环境变量
1 | putenv('LC_ALL=en_US.UTF-8'); |
或在命令前export LANG=en_US.UTF-8;
1 | $input = shell_exec($cmd = '/usr/bin/python3 ' . APP_PATH . "/library/OpsKG/input_jieba.py $input"); |
无输出,python其实并没有收到正确的中文输入,exec的中文编码问题
需要先设置exec的环境变量
1 | putenv('LC_ALL=en_US.UTF-8'); |
或在命令前export LANG=en_US.UTF-8;
Win10 内置的MD5 sum
1 | $ CertUtil -hashfile /d/BaiduYunDownload/绳缚本事高清PDF版.pdf |
lrzsz在tmux下并不可用,但有方法取消rz/sz的卡死状态
rz: 5次ctrl+x
sz: 4次ctrl+x
fg命令恢复。比如top -d1 然后ctrl+z,到后台,然后fg,重新恢复源自https://mariadb.com/kb/en/library/group-by/#group-by-examples
Use the GROUP BY clause in a SELECT statement to group rows together that have the same value in one or more column, or the same computed value using expressions with any functions and operators except grouping functions. When you use a GROUP BY clause, you will get a single result row for each group of rows that have the same value for the expression given in GROUP BY.
于是
1 | mysql> select count(*), channel from wlan_client group by channel; |
这是最常见的操作,没毛病,channel的每一个值都会get a single result row
1 | mysql> select count(*), channel from wlan_client group by channel > 15; |
说实话我并没有找到有明确的文档说明此用法,但从上面引用的文档原文来看,也能说通,所有channel > 15的被归为了一类,其它的归为更一类,所以结果有两行
可以用简单的count验证
1 | mysql> select count(*), channel from wlan_client where channel > 15; |
You can also use a single integer as the grouping expression. If you use an integer n, the results will be grouped by the nth column in the select expression.
这里是另一种用法,N代表select中的第N项,如上面的select count(), channel from wlan_client group by channel就可写成select count(), channel from wlan_client group by 2
1 | mysql> select count(*), channel from wlan_client group by 2; |
恩,此时mysql不会认为1+1=2,然后同[3], 也不会认为2是channel然后同[2],而是只返回了一条
1 | mysql> select count(*), channel from wlan_client group by 2 > 15; |
这里的count(*)的确是该表的总行数,那么这又是什么意思呢
猜测,这里并没有可以分组的列维度,所以结果应该跟直接count(*)没有group by一样,但既然有group by,又没有找到可以用来计算分组维度的列,mysql竟然没有报错,很是神奇
明明这样是会报错的
1 | mysql> select count(*), channel from wlan_client group by 0; |
由于目前的Catalina安全策略
在macOS Catalina中,Apple推出了一种新的文件系统分区结构。新的文件系统分区结构将一个分区作为包含操作系统本身的专用“只读”系统卷,并且与所有用户数据完全分开。除了经过Apple签名的代码(例如:系统更新)之外的任何内容都无法覆盖操作系统文件。这样的机制,基本上使系统完整性保护到达了一个新的水平。现在,整个分区都是封闭的,而不再仅仅是在未受保护的分区中仅仅保护特定位置的内容。
由于在改动后,安装路径不再像之前那么明显,因此可能会存在一些初步的混淆。例如,用户数据位于何处?在此前版本中,用户数据位于/Users/
。但在Catalina新版本中,用户数据将位于/System/Volumes/Data/Users/ 。传统意义上的根目录/,现在将作为一个系统专用的卷。
对于企业来说,最开始要习惯修改后的路径命名约定可能会有一些困难,但从安全性原则上来看,将系统和用户数据的分区之间划分出明确的界限可能是一个良好的举措。这样一来,会使系统恢复和备份变得更加直接。Apple在先前的展示中表示,如果在安装第三方更新后出现问题,macOS Recovery将能够更轻松地从快照恢复。我们可以肯定,这一功能是依赖于新的磁盘分区方案。
/System/Library/LaunchDaemons/ssh.plist 已变的完全不可修改,或者修改方法未知,实测csrutil enable/disable都改不了
重启 command + r 进入 Recovery Mode
在终端中输入
1 | csrutil disable |
1 | vim /System/Library/LaunchDaemons/ssh.plist |
原
1 | <key>SockServiceName</key> |
把ssh修改为要使用的端口号
1 | <key>SockServiceName</key> |
1 | :1,10g/{pattern}/{cmd} |
phpMyAdmin用多了不会手写SQL了吧
1 | select t.TABLE_NAME |
HBSpy: 这里我们综合了IVR, mod_dptools: IVR Menu
互动式语音应答(IVR)是一种自动化的电话系统,可以与来话交互以收集信息或按策略路由。
FreeSWITCH IVRs可以用FreeSWITCH支持的任何语言编写,包括JavaScript, Python, Perl, Lua和XML macro格式
源码中自带了一个用XML实现的示例IVR。IVR菜单加载自conf/autoload_configs/ivr.conf.xml
Dialplan调用IVR菜单的入口如下
1 | <extension name="ivr_demo"> |
IVR Macro文件位于conf/lang/en/demo/demo-ivr.xml
IVR Menu功能可以使你简单的用XML描述IVR菜单o
菜单定义在配置文件autoload_configs/ivr.conf.xml中
1 | <configuration name="ivr.conf" description="IVR menus"> |
IVR Menu支持使用phrase macro。在phrase后写phrase macro的macro名字即可。务必保证tts-engine, tts-voice和phrase-lang被正确设置。
1 | <menu name="main" |
有时需要在来话进入IVR应用之前添加如下内容,以保证之不在early media阶段被接听
1 | <action application="answer"/> |
菜单选项
每个菜单支持通过按键绑定一系列动作
1 | <entry action="menu-play-sound" digits="3" param="say: You pressed 3"/> |