Author: admin

如何打造一个破千 Star 的开源项目

这其实是之前在北京 Laravel Meetup 的一次分享内容,不过考虑到有很多人在公众号想听听关于我是如何做开源这个话题,所以就再次拿它讲一个文字版。

关于我,这个就没啥可讲的了,EasyWeChat 作者、Laravel China 创始人之一。

要想做好开源,这 8 个步骤缺一不可,当然这个过程周期是持续的,你会在不断开源过程中提升自己,学到新的东西。

第一件头疼的事情当然是 “做什么?”,不过根据我的个人经验来看,找一个开源项目 idea 并没有想象的那么难,一般有以下三个渠道:

第一个渠道是项目,因为大部分都是来自工作生活中,所以上图我把“项目”排到第一位。很多时候在我们的开发工作中,会经常遇到重复性的工作,比如你每启动一个项目都要搞一遍短信的发送,又得去找一遍用哪家的服务,还得折腾一遍权限系统,其实这些都是激发你创意的好时机。你会发现不是你一个人在重复,而是大家都在这样不停的重复做很多原本不需要重复做的事情。所以这时候就是你造轮子的好时机。

第二个创意来源就是交流群,我相信大部分同学的 QQ 都有不少技术交流群吧,你会发现很多人在群里会提重复的问题,或者一些伸手党会经常来问一些“有没有基于xxx的项目啊”、“有没有人会xxx” 诸如此类的问题。如果你发现这个需求确实挺多的,并且也没有一个好用的轮子,你就动手吧!

第三就是社区,一些论坛或者博客,也是发现需求的地方,基本都是从别人的讨论中发现创意,这些用户就是你的项目最直接用户。

做开源项目其实是一件比较费时费心的工作,它的最大难点并不在于代码,而是后期的维护持续的跟进。但是要想制作出一个受欢迎的开源项目,写好代码永远是关键的点,试想一下,一个人从你各种吹 B 的链接点到 GitHub,看到源码乱七八糟,格式不统一,驼峰+下划线各种混写,对齐也是 tab + space,注释基本为 0 的时候那个场景,是很吓人的,所以不管你的抽象能力怎么样,也不管你这个模块写得是否是那么的科学,请做好第一步:写好代码。

上图我列举了一些名词,难免有同学不认识,我这里大概介绍一下:

PSR 是国际框架组织 PHP-FIG(PHP Framework Interop Group) 制定的一系列规范,包括不限于自动加载,编码规范、缓存以及其它一系列接口规范。它虽然不是 PHP 官方标准,但是目前大多数开源项目都是按这个标准来的,所以,有必要认真了解一下。

深度学习和神经网络简介

有一次,我和Vito(我的合伙人)聊起了当下热门的几种技术趋势。当谈及它们在未来可能的发展前景的时候,Vito说了下面的一段话:

人工智能是个信息革命到蒸汽机规模之间的机会,相比之下虚拟现实应该是移动互联网级别的,而用户个性化服务应该是伴生规模的。

如果人工智能技术带来的变革确实能够比拟工业革命的话,那么它势必会成就一代人,同时也淘汰掉一代人。而且,仔细想想,其实人工智能离我们并不遥远,甚至可以说已经开始深入到我们的日常生活中了。从iPhone里的Siri,到各大网站的内容推荐系统,再到图像识别和人脸识别技术的广泛应用,这些场景的背后都有这项技术在发挥作用。…

MongoDB一些常见及生僻的问题分析

下面来看Russell对MongoDB一些常见及生僻的问题做出分析:

32位 vs 64位

现在大多数的服务器都对32位操作系统实现支持,更有许多新型硬件支持着允许更多RAM的64位操作系统。

MongoDB也同时发布了32位及64位两个版本的数据库。归结于MongoDB使用的内存映射文件,32位版本只支持2G数据的存储。对于标准的Replica Set,MongoDB只拥有单一的处理策略 —— mongod。如果你想在未来储存2G以上的数据,请使用64位版本的MongoDB。如果拥有分片安装,那么32位版本同样可以使用。

总结:使用64位版本或者理解32位版本的限制。…

php开发基于mongodb数据库的字段类型问题

比如下面的数据结构

{
    'field_1': 1,
    'field_2': '1',
    'field_3': true
}

在脚本语言里,这三个值是相等的,但mongodb可不这样认为,如果你用string类型去寻找field_1的值,那么永远找不到。

可是像在php这种弱类型语言里,本来就是string,int傻傻分不清楚,所以使用mongodb的php程序员经常会出现以下杯具场景,你存储的时候主键是一个用函数生成的int型数字,但取出记录的时候可能直接使用前端传递过来的GET参数,很不巧它只能是一个string类型,这样你就永远找不到这条记录了。

解决以上问题,我觉得一开始就用php7的标量类型约束,最好启用严格模式是个好习惯,这样类型不对了,能有个提示,你就可以进行类型转换了。

 

转载请注明:http://blog.p2hp.com/archives/4708…

我是如何为技术博客设计一个推荐系统(上):基于统计与评分

过去的两周里,我一直忙于为 『玩点什么』 设计一个推荐系统(即,recommend system)。在这个过程中,参考了之前的 几本书籍,查找了一系列的资料。想着这些资料上,大部分都是大同小民的,实现了几个简单的推荐功能,改进了标签推荐算法,便想着写篇文章记录一下。

玩点什么』,是一个基于 Django、Python 的 CMS 系统(Mezzanine)。是的,和我的博客使用的是同一个 CMS 系统。由于使用的是 Python 语言,因此对于机器学习具有天生的优势。…

深入了解 Laravel 5.5 包自动发现 Package Auto Discovery

Laravel 5.5 发布在即,目前已经确定会增加一个神奇的新特性:Package Auto Discovery。本文不是聚焦于他是怎么用的,而是看看它的源码,是怎么实现Package Auto Discovery的。

composer.json

一切的起源都是来自 composer.json ,在使用 composer 的时候,你可以在 post-autoload-dump 部分指定你想执行的脚本,比如在 Laravel 5.5 的时候,我们可以看到这样的定义:…

Page 1 of 12412345...102030...Last »