山舍朴膳•Shan'Hus
山舍一间,朴膳一味
八百年前,南宋林洪写了一本小书,叫《山家清供》。
他不写鲍参翅肚,不写百技千巧。他写的是山间的笋蕨、溪头的芹芽、雪夜的一炉拨霞供。那本书薄薄的,讲的却是中国人最深的一种饮食信仰:真正的滋味,不在繁复,在朴素。
「Shan’Hus | 山舍朴膳」的名字,便从这四个字里长出来。
山舍一间,朴膳一味
八百年前,南宋林洪写了一本小书,叫《山家清供》。
他不写鲍参翅肚,不写百技千巧。他写的是山间的笋蕨、溪头的芹芽、雪夜的一炉拨霞供。那本书薄薄的,讲的却是中国人最深的一种饮食信仰:真正的滋味,不在繁复,在朴素。
「Shan’Hus | 山舍朴膳」的名字,便从这四个字里长出来。
一果素山 · Shan'Sincera
一果素山
│ │ │
│ │ 山 —— 海拔 1341 米。不是任何一座山,是这座山。
│ │
│ 素 —— 不添加,不欺骗,不喧哗。品牌唯一的哲学。
│
一 —— 不是数字。是专一。一颗果子,一座山,一个人,一辈子。 yum updatesudo dnf install nginx
sudo systemctl start nginxsudo dnf install mariadb-server
sudo systemctl start mariadbsudo dnf install php php-curl php-dom php-exif php-fileinfo php-fpm php-gd php-hash php-json php-mbstring php-mysqli php-openssl php-pcre php-xml libsodium Knex 的核心就是用于创建以及执行SQL查询的构建器,比如 select、insert、update 或者 delete。
Knex 是一个可以运行于NodeJS环境以及浏览器环境下的 SQL 查询构建工具(但受 WebSQL 的 限制,如删除表、读取表结构等操作是无法捃的),但强烈建议不要随意在浏览器中执行SQL查询,因为这会导致严重的安全漏洞,还是建议您在服务器端执行,在浏览器端执行查询,主要还是用于学习。
Node.js 是 Knex 的首先运行环境,你需要在你的 Node.js 项目中安装 knex 库,同时还需要安装适当的数据库操作库:
pg 库libpq 则使用 pg-native 库绑定mysql 库sqlite3 或者 better-sqlite3 库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数据库, Knex 允许你通过添加一个名为searchPath参数给每一个数据库连接。
const pg = require('knex')({
client: 'pg',
connection: process.env.PG_CONNECTION_STRING,
searchPath: ['knex', 'public'],
});当使用 PostgreSQL 驱动时,实例化 Knex 的配置对象 connection: {} 可以通过各种标签指定各种详细的参数,比如是否启用 SSL、一个连接字符串,如下例:
如果存在 connectionString 属性,则会优先使用该属性,否则,连接将使用多个独立的字段组合而成的配置(host、port 等),最后,还可以使用 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 适配器的时候,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 适配器时,你可以通过添加 flags 属性设置连接的标签:
const knex = require('knex')({
client: 'sqlite3',
connection: {
filename: 'file:memDb1?mode=memory&cache=shared',
flags: ['OPEN_URI', 'OPEN_SHAREDCACHE']
}
});当你使用 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 数据库时,您可以通过指定 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 地址,此时 port 与 host 会被直接忽略。
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 实例即可。
通过在 Knex 实例上面调用 withUserParams 方法,可以创建一个该实例的复本,使用同样的数据库连接:
const knex = require('knex')({
// Params
});
const knexWithParams = knex.withUserParams({
customUserParam: 'table1',
});
const customUserParam = knexWithParams.userParams.customUserParam;在初始化配置对象中,添加 debug: true 属性,则会启用 debugging 功能。
通过添加 asyncStackTraces: true,可以启用实例对所有查询的栈跟踪功能。
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 回调函数会被调用。
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);
});
}
});
},
},
});默认情况下,当 Knex 连接数据库超过 60000ms 未成功时,会抛出连接超时异常,可以通过指定 acquireConnectionTimeout 值来修改默认超时时间。
const knex = require('knex')({
client: 'pg',
connection: {
/*...*/
},
pool: {
/*...*/
},
acquireConnectionTimeout: 10000,
});在使用 Oracle 数据库时,对于 DATE、NUMBER以及CLOB 类型的数据,可以选择以字符串返回数据:
const knex = require('knex')({
client: 'oracledb',
connection: {
/*...*/
},
fetchAsString: ['number', 'clob'],
});查询结果返回给用户前,会调用该钩子函数,这是一个非常有用的钩子,最常见的用处莫过于将查询结果中的属性由 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);
}
},
});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)),
});打开日志。
const knex = require('knex')({
log: {
warn(message) {},
error(message) {},
deprecate(message) {},
debug(message) {},
},
});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月初,湘农曾哥的帐号也拍摄了近两周时间,在前面,我说过我们忽略了我们共同的弱点,那就是不喜欢泛娱乐化,我们都习惯于以一个我们认为的真实的表述来拍摄,任何一个成品视频没有跌宕起伏的剧情,也没有强烈的人物冲突,甚至有些时候因为失误,而又不愿意演绎补拍而导致画面缺失,视频的连贯性都无法保证,这些问题,其实都还是小事,而我们当时通过多次讨论,最后认为最大的问题是,我们认为三农短视频帐号的关注者关注的点在三农,但其实更多情况下,大家关注的点都是隐藏在三农这层外衣之下的东西。
我们很容易拿辰溪的优秀自媒体人刘老根来讨论,因为他当时的粉丝增涨是很快的,大家最关注的一个点就是“为什么?”他的拍摄、剪辑手法,并不是我们做不到,我们同样做到的内容同样不会有太多的关注度,在抖音的算法里,最初的流量对视频的反馈决定了是否会得到更多的流量,“湘农曾哥”的视频很少会有得到大量播放的,经过分析得到一个我们当时认为最合理的结论,那就是这些视频所表达的事情本身。
刘老根的任何一个视频都是能在短时间内描述清楚,且一定有结果的,无论是改造一个花坛,还是铺一段新路,都能在一个视频里面有明显的结果,再加上,他的拍摄是可以有演绎在里面的,一个画面若是不满意,可以重新再拍一次,以保证最终有最好的画面呈现,而湘农曾哥从一开始就决定了一个底线:不对原始生产工作产生负影响,在我们的观念里面,一锄头挖下去没拍好,就是没拍好,作为拍摄着就需要想办法在下一锄头挖下去的时候拍好,而不是双方讨论,让曾云鹤再重新表演一次挖出一个更合适的镜头来。再者,农业生产本身就是一个枯燥的主题,我们不愿意往视频中增加无关的内容,也不愿意演绎,那么最终的结果就是除开挖地、浇水、施肥、除草、挖沟等这几件重复的工作外,就不会再有任何新的事情发生,关注我们的人也会感觉越来越枯燥,导致越往后面,视频在抖音里面的评价越低,即使我们自认为两个人的合作更融洽,视频表现得更好。
这让我们思考我们应该作何改变,思考的主要内容是是否要在拍摄前就确定主题内容以确保有规划获得内容,增加演绎以保证得到更好的画面,增加内容的冲突、故事性、趣味性以增加用户粘性,但我们这两个直男最后却对前面的想法一一否定,我们还是认为不应该专门为了拍摄视频而增加生产的负担。
最终的结果是,我们是否可以增加内容主题的丰富程度,我们自己的农业生产如此枯燥了,是否可以再加上跟我们所做的具体的事情是不一样的另外的农业生产,这就要从那个叫叫曾令园的九零后说起了。