🦄 2024 独立开发者训练营,一起创业!查看介绍 / 立即报名(剩余10个优惠名额) →

博客

开源宁皓网

最近打算做一个系统点的 Drupal 教程,做成一个系列,每个部分都能学到一个特定类型的功能。我想用一个真实点的项目去做,也就是做完这个系列课程以后,还能有个真正能用的东西,不错!想半天要做个什么项目,后来觉得宁皓网也是个不错的项目,有视频播放,有购物车功能。做好以后,开源,大家还可以用它挣点钱。这让我想起了 ...

四年前大概也是这个时间,我离开了跟朋友一块儿开的公司(黄了),跟小雪用电动三轮拉着一车办公用品回到了家,小雪也辞掉了整天让她不开心的工作,我们俩的银行里加一块也只有几千块,哦,我好像还得到了点散伙费。年底我们把做好的网站发布以后,根本也没谱能不能行,直到有一天,小雪惊讶地盯着屏幕跟我说,居然有人付款了,于是俩人抱在一起泪奔。

为啥开源

宁皓网现在可以让我们一家子过上正常的生活,首先得感谢各位衣食父母的支持,还有就是要感谢阿里云跟 Drupal 。陆续会有些朋友想买宁皓网这个程序,我没好意思卖是因为,这个网站还是我几年前做的,所以后台一片混乱,主题也一样。即使送给您,大概也得学很久才能明白什么是什么。

所以我决定重新用 Drupal 再做一次,然后开源,整个过程会录成视频,宁皓网的 VIP 们也可以学到一些东西,可以使用类似的方法去创建自己需要的网站。

怎么做呢

还是基于 Drupal 7 ,主要实现的功能跟现在的宁皓网差不多,视频播放,在线支付,搜索,权限控制。基本的功能我想直接使用 Drupal 现成的模块就能实现,剩下的大部分工作,应该是怎么把这个网站做的更好用。

什么意思

嘿嘿,我的主要目的还是让您学会怎么样使用 Drupal 去做出自己想要的东西。这个项目最终能做成什么样子,我也不知道,不过我想应该比现在的宁皓网更好用一些。

崭新的宁皓社区

身边儿有人总是好的,感觉没那么孤单。一个干净,整洁,没那么多干扰,自己也经常想去的地方。遇到点事,就写几句,不期望能有多少人回复,但你知道,一定有人看到了。

这几天给宁皓网添加了一个社区论坛(http://talk.ninghao.net),在单独的阿里云实例上( 2G 内存,2M 带宽,1 核 CPU,在杭州节点 ),论坛是 rails + ember 的应用。

Ninghao Playbook:自动化配置本地的 Drupal 开发环境

Ninghao Playbook(宁皓剧本),是用 Ansible 写的一个自动化配置 Drupal 本地开发环境的剧本,它需要结合 Vagrant 使用。它可以自动配置虚拟机,安装好 Drupal 所需要的运行环境(nginx,php-fpm,mariadb ... ),还有 Drupal 本身,以及一些常用的模块(views,token,features,module_filter ... )。

playbook

自动化配置服务器 — 配置管理系统( Configuration Management System )

在计划 Drupal 从头到尾这个系列课程的时候,我觉得我们的问题是,不仅仅是要把东西做出来,怎么去做,用什么方法,这个流程对不对,能不能简化,自动化,团队化,这些也非常重要。首先我想的是,能不能找一种自动化的方法,去在本地配置一个开发 Drupal 的环境,并且直接就把 Drupal 安装好了,甚至可以自动去安装一些常用的模块。

我经常跟大伙说,您要在本地电脑上,用虚拟机手工去搭建一个开发环境,这个虚拟机用 Vagrant 去管理。按照 Web 开发环境这个学习手册,你应该可以做到手工去搭建这个环境。我推荐先亲自动手去搭建这个环境,是因为,您需要了解自己都做了什么,每一个步骤是什么意思,熟悉在命令行界面下工作。这些都了解了以后 ,我们就要用一种自动化的方式去做这些事了,重复的工作一点也不美。

课程预告:Drupal 从头到尾

关于 Drupal ,我们已经说了不少,不过还是留下了很多问题。比如 Drupal 开发的流程应该是什么样的,怎么样使用 Drupal 的 API 来创建自己需要的模块,如何用 Drupal 开发一个真正的产品。今年的一开始,我们主要先解决这三个问题。这是一个系统的课程,可能要持续挺长时间。我打算每个礼拜完成一小部分,然后发布视频,并且一起讨论遇到的问题。为了这个课程,我特意创建了一个论坛(创建中 ... ),这样可以更方便的一起讨论并解决遇到的问题。这个课程结束以后,你应该会对 Drupal 有一个更好的理解,更有自信使用 Drupal 去创建你想要的网站应用。

这开始之前,先留个作业,完成下面这几个学习手册:

  1. 学习手册:Web 开发环境与服务器生产环境
  2. 学习手册:前端开发工作流程
  3. 学习手册:PHP 脚本语言
  4. 学习手册:Drupal 内容管理系统

不需要全部理解,不过至少要知道自己遇到了什么问题,需要什么,才能解决。不用太担心 :)

简单总结下去年我们都做了些什么

去年,我们做了一些看起来零七八碎的东西,其实它们也是有关联的,大概分成几块:工作流程,前端开发,开发环境,还有后端技术。

工作流程

一个现代的工作流程,可以让我们从混乱中解脱,少做重复的动作,更有效率。这也是专业与业余的重要区别,我们都想努力变成专业的,因为我们在乎自己做的事情。

Git,是必备工作,它的主要功能就是版本控制,这里说的版本,就是你每次修改你的项目,都算是项目的一个版本,你可以把这个版本用 Git 保存一下,这样你就可以再用 Git 去控制它,比如把项目恢复到你保存的某个版本上。入门很简单,先熟悉在命令行界面下工作,然后再学几个 Git 常用的命令就行了。起步,您真的不需要一本 500 页的书,在宁皓网花 1个半小时看视频足够了。

Bower 是个小工具,可以管理前端项目用的资源,比如一些框架什么的,它用一个文件描述了项目需要用的东西,用一条命令就可以去自动下载这个文件上列出的资源,还有这些资源所依赖的其它的东西。用 20 分钟,看一下这个课程。

Laravel 5 中文手册(十二):外观 Facades

介绍

Facades 为应用的 IoC container 的类提供了一个静态的接口。Laravel 里面自带了一些 Facades,其实你应该已经用到它们了,不过可能还不知道它们是什么。Laravel 的 Facades 像是 Ioc container 类的静态代理,比起传统的静态方法(Static methods),Facades 更简洁,也更容易表达,更具可测性(Testability)与灵活性(Flexibility)。

有时候你可能需要为你的应用跟包去创建自己的 Facades,下面我们就一起去看一下相关的概念,开发,还有这些类的用法。

注意:在了解 Facades 之前,你最好先了解一下 Laravel 里的 Ioc Container

Laravel 5 中文手册(十一):合同 Contracts

Laravel 的合同(Contracts)就是在框架里定义核心服务的一些接口。比如,一个 Queue 合同定义了队列工作需要用到的一些方法,Mailer 合同里边定义了发送邮件要用的一些方法。

框架为每个合同都提供了一个对应的实施。比如,Laravel 提供了一个 Queue 实施,里面有各种驱动,Mailer 实施里面用的是 SwiftMailer 。

所有的 Laravel 合同都在各种的 Github 仓库里。这为所有可用的合同,都提供了一个可以快速查看参考的地方,这样其它的开发者可以使用这些独立的,解耦的包。

Laravel 5 中文手册(十):服务容器 Service Container

介绍

Laravel Service Container 是管理类的依赖的强大的工具。依赖注入(Dependency injection)其实就是使用类的构造函数或者 setter 方法,把类所依赖的东西注入到类里面。

来看个简单的示例:

<?php namespace App\Handlers\Commands;

use App\User;
use App\Commands\PurchasePodcast;
use Illuminate\Contracts\Mail\Mailer;

class PurchasePodcastHandler {

    /**
     * The mailer implementation.
     */
    protected $mailer;

    /**
     * Create a new instance.
     *
     * @param  Mailer  $mailer
     * @return void
     */
    public function __construct(Mailer $mailer)
    {
        $this->mailer = $mailer;
    }

    /**
     * Purchase a podcast.
     *
     * @param  PurchasePodcastCommand  $command
     * @return void
     */
    public function handle(PurchasePodcastCommand $command)
    {
        //
    }

}

在上面例子里,PurchasePodcast 命令处理器需要在有人购买了 podcast 以后去发送 e-mail 。所以,我们要去注入一个可以发送邮件的服务。因为这个服务是注入进来的,所以我们就可以很容易把它换成其它的实施。 在 “mock” 的时候也会很容易,或者在测试应用的时候,去创建一个假的 mailer 实施。

要去创建大型的应用,或者为 Laravel 核心做贡献,都需要深入的理解 Laravel Service Container 。

Laravel 5 中文手册(九):服务提供者 Service Providers

介绍

Service Providers 是所有 Laravel 应用启动(Bootstrapping)的中心位置。包括你自己的应用,还有所有 Laravel 的核心服务都是通过 Service Providers 启动的。

启动的大概的意思就是去注册一些东西,包括注册 Service Container,事件监听器,过滤器,甚至是路由。Service Providers 是配置你的应用的中心位置。

打开 Laravel 里的 config/app.php 文件,你会看到一个 providers 数组。这些就是你的应用要加载的所有的 Service provider 类。这里面有些是延迟(deferred)Providers ,意思就是它们不会在每次请求的时候都去加载,只有在真正需要它们提供的服务的时候才会被载入进来。

在下面我们学一下怎么样创建自己的 Service Providers ,并且把它们注册到 Laravel 的应用里。

微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点