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

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

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...阅读全文

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

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

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

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

百度短信API开发教程

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

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

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

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

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

引用计数 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,释放...阅读全文

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

针对于“发布工程(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.对于一个有着庞大开发团队...阅读全文

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版本)。据文档描述,“为了迎接下...阅读全文

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

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

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

题意问题描述:将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}思路根据动态规划思想,可以得到状态转移方程如下如果,对动态规划不理解建议看下这个视频:http://open.163.com/movie/2010/6/8/1/M6TCSIN...阅读全文

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 ...阅读全文