作为10个月的Vim使用者心得总结

隐约记得对于Vim的使用,起始于2015年12月份底。当时,是处于Eclipse到Vim的过渡时期。所以,对于Vim的使用基本上是“婴幼儿”级别。偶然间,我看到了一位同事正在编码的屏幕。不需要触摸板或鼠标的操作,看起来是那么的自然,更是让我看得有些“眼花缭乱”。从那时起,才知道原来Vim可以这么cool(是不是很无知的赶脚?)。这十个月,经历了从小白到能够把Vim作为主“IDE”的过程。故在此和大家分享下本人在Vim的心得。从最基本的概念、快捷键到一些实用的插件的管理与使用。在此之前,曾在部门的例会上有做过分享(分享了一个多小时,估计大家都困了),PPT托管在了github.com/genialx/vimer 上,本文的内容也将基本按照着PPT的顺序。Vim的指令集之丰富、功能之强大真,以至于我这种“小白”来在会议上分享Vim可谓多么忐忑,: 为什么要分享Vim?这个问题很简单,但更重要。对于Vim,会有两种态度... Read More

awesome-php中英文资源整理(同步更新)

中文版收集整理一些常用的PHP类库, 资源以及技巧. 以便在工作中迅速的查找所需...这个列表中的内容有来自 awesome-php 的翻译, 有来自开发者周刊以及个人的积累等.一个前端组件的列表 awesome-frontend 推荐学习资源PHP相关的有参考价值的社区,博客,网站,文章,书籍,视频等资源PHP网站(PHP WebsitesPHP The Right Way - 一个PHP实践的快速参考指导PHP Best Practices - 一个PHP最佳实践PHP Weekly News - 一个PHP 周刊Securing PHP - 有关PHP安全相关PHP FIG - PHP框架交互小组PSR 中文翻译PHP School - 一个开源的PHP学习资源PHPTrends - 一些快速发展的PHP类库检索PHP 开发者实践其他网站(Other WebsitesThe Op... Read More

Java资源大全中文版(Awesome最新版)

Awesome系列的Java资源整理。awesome-java 就是akullpp发起维护的Java资源列表,内容包括:构建工具、数据库、框架、模板、安全、代码分析、日志、第三方库、书籍、Java 站点等等。业务流程管理套件流程驱动的软件系统构建,中间件。jBPM:非常灵活的业务流程管理框架,致力于构建开发与业务分析人员之间的桥梁。 官网Activiti:新一代的开源 BPM 引擎,核心是基于 Java 的超快速、超稳定的 BPMN 2.0 流程引擎,强调流程服务的可嵌入性和可扩展性。 官网  下载字节码操作编程方式操作字节码的开发库。ASM:通用底层字节码操作和分析开发库。 官网Byte Buddy:使用流式API进一步简化字节码生成。 官网Byteman:在运行时通过DSL(规则)操作字节码进行测试和故障排除。 官网Javassist:一个简化字节码编辑尝试。 官网集群管理在集群内动态管理应用程序的框架。... Read More

Github装(zao)逼(jia)指(da)南(fa)

Github之于工程师,类似于微博相册之于嫩模,像是个门面。 无论是晋升答辩,还是求职面试,有一个丰富的代码仓库不敢说好处有多大,但总归是有的。并且好处不局限于此,代码开源才会暴露问题才会改正,并且会收到一些很有价值的改动PR。我是受益其中也是乐于其中, 但是可能很多人会因为没有时间写(这不是理由)或是望着干干净净的github不知道如何开始,因而没有写码的兴趣。 本文主要是针对第二点原因对症下药。写一篇这么low的文章 主要是基于一个契机, 我媳妇(iOS程序媛)有时有很多想法,但是她就懒得写。我建议她在github上慢慢敲,她的理由是:我的github太空荡了,就算写了也没脸往外贴,有点杯水车薪的感觉。说的貌似挺有道理的?! 我们男人也都是比较讲道理的,于是我就把她的github“改”成了这样。这张图是改之前这张图是改之后好,接下来就是本文的重点,具体怎么“改”? 在此分享给大家。Gi... Read More

百度短信API开发教程

公司原来有一个短信发送的功能,是调用第三方的,但是很不稳定,时不时就收不到短信,但是钱已经扣了。对于这样的事,谁都忍受不了的。于是想找一个稳定短信发送平台,第一想到的是阿里云,百度。在这两个平台上公司都有认证了,于是省了很多事。现在开始吧。找到百度开放云登录窗口,然后登录,进入控制中心,然后在产品服务中找到,如下图简单消息服务SMS。前提是账号已经认证了。点击它跳转到首先是短信签名申请,这个可以根据他们提供的文档一一操作,盖章,拍照上传,等待他们审核(大概两个星期吧)。审核成功,然后是短信模版申请,然后审核(大概一两天数量没有限制。这个时候其实我们可以根据他们文档进行开发了,只要签名和短信模板审核已通过我们就可以测试了。他们有Java等SDK,但是没有.net的,因此我只能调用他们的API实现。首先要认证。这个我是偷了一回懒。由于有同事做好了这个,他之前实现了一个百度api发送邮箱的功... Read More

【初码干货】使用阿里云开放搜索服务快速搭建资源搜索网站

大家好,我又来了,答应云栖论坛一周一篇文章, 由于工作太忙已中断1个多月实在抱歉,这一次写点轻松有趣的东西-快速的做个资源搜索站依稀记得十来年前,带宽还只有2M的时候,受各个论坛启发,做了可以搜索嘿嘿嘿资源的搜索站一晃这么多年过去,嘿嘿嘿的东西依然喜欢,但世间却变化万千资源种类已不仅仅是X片,高清电影、纪录片、无损音乐、美剧、大型软件等等,似乎更加吸引(GenialX:多样?资源呈现方式也百花齐放,从最早的BT文件、电驴地址,到现在的磁链地址、各种云盘等等而传统的P2P下载方式也变得格格不入,因为硬盘容量已经大到但凡大一点云存储服务商都把所有资源缓存在自己的服务器上,进行哈希匹配后直接提供离线下载资源(这也直接导致快播王欣被抓因此,作为资源的入口,电驴地址和磁链地址依然有着强大的生命力,受益于各商家庞大的离线存储,电驴、磁链地址已经近乎等同于直接的HTTP地址,并且有着比HTTP地址更... Read More

前后端分离和模块化-58到家微信首页重构之路

微信钱包内的58到家全新首页已经上线,感兴趣的同学们可以在微信中打开“我的->钱包->58到家”查看。58到家全新首页提出重构主要是为了解决以下问题每个城市开通的服务项目不同,有些内容是写死在tpl中,维护非常头疼;开通新服务或者某些UI调整(比如更换服务项的图片造成更改雪碧图)时必须走代码上线流程;原有的前端切图、后端写逻辑的开发模式造成开发周期拉长和上线流程繁琐;原有配置后台操作复杂,且可配置细节不完善;首页加载速度太慢,用户体验欠佳。58到家目前两年左右的发展期,整个技术生态还不完善。以上的问题有的是由于创业初期遗留的历史原因造成,比如代码写死和粗糙的配置后台;而有的问题是由落后的开发模式和协作模式造成的,比如前后端分工不明确、首页加载速度慢。基于上文提到的问题,重构从以下几方面入手完善配置后台,细化可配置项;数据驱动UI,轻量化tpl,内容更新无需上线流程;前后端分离,缩短开发周期,简化上线流程;... Read More

引用计数 vs GC

内存管理问题内存管理是编程过程中的一个经典问题,早期在 C 语言时代,几乎都靠 malloc/free 手动管理内存。随着各个平台的发展,到现在被广泛采用的主要有两个方法引用计数 (ARC,Automatic Reference CountingGC (Garbage Collection管理方法 ARC/G因为 Java 的流行,GC 被广泛的认知。GC 简单的说是定期查找不再使用的对象,释放对象占用的内存。基于 GC,申请的对象不需要手动释放,只需要确认对象在不再需要时,不再被其他对象引用。引用计数早期主要用于底层系统,比如文件系统的 inode 管理,后来 C++ 的 boost 库实现了一套完整的 ARC,目前流行的系统还有 Object C 也是采用的 ARC。ARC 的特点是,一个对象被引用时,引用计数增加 1,引用对象释放时,引用计数减少 1,如果引用计数为 0,释放... Read More

关于微博话题组软件构建与发布工程的分享

针对于“发布工程(Release Engineer)”,也许大家并不陌生。如维基百科中介绍Release engineering, frequently abbreviated as RE or as the clipped compound Releng, is a sub-discipline in software engineering concerned with the compilation, assembly, and delivery of source code into finished products or other software components. Associated with the software release life cycle, it was said by Boris Debic of Google Inc.对于一个有着庞大开发团队... Read More

PHP扩展开发入门PHP-CPP篇(未完待续)

在你使用PHP来解决一些事情的时候,可能会考虑亲手开发一个PHP扩展。以下是我能想到的驱使我开发PHP扩展的几点理由扩展PHP的功能在某些非常特殊的使用场景(比如数学,统计和几何等等)。相比于用纯PHP代码实现,提高PHP的性能和效率。利用自身之前掌握的另一种编程语言(对我来说是C++)来进行快速的开发。当谈论到选择建立PHP扩展的工具时,我们自然会想到两个不同的方法使用更接近PHP语法的工具,比如Zephir。使用更接近C/C++语法的工具,比如下文会提到的PHP-CPP。个人而言,选择第二种方式更为简单:C/C++是我入门编程的第一门语言,因此我一直觉得使用C/C++写一些更底层的模块更轻松些。PHP-CPP的官方网站也给出了一些为什么这么做的理由。安装与配置PHP-CPP发展迅速。在写这篇文章的时候,已经发布了0.9.1版本(两天前发布了0.9.0版本)。据文档描述,“为了迎接下... Read More

花生壳内网端口映射原理详解

关于如何建立服务器的解答一.花生壳的作用首先,我们先来了解一下花生壳的到底有什么作用。因为ADSL每次拨号上网所获得的IP地址每次都是不同的,花生壳起到的作用就是方便用户访问我们的服务器(只需要输入域名便可),而不用每次都输入IP地址那么麻烦(因为我们也不可能每次重新拨号上网后,又去告诉用户现在的服务器的IP地址什么)。例如,我们的花生壳护照下有一个域名www.oray.net ,那么只要在电脑上用该护照登陆了花生壳客户端。当别人输入www.oray.net的时候,会自动解析到那台电脑所在的网络的公网IP地址。也就是说,具体的服务器,是要我们自己去设置完成的。而不同的上网方式,建立服务器的方式是不同的,下面介绍两种常见上网方法的服务器的建立。(这两个上网方法主要区别在于用来做服务器的计算机,能否得到公网的IP地址)。二.ADSL直接拨号上网(不经过路由器等路由设备如果是通过ADSL M... Read More

拆分集合为两个和相等的子集合问题(动态规划)

题意问题描述:将1到N的连续整数组成的集合划分为两个子集合,且保证每个集合的数字和相等。例如,对于N=4,对应的集合{1,2,3,4},能被划分为{1,4}、{2,3}两个集合,使得1+4=2+3,且划分方案只有此一种。编程实现给定任一正整数N(1<=N<=39),输出其符合题意的划分方案数。样例输入1:样例输出1:1    (可划分为{1,2}、{3}样例输入2:样例输出2:1    (可划分为{1,3}、{2,4}样例输入3:样例输出3:4    (可划分为{1,6,7}、{2,3,4,5},或{1,2,4,7}、{3,5,6},或{1,3,4,6}、{2,5,7},或{1,2,5,6}、{3,4,7}思路根据动态规划思想,可以得到状态转移方程如下[code lang="php"$d[$i][$j] = $d[$i - 1][$j] + $d[$i - 1][$j - $... Read More

Codeforces Round #345 (Div. 1) B Image Preview

原题B. Image Previetime limit per test1 seconmemory limit per test256 megabyteinputstandard inpuoutputstandard outpuVasya's telephone contains n photos. Photo number 1 is currently opened on the phone. It is allowed to move left and right to the adjacent photo by swiping finger over the screen. If you swipe left from the first photo, you reach photo n. Similarly, by swiping right from the last ... Read More

Codeforces Round #345 (Div. 1) A watchmen

原题A. Watchmetime limit per tes3 secondmemory limit per tes256 megabyteinpustandard inpuoutpustandard outpuWatchmen are in a danger and Doctor Manhattan together with his friend Daniel Dreiberg should warn them as soon as possible. There are n watchmen on a plane, the i-th watchman is located at point (xi, yi).They need to arrange a plan, but there are some difficulties on their way. As yo... Read More

关于“如何开发PHP扩展”的学习小结

近期,工作上的业务并不是很忙。做了大半年的业务逻辑,尽管在PHP编码习惯和技巧上有所进步,初步熟悉了在高并发下Redis和Memcache缓存的使用和注意事项。但,应该借此闲暇时间探索下PHP底层的一些原理。这样,才是会有质的提升,写出更好的代码。正如那句话“PHP取得成功的一个主要原因之一是她拥有大量的可用扩展”,那就从PHP扩展入手了解下。在此之前,大家肯定都了解“PHP是C写的”。于是打开了PHP的源码,列出跟目录列表如下图(有亮点~ 怎么单位的女同事都没了。。)PHP(5.6.4)跟目录列表看到了熟悉的以后缀.c结尾的源文件。如图,有个名为“Zend”的文件夹很重要,这个就是PHP的核心。于是在网上搜到了两个若干PHP扩展的教程http://www.laruence.com/2009/04/28/719.htmhttp://www.walu.cc/phpboo起初,耐心的看... Read More

关于rsync工具的安装、配置与进行文件同步与备份的使用流程

安装linux yum install rsyn配置编辑文件vim /etc/xinetd.d/rsyn内容如下# default: of# description: The rsync server is a good addition to an ftp server, as it # allows crc checksumming etc.service rsyndisable = nflags = IPvsocket_type = streawait = nuser = rooserver = /usr/bin/rsynserver_args = --daemolog_on_failure += USERI创建配置文件touch /etc/rsyncd.con... Read More

解密微博红包:架构、防刷、监控和资源调度

编者按与传统意义上的红包相比,近两年火起来的“红包”,似乎才是如今春节的一大重头戏。历经上千年时代传承与变迁,春节发红包早已成为历史沉淀的文化习俗,融入了民族的血脉。按照各家公布的数据,除夕全天微信用户红包总发送量达到10.1亿次,摇一摇互动量达到110亿次,红包峰值发送量为8.1亿次/分钟。而支付宝的红包收发总量达到2.4亿次,参与人数达到6.83亿人次,红包总金额40亿元,峰值为8.83亿次/分钟。春晚直播期间讨论春晚的微博达到5191万条,网友互动量达到1.15亿,网友抢微博红包的总次数超过8亿次。为此,InfoQ策划了“春节红包”系列文章,以期为读者剖析各大平台的红包活动背后的技术细节。本文为微博篇。随着互联网的发展,打破了以往传统的发红包,带给了红包全新的玩法。微博红包已经成为用户给粉丝拜年的一种途径,土豪版成为土豪刷存在感的方式。每年的红包大战都是用户的现金盛宴,对于整个系统却... Read More

Memcache内存管理之查看所有key方法

今天在做一个Memcache的session测试,但是在测试的过程中,发现Memcache没有一个比较简单的方法可以直接象redis那样keys *列出所有的Session key,并根据key get对应的session内容,于是,我开始查找资料,翻出来的大部分是一些memcache常用命令等,但是对列出key的办法,讲解却不多,于是来到google,找到了一个国外的资料具体的内容我套用我的测试环境中,操作如下1. cmd上登录memcach telnet 10.73.13.155 1722. 列出所有keySTATS itemSTAT items:1:number 4143STAT items:1:age 3651STAT items:1:evicted 2STAT items:1:evicted_nonzero 2STAT items:1:evicted_time 2... Read More

同一台电脑关于多个SSH KEY管理

使用环境:关于同一台电脑LInux系统下使用多个SSH key 切换使用(或者多用户使用ssh提交代码要求,可以创建不同的 PUBLIC KEY ,根据下面步骤设置.(1)比如有aaa,bbb,ccc 三个帐号需要生成不同的 PUBLIC KE$ ssh-keygen -t rsGenerating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa):/root/.ssh/id_rsa_aaEnter passphrase (empty for no passphrase)Enter same passphrase againYour identification has been saved in /root/.ssh/id_rsa_aaa.Your publi... Read More

Git工作流指南:Pull Request工作流

Pull Requests是Bitbucket上方便开发者之间协作的功能。提供了一个用户友好的Web界面,在集成提交的变更到正式项目前可以对变更进行讨论。开发者向团队成员通知功能开发已经完成,Pull Requests是最简单的用法。开发者完成功能开发后,通过Bitbucket账号发起一个Pull Request。这样让涉及这个功能的所有人知道,要去做Code Review和合并到master分支。但是,Pull Request远不止一个简单的通知,而是为讨论提交的功能的一个专门论坛。如果变更有任何问题,团队成员反馈在Pull Request中,甚至push新的提交微调功能。所有的这些活动都直接跟踪在Pull Request中。相比其它的协作模型,这种分享提交的形式有助于打造一个更流畅的工作流。SVN和Git都能通过一个简单的脚本收到通知邮件;但是,讨论变更时,开发者通常只能去回复邮件。这... Read More

提高PHP编程效率你得这么做

用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则 不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加 上了双引号)。1、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。2、$row[’id’] 的速度是$row[id]的7倍。3、echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。4、在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。5、注销那些不用的变量尤其是大数组,以便释放内存。6、尽量避免使用__get,__set,__autoload。7、require_once()代价昂贵。... Read More

PHP中9大缓存技术总结

1、全页面静态化缓存也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程。此种方式,在CMS系统中比较常见,比如dedecms;一种比较常用的实现方式是用输出缓存Ob_start(******要运行的代码******$content = Ob_get_contents();****将缓存内容写入html文件****Ob_end_clean();2、页面部分缓存该种方式,是将一个页面中不经常变的部分进行静态缓存,而经常变化的块不缓存,最后组装在一起显示;可以使用类似于ob_get_contents的方式实现,也可以利用类似ESI之类的页面片段缓存策略,使其用来做动态页面中相对静态的片段部分的缓存(ESI技术,请baidu,此处不详讲)。该种方式可以用于如商城中的商品页;3、数据缓存顾名思义,就是缓存数据的一种方式;比如,商城中的某个商品... Read More

PHP Redis扩展操作类

PHP语言Redis扩展类DEMO[code lang="php"class MyRedis private $redis;/** @param string $hos* @param int $pos*public function __construct($host = '10.102.1.8', $port = 6379) $this->redis = new Redis$this->redis->connect($host, $port);return $this->red/** 设置值 构建一个字符串* @param string $key KEY名称* @param string $value 设置值* @param int $timeOut 时间 0表示无过期时间*public function set($key, $value, $ti... Read More

恢复删除文件的方法

真的是很巧,正在浏览博客时,一个同学问我如何恢复PC被删除的文件,而恰恰正在浏览的这篇文章提到的方法是她在网上找到的。看来比较实用,贴出来在我们平常使用电子设备时,总时不时地手贱误删文件或者电脑借给别人用了别人却把你的东西删了而且还“体贴地”清空了回收站,这时我们就想要恢复文件,现在给你一颗后悔药,让你找回错删文件。PC错删文件恢复加入在PC上误删文件还清空了回收站,且没有备份,可以这样做。快捷键“Win+R”,打开Windows的运行命令窗口,输入“regedit”进入注册表中,找到“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\DeskTop\NameSpace\”,在右边空白处单击右键,新建“项”,并重命名为“{645FFO40-5081-101B-9F08-00AA002F954E},接... Read More

我用 Go 语言做了一个红白机模拟器

最近我编写了一个 FC 模拟器。制作这样一个模拟器主要是出于兴趣以及为了从中学习 FC 的工作原理。在这个过程中我学到了很多有趣的知识,于是写下这篇文章同诸位分享我所学到的内容。由于相关的文档已经有很多了,所以这里我只打算讲述一些有趣的特性。请注意,接下来都将是些技术方面的内容。图1 我的模拟器可以将画面录制成 GIF。这是我正在玩《大金刚》(Donkey Kong)的画面。CPFC 使用 MOS 6502(主频1.79MHz)作为其CPU。6502 是一枚诞生于 1975 年(距今已有 40 年之久了)的 8位微处理器。在当时这款芯片非常流行,不仅应用于 FC,还被广泛应用于雅达利 2600 & 800、Apple I & II、Commodore 64、VIC-20、BBC Micro等机器上。事实上,直到今天6502的修订版(65C02)还依然在生产。 6502 的... Read More