Atwood定律:凡是能用JavaScript写出来的,最终都会用JavaScript写出来

 

Workerman 开启 WSS

准备工作:1、Workerman版本不小于3.3.72、PHP安装了openssl扩展3、已经申请了证书(pem/crt文件及key文件)放在磁盘任意目录代码: array( // 请使用绝对路径 'local_cert'=> '磁盘路径/server.pem', // 也可以是crt文件 'local_pk'=> '磁盘路径/server.key', 'verify_peer'=> false, // 'allow_self_signed' => true, //如果是自签名证书需要开启此选项 ) ); // 这里设置的是websocket协议(端口任意,但是需要保证没被其它
ngtwewy 2020-02-29    PHP   

PHP 为什么会引入 Trait

软件开发中的两种常用代码复用模式,继承和组合。继承:强调 父类与子类 的关系,即子类是父类的一个特殊类型;组合:强调 整体与局部 的关系,侧重的一种需要的关系;软件开发中有一条原则,叫做组合优于继承。这是因为从耦合度来看,继承要高于组合。继承关系中,子类与父类保持着高度的依赖关系,加上 PHP 不支持多继承,为了避免重写编写代码,很多功能都被统一封装到父类中。这样做有两个坏处:一是随着继承的层数和子类的增加,代码复杂度不断增加,大量的方法都将面临着重写;二是这些功能对于一些子类来说可能是不必要的,破坏了代码的封装性。trait ezcReflectionReturnInfo { functi
ngtwewy 2020-02-22    PHP   

node-sass 安装失败 gyp ERR! stack Error: EACCES: permission denied, mkdir '.../node-sass/build'

安装 node-sasssudo npm i -g node-sassnode-sass 安装失败:gyp ERR! stack Error: EACCES: permission denied, mkdir '.../node-sass/build'或gyp ERR! configure errorgyp ERR! stack Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/node-sass/.node-gyp'gyp ERR! System Darwin 18.7.0使用 --unsafe-perm
ngtwewy 2020-02-18    npm   

Windows 下 Apache 添加多个PHP版本

1.常规手动部署apache方法,解压fcgid,取其mod_fcgid.so至modules目录PHP各版本解压到不同目录并配置,任意位置,方便即可。2.打开httpd.conf 注释掉以下类似配置#LoadModule php5_module "D:/php53/php5apache2_2.dll" #PHPIniDir "D:/php53/" 3.增加配置(尾部或中部即可)#加载fcgid扩展模块(额外说明,fcgid根据实际apache版本对应,apache2版本测试2.3.6正常) LoadModule fcgid_module modules/mod_fcgid.so #添
ngtwewy 2020-02-17    Apache   

Apache 虚拟主机配置文件中限制 PHP 上传文件大小

一,在虚拟主机中设置 PHP 配置 ServerAdmin mail@test.com DocumentRoot "/var/com_test" ServerName www.test.com ServerAlias test.com php_value upload_max_filesize 100M php_value post_max_size 100M php_value memory_limit 128M php_value max_execution_time 600 php_value max_input_time 600
ngtwewy 2020-02-16    Apache   

PHP 获取父分类和子分类常用递归函数

/** * 递归获取所有 ID * @param array $array 所有分类列表 * @param [type] $id 子分类ID */ function get_all_parents($array, $id){ $arr = []; foreach ($array as $v) { if($v['id'] == $id){ $arr[] = $id; if($v['parent_id'] != 0){ $arr = array_merge(
ngtwewy 2020-02-16    PHP   

MySQL 自定义函数获取一个分类的无限级子分类

本方法不易维护,建议取出数据,在程序中递归,例如 https://javascript.net.cn/article?id=654代码如下:delimiter / DROP FUNCTION IF EXISTS `getChild` / CREATE FUNCTION `getChild`(rootId INT) RETURNS VARCHAR(1000) BEGIN DECLARE ptemp varchar(1000); DECLARE ctemp varchar(1000); SET ptemp = '#'; SET ctemp =cast(rootId
ngtwewy 2020-02-13    MySQL   

Workerman 实现 WebSocket IM 聊天系统 【前端篇】

后端篇地址:https://javascript.net.cn/article?id=649相关文档:https://restfulapi.cn/d/271前端代码主要功能是,连接服务器,发送心跳,断开服务器后自动连接。/** * JSSDK 对象 */ var PigIM = { config: {}, // 配置 fromId: {}, // 发送者 ID ws: {}, // Websocket 对象 connection: {}, listen: {}, heartbeatTimer: {},
ngtwewy 2020-02-07    JavaScript   

ThinkPHP 5.0 原生查询分页

use think\paginator\driver\Bootstrap; // 获取用户上传列表 $page    = input('page/d') > 0 ? input('page/d') : 1;  $per_page  = Config::get('per_page'); $offset   = ($page-1) * $per_page; $sql = "..."; $list = db()->query($sql); // 查询总条数 $count = "SELECT count(*) AS count from tp_item"; $count = d
ngtwewy 2020-02-05    PHP   

FTP over TLS加密传输 Filezilla

CentOS vsftpd 开启 TLSopenssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem先使用上文命令生成pem证书,随后编辑主配置文件,使vsftpd应用pem证书:ssl_enable=YES #是否启用SSL,默认值:NO allow_anon_ssl=NO #禁止匿名用户登录 force_local_data_ssl=YES #如果激活,所有非匿名登录将被强制使用安全的SSL连接以发送密码
ngtwewy 2020-02-04    Windows   

Workerman 实现 WebSocket IM 聊天系统【后端篇】

前端篇地址:https://javascript.net.cn/article?id=652相关文档:https://restfulapi.cn/d/271一,WebSocket 简介WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,浏览器和服务器之间就可以创建一个持久性的连接,两者之间就直接可以数据互相传送。现在,很多网站为了实现推送技术,所用的技术都是 Ajax 轮询。轮询是在特定
ngtwewy 2020-02-03    PHP   

PHP 常用函数

数组函数:1.排序类:【1.无返回值,传值引用,就直接对原数组进行了修改】按V:sort,rsort,asort,arsort,按K:ksort,krsortsort() 按升序对给定数组的值排序,不保留键名rsort() 对数组逆向排序,不保留键名asort() 对数组排序,保持索引关系arsort() 对数组逆向排序,保持索引关系ksort() 按键名对数组排序krsort() 将数组按照键逆向排序natsort() 用自然顺序算法对数组中的元素排序natcasesort() 自然排序,不区分大小写2.键值操作类:【都有返回值,没有在原来参数上修改】array_values($arr);
ngtwewy 2020-01-31    PHP   

PS笔记

1,CTRL + T 自由变换CTRL + SHIFT + T 重复自由变换CTRL + SHIFT + ALT + T 重复自由变换,并保留2,使用 Photoshop 提取线稿使用正片叠底的话,线稿透不透明好像无所谓。选中通道,按着cmd键点击RGB通道,所有白色区域被选中,返回图层,蚂蚁线出来了,DELETE即可获取背景透明的线稿。https://www.bilibili.com/video/av365556193,Photoshop 矢量工具的工具属性中,有三个选项:形状,路径,像素如果做svg图标的话,像素用处不大。路径可以转换为形状,然后进行描边和填充。像素图形可以转换为选区,再转
ngtwewy 2019-12-27    Adobe 全家桶   

Windows 2008 修改远程端口号

运行 regedit, 进入注册表编辑,按先面的路径进入修改端口的地方HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp找到下面的 “PortNumber”,用十进制方式显示,默认为3389,改为任意可用端口。请注意,在这里修改过了以后,还没有修改成功,注册表文件的另外一个位置也必须做相应的修改,路径为HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp找
ngtwewy 2019-12-23    Windows   

使用Keytools生成安卓证书

keytool简介keytool 是java 用于管理密钥和证书的工具,其功能包括:创建并管理密钥,创建并管理证书,作为CA 为证书授权,导入导出证书。主要格式keytool 采用 keystore 文件来存储密钥及证书,其中可包括私钥、信任证书;keystore 文件主要使用 JKS格式(也可支持其他格式),带密钥存储;其中私钥的存储也有独立的密码;生成签名证书使用keytool -genkey命令生成证书:keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.key
ngtwewy 2019-12-10    App开发