Eloquent ORM Laravel 5.3 创建 配置与使用

1、简介

Laravel 自带的 Eloquent ORM 提供了一个美观、简单的与数据库打交道的 ActiveRecord 实现,每张数据表都对应一个与该表进行交互的“模型”,模型允许你在表中进行数据查询,以及插入、更新、删除等操作。

在开始之前,确保在config/database.php文件中配置好了数据库连接。更多关于数据库配置的信息,请查看文档。

2、定义模型

作为开始,让我们创建一个 Eloquent 模型,模型通常位于app目录下,你也可以将其放在其他可以被composer.json文件自动加载的地方。所有Eloquent模型都继承自 Illuminate\Database\Eloquent\Model类。

创建模型实例最简单的办法就是使用 Artisan 命令make:model

php artisan make:model User

如果你想要在生成模型时生成数据库迁移,可以使用--migration-m选项:

php artisan make:model User --migration
php artisan make:model User -m

Eloquent 模型约定

现在,让我们来看一个 Flight 模型类例子,我们将用该类获取和存取数据表flights中的信息:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model{
    //
}

表名

注意我们并没有告诉 Eloquent 我们的Flight模型使用哪张表。默认规则是模型类名的复数作为与其对应的表名,除非在模型类中明确指定了其它名称。所以,在本例中,Eloquent 认为Flight模型存储记录在flights表中。你也可以在模型中定义table属性来指定自定义的表名:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model{
    /**
     * 关联到模型的数据表
     *
     * @var string
     */
    protected $table = 'my_flights';
}

主键

Eloquent 默认每张表的主键名为id,你可以在模型类中定义一个$primaryKey属性来覆盖该约定。

此外,Eloquent默认主键字段是自增的整型数据,这意味着主键将会被自动转化为int类型,如果你想要使用非自增或非数字类型主键,必须在对应模型中设置$incrementing属性为false

时间戳

默认情况下,Eloquent 期望created_atupdated_at已经存在于数据表中,如果你不想要这些 Laravel 自动管理的列,在模型类中设置$timestamps属性为false

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model{
    /**
     * 表明模型是否应该被打上时间戳
     *
     * @var bool
     */
    public $timestamps = false;
}

如果你需要自定义时间戳格式,设置模型中的$dateFormat属性。该属性决定日期被如何存储到数据库中,以及模型被序列化为数组或 JSON 时日期的格式:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model{
    /**
     * 模型日期列的存储格式
     *
     * @var string
     */
    protected $dateFormat = 'U';
}

数据库连接
 
默认情况下,所有的 Eloquent 模型使用应用配置中的默认数据库连接,如果你想要为模型指定不同的连接,可以通过$connection 属性来设置:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model{
    /**
     * The connection name for the model.
     *
     * @var string
     */
    protected $connection = 'connection-name';
}

3、获取模型

创建完模型及其关联的数据表后,就要准备从数据库中获取数据。将Eloquent模型看作功能强大的查询构建器,你可以使用它来流畅的查询与其关联的数据表。例如:

<?php

use App\Flight;

$flights = App\Flight::all();

foreach ($flights as $flight) {
    echo $flight->name;
}

添加额外约束

Eloquent 的all方法返回模型表的所有结果,由于每一个Eloquent模型都是一个查询构建器,你还可以添加约束条件到查询,然后使用get方法获取对应结果:

$flights = App\Flight::where('active', 1)
               ->orderBy('name', 'desc')
               ->take(10)
               ->get();

注意:由于 Eloquent 模型本质上就是查询构建器,你可以在Eloquent查询中使用查询构建器的所有方法。

集合

对 Eloquent 中获取多个结果的方法(比如allget)而言,其返回值是Illuminate\Database\Eloquent\Collection的一个实例,Collection类提供了多个有用的函数来处理Eloquent结果集:

$flights = $flights->reject(function ($flight) {
    return $flight->cancelled;
});

当然,你也可以像数组一样循环遍历该集合:

foreach ($flights as $flight) {
    echo $flight->name;
}

组块结果集

如果你需要处理成千上万个 Eloquent 结果,可以使用chunk命令。chunk方法会获取一个“组块”的 Eloquent 模型,并将其填充到给定闭包进行处理。使用chunk方法能够在处理大量数据集合时有效减少内存消耗:

Flight::chunk(200, function ($flights) {
    foreach ($flights as $flight) {
        //
    }
});

传递给该方法的第一个参数是你想要获取的“组块”数目,闭包作为第二个参数被调用用于处理每个从数据库获取的区块数据。

使用游标

cursor
方法允许你使用游标迭代处理数据库记录,一次只执行单个查询,在处理大批量数据时,cursor方法可大幅减少内存消耗:

foreach (Flight::where('foo', 'bar')->cursor() as $flight) {
    //
}

4、获取单个模型/聚合

当然,除了从给定表中获取所有记录之外,还可以使用findfirst获取单个记录。这些方法返回单个模型实例而不是返回模型集合:

// 通过主键获取模型...
$flight = App\Flight::find(1);
// 获取匹配查询条件的第一个模型...
$flight = App\Flight::where('active', 1)->first();

还可以通过传递主键数组来调用find方法,这将会返回匹配记录集合:

$flights = App\Flight::find([1, 2, 3]);

Not Found 异常

有时候你可能想要在模型找不到的时候抛出异常,这在路由或控制器中非常有用,findOrFailfirstOrFail方法会获取查询到的第一个结果。然而,如果没有任何查询结果,Illuminate\Database\Eloquent\ModelNotFoundException异常将会被抛出:

$model = App\Flight::findOrFail(1);
$model = App\Flight::where('legs', '>', 100)->firstOrFail();

如果异常没有被捕获,那么HTTP 404 响应将会被发送给用户,所以在使用这些方法的时候没有必要对返回404响应编写明确的检查:

Route::get('/api/flights/{id}', function ($id) {
    return App\Flight::findOrFail($id);
});

获取聚合

当然,你还可以使用查询构建器聚合方法,例如countsummax,以及其它查询构建器提供的聚合方法。这些方法返回计算后的结果而不是整个模型实例:

$count = App\Flight::where('active', 1)->count();
$max = App\Flight::where('active', 1)->max('price');

5、插入/更新模型

插入

想要在数据库中插入新的记录,只需创建一个新的模型实例,设置模型的属性,然后调用save方法:

<?php

namespace App\Http\Controllers;

use App\Flight;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class FlightController extends Controller{
    /**
     * 创建一个新的航班实例
     *
     * @param  Request  $request
     * @return Response
     */
    public function store(Request $request)
    {
        // Validate the request...

        $flight = new Flight;

        $flight->name = $request->name;

        $flight->save();
    }
}

在这个例子中,我们只是简单分配HTTP请求中的name参数值给App\Flight模型实例的那么属性,当我们调用save方法时,一条记录将会被插入数据库。created_atupdated_at时间戳在save方法被调用时会自动被设置,所以没必要手动设置它们。

更新

save方法还可以用于更新数据库中已存在的模型。要更新一个模型,应该先获取它,设置你想要更新的属性,然后调用save方法。同样,updated_at时间戳会被自动更新,所以没必要手动设置其值:

$flight = App\Flight::find(1);
$flight->name = 'New Flight Name';
$flight->save();

更新操作还可以同时修改给定查询提供的多个模型实例,在本例中,所有有效且destination=San Diego的航班都被标记为延迟:

App\Flight::where('active', 1)
          ->where('destination', 'San Diego')
          ->update(['delayed' => 1]);

update方法要求以数组形式传递键值对参数,代表着数据表中应该被更新的列。

注:通过Eloquent进行批量更新时,savedupdated模型事件将不会在更新模型时触发。这是因为在进行批量更新时并没有从数据库获取模型。

批量赋值

还可以使用create方法保存一个新的模型。该方法返回被插入的模型实例。但是,在此之前,你需要指定模型的fillableguarded属性,因为所有Eloquent模型都通过批量赋值(Mass Assignment)进行保护。

当用户通过 HTTP 请求传递一个不被期望的参数值时就会出现安全隐患,然后该参数以不被期望的方式修改数据库中的列值。例如,恶意用户通过 HTTP 请求发送一个is_admin参数,然后该参数映射到模型的create方法,从而允许用户将自己变成管理员。

所以,你应该在模型中定义哪些属性是可以进行赋值的,使用模型上的$fillable属性即可实现。例如,我们设置Flight模型上的name属性可以被赋值:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model{
    /**
     * 可以被批量赋值的属性.
     *
     * @var array
     */
    protected $fillable = ['name'];
}

设置完可以被赋值的属性之后,我们就可以使用create方法在数据库中插入一条新的记录。create方法返回保存后的模型实例:

$flight = App\Flight::create(['name' => 'Flight 10']);

黑名单属性

$fillable就像是可以被赋值属性的“白名单”,还可以选择使用$guarded$guarded属性包含你不想被赋值的属性数组。所以不被包含在其中的属性都是可以被赋值的,因此,$guarded功能就像“黑名单”。当然,这两个属性你只能同时使用其中一个——而不能一起使用,因为它们是互斥的:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model{
    /**
     * 不能被批量赋值的属性
     *
     * @var array
     */
    protected $guarded = ['price'];
}

如果你想要让所有属性都是可批量赋值的,可以将$guarded属性设置为空数组:

/**
 * The attributes that aren't mass assignable.
 *
 * @var array
 */
protected $guarded = [];

其它创建方法

还有其它两种可以用来创建模型的方法:firstOrCreatefirstOrNewfirstOrCreate方法先尝试通过给定列/值对在数据库中查找记录,如果没有找到的话则通过给定属性创建一个新的记录。

firstOrNew方法和firstOrCreate方法一样先尝试在数据库中查找匹配的记录,如果没有找到,则返回一个的模型实例。注意通过firstOrNew方法返回的模型实例并没有持久化到数据库中,你还需要调用save方法手动持久化:

// 通过属性获取航班, 如果不存在则创建...
$flight = App\Flight::firstOrCreate(['name' => 'Flight 10']);
// 通过属性获取航班, 如果不存在初始化一个新的实例...
$flight = App\Flight::firstOrNew(['name' => 'Flight 10']);

6、删除模型

要删除一个模型,调用模型实例上的delete方法:

$flight = App\Flight::find(1);
$flight->delete();

通过主键删除模型

在上面的例子中,我们在调用delete方法之前从数据库中获取该模型,然而,如果你知道模型的主键的话,可以调用destroy方法直接删除而不需要获取它:

App\Flight::destroy(1);
App\Flight::destroy([1, 2, 3]);
App\Flight::destroy(1, 2, 3);

通过查询删除模型

当然,你还可以通过查询删除多个模型,在本例中,我们删除所有被标记为无效的航班:

$deletedRows = App\Flight::where('active', 0)->delete();

注:通过Eloquent进行批量删除时,deletingdeleted模型事件在删除模型时不会被触发,这是因为在进行模型删除时不会获取模型。

软删除

除了从数据库删除记录外,Eloquent还可以对模型进行“软删除”。当模型被软删除后,它们并没有真的从数据库删除,而是在模型上设置一个deleted_at属性并插入数据库,如果模型有一个非空deleted_at值,那么该模型已经被软删除了。要启用模型的软删除功能,可以使用模型上的Illuminate\Database\Eloquent\SoftDeletestrait并添加deleted_at列到$dates属性:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Flight extends Model{
    use SoftDeletes;

    /**
     * 应该被调整为日期的属性
     *
     * @var array
     */
    protected $dates = ['deleted_at'];
}

当然,应该添加deleted_at列到数据表。Laravel Schema构建器包含一个帮助函数来创建该列:

Schema::table('flights', function ($table) {
    $table->softDeletes();
});

现在,当调用模型的delete方法时,deleted_at列将被设置为当前日期和时间,并且,当查询一个使用软删除的模型时,被软删除的模型将会自动从查询结果中排除。

判断给定模型实例是否被软删除,可以使用trashed方法:

if ($flight->trashed()) {
    //
}

查询被软删除的模型

包含软删除模型

正如上面提到的,软删除模型将会自动从查询结果中排除,但是,如果你想要软删除模型出现在查询结果中,可以使用withTrashed方法:

$flights = App\Flight::withTrashed()
                ->where('account_id', 1)
                ->get();

withTrashed方法也可以用于关联查询中:

$flight->history()->withTrashed()->get();

只获取软删除模型

onlyTrashed方法之获取软删除模型:

$flights = App\Flight::onlyTrashed()
                ->where('airline_id', 1)
                ->get();

恢复软删除模型

有时候你希望恢复一个被软删除的模型,可以使用restore方法:

$flight->restore();

你还可以在查询中使用restore方法来快速恢复多个模型:

App\Flight::withTrashed()
        ->where('airline_id', 1)
        ->restore();

withTrashed方法一样,restore方法也可以用于关联查询:

$flight->history()->restore();

永久删除模型

有时候你真的需要从数据库中删除一个模型,可以使用forceDelete方法:

// 强制删除单个模型实例...
$flight->forceDelete();
// 强制删除所有关联模型...
$flight->history()->forceDelete();

7、查询作用域

全局作用域

全局作用域允许我们为给定模型的所有查询添加条件约束。Laravel 自带的软删除功能就使用了全局作用域来从数据库中拉出所有没有被删除的模型。编写自定义的全局作用域可以提供一种方便的、简单的方式来确保给定模型的每个查询都有特定的条件约束。

编写全局作用域

自定义全局作用域很简单,首先定义一个实现 Illuminate\Database\Eloquent\Scope 接口的类,该接口要求你实现一个方法:apply。需要的话可以在 apply 方法中添加 where 条件到查询:

<?php

namespace App\Scopes;

use Illuminate\Database\Eloquent\Scope;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;

class AgeScope implements Scope{
    /**
     * Apply the scope to a given Eloquent query builder.
     *
     * @param  \Illuminate\Database\Eloquent\Builder  $builder
     * @param  \Illuminate\Database\Eloquent\Model  $model
     * @return void
     */
    public function apply(Builder $builder, Model $model)
    {
        return $builder->where('age', '>', 200);
    }
}

注:Laravel应用默认并没有为作用域预定义文件夹,所以你可以按照自己的喜好在app目录下创建Scopes目录。

应用全局作用域

要将全局作用域分配给模型,需要重写给定模型的 boot 方法并使用 addGlobalScope 方法:

<?php

namespace App;

use App\Scopes\AgeScope;
use Illuminate\Database\Eloquent\Model;

class User extends Model{
    /**
     * The "booting" method of the model.
     *
     * @return void
     */
    protected static function boot()
    {
        parent::boot();

        static::addGlobalScope(new AgeScope);
    }
}

添加作用域后,如果使用 User::all() 查询则会生成如下SQL语句:

select * from `users` where `age` > 200

匿名的全局作用域

Eloquent还允许我们使用闭包定义全局作用域,这在实现简单作用域的时候特别有用,这样的话,我们就没必要定义一个单独的类了:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;

class User extends Model{
    /**
     * The "booting" method of the model.
     *
     * @return void
     */
    protected static function boot()
    {
        parent::boot();

        static::addGlobalScope('age', function(Builder $builder) {
            $builder->where('age', '>', 200);
        });
    }
}

我们还可以通过以下方式移除全局作用:

User::withoutGlobalScope('age')->get();

移除全局作用域

如果想要在给定查询中移除指定全局作用域,可以使用 withoutGlobalScope

User::withoutGlobalScope(AgeScope::class)->get();

如果你想要移除某几个或全部全局作用域,可以使用 withoutGlobalScopes 方法:

User::withoutGlobalScopes()->get();
User::withoutGlobalScopes([FirstScope::class, SecondScope::class])->get();

本地作用域

本地作用域允许我们定义通用的约束集合以便在应用中复用。例如,你可能经常需要获取最受欢迎的用户,要定义这样的一个作用域,只需简单在对应Eloquent模型方法前加上一个scope前缀。

作用域总是返回查询构建器实例:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model{
    /**
     * 只包含活跃用户的查询作用域
     *
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function scopePopular($query)
    {
        return $query->where('votes', '>', 100);
    }

    /**
     * 只包含激活用户的查询作用域
     *
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function scopeActive($query)
    {
        return $query->where('active', 1);
    }
}

使用本地作用域

作用域被定义好了之后,就可以在查询模型的时候调用作用域方法,但调用时不需要加上scope前缀,你甚至可以在同时调用多个作用域,例如:

$users = App\User::popular()->active()->orderBy('created_at')->get();

动态作用域

有时候你可能想要定义一个可以接收参数的作用域,你只需要将额外的参数添加到你的作用域即可。作用域参数应该被定义在$query参数之后:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model{
    /**
     * 只包含给用类型用户的查询作用域
     *
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function scopeOfType($query, $type)
    {
        return $query->where('type', $type);
    }
}

现在,你可以在调用作用域时传递参数了:

$users = App\User::ofType('admin')->get();

8、事件

Eloquent模型可以触发事件,允许你在模型生命周期中的多个时间点调用如下这些方法:creatingcreatedupdatingupdatedsavingsaved,deletingdeletedrestoringrestored。事件允许你在一个指定模型类每次保存或更新的时候执行代码。

基本使用

一个新模型被首次保存的时候,creatingcreated事件会被触发。如果一个模型已经在数据库中存在并调用save方法,updating/updated事件会被触发,无论是创建还是更新,saving/saved事件都会被调用。

举个例子,我们在服务提供者中定义一个Eloquent事件监听器,在事件监听器中,我们会调用给定模型的isValid方法,如果模型无效会返回false。如果从Eloquent事件监听器中返回false则取消save/update操作:

<?php

namespace App\Providers;

use App\User;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider{
    /**
     * 启动所有应用服务
     *
     * @return void
     */
    public function boot()
    {
        User::creating(function ($user) {
            return $user->isValid();
        });
    }

    /**
     * 注册服务提供者.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

观察者

如果你在给定模型中监听多个事件,可以使用观察者来对所有监听器进行分组,观察者类拥有反射你想要监听的Eloquent事件对应的方法名,每个方法接收模型作为唯一参数。Laravel并没有为监听器提供默认目录,所以你可以创建任意目录来存放观察者类:

<?php

namespace App\Observers;

use App\User;

class UserObserver
{
    /**
     * Listen to the User created event.
     *
     * @param  User  $user
     * @return void
     */
    public function created(User $user)
    {
        //
    }

    /**
     * Listen to the User deleting event.
     *
     * @param  User  $user
     * @return void
     */
    public function deleting(User $user)
    {
        //
    }
}

要监听观察者,使用你想要观察模型的observe方法,你可以在某个服务提供者的boot方法中注册观察者,在本例中,我们在AppServiceProvider中注册观察者:

<?php

namespace App\Providers;

use App\User;
use App\Observers\UserObserver;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        User::observe(UserObserver::class);
    }

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

WordPress 4.7 “Vaughan”发布,内容管理系统

WordPress 开发团队发布了 WordPress 4.7 正式版 —“Vaughan” 。取名“Vaughan”以纪念传奇的爵士乐歌手Sarah“Sassy”Vaughan。现在可以更新了。新版带来全新的默认主题,定制器加入了新功能,REST API 内容端点,更多开发者工具。

更新如下:

  • 新的主题 — Twenty Seventeen。全新的默认主题可让您的网站通过引人入胜的精选图片和视频头部生动呈现。

  • WordPress 4.7 为自定义程序添加了新功能,帮助您完成主题的初始设置,在一个不间断的工作流程中对所有更改进行非破坏性实时预览。
  • WordPress 4.7 带来了针对帖子、评论、条款、用户,元和设置的 REST API 端点。

来源

下载地址:https://wordpress.org/download/

女友PMS期间男生超安全生存指南

跟处在PMS或“经前综合症(Pre-Menstrual Syndrome,估计你们有人猜错了吧)”期的女性——任何女性——呆在一起可谓置身雷区,男人们再小心翼翼也随时可能一步迈错踩爆地雷。有鉴于此,特此收录助你顺利渡过下一轮PMS的重要信息和指导攻略:

危险:晚饭做了什么?
较安全:我帮你做晚饭好吗?
最安全:晚上想去哪儿吃?
超安全:来,吃点儿巧克力。

危险:你要穿这件衣服?
较安全:天耶,你穿棕色真好看!
最安全:哇!你真是绝了!
超安全:来,吃点儿巧克力。

危险:你在那儿激动什么呀?
较安全:我哪儿不对,告诉我好吗?
最安全:拿着,这是五十块。
超安全:来,吃点儿巧克力。

危险:那玩意儿能吃吗?
较安全:你看,咱家还有好多苹果哪。
最安全:我给你倒杯酒就着吃?
超安全:来,吃点儿巧克力。

危险:你今天一天都干嘛啦?
较安全:希望你今天没累着。
最安全:我一直都喜欢看你穿这件睡袍。
超安全:来,吃点儿巧克力。

_____________________________________

PMS可以代表的13样东西:

1.拿我的枪来Pass My Shotgun
2.神经病心境转移Psychotic Mood Shift
3.永恒大嚼盛宴Perpetual Munching Spree
4.膨化中段Puffy Mid-Section
5.让我恶心的人People Make me Sick
6.给我糖果Provide Me with Sweets
7.原谅我哭Pardon My Sobbing
8.痘痘终将上脸 Pimples May Surface
9.把我的”裆劲”裤递给我Pass My Sweatpants
10.拧巴情绪综合症Pissy Mood Syndrome
11.男人可耻滴失败鸟Plainly; Men Suck
12.我收拾东西Pack My Stuff
13.潜在杀人嫌疑犯Potential Murder Suspec

2016编程语言受欢迎排行榜

Python部落组织翻译

IEEESpectrum出品的"最受欢迎编程语言排行榜"的第三张榜单出炉了.尽管不可能统计到每一个程序员的喜好,Spectrum从10个数据来源选取了12个维度来表示编程语言受欢迎的程度.然后综合12个维度的评价得出最后的榜单.

由于每个人看重的方面不一样,比如你可能关系开源社区哪些编程语言最火?他可能关心工作的人最喜欢哪些语言?Spectrum允许你自由调整构成榜单结果的每个维度的权重.你也可以根据选项过滤榜单的结果,比如查看嵌入式系统或者移动应用中哪些语言最受欢迎?

默认权重情况下的榜单显示了各方关切程度综合出来的平均值.那么2016最受欢迎的编程语言有哪些呢?

连续两年位居第二之后,C语言终于超越了Java,登顶榜首.在前五名中,Python超过C++成为第三名,C#被R顶出前五.最近几年R一路飙升,主要是由于乘上了大数据分析的浪潮.

Google和Apple也在榜单上刷了一下存在感.Google的Go语言打败Apple的Swift进入了榜单的前十名,不过Swift也不赖,去年它上升了5个座次,从16名上升到了11名,要知道它是去年才进入榜单的.其他语言也上上下下地发生了分化,不过值得注意的是,今年没有一门新语言进入了榜单.

另外一个比较明显的变化是Ladder Logic,它上升了5位,排名第34.Ladder Logic主要用在逻辑控制器上,主要是工厂在使用它.尽管工厂使用是一个比较小的场景,但是它能排到当前的位置,一定程度上反映了这个场景的实际规模.HTML还是很受欢迎,今年上升到了第16位.

在受欢迎程度下滑的语言中,最令人惊讶的是Shell语言,系统管理员编写脚本几乎无不依赖于它,但是它今年下滑了7个位置,到第19位.也许这反映了在相对更复杂的系统中,或者基于云的数据中心中系统管理的一些现状.不过我们需要继续关注这个趋势,来确定Shell是会持续地下滑,还是这只是统计方法上的疏漏.

从趋势来看,编程语言的前10名是

在公司雇员中,编程语言的前十名是

在开源社区中,编程语言的前十名是

英文原文:http://spectrum.ieee.org/computing/software/the-2016-top-programming-languages

译者:诗书塞外

PHP CMS系统排行榜

CMS系统中文名称为网站内容管理系统,大概在2002年左右,如果想进行网站的内容管理,那么基本上都是靠手工维护,但是一个网站的内容成千上万,如果还继续靠手工完成那是基本上不可能的事,如果有CMS系统来支撑你的网站,那将节省了不少的人力,只要你能够配置好!站长只需要定时更新就可以了!这样通俗的解释,很容易理解的!

TOP 4

帝国CMS

帝国CMS是不同于以往的CMS系统,他可以直接在后台通过新建表、自定义字段,然后组成新的系统模型。从而实现各种适合用户自己的系统。如下载系统、音乐系统、商城系统、产品库等等……并且此功能为数据量较大的网站进行数据部署(将信息量分配于不同的信息表)。并且系统内置还是用户自定义的模型,每个模型都有自己的采集。如果会点程序,可以扩展更多更复杂的系统。

它采用了系统模型功能:用户通过此功能可直接在后台扩展与实现各种系统,如产品、房产、供求、等等系统。采用了模板分离功能:把内容与界面完全分离,灵活的标签+用户自定义标签,使之能实现各式各样的网站页面与风格;栏目无限级分类;前台全部静态:

(帝国CMS后台界面示意图)

TOP 3

PHPCMS

phpCMS是一个开源的PHP开发框架。Phpcms由内容模型、会员、问吧、专题、财务、订单、广告、邮件订阅、 短消息、自定义表单、全站搜索等20多个功能模块组成,内置新闻、图片、下载、信息、产品5大内容模型。Phpcms 采用模块化开发,支持自定义内容模型和会员模型,并且可以自定义字段。

PHPCMS采用PHP5+MYSQL做为技术基础进行开发。采用OOP(面向对象)方式进行基础运行框架搭建。模块化开发方式做为功能开发形式。框架易于功能扩展,代码维护,一般的二次开发能力,可满足网站的应用需求。

(PHPCMS后台界面示意图)

TOP 2

ECShopCMS

ECShopCMS是一款B2C独立网店系统,系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。随着3G网络的普及,智能手机的大量使用,手机上网的用户越来越多,使手机购物成为可能,手机购物势必会成为一种趋势,ECshop新增手机浏览html功能。并且新增商品规格分库存功能,方便商家管理不同规格货品的库存。在商品详情页新增购买记录,提高网店的活跃性。html编辑器上传图片后增加水印功能。改进编辑快递单功能,增加可视化编辑,方便管理员修改打印快递单。上传商品相册图片,使之能够支持外链图片。

(ECShopCMS后台界面示意图)

TOP1

dedeCMS

dedeCMS采用XML名字空间风格模板,模板全部使用文件形式保存,对用户设计模板、网站升级转移均提供很大的便利,模板标签为站长DIY自己的网站提供了支持。高效率标签缓存机制:允许对类同的标签进行缓存,在生成 HTML的时候,有利于提高系统反应速度,降低系统消耗的资源。模型与模块概念并存:在模型不能满足用户所有需求的情况下,DedeCMS推出一些互动的模块对系统进行补充。

(DEDECMS后台界面示意图)

每个程序员都应该收藏的算法复杂度速查表

英文:http://bigocheatsheet.com/
编译:Linux中国
链接:https://linux.cn/article-7480-1.html

这篇文章覆盖了计算机科学里面常见算法的时间和空间的大 OBig-O 复杂度。我之前在参加面试前,经常需要花费很多时间从互联网上查找各种搜索和排序算法的优劣,以便我在面试时不会被问住。最近这几年,我面试了几家硅谷的初创企业和一些更大一些的公司,如 Yahoo、eBay、LinkedIn 和 Google,每次我都需要准备这个,我就在问自己,“为什么没有人创建一个漂亮的大 O 速查表呢?”所以,为了节省大家的时间,我就创建了这个,希望你喜欢!

— Eric[1]

图例

数据结构操作

数组排序算法

图操作

堆操作

大 O 复杂度图表

Big O 复杂度

推荐阅读

  • Cracking the Coding Interview: 150 Programming Questions and Solutions[33]
  • Introduction to Algorithms, 3rd Edition[34]
  • Data Structures and Algorithms in Java (2nd Edition)[35]
  • High Performance Java (Build Faster Web Application Interfaces)[36]

关注「算法爱好者」

我们程序员的属性 [转]

俗话说:三句不离本行,对于程序员这个可爱的群体来说也是一样。

他们在编程中养成的一些思维方法会不自觉地在日常生活中表现出来。

我们这里总结了程序员日常生活中经常表现出来的8个编程思维。

你有没有同感呢?

0.在正常交流中掺杂编程规范和语法

职业原因:编程语言都有自己特定的语法,程序员在开发者都要遵守这些。

当然,还有一些约定俗成的编程规范,如代码缩进(是缩进4个字符还是8个字符)、注释风格,采用骆驼式(CamelCase)或帕斯卡式(Pascal)来命名变量或函数等等。

日常行为:这些编程习惯可能就会影响到程序员的日常文档书写习惯,比如写邮件时会用分号来结束一行内容等。

例子:

iWriteInCamelCaseEveryNowAndThenItAnnoysMySisterWhoReadsMyEmail.(小骆驼式拼写法)
IF you have tea I’ll have it ELSE I’ll just take wate.(利用了IF-ELSE判断语句)

1.真实生活中习惯讲操作快捷键

职业原因:程序员玩快捷键操作软件应该很熟练了,一般来说,Ctrl-C表示复制、Ctrl-V表示粘贴(对特定编辑器如Vi、Emacs来说会有不同)。

日常行为:这些快捷键有时在程序员的行为和话语中表现的很常见,这也会在一些场合引起尴尬。

例子:

“Mentally trying to Ctrl-Z on things I just said.(Ctrl-z表示撤消,这句话意思是我收回我刚才说的话)
In life there is no undo.(生活中没有撤消)

2.从0开始计数

职业原因:大多数编程语言中的“数组”初始值都是从0开始而不是1。

日常行为:这种约定使得程序员经常在生活中数数都是从0开始,没有编程背景的人们很难理解这种计数方式,如果你的程序员朋友祝愿你在3千米长跑中获得第0名,你就偷着乐吧。

例子:

– How many beers are left?(啤酒还剩多少杯?)
– Zero, one, two, three… We have four left!(0,1,2,3,……我们还有4杯呢~)

3.生活方式不健康

职业原因:程序员写起程序来有时一坐就是大半天,眼镜不离电脑屏幕,甚至在灵感爆发时熬夜。
日常行为:作息无规律,锻炼不足,与外界接触过少。

例子:
Eating lunch at 3pm and going to bed at 3am.(下午3点吃饭,凌晨3点睡觉)
Lack of exercise -> Eating too much -> unhealthy life style.(缺乏锻炼->吃得过多->生活方式不健康)

4.试图优化任何事情

职业原因:软件开发者会不断地优化自己的代码,让它越来越快、越来越高效。常用的方法有多线程处理任务、代码复用等,并在任何有可能自动化执行的情况下使其自动化。

日常行为:会尝试优化真实生活中的事情,尽量省力、高效,往往会被认为太懒惰,比如脏衣服经常堆到一定规模,实在没有可穿的了才去清洗(往往一次全部清洗完)。

例子:
don’t solve a problem until you absolutely, positively have to.(不到万不得已,不解决问题)

5.过于强迫症、完美主义

职业原因:程序中一般不能使用模糊语义,因为计算机不理解“差不多”,“基本”。程序中即使有一点小错误,也会导致程序编译不过、运行不起来。

日常行为:程序员也经常是过于认真,不放过任何小细节,“打破沙锅问到底”,这有时会给周围的人造成压力。

例子:
Requesting clear spec for favors and errands. ‘Wait what do you mean by ‘some eggs’? What is the lower and upper bound?'”(老婆让去买些鸡蛋,会追问到底买几个啊?)

6.希望人们都和电脑一样循规蹈矩

职业原因:计算机会按照程序设定的方式运行,运行出错,那就是程序出Bug了。

日常行为:程序员有时会忽略人们是和电脑不一样的,人不可能完全按照逻辑和理性来做事,更多的是“跟着感觉走”。

例子:
Having to explain what a logical fallacy is, first, everytime someone says something completely wrong gets frustrating fast.(经常去解释逻辑上存在的错误,如果人们否定整个事情则很容易感到沮丧)

7.总是想到2的乘方

职业原因:计算机存储信息的基本单位是bit(比特)。二进制系统中,每个0或1就是一个bit。

日常行为:常常不以10进制而是以2进制进行计算。一些平常的日子在程序员眼里也变得很神奇,如程序员日就是每年的第256天(2^8),也有人推荐将每年的10月24日作为程序员日(2^10)。

例子:
Everything has to be in powers of 2.(一切皆为2的乘方)
Imagine you have 1,000 bucks; or better a round number—imagine you have 1,024 bucks.(假设你有1000块钱,最好这样说,假设你有1024块钱)

好啦,总结完毕了。

如果你有孩子,还会让他去当程序员么?

“我以后绝对不会让我的儿子也当程序员的。”三十二岁的程序猿老张心酸而又坚定的说。

“嗯,但是,”路人甲一针见血的指出了一个问题:“你有老婆吗?没有老婆怎么可能有儿子呢?”

老张:“……你大爷的!我的心好痛!”

注定孤独一生?

程序员A和程序员B的对话。

 

程序员A说:昨晚帮个美女装路由器,装到12点都没装好,美女对我说:“装不好就别装了,我们做点其他事情把!”我听了,顿时怒火就上来了,你他妈不是在考验我么?然后我快速的把路由器装好就回去睡觉了。

程序员B说:你做的对,昨晚我和一个女同事出差住旅馆,旅馆只有一张床了,我打算睡沙发,女同事对我说:“你跟我一起睡吧,不过不能做什么坏事情哦!”我听了,顿时怒火就上来了,你他妈这不是怀疑哥的人品么?然后我硬是在沙发睡了一晚。

简单说就是:“智商高 情商低?”

是呀,没事。就爱怼老板。

老板:汉字中,凡带三点水的,一定都有水,比如,江,河,湖,海……

程序猿:沙漠

老板:滚!

情商低的表现。

一个程序员骑着一个很漂亮的自行车到了公司,另一个程序员看到了他,问 到,“你是从哪搞到的这么漂亮的车的?”
骑车的那个程序员说, “我刚从那儿过来, 有一个秀丽的姑娘骑着这个车过来, 并停在我跟前,把衣裳全脱了,然后对我说,‘你想要什么都可以’”。
另一个程序员马上说到, “你必定做了一个正确的选择, 因为那姑娘的衣裳你并不一定穿得了”。

宅也是我们的属性表现啊。

“嘿,兄弟,犯什么事进来的?”

“入室偷窃。”

“咋啦,被人赃俱获?”

“屁!货还没到手呢,刚进屋就冲出两宅男,亏我还观察那屋三天!”

宅-没朋友-更宅-更没朋友的死循环。

 

【彩蛋】

小小编辑送给乱弹精英和程序员的礼物。

请戳(这里

 

【小树的世界之旅】

1、三天前,家住南京大厂某小区的盛先生带爱犬外出,结果爱犬被小轿车撞伤,车主驾车溜了。受伤的狗儿“盛怒之下”,将盛先生及妻子咬伤。夫妻被狗咬伤,又找不到肇事者,气愤的盛先生拨打12345政府热线求助。南京化工园公安分局扬子派出所民警接到工单后,通过监控找到了肇事车辆及车主,虽然车主否认,但车前的裂痕及粘着的狗毛“作证”,车主不得不承认这一事故。

南京真是个动物乐园。

2、10月12日,山东潍坊昌乐交警的一次查酒驾行动中,一名执勤交警被喝了酒的司机用车顶着狂奔了10分钟,最后从车前盖滚落下来,差点要了交警的命。司机行为令人发指,警方迅速展开抓捕。第二天早上7点45分,两名嫌疑人最终落网。经审讯,驾驶轿车的男子马某,和副驾驶位置男子徐某是朋友。为了庆祝自己入职,俩人中午就多喝了几杯。马某、徐某两人口口声声说着心里害怕,可是当天晚上两人醒酒后,并没有立即投案自首,而是一起再赴酒局。

刚入职就要去牢里上班了

3、10月17日晚,马先生朋友的父亲过生日,一家人前往位于宝塔区的延安中益嘉汇酒店吃饭。“由于桌上的女士较多,就说喝啤酒,刚好车上放有两箱啤酒,我就搬一箱。”马先生说,当时带啤酒进去时,服务员并没告知要收“开瓶费”,等吃完饭结账时发现,总共花了1330元,其中“服务费”就有100元。8日下午他已将此事反映给延安市宝塔区消费者协会,消协已经立案调查。

干脆,你用枪指着每一位进店的掏他钱包就是了。

 

【小树的角色Play剧场】

(本期剧本导演: @ 树和伊文 ,友情客串:@ 唐力个糖

看CCTV的普法栏目剧

一个貌似是坏女人对着男主角脱掉浴袍

镜头还马上切到坏女人的后背

没错露背了,虽然打了点朦胧的效果

然后男主角瞄了一眼,慢慢脱去西装并把身子靠过去

我勒个擦后面就是床啊心想央视这是要逆天了

男主角突然把脱去的外套披在坏女人身上

说:我警告你再有下次,滚

然后就走了,就走了

@ 唐力个糖 不禁叹息了一声,突然发现原来@ 唐力个糖 是和妈妈一起看啊

妈妈质问@ 唐力个糖 :“你唉什么?”

早已看惯云淡风轻的@ 唐力个糖 马上说道:

堂堂中央电视台居然要拍出这么俗的东西真是无话可说了

然后@ 唐力个糖 还不屑地摇摇头走开。

 

情绪不好?

关注同学们的生理心理健康

请进入大家喜闻乐见的【小树医生心理生理医务室】

“如何让‘二狗’这个外号有不一样的感觉?”

“犬次郎。 ”

“那‘狗蛋’呢?”

“犬丸。”

—- ———分割线————– ——

晚上稀里糊涂的做了个很奇怪的梦,

梦见自己有了个小女儿,

哄了大半夜,累得要死。

最冤的是,醒了之后,死活想不起来孩子她妈是谁。

—- ———分割线————– ——

小时候家里很穷,每当看见邻居家的狗吃的比我还好,

我就暗下决心,以后一定要好好学习、努力工作,

争取给自己找到一个有钱的主人。

—- ———分割线————– ——

无她,唯手熟尔。

 

【看片】

当你注视深渊的时候,深渊也在注视着你。

手机党少年们想看视频,请使劲儿戳(这里)。

 

最受欢迎编程语言又是谁?C 语言居首,大数据赢了

C语言占据榜首,但大数据类是最大赢家。

IEEE Spectrum的第三次“最受欢迎编程语言”交互式排行榜新鲜出炉。因为不可能顾及到每一个程序员的想法,Spectrum使用多样化、可交互的的指标权重来评测每一种语言的现行使用情况。

数据记者Nick Diakopoulos从10个线上资源中选取了12个指标,这其中的每一个都能反映某一种编程语言在某一方面的受欢迎程度,加权这些指标就能得出一个排名。

何为“交互式”排名?

因为我们每个人都可能会看重不同的东西,比如大众最热衷在开源代码中使用什么语言?哪种语言的客户需求量最大?Spectrum的“交互式编程语言排行”让用户可以根据自己的喜好调整不同评价指标所占的权重,从而得到所需的排名。

用户还能根据自己的需要过滤榜单中的结果,例如我们可以选择只显示用于嵌入式系统和移动终端的语言。当然,用户既可以定制榜单中的每一项权重,也可以使用榜单预设的评价方案。

榜单中的默认预设是根据IEEE成员的平均兴趣权重来设定的,那么2016年Spectrum评选出的排名前十的编程语言都有哪些呢?

在连续两年屈居亚军后,C语言终于替代了Java榜首的位置。放眼前五名,Python和C++在3、4名上互换了位置,C#跌出前五,其位置由近几年上升势头迅猛的R语言所取代。近年来,包括R在内的大数据类编程语言总体呈现出一种上升趋势。

谷 歌和苹果在榜单上同样你追我赶,最新的榜单显示谷歌的Go语言击败了苹果的Swift并杀入前十,但swift的上升同样不容小觑,其今年排到了第11 位,相比于去年上升了5个排名。值得一提的是,去年曾有若干新兴编程语言和Swift一起初涉榜单,但今年却不见了它们的踪影。

其 他引人瞩目的变化包括Ladder Logic,它从去年的39名上升到了今年的34名。LadderLogic用于PLC(可编程逻辑控制器),尤其是在工厂中的PLC上应用较广。通常人 们认为编程语言在制造业中无利可图,然而Ladder Logic的成功揭示了编程语言在制造业应用中的巨大商机。

另外HTML仍然流行,今年排名上升到了第16位,之前有用户甚至还在担忧其是否能入选榜单(为准确起见,我们秉承着实用至上的原则,并且将编程语言定义为一种给计算机下指令的特殊语法——就算这种语法只是用于数据的结构化——我们并不要求编程语言是图灵完备的)。

在 退步名单里,最出人意料的当属Shell的衰落(Shell是一种统称,指对脚本的直接创造,通常为系统管理员所钟爱,常见的有bash shell等),其下降了7个名次落到了第19位。这种趋势或许反映了用于云端数据中心的复杂系统的发展壮大,但现在我们还不能妄下结论,我们还需要观察 下一年的排名来确定这种趋势是否会持续,抑或仅是一种统计学上的偶然结果。

注:

IEEE Spectrum:一本IEEE(美国电气电子工程师学会)出版的旗舰杂志,其中文版名为《科技纵览》,旨在探讨未来技术发展趋势及其对社会和商业的影响,主要内容为报道国际航空航天、计算机和电信、生物医学工程、能源和消费电子等领域的最新技术进展和成果。

PLC:可编程逻辑控制器,是一种采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。

图灵完备:Turing Completeness,一切可计算的问题都能计算,这样的虚拟机或者编程语言就叫图灵完备的。

稿源:dy.163.com

苹果的 Safari 已成为新的 IE

IE 一直以来都因为不兼容标准而遭人诟病,因为早期的 IE 占有率太高,IE 不支持的 html/js 特性网站就无法使用。

而现在 Safari 的状态和当时的 IE 非常相似,几乎也成了 HTML5 标准的公敌。

以 HTML5 的 Flexbox 为例,作为网页弹性布局重要的特性,开发者却因为 webkit 里存在大量 bug 而不能使用。

谷歌的 blink 引擎也从 webkit 继承了这些 bug,在两年时间里 blink 收到了数十个 bug 报告,bug 被修好后开发人员甚至提醒用户 safari 仍有 bug,建议不要使用。而谷歌之所以花一年多才修复也是因为 safari 不支持的特性没人会用,bug 优先级不高。

反观 safari,bug 出现一年后才有人提交报告,至今甚至都没有任何开发人员对 bug 进行 review 或评论,bug 状态仍是 new。经常有设计师在其他浏览器里做好的效果发现在 safari 布局完全错乱而不得不重新设计。和当年的 IE 一样,兼容标准对苹果并没有什么好处。迫使开发人员针对 iPhone 优化手机网页反而能增加用户粘性。比如网页在隐私模式下的行为,或者屏幕触摸事件的属性,等等功能,苹果都选择不遵照标准而采用自己的定义。

苹果发明了非标准的 viewport 标签用来定义网页在手机上的缩放,如今苹果自家对 viewport 的定义竟成了其他浏览器必须遵照特性。

回想当年乔布斯还反复强调 flash 要死,html5 是未来,简直滑稽可笑。

科技行业最有钱途 15 个职位:第一竟不是程序猿

北京时间8月21日消息,根据Comparably.com提供的数据,财经网站TheStreet列出了科技行业最赚钱的15个职位,看看你的工作在列吗,排在第几位?

销售工程师。平均工资:122110.18美元,平均奖金:38589.20美元,平均薪水总额:157510.19美元。BLS表示,销售工程师负责向其他企业出售“复杂的科技产品或服务”,这些专业人士必须广泛具有“产品部件和功能相关知识,必须系统了解制造这些产品的过程”。

创意总监。平均工资:136573.01美元,平均奖金:19913.54美元,平均薪水总额:146886.79美元。创意总监通常负责一个组织某一特定产品或服务的品牌战略及概念定位。创意总监在艺术、音乐、时尚和广告领域较为普遍,但现在的科技公司也逐渐引入了该职位。

销售经理。平均工资:101899.23美元,平均奖金:51843.01美元,平均薪水总额:145807.08美元。销售经理负责一个公司的销售团队。他们负责“制定销售目标,分析数据和开发培训项目”。

首席工程师。平均工资:134748.01美元,平均奖金:16580.14美元,平均薪水总额:143921.79美元。首席工程师头衔包括首席软件工程师和首席程序员,负责公司的一个或多个项目。

高级开发人员。平均工资:126663.10美元,平均奖金:19338.86美元,平均薪水总额:138234.22美元。开发人员代表了任何参与软件或Web开发的工程师,前面冠以“高级”,代表了领导角色。

数据科学家。平均工资:122356 .37美元,平均奖金:21284.69美元,平均薪水总额:135450.98美元。数据显示,数据科学家是2016年美国最好的工作之一。《哈佛商业评论》称该职业是“21世纪最性感的工作”。

销售代表。平均工资:78609.75美元,平均奖金:60841.21美元,平均薪水总额:131964.44美元。科技行业内销售代表的薪酬,是销售职业当中最高的。

高级营销经理。平均工资:118127.57美元,平均奖金:17080.30美元,平均薪水总额:130255.59美元。该职位职责包括产品开发、趋势监测、品牌管理、客户定位和收购等。BLS预测到2024年该职位需求增长将达到9%,高出平均水平。

项目经理。平均工资:116703.79美元,平均奖金:17625.52美元,平均薪水总额:127652.98美元。项目经理负责“项目提案、计划、状态报告和变更请求”,同时还需要具有良好的人际交往能力和谈判技巧。

DevOps。平均工资:117616.84美元,平均奖金:12869美元,平均薪水总额:124927.63美元。DevOps就是开发(Development) 和运维(Operations)这两个职位的合并,该职位强调软件开发和IT运营之间的沟通、协作和集成。

高级UI/UX设计师。平均工资:116038美元,平均奖金:12438.95美元,平均薪水总额:121946.50美元。UX(用户体验)设计师关心用户的对产品感觉如何,而UI(用户界面)设计师关注的是产品布局如何,不过二者的界限有利于模糊。

移动开发者。平均工资:111140.05美元,平均奖金:16225.41美元,平均薪水总额:117727.81美元。据ABI研究提供的数据显示,今年移动应用开发行业营收规模将达到460亿美元,意味该行业将对移动应用开发人员有着更高需求。

高级设计师。 平均工资:109901.03美元,平均奖金:14653.16美元,平均薪水总额:117422.99美元。硅谷图形设计师和计算机科学家约翰梅达 (John Maeda)称,由于设计和技术对用户体验的影响日益增强,两个领域的界限正在模糊。在软件开发领域,设计师的作用正显得愈发重要。

人力资源经理。平均工资:98893.25美元,平均奖金:13129美元,平均薪水总额:106860.77美元。BLS表示,到2024年,人力资源经理需求将增长9%,“确保公司能够赶上不断变化且复杂的就业法律”。

开发人员。 平均工资:96220.28美元,平均奖金:12358美元,平均薪水总额:102625美元。美国劳工统计局(BLS:Bureau of Labor Statistics)表示,由于不断增长的计算机软件需求,到2024年,软件开发人员需求将增长17%,远超其他所有职位增长平均水平。

出处:凤凰科技

最新最准确各大搜索引擎蜘蛛名称(转)

1、百度蜘蛛:Baiduspider
网上的资料百度蜘蛛名称有BaiduSpider、baiduspider等,都洗洗睡吧,那是旧黄历了。 百度蜘蛛最新名称为Baiduspider。日志中还发现了Baiduspider-image这个百度旗下蜘蛛,查了下资料(其实直接看名字就可以 了……),是抓取图片的蜘蛛。
常见百度旗下同类型蜘蛛还有下面这些:Baiduspider-mobile(抓取wap)、Baiduspider-image(抓取图片)、Baiduspider-video(抓取视频)、Baiduspider-news(抓取新闻)。
注:以上百度蜘蛛目前常见的是Baiduspider和Baiduspider-image两种。
2、谷歌蜘蛛:Googlebot
这个争议较少,但也有说是GoogleBot的。谷歌蜘蛛最新名称为“compatible; Googlebot/2.1;”。还发现了Googlebot-Mobile,看名字是抓取wap内容的。
3、360蜘蛛:360Spider,它是一个很“勤奋抓爬”的蜘蛛。
4、SOSO蜘蛛:Sosospider,也可为它颁一个“勤奋抓爬”奖的蜘蛛。
5、雅虎蜘蛛:“Yahoo! Slurp China”或者Yahoo!
名称中带“Slurp”和空格,名称有空格robots里名称可以使用“Slurp”或者“Yahoo”单词描述,不知道有效无效。
6、有道蜘蛛:YoudaoBot,YodaoBot(两个名字都有,中文拼音少了个U字母读音差别很大嘎,这都会少?)
7、搜狗蜘蛛:Sogou News Spider
搜狗蜘蛛还包括如下这些:Sogou web spider、Sogou inst spider、Sogou spider2、Sogou blog、Sogou News Spider、Sogou Orion spider,
(参考一些网站的robots文件,搜狗蜘蛛名称可以用Sogou概括,无法验证不知道有没有效)
看看最权威的百度的robots.txt ,http://www.baidu.com/robots.txt 就为Sogou搜狗蜘蛛费了不少字节,占了一大块领地。
“Sogou web spider;Sogou inst spider;Sogou spider2;Sogou blog;Sogou News Spider;Sogou Orion spider”目前6个,名称都带空格。
线上常见”Sogou web spider/4.0″ ;”Sogou News Spider/4.0″ ;”Sogou inst spider/4.0″ 可以为它颁个“占名为王”奖。
8、MSN蜘蛛:msnbot,msnbot-media(只见到msnbot-media在狂爬……)
9、必应蜘蛛:bingbot
线上(compatible; bingbot/2.0;)
10、一搜蜘蛛:YisouSpider
11、Alexa蜘蛛:ia_archiver
12、宜sou蜘蛛:EasouSpider
13、即刻蜘蛛:JikeSpider
14、一淘网蜘蛛:EtaoSpider
“Mozilla/5.0 (compatible; EtaoSpider/1.0; http://省略/EtaoSpider)”
根据上述蜘蛛中选择几个常用的允许抓取,其余的都可以通过robots屏蔽抓取。如果你暂时空间流量还足够使用,等流量紧张了就保留几个常用的屏蔽掉其它蜘蛛以节省流量。至于那些蜘蛛抓取对网站能带来有利用的价值,网站的管理者眼睛是雪亮的。
另外还发现了如 YandexBot、AhrefsBot和ezooms.bot这些蜘蛛,据说这些蜘蛛国外噶,对中文网站用处很小。那不如就节省下资源。

程序员入门必读:编程语言争霸 霸主是他

世界上的语言有千万种,但是却不只有汉语、英语、法语和俄语,还有Java、C++、Python和PHP。计算机的快速发展,使编程成为一种职业,程序员也成为近年来备受关注的一种职业。

语言争霸 谁为王?

在编程世界中,也有着不同的门派,各个门派都在强调自己是武林独尊,互不相让。今天笔者无意挑起武林争端,却要给那些想成为程序员的莘莘学子一个建议,参考备受认可的TIOBE编程语言社区最新排行榜,推荐十款备受关注的编程语言供大家选择,总有一款适合你的。

TIOBE世界编程语言排行榜(2016年3月)

1、Java

相信Java是很多非专业编程人员也听说过的语言,仅这一点看来,就足以证明Java的知名度。Java最初由SUN公司推出,并将其定位在简单、开放、高性能的语言。Java是一个纯粹面向对象的程序设计语言,与C++语言面向对象技术很像,同时Java虽然推出与1995年,属于编程语言中的“老者”,但是,Java一直在做内部的迭代,这也是Java经久不衰的重要原因。Java广泛应用在PC、数据中心、超算平台、游戏和移动等领域。

Java

2、C/C++

笔者这里将本是同根生的C语言和C++列到了一起,因为C++本就是C的增强版,但是其出现后迅速获得了大量的支持者,进而成为一种独立的语言。C++语言灵活,运算符的数据结构丰富、高效,且是一种可移植的多用途程序设计语言。他主要用于系统开发、引擎开发、嵌入式软件、高性能服务器和娱乐软件领域。C语言和C++分别位于TIOBE世界编程语言排行榜中的第二名和第三名,编程语言第一名为Java(以2016年3月为准)

C/C++

3、C#

C#是微软公司开发的面向对象的、运行于.NET Framework之上的高级程序设计语言。C#继承了C家族强大功能的同时,去除了其中复杂的特性。可能有人会说C#与Java太像了,的确,但是他同时借鉴了Delphi的特点:与com是直接集成的,同时它也是微软.NET windows网络框架的主角。更现代化的C#也曾一度挤入TIOBE世界编程语言排行榜的前三名,不过在最新一次的排行中,C#屈居第四。

C#

4、Python

Python是比Java更古老的语言,发明与1989年,是一款纯粹的自由软件。Python最大的特点莫过于其强大的库,Python丰富的第三方库资源就是它的优势,Python库能够简化程序员的编程过程,节省时间。

在2016年年初,Python火了一把。主要原因是,美国科学家成功监测出引力波,引力波研究机构LIGO在检测过程中使用了这个语言,并将其(GWPY)公布在GitHub上。根据第三方机构TIOBE的排名显示,Python与去年同期相比上升了三名,跻身前五。

Python

5、PHP

PHP也叫做超文本预处理器(Hypertext Preprocessor),其语法吸收了Java、C语言的优点,同时也自创了PHP新语法,支持几乎所有流行的数据库和操作系统。PHP属于开源脚本语言,所以是完全免费的,PHP源代码也能够看得到。PHP的便捷性让新手学习起来十分容易上手,而且程序开发快运行快,经常用于Web开发。

PHP

6、Visual Basic .NET

Visual Basic .NET在2014年开始挤入排行榜前十名,而在最新版当中,Visual Basic .NET更上升到第7名。Visual Basic .NET作为微软Visual Basic 6.0 version的继承者,一直备受压力,在发布之处甚至受到一些开发者抵制。很多开发者表示,VB.NET丢到了很多VB6中的constructs和用户界面功能,并没有很好的继承VB6的优点;但微软似乎在吧VB .NET作为一个全新的语言,目前看来也取得了不错的成绩。

Visual Basic .NET

7、JavaScript

这个看起来很像Java的编程语言JavaScript(以下简称:JS)是由Java压法公司Sun和Netscape合作完成的。主要目的是为了解决服务器端语言遗留的速度问题(如Perl),为用户提供更优的浏览效果。

同时,今年也是JS最受欢迎的库jQuery也迎来了自己十周岁生日,jQuery虽然只发布之日起就备受争议,但似乎已成为JB的“默认事实标准”。

JavaScript

8、Perl

Perl也被称为“实用报表提取语言”(Practical Extraction and Report Language),其最初设计者为为拉里·沃尔(Larry Wall),其貌不扬却拥有天才般的开发能力,拉里·沃尔曾表示:”无论你们怎么评论,我仍然爱她!”如今,Perl也从最初的发布到现在走过了近三十年。Perl最重要的特性就是内部集成了正则表达式的功能,拥有强大的第三方代码库CPAN。同时,Perl的解释程序是开放源代码的,所以使用者不用为费用问题而担心。

Perl

9、Ruby

Ruby有日本人研发,最初由于语言不通,受到很多人的诋毁,但随着Ruby的更新和非日文资料的增多,Ruby逐渐开始被接纳。Ruby也有红宝石的含义,其logo也是一颗红宝石,而其语言本身也如红宝石般优雅,十分美丽。与JAVA不同,Ruby是一种动态的,侧重于简单高效的开源的语言。Ruby的设计者认为,减少编程时不必要的琐碎时间很有必要,所以简便、人性化成为Ruby的一大特性。

Ruby

10、Swift

Swift虽然在最新的TIOBE榜单中排位14名,但是相比去年3月的24名,进步速度可谓飞快。Swift拥有Python的易用性,还有Objective-C、C++和Ruby的影子。Swift一直是苹果生态系统中的一员,直到去年WWDC大会上,苹果宣布开源自己的Swift语言;Swift语法十分简单,且高效强大,但是他同样有一个缺点就是,只能运行在苹果的系统中(OS X和iOS)。

你用的是哪个编程语言?

总结:所谓术业有专攻,不同的程序员选择了不同的语言种类,对于任何一个想要学习编程语言的人来说,应该去选择适合自己工作场景的语言。这里给读者推荐了现在最流行的十款编程语言,你可以选择最适合自己的那个进行学习。

2015 年 JavaScript 开发者调查报告

年底将至,JavaScript 开发者调查也已经结束,此次调查总共有 5000 份回复,我真的迫不及待要分享这次调查的细节,感谢所有的参与者,这是 JavaScript 社区伟大的时刻。

你写什么类型的 JavaScript?

97.4% 的受访者写 JavaScript 的 Web 浏览器,其中有 37% 写移动 Web 应用。

一些参与者回复,他们会在其他地方用 JavaScript,特别是在开发中的 CLI 和桌面应用。有少部分还会在 Pebble 和 Apple TV 上开发。这些归类到其他类别上,占总选票的 2.2%。

An screenshot of the percentages for the first question

你在哪使用 JavaScript?

不出我所料,94.9% 的投票者用 JavaScript 工作。然而,有 82.3% 的投票者也在其他项目中使用 JavaScript。其他回复包括教学,好玩或者非盈利目的使用。

An screenshot of the percentages for the second question

你写 JavaScript 多久了?

超 过 33% 的人写 JavaScript 代码超过六年了。除去那些精准回答的选票,5.2% 在一年前开始写 JavaScript,12.4% 两年前开始写 JavaScript,还有 15.1% 三年前写 JavaScript。总共有 32.7% 的人在近几年开始写 JavaScript。

An screenshot of the percentages for the third question

你使用哪种 complie-to-JavaScript 语言,如果有的话?

85% 参与者表示,他们将 ES6 编译为 ES5。同时有 15% 使用 CoffeeScript,有 15.2% 用 TypeScript,只有可怜的 1.1% 使用 Dart。

这是我想要进一步合作的问题之一,因为它有 13.8% 的“其他”回复。这个问题绝大多数的答案是 ClojureScript、elm、Flow 和 JSX。

An screenshot of the percentages for the fourth question

你喜欢哪种 JavaScript 文体选择?

JavaScript 开发者绝大多数似乎青睐分号,总共有 79.9%。相比之下,11% 的人表示他们不喜欢使用分号。说到逗号,44.9% 的人赞成放置后的表达,而 4.9% 的人喜欢用逗号第一语法。当涉及到缩进,65.5% 更喜欢空格,而 29.1% 的人更喜欢使用制表符。

An screenshot of the percentages for the fifth question

你使用 ES5 哪个功能?

有 79.2% 的人使用 Array methods,并且有 76.3% 的人使用 strict mode。30% 的人使用 Object.create,而 getter 和 setters 只有 28% 的人使用。

An screenshot of the percentages for the sixth question

你使用 ES6 哪个功能?

值得注意的是,Arrow functions 是本次调查中最常用的 ES6 特点,占了总票数的 79.6。Let and const
总共占 77.8% 的投票,Promise 功能依旧强劲,有 74.4 %的人选择了它。不出人意料的是,只有 4% 的人使用 proxies。只有 13.1% 的人用 Symbols,超过 30% 的人使用 Iterators。

https://i.imgur.com/okcvuos.png

你写测试吗?

有 21.7%  的人来不写任何测试,大多数人写一些测试,34.8% 经常写测试。

An screenshot of the percentages for the eighth question

你运行连续集成测试吗?

和 CI 一样,很多人不用 CI 服务器 —— 超过了 40%。有 60% 的人偶尔使用 CI,有 32% 的人在 CI 服务器上运行测试。

An screenshot of the percentages for the ninth question

你怎么运行测试

59% 的人喜欢运行和 PhantomJS 相似的自动化浏览器测试,51.3% 的人也喜欢在网络浏览器上人工测试。自动化服务器端测试则占了 53.3% 的得票。

An screenshot of the percentages for the tenth question

你用什么单元测试库?

大多数人要么选择 Mocha 要么选择 Jasmine 运行 JavaScript 测试,Tape 收到 9.8% 选票。

An screenshot of the percentages for the eleventh question

你用什么代码质量工具?

似乎参与者都在 ESLint 和 JSHint 之间纠结,不过 JSLint 经过了这么多年依旧坚挺,几乎有 30%。

An screenshot of the percentages for the 12th question

你怎么处理客户端的依赖?

Npm 接管客户端依赖管理体系,拥有 60% 的选票。Bower 依旧占据了 20% 的选票,而普通的 <script> 下载和插入获得13.7% 的选票。

An screenshot of the percentages for the 13th question

你首选的构建脚本解决方案是什么?

Gulp 最流行,超过 40% 的投票。接下来的是 NPM,为 27.8%, Grunt 获得了 18.5% 的选票。

An screenshot of the percentages for the 14th question

你首选的 JavaScript 加载工具时什么?

大多数参与者在 Browserify 和 Webpack 之间徘徊,而后者领先前者 7 个百分点。

An screenshot of the percentages for the 15th question

你用什么库?

jQuery 依旧强劲,占据票数 50% 以上,而 XHR 微库只有票数的 8%。

An screenshot of the percentages for the 16th question

你用什么框架?

不出人意料,React 和 Angular 处于领先地位。Backbone 也在靠前的位置,有 22.8% 的选票。

An screenshot of the percentages for the 17th question

你用 ES6 吗。。。

有 20% 的人几乎从不使用它,有 40% 的人偶尔使用,接近 30% 的人广泛使用。

An screenshot of the percentages for the 18th question

你知道 ES2016 有哪些特性吗?

粗略地说,有一半的人不知道 ES2016  有哪些新特性。

An screenshot of the percentages for the 19th question

你理解 ES6 吗?

超过 60% 的人理解基本的概念,有 10% 的人完全不理解,有 25% 的人理解 ES6。

An screenshot of the percentages for the 20th question

你会说 ES6  是一种进步吗?

近 95% 的人认为 ES6 是一种进步。

An screenshot of the percentages for the 21th question

你首选文本编辑器是什么?

超过一半的人喜欢 Sublime Text,超过 30% 喜欢 Atom 和它的开源复制版。超过 25%  WebStorm  和 vi/vim。

An screenshot of the percentages for the 22th question

你首选的开发系统是什么?

超过 60% 的人用的是 Mac,而 Linux 和 Windows 用户接近 20%。

An screenshot of the percentages for the 23th question

你如何找到可重用代码,库和工具?

受访者似乎赞成使用 Github 和搜索引擎,也有用博客、Twitter 和 npm  网站。

An screenshot of the percentages for the 24th question

你参与 JavaScript 社交事件吗?

近 60% 的人至少参加一个会议,而 74% 的人表示,他们喜欢去的聚会。

An screenshot of the percentages for the 25th question

你的 JavaScript 应用程序里支持什么浏览器?

很多样的答案,但幸运的是大多数的受访者没有使用 IE6 了

An screenshot of the percentages for the 26th question

你了解 JavaScript 的定期最新的功能吗?

当 JavaScript 有更新时,80% 受访者保持会去了解。

An screenshot of the percentages for the 27th question

你在哪里了解最新的 JavaScript 功能?

Mozilla 开发者网络在 JavaScript 领域和新闻更新上处于领先地位。JavaScript 周刊也非常流行,占了 40%。

An screenshot of the percentages for the 28th question

这些功能你听说过吗?

超过 85% 的选民听说过 ServiceWorker,我很好奇有多少人用它!

An screenshot of the percentages for the 29th question

除了 JavaScript,你还用什么语言?

有这么多的语言可供选择,我肯定会忘了一些,但结果不言自明。

An screenshot of the percentages for the 30th question

不管你在哪里上班,请记住以下黄金定律!

01. 不为模糊不清的未来担忧,只为清清楚楚的现在努力。

02. 只有先改变自己的态度,才能改变人生的高度。

03. 在抱怨自己赚钱少之前,先努力,学着让自己值钱。

04. 学历代表过去,学习能力才代表将来。

05. 耐得住寂寞才能守得住繁华,该奋斗的年龄不要选择了安逸。

06. 有些事情不是看到希望才去坚持,而是坚持了才看得到希望。

07. 压力不是有人比你努力,而是比你牛几倍的人依然在努力。

08. 你所做的事情,也许暂时看不到成功,但不要灰心,你不是没有成长,而是在扎根。

09. 现实和理想之间,不变的是跋涉,暗淡与辉煌之间,不变的是开拓。

跳槽穷半年,改行穷三年。献给每天喊辞职、想辞职的人或周期性喊辞职、想辞职的人!

1,不要轻易离开团队,否则你要从零做起 。

2,不要老想着做不顺就放弃,哪个团队都有问题,哪个团队都有优点。

3.跟对领导很重要,愿意教你的,放手让你做的领导,绝对要珍惜。

4.团队的问题就是你脱颖而出的机会,抱怨和埋怨团队就是打自己耳光,说自己无能,更是在放弃机会 !

5.心怀感恩之心,感谢系统给你平台,感谢伙伴给你配合。

6.创造利润是你存在的核心价值,创业不是做慈善 。

7.遇到问题请先思考,只反映问题是初级水平,思考并解决问题才是高级水平。

坚持不一定成功,坚持到底一定成功! 好好工作吧!

学会说话,给人温暖,给人鼓励,给人赞美,

给人信心,给人方便,给人希望,给人智慧!

2016年,不管你在哪里上班,请记住这个字!

第一则:

工作不养闲人,团队不养懒人。

第二则:

入一行, 先别惦记着能赚钱, 先学着让自己值钱。

第三则:

没有哪个行业的钱是好赚的。

第四则:

干工作,没有哪个是顺利的,受点气是正常的。

第五则:

赚不到钱,赚知识;

赚不到知识,赚经历;

赚不到经历,赚阅历;

以上都赚到了 就不可能赚不到钱。

第六则:

只有先改变自己的态度,才能改变人生的高度。

只有先改变自己的工作态度,才能有职业高度。

第七则:

让人迷茫的原因只有一个

——那就是本该拼搏的年纪,却想得太多,做得太少!

送君一个字:干!

本文整理自网络

版权归原作者所有,向原作者致敬!

15 位健在的牛叉程序员,你知道哪几位?

现如今程序员是越来越多了,所以优秀的程序员也是越来越多了。但是他们中哪些才是顶尖中的顶尖呢?

其实要明确地指出“哪一个”程序员是最优秀的,这几乎不太可能,但是业内的开发者们还是对这个话题乐此不疲。ITworld 就通过投票,以及对其他国外社区(比如 Quora、Reddit)中的数据进行分析,来判断排名和分析是否一致。结果,有一些名字确实在大家的讨论中反复出现。

下面就让我们来看看依然健在的最受大家认可的 15 位优秀程序员:

(小编先补充声明,下面排序并不是按个人成就。如果你喜欢的大牛排在后面了,别纠结别激动 ~≧▽≦~ )

1. Margaret Hamilton

主要成就:阿波罗计划飞行控制软件的幕后英雄

上榜理由:作为 Charlse Stark Draper 实验室软件工程部门的主任,她领导她的小组为 NASA 的阿波罗计划和Skylab任务设计并开发了飞行控制软件。基于在阿波罗计划中的工作成就,她随后研发了通用系统语言和 DBTF 开发范式。她开创性地提出了“异步软件、优先调度、以及高可信度软件设计”等概念。这些都成为日后“软件工程”的基础。她是1986年Augusta Ada Lovelace奖的获得者,并且在2003年获得了NASA杰出空间表现奖。

网友评价

  • ford_beeblebrox:Hamilton发明了软件测试,她可以算得上是美国计算机工程的创始人。
  • Dan Allen:我认为在她所做出成就之前(恕我冒昧,因为Knuth也被包括在这个范围当中),计算机编程(以及其相关的东西)都还只是数学的一个分支。然后一套航天飞行器的飞行控制软件清晰地把编程带向了一个不同的范式领域。
  • David Hamilton: …是她创造了“软件工程”这个词,然后又用例子告诉大家怎么做
  • Drukered:她太厉害了

推荐阅读

《就是这个美女程序员,写出了让阿波罗成功登陆月球的代码!》

(旁边是「著作等身」的阿波罗制导系统的代码)

2. Donald Knuth

主要成就:《计算机编程艺术》的作者

上榜理由:他写了一本关于计算机编程理论的决定性著作,发明了 TeX 数字排版系统。他是1971年第一届ACM Grace Murray Hopper奖的获得者(译者注:美国海军女少将 Grace Murray Hopper 也绝对是载入史册的计算机科学家和顶级程序员,可惜她已经去世,因此没有列入本文名单)。并且是计算机最高奖ACM图灵奖获得者(1974)(要知道当时 他才36岁),还是1979年美国国家科学奖章获得者以及IEEE冯诺依曼奖章获得者(1995)。并在1998年被任命为计算机历史博物馆名人堂成员。

网友评价:

  • 匿名:写《计算机编程艺术》这本书,估计是有史以来关于计算机编程最复杂的工作。
  • Jaap Weel:在我用过的计算机软件里面,只有一种是几乎没有 bug 的,那就是Don Knuth编写的TeX。这太让人印象深刻了。
  • 伯小乐补充:关于 TeX 几乎没 Bug,是真事。高德纳再一次用行动宣告,我这个东西(TeX),不可能再有什么大的改进了,最多只能小修小补,使其趋近完美。他还专门设立了奖金:谁发 现Tex的一个Bug,就付他2.56美元,第二个错误5.12美元,第三个10.24美元。请看此文:《程序员单枪匹马做的最复杂/重要的程序,是哪 个?》。不过真的有人拿到他的支票了。
  • Mitch Ree-Jones:让我评价他的话,那就是优秀得让人难以置信。

推荐阅读:

《程序员单枪匹马做的最复杂/重要的程序,是哪个?》、《高德纳谈计算机程序设计艺术(上)》和《高德纳谈计算机程序设计艺术(下)》

3. Ken Thompson

主要成就:Unix 缔造者

上榜理由:和 Dennis Ritchie 一起,共同缔造了Unix操作系统。他是 B 语言的发明人,以及 UTF-8 字符编码规范和 ed 文本编辑器的发明人。同时他还是 Go 编程语言的共同开发者之一。他和 Dennis Ritchie 一起获得了1983年的ACM图灵奖,1994年的IEEE计算机先锋奖和1998年的美国国家技术奖章。1997年他正式成为美国计算机历史博物馆名人 堂成员。

网友评价:

  • Pete Prokopowice:…他很可能是有史以来最成就卓著的程序员。(他的成就包括:)Unix内核,Unix工具,计算机国际象棋世界冠军Belle、Plan 9、Go语言.”
  • Jan Jannink:Ken的贡献远远超过了我们的想象,他的工作是业界的根基,其作用之大,持续时间之久,时至今日还在影响着我们的生活。

4. Richard Stallman

主要成就:Emacs 和 GCC 的缔造者

上榜理由:他创立了GNU项目,并为其开发了很多核心工具,例如Emacs、GCC、GDB 等等,还有 GNU Make。他还创立了自由软件基金会。他是1990年ACM Grace Murray Hopper奖获得者,1998年EFF先锋奖获得者。

网友评价:

  • Srinivasan Krishnan:…在当年Symbolic公司和LMI公司的那场Lisp Machine纠纷中,他展示出了以一当百的编程实力
  • (黄小非补充:这是一个非常传奇的故事,当年Richard Stallman在麻省理工(MIT)的人工智能实验室工作,该实验室的重要成果之一就是Lisp Machine。后来,实验室中的两拨科学家分别下海创业,创立了Lisp Machine Inc. ,也即是LMI,以及Symbolic公司。这两家公司的主要业务都是基于Lisp Machine的,而且和MIT也签了约,说好了MIT授权他们使用Lisp Machine,而两家对Lisp Machine做的改进也授权MIT使用,互惠互利。可是,没想到后来Symbolic公司想另起炉灶,于是仿照Lisp Machine的功能自己重新研发了一个仿制品,日后再开发的软件产品就是基于这个仿制品系统而不是MIT的Lisp Machine了,这样也就不用与MIT和LMI再相互交换成果了。这个举动让Richard Stallman非常愤怒,他决定收拾一下Symbolic这个被金钱冲昏头脑的公司,于是他就盯着Symbolic的新产品推出情况,只要 Symbolic一发布新产品,他就马上在动手在Lisp Machine上做一个功能一样的送给MIT和LMI使用。一般Sybmolic推出的新软件,Richard Stallman自己一个人花个几天就能做出一个功能一模一样的。他的这种方式和工作效率曾经让Symbolic公司一度非常恼火。)
  • Dan Dunay:“他对编程的理解和他思想的光辉是如此强大,以致于形成了一套完整的计算机编程亚文化体系”
  • Marko Poutiainen:他是个伟大的,虽然我并不是对他百分百的认同,但是必定是历史上最重要的程序员之一,无论在他身前身后都是如此。
  • John Burnette:你想想假设Linux写出来的时候,GNU项目还不存在的话,会是什么情况?所以Stallman才是老大,耶~

5. Anders Hejlsberg

主要贡献:Turbo Pascal 的缔造者、C# 之父

上榜理由:他是Turbo Pascal的真正创始人。Turbo Pascl可谓是历史上最受欢迎的编译器之一,也是首个集成开发环境(IDE)。随后,他主导开发了Turbo Pascal的继任者——Delphi。他还是 C# 的首席构架师。2001年,他获得了Dr. Dobb’s杂志颁发的“杰出编程奖”。

网友评价:

  • Steve Wood:他当年用汇编语言代码写了Pascal编译器,同时支持当时PC机上的两种主流操作系统(DOS和CP/M)。他的编译器把编译,链接程序的时间从分钟级别提速到了秒级别。
  • Stefan Kiryazov:我崇拜这个家伙,在我成长为职业软件工程的三个关键阶段,每个阶段最喜爱的工具都出自他的创造。

6. Doug Cutting

主要成就:Lucene 的缔造者

上榜理由:他开发了Lucene搜索引擎,Nutch网络爬虫引擎以及Hadoop分布式大数据处理工具。他是开源项目的拥趸(Lucene,Nutch和Hadoop都是开源的)。他还担任过Apache软件基金会的总监。

网友评价:

  • Rajesh Rao:…他就是写出杰出搜索引擎框架(Lucene/Solr)的那个人。他为世界打开了大数据之门(Hadoop)。
  • Amit Nithianandan:他在Lucene和Hadoop上的创新性工作(当然也包括其他项目),为世界创造了巨大的财富和众多就业机会…

推荐阅读:

《Lucene五分钟教程》

7. Jeff Dean

主要成就:

Goolge搜索索引技术的幕后大脑。

上榜理由:他参与设计和实现了Google许多大型分布式系统,包括网络爬虫,索引和搜索,AdSense, MapReduce, BigTable和Spanner。他被选获得2009年的美国国家工程学院奖。2012年获得ACM SIGOPS Mark Weiser奖和ACM-InfoSys基础奖(计算机科学类)。

网友评价:

  • Natu Lauchande:…他在数据挖掘方面取得了重大突破(GFS, MapReduce, BigTable)
  • Erik Goldman: …他设计,实现并部署了MapReduce和BigTable,还有无数其他的东西。
  • 伯小乐补充:「Jeff Dean 是直接写二进制机器代码的,他写源代码,是为了给其他开发人员作参考」。这句是出自《趣文:谷歌大牛Jeff Dean的那些“惊人真相”》的趣评。

推荐阅读:

《谷歌大牛Jeff Dean是如何成为互联网战神的》和《趣文:谷歌大牛Jeff Dean的那些“惊人真相”》

8. Sanjay Ghemawat

主要成就:举足轻重的Google架构师

上榜理由:他参与设计和实现了Google的大型分布式系统,包括MapReduce、Bigtable、Spanner和 Google文件系统。他还编写过Unix的ical日历系统。他于2009年获选进入的美国国家工程院。2012年赢得了ACM计算机科学信息系统基础 类奖。

网友评价:

  • Ahmet Alp Balkan:他是 Jeff Dean 的左膀右臂。

9. Linus Torvalds

主要成就:Linux 之父

上榜理由:他创建了Linux 内核 以及 Git(一个开源的版本控制系统)。他是众多奖项和荣誉的获得者,包括:1998年EFF先锋奖,英国计算机社区Lovelace奖章 (2000年),千禧技术奖金(2012年)以及IEEE计算机社区计算机先锋奖(2014年)。他还于2008年被提名计算机历史博物馆名人堂成员,以 及2012年Internet名人堂成员。

网友评价:

  • Erich Ficker:「为了说明他的成就,让我们来做个对比吧。他花了几年的时间就完成了Linux内核的编写,与此同时GNU Hurd项目(一个GNU自己开发的内核项目)已经发展了25年了,却还只停留在预发布的demo阶段。」
  • Dan Allen:「Torvald是程序员中的程序员。」
  • Alok Tripathy:「他太他*的优秀了!」

推荐阅读:

《Linus:23年前我开发Linux仅仅是因为好玩》和《Git 10 周年访谈:Linus 讲述背后故事》,更多请点击这里。

10. John Carmack | 约翰·卡马克

主要荣誉:Doom 之父

主要成就:他是id Software的联合创始人,他开发出了极具影响力的FPS游戏:《德军总部3D》、《毁灭战士》和《雷神之锤》。他是计算机图形技术领域的先锋,在图 形学上多次取得重要突破:包括自适应性图块刷新(adaptive tile refresh),二叉空间分割(BSP),以及表面缓存技术等等。他在2001年入选交互式艺术与科学学院名人堂,并在2007年和2008年两次获得 艾美奖工程和技术类奖项,并于2010年获得游戏开发者选择终身成就奖。

网友评价:

  • Alex Dolinsky:”他在20岁之前就写出了第一个渲染引擎。这家伙是个天才。我希望我有他1/4的功力就好了。“
  • dniblock:「《德军总部3D》、《毁灭战士》和《雷神之锤》在那个时代都是革命级的游戏,并且影响了一代游戏设计师。」
  • Greg Naugthon:”给他一个周末,他能做出任何东西。“
  • Chris Morris:”他就是编程界的莫扎特”

推荐阅读:

《大牛约翰·卡马克语录》和《卡马克:用C++进行函数式编程》

11. Fabrice Bellard

主要成就:QEMU 缔造者

上榜理由:他是许多著名开源软件程序的作者,包括QEMU——一个硬件模拟和虚拟化平台,FFmpeg——用于处理多媒体数据,以及一个Tiny C编译器,还有LZEXE,一个可执行程序压缩器。他是2000年和2001年混乱C代码竞赛的冠军,以及2011年Google-O’Reilly开源 奖获得者。他还曾经是计算圆周率位数最多的世界纪录保持者。

网友评价:

  • raphinou:“我觉得Fabrice Bellard的工作实在是太卓著和令人印象深刻了”
  • Pavan Yara:“Fabrice Bellard是全世界最高产的程序员…”
  • Micheal Valladolid:”他是软件工程界的尼古拉特斯拉“
  • Michael Biggins:”他是20世纪80年代以来产生的一位持续高产的程序员“

推荐阅读:

《天才程序员 Fabrice Bellard》

12. Jon Skeet

主要成就:StackOverflow 上的传奇贡献者

上榜理由:他是Google工程师,《C# in Depth》的作者。他保持者StackOverflow有史以来的最高声望,他平均每个月在StackOverflow上回答390个问题。

网友评价:

  • Steven A. Lowe:”Jon Skeet根本不需要调试器,他只要一直瞪着代码,然后代码就会自己出来坦白哪里出错了。“
  • Dan Dyer:”Jon Skeet的代码如果无法通过编译,那编译器就该出来道歉了。“
  • 匿名:”Jon Skeet的代码不需要遵守任何代码规范,因为他的代码本身就是规范。“
  • 伯小乐补充:上面这些评价,和《趣文:谷歌大牛Jeff Dean的那些“惊人真相”》这篇文章的趣评一个风格呀。

13. Adam D’Angelo

主要成就:Quora 联合创始人

上榜理由:他是Facebook的工程师,为Facebook构建了News Feeds 的最初基础设施。后来他成为了Facebook的CTO以及工程副总裁,接着他从Facebook离职联合创立了Quora。2001年,他以高中生的身 份成为了美国奥利匹克信息竞赛排名第八的选手。在2004年的ACM国际大学生编程竞赛中,他是加州理工大学银牌优胜队的成员之一。他还在2005年 Topcoder大学生挑战赛中闯入了算法编程竞赛的最终决赛轮。

网友评价:

  • 匿名:”他是一个‘全能’程序员”
  • Mark Zuckerberg:“他是我说的六个人之一。”
  • (黄小非补充:在创立Facebook之初,Mark Zuckerberg认为世界上只有6个人能够理解他创立Facebook的思想,当时他就盯上了在加州理工上学的Adam D’Angelo,认为他是6个人之一。)

14. Petr Mitrechev

主要荣誉:全世界最有竞赛能力的程序员

上榜理由:国际奥林匹克信息竞赛两次金牌得主(2000,2002)。2006年,他赢得了Google代码挑战赛和TopCode算法公开赛冠 军。另外,他还是两次Facebook Hacker Cup的得主(2011,2013)。在这篇文章发布的时候,他是TopCoder上算法总排名第二的参赛者(id叫Petr)并且在 Codeforces的总排名也是第二。

网友评价:

  • Kavish Dwivedi:「他就是竞赛型程序员的偶像,即使是在我们印度…」

15. Gennady Korotkevich

主要成就:编程竞赛的奇才

上榜理由:他是国际奥林匹克信息竞赛创办以来最年轻的参赛者(11岁)以及6次金牌获得者(2007-2012)。2013年ACM国际大学生编程 竞赛优胜队的成员之一,2014年Facebook Hacker Cup的赢得者。在本文编写是,他是Codeforces排名第一的选手(id:Tourist)以及Topcode算法竞赛者中的第一名

本文转载自: http://www.techug.com/good-programmers
(本站只作转载,不代表本站同意文中观点或证实文中信息)

Oracle与Mysql的高级查询与难点sql

Oracle与Mysql的高级查询与难点sql
mysql查询杨凯专属频道OracleSQL
一、连接查询
1.内连接
内连接用于返回满足连接条件的所有记录。默认情况下,在执行连接查询时如果没有指定任何连接操作符,那么这些连接查询都属于内连接。
Sql代码
  1. SELECT a.dname,b.ename from dept a,emp b where a.deptno=b.deptno and a.deptno=10;
在FROM子句中指定INNER JOIN选项,也可以指定内连接。
Sql代码
1. SELECT a.dname,b.ename from dept a INNER JOIN emp b where a.deptno=b.deptno and a.deptno=10;
从Oracle9i开始,如果主表的主键列和从表的外部键列名称相同,那么可以使用NATURAL JOIN 关键字自动执行内连接操作。
Sql代码
1. SELECT dname,ename FROM dept NATURAL JOIN emp;
2.左外连接
左外连接通过指定LEFT[OUTER] JOIN选项来实现。当使用左外连接时,不仅会返回满足连接条件的所有记录,而且还会返回不满足连接条件的连接操作符左边表的其他行。
Sql代码
1. SELECT a.dname,b.ename FROM dept a LEFT JOIN emp b ON a.deptno=b.deptno AND a.deptno=10;
3.右外连接
右外连接通过指定RIGHT[OUTER] JOIN选项来实现的。当使用右外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件操作符右边表的其他行。
Sql代码
1. SELECT a.dname,b.ename FROM dept a RIGHT JOIN emp b ON a.deptno=b.deptno AND a.deptno=10;
4.完全外连接
完全外连接是指定FULL[OUTER] JOIN 选项来实现的。当使用完全外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件的所有其他行。
Sql代码
1. SELECT a.dname,b.ename FROM dept a FULL JOIN emp b ON a.deptno=b.deptno AND a.deptno=10;
相当于没连接去掉where条件
Sql代码
1. SELECT a.dname,b.ename from dept a,emp;
5.使用(+)操作符
在Oracle9i之前,当执行外连接时,都是使用连接操作符(+)来完成的。尽管可以使用操作符(+)执行外连接操作。但Oralce9i开始Oracle建议使用OUTER JOIN执行外连接。语法如下:
SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column1(+) = table2.column2;
当使用(+)操作符执行外连接时,应该将该操作符放在显示较少行(完全满足连接条件行)的一端。
一句话,左外连接时,(+)要放在右边表的一端。右外连接时,(+)放在左边表的一端。
左外连接:
Sql代码
1. SELECT a.dname,b.ename FROM dept a, emp b where a.deptno=b.deptno(+) AND b.deptno(+)=10;
右外连接
Sql代码
1. SELECT a.dname,b.ename FROM dept a, emp b where a.deptno(+)=b.deptno AND a.deptno(+)=10;
二、递归查询
1.语法
Sql代码
1. Select * from …. Where [结果过滤条件语句]
2. Start with [起始条件过滤语句]
3. Connect by prior [中间记录过滤条件语句]
2.例子
Sql代码
1. Select * from company t Where t.flag=1
2. Start with t.company_id=50500000
3. Connect by prior t.company_id=t.parent_id
说明:
Sql代码
1. select [level],column,expr from table [where condition]
2. [start with] //[起点]
3. [connect by prior + 主键=外键 或 外键=主键]
a.自顶向下: 左边放主键,右边放外键。
b.自底向上: 右边放主键,左边放外键。
c.level(伪列)层次的级别,不固定值。
三、更改数据库的时间格式
1、临时更改
alter session set nls_date_format=’YYYY-MM-DD HH24:MI:SS’
2.永久更改
在注册表[HKEY_CODE_MACHINE\SOFTWARE\ORACLE]里面,加入NLS_DATE_FORMAT,值为YYYY-MM-DD HH24:MI:SS。
3、Unix下,在用户的.profile文件中增加以下内容:
NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS
export NLS_DATE_FORMAT
附:在SQLPLUS下,实现中-英字符集转换
Sql代码
1. alter session set nls_language=’AMERICAN’;
2. alter session set nls_language=’SIMPLIFIED CHINESE’;
四、复制表和数据
1)建表
Sql代码
1. create table test as select * from dept; –从已知表复制数据和结构
2. create table test as select * from dept where 1=2; –从已知表复制结构但不包括数据
建立视图:
Sql代码
1. CREATE OR REPLACE VIEW dept_10 AS SELECT empno,ename,job,sal,deptno FROM emp WHERE deptno=10 ORDER BY empno;
建立实体化视图:
Sql代码
1. CREATE MATERIALLIZED VIEW summary_emp AS SELECT deptno,job,avg(sal) avgsal, sum(sal) sumsal FROM emp GROUP BY cube(deptno,job);
实体化视图管理是用于汇总,预计算,复制或分发数据的对象, 在大型的数据库中使用它可以提高涉及到的SUM,COUNT,AVG,MIN,MAX等的表的查询的速度,只要在实体化视图管理上创建了统计,查询优化器 将自动的使用实体化视图管理,这特性被称为QUERY REWRITE(查询重写).与普通的视图不同的是实体化视图管理存储数据,占据数据库的物理空间的.
2)不使用列的列表插入数据:
Sql代码
1. insert into test select * from dept;
3)使用DEFAULT插入数据:如果列存在默认值,则会使用其默认值;如果列不存在默认值,则自动使用NULL.
Sql代码
1. insert into dept values(10,’市场部’,default);
4)使用子查询插入数据
将查出来的内容全部插入
Sql代码
1. insert into employee(empno,ename,sql,deptno)
2. select empno,ename,sal,deptno from emp
3. where deptno = 10;
将查出来的内容部分插入
Sql代码
1. insert into employee(empno,ename,sql,deptno)
2. select empno,’杨凯’,sal,deptno from emp
3. where deptno = 10;
当要装载大批量数据时,用直接装载方式:
Sql代码
1. insert /*+APPEND */ into employee(empno,ename,sql,deptno)
2. select empno,ename,sal,deptno from emp
3. where deptno = 10;
5)使用多表插入数据。从Oracle9i开始,使用INSERT语句可以将某张表的数据同时插入到多张表中。
使用ALL操作符,在每个条件子句上都要执行INTO子句后的子查询。
Sql代码
1. insert all when deptno=10 then into t_dept10
2. when deptno=20 then into t_dept20
3. when deptno=30 then into t_dept30
4. when job=’clerk’ then into t_clerk
5. else into t_other
6. select * from emp;
使用FIRST操作符执行多表插入,如果数据已经满足了先前条件,并且已经被插入到某表,那么该行数据在后续插入中将不会被再次使用。
Sql代码
1. insert first when deptno=10 then into t_dept10
2. when deptno=20 then into t_dept20
3. when deptno=30 then into t_dept30
4. when job=’clerk’ then into t_clerk
5. else into t_other
6. select * from emp;
五、多列子查询
多列子查询是指返回多列数据的子查询语句。当多列子查询返回单行数据时,在WHERE子句中可以使用单行比较符;当多列子查询返回多行数据时,在WHERE子句中必须使用多行比较符(IN,ANY,ALL)。
如显示与Id为10000的人员部门和岗位完全相同的所有雇员:
Sql代码
1. SELECT ename,job,sal,deptno FROM emp WHERE (deptno,job)=(SELECT deptno,job FROM emp WHERE id=10000);
当执行成对比较是时,因为要求多个列的数据必须同时匹配,所以必须要使用多列子查询实现。
如显示工资和补助与部门30雇员的工资和补助完全匹配的所有雇员:
Sql代码
1. SELECT ename,sal,comm,dptno FROM emp WHERE (sal, nvl(comm,-1)) IN (SELECT sal, nvl(comm,-1) FROM emp WHERE deptno=30);
执行非成对比较时,应该使用多个多行子查询来实现。
如显示工资匹配于部门30工资列表、补助匹配于部门30补助列表的所有雇员:
Sql代码
1. SELECT ename,sal,comm,deptno FROM emp WHERE sal IN (SELECT sal FROM emp WHERE deptno=30) AND nvl(comm,-1) IN (SELECT nvl(comm,-1) FROM emp WHERE deptno=30);
六、相关子查询与FROM子句中子查询
相关子查询是指需要引用主查询表列的子查询语句,是通过EXISTS谓词来实现的。
如显示工作在“NEW YORK”的所有雇员:
Sql代码
1. SELECT ename,job,sal,deptno FROM emp WHERE EXISTS (SELECT 1 FROM dept WHERE dept.deptno=emp.deptno AND dept.loc=’NEW YORK’);
在FROM子句中使用子查询时,该子查询会被作为视图对待。因此也被称为内嵌视图。
如显示高于部门平均工资的雇员信息:
Sql代码
1. SELECT ename,job,sal FROM emp, (SELECT deptno,avg(sal) avgsal FROM emp GROUP BY deptno) dept WHERE emp.deptno=dept.deptno AND sal>dept.avgsal;
七、合并查询
集合操作符有UNION,UNION ALL, INTERSECT和MINUS。当使用集合操作符时,必须确保不同查询的列个数和数据类型都要匹配。
有以下一些限制:
1.对于LOB,VARRAY和嵌套表列来说,集合操作符是无效的。
2.对于LONG列来说,UNION,INTERSECT,MINUS操作符是无效的。
3.如果选择列表包含了表达式,则必须为为其指定列别名。
(一)UNION
UNION操作符用于获取两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行。并且会以第一列的结果进行排序。
Sql代码
1. SELECT ename,sal,job FROM emp WHERE sal>2500 UNION SELECT ename,sal,job FROM emp WHERE job=’MANAGER’;
(二)UNION ALL
UNION ALL操作符获取两个结果集的并集,但不会取消重复值,而且也不会以任何列进行排序。
Sql代码
1. SELECT ename,sal,job FROM emp WHERE sal>2500 UNION ALL SELECT ename,sal,job FROM emp WHERE job=’MANAGER’;
(三)INTERSECT
INTERSECT操作符用于获取两个结果集的交集。当使用该操作符时,只会显示同时存在于两个结果集中的数据,并且会以第一列进行排序。
Sql代码
1. SELECT ename,sal,job FROM emp WHERE sal>2500 INTERSECT SELECT ename,sal,job FROM emp WHERE job=’MANAGER’;
(四)MINUS
MINUS用于获取两个结果集的差集。以第一列进行排序。
Sql代码
1. SELECT ename,sal,job FROM emp WHERE sal>2500 MINUS SELECT ename,sal,job FROM emp WHERE job=’MANAGER’;
八、CASE表达式和倒叙查询
通过CASE表达式,可以避免调用过程来完成条件分支操作。
Sql代码
1. SELECT ename,sal,CASE WHEN sal>3000 THEN 3 WHEN sal>2000 THEN 2 ELSE 1 END grade FROM emp WHERE deptno=10;
默认情况下,当执行查询操作时,只能看到最近提交的数据。从Oracle9i开始,通过使用倒叙查询(Flashback Query)特征,可以查看到过去某个时间点所提交的数据。注意,如果使用倒叙查询,那么要示数据库必须彩UNDO管理方式,并且初始化参数 undo_retention限制了UNDO数据的保留时间。
Sql代码
1. SELECT ename,sal FROM emp AS OF TIMESTAMP to_timestamp(‘2009-01-01 12:12:00′,’YYYY-MM-DD HH24:MI:SS’) WHERE ename=’CLARK’;
九、使用WITH子句重用子查询
从Oracle9i开始,通过WITH子句可以给子查询指定一个名称,并且使得在一条语句中可以完成所有任务,从而避免使用临时表。
如显示部门工资总和高于雇员工资总和三分之一的部门名称及工资总和。
Sql代码
1. WITH summary AS (SELECT dname,SUM(sal) AS dept_total FROM emp,dept WHERE emp.deptno=dept.deptno GROUP BY dname)
2. SELECT dname, dept_total FROM summary WHERE dept_total>(
3. SELECT SUM(dept_total) * 1/3 FROM summary);
十、oracle对记录进行去重sql
Sql代码
1. DELETE FROM [TABLE_NAME]
2. WHERE ROWID NOT IN (
3. SELECT MIN(ROWID) FROM [TABLE_NAME]
4. GROUP BY [COL1,COL2,COL3…]
5. );
统计酒店名不重复的总数
Sql代码
1. SELECT COUNT(DISTINCT(hotel_id)) FROM t_app_travel_hotel_comment;
十一、SQL排序后的NULL位置
可以把那些NULL值假想为所有内容中值是最大的,因此,升序排序后NULL值在最后,倒序排序后NULL值在最前!
当指定”NULLS FIRST”时,无论是升序排序还是倒序排序,NULL值都会排列在最前面;当指定“NULLS LAST”时,无论是升序排序还是倒序排序,NULL值都会排列在最后面。
Sql代码
1. SELECT * FROM t ORDER BY x DESC NULLS LAST;

老子道德经全文

老子
道德经

《道德经》——《老子道德经》

 

老 子: 「道 德 經」: 第 一 章

道 可 道 , 非 常 道 。 名 可 名 , 非 常 名 。

无 名 天 地 之 始 ﹔ 有 名 万 物 之 母 。

故 常 无 , 欲 以 观 其 妙 ﹔ 常 有 , 欲 以 观 其 徼 。

此 两 者 , 同 出 而 异 名 , 同 谓 之 玄 。

玄 之 又 玄 , 众 妙 之 门 。

 

老 子: 「道 德 經」 : 第 二 章

天 下 皆 知 美 之 为 美 , 斯 恶 已 。

皆 知 善 之 为 善 , 斯 不 善 已 。

有 无 相 生 , 难 易 相 成 , 长 短 相 形 ,

高 下 相 盈 , 音 声 相 和 , 前 后 相 随 。

恒 也 。 是 以 圣 人 处 无 为 之 事 ,

行 不 言 之 教 ﹔ 万 物 作 而 弗 始 ,

生 而 弗 有 , 为 而 弗 恃 , 功 成 而 不 居 。

夫 唯 弗 居 , 是 以 不 去 。

 

老 子: 「道 德 经」 : 第 三 章

不 尚 贤 , 使 民 不 争

不 贵 难 得 之 货 , 使 民 不 为 盗 ﹔

不 见 可 欲 , 使 民 心 不 乱 。

是 以 圣 人 之 治 ,

虚 其 心 ,

实 其 腹 ,

弱 其 志 ,

强 其 骨 。

常 使 民 无 知 无 欲 。

使 夫 智 者 不 敢 为 也 。

为 无 为 , 则 无 不 治 。

 

老 子: 「道 德 经」 : 第 四 章

道 冲 , 而 用 之 或 不 盈 。

渊 兮 , 似 万 物 之 宗 ﹔ 湛 兮 , 似 或 存 。

吾 不 知 谁 之 子 , 象 帝 之 先 。

 

老 子: 「道 德 经」 : 第 五 章

天 地 不 仁 , 以 万 物 为 刍 狗 ﹔ 圣 人 不 仁 , 以 百 姓 为 刍 狗 。

天 地 之 间 , 其 犹 橐 钥 乎 。 虚 而 不 屈 , 动 而 愈 出 。

多 言 数 穷 , 不 如 守 中 。

 

老 子: 「道 德 经」 : 第 六 章

谷 神 不 死 , 是 谓 玄 牝 。

玄 牝 之 门 , 是 谓 天 地 根 。帛系 若 存 , 用 之 不 勤 。

 

老 子: 「道 德 经」 : 第 七 章

天 长 地 久 。

天 地 所 以 能 长 且 久 者 ,

以 其 不 自 生 , 故 能 长 生 。

是 以 圣 人 后 其 身 而 身 先 ﹔ 外 其 身 而 身 存 。

非 以 其 无 私 邪 。

故 能 成 其 私 。

 

老 子: 「道 德 经」 : 第 八 章

上 善 若 水 。

水 善 利 万 物 而 不 争 ,

处 众 人 之 所 恶 , 故 几 于 道 。

居 善 地 , 心 善 渊 , 与 善 仁 ,

言 善 信 , 政 善 治 , 事 善 能 ,

动 善 时 。 夫 唯 不 争 , 故 无 尤 。

 

老 子: 「道 德 经」 : 第 九 章

持 而 盈 之 , 不 如 其 已 ﹔

揣 而 锐 之 , 不 可 长 保 。

金 玉 满 堂 , 莫 之 能 守 ﹔

富 贵 而 骄 , 自 遗 其 咎 。

功 遂 身 退 , 天 之 道 也 。

 

老 子: 「道 德 经」 : 第 十 章

载 营 魄 抱 一 , 能 无 离 乎 。

专 气 致 柔 , 能 如 婴 儿 乎 。

涤 除 玄 鉴 , 能 如 疵 乎 。

爱 国 治 民 , 能 无 为 乎 。

天 门 开 阖 , 能 为 雌 乎 。

明 白 四 达 , 能 无 知 乎 。

 

老 子: 「道 德 经」 : 第 十 一 章

三 十 辐 , 共 一 毂 , 当 其 无 , 有 车 之 用 。

埏 埴 以 为 器 , 当 其 无 , 有 器 之 用 。

凿 户 牖 以 为 室 , 当 其 无 , 有 室 之 用 。

故 有 之 以 为 利 , 无 之 以 为 用 。

 

老 子: 「道 德 经」 : 第 十 二 章

五 色 令 人 目 盲 ﹔ 五 音 令 人 耳 聋 ﹔ 五 味 令 人 口 爽 ﹔

驰 骋 畋 猎 , 令 人 心 发 狂 ﹔ 难 得 之 货 , 令 人 行 妨 。

是 以 圣 人 为 腹 不 为 目 , 故 去 彼 取 此 。

 

老 子: 「道 德 经」 : 第 十 三 章

宠 辱 若 惊 , 贵 大 患 若 身 。

何 谓 宠 辱 若 惊 。

宠 为 下 , 得 之 若 惊 , 失 之 若 惊 , 是 谓 宠 辱 若 惊 。

何 谓 贵 大 患 若 身 。

吾 所 以 有 大 患 者 , 为 吾 有 身 ,

及 吾 无 身 , 吾 有 何 患 。

故 贵 以 身 为 天 下 , 若 可 寄 天 下 ﹔

爱 以 身 为 天 下 , 若 可 托 天 下 。

 

老 子: 「道 德 经」 : 第 十 四 章

视 之 不 见 , 名 曰 夷 ﹔

听 之 不 闻 , 名 曰 希 ﹔

搏 之 不 得 , 名 曰 微 。

此 三 者 不 可 致 诘 , 故 混 而 为 一 。

其 上 不 皦 , 其 下 不 昧 。

绳 绳 兮 不 可 名 , 复 归 于 物 。

是 谓 无 状 之 状 , 无 物 之 象 , 是 谓 惚 恍 。

迎 之 不 见 其 首 , 随 之 不 见 其 后 。

执 古 之 道 , 以 御 今 之 有 。

能 知 古 始 , 是 谓 道 纪 。

 

老 子: 「道 德 经」 : 第 十 五 章

古 之 善 为 道 者 , 微 妙 玄 通 , 深 不 可 识 。

夫 唯 不 可 识 , 故 强 为 之 容 :

豫 兮 若 冬 涉 川 ﹔

犹 兮 若 畏 四 邻 ﹔

俨 兮 其 若 客 ﹔

涣 兮 其 若 凌 释 ﹔

敦 兮 其 若 朴 ﹔

旷 兮 其 若 谷 ﹔

混 兮 其 若 浊 ﹔

澹 兮 其 若 海 ﹔

飂 兮 若 无 止 。

孰 能 浊 以 静 之 徐 清 。

孰 能 安 以 动 之 徐 生 。

保 此 道 者 , 不 欲 盈 。

夫 唯 不 盈 , 故 能 蔽 而 新 成 。

 

老 子: 「道 德 经」 : 第 十 六 章

致 虚 极 , 守 静 笃。

万 物 并 作 , 吾 以 观 复。

夫 物 芸 芸 , 各 复 归 其 根 。

归 根 曰 静 , 静 曰 复 命 。

复 命 曰 常 , 知 常 曰 明 。

不 知 常 , 妄 作 凶 。

知 常 容 , 容 乃 公 ,

公 乃 全 , 全 乃 天 ,

天 乃 道 , 道 乃 久 , 没 身 不 殆 。

 

老 子: 「道 德 经」 : 第 十 七 章

太 上 , 不 知 有 之 ﹔

其 次 , 亲 而 誉 之 ﹔

其 次 , 畏 之 ﹔

其 次 , 侮 之 。

信 不 足 焉 , 有 不 信 焉 。

悠 兮 其 贵 言 。

功 成 事 遂 , 百 姓 皆 谓 : 「 我 自 然 」 。

 

老 子: 「道 德 经」 : 第 十 八 章

大 道 废 , 有 仁 义 ﹔ 智 慧 出 , 有 大 伪 ﹔

六 亲 不 和 , 有 孝 慈 ﹔ 国 家 昏 乱 , 有 忠 臣 。

 

老 子: 「道 德 经」 : 第 十 九 章

绝 圣 弃 智 , 民 利 百 倍 ﹔

绝 仁 弃 义 , 民 复 孝 慈 ﹔

绝 巧 弃 利 , 盗 贼 无 有 。

此 三 者 以 为 文 , 不 足 。

故 令 有 所 属 : 见 素 抱 朴 , 少 思 寡 欲 , 绝 学 无 忧 。

 

老 子: 「道 德 经」 : 第 二 十 章

唯 之 与 阿 , 相 去 几 何 。

之 与 恶 , 相 去 若 何 。

人 之 所 畏 , 不 可 不 畏 。

荒 兮 , 其 未 央 哉 。

众 人 熙 熙 , 如 享 太 牢 , 如 春 登 台 。

我 独 泊 兮 , 其 未 兆 ﹔

沌 沌 兮 , 如 婴 儿 之 未 孩 ﹔

儽 儽 兮 , 若 无 所 归 。

众 人 皆 有 余 , 而 我 独 若 遗 。 我 愚 人 之 心 也 哉 。

俗 人 昭 昭 , 我 独 昏 昏 。

俗 人 察 察 , 我 独 闷 闷 。

众 人 皆 有 以 , 而 我 独 顽 且 鄙 。

我 独 异 于 人 , 而 贵 食 母 。

 

老 子: 「道 德 经」 : 第 二 十 一 章

孔 德 之 容 , 惟 道 是 从 。

道 之 为 物 , 惟 恍 惟 惚 。

惚 兮 恍 兮 , 其 中 有 象 ﹔ 恍 兮 惚 兮 , 其 中 有 物 。

窈 兮 冥 兮 , 其 中 有 精 ﹔ 其 精 甚 真 , 其 中 有 信 。

自 今 及 古 , 其 名 不 去 , 以 阅 众 甫 。

吾 何 以 知 众 甫 之 状 哉 。 以 此 。

 

老 子: 「道 德 经」 : 第 二 十 二 章

曲 则 全 , 枉 则 直 , 洼 则 盈 ,

敝 则 新 , 少 则 得 , 多 则 惑 。

是 以 圣 人 抱 一 为 天 下 式 。

不 自 见 , 故 明 ﹔

不 自 是 , 故 彰 ﹔

不 自 伐 , 故 有 功 ﹔

不 自 矜 , 故 长 。

夫 唯 不 争 , 故 天 下 莫 能 与 之 争 。

古 之 所 谓 「 曲 则 全 」 者 , 岂 虚 言 哉 。

诚 全 而 归 之 。

 

老 子: 「道 德 经」 : 第 二 十 三 章

希 言 自 然 。

故 飘 风 不 终 朝 , 骤 雨 不 终 日 。

孰 为 此 者 。

天 地 。 天 地 尚 不 能 久 , 而 况 于 人 乎 。

故 从 事 于 道 者 , 同 于 道 ﹔

德 者 , 同 于 德 ﹔ 失 者 , 同 于 失 。

同 于 道 者 , 道 亦 乐 得 之 ﹔

同 于 德 者 , 德 亦 乐 得 之 ﹔

同 于 失 者 , 失 亦 乐 得 之 。

信 不 足 焉 , 有 不 信 焉 。

 

老 子: 「道 德 經」 : 第 二 十 四 章

企 者 不 立 ﹔ 跨 者 不 行 ﹔

自 见 者 不 明 ﹔ 自 是 者 不 彰 ﹔

自 伐 者 无 功 ﹔ 自 矜 者 不 长 。

其 在 道 也 , 曰 : 余 食 赘 形 。

物 或 恶 之 , 故 有 道 者 不 处 。

 

老 子: 「道 德 经」 : 第 二 十 五 章

有 物 混 成 , 先 天 地 生 。

寂 兮 寥 兮 , 独 立 而 不 改 ,

周 行 而 不 殆 , 可 以 为 天 地 母 。

吾 不 知 其 名 , 强 字 之 曰 道 , 强 为 之 名 曰 大 。

大 曰 逝 , 逝 曰 远 , 远 曰 反 。

故 道 大 , 天 大 , 地 大 , 人 亦 大 。

域 中 有 四 大 , 而 人 居 其 一 焉 。

人 法 地 , 地 法 天 , 天 法 道 , 道 法 自 然 。

 

老 子: 「道 德 经」 : 第 二 十 六 章

重 为 轻 根 , 静 为 躁 君 。

是 以 君 子 终 日 行 不 离 辎 重 。

虽 有 荣 观 , 燕 处 超 然 。

奈 何 万 乘 之 主 , 而 以 身 轻 天 下 。

轻 则 失 根 , 躁 则 失 君 。

 

老 子: 「道 德 经」 : 第 二 十 七 章

善 行 无 辙 迹 , 善 言 无 瑕 谪 ﹔

善 数 不 用 筹 策 ﹔ 善 闭 无 关 楗 而 不 可 开 ,

善 结 无 绳 约 而 不 可 解 。

是 以 圣 人 常 善 救 人 , 故 无 弃 人 ﹔

常 善 救 物 , 故 无 弃 物 。

是 谓 袭 明 。

故 善 人 者 , 不 善 人 之 师 ﹔

不 善 人 者 , 善 人 之 资 。

不 贵 其 师 , 不 爱 其 资 ,

虽 智 大 迷 , 是 谓 要 妙 。

 

老 子: 「道 德 经」 : 第 二 十 八 章

知 其 雄 , 守 其 雌 , 为 天 下 溪 。

为 天 下 溪 , 常 德 不 离 , 复 归 于 婴 儿 。

知 其 白 , 守 其 辱 , 为 天 下 谷 。

为 天 下 谷 , 常 德 乃 足 , 复 归 于 朴 。

知 其 白 , 守 其 黑 , 为 天 下 式 。

为 天 下 式 , 常 德 不 忒 , 复 归 于 无 极 。

朴 散 则 为 器 , 圣 人 用 之 ,

则 为 官 长 , 故 大 智 不 割 。

 

老 子: 「道 德 经」 : 第 二 十 九 章

将 欲 取 天 下 而 为 之 , 吾 见 其 不 得 已 。

天 下 神 器 , 不 可 为 也 , 不 可 执 也 。

为 者 败 之 , 执 者 失 之 。

是 以 圣 人 无 为 , 故 无 败 ﹔

无 执 , 故 无 失。

夫 物 或 行 或 随 ﹔ 或 嘘 或 吹 ﹔

或 强 或 羸 ﹔ 或 载 或 隳 。

是 以 圣 人 去 甚 , 去 奢 , 去 泰 。

 

老 子: 「道 德 经」 : 第 三 十 章

以 道 佐 人 主 者 , 不 以 兵 强 天 下 。

其 事 好 远 。

师 之 所 处 , 荆 棘 生 焉 。

大 军 之 后 , 必 有 凶 年 。

善 有 果 而 已 , 不 以 取 强 。

果 而 勿 矜 , 果 而 勿 伐 , 果 而 勿 骄 。

果 而 不 得 已 , 果 而 勿 强 。

物 壮 则 老 , 是 谓 不 道 , 不 道 早 已 。

 

老 子: 「道 德 经」 : 第 三 十 一 章

夫 兵 者 , 不 祥 之 器 ,

物 或 恶 之 , 故 有 道 者 不 处 。

君 子 居 则 贵 左 , 用 兵 则 贵 右 。

兵 者 不 祥 之 器 , 非 君 子 之 器 ,

不 得 已 而 用 之 , 恬 淡 为 上 。

胜 而 不 美 , 而 美 之 者 , 是 乐 杀 人 。

夫 乐 杀 人 者 , 则 不 可 得 志 于 天 下 矣 。

吉 事 尚 左 , 凶 事 尚 右 。

偏 将 军 居 左 , 上 将 军 居 右 , 言 以 丧 礼 处 之 。

杀 人 之 众 , 以 悲 哀 泣 之 , 战 胜 以 丧 礼 处 之 。

 

老 子: 「道 德 经」 : 第 三 十 二 章

道 常 无 名 朴 。

虽 小 , 天 下 莫 能 臣 。

侯 王 若 能 守 之 , 万 物 将 自 宾 。

天 地 相 合 , 以 降 甘 露 , 民 莫 之 令 而 自 均 。

始 制 有 名 , 名 亦 既 有 ,

夫 亦 将 知 止 , 知 止 可 以 不 殆 。

譬 道 之 在 天 下 , 犹 川 谷 之 于 江 海 。

 

老 子: 「道 德 经」 : 第 三 十 三 章

知 人 者 智 , 自 知 者 明 。

胜 人 者 有 力 , 自 胜 者 强 。

知 足 者 富 。

强 行 者 有 志 。

不 失 其 所 者 久 。

死 而 不 亡 者 寿 。

 

老 子: 「道 德 经」 : 第 三 十 四 章

大 道 泛 兮 , 其 可 左 右 。

万 物 恃 之 以 生 而 不 辞 , 功 成 而 不 有 。

衣 养 万 物 而 不 为 主 , 可 名 于 小 ﹔

万 物 归 焉 而 不 为 主 , 可 名 为 大 。

以 其 终 不 自 为 大 , 故 能 成 其 大 。

 

老 子: 「道 德 经」 : 第 三 十 五 章

执 大 象 , 天 下 往 。

往 而 不 害 , 安 平 泰 。

乐 与 饵 , 过 客 止 。

道 之 出 口 , 淡 乎 其 无 味 ,

视 之 不 足 见 , 听 之 不 足 闻 , 用 之 不 足 既 。

 

老 子: 「道 德 经」 : 第 三 十 六 章

将 欲 歙 之 , 必 故 张 之 ﹔ 将 欲 弱 之 , 必 故 强 之 ﹔

将 欲 废 之 , 必 故 兴 之 ﹔ 将 欲 取 之 , 必 故 与 之 。

是 谓 微 明 。

柔 弱 胜 刚 强 。

鱼 不 可 脱 于 渊 , 国 之 利 器 不 可 以 示 人 。

 

老 子: 「道 德 经」 : 第 三 十 七 章

道 常 无 为 而 无 不 为 。

侯 王 若 能 守 之 , 万 物 将 自 化 。

化 而 欲 作 , 吾 将 镇 之 以 无 名 之 朴 。

镇 之 以 无 名 之 朴 , 夫 将 不 欲 。

不 欲 以 静 , 天 下 将 自 正 。

 

老 子: 「道 德 经」 : 第 三 十 八 章

上 德 不 德 , 是 以 有 德 ﹔

下 德 不 失 德 , 是 以 无 德 。

上 德 无 为 而 无 以 为 ﹔

下 德 无 为 而 有 以 为 。

上 仁 为 之 而 无 以 为 ﹔

上 义 为 之 而 有 以 为 。

上 礼 为 之 而 莫 之 应 ,

则 攘 臂 而 扔 之 。

故 失 道 而 后 德 , 失 德 而 后 仁 ,

失 仁 而 后 义 , 失 义 而 后 礼 。

夫 礼 者 , 忠 信 之 薄 , 而 乱 之 首 。

前 识 者 , 道 之 华 , 而 愚 之 始 。

是 以 大 丈 夫 处 其 厚 , 不 居 其 薄 ﹔

处 其 实 , 不 居 其 华 。 故 去 彼 取 此 。

 

老 子: 「道 德 经」 : 第 三 十 九 章

昔 之 得 一 者 :

天 得 一 以 清 ﹔

地 得 一 以 宁 ﹔

神 得 一 以 灵 ﹔

谷 得 一 以 生 ﹔

侯 得 一 以 为 天 下 正 。

其 致 之 也 , 谓 天 无 以 清 , 将 恐 裂 ﹔

地 无 以 宁 , 将 恐 废 ﹔

神 无 以 灵 , 将 恐 歇 ﹔

谷 无 以 盈 , 将 恐 竭 ﹔

万 物 无 以 生 , 将 恐 灭 ﹔

侯 王 无 以 正 , 将 恐 蹶 。

故 贵 以 贱 为 本 , 高 以 下 为 基 。

是 以 侯 王 自 称 孤 、 寡 、 不 谷 。

此 非 以 贱 为 本 邪 。 非 乎 。 故 致 誉 无 誉 。

是 故 不 欲 琭 琭 如 玉 , 珞 珞 如 石 。

 

老 子: 「道 德 經」 : 第 四 十 章

反 者 道 之 动 ﹔ 弱 者 道 之 用 。

天 下 万 物 生 于 有 , 有 生 于 无 。

 

老 子: 「道 德 经」 : 第 四 十 一 章

上 士 闻 道 , 勤 而 行 之 ﹔ 中 士 闻 道 , 若 存 若 亡 ﹔

下 士 闻 道 , 大 笑 之 。 不 笑 不 足 以 为 道 。

故 建 言 有 之 :

明 道 若 昧 ﹔

进 道 若 退 ﹔

夷 道 若 颣 ﹔

上 德 若 谷 ﹔

广 德 若 不 足 ﹔

建 德 若 偷 ﹔

质 真 若 渝 ﹔

大 白 若 辱 ﹔

大 方 无 隅 ﹔

大 器 晚 成 ﹔

大 音 希 声 ﹔

大 象 无 形 ﹔

道 隐 无 名 。

夫 唯 道 , 善 贷 且 成 。

 

老 子: 「道 德 经」 : 第 四 十 二 章

道 生 一 , 一 生 二 , 二 生 三 , 三 生 万 物 。

万 物 负 阴 而 抱 阳 , 冲 气 以 为 和 。

人 之 所 恶 , 唯 孤 、 寡 、 不 谷 , 而 王 公 以 为 称 。

故 物 或 损 之 而 益 , 或 益 之 而 损 。

人 之 所 教 , 我 亦 教 之 。

强 梁 者 不 得 其 死 , 吾 将 以 为 教 父 。

 

老 子: 「道 德 经」 : 第 四 十 三 章

天 下 之 至 柔 , 驰 骋 天 下 之 至 坚 。

无 有 入 无 间 , 吾 是 以 知 无 为 之 有 益 。

不 言 之 教 , 无 为 之 益 , 天 下 希 及 之 。

 

老 子: 「道 德 经」 : 第 四 十 四 章

名 与 身 孰 亲 。 身 与 货 孰 多 。 得 与 亡 孰 病 。

甚 爱 必 大 费 ﹔ 多 藏 必 厚 亡 。

故 知 足 不 辱 , 知 止 不 殆 , 可 以 长 久 。

 

老 子: 「道 德 经」 : 第 四 十 五 章

大 成 若 缺 , 其 用 不 弊 。

大 盈 若 冲 , 其 用 不 穷 。

大 直 若 屈 , 大 巧 若 拙 , 大 辩 若 讷 。

静 胜 躁 , 寒 胜 热 。 清 静 为 天 下 正 。

 

老 子: 「道 德 经」 : 第 四 十 六 章

天 下 有 道 , 却 走 马 以 粪 。

天 下 无 道 , 戎 马 生 于 郊 。

祸 莫 大 于 不 知 足 ﹔ 咎 莫 大 于 欲 得 。

故 知 足 之 足 , 常 足 矣 。

 

老 子: 「道 德 经」 : 第 四 十 七 章

不 出 户 , 知 天 下 ﹔ 不 窥 牖 , 见 天 道 。

其 出 弥 远 , 其 知 弥 少 。

是 以 圣 人 不 行 而 知 , 不 见 而 明 , 不 为 而 成 。

 

老 子: 「道 德 经」 : 第 四 十 八 章

为 学 日 益 , 为 道 日 损 。

损 之 又 损 , 以 至 于 无 为 。

无 为 而 无 不 为 。

取 天 下 常 以 无 事 , 及 其 有 事 , 不 足 以 取 天 下 。

 

老 子: 「道 德 经」 : 第 四 十 九 章

圣 人 常 无 心 , 以 百 姓 心 为 心 。

善 者 , 吾 善 之 ﹔ 不 善 者 , 吾 亦 善 之 ﹔ 德 善 。

信 者 , 吾 信 之 ﹔ 不 信 者 , 吾 亦 信 之 ﹔ 德 信 。

圣 人 在 天 下 , 歙 歙 焉 , 为 天 下 浑 其 心 ,

百 姓 皆 注 其 耳 目 , 圣 人 皆 孩 之 。

 

老 子: 「道 德 经」 : 第 五 十 章

出 生 入 死 。

生 之 徒 , 十 有 三 ﹔

死 之 徒 , 十 有 三 ﹔

人 之 生 , 动 之 于 死 地 , 亦 十 有 三 。

夫 何 故 。

以 其 生 之 厚 。

盖 闻 善 摄 生 者 , 路 行 不 遇 兕 虎 , 入 军 不 被 甲 兵 ﹔

兕 无 所 投 其 角 , 虎 无 所 用 其 爪 , 兵 无 所 容 其 刃 。

夫 何 故 。 以 其 无 死 地 。

 

老 子: 「道 德 经」 : 第 五 十 一 章

道 生 之 , 德 畜 之 , 物 形 之 , 势 成 之 。

是 以 万 物 莫 不 尊 道 而 贵 德 。

道 之 尊 , 德 之 贵 , 夫 莫 之 命 而 常 自 然 。

故 道 生 之 , 德 畜 之 ﹔

长 之 育 之 ﹔ 成 之 熟 之 ﹔ 养 之 覆 之 。

生 而 不 有 , 为 而 不 恃 ,

长 而 不 宰 。 是 谓 玄 德 。

 

老 子: 「道 德 经」 : 第 五 十 二 章

天 下 有 始 , 以 为 天 下 母 。

既 得 其 母 , 以 知 其 子 ,

复 守 其 母 , 没 身 不 殆 。

塞 其 兑 , 闭 其 门 , 终 身 不 勤 。

开 其 兑 , 济 其 事 , 终 身 不 救 。

见 小 曰 明 , 守 柔 曰 强 。

用 其 光 , 复 归 其 明 , 无 遗 身 殃 ﹔ 是 为 袭 常 。

 

老 子: 「道 德 经」 : 第 五 十 三 章

使 我 介 然 有 知 , 行 于 大 道 , 唯 施 是 畏 。

大 道 甚 夷 , 而 人 好 径 。

朝 甚 除 , 田 甚 芜 , 仓 甚 虚 ﹔

服 文 采 , 带 利 剑 , 厌 饮 食 ,

财 货 有 余 ﹔ 是 为 盗 夸 。

非 道 也 哉 。

 

老 子: 「道 德 经」 : 第 五 十 四 章

善 建 者 不 拔 ,

善 抱 者 不 脱 , 子 孙 以 祭 祀 不 辍 。

修 之 于 身 , 其 德 乃 真 ﹔

修 之 于 家 , 其 德 乃 余 ﹔

修 之 于 乡 , 其 德 乃 长 ﹔

修 之 于 邦 , 其 德 乃 丰 ﹔

修 之 于 天 下 , 其 德 乃 普 。

故 以 身 观 身 ,

以 家 观 家 , 以 乡 观 乡 ,

以 邦 观 邦 , 以 天 下 观 天 下 。

吾 何 以 知 天 下 然 哉 。 以 此 。

 

老 子: 「道 德 经」 : 第 五 十 五 章

含 「 德 」 之 厚 , 比 于 赤 子 。

毒 虫 不 螫 , 猛 兽 不 据 , 攫 鸟 不 搏 。

骨 弱 筋 柔 而 握 固 。

未 知 牝 牡 之 合 而 峻 作 , 精 之 至 也 。

终 日 号 而 不 嗄 , 和 之 至 也 。

知 和 曰 「 常 」 ,

知 常 曰 「 明 」 。

益 生 曰 祥 。 心 使 气 曰 强 。

物 壮 则 老 , 谓 之 不 道 , 不 道 早 已 。

 

老 子: 「道 德 经」 : 第 五 十 六 章

知 者 不 言 , 言 者 不 知 。

挫 其 锐 , 解 其 纷 , 和 其 光 ,

同 其 尘 , 是 谓 「 玄 同 」 。

故 不 可 得 而 亲 , 不 可 得 而 疏 ﹔

不 可 得 而 利 , 不 可 得 而 害 ﹔

不 可 得 而 贵 , 不 可 得 而 贱 。 故 为 天 下 贵 。

 

老 子: 「道 德 经」 : 第 五 十 七 章

以 正 治 国 , 以 奇 用 兵 , 以 无 事 取 天 下 。

吾 何 以 知 其 然 哉 。 以 此 :

天 下 多 忌 讳 , 而 民 弥 贫 ﹔

人 多 利 器 , 国 家 滋 昏 ﹔

人 多 伎 巧 , 奇 物 滋 起 ﹔

法 令 滋 彰 , 盗 贼 多 有 。

故 圣 人 云 :

「 我 无 为 , 而 民 自 化 ﹔

我 好 静 , 而 民 自 正 ﹔

我 无 事 , 而 民 自 富 ﹔

我 无 欲 , 而 民 自 朴 。 」

 

老 子: 「道 德 经」 : 第 五 十 八 章

其 政 闷 闷 , 其 民 淳 淳 ﹔

其 政 察 察 , 其 民 缺 缺 。

是 以 圣 人 方 而 不 割 , 廉 而 不 刿 ,

直 而 不 肆 , 光 而 不 耀 。

祸 兮 福 之 所 倚 , 福 兮 祸 之 所 伏 。

孰 知 其 极 。 其 无 正 也 。

正 复 为 奇 , 善 复 为 妖 。

人 之 迷 , 其 日 固 久 。

 

老 子: 「道 德 经」 : 第 五 十 九 章

治 人 事 天 , 莫 若 啬 。

夫 唯 啬 , 是 谓 早 服 ﹔

早 服 谓 之 重 积 德 ﹔ 重 积 德 则 无 不 克 ﹔

无 不 克 则 莫 知 其 极 ﹔ 莫 知 其 极 , 可 以 有 国 ﹔

有 国 之 母 , 可 以 长 久 ﹔

是 谓 深 根 固 柢 , 长 生 久 视 之 道 。

 

老 子: 「道 德 经」 : 第 六 十 章

治 大 国 , 若 烹 小 鲜 。

以 道 莅 天 下 , 其 鬼 不 神 ﹔

非 其 鬼 不 神 , 其 神 不 伤 人 ﹔

非 其 神 不 伤 人 , 圣 人 亦 不 伤 人 。

夫 两 不 相 伤 , 故 德 交 归 焉 。

 

老 子: 「道 德 经」 : 第 六 十 一 章

大 邦 者 下 流 , 天 下 之 牝 ,

天 下 之 交 也 。

牝 常 以 静 胜 牡 , 以 静 为 下 。

故 大 邦 以 下 小 邦 , 则 取 小 邦 ﹔

小 邦 以 下 大 邦 , 则 取 大 邦 。

故 或 下 以 取 , 或 下 而 取 。

大 邦 不 过 欲 兼 畜 人 , 小 邦 不 过 欲 入 事 人 。

夫 两 者 各 得 所 欲 , 大 者 宜 为 下 。

 

老 子: 「道 德 经」 : 第 六 十 二 章

道 者 万 物 之 奥 。 善 人 之 宝 , 不 善 人 之 所 保 。

美 言 可 以 市 尊 , 美 行 可 以 加 人 。

人 之 不 善 , 何 弃 之 有 。

故 立 天 子 , 置 三 公 ,

虽 有 拱 璧 以 先 驷 马 ,

不 如 坐 进 此 道 。

古 之 所 以 贵 此 道 者 何 。

不 曰 : 求 以 得 , 有 罪 以 免 邪 。 故 为 天 下 贵 。

 

老 子: 「道 德 经」 : 第 六 十 三 章

为 无 为 , 事 无 事 , 味 无 味 。

图 难 于 其 易 , 为 大 于 其 细 ﹔

天 下 难 事 , 必 作 于 易 ,

天 下 大 事 , 必 作 于 细 。

是 以 圣 人 终 不 为 大 , 故 能 成 其 大 。

夫 轻 诺 必 寡 信 , 多 易 必 多 难 。

是 以 圣 人 犹 难 之 , 故 终 无 难 矣 。

 

老 子: 「道 德 经」 : 第 六 十 四 章

其 安 易 持 , 其 未 兆 易 谋 。

其 脆 易 泮 , 其 微 易 散 。

为 之 于 未 有 , 治 之 于 未 乱 。

合 抱 之 木 , 生 于 毫 末 ﹔

九 层 之 台 , 起 于 累 土 ﹔

千 里 之 行 , 始 于 足 下。

民 之 从 事 , 常 于 几 成 而 败 之 。

慎 终 如 始 , 则 无 败 事 。

 

老 子: 「道 德 經」 : 第 六 十 五 章

古 之 善 为 道 者 , 非 以 明 民 , 将 以 愚 之 。

民 之 难 治 , 以 其 智 多 。

故 以 智 治 国 , 国 之 贼 ﹔

不 以 智 治 国 , 国 之 福 。

知 此 两 者 亦 稽 式 。

常 知 稽 式 , 是 谓 「 玄 德 」 。

「 玄 德 」 深 矣 , 远 矣 , 与 物 反 矣 , 然 后 乃 至 大 顺 。

 

老 子: 「道 德 经」 : 第 六 十 六 章

江 海 之 所 以 能 为 百 谷 王 者 ,

以 其 善 下 之 , 故 能 为 百 谷 王 。

是 以 圣 人 欲 上 民 , 必 以 言 下 之 ﹔

欲 先 民 , 必 以 身 后 之 。

是 以 圣 人 处 上 而 民 不 重 , 处 前 而 民 不 害 。

是 以 天 下 乐 推 而 不 厌 。

以 其 不 争 , 故 天 下 莫 能 与 之 争 。

 

老 子: 「道 德 经」 : 第 六 十 七 章

天 下 皆 谓 我 道 大 , 似 不 肖 。

夫 唯 大 , 故 似 不 肖 。

若 肖 , 久 矣 其 细 也 夫 。

我 有 三 宝 , 持 而 保 之 。

一 曰 慈 ,

二 曰 俭 ,

三 曰 不 敢 为 天 下 先 。

慈 故 能 勇 ﹔ 俭 故 能 广 ﹔

不 敢 为 天 下 先 , 故 能 成 器 长 。

今 舍 慈 且 勇 ﹔ 舍 俭 且 广 ﹔

舍 后 且 先 ﹔ 死 矣 。

夫 慈 以 战 则 胜 , 以 守 则 固 。

天 将 救 之 , 以 慈 卫 之 。

 

老 子: 「道 德 经」 : 第 六 十 八 章

善 为 士 者 , 不 武 ﹔

善 战 者 , 不 怒 ﹔

善 胜 敌 者 , 不 与 ﹔

善 用 人 者 , 为 之 下 。

是 谓 不 争 之 德 ,

是 谓 用 人 之 力 ,

是 谓 配 天 古 之 极 。

 

老 子: 「道 德 经」 : 第 六 十 九 章

用 兵 有 言 :

「 吾 不 敢 为 主 , 而 为 客 ﹔

不 敢 进 寸 , 而 退 尺 。 」

是 谓 行 无 行 ﹔ 攘 无 臂 ﹔

扔 无 敌 ﹔ 执 无 兵 。

祸 莫 大 于 轻 敌 , 轻 敌 几 丧 吾 宝 。

故 抗 兵 相 若 , 哀 者 胜 矣 。

 

老 子: 「道 德 经」 : 第 七 十 章

吾 言 甚 易 知 , 甚 易 行 。

天 下 莫 能 知 , 莫 能 行 。

言 有 宗 , 事 有 君 。

夫 唯 无 知 , 是 以 不 我 知 。

知 我 者 希 , 则 我 者 贵 。

是 以 圣 人 被 褐 而 怀 玉 。

 

老 子: 「道 德 经」 : 第 七 十 一 章

知 不 知 , 尚 矣 ﹔ 不 知 知 , 病 也 。

圣 人 不 病 , 以 其 病 病 。

夫 唯 病 病 , 是 以 不 病 。

 

老 子: 「道 德 经」 : 第 七 十 二 章

民 不 畏 威 ,

则 大 威 至 。

无 狎 其 所 居 ,

无 厌 其 所 生 。

夫 唯 不 厌 ,

是 以 不 厌 。

是 以 圣 人 自 知 不 自 见 ﹔

自 爱 不 自 贵 。

故 去 彼 取 此 。

 

老 子: 「道 德 经」 : 第 七 十 三 章

勇 于 敢 则 杀 , 勇 于 不 敢 则 活 。

此 两 者 , 或 利 或 害 。

天 之 所 恶 , 孰 知 其 故 。

天 之 道 ,

不 争 而 善 胜 , 不 言 而 善 应 ,

不 召 而 自 来 , 繟 然 而 善 谋 。

天 网 恢 恢 , 疏 而 不 失 。

 

老 子: 「道 德 经」 : 第 七 十 四 章

民 不 畏 死 , 奈 何 以 死 惧 之 。

若 使 民 常 畏 死 , 而 为 奇 者 ,

吾 得 执 而 杀 之 , 孰 敢 。

常 有 司 杀 者 杀 。

夫 代 司 杀 者 杀 , 是 谓 代 大 匠 斲 ,

夫 代 大 匠 斲 者 , 希 有 不 伤 其 手 矣 。

 

老 子: 「道 德 经」 : 第 七 十 五 章

民 之 饥 , 以 其 上 食 税 之 多 , 是 以 饥 。

民 之 难 治 , 以 其 上 之 有 为 , 是 以 难 治 。

民 之 轻 死 , 以 其 上 求 生 之 厚 , 是 以 轻 死 。

夫 唯 无 以 生 为 者 , 是 贤 于 贵 生 。

 

老 子: 「道 德 经」 : 第 七 十 六 章

人 之 生 也 柔 弱 , 其 死 也 坚 强 。

草 木 之 生 也 柔 脆 , 其 死 也 枯 槁 。

故 坚 强 者 死 之 徒 , 柔 弱 者 生 之 徒 。

是 以 兵 强 则 灭 , 木 强 则 折 。

强 大 处 下 , 柔 弱 处 上 。

 

老 子: 「道 德 经」 : 第 七 十 七 章

天 之 道 , 其 犹 张 弓 欤 。

高 者 抑 之 , 下 者 举 之 ﹔

有 余 者 损 之 , 不 足 者 补 之 。

天 之 道 , 损 有 余 而 补 不 足 。

人 之 道 , 则 不 然 , 损 不 足 以 奉 有 余 。

孰 能 有 余 以 奉 天 下 , 唯 有 道 者 。

是 以 圣 人 为 而 不 恃 , 功 成 而 不 处 , 其 不 欲 见 贤 。

 

老 子: 「道 德 经」 : 第 七 十 八 章

天 下 莫 柔 弱 于 水 , 而 攻 坚 强 者 莫 之 能 胜 , 以 其 无 以 易 之 。

弱 之 胜 强 , 柔 之 胜 刚 ,

天 下 莫 不 知 , 莫 能 行 。

是 以 圣 人 云 :

「 受 国 之 垢 , 是 谓 社 稷 主 ﹔

受 国 不 祥 , 是 为 天 下 王 。 」

正 言 若 反 。

老 子: 「「道 德 經」」 : 第 七 十 九 章

和 大 怨 , 必 有 余 怨 ﹔

报 怨 以 德 , 安 可 以 为 善 。

是 以 圣 人 执 左 契 , 而 不 责 于 人 。

有 德 司 契 , 无 德 司 彻 。

天 道 无 亲 , 常 与 善 人 。

老 子:「道 德 经」 : 第 八 十 章

小 国 寡 民 。

使 有 什 伯 之 器 而 不 用 ﹔

使 民 重 死 而 不 远 徙 。

虽 有 舟 舆 , 无 所 乘 之 ,

虽 有 甲 兵 , 无 所 陈 之 。

使 民 复 结 绳 而 用 之 。

甘 其 食 , 美 其 服 , 安 其 居 , 乐 其 俗 。

邻 国 相 望 , 鸡 犬 之 声 相 闻 ,

民 至 老 死 , 不 相 往 来 。

老 子: 「道 德 经」 : 第 八 十 一 章

信 言 不 美 , 美 言 不 信 。

善 者 不 辩 , 辩 者 不 善 。

知 者 不 博 , 博 者 不 知 。

圣 人 不 积 , 既 以 为 人 己 愈 有 ,

既 以 与 人 己 愈 多 。

天 之 道 , 利 而 不 害 ﹔

圣 人 之 道 , 为 而 不 争 。

——老子“道德经原文”结束,《道德经全文》

WordPress元老Alex King逝世 与癌症抗争两年半

wordpress alex king

WordPress初期开发者Alex King

北京时间9月29日下午消息,WordPress初期开发者Alex King昨天夜间在家中逝世。Alex King于2013年1月被诊断出癌症,与癌症抗争了两年半。

Alex King在WordPress生态系统中有着巨大的影响力,他参与了从该网站前身b2到现在的WordPress的重建,也参与构建了WordPress 第一个客户端,还建立了第一家针对WordPress的咨询机构。他为大量WordPress功能的开发奠定了基础,甚至包括如今广泛使用的“一键分享” 图标的原型。

8月24日,Alex King在博客上公布了他的遗愿,希望其他人写下对他以及他工作成就的印象,并提交给他的妻子。(李林)

高富帅们的Git技巧

Git是一个分布式版本控制系统,拥有许多神奇而易用的特性(比如:分支),这让它可以轻松适应各种工作流程。这篇文章不涉及Git的基本使用,而是介绍了一些高级却有用的小技巧。让我们一起来看看高富帅们的Git技巧,准备好逆袭吧!

以“块”形式暂存你的改动

你肯定已经很熟悉的使用git add命令来将改动暂存到暂存区(staging area)了。你可能也会偶然因为两个不同的原因而做了一次改动,却没有分别提交(仅仅提交了一次),所以,当你执行git log时,会看到诸如这样的提交信息:“修改X,改动无关的Y”。如果这看起来像是你的工作方式,交互式add将是你的有力工具。

交互式add(或者叫add块),将会一个块一个快的循环你的改动。使用命令git add -p时,你可以在每个改动“块”(即:连续的改动会被组织到一起)时进行一些选择,比如:切分当前块为更小的块、跳过一个改动块、甚至手动的编辑该块,你 可以敲入?来查看所有该命令提供的选项。

开始以“块”形式暂存改动简单到只需一条命令(括号部分替换为特定文件):

git add -p (path/file)

译者注:感觉这条命令平常用的较少,我遇到需要分别提交的情况时,都是手动来add然后提交,该命令是这种方法的高级版本。我们平常可能对提交历史的重视比较低,常常出现一些无用的、无意义的提交信息,可以试试这条命令。

切换到最后所在分支

作为一个善良的码农,当你需要快速做些修正或是清理工作时,你都应该花些时间来对待。如果你的工作流程是十分依赖分支的话(译者注:强烈建议如 此),你可能不希望无关的修正影响到现在正在进行功能开发的分支。这意味着,你应该使用git stash命令来暂时存放你的改动,然后切到master分支(译者注:或是其它啥分支,我一般是取名为fix),在那个分支进行修正。(译者注:修正完 了,可以切回正在进行功能开发的分支,执行git stash pop来弹出之前暂存的改动,继续进行开发)。在不同分支间切换很乏味,幸好这里有个快捷命令可以切换到你最后所在的分支:

git checkout -

这个语法对于使用linux的高富帅们来说一定不陌生,cd命令有个类似的缩写cd -,表示切换到你最后所在的目录。当你需要切回功能开发分支时,你根本不用关心那个分支是啥名,只需git checkout -。

译者注:感觉tab键的自动补全也挺好用的,不过这条命令可以少敲点字。有了这条命令,妈妈再也不用担心我的分支切换了。

显示哪些分支被合并了(或是哪些没有被合并)

在使用git时,你可能会创建许多分支,导致执行git branch命令列出分支时变得有些杂乱。于是,你想处理那些已经合并到master分支的无用分支,但是,当你执行git checkout -d 来删除分支时可能会遇到“麻烦”(译者注:git会拒绝删除未合并的分支并提示你),如果使用以下命令,你将不再需要三思而后删,可以自信的处理那些已经 合并了的分支。

如果你想要看看你的本地分支里哪些分支是已经合并进你当前所在的分支时,可以使用:

git branch --merged

反过来,如果需要查看哪些分支还没有合并进当前所在的分支,可以使用:

git branch --no-merged

结合高富帅的UNIX工具,你可以轻松的删除那些已经合并了的分支:

git branch --merged | xargs git branch -d

译者注:xargs是UNIX平台的一个工具,它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。如果git branch –merged显示的是a,b,c三个分支已经合并,上面的命令会转换为:git branch -d a b c。更多xargs的信息:http://zh.wikipedia.org/wiki/Xargs

从另一分支获取文件内容而不用切换分支

设想你正在进行重构,你创建了好几个分支并在各分支下进行改动。这时,你想把另一个分支里某一个文件的改动引入到当前工作的分支里,为了达到目的你 可能需要好几步:git stash你的改动;切换到那个分支;获取文件的改动;切回工作分支(当然是使用git checkout -);继续进行编辑(译者注:别忘了git stash pop)。但是,你也可以直接检出另一分支的文件,并且合并到你当前所在的工作分支,使用命令(括号部分替换为对应的分支和文件):

git checkout (branch) -- (path/file)

以最后提交排序的Git分支

想必你已经使用上面的tip处理了杂乱的分支,有一些是用–merged选项标志来清理的吧。那其它的分支咋办呢?你咋知道哪些是有用的,哪些是 完全过期无用的呢?git for-each-ref命令可以打印出一个列表,该列表显示每个分支最后一次提交的引用(reference)信息。我们可以自定义输出来包含一些有用 的信息,更重要的是我们还可以按日期排序。可以使用下面的命令来输出一个列表,该表将显示按时间先后排序的每个分支的最后提交信息、提交者等信息:

git for-each-ref --sort=-committerdate --format="%(committername)@%(refname:short) [%(committerdate:short)] %(contents)"

还可以把它定义在gitconfig里:

[alias]
  latest = for-each-ref --sort=-committerdate --format=\"%(committername)@%(refname:short) [%(committerdate:short)] %(contents)\"

译者注:定义后就只需执行git latest了。注意双引号需要转义!

在玻璃房内的人们别用git blame

或者说,在玻璃房内的人们不应该直接使用git blame而不带下文的选项标志。(译者注:玻璃房内的人是完全能被别人看到的人。这里的意思应该是想说,你每一次提交的变动都会被记录到git仓库的历 史,对于git仓库来说,你就像是住在玻璃房里的人,没有任何秘密,你根本逃不过git的”责问“)git blame是很有用的命令,它就像使用科学来证明你是正确的!但是请注意,许多文件的变动是很表面的,发现问题的来源需要更多的探索。像是移除空白、移动 内容到新行、移动内容到另一文件等动作都可以使用选项来忽略掉,以便更容易的找到代码变动的始作俑者。

在你blame(责备)他人前,记得用以下命令看看结果:

git blame -w  # 忽略移除空白这类改动
git blame -M  # 忽略移动文本内容这类改动
git blame -C  # 忽略移动文本内容到其它文件这类改动

译者注:git blame用来显示一份文件每一行的最近一次提交的提交hash值和提交者。当你跟别人说“我真的没改过这个文件啊”之前,就得git blame下。

在整个git仓库提交历史中找寻内容(然后删掉它)

你有时可能需要查找一行你写的代码,但是就是无法找到。它可能安放在了一些已经被遗忘的分支,或是删除了很久,又或是就在那显而易见的地方。无论哪种方式,你都可以通过一些命令在整个git仓库的历史中搜寻特定的字符串。

首先,我们需要拿到所有的提交,然后,使用git grep来搜寻特定的字符串。如下:

git rev-list --all | xargs git grep -F '搜寻的字符串'

你可能有一个粗心的朋友不小心在仓库里提交了诸如,用户名、密码、外婆的大蒜食谱等敏感信息。首先,他们得更改用户名、密码(并向外婆道歉)。然 后,你需要搜寻这些得罪人的文件,并将他们从整个仓库的历史里抹去(这听起来好像很容易)。经过这个处理,那些执行git pull的伙计们就会发现所有提交中包含的敏感信息都被清理干净了,而那些没有合并你的远程改动的家伙还是拥有敏感信息(所以,千万别忘记先改用户名和密 码)。我们来看看怎么操作。

首先,重写每个分支的历史,移除敏感信息:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch (filename)' --prune-empty --tag-name-filter cat -- --all

然后,将记录敏感信息的文件增加到.gitignore文件,并提交(括号部分替换为对应文件名):

echo (filename) >> .gitignore
git add .gitignore
git commit -m "Add sensitive (filename) file to gitignore"

接着,由于我们改写了历史,我们需要“强制”的将改动推到远程:

git push origin master --force
# 译者注:还可以使用命令
git push origin +master

最后,这个文件还在你的本地仓库里,还需要将它完全抹除:

rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now

你这粗心的朋友从敏感文件的危机中解脱,而你用你高超的git知识成功逆袭,成为了他的英雄!

译者注:一天,妹子叫我去她家帮她把她的三围信息从git仓库的历史里完全删除,我研究了很久不得要领。妹子说,不如我们做点其它的事吧。我觉得我的git知识被她鄙视了,坚定的说,我一定要把它删掉!然后,就没有然后了… …

忽略文件跟踪

在和他人合作时可能常常意味着你需要更改一些配置才能让应用在环境里跑起来,这时,常常会不小心把这些只对你有意义的配置文件也给提交了。为了不再 常常关注这些文件,看着它们在git status时放肆的显示“modified”,你可以告诉git忽略它们的改动。这种方式,可以看成是一种和仓库绑定的gitignore文件(括号部 分替换为对应文件):

  git update-index --assume-unchanged (path/file)

译者注:感觉,.gitignore文件更方便和好理解。

让分支的历史归零

不管出于啥理由,有时从头开始正是你需要的。也许是你接手了一个不确信能安全开源的代码仓库;也许是你要着手做些全新的事情;也许是你想创建用于其 它目的一个新分支,又希望继续在仓库里维护它(比如:github页面,项目的文档一类的东西)。上述的情形下,你可以非常简单的创建一个没有提交历史的 分支(括号部分替换为对应分支):

  git checkout --orphan (branch)

译者注:我们知道,分支只是对提交的一个引用,所以,每当从当前分支创建一个分支时,被创建的分支都会延续之前的历史,但是这种方式却不会,是一个完完全全干净的git分支,没有任何的提交!

你一定离不开的别名

不讨论能节省大量敲击时间的“git别名(git alias)”技巧的git文章一定都是在耍流氓。停止输入冗长的命令,使用超级有用的别名吧!git别名可以加到.gitconfig文件里,或是使用 命令(译者注:本质就是改写.gitconfig命令)来增加(括号部分替换为别名和对应的命令):

    git config --global alias.(name) "(command)"
  1. 在依赖分支的工作流程中,你常常要在不同分支间切换,每次敲击节约你6个字母。
    co = checkout
    
  2. 在提交前瞧瞧你将要提交的都有什么改动是一个好习惯,这可以帮助你发现拼写错误、不小心的提交敏感信息、将代码组织成符合逻辑的组。使用git add暂存你的改动,然后使用git ds查看你将要提交的改动动。
    ds = diff --staged
    
  3. 你可能十分熟悉git输出的详细状态信息了,当到达一定境界时,你可能需要忽略所有那些描述,直击问题的核心。这个别名输出将输出git status的简短形式和分支的详细信息。
    st = status -sb
    
  4. 你是否在提交后才发现忘记git add某个文件了,或是提交了才想再改动些啥?amend(修正)暂存区到最近的一次提交吧。(译者注:这个命令不太好理解,–amend是重写提交历 史,-C是重用某次提交的提交信息。场景是当你提交完了发现还有些改动没提交,又不想写什么“改动了X,再次提交”这种狗血的提交信息。重新git add并git amend后,重用上次的提交信息再次提交,替换上次的不完整提交。特别注意–amend重写了提交,如果你已经push到远程了,慎用这条命令!)
    amend = commit --amend -C HEAD
    
  5. 有时上面的修正可能不好使了,你需要undo(撤销)。undo会回退到上次提交,暂存区也会回退到那次提交时的状态。你可以进行额外的改动,用新的提交信息来再次进行提交。
    undo = reset --soft HEAD^
    
  6. 维护一个多人编辑的代码仓库常常意味着试着发现何人在改动什么,这个别名可以输出提交者和提交日期的log信息。
    ls = log --pretty=format:'%C(yellow)%h %C(blue)%ad %C(red)%d %C(reset)%s %C(green) [%cn]' --decorate --date=short
    
  7. 这个别名用来在一天的开启时回顾你昨天做了啥,或是在早晨刷新你的记忆(括号内替换为自己的email)。
    standup = log --since '1 day ago' --oneline --author (YOUREMAIL)
    
  8. 一个复杂的仓库可能很难用直线式的输出来查看,这个别名可以用图表的形式向你展示提交是怎样及何时被加到当前分支的。
    graph = log --graph --pretty=format:'%C(yellow)%h %C(blue)%d %C(reset)%s %C(white)%an, %ar%C(reset)'
    

译者注:我根据上面的别名进行了一些整理修改,这是我现在的.gitconfig里的别名配置:

[alias]
  st = status -sb
  co = checkout
  br = branch
  mg = merge
  ci = commit
  ds = diff --staged
  dt = difftool
  mt = mergetool
  last = log -1 HEAD
  latest = for-each-ref --sort=-committerdate --format=\"%(committername)@%(refname:short) [%(committerdate:short)] %(contents)\"
  ls = log --pretty=format:\"%C(yellow)%h %C(blue)%ad %C(red)%d %C(reset)%s %C(green)[%cn]\" --decorate --date=short
  hist = log --pretty=format:\"%C(yellow)%h %C(red)%d %C(reset)%s %C(green)[%an] %C(blue)%ad\" --topo-order --graph --date=short
  type = cat-file -t
  dump = cat-file -p

via alimama mux
作者:Chris Kelly 译者:栖邀
英文原文

来源:http://segmentfault.com/a/1190000002448847

unauthenticated user mysql 原因分析

最近常出现 客户端连接远程服务器失败问题

show processlist;

出现 unauthenticated user,一直到超时;

网上查了下,到处都是互相抄袭文章,类似:

解决的方案很简单,结束这个反查的过程,禁止任何解析。

打开mysql的配置文件(my.cnf),在[mysqld]下面增加一行:

skip-name-resolve

。。。

实际上我都用IP连接的,不会出现这种问题

最后网上有个说是网络慢也会影响连接,ping 测试了下果然慢

ping liyunde.com
PING liyunde.com (112.126.64.59): 56 data bytes
64 bytes from 112.126.64.59: icmp_seq=0 ttl=51 time=41.072 ms
64 bytes from 112.126.64.59: icmp_seq=1 ttl=51 time=40.965 ms
64 bytes from 112.126.64.59: icmp_seq=2 ttl=51 time=41.036 ms
64 bytes from 112.126.64.59: icmp_seq=3 ttl=51 time=42.662 ms
64 bytes from 112.126.64.59: icmp_seq=4 ttl=51 time=41.681 ms
64 bytes from 112.126.64.59: icmp_seq=5 ttl=51 time=41.701 ms
64 bytes from 112.126.64.59: icmp_seq=6 ttl=51 time=41.859 ms
64 bytes from 112.126.64.59: icmp_seq=7 ttl=51 time=43.713 ms

网络响应过慢,配置服务器不能解决这个问题,换个好点的网络,问题自然解决。