魑魅魍魉 发布的文章

Knex 是一个可以运行于NodeJS环境以及浏览器环境下的 SQL 查询构建工具(但受 WebSQL 的 限制,如删除表、读取表结构等操作是无法捃的),但强烈建议不要随意在浏览器中执行SQL查询,因为这会导致严重的安全漏洞,还是建议您在服务器端执行,在浏览器端执行查询,主要还是用于学习。

Node.js

Node.js 是 Knex 的首先运行环境,你需要在你的 Node.js 项目中安装 knex 库,同时还需要安装适当的数据库操作库:

  • PostgreSQL,CockroachDB 以及 Amazon Redshift 数据库使用 pg
  • PostgreSQl 的原生 C++ 库 libpq 则使用 pg-native 库绑定
  • MySQL 以及 MariaDB 使用 mysql
  • SQLite3 使用 sqlite3 或者 better-sqlite3
  • MSSQL 使用 tedious
$ npm install knex --save

# Then add one of the following (adding a --save) flag:
$ npm install pg
$ npm install pg-native
$ npm install sqlite3
$ npm install better-sqlite3
$ npm install mysql
$ npm install mysql2
$ npm install oracledb
$ npm install tedious

浏览器

您可以使用 browserify 或者 webpack 这样的 JavaScript 构建工具,将 Knex 构建至您的浏览器项目中。

配置选项

knex 模块本身是一个用于构建 Knex 实例的函数,您需要将配置信息通过一个对象传递给该函数,配置信息是一个对象,该对象的 client 属性是必须的,它指明了新创建的 Knex 实例将使用哪一个数据库。

const knex = require('knex')({
  client: 'mysql',
  connection: {
    host: '127.0.0.1',
    port: 3306,
    user: 'your_database_user',
    password: 'your_database_password',
    database: 'myapp_test',
  },
});

connection 选项将直接被传递给数据库驱动,它可以是一个对象、一个连接字符串或者一个返回一个对象的函数。

PostgreSQL

对于 PostgreSQL 数据库, Knex 允许你通过添加一个名为 searchPath 参数给每一个数据库连接。
const pg = require('knex')({
  client: 'pg',
  connection: process.env.PG_CONNECTION_STRING,
  searchPath: ['knex', 'public'],
});

当使用 PostgreSQL 驱动时,实例化 Knex 的配置对象 connection: {} 可以通过各种标签指定各种详细的参数,比如是否启用 SSL、一个连接字符串,如下例:

PostgreSQL

如果存在 connectionString 属性,则会优先使用该属性,否则,连接将使用多个独立的字段组合而成的配置(hostport 等),最后,还可以使用 ssl 属性来指定是否启用 SSL 连接。

const pg = require('knex')({
  client: 'pg',
  connection: {
    connectionString: config.DATABASE_URL,
    host: config['DB_HOST'],
    port: config['DB_PORT'],
    user: config['DB_USER'],
    database: config['DB_NAME'],
    password: config['DB_PASSWORD'],
    ssl: config['DB_SSL'] ? { rejectUnauthorized: false } : false,
  },
});

下面则演示了如何使用 SQLite3 数据库

SQLite3 或 Better-SQLite3

当你使用 SQLite3 或者 Better-SQLite3 适配器的时候,filename 属性是必须项:

const knex = require('knex')({
  client: 'sqlite3', // 或者 'better-sqlite3'
  connection: {
    filename: './mydb.sqlite',
  }
});

你也可以通过指定 filename:memory:,来启用一个连接一个临时保存于内存中的数据库连接实例:

const knex = require('knex')({
  client: 'sqlite3', // 或者 'better-sqlite3'
  connection: {
    filename: ':memory:',
  }
});

SQLite3

当你使用 SQLite3 适配器时,你可以通过添加 flags 属性设置连接的标签:

const knex = require('knex')({
  client: 'sqlite3',
  connection: {
    filename: 'file:memDb1?mode=memory&cache=shared',
    flags: ['OPEN_URI', 'OPEN_SHAREDCACHE']
  }
});

Better-SQLite3

当你使用 Better-SQLite3 适配器时,可以通过 options.nativeBindding 属性来绑定原生 C++ 适配器的地址:

const knex = require('knex')({
  client: 'better-sqlite3',
  connection: {
    filename: ':memory:',
    options: {
      nativeBinding: '/path/to/better_sqlite3.node',
    },
  },
});

通过将 options.readonly 设置为 true 来开启一个只读连接:

const knex = require('knex')({
  client: 'better-sqlite3',
  connection: {
    filename: '/path/to/db.sqlite3',
    options: {
      readonly: true,
    },
  },
});

MSSQL

使用 MSSQL 数据库时,您可以通过指定 mapBindding 函数来定义自己的逻辑来定义 knex 查询参数到 tedious 类型的绑定:

import { TYPES } from 'tedious';

const knex = require('knex')({
  client: 'mssql',
  connection: {
    options: {
      mapBinding: (value) => {
        // bind all strings to varchar instead of nvarchar
        if (typeof value === 'string') {
          return {
            type: TYPES.VarChar,
            value,
          };
        }

        // allow devs to pass tedious type at query time
        if (value != null && value.type) {
          return {
            type: value.type,
            value: value.value,
          };
        }

        // undefined is returned; falling back to default mapping function
      },
    },
  },
});

有用的信息

当您使用 PostgreSQL 适配器连接非标准数据库时,可以在 knex 配置中添加数据库版本。

const knex = require('knex')({
  client: 'pg',
  version: '7.2',
  connection: {
    host: '127.0.0.1',
    port: 5432,
    user: 'your_database_user',
    password: 'your_database_password',
    database: 'myapp_test',
  },
});
const knex = require('knex')({
  client: 'mysql',
  version: '5.7',
  connection: {
    host: '127.0.0.1',
    port: 3306,
    user: 'your_database_user',
    password: 'your_database_password',
    database: 'myapp_test',
  },
});

我们也可以使用一个函数动态的给 connection 属性赋值,该函数只需要返回一个配置对象,或者一个返回配置对象的 Promise 即可:

const knex = require('knex')({
  client: 'sqlite3',
  connection: () => ({
    filename: process.env.SQLITE_FILENAME,
  }),
});

Knex 在默认情况下,会将函数返回的结果缓存起来,后面的所有连接都将使用该缓存,您可以通过指定一个 expirationChecker 函数用于判断缓存是否已过期,Knex 会在每一次创建新连接之前,首先调用 expirationChecker 函数,若其返回 true,则会清除缓存,并重新获取一次新的数据。

const knex = require('knex')({
  client: 'postgres',
  connection: async () => {
    const { token, tokenExpiration } = await someCallToGetTheToken();

    return {
      host: 'your_host',
      port: 5432,
      user: 'your_database_user',
      password: token,
      database: 'myapp_test',
      expirationChecker: () => {
        return tokenExpiration <= Date.now();
      },
    };
  },
});

你也可以指定一个 Unix Socket 地址,此时 porthost 会被直接忽略。

const knex = require('knex')({
  client: 'mysql',
  connection: {
    socketPath: '/path/to/socket.sock',
    user: 'your_database_user',
    password: 'your_database_password',
    database: 'myapp_test',
  },
});

通过在配置信息中指定 userParams 参数,可以向 Knex 新创建的实例中添加随意的参数,这些参数可以通过实例对象 knex.userParams 访问:

const knex = require('knex')({
  client: 'mysql',
  connection: {
    host: '127.0.0.1',
    port: 3306,
    user: 'your_database_user',
    password: 'your_database_password',
    database: 'myapp_test',
  },
  userParams: {
    userParam1: '451',
  },
});

在您的应用程序的运行过程中,Knex 实例只应该被初始化一次,该实例将创建一个新的数据库连接池,在您的应用中,永远调用新创建的 Knex 实例即可。

withUserParams

通过在 Knex 实例上面调用 withUserParams 方法,可以创建一个该实例的复本,使用同样的数据库连接:

const knex = require('knex')({
  // Params
});

const knexWithParams = knex.withUserParams({
  customUserParam: 'table1',
});
const customUserParam = knexWithParams.userParams.customUserParam;

debug

在初始化配置对象中,添加 debug: true 属性,则会启用 debugging 功能。

asyncStackTraces

通过添加 asyncStackTraces: true,可以启用实例对所有查询的栈跟踪功能。

pool

Knex 是基于 tarn.js 创建连接池的,该库有一个默认的配置 min: 2, max: 10,若您想修改该配置,可以通过在初始化配置对象中添加 pool 属性来改变它:

const knex = require('knex')({
  client: 'mysql',
  connection: {
    host: '127.0.0.1',
    port: 3306,
    user: 'your_database_user',
    password: 'your_database_password',
    database: 'myapp_test',
  },
  pool: { min: 0, max: 7 },
});

afterCreate

当一个新的数据库连接被成功创建后, afterCreate 回调函数会被调用。

const knex = require('knex')({
  client: 'pg',
  connection: {
    /*...*/
  },
  pool: {
    afterCreate: function (conn, done) {
      // in this example we use pg driver's connection API
      conn.query('SET timezone="UTC";', function (err) {
        if (err) {
          // first query failed,
          // return error and don't try to make next query
          done(err, conn);
        } else {
          // do the second query...
          conn.query('SELECT set_limit(0.01);', function (err) {
            // if err is not falsy,
            //  connection is discarded from pool
            // if connection aquire was triggered by a
            // query the error is passed to query promise
            done(err, conn);
          });
        }
      });
    },
  },
});

acquireConnectionTimeout

默认情况下,当 Knex 连接数据库超过 60000ms 未成功时,会抛出连接超时异常,可以通过指定 acquireConnectionTimeout 值来修改默认超时时间。

const knex = require('knex')({
  client: 'pg',
  connection: {
    /*...*/
  },
  pool: {
    /*...*/
  },
  acquireConnectionTimeout: 10000,
});

fetchAsString

在使用 Oracle 数据库时,对于 DATENUMBER以及CLOB 类型的数据,可以选择以字符串返回数据:

const knex = require('knex')({
  client: 'oracledb',
  connection: {
    /*...*/
  },
  fetchAsString: ['number', 'clob'],
});

postProcessResponse

查询结果返回给用户前,会调用该钩子函数,这是一个非常有用的钩子,最常见的用处莫过于将查询结果中的属性由 snake_case 转为 camelCase

const knex = require('knex')({
  client: 'mysql',
  // overly simplified snake_case -> camelCase converter
  postProcessResponse: (result, queryContext) => {
    // TODO: add special case for raw results
    // (depends on dialect)
    if (Array.isArray(result)) {
      return result.map((row) => convertToCamel(row));
    } else {
      return convertToCamel(result);
    }
  },
});

wrapIdentifier

Knex 支持将标识符名称自动转换为每种SQL方言的带引号的版本,比如在 PostgreSQL 中, 'Table.columnName as foo' 会被自动转换为 "Table"."columnName" as "foo"

通过 wrapIdentifier 可以重写这种行为,比如,您可以通过该钩子函数来统一将 camelCase 修改为 snake_case 格式。

wrapIdentifier(value, dialectImpl, context): string 函数会将所有标识符遍历为单个值 value

const knex = require('knex')({
  client: 'mysql',
  // overly simplified camelCase -> snake_case converter
  wrapIdentifier: (value, origImpl, queryContext) =>
    origImpl(convertToSnakeCase(value)),
});

log

打开日志。

const knex = require('knex')({
  log: {
    warn(message) {},
    error(message) {},
    deprecate(message) {},
    debug(message) {},
  },
});

Typescript

import { Knex } from 'knex';

declare module 'knex/types/tables' {
  interface User {
    id: number;
    name: string;
    created_at: string;
    updated_at: string;
  }

  interface Tables {
    // This is same as specifying `knex<User>('users')`
    users: User;
    // For more advanced types, you can specify separate type
    // for base model, "insert" type and "update" type.
    // But first: notice that if you choose to use this,
    // the basic typing showed above can be ignored.
    // So, this is like specifying
    //    knex
    //    .insert<{ name: string }>({ name: 'name' })
    //    .into<{ name: string, id: number }>('users')
    users_composite: Knex.CompositeTableType<
      // This interface will be used for return type and
      // `where`, `having` etc where full type is required
      User,
      // Specifying "insert" type will also make sure
      // data matches interface in full. Meaning
      // if interface is `{ a: string, b: string }`,
      // `insert({ a: '' })` will complain about missing fields.
      //
      // For example, this will require only "name" field when inserting
      // and make created_at and updated_at optional.
      // And "id" can't be provided at all.
      // Defaults to "base" type.
      Pick<User, 'name'> & Partial<Pick<User, 'created_at' | 'updated_at'>>,
      // This interface is used for "update()" calls.
      // As opposed to regular specifying interface only once,
      // when specifying separate update interface, user will be
      // required to match it  exactly. So it's recommended to
      // provide partial interfaces for "update". Unless you want to always
      // require some field (e.g., `Partial<User> & { updated_at: string }`
      // will allow updating any field for User but require updated_at to be
      // always provided as well.
      //
      // For example, this wil allow updating all fields except "id".
      // "id" will still be usable for `where` clauses so
      //      knex('users_composite')
      //      .update({ name: 'name2' })
      //      .where('id', 10)`
      // will still work.
      // Defaults to Partial "insert" type
      Partial<Omit<User, 'id'>>
    >;
  }
}
// The trailing `.js` is required by the TypeScript compiler in certain configs:
declare module 'knex/types/tables.js' {
  // <----- Different module path!!!
  interface Tables {
    // ...
  }
}

“千林红绽火含珠,熟到杨梅夏至初。风味品评何处好?南山数过是湘湖”。清代文人黄元寿的诗虽然没有如杨梅之名脍炙人口,但其描述的江南初夏,烟雨过后,漫山遍野杨梅正红,在万绿丛中星星点点、若隐若现,叹为奇观;而酸甜爽口的杨梅鲜果,着实令人垂涎欲滴,称羡不已。

在雪峰西麓的洪江市托口镇,渠水与清水江汇合之地,土壤疏松成弱酸性,年平均气温17摄氏度,年平均降雨量近1000mm,这正是一个适合杨梅生产的绝佳环境,在这里产出的托口东魁杨梅,单果重量一般介于20g~35g,含糖量12%-13%,酸度0.5-1.1%,富含树脂、纤维素、矿质元素、维生素和蛋白质、果酸及氨基酸,其中钙、磷、铁尤为丰富,是难得的果中佳品。

各位印象辰溪的粉丝朋友,大家好,我是来自山东荷泽的大刚。

自今年3月起,我一直跟随呆瓜合作社辗转于福建、云南、海南、广东等地,销售优质的生鲜水果,期间多次来到辰溪,潘哥带我到处吃,也给我介绍了很多有意思的辰溪故事,吃了很多山东没有的各种美食,甚是喜欢,受潘哥邀请,这个夏天我想就在辰溪,以一个北方人的视角,来认识一下这座南方小城,万一哪天走街串巷的时候遇到我,给我一个大大的微笑哦。

每天傍晚,我还会在六弓塘呆瓜院子直播向全国朋友们推荐地道好吃的湖南美食,来现场的朋友,潘哥免费请大家吃哦。

大家好,刷到我最近发的视频的朋友应该都知道,我最近一直在卖一款辰溪血鸭,我现在所在的地方就是这款血鸭的生产工厂。

血鸭,是湖南、江西地区的一款特色传统名菜,以色泽红润、焦脆爽口、香辣咸兼备而闻名于世,具有美味、开胃凉血的特点。炒熟后的血鸭,其血色呈褐黑亮色,黑里透红,味香辣,肉鲜嫩,汤浓呈黄黑色,咸淡适口,下饭喝酒均宜。不同地区的血鸭炒制方法又有所不同,但万变不离其宗的,一定是最后倒入的鸭血。

在线下市场中,辰溪血鸭又以黄溪口的炒制方法和口味最为大众所熟知,也有少量通过私域流量进行在线销售的销量。而在兴趣电商领域,由于熟肉制品上架销售必须要有正规工厂,并有相应的生产许可证,高昂的前期投入及其带来的高风险,导致辰溪血鸭产品几乎绝迹,有部分具备生产资质的工厂又因没有稳定的销售渠道而处于停工停产状态,所以,自这家工厂诞生之日起,我就一直持续的关注着。

工厂老板萧叔是谭家场乡铁炉冲人,90年代末是一名货车司机,而后跟着一位老板卖了十年家具,主要负责贵州、湖北、成都市场,2015在步行街开过排档,跟着厨房师傅习得一手血鸭、牛脚、毛狗肉的好手艺,之后又去了三亚,开了两年装修公司,但亏得一踏糊涂,之后在溆浦继续搞了六年装修。

2022年,是兴趣电商胜行的一年,他自已筹集了十万元,开始了这家血鸭工厂的创业,前前后后半年有余,最后超支近20万,共花费近30万元,终于拿得生产许可证。

虽然萧叔是一个肯刻苦钻研的人,但兴趣电商并不像他想象的那般容易开始,工厂只是他的产品能在线上销售的基石,如何稳定生产供应、提升产品品质、扩大销售渠道都需要花费大量的精力,更需要有足够的经验,在这里,也感谢萧叔对我的信任,数个深夜能选择我,成为他的交流对象。

我们呆瓜合作社团队在去年末,就尝试过与一家本土生产酸萝卜的企业合作,但最终因工厂无法稳定、持续的生产产品而告以失败,这里面就涉及到一个冷启动的问题,工厂需要有大量的订单才能稳定生产,降低成本,而我们销售团队需要有稳定的产品才能尝试扩大销售,若是前期没有足够多的资金投入,就会处于一个极度尴尬的境地,再回到现在与血鸭厂的合作,我们吸取过往的经验,希望能把合作走得更长远,也希望这来之不易的辰溪本土品牌能在我们共同的努力下茁壮成长。

一个地方的发展,永远都离不开这些敢于成为炮灰的人,我们呆瓜合作社团队成员都是有着十数年连续多次创业经验的年轻人,而立之年,却是三十功名尘与土,八千里路云和月。白发悄来临,少年已不在。然雄心未泯,壮志仍在,激情依旧,不减当年。萧叔虽近花甲之年,但生来奋斗拼搏于盛世,力求名扬于四海。凭一人之力,微乎其微,聚众人之力,泰山可移。

乡村振兴的根本不是说挣了多少钱,也不是说修了多少路,亦或是盖了多少楼,而是是否能留住人,小孩要上学,父母要照顾,甚至最基本的,自己要能住得起房,要留住人,需要的是人能否在家门口就把钱挣了,即使是一个小小的血鸭厂,若是它能稳定发展,工厂需要员工工作,需要养鸭场稳定的供应鸭子,还能增加快递业务量,更能通过产品将辰溪推广到更远的他乡,每一次有人努力的悸动,我们都同样会用尽全力。

最后,有纯谷物/纯粮喂养鸭子的养殖户,欢迎私信联系,我们聊聊好品质鸭子的供应问题啊。

Act 1: 人物,阳光玫瑰葡萄园内,中焦,正面:

为什么在四月份就能吃到新鲜的阳光玫瑰葡萄?这当然要感谢云南葡萄产业的大力发展了。大家好,我现在身处云南省弥勒市的一个阳光玫瑰果园,

Act 2: 阳光玫瑰葡萄园,广角,环绕拍摄环境:

这片园子有XXX亩,产量大概有XXX公斤。

Act 3: 人物,阳光玫瑰葡萄园内,中焦,正面:

云南位于祖国的西南边陲,立体气候明显,光热资源充足,昼夜温差大,葡萄野生资源较多,土地广阔,非常适合葡萄种植。所产葡萄具有早熟、糖度高、优质、产量高的特点,采收时基本能够避开雨季,因此云南是国内具有明显优势的早熟葡萄生产区域。一般露地栽培在4—6月即可成熟上市。

Act 4:

枣阳梨是湖北省襄阳市枣阳的一个特产水果,有着优秀的品质,果形圆润,香味浓郁,颜色呈金黄,营养价值很高。

枣阳梨主要产区位于湖北省枣阳市南部,属于汉江流域,亚热带季风气候,雨水充沛、气候温和,土壤中含有多种对人体有益的微量元素。春夏多雨,6月是最潮湿的一个月,有利于枣阳梨早期生长;7、8月阳光充足,气温高,有利于提高枣阳梨糖度的提升。

枣阳梨色泽美,香气浓郁,汁多味甜,风味独特,果肉含糖一般在8—13%,有机酸含量介于0.2—0.6%,是一款深受消费者喜爱的梨类水果。

有一处离辰溪县城仅4公里的地方,我们在那里开了一片二三亩的小果园,还开荒种了莲藕、西瓜、香瓜、莴苣,又养了一群鸡、鸭、鹅,每日三个年轻人与锄头为伍,跟铲子作伴,每天重复着枯燥而无味的农耕劳作,但生活却并不是索然无味,这开春之后的各种土味,就每日能解百般苦,但最让我心心念的就三样——折耳根、竹笋,野芹菜。

折耳根,又名鱼腥草,学名为“蕺(jí)菜”,可炒可煮可生吃,我最喜欢的吃法就是直接生吃,绝大多数人都是吃根的,而我却最喜欢食其叶,当年在北京工作时,曾连续一年的午餐都是一盘折耳根叶配四碗米饭,以至于身边朋友都直接改称我为根哥了,这名字我到是感觉甚是贴切,也就随了大家了。

辰河云柑果园的折耳根根系发达、粗壮,叶片肥美、清凉,这也是由于其地理环境所造就的,田地荒废近二十年,杂草从生,土壤肥沃,加上有两口长年不断的泉眼为整个山谷补水,这为折耳根的生长提供了一个绝佳的环境,最开始我是在机耕道边上的一块田坎上发现有折耳根的生长痕迹的,而后又在曾令园种植莲藕的田坎上发现一大片更肥美的,当时还想着拿草盖着以免被他人发现,后来才知道我完全是多此一举,在曾云鹤的二号地下面的田里发现三块田被密密麻麻的折耳根覆盖,所以后来就想着带动着家人朋友一起去挖,最终甚至有老太太知道了,每天定期的挖两担去卖,最终也没有挖完。

那个时候外婆还没有过世,但身体每况日下,已经不怎么吃得下饭了,突然有一天说想吃野芹菜,我就试着找了一下,在有几块田里面发现了大量的野芹菜,之后也是一发不可收拾的每天就是掐野芹菜给外婆,不过后来也吃腻了。

另一个生长速度快,量大的就是竹笋了,那里有很多人会去扯,不过我们不一样,我们当时都是经常会在曾令园的棚子边办饭吃,炒菜前直接去后面的田里现扯竹笋,几分钟就够吃一顿的了。

整个春天,我几乎都沉迷于这些找野菜的快感之中无法自拔。

在湖南省省道规划中,S320省道起于娄底市新化荣华,止于湘西土家族苗族自治州凤凰山江,经过的乡镇包括荣华、琅塘、金凤、两江、油洋、桥江、舒溶溪、谭家场、伍家湾、修溪、辰溪县城、浦市、达岚、合水、兴隆场、木江坪、官庄、凤凰、千工坪、山江,辰溪县城至修溪段,除征溪口大桥外,已基本完工,原老修溪口至伍家湾、谭家场段在今年6.3-6.19洪灾中损毁严重,尤其是伍家湾至谭家场乡路段已被完全冲毁。

自七月起,修溪至谭家场路段的修缮便已开始,对于沿线发生坍塌的路段,全部重新建堡坎,同时全线的路基也都已扩宽,来坪村域内的公路堡坎已基本完成,伍家湾村公路还正在建设施工,过往车辆一般还是建议绕道过村委会的老路,否则即使是大型SUV也有可能擦底盘。瓦子场村段在洪水中损毁的路段基已基本恢复并扩宽。

最严重的到头湾至荆竹溪段公路,此次驾车驶过,堡坎正在加紧建设中,路面扩宽,并整体路面较以前的公路有所提升,溪道在清理之后也更深了,除公垅口路段外,其余路段的路面已基本扩宽完成,堡坎都在紧锣密鼓地建设中。合垅口原有公路路面暂时无法通行,而是绕道溪道,原来溪与路中间的那一块大石头也已经不复存在了,这一段我一直认为的辰溪最美公路路段现在是已经完全面目全非了,到是期待建设完成之后的样子。

进入谭家场的桐冲坳垭口因为要降低几米,需要向两边山体推进,所以现在处理完全的封路状态,前往谭家场的车辆仅能驶至桐冲口,然后沿着新开的步行小道徒步前往,或者从修溪口位置绕道柿溪乡进入,因为现在有大量大型施工车辆在路上行驶或者工作,所以驾车前往会经常遇到需要等待或者堵车的情况发生。

自从十月份第一次帮曾云鹤的邻居大妈卖8只纯粮鹅开始,我们就在助农的道路上一发不可收拾,印象辰溪助农服务的逻辑很简单,以我们的经验去判断农业生产者的产品的好坏,再以我们的信用作为担保帮他们的产品寻找潜在买家,之后在城东大市场设了一个自提点。

上个月,在米昱杰同志的推荐下,发现了一个精神小伙——王苏,一个养殖专业毕业的九零后,我曾在拍摄桥头溪乡的时候,多次从他的养殖场岔路口经过,但从未去探访过。

他的养殖场位于桥头溪乡梅洲村的一个被龙门溪环绕的半岛之上,环境优美、山青水秀,因为龙门溪这道天然屏障,让他的鸡可以处于完全的放养状态,他会在整个山头洒上草种,然后等丰草长起来为鸡提供纯天然的辅食,而主要的喂养料则只用稻谷。山顶他搭有两个鸡棚,理论上来讲鸡应该是入夜归笼的,可怪就怪在他养的这些鸡在外玩野了,晚上都喜欢睡树上,听他说有一小部分鸡都直接飞过了龙门溪进入林场之后变成纯野鸡了。

他还给鸡都起了名字,这是第一次见他叫鸡的时候很令我诧异的一件事情,后来打听才知道,这养殖场原本是他爸爸在经营管理,后来他养殖专业毕业后,就一起加入了父亲的养殖事业,只是后来因为理念不合,他父亲就外出务工了,而他现在就一个人打理着整个养殖场,而理念不合的很重要的一个原因吧,应该就是他的不务正业,我想这也是他能一直一个人待在这山头的原因吧,他居然是一个玄幻小说作家,在他的心目中,我估计养鸡才是副业。

在印象辰溪助农群两次接龙帮他卖鸡,第一次销售了22只,之后因为品质过硬,在大家的强烈要求下,又组织了第二次接龙,原本他那里是还有几十只鸡的,但最终也只有五只能卖,听他自己说,跟这群顽固份子斗争到了凌晨三点,也就抓住五只,实在是扛不住了,没办法,鸡太野了,他完全不是对手,除了回来吃几顿饭之外,他的鸡基本就是夜不归宿的,我想他的鸡跟他一样,都有一颗放荡不羁的心吧,一切随心,一切随性。

这么野性的鸡今年是没有了,但我们还有生长于高山、放养在辰溪高山之上、同样粮食喂养、同样漫山游荡的越野跑山鸡,煲汤一绝哦,点击左下角小黄车有惊喜哦。

助力辰溪农村农业发展,我们一起在路上。

自从上次曾云鹤与曾令园叔侄二人一起去畅哥鸡蛋拉了一车鸡糞后,我们三个人商量一起组个生产队,以后目标虽然各有各的,但是过程我们可以有很多交集,那咱就可以一起干,畅哥说我们几个SaoLuan搞农业干嘛?那我们就直接当SaoLuan了,只是这名字不太好向大家解释,就用了一个比较文雅点的词了,呆瓜生产队自此诞生。

平常曾云鹤的生产工作还是围绕着他的辰河云柑果园在进行,每天无非就是除草、开沟、松土、浇水、施肥等,前段时间新开的荒地,现在树苗、基肥都有了,曾云鹤把苗都栽了下去,我也慢慢地开始上手从看着他栽变成帮他栽,我最喜欢的事情就是拌老坛酸菜,把树坑挖得很大,然后把周围的杂草都塞进去,灌上水,再压实,最上面再盖上拌了有机肥的土,听曾云鹤说草原本就是很好的有机肥,我想这样搞下来,树势会更好吧?

曾令园继续清理田里的荒草,因为年代久远,田里的荒草一层叠一层的,犁田机无法正常运作,必须把田里的草都拿耙拉到田坎上之后,保证整个田里面没有厚重的荒草,犁田机才能耕作,这是一个看似简单,但却极其耗费体力的工作,加上我前面说过的,其实曾令园的身体素质并不太适合重体力的劳动的,所以整个进度很缓慢。

曾云鹤的果树大多数已经栽了两年了,长点的有三年了,但是地里的排水沟都还没开,天气渐热,曾云鹤当时的工作安排是,遇到凉快的天气就挖沟,因为这个是最耗费体力的,前面说过,农业生产是很枯燥无味的一件事情,为了保证真实,“湘农曾哥”的拍摄以及剪辑之后的内容也将会枯燥无味,所以为了给这枯燥无味的工作加点调料,我自己也加入了生产中,发现自己真的是挖沟能手,只是曾令园的爸爸说,我挖得太深了,扛不住天旱,谁又能想到最后被他说中了呢?

有一块田的荒草清理得差不多了,曾令园试着拿犁田机试了试,不过似乎效果还是不太理想,油到是耗了一整桶,田却犁了没半块,但这就是农业啊,投入一般都要比收入大,最后换来的钱无非就是自己的劳动力而已了。

距离中饭还有两个小时,曾云鹤总是会多带两个馒头在十一点多的时候补充下,吃完活还得继续干。

2022年10月23日,我们团队一起去了一趟仙人湾瑶族乡布村坪家村的一个种植原始水稻的农户那里,上一次去还是9月初,当时他需要做产品包装纸箱,我们上去了解一些他的需求,这次去主要是他看到我们在帮农户卖土产,就想着让我们也帮他卖一下。

他种植的水稻品种是叫作佳优长精的品种,非杂交的原生稻,口感带有一点糯性,煮饭之后不怎么胀饭,不过像我这种喜欢吃硬饭的人也还是感觉口感还过得去,当然不能跟现在一些主打口感的米去比,去水稻种植户家里,每次去都是先吃一顿饭,这次也不例外,发现这盆种植在灶台上的蒜苗,用的时候直接扯,洗都不用洗,甚是方便。

当时正是仙人湾柿子熟了的季节,这种红透的柿子还是儿时的味道,唐强东自己去对面龙头坪摘了一些硬柿子削了皮晒成柿子干,味道也很不错。话归正题,唐强东的稻子今年因为干旱,收成减半,他收了稻子后,会拉到仙人湾乡集镇上打成米,这个是粗米,米有点泛黄,然后会再二次三次抛光,让米变得更白,越抛光的米,产量越低,抛光其实就是把米再过一次打米机,把米外面再剥掉一层,所以正常来讲,越是抛光的米越是没有营养的,因为大米的主要营养成分就在米最外面称之为米衣的那一层以及胚芽上,第一次抛光就会把这这有营养的层剥掉,但抛光的结果是米更好看,更有卖像。

将大米抛光还有另一个问题就是每过一次打米机,就会有新的碎米产生,碎米一般没法再煮饭吃了,所以就单独包装成产品做成粥米,专门用于煮粥,而抛光过程中被剥离掉的那一层,则被收集起来包装成米衣粉,但因为100斤米才能得到一斤米衣粉,所以也无法形成有效的商品,但这却是这一百斤米的营养之精华。

强稻农业的水稻对稻田的选择也有自己的见解,为了更大程度的降低农药残留,唐强东都选择将荒废至少二十年的田开荒,然后在整个种植过程中,不使用任何农药,如果水稻患病,则直接将患病株以及周围一圈全部铲除,对于一些虫害,则选择在田里养鱼和鸭子,但这并不能保证一直都有效,因为当水稻抽穗之后,鸭子就不能下田了,要不然全得被鸭子吃掉。

在唐强东的计划中,他要在这边山区开荒近两百亩,还要去做绿色认证,提升产量,投入估计还得大几十万,不过按我的想法,他的规划应该得一两百万吧,我不对这种已经被淘汰的品种的水稻作任何评价,但他这样的种植方式确实能得到一部分有消费能力的消费者的认可,虽然产量低,但是售价已经足够支撑起他的运营了,只是我们同样有一个必须要解决的问题,那就是销路。

上次的400株果苗是邓毛军去常德买苗的时候,顺带着带回来的,这次因为量少,去常德是很不划算的,大家就相约一起去洪江看看,这让我又有机会认识了一个不怎么为人所知的果苗行业,当然,也就这么一次,也只能是了解到一点皮毛而已。邓毛军在我心目中也是一个传奇人物,偶像一样的存在,14岁就一个人出来打拼,干过厨师、裁缝,最后也扎根农业以及农产品电商,在老家开荒搞了两百多亩柑橘园,干农活,一个人能顶我、曾云鹤加上曾令园三个人,泸溪人,长年住在辰溪,每天驱车路过麻阳到自己村里的农场工作。

此次目白地是洪江市岩垅乡,邓毛军是想要购买一两百株翠玉梨树苗,到了提前联系好的苗圃的仓库后,现场没有足够的货,老板说去苗圃看看,看到仓库里面也是在直播卖苗木。

老板在当地租了好多地用于苗木的种植,这次老板带我们去的苗圃离仓库还有个二十多分钟的路程,到地之后,确实很宽。

挖树苗的朋友居然认识曾云鹤,看来他的影响确实挺大啊,挖好之后,我们又需要回到仓库那边去挖邓毛军的梨苗。

中午了,老板非要请我们吃个中饭,赚是肯定能赚我们几百块钱的,但这个饭吃下去,就真的没利润保证了,感谢老板的盛情款待,饭后我们再去他的仓库转了转,我自己也买了一百多株各色苗,准备在曾云鹤的果园到处栽一下

在这个老板这里买完苗之后,我们再去了一趟另一个老板的苗圃,选了几十株杯苗,感觉从事农业的人基本上都还是挺有意思的,至少到现在为止我认识的搞农业的人都乐善好施,选苗就是看曾云鹤和邓毛军的基本功了,我是真的不懂,只是一个劲儿的多拍些素材,毕竟,我还有个“湘农曾哥”的抖音号要维护运营。

一位在广东做跨境电商的湖南朋友邓姐,想要考查一下怀化市的黄金贡柚市场,因对怀化不熟,就约着曾云鹤一同前往,原本我就是自然而然的司机了,只是我的大面包天天下地太脏,就叫着表弟当了回司机。

黄金贡柚,其实就是春香桔柚,只是怀化引进之后,应该是为了更好的建立地域品牌或者更好的营销,所以起了一个更加好听点的名字,黄金贡柚属于桔柚类的杂柑,果实呈扁圆形或倒阔卵形,深橙色,基部有凸颈或无,果顶有圆形深凹圈痕,似倒盘状凸起,圆盘中央有脐或乳头状凸起或无。

曾云鹤已经卖过几年的黄金贡柚了,每年大概卖个一两万斤,量不算大,这次邓姐来怀化考查的原因是曾云鹤一直作为背后的供应商帮她发货,但是因为邓姐的销量确实很大,而曾云鹤也没有足够的资金或者胆识屯积过多的果子,所以在曾云鹤的果子快要卖完的时候,她就需要寻找这一个稳定、可靠、果品好的货源了。

我们先是去了趟中方县一个做一键代发服务的电商仓库,体量跟曾云鹤的差不多,操作模式也类似,只是曾云鹤的主要业务是脐橙,而他们这边主要是黄金贡柚。做水果供应链、一键代发的商户,使用的纸箱一般都是标准箱,箱体上面没有除了基本了商品信息外,不会有任何的联系方式的,这样代销方才愿意去让你发货,另外一家小点的代发商家体量更小,不过运作模式都差不多。

第三站我们去了一家怀化的黄金贡柚巨头,他们那边库存还有一百多万斤,对于邓姐这样的销售来讲,基本上可以称为无限量供应了,在我试过的几家里面味道最好,他们也都能以更低的价格收更好的果子,主要是经济实力就决定了,提前几百万的货款先支付了,当然就有优先选择权了。

最后一站去了安江,路了两边有大量的仓库,辰溪跟他们比起来,体量就小得多了,当一个地域里面某个品类的商品大家都在卖的时候,整体的成本就都会下去,而且无论是物流、快递、包装材料等其它服务性产业也就都能更完善,就拿运费来讲,他们的快递费用就要比辰溪低得多,而在货品上面,一家没货了,可以快速的从周边同行那里调到货,这在辰溪几乎就是不可能的,从这些方面来讲,辰溪的电商道阻且长啊。

味湘沅的菜是真好吃,感谢同行朋友的热情款待。

曾云鹤新开了几块荒地栽柑橘树需要基肥,曾令园的种植也需要,商量着一起去畅哥那里拉几吨鸡糞有机肥,货车还是上次的那辆车,不过车子有些毛病,离合器有些问题,总是挂不上档,也一直没修好,上次答应畅哥的柑橘苗也带来了,畅哥准备把蛋场那几株桂花树铲了栽柑橘。

作为前辈,畅哥对我们年轻人的创业的支持除了像生态肥这种物资上的支持外,经验的传授和个人感想的交流其实更为重要,这次与畅哥聊了很多,首先对我们进入农业领域保持着一往的支持,但是也说了很多创业的困难和风险,他的观点是像我们这样小打小闹搞不得,把大把的时间花费在一个收入有低的天花板的行业里面,还不如能找到一个稳定的工作,或者能跟一个正在干事业的大哥,一直追随更好,但无论如何,只要入了农业这条道,就得做好做牛做马的准备,如果不把自己留退路,那么就加油勇往直前。

其实畅哥的观点我们都是很认同的,只是每个人都有自己的选择,在几乎所有的朋友里面,大家都会说农业是一个不赚钱的行业,而现代化赚钱的农业,其实在大量的机械化与自动化参与之后,已经不能算是单纯农业的范畴了,它们除了产品还可以称之为农产品之外,无论是从生产过程、还是运营模式上面,都已经与我们所熟知的农业有很很大的不同,就比如畅哥自己的蛋鸡养殖场,除了鸡蛋是鸡生出来的之外,无论是鸡料的喂养、厂内的传送转运、筛选、打包等都已经实现全自动化或者半自动化,这里初看是个蛋鸡养殖场,但细思更像是一个“鸡蛋生产车间”,这是工厂,并不是农场了。

再者每个人的资本、风险承受能力、商业思维等也都有很大的不同,就像曾云鹤搞种植的商业逻辑是,若是他的果园能丰产十万斤果子,他要是有能力把这些果子的销售由批发收购转变为自己零售,那么利润也足够支撑他继续做下去了,曾令园的商业逻辑是,要是他的十亩莲藕能丰产,一年也能有个十万元的收入,而投入就只有少量的生产资料和自己一年的时间精力,在二曾的思维里面,其实作农业的收入原本就是在售卖自己的劳动力而已。交谈很愉快,也很短暂,与长辈的每一次交流对我们年轻人来讲,都受益匪浅。

曾云鹤的肥料要用在核心区和前几天才开荒的四号地,曾令园的肥料需要搬运到前几天才建好的茅棚边堆放,这个时候,其实我自己已经完全融入到他们的生产工作中去了,关于“湘农曾哥”的拍摄似乎都成了我的副业,跟着大家一起扛鸡糞扛得不亦乐乎,好在那个时候表弟还没有正式工作,可以每天陪着我帮我们拍摄。

这次扛鸡糞,到是暴露了曾令园的一个问题,他的身体素质其实并不适合从事需要强体力的农业,加上那几天原本就身体不适,80至120斤一包的鸡糞对于他来讲,其实已经超出了身体的随能力,所以,他的鸡糞也基本上是我跟曾云鹤两个人扛的了,我很享受这样纯粹的没有任何心眼的互帮互助,大家一起干一件事情,不计较个人得失,一起畅谈理想,当然,还得感谢一直支持我们的米昱杰同志,不止一次的自掏腰包,在百忙之中给我们送来冰爽的红牛解渴,这也导致其实我们的农业生产成本直线上升。

老乡又答应将他在老南庄坪小学边上的地贡献给曾云鹤,虽然荒废了很多年,但地里原本种植的广柑树还是郁郁葱葱,树上还挂着去年结的果子,这些年老的广柑树其实也诉说了一个时代的落幕,它们也将被红美人替代,过了个冬,一直挂在树无人问津的广柑味道还不错,不过这也是这里最后一批了,它们都将被连根拔起。

曾老板干农活,手套是必须要带的,说是这样可以保证自己的皮肤细嫩,我是不习惯隔着一层布去操作,所以一直都是直接上手,曾云鹤有一台也是为数不多的几样现代化机械设备之一,汽油锯,不过这么几年了,操作一直都还不熟练,经常会被卡住,或者掉链条,我一直以为这东西有点危险,曾也这么认为的,所以,防暴眼睛一直都是标配,但我感觉意义不大。

对于大一点的树,曾都会把它们锯成一段一段的,方便老乡们自己过来搬回家去当柴火烧,这把毛里刀是已经残缺不堪了,所以再小的杂树也得砍上十数刀,地边上住着的这位老爷爷说这棵茶叶树已经一百多年了,他每年都是从这里采茶喝,让我们一定注意不要在砍树的时候伤害到这两棵茶叶树。

原本曾是计划把这里原有的所有广柑树全部砍掉的,不过在我的强烈建议下,还是把角落的这一棵保留了,平常农作的时候,也还有一个遮阳避雨的地方,梨花正当时,迎着艳阳怒放,希望过几年,这里能桔花香满园。

曾令园的小农场正好占据着两个连接在一起的山谷,整体成倒V形,他在两个山谷交汇的位置改了一个准备养鸡的大棚,一个狗舍,还有一个存放农资农具、临时休息的茅棚,不过因为离地面太进,棚里很潮湿,没办法住了,所以想着把休息的这个棚子往外搬下面悬空重建一下。

在整个新茅棚搭建的过程中,一家三口冲满着各种矛盾、冲突、欢乐,杆子该放哪,铁丝该怎么拧等等,任何一个小事,三个人都有三个看法,还都要据理力争,但无论冲突有多大,我看到的都是父母对孩子的关爱,孩子对父母的理解,关于茅棚梁该怎么钉,三方分歧过大,曾令园决定把瓦买来现场试装一下,以证明自己的方法是没有错的。

农场的机耕道在雨后泥泞不堪,我当时的福田图雅诺无法驶入,只能将瓦下在曾家人垃圾池边上,曾令园父子自己再扛到茅棚边,我试过那个瓦的重量,要我扛的话,估计再歇两次,但毕竟都是老农民了,一口气一两块直接到地儿。

茅棚盖瓦,我跟曾云鹤感觉曾令园一家人可能人手不够,就想着一起过去帮个忙,当时我表弟还在帮我拍摄,就全程记录了我们一起干活的画面,这些视频后来在我剪辑“湘农曾哥”抖音号视频的时候,有了一个新的想法,曾云鹤的果园因为种植作物单调,所以视频内容也同样单调,但是曾令园所做的事情丰富,是不是可以把这两个人所做的事情,通过我这个中间人,合并到一起,商业上是分离的,但是日常生产工作是可以互相帮忙的,比如这次曾令园搭棚子,曾云鹤就可以帮忙,下次曾云鹤要忙黄桃销售的时候,曾令园又可以帮曾云鹤的果园浇水,有了这个想法,后面有很多事情就自然而然的发生了,不过,让我们先搭完曾令园的棚子吧。

曾令园,我在前面的视频里面有提到过他,以前在深圳打拼,后来因身体原因回家疗养,去年起决定像曾云鹤一样,在老家搞搞农业生产,反正就是无论如何都不愿意再出去了,一定要留在家里。

他是21年7月份开始开荒的,在曾云鹤果园的核心区与二三号区中间,有两个山谷,合在一起成为一个V字形,曾令园当时的计划是纯人力的将两个山谷都开荒出来种莲藕,先是把里面的机耕道两旁的荒草全部清理掉,然后从机耕道边上的田开始,一块一块的往山谷深处开荒。三月初的时候,最靠近路边的三块田已经整备好了,不过还没有种植或者养殖任何作物。

自打开始搞农业之后,曾令园每天清晨吃完早饭,便骑着自己的摩托车到地里,主要工作就是清理荒地上的杂草、杂树,将损坏了的田坎修复,将溪道疏通,这么多年有过多次洪水,这些田地没有人耕作,所以田里也会存在很多洪水冲进来的石头,他也是一块一块的捡出来。最开始的计划是开出十亩荒地种植莲藕,所以荒田整理出来之后,还需要给田坎上铺一层防水膜。

曾令园的父母一直就是地地道道的农民,有一个自己的育苗大棚,里面有各种各样的蔬菜苗,我后来种地的时候好多苗都是他的妈妈帮忙给育的苗,当然,还养着很多鸡鸭鹅,经常会早上三四点就在地里摘菜,然后一早赶公交至辰州市场摆地摊卖,曾令园其实现在做的事情本身就还是跟父母的农作是一样的,他计划中的莲藕如果能有产出的话,最后也同样得像他父母一样卖出去。

当然,我既然特意的将他着重的介绍了,肯定后来发生的很多事情都跟我的创业之路有关了,后面我们再慢慢聊。

从第一个视频开始,至3月初,湘农曾哥的帐号也拍摄了近两周时间,在前面,我说过我们忽略了我们共同的弱点,那就是不喜欢泛娱乐化,我们都习惯于以一个我们认为的真实的表述来拍摄,任何一个成品视频没有跌宕起伏的剧情,也没有强烈的人物冲突,甚至有些时候因为失误,而又不愿意演绎补拍而导致画面缺失,视频的连贯性都无法保证,这些问题,其实都还是小事,而我们当时通过多次讨论,最后认为最大的问题是,我们认为三农短视频帐号的关注者关注的点在三农,但其实更多情况下,大家关注的点都是隐藏在三农这层外衣之下的东西。

我们很容易拿辰溪的优秀自媒体人刘老根来讨论,因为他当时的粉丝增涨是很快的,大家最关注的一个点就是“为什么?”他的拍摄、剪辑手法,并不是我们做不到,我们同样做到的内容同样不会有太多的关注度,在抖音的算法里,最初的流量对视频的反馈决定了是否会得到更多的流量,“湘农曾哥”的视频很少会有得到大量播放的,经过分析得到一个我们当时认为最合理的结论,那就是这些视频所表达的事情本身。

刘老根的任何一个视频都是能在短时间内描述清楚,且一定有结果的,无论是改造一个花坛,还是铺一段新路,都能在一个视频里面有明显的结果,再加上,他的拍摄是可以有演绎在里面的,一个画面若是不满意,可以重新再拍一次,以保证最终有最好的画面呈现,而湘农曾哥从一开始就决定了一个底线:不对原始生产工作产生负影响,在我们的观念里面,一锄头挖下去没拍好,就是没拍好,作为拍摄着就需要想办法在下一锄头挖下去的时候拍好,而不是双方讨论,让曾云鹤再重新表演一次挖出一个更合适的镜头来。再者,农业生产本身就是一个枯燥的主题,我们不愿意往视频中增加无关的内容,也不愿意演绎,那么最终的结果就是除开挖地、浇水、施肥、除草、挖沟等这几件重复的工作外,就不会再有任何新的事情发生,关注我们的人也会感觉越来越枯燥,导致越往后面,视频在抖音里面的评价越低,即使我们自认为两个人的合作更融洽,视频表现得更好。

这让我们思考我们应该作何改变,思考的主要内容是是否要在拍摄前就确定主题内容以确保有规划获得内容,增加演绎以保证得到更好的画面,增加内容的冲突、故事性、趣味性以增加用户粘性,但我们这两个直男最后却对前面的想法一一否定,我们还是认为不应该专门为了拍摄视频而增加生产的负担。

最终的结果是,我们是否可以增加内容主题的丰富程度,我们自己的农业生产如此枯燥了,是否可以再加上跟我们所做的具体的事情是不一样的另外的农业生产,这就要从那个叫叫曾令园的九零后说起了。

曾云鹤在2月底总共是采购了近400株果苗,送给两兄弟200株,老村长80株,自已这次主要是为了将以前一些未成活的树苗补种一下,再开了一块新的荒地栽一些新的品种,一起是90株绿美人,30株由良蜜桔。辰溪周边是没有这种带土块的苗卖的,一般都是去常德采购,他们那边有更成熟的产业链,价格也相对透明,绿美人当时的采购价是50元一株,由良蜜桔是16元一株。

我以前一直以为的是,柑橘苗是由柑橘籽发芽培育而成,不过这次明白,原来并不是这么回事儿,现在的脐橙都是没有籽的,也就是没有种子的,而这些树苗其实都分为两个部分,根系部分称为枮木,这个是靠播种出来的,而根系上部分则是直接从已有的一株母本上剪下的发的嫩芽,通过嫁接技术将嫩芽嫁接到枮木之上,因为母本是一样的,那么最终影响成苗的成活、以后果实口感的,更多的就在于枮木了,契合度越好的枮木,理论上来讲,最终的果子也会更好。当然,听说人类第一棵无籽的柑橘树是巴西某修道院的脐橙,好吃但是没种子繁育,后来偶然的发现了可以嫁接,而这一株无籽柑橘应该就是变异而来的了。

栽种到是很简单的一件事情,将土与有机肥混合,填入坑中,让坑接近恢复平整,再将带土的树苗放在坑中,将整个树根部门全部用土埋住再稍踩紧一点即可,需要注意的是,嫁接口是不能埋入土中的,因为嫁接的伤口都没完全长好,容易感染病菌。

栽完之后,立马就浇生根水,所谓的生根水,其实就是让没有根的生物,更加容易生长出根系的液体,说白了就是一种促进植物生长的化合物。刚栽种了果苗浇生根水,更容易成活,也更容易有更好的树势。

一般从苗圃购买的苗都是带有枝叶的,栽下之后,都需要进行修剪,修剪的目的主要有两个,一是定干,修剪前先找好主干,以长得好发展方向好的可当主干培养,之后围绕选定的这个主干进行修剪,确定柑橘主干之后,我们就要清理一些胡乱生长的弱枝,这种枝干只会耗损柑橘树营养,并不会带来有效的收益。

曾特意让我拍了一株苗他进行修剪的完整过程,他说这是这次所有树苗里面自己最喜欢的一株,三分叉,以后树木光照条件好,果子也好摘。

新开荒地的坑是曾云鹤的弟弟先挖的,不过确实不合格,我们几个人一起把坑扩大一些,快到下午六点,邓毛军从常德拉树苗的车才到,南庄坪村曾家人有一棵很年长的枫树,正好挡着路的拐弯处,货车车厢过高无法通过,所以只能将树苗转运一次至果园了,曾云鹤只有一个电动三轮车,趟数可能要多一些吧,但至少比人力挑要好得多。

好在老村长正好有空,三轮换成拖拉机,还是快得多,不过也拉了三拖拉机才全部转运完成,原本计划是送一户老乡家100株树苗的,后来村长误以为是政府送的,就说他也要,曾云鹤也没有做过多的解释,就又给他分了大几十株,时间已经很晚了,邓毛军还得把树苗拉到泸溪他的果园里面,大家互相帮忙快速地把树苗都先下到空地。

这次采购的是带土的苗,天气不是很热,也不干燥,在地里放个几天再栽也没有太大的问题,正好次日曾云鹤需要去参加一个会议,所双我就一个人到果园、村子里面转了转,去拍了下另一个在果园边上搞农业生产的年轻人曾令园,他以前在深圳做过外卖送餐、铁板鱿鱼等活,后来因为身体原因回了家,21年七月份开始决定跟着曾云鹤的路,开始搞农业,一个人纯靠自己的人力和最原始的工具,硬是把整个荒废了几十年的山垅开荒出来,原计划是种藕,不过后来结果并不好,关于曾令园的事情,我在后面会有很大的篇幅单独来讲,这里就不再过多讨论了。

看到老村长开着拖拉机拉着昨天曾云鹤送给他的树苗去栽,我就跟了去,发现自己的体力是真的哪不上了,连个重装爬坡的拖拉机都追不上。他栽果树比曾云鹤的方式简单得多,现场一边挖坑一边栽了,肥料也没有曾云鹤用得多,不过当时我对果树栽种几乎是完全不懂,所以就当作是大家的方式不一样吧,具体的技术细节我也无法过多的讨论了。

另一户受赠树苗的是两兄弟,他们计划栽果树的地是在老学校对面,我也过去转了下,在于其中一人的聊天中了解到,他原来是在861那边帮别人看果园的,可以说是一个种植柑橘树的老手了,两兄弟的树苗都得从家里挑过来,这带土的苗一次挑六棵还是有点累人的,旁边的是女儿带着两个孩子在一起陪他栽,小孩的笑容是真的治愈。

从他们口中得知,这块地原本是有一对老头老太太在种菜,后来他们自己收了回来种果树,种菜的老头老太太就把地搬到山的另一边去了,我又去拜访了下这群种菜的人,年纪都70多了,他们一行有六人,每天相约一起从县城坐公交车到黄泥沮,然后步行至地里,开荒种了近二十亩地的各种蔬菜,自己吃些,儿女带些,多出来的还能再卖掉一些,并不是缺这个钱,只是他们认为,以前整天打麻将那样的生活,人太累了,不如现在这样轻松惬意,身体好了,又有了好东西吃,一般他们就干活干到中午十二点,准时“下班”回家。

栽种柑橘树之前,需要先在地里挖上深坑,然后将有机肥拌着土混合填入其中作为基肥,有利于改良土壤,增强树势,提升果实品质。辰河果园的生态肥一直是由辰溪县的龙头企业畅哥鸡蛋免费赞助了,畅哥鸡蛋的有机肥是采用腐熟剂发酵技术的鸡糞,曾云鹤只需要自己出一个运输费用即可。经常给曾拉有机肥的小哥是沙坪人,以前在富士康打工,回来之后买了这辆货车就开始帮别人拉货,不过自己还有个主业,收荒货。

畅哥是一个很和蔼的人,对年轻的创业也是十分的支持,我们车停至蛋鸡养殖场的鸡糞堆积场之后,畅哥都是自己开着铲车把我们装货,虽然鸡糞已经经过发酵了,而且当时天气还不热,但同样可以闻到一股难受的气味,好在有半机械化装车,我们还是能很快的完成装车。回程前,曾云鹤答应下次来拉鸡糞的时候给畅哥带几株柑橘树过来,一来这也算是礼上往来,二来,至少也为下次蹭鸡糞提前布了个局嘛。

果园的公路还是早几年村里自己修的一条机耕道,没有硬化,路面很差,下雨天都是没法行车的,货车行至果园核心区之后,还需要直接将一包一包的鸡糞搬至树坑边,一袋鸡糞栽两棵树,这次是在山坡上新开的一片地,这地要是在亿万年前肯定是溪道,全是光子石,在挖坑的时候,坏了好几把锄头。

原计划拍摄“湘农曾哥”是不对曾云鹤的生产工作产生任何影响的,但是这次拉鸡糞的拍摄总感觉就在旁边就这么看着他扛鸡糞而不帮忙,心里过意不去,所以,取了一些镜头之后,我也加入扛鸡糞的行列,一包大概80斤左右,有的湿的有100多斤,虽然我玩了很多年重装户外,但毕竟已经好几年没有大运动量了,搬几包就得休息一下,不过这次劳动似乎又激活了我运动的基因,也开启了我一个月减体重10公斤的征程。