通过 U 盘启动重装 macOS 系统

重装系统是工作和生活中经常需要做的事情,作为一名开发人员,学会该技能你才是一名合格的程序猿!以后再也不会遇到“程旭元你会装系统吗?”的尴尬了!本文主要介绍怎样通过U盘启动重新安装 macOS 系统,以安装当前最新的 macOS Sierra 10.12 为例。

一、准备工作

1. 准备一个 8G 或以上的U盘,请备份U盘里面的数据,后面的操作会抹掉U盘中的数据;
2. 在 AppStore 中下载 macOS Sierra 安装包;或者通过其他途径下载,拖动至自己的应用程序(Applications)文件夹。

二、格式化U盘

1. 插入U盘,前往「应用程序」->「实用工具」里面找到并打开「磁盘工具」;
2. 在左方列表中找到 U 盘的名称并点击
3. 右边顶部选择「分区」,然后在「分区布局」选择「1个分区」
4. 在分区信息中的 「名称」输入「myl」 (由于后面的命令中会用到此名称,如果你要修改成其它名称,请务必对应修改后面的命令)
5. 在「格式」中选择 「Mac OS 扩展 (日志式)」
6. 这时,先别急着点“应用”,还要先在 「选项」里面,选择「GUID 分区表」
7. 开始格式化

三、制作启动盘

1. 在「应用程序」->「实用工具」里面找到「终端」并打开;
2. 复制下面的命令,并粘贴到「终端」里,按回车运行

$ sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/myl --applicationpath /Applications/Install\ macOS\ Sierra.app --nointeraction

回车后,系统会提示你输入管理员密码,接下来就是等待系统开始制作启动盘了。这时,命令执行中你会陆续看到类似以下的信息:

WARNING: Improper use of the sudo command could lead to data loss
or the deletion of important system files. Please double-check your
typing when using sudo. Type "man sudo" for more information.

To proceed, enter your password, or type Ctrl-C to abort.

Password:
Erasing Disk: 0%... 10%... 20%... 30%...100%...
Copying installer files to disk...
Copy complete.
Making disk bootable...
Copying boot files...
Copy complete.
Done.

等待命令运行完成并显示「Done.」,此时系统启动盘制作完毕!

四、U盘启动安装 macOS Sierra

当你插入制作完成的 macOS Sierra U盘启动盘之后,桌面出现「Install macOS Sierra」的盘符那么就表示启动盘是正常的了。那么怎样通过 USB 启动进行全新的系统安装呢?

其实很简单,步骤如下:

1. 重启 Mac,听到开机启动音之后按下 option 键,在磁盘选择界面选择 U 盘启动,按回车确认
2. 这时选择 U 盘的图标回车,即可通过 U 盘来安装 macOS Sierra 了!你可以直接覆盖安装系统(升级),也可以在磁盘工具里面格式化抹掉整个硬盘,或者重新分区等实现全新的干净的安装。


本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma

Laravel 5.3 表单实现增删改查 (curd) 快速入门教程(Demo)

一、简介:

一个 Laravel 5.3 表单实现 curd 快速入门教程(Demo)

代码下载:https://github.com/yanlongma/laravel-curd

Laravel 开发交流群(521295157),欢迎加入!

Laravel 系列视频教程:http://www.mayanlong.com/laravel.html

二、安装:

1. 连接数据库

修改 .env 配置文件

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root

2. 新建数据表

首先创建一个数据库 laravel,然后再创建数据表。

2.1. 使用 Laravel 的迁移创建数据表

php artisan migrate

2.2 手动执行以下 SQL 创建数据表

DROP TABLE IF EXISTS students;

CREATE TABLE IF NOT EXISTS students(

    `id` INT AUTO_INCREMENT PRIMARY KEY ,
    `name` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '姓名',
    `age` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '年龄',
    `sex` TINYINT UNSIGNED NOT NULL DEFAULT 10 COMMENT '性别',    /* 10.未知 20.男 30.女 */

    `created_at` INT NOT NULL DEFAULT 0 COMMENT '新增时间',
    `updated_at` INT NOT NULL DEFAULT 0 COMMENT '修改时间'

)ENGINE=InnoDB DEFAULT CHARSET=UTF8 COMMENT='学生表';

3. 访问

打开浏览器,输入你的项目地址,访问前请确认自己的地址,如下:

http://localhost:8888/laravel-curd/public/index.php

如果出现以下页面,则安装成功,您就可以开始 Laravel 的学习之旅啦!

curd-2.gif

MAMP 环境下为 php 添加 pcntl 扩展

一、前言:

pcntl 介绍:

pcntl 扩展可以支持 PHP 的多线程操作。(非Unix类系统不支持此模块)

phpize 介绍:

phpize 可以用来给 PHP 动态的添加扩展。比如编译 PHP 时忘记添加某扩展,后来想添加该扩展,即可以使用 phpize 动态的添加该扩展。

本文将介绍如何使用 phpize 给 Mac下的集成环境 MAMP 添加 PHP 的 pcntl 扩展。类 Unix 的环境都可以使用本方法安装,注意灵活变通。

二、安装:

下面演示的是给 MAMP的PHP 5.6.10版本添加 pcntl扩展。

下载和本地 PHP 版本对应的源码包,地址为:

http://www.php.net/releases/

然后按照如下步骤进行编译:

# 解压源码包并初始化目录
$ tar -xzvf php-5.6.10.tar.gz
$ mv php-5.6.10 php
$ mkdir -p /Applications/MAMP/bin/php/php5.6.10/include
$ mv php /Applications/MAMP/bin/php/php5.6.10/include

# 检测系统配置
$ cd /Applications/MAMP/bin/php/php5.6.10/include/php
$ ./configure

# 添加一些标志来告诉系统怎样编译。MAMP PHP已经建成这样,如果不这样做,编译的共享对象将无法工作。
$ MACOSX_DEPLOYMENT_TARGET=10.10
$ CFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp"
$ CCFLAGS="-arch i386 -arch x86_64 -g -Os -pipe"
$ CXXFLAGS="-arch i386 -arch x86_64 -g -Os -pipe"
$ LDFLAGS="-arch i386 -arch x86_64 -bind_at_load"
$ export CFLAGS CXXFLAGS LDFLAGS CCFLAGS MACOSX_DEPLOYMENT_TARGET

# 编译 pcntl.so 文件
$ cd ext/pcntl
$ phpize
$ ./configure
$ make

# 将编译出来的扩展文件pcntl.so 移动到php的扩展目录
$ cp modules/pcntl.so /Applications/MAMP/bin/php/php5.6.10/lib/php/extensions/no-debug-non-zts-20131226/    

# 向php.ini 文件中添加该扩展
$ echo "extension=pcntl.so" >> /Applications/MAMP/bin/php/php5.6.10/conf/php.ini

# pcntl现在应该已经启用,要检查是否安装成功,只需运行:
$ /Applications/MAMP/bin/php/php5.6.10/bin/php --ri pcntl
pcntl
pcntl support => enabled

如出现以上信息,则说明该扩展已安装成功。

参考资料:

PHP 官网:http://php.net/manual/zh/book.pcntl.php


交友互动:

本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma

使用 Composer 安装 Laravel 框架

前言:

1. Composer 安装 Laravel 有两种方式:

第一种是通过 Composer 的 create-project 命令安装 Laravel 框架,
第二种是先通过 Composer 安装 Laravel 安装器,然后通过安装器安装 Laravel 框架。

2. 为什么 Composer 可以安装 Laravel 框架呢?

其实 Laravel框架也是一个 Composer包,我们可以通过如下命令查看:

$ composer show --all laravel/laravel

一、create-project

第一种通过 Composer的 create-project 命令安装 Laravel 框架,

$ composer create-project laravel/laravel --prefer-dist [别名]

二、Laravel 安装器

第二种是先通过 Composer 安装 Laravel 安装器,然后通过安装器安装 Laravel 框架。

1. 使用 composer 全局安装 Laravel 安装器

$ composer global require "laravel/installer"

2. 配置PATH环境变量

将 ~/.composer/vendor/bin 添加到 PATH 环境变量中,这样可执行文件 laravel 就能被你的系统检测到了。

编辑 ~/.bash_profile 文件, vim ~/.bash_profile 加入如下代码:

export PATH="~/.composer/vendor/bin:$PATH"

3. 检测是否配置成功

新打开一个终端,输入如下命令:

$ laravel --version
Laravel Installer version 1.3.3

如果出现该信息,说明安装器已安装成功。

4. 安装Laravel

打开终端,输入如下命令即可安装:

$ laravel new blog

5. 安装最新的开发版本

如果童鞋们对最新的开发版本比较感兴趣,可以下载进行测试,加上 --dev 参数即可:

$ laravel new demo --dev

交友互动:

本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma

Composer 常用命令总结(三)

# init(初始化)

该命令用于创建 composer.json 文件,并进行基础信息配置:

$ composer init

可以配置Package name、Description、Author、Minimum、Package Type、License、dependencies 及 dev dependencies 信息。

完成后配置文件内容如下:

{
    "name": "test/test",
    "description": "test init",
    "type": "library",
    "license": "License Description",
    "authors": [
        {
            "name": "mayanlong",
            "email": "json_vip@163.com"
        }
    ],
    "require": {}
}

# search(搜索)

根据名称搜索相关的包,成功后会列出符合的相关包的信息,本处以搜索 monolog 为例:

$ composer search monolog 
monolog/monolog Sends your logs to files, sockets, inboxes, databases and various web services
kdyby/monolog Integration of Monolog into Nette Framework

# show(详情)

根据包的名称,列出包的相关信息,本处以查看 monolog/monolog 为例:

$ composer show -all monolog/monolog
name     : monolog/monolog
descrip. : Sends your logs to files, sockets, inboxes, databases and various web services
keywords : log, logging, psr-3
versions : dev-master, 2.0.x-dev, 1.x-dev, 1.21.0, 1.20.0, 1.19.0, 1.18.2, 1.18.1, 1.18.0, 1.17.2, 1.17.1, 1.17.0, 1.16.0, 1.15.0, 1.14.0, 1.13.1, 1.13.0, 1.12.0, 1.11.0, 1.10.0, 1.9.1, 1.9.0, 1.8.0, 1.7.0, 1.6.0, 1.5.0, 1.4.1, 1.4.0, 1.3.1, 1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0.2, 1.0.1, 1.0.0, 1.0.0-RC1

想查看更多信息,就亲自将该命令复制到命令行执行吧。

# install (安装)

我们先在 composer.json 配置中添加一个 monolog/monolog 依赖库,如下:

{
    "name": "test/test",
    "description": "test init",
    "type": "library",
    "license": "License Description",
    "authors": [
        {
            "name": "mayanlong",
            "email": "json_vip@163.com"
        }
    ],
    "require": {
        "monolog/monolog": "1.21.*",
    }
}

然后通过如下命令进行安装依赖

$ composer install

# update (更新)

如果我们新增或者删除了某个依赖,可以通过如下命令进行更新

$ composer update   

# require (申明依赖)

我们也可以用命令直接添加依赖,执行该命令后将自动下载,命令如下:

$ composer require symfony/http-foundation

本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma

Laravel 5.2 教程 - 队列

一、简介

Laravel 队列组件提供一个统一的 API 集成了许多不同的队列服务,队列允许你延后执行一个耗时的任务,例如延后至指定的时间才发送邮件,进而大幅的加快了应用程序处理请求的速度。

由于本例子用到邮件功能,不了解的童鞋请移步(Laravel 5.2 教程 - 邮件)

二、配置

1. 配置文件

队列配置文件存放在config/queue.php。在该文件中你将会找到框架自带的每一个队列驱动的连接配置,包括数据库、Beanstalkd、 IronMQ、 Amazon SQS、 Redis以及同步(本地使用)驱动。其中还包含了一个null队列驱动以拒绝队列任务。

.env 配置默认是同步sync 本文章演示使用database方式

2. 迁移队列需要的数据表

php artisan queue:table
php artisan migrate

三、编写任务类

1. 生成任务类

默认情况下,应用的所有队列任务都存放在app/Jobs目录。

php artisan make:job SendReminderEmail

该命令将会在app/Jobs目录下生成一个新的类,并且该类实现了Illuminate\Contracts\Queue\ShouldQueue接口,告诉Laravel该任务应该被推送到队列而不是同步运行。

2. 编写任务类

下面是一个通过队列发送邮件的简单例子:

<?php

    namespace App\Jobs;

    use App\Jobs\Job;
    use Illuminate\Queue\SerializesModels;
    use Illuminate\Queue\InteractsWithQueue;
    use Illuminate\Contracts\Queue\ShouldQueue;
    use Mail;

    class SendReminderEmail extends Job implements ShouldQueue
    {
        use InteractsWithQueue, SerializesModels;

        protected $email;

        /**
         * 创建一个新的任务实例
         *
         * @param $email
         */
        public function __construct($email)
        {
            $this->email = $email;
        }

        /**
         * 执行任务
         *
         * @return void
         */
        public function handle()
        {
            // 发送邮件
            Mail::raw('Queue test', function($message) {

                $message->subject('测试邮件,勿回');
                $message->to($this->email);
            });
        }
    }

四、推送任务到队列

1. 控制器中

因为Laravel app/Http/Controllers/Controller.php 使用了DispatchesJobs trait。该trait提供了一些允许你方便推送任务到队列的方法,例如dispatch方法:

$this->dispatch(new SendReminderEmail('849291170@qq.com')); 

2. DispatchesJobs trait

如果你想在路由或控制器之外的某些地方分发任务,可以使用DispatchesJobs trait 在任何地方将任务添加到队列。下面是在模型中使用的例子:

<?php

    namespace App;

    use App\Jobs\SendReminderEmail;
    use Illuminate\Database\Eloquent\Model;
    use Illuminate\Foundation\Bus\DispatchesJobs;

    class Student extends Model
    {
        use DispatchesJobs;

        public static function queue()
        {

            dispatch(new SendReminderEmail('849291170@qq.com'));
        }
    }

3. 延迟执行

下面是延迟60秒执行的例子:

$job = (new SendReminderEmail('849291170@qq.com'))->delay(60);
$this->dispatch($job);

五、运行队列监听器

Artisan控制台运行如下命令

php artisan queue:listen

使用--tries开关来指定任务最大可尝试执行次数

php artisan queue:listen --tries=3

六、处理失败的任务

任务执行次数达到最大限制后,会被插入到failed_jobs表,失败任务的名字可以通过配置文件config/queue.php来配置。

1. 迁移记录失败队列需要的数据表

php artisan queue:failed-table
php artisan migrate

2. 重试失败任务

要查看已插入到failed_jobs数据表中的所有失败任务,该命令将会列出任务ID,连接,对列和失败时间。

php artisan queue:failed

任务ID可用于重试失败任务,例如,要重试一个ID为5的失败任务,要用到下面的命令:

php artisan queue:retry 5

要重试所有失败任务,使用如下命令即可:

php artisan queue:retry all

如果你要删除一个失败任务,可以使用queue:forget命令:

php artisan queue:forget 5

要删除所有失败任务,可以使用queue:flush命令:

php artisan queue:flush

交友互动:

本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma

Composer 中国全量镜像(二)

为什么要使用Composer中国全量镜像?

一般情况下,安装包的数据(主要是 zip 文件)是从 github.com 上下载的,安装包的元数据是从 packagist.org 上下载的。

然而,由于众所周知的原因,国外的网站连接速度很慢,并且随时可能被“墙”。

“Composer 中国全量镜像”所做的就是缓存所有安装包和元数据到国内的机房并通过国内的 CDN 进行加速,这样就不必再去向国外的网站发起请求,这样我们使用Composer时就会更加快速、稳定。

一、查看当前镜像地址

在命令行输入如下命令,即可查看镜像地址:

$ composer config -g repo.packagist
{"type":"composer","url":"https://packagist.org","allow_ssl_downgrade":true}

也可以使用 composer config -l -g 查看所有全局配置

二、启用中国全量镜像服务:

启用中国全量镜像服务有两种方式,具体配置方法如下:

1. 系统全局配置:

即将配置信息添加到 Composer 的全局配置文件 config.json 中。修改composer的全局配置文件(推荐方式),打开命令行并执行如下命令:

composer config -g repo.packagist composer https://packagist.phpcomposer.com

2. 单个项目配置:

即将将配置信息添加到某个项目的 composer.json 文件中。修改当前项目的composer.json配置文件有两种方式,最后都是向文件中添加如下配置信息:

"repositories": {
    "packagist": {
        "type": "composer",
        "url": "https://packagist.phpcomposer.com"
    }
}

2.1 打开命令行并进入项目的根目录(也就是 composer.json 文件所在目录),执行如下命令:

composer config repo.packagist composer https://packagist.phpcomposer.com

该命令将会在当前项目中的 composer.json 文件的末尾自动添加镜像的配置信息

2.2 手动向composer.json文件中添加以上信息

Composer 安装(一)

一、简介

Composer 是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。

二、为什么要使用Composer

  • 你有一个项目依赖于若干个库。
  • 其中一些库依赖于其他库。
  • 你声明你所依赖的东西。
  • Composer 会找出哪个版本的包需要安装,并安装它们(将它们下载到你的项目中)。

三、安装方式

1. Composer-Setup.exe

Win用户直接下载并运行 Composer-Setup.exe,它将安装最新版本的Composer ,并设置好系统的环境变量,因此你可以在任何目录下直接使用composer命令。(这是安装Composer最简单的方式,但是需要翻墙)

2. 通用安装方式(Win、Linux、Mac都能用),使用composer.phar文件(其实就是下载composer.phar文件,不需要翻墙)

2.1 直接下载composer.phar文件(点击下载)

2.2 打开命令行并执行下列命令安装最新版本的 Composer

$ php -r "readfile('https://getcomposer.org/installer');" | php
Downloading 1.1.3...

Composer successfully installed to: /Users/myl/Desktop/composer.phar
Use it: php composer.phar

这将检查一些PHP的设置,然后下载composer.phar到当前工作目录中。这是Composer的二进制文件。这是一个PHAR 包(PHP 的归档),这是PHP的归档格式可以帮助用户在命令行中执行一些操作。

3. 检测是否安装成功

输入如下命令,如果成功则出现以下信息:

$ php composer.phar
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.1.3 2016-06-26 15:42:08

局部安装和全局安装

四、局部安装

上述下载Composer的过程正确执行完毕后,可以将composer.phar文件复制到任意目录(比如项目根目录下),然后通过 php composer.phar 指令即可使用Composer了!

五、全局安装

全局安装是将Composer安装到系统环境变量PATH所包含的路径下面,然后就能够在命令行窗口中直接执行composer命令了。

1. Mac或Linux系统

打开命令行窗口并执行如下命令将前面下载的composer.phar文件移动到 /usr/local/bin/ 目录下面:

sudo mv composer.phar /usr/local/bin/composer   

如果目录不存在,则创建,命令如下:

mkdir -p /usr/local/bin

2. Win系统

  1. 找到并进入PHP的安装目录(和你在命令行中执行的php指令应该是同一套PHP)。
  2. 将 composer.phar 复制到PHP的安装目录下面,也就是和 php.exe 在同一级目录。
  3. 在 PHP 安装目录下新建一个 composer.bat 文件,并将下列代码保存到此文件中。
    @php "%~dp0composer.phar" %*

3. 检测全局安装是否成功

$ composer --version
Composer version 1.1.3 2016-06-26 15:42:08

六、相关资料