[维护中]基于文本图形(ncurses)的文本搜索工具 ncgrep

源码下载http://github.com/ncgrep/ncgrencgrep dem背景作为一个 VIM 党,日常工作开发中,会经常利用 grep 进行关键词搜索,以快速定位到文件。如图利用 grep 进行文本搜索但是,这一过程会有两个效率问题展示的结果无法进行直接交互,需要手动粘贴文件路径在打开展示的结果没有进行分组,直接将结果罗列出来可想而知,当搜索的内容结果集比较大时,可谓痛苦。那可以用 Vim 中的 Ag 插件进行搜索啊?是的,但他只解决了交互的问题。仍然没有解决结果集分组分类的痛点。在 vim 下利用 ag 进行文本搜索思路在使用 Eclipse 等 IDE 进行文本全局搜索时,在加载效果(懒加载)可视化方面有很大优势。在 Eclipse 下进行全局文件搜索那么,期望基于 linux 系统,提供一个类似的搜索工具。优点(功能)如下结果集可以直接交互结果集可以进行分组展示... Read More

[开发中]基于树莓派的智能家居项目的设想与实现 Hestia

注:本文内容的准确性仅限于笔者写该篇文章时的情况,不保证后续与实际项目代码一致。实时内容还请关注 Github 项目托管页面:https://github.com/GenialX/hestia-serve树莓派,一个五脏俱全,集几乎所有功能于一身的微型计算器。大约一两月之前,屈屈 300 百大洋收入囊中。入手之后,出于对自动化的兴趣,慢慢地研究如何实现室内家电的智能自动化控制。在断断续续地,不断地摸索之后,有了若干想实现的点子,迄今为止也有所实践。点子利用红外线传感器智能控制空调、电视等基于红外遥控的家电设备;智能控制家中的灯泡设备(部分基于网络协议);方案硬件首先,除了树莓派之外,还需要如下硬件移动端设备 Android 手机一台(iPhone手机当然也没问题,但是本案例中只基于 Android 手机做了实现外网可直接访问的服务器一台(本案例使用阿里云服务器基于树莓派(点我购买)的传感器若干... Read More

利用内网穿透 frp 工具实现外网链接(ssh)内网树莓派设备

内网穿透原理内网穿透(Net 穿透)也即端口映射,笔者粗暴理解是一种能够将外网机器与内网机器(外网无法直接访问的设备)建立通信的一种技术解决方案。百度百科尽管有许多穿越 NAT 的技术,但没有一项是完美的,这是因为 NAT 的行为是非标准化的。这些技术中的大多数都要求有一个公共服务器,而且这个服务器使用的是一个众所周知的、从全球任何地方都能访问得到的 IP 地址。一些方法仅在建立连接时需要使用这个服务器,而其它的方法则通过这个服务器中继所有的数据 —— 这就引入了带宽开销的问题。具体原理详见百度百科=>https://baike.baidu.com/item/NAT%E7%A9%BF%E8%B6%8需要资源一台公网服务器(可以通过 IP 直接访问树莓派(也可以是电脑,以树莓派为例安装本文以 frp v 0.13.0 为例(具体版本可以自己定,但不保证其他版本能够成功)。笔者在 go ... Read More

ZigZag Conversion(math)

QuestioThe string"PAYPALISHIRING"is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibilityP A H A P L S I I Y I And then read line by line:"PAHNAPLSIIGYIR"Write the code that will take a string and make this conversion given a number of rowsstring convert(string text, int nRows);convert("PAYPALISH... Read More

PHP Internals Book 中文版 – Zvals – 基础结构

基础结构一个 zval(“Zend value”的缩写)代表一个任意类型的 PHP 变量。所以,它很可能是 PHP 中最重要的数据结构,同时你将会频繁地使用它。本章节讲述zvals的基础概念及其使用方法。类型和值每一个 zval 都会存储某个值和其对应的类型。这点非常重要,因为 PHP 是一门动态类型语言,所以变量的类型只有当运行时才会确定,并不是在编译时就能够确定。此外,zval 的类型在其生命周期是可以改变的,所以如果这个 zval 在最初存储了一个整形,那么在之后的某个时间点他也可能会存储了一个字符串。 类型是存储在一个整形的标签中(一个 unsigned char 类型的变量)。它有 8 中类型的值,分别对应着 PHP 中的 8 中变量类型。这些值可以用诸如 IS_TYPE 形式的常量来使用。比如:IS_NULL 对应 null 类型,IS_STRING 对应字符串类型。真实的值是存储在一个联合体中,如下所示... Read More

PHP Internals Book 中文版 – Zvals

Zval本章节的主题为用来表达 PHP 变量的 zval 数据结构。我们将会围绕 zvals 的概念和如何在扩展开发中使用两方面来进行阐述。目录基础结构类型和值访问宏赋值内存管理值语义和引用语义引用计数和写时复制分配并初始化 zval管理引用计数和 zval 销毁复制 zval分离 zval类型转换和操作符基础操作符比较类型转换 Read More

PHP Internals Book 中文版

你看到的是 PHP 内核中文版,翻译自 PHP Internals Book。为什么要翻译对技术的饥渴对英语的热爱方便汉语作为母语的人学习交流官方网站PHP Internals BooGithub(更新最快https://github.com/huxiaoxu2019/php-internals-book-in-chines关于作者Hu Xiaox内容目录IntroductioUsing the PHP build systeBuilding PHBuilding PHP extensionCreating PHP extensionZvalBasic structurMemory managemenCasts and operationImplementing functionHashtableBasic structurHashtable APSymtable and array AP... Read More

工作效率之动态 IP 域名化篇

在公司里,RD 们不免会使用一些代理服务来进行抓包操作。那么就需要获取代理服务器(一般为自己的电脑)的内网 IP。然而,这个内网 IP 并不是固定不变的。所以,每次配置代理 IP 时就略显麻烦。那么,下面就来聊聊如何解决这个尴尬,提升效率。方案将非固定 IP 实时解析到域名中。利用阿里云的域名解析开发者 API 进行定时的更新。其中的定时用本机(Mac)的 Launchd 实现(类似 Linux 下的 Crontab)。原材料Mac(或者 Windows 但本文仅谈及 Mac 配置方法域名(如 ihuxu.com如果没有域名可以到 freenom.com 中注册一个免费域名,然后将其 DNS 切到阿里云免费的 DNS 云解析服务中即可。阿里云账号利用阿里云提供开发者的 DNS 管理相关的 AP步骤下载阿里云 SDK & 编写代码库:https://github.com/ali... Read More

小型网站架构降 Apache 与 MySQL 内存占用比率

前言这篇文章以我的阿里云服务器为例(你眼前的博客正是搭在这个服务器上),阐述下小型网站(Linux+Apache+MySQL+PHP)对于内存利用率提升的配置方法的一个点。正文我的服务器是阿里云的,在一年前由于数据库(MySQL)频繁内存不足宕机就“潇洒”地升级了配置到2G内存。所以,目前机器的配置如下CPU: 1核内存: 2048 MB操作系统: CentOS 6.5 32位公网IP: 115.28.36.19带宽计费方式: 按固定带宽当前使用带宽: 1Mbp同时,正常使用情况下的内存使用情况如下linux 内存 mysql 与 apache 占用图中显示 MySQL 占用 440m,Apache 占用 44m。当然,这是MySQL 服务和 Apache 服务刚刚重启后的情况。实际的内存占用会比这大,因为随着业务的进行,会进行 Cache 的累积,最后导致整体的使用内存增大。下面分别调整 MySQL 和 Apache 的配置文件。... Read More

在 Linux 下通过 strace 与 lsof 命令排查 PHP 异常进程

在有些时候,会遇到 PHP 进程异常卡死的情况。面对这种情况,首先考虑到的就是分析代码进行优化改进,或者重启进程。但是,这种方式来排查不一定能找到根本原因。因为有些时候异常 PHP 进程卡死的原因可能是非常奇葩的问题,比如外部资源异常如 DB、Redis 或第三方 API 等。上一次关于超级话题签到提醒定时任务 PHP 进程异常的处理,问题竟然出现在外部的 DB 的链接上。由于网络原因导致读取 DB 没有响应卡死。这一次情况比较严重,超级话题积分系统的计算有一部分是通过 Trigger(类似队列)接受全站数据进行积分计算与入库。由于用户反馈问题,来到队列机查看进程情况。如下$ ps -ef | grep Trigger | grep Commenwww 10693 1 7 16:06 ? 00:04:09 /usr/local/bin/php /path/cli.php request... Read More