[Docker] 容器开发环境最佳实践理论

摘要: 保持 image 小 选择合适的 base image。 使用 multi-stage 构建。 https://docs.docker.com/develop/develop-images/multistage-build/ 如果多个 image 有共同之处,考虑创建一个 base image 来共 阅读全文
posted @ 2018-06-24 20:18 ercom 阅读(1224) 评论(0) 推荐(0) 编辑

[Tools] 调试 Android App 接口的方式 (Fiddler/Charles/Wireshark)

摘要: 要求:Windows电脑与手机在同一局域网内(Wifi)。 [ Fiddler 设置代理 ] 下载地址:https://www.telerik.com/download/fiddler 依次 Tools - Options - connections 进行,如图所示勾选。 [ 手机修改代理 ] 先得 阅读全文
posted @ 2018-05-29 18:22 ercom 阅读(622) 评论(0) 推荐(0) 编辑

[INet] WebSocket 数据收发的详细过程

摘要: WebSocket 和 HTTP 相似,只是一个应用层协议,对下层透明,所以不涉及 TCP/IP。 由于浏览器支持了 WebSocket,所以在用 JS 写客户端的时候,是无需考虑数据的编码解码的。 以下主要针对服务器端而言。 [ 接收数据,需要做的是解码,即 decode ] 要接收WebSock 阅读全文
posted @ 2018-05-08 21:50 ercom 阅读(477) 评论(0) 推荐(0) 编辑

[INet] I/O模型:同步阻塞,同步非阻塞,异步非阻塞

摘要: POSIX 把这同步、异步两个术语定义 如下: 同步 I/O 操作( synchronous I/O opetation) 导致请求进程阻塞, 直到 I/O 操作完成; 异步 I/O 操作( asynchronous I/O opetation) 不导致请求进程阻塞。 根据上述定义, 我们的前4种模 阅读全文
posted @ 2018-04-10 19:19 ercom 阅读(428) 评论(0) 推荐(0) 编辑

[phvia/firman] PHP多进程服务器模型中的惊群

摘要: [ 典型场景 ] 典型的多进程服务器模型是这样的,主进程绑定ip,监听port,fork几个子进程,子进程安装信号处理器,随后轮询资源描述符检查是否可读可写; 子进程的轮询又涉及到 IO复用,accept连接,事件处理 系列操作。 以下用伪码表示这个过程: Master: bind -> liste 阅读全文
posted @ 2018-04-08 20:37 ercom 阅读(582) 评论(0) 推荐(0) 编辑

[Tools] Wireshark Primer Tutorials

摘要: 介绍就不说了,安装也没必要讲,关于如何使用,网上的辣鸡文过多,视频又太冗余。 我推荐看下面有条理的入门教程. 界面说明:http://openmaniak.com/cn/wireshark_use.php 过滤器:http://openmaniak.com/cn/wireshark_filters. 阅读全文
posted @ 2018-02-12 19:52 ercom 阅读(329) 评论(0) 推荐(1) 编辑

[Cpp] 面向对象程序设计 C++

摘要: 初始化列表(包括成员对象初始化) 初始化列表 ( 推荐 ) : 可以初始化任何类型的数据, 不管是不是普通类型还是对象,都建议用. 不再需要在构造器中赋值了, 而且初始化列表比构造函数要早执行. 成员初始化次序取决于成员在类中的声明次序. 当类成员有其它对象时,构造器内给对象赋值会触发成员对象的默认 阅读全文
posted @ 2018-02-10 23:42 ercom 阅读(1171) 评论(0) 推荐(0) 编辑

[HTTP] PHP 实现 HTTP Server 原理

摘要: 单进程服务器简陋版: <?php /** * Single http server. * * Access http://127.0.0.1:8081 * * @license Apache-2.0 * @author farwish */ $s_socket_uri = 'tcp://0.0.0. 阅读全文
posted @ 2018-02-05 19:45 ercom 阅读(2323) 评论(0) 推荐(0) 编辑

[SF] Symfony 组件 BrowserKit 原理

摘要: 直接看下面的注释中针对每一个文件的作用说明。 <?php /** * BrowserKit - Make internal requests to your application. * * If you need to make requests to external sites and app 阅读全文
posted @ 2018-02-05 18:15 ercom 阅读(379) 评论(0) 推荐(0) 编辑

[PHP] PDO占位符预处理在 IN 和 LIKE 中用法

摘要: 两点注意项: 1. 占位符 (?) 必须被用在整个值的位置,不需要引号等其它字符。 2. 参数按数组元素顺序依次传递给占位符。 <?php /** * PDO基于占位符的查询预处理 * * @license Apache * @author farwish <farwish(a)foxmail.co 阅读全文
posted @ 2017-12-18 21:27 ercom 阅读(1281) 评论(0) 推荐(0) 编辑

[SF] Symfony 在 console 中结合 Workerman

摘要: 在web框架的console中,命令不再是直接指定入口文件,如以往 php test.php start,而是类似 php app/console do 的形式。 workerman 对命令的解析是 parseCommand 方法,里面主要是处理 $argv 全局变量。 那么我们只需要在自己的逻辑中 阅读全文
posted @ 2017-12-05 18:11 ercom 阅读(957) 评论(0) 推荐(0) 编辑

[TCP/IP] TCP连接的建立和终止

摘要: TCP 是支持全双工通信的传输层协议,为了开发出更好的网络通信应用,清楚了解其中的交互过程是非常必要的。 下面用比较直白的话来描述&理解一下这个过程: TCP 连接建立:三次握手 服务器依次调用 socket,bind,linsten 绑定到指定本机地址,accept 阻塞等待连接。 1. 客户端调 阅读全文
posted @ 2017-09-05 21:57 ercom 阅读(482) 评论(0) 推荐(0) 编辑

[PHP]全局使用 Composer 组件的思路

摘要: /** * 全局使用 composer 组件的步骤: * * 1. 建一个包含所有需要全局使用的composer包的项目。 * 如:globalVendor/ * composer init 初始化 * composer install 安装 * * 2. php.ini中指定 auto_prepe 阅读全文
posted @ 2017-08-20 18:12 ercom 阅读(333) 评论(0) 推荐(0) 编辑

[Nginx] 单机环境的多应用配置

摘要: # 服务层 # https://github.com/farwish/alconservice # alconservice.conf server { listen 8090; root /home/www/alconService/public; location / { index index 阅读全文
posted @ 2017-05-18 19:54 ercom 阅读(657) 评论(0) 推荐(0) 编辑

[PHP] 接口请求校验的原理

摘要: 具体的校验步骤可以自定义,下面是比较直观的一种形式: 1. 客户端:请求参数带上时间,进行首字母排序,连接私钥后,取得加密结果; 客户端请求时带上这个加密结果作为sign参数。 2. 服务端:对sign参数进行校验(过程同上),如果正确且在有效期内,则通过。 示例程序: <?php /** * Si 阅读全文
posted @ 2017-04-12 18:02 ercom 阅读(2000) 评论(0) 推荐(0) 编辑

[codility] Lession1 - Iterations - BinaryGap

摘要: Task1: A binary gap within a positive integer N is any maximal sequence of consecutive zeros that is surrounded by ones at both ends in the binary rep 阅读全文
posted @ 2017-04-03 23:46 ercom 阅读(751) 评论(0) 推荐(0) 编辑

[PHP] PHP1 与 CGI

摘要: 早期,一个web程序通过cgi方式提供数据处理,编写cgi程序可以用不同的语言。 这个过程是,我们生成一个服务端可执行程序,处理 web server 传过来的请求,(设置header头)然后返回数据。 PHP1是典型的cgi程序(https://github.com/farwish/php1),m 阅读全文
posted @ 2017-02-22 19:01 ercom 阅读(247) 评论(0) 推荐(0) 编辑

[PHP] Phalcon操作示范

摘要: 这篇内容将对下列操作进行示范: Insert、Select、Update、Calculation、Transaction、models advanced、dev-tools、cookies [ Insert ] (1) // 模型内操作,data是['字段'=>'值']的一维数组。 $bool = 阅读全文
posted @ 2017-01-30 00:46 ercom 阅读(3570) 评论(0) 推荐(0) 编辑

[Shell] 实战: swoole_timer_tick 与 crontab 实现定时任务和监控

摘要: 手动完成 "任务" 和 "监控" 主要有下面三步: 1. mission_cron.php(定时自动任务脚本): <?php /** * 自动任务 定时器 (5s 执行). * * swoole_timer_tick 解决秒级定时; * 如需调整,注意配置路径 和 mission_cron_moni 阅读全文
posted @ 2016-12-28 20:18 ercom 阅读(966) 评论(0) 推荐(0) 编辑

[PHP] Phalcon应用升级PHP7记录

摘要: 升级主要有 php7, phalcon, extension 这三个方面工作。 【php7】 我选择从 git 中源码包安装,下面是主要安装步骤: git clone -b php-7.0.14 https://github.com/php/php-src.git cd php-src/ ./bui 阅读全文
posted @ 2016-12-13 21:14 ercom 阅读(698) 评论(0) 推荐(0) 编辑

[GNU] 喝一杯咖啡, 写一写 Makefile

摘要: Makefile 是 Linux 下组织程序的一个工具,它的命令是 make。 (首字母M/m都可以) 【Makefile】 Makefile 编写的主旋律: target: [dependency] (TAB)[command] 【make】 了解支持的功能和选项: $ man make # 查看 阅读全文
posted @ 2016-12-09 04:26 ercom 阅读(786) 评论(0) 推荐(0) 编辑

[PHP] Xhprof 非侵入式使用指南

摘要: 一般使用 Xhprof ,按文档操作可以快速上手,文件头开启 Xhprof,应用结束处得到访问的url查看。 这种使用方式可以快速看到效果,同时也有一些不好的地方: 一是不利于重复利用写好的示例代码;二是你需要改不同的Web应用。 怎样做到不在现有应用中加入无关紧要的代码,又能达到目的? php提供 阅读全文
posted @ 2016-12-06 20:39 ercom 阅读(439) 评论(0) 推荐(0) 编辑

[PHP]OOP两类写法的性能对比

摘要: 在PHP的OOP中我们有常见两种方法调用,对象调用和静态调用。 下面是一个简单的测试来比较它们的细微差异。 /** * 对象初始化 -> 调用;objectCall.php * * 测试调用50W次. * * @farwish */ class Test { public $a; public fu 阅读全文
posted @ 2016-11-08 00:17 ercom 阅读(321) 评论(0) 推荐(0) 编辑

[OSI] 网络间通信流程

摘要: PC 连接交换机A,组成内网。DNS Serv 和 Web Serv 连接交换机B 组成外网。 示意图: 内网通信 PC1 到 PC2: PC1 发送的数据先到交换机A,交换机A没有ARP地址缓存表,进行广播。 到路由器时,数据被丢弃,到PC2时,PC2 响应返回其MAC地址信息,交换机A进行ARP 阅读全文
posted @ 2016-09-15 17:25 ercom 阅读(1178) 评论(0) 推荐(0) 编辑

[OSI] 网络7层模型的理解

摘要: 应用层:HTTP 应用层 表现层:编码 表现层 会话层:端口 会话层 传输层:TCP/UDP 协议 传输层 网络层:IP 标记 +-- 网络层 --+ 网络层 数据链路层:计算机Mac地址标记 | | 数据链路层 物理层:网线,水晶头,计算机插口 | + >物理层 + >+ 【底层为上层服务,并且是 阅读全文
posted @ 2016-09-11 01:20 ercom 阅读(1922) 评论(0) 推荐(1) 编辑

[Tools] Vim 插件管理

摘要: 我们在使用插件的时候,都不希望插件安装的很杂乱,它不是一个看不见的黑盒,也为了下次方便在其它地方安装。 由于要方便插件管理,于是有了 Vundle,以下做些介绍: 1. 一个插件管理器, 自己本身也是插件, 这是必需工具: git clone https://github.com/VundleVim 阅读全文
posted @ 2016-08-30 20:02 ercom 阅读(392) 评论(0) 推荐(0) 编辑

[php-src] Php扩展的多文件编译

摘要: 内容均以php5.6.14为例. 假设有模块 foo,php_foo.h 和 foo.c 是固有文件,额外的C文件如果要加入编译,大致有五步。 1. 新增头文件 foo_bar.h #ifndef FOO_BAR_H #define FOO_BAR_H extern zend_class_entry 阅读全文
posted @ 2016-07-23 23:12 ercom 阅读(637) 评论(0) 推荐(0) 编辑

[php-src]Php扩展的内存泄漏处理思路

摘要: 内容均以php5.6.14为例. 一. 封装函数时产生 memory leaks. [weichen@localhost www]$ php 2.php [122,3333] [Tue Jul 10 15:34:42 2016] Script: '/home/www/2.php' /home/wei 阅读全文
posted @ 2016-07-23 16:30 ercom 阅读(2532) 评论(0) 推荐(0) 编辑

[php-src] 窥探Php内核中的数组与面向对象

摘要: 内容均以php5.6.14为例. 扩展中定义一个类有以下四步: #1. 声明一个存储类信息的指针. zend_class_entry *errs_ce; #2. 定义方法的参数信息,类的方法实现. ZEND_BEGIN_ARG_INFO_EX(errs_test_arginfo, 0, 0, 1) 阅读全文
posted @ 2016-07-17 18:07 ercom 阅读(855) 评论(0) 推荐(0) 编辑

pdoner version 0.1.0 release

摘要: Optional functional pack prepared for fast php framework. Source:https://github.com/farwish/pdoner Link:http://www.cnblogs.com/farwish/p/5677358.html 阅读全文
posted @ 2016-07-16 22:18 ercom 阅读(261) 评论(0) 推荐(0) 编辑

[FE] 有效开展一个前端项目-V1 (gulp/angular)

摘要: 今天的前端如果没有用到 npm,效率是比较低的;所以要从使用的工具来讲。 1. 一切都依赖于 nodejs: 下载一个 linux 的源码包就可以开始安装了。 $ wget https://nodejs.org/dist/v4.4.7/node-v4.4.7.tar.gz $ ./configure 阅读全文
posted @ 2016-07-10 14:55 ercom 阅读(334) 评论(0) 推荐(0) 编辑

[FAQ] Centos7 解决 gdb 提示 Missing separate debuginfos

摘要: Centos7 上使用gdb: $ gdb php $ run /home/www/2.php 运行完 run,后面跟着很长的提示: …. Missing separate debuginfos, use: debuginfo-install cyrus-sasl-lib-2.1.26-17.el7 阅读全文
posted @ 2016-07-05 02:22 ercom 阅读(5804) 评论(0) 推荐(0) 编辑

[php-src] 扩展中封装业务与 call_user_function 的使用建议

摘要: 内容均以php5.6.14为例. 从一个封装 uniqid 的例子来讲。 /* {{{ wrapper of uniqid */ PHP_FUNCTION(fox) { // #1. zval *prefix, *more = NULL; zval function, *params[2] = {0 阅读全文
posted @ 2016-07-02 19:18 ercom 阅读(1036) 评论(0) 推荐(0) 编辑

[PHP]Yaf + composer 引起大幅性能下降

摘要: composer.json 文件可以用命令 composer init 创建,命令是交互式的。 也可以直接编辑一个 json 文件,如下: repositories 中 url 使用中国全量镜像地址. 要引入依赖包,可以直接加进去,也可以用命令行,composer require "predis/p 阅读全文
posted @ 2016-06-30 20:48 ercom 阅读(2480) 评论(0) 推荐(0) 编辑

[php-src] 窥探Php内核中的变量

摘要: 内容均以php-5.6.14为例. 在看各种组合数据类型之前,有必要先熟悉下 Zend/zend_types.h 里面的自定义数据类型. #ifndef ZEND_TYPES_H // 防止多次 include 头文件导致预处理错误 #define ZEND_TYPES_H typedef unsi 阅读全文
posted @ 2016-04-25 23:32 ercom 阅读(1110) 评论(0) 推荐(1) 编辑

[php-src] 理解Php内核中的函数与INI

摘要: 内容均以php-5.6.14为例. 一. 函数结构 内核中定义一个php函数使用 PHP_FUNCTION 宏 包装,扩展也不例外,该宏在 ./main/php.h:343 有着一系列类似以 PHP 命名的 Zend 宏包装器,它们是: /* PHP-named Zend macro wrapper 阅读全文
posted @ 2016-04-16 00:09 ercom 阅读(1940) 评论(0) 推荐(0) 编辑

[php-src]一个Php扩展的结构

摘要: 内容均以php5.6.14为例. 要拥有一个PHP扩展的架子,使用源码中准备好的 /ext/ext_skel 工具,可以生成一个可运行的扩展骨架。 不加选项运行 ./ext_skel,可查看所有可用选项的帮助文字。 1) ./ext_skel --extname=myext(扩展名),自动生成扩展目 阅读全文
posted @ 2016-04-14 21:44 ercom 阅读(475) 评论(0) 推荐(0) 编辑

告别2015,迎来2016

摘要: 过去的一年,是忙碌的,也是默默的。 虽然见了一些东西,理解了一些东西,考虑问题全面了一些,技术应用有所成熟,达成了去年制定的两个小目标(shell,laravel);但 现实情况远远没有达到我的预期,或者说是没有质的提升,也许是公司技术栈重心的改变并且更多的时间忙在了复杂的业务支持、需求变动上。 一 阅读全文
posted @ 2016-04-05 01:05 ercom 阅读(322) 评论(0) 推荐(0) 编辑

[JS] 应用splice删除多元素时出现的坑

摘要: 先看一个片段: var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.splice(2,2); # Banana,Orange 上面两行代码完全没有问题,能达到我们想要的效果。 假如变成了下面这种情况: var origin=["aa 阅读全文
posted @ 2016-02-21 05:08 ercom 阅读(10273) 评论(0) 推荐(0) 编辑

[Ng] Angular应用点概览

摘要: 1. 使用模块化写法。 var app = angular.module('myApp', []); app.controller('TextController', function($scope) { $scope.txt = {'title':'some txt'}; }); [] 表示此模块 阅读全文
posted @ 2015-11-25 23:06 ercom 阅读(535) 评论(0) 推荐(0) 编辑