新年好 takoyaki,期待再次与你相见
一、序
今天是中国农历一年的最后一天,往年都叫年三十,今年没有三十,最后一天是二十九。厨房的柴火味、窗外的鞭炮声还有不远处传来的说笑声,一切都是熟悉味道,新年到了,家乡热闹起来了。平常左邻右舍都是看不到人的,门口的杂草随意生长。只有到了逢年过节,在外奔波的人们才会回到老家,这时的家乡就格外的热闹。
外面的天还是阴沉沉的,偶尔有阳光射进大厅,只停留一小会又消失了,希望明天是个好天气,疫情的原因已经两年没有挨家挨户拜年,今年应该可以拜年,很期待。现在 “拜年” 似乎成了走进邻居家的一个理由,平日大家各奔东西,交流太少,见面又不知到拿什么当话题唠嗑两句。
刚刚吃完年夜饭,稍坐了一会,构思着怎么给博文起个目录,介绍下这几天完成的一个项目,输出一下心得体会,上午写完了 README.md,代码已经发布到 Github 上了。
takoyaki 这个名字来自上次公司团建认识的一个妹子,只觉得姑娘长得好,相处时很舒心,名字起得也好,故引用作为项目的名字。别无他想,名字的故事到此为止。
这个项目的思路受启发于公司内部的一个管理后台,它用于对一些业务数据进行简单的增删改查,每个页面就是一个业务。当时让我感到好奇的是页面的 排版、按钮、背景色 都是统一的,不像是单独开发出来的,更像是一个模板里面配置出来的。当时,脑海隐约又想起以前供职的公司,也有类似的管理后台,供内部使用,比较粗糙,功能是类似。而且,当时我还参与过开发,都是一个页面一个页面的用HTML 写出来的,大致是下面这样:

瞬间觉得那时的自己好蠢啊,如果抽离出一个通用的模板,那么就可以减少好多的开发工作量。再往深入想,其实每个公司乃至个人开发者,都有这么一个页面的需要,如果是懂前端的开发者,虽然页面简单,但也是有一定的开发工作量;如果是不懂前端的后台开发者,那就有点麻烦了。如果此时有一个只需要简单配置,就可以生成上面这样的 增删改查 页面,就可以解决他们的问题,同时节省工作量。
二、takoyaki 介绍
takoyaki 是一个通用的数据表格组件,只需少量的配置,无需人力开发,就可以快速生成一个常见的支持业务 “增删改查” 的 Web 管理平台。 其受启发于业务场景,将常见的数据管理功能,抽离成通用的组件,目的是减少的重复开发工作,进一步帮助开发人员形成一种抽象的软件思维。
Features
- 配置化,无需开发
- 支持数据的增删改查
- 支持 Excel 导出数据
产品图

页面配置

编辑数据

三、抽象能力
随着项目做的越来越多,现在有一些很深的感触。做这些项目耗费了我们大量的时间,但回头复盘却感觉收获很少。大部分时间都花在和不同的人反复沟通需求,编程方面很多都是重复的工作。
现在愈发觉得,写代码的速度应该要慢下来,将更多的时间用于思考,去做提升自己的事,而不是盲目填满自己的时间。
开始这个项目时,就想起前段时间学习了 左耳朵耗子的极客时间专栏-高效学习 一篇,里面提到的抽象能力:
抽象能力是举一反三的基本技能。平时你解决问题的时候,如果你能对这个问题进行抽象,你就可以获得更多的表现形式。抽象能力需要找到解决问题的通用模型,比如数学就是对现实世界的一种抽象。只要我们能把现实世界的各种问题建立成数据模型(如,建立各种维度的向量),我们就可以用数学来求解,这也是机器学习的本质。
我理解,这个项目就是抽象能力的一种实践,对问题进行抽象,找到解决问题的通用模型。放眼其它的领域,比如:Web 框架 Spring、前端框架 Vue、各种编程语言 其都是对特定领域的一种抽象的表现形式,都是将各种问题建立成数据模型,帮助人们更容易的理解。不敢妄言生活中的例子,生活阅历和修行还不够,或许数十载之后会加深这种理解吧。
说到底,我想表达的是,这个项目不是教你如何实现一个 “通用的表格组件”,而是想让你知道这么一个思维能力,掌握抽象能力可以站在更高视角看待问题,而且适用于任何领域。
尾声
新年好,感谢看到这里的你们,祝你们新年快乐,虎虎生威 !
新年好,takoyaki ,期待再次与你相见!
新的一年马上就要到来,希望你不要受限于教条的框框约束,敢于去突破自己,挑战自己,做自己未曾做过和不敢做的事。
新年好 takoyaki,期待再次与你相见的更多相关文章
- 【循序渐进MVC】第一回——一物多用Project.json依赖关系之dependencies节点
Project.json统一了ASP.NET vNext之前版本的packages.config.NuGet 配置(nuspec)以及项目文件(csprojs):并集成在Project.json中. ...
- 文章之间的基本总结:Activity生命周期
孔子:温故而知新.它可以作为一个教师.<论语> 同样的学习技巧.对于技术文件或书籍的经典技术,期待再次看到它完全掌握,这基本上是不可能的,所以,我们常常回来几次,然后仔细研究,为了理解作者 ...
- YYModel底层解析- Runtime
这段时间一直在忙新的需求,没有时间来整理代码,发表自己技术博客,今天我们来看一下YYModel的底层解析以及如何使用,希望对大家有所帮助! 一 概述 概括 YYModel是一个轻量级的JSON模型转换 ...
- HTML 圆心节点
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Python接口自动化--Json数据处理 5
1.Json模块简介,全名JavaScript Object Notation,轻量级的数据交换格式,常用于http请求中. Encoding basic Python object hierarch ...
- C#如何解析JSON数据(反序列化对象)
第一章:C#如何拿到从http上返回JSON数据? 第二章:C#如何解析JSON数据?(反序列化对象) 第三章:C#如何生成JSON字符串?(序列化对象) 第四章:C#如何生成JSON字符串提交给接口 ...
- 如何在 CentOS 7 上生成 SSL 证书为 Nginx 加密
本文首发:开发指南:如何在 CentOS 7 上安装 Nginx Let’s Encrypt 是由 Internet Security Research Group (ISRG) 开发的一个自由.自动 ...
- 如何在 CentOS 7 上安装 Nginx
本文首发:开发指南:如何在 CentOS 7 上安装 Nginx Nginx 读作 engine x, 是一个免费的.开源的.高性能的 HTTP 和反向代理服务,主要负责负载一些访问量比较大的站点. ...
- C#解析JSON数组
方式一 第一步:使用前,需下载:Newtonsoft.Json.dll 没有的,请到我百度云盘下载 链接:https://pan.baidu.com/s/1JBkee4qhtW7XOyYFiGOL2Q ...
随机推荐
- codeforce A. 2Char(水题,暴力)
今晚发了个蛇精病,然后CF了,第一题这好难啊,然而水题一个,暴力飘过. 链接http://codeforces.com/contest/593/problem/A: 题意比较难懂吗?傻逼百度都翻译不对 ...
- Go语言核心36讲(新年彩蛋)--学习笔记
新年彩蛋 | 完整版思考题答案 基础概念篇 Go 语言在多个工作区中查找依赖包的时候是以怎样的顺序进行的? 答:你设置的环境变量GOPATH的值决定了这个顺序.如果你在GOPATH中设置了多个工作区, ...
- MySQL 中的共享表空间与独立表空间
对于 InnoDB 存储引擎来说,它可以将每张表存放于独立的表空间,即tablename.ibd 文件:也可以将数据存放于 ibdata 的共享表空间,一般命名是 ibdataX,后面的 X 是一个具 ...
- MySQL百分比显示和显示前百分之几的方法
前几天一个朋友让我帮忙写的,随手记录一下,感觉难度也不大,就是写的时候遇到一些问题.优化方便做得不太好.有好的优化方法欢迎分享!(数据库在文章结尾) 要求 1)查询所有时间内,所有产品销售金额占比,按 ...
- Spring企业级程序设计 • 【第1章 Spring之旅】
全部章节 >>>> 本章目录 1.1 Spring框架基础 1.1.1 Spring特点及体系结构 1.1.1 Spring的体系结构 1.1.2 使用Eclipse搭建 ...
- C#中的隐式转换
你是否考虑过这个问题:为什么不同类型之间的变量可以赋值,而不需要强制转换类型?如: int i = 1; long l = i; object obj = 1; Exception exception ...
- java运算符1
一:算术运算符(+, -, *, /, ++, --, ) 1.+号 :可以做加法运算(加号两边为字符和数字).正数表示 字符串连接符:只要+号两边其中有一边有字符串,输出时加号就充当连接 ...
- minio + kkFileView 实现在线预览
minio上传的pdf之类文件不支持预览,地址在浏览器访问时会直接下载,现在搭配kkFileView文件预览 1.minio查看之前的安装方式 2.kkFileView安装 docker方式 1.拉取 ...
- vue中form 表单常用校验封装(async-validator)
新建一个js校验文件validate.js export const regular = { // 验证自然数 naturalNumber: /^(([0-9]*[1-9][0-9]*)|(0+))$ ...
- T-SQL创建数据库常用方法2020年10月29日20:12:04网课笔记
2.接口的作用 第一.方便框架的设计.利于团队的开发. 第二.方便项目拓展.高内聚.低耦合. 3.反射 [1]反射的理解:通过读取程序集的信息,找到相关的类型和类型的成员,也可以得到相关的对象.而这种 ...