Coding Activity

Languages

Categories

Coding Activity(Table)

云南地质大数据介绍

项目背景

当前,全球范围内广泛认识到了云计算和大数据的重要作用,运用大数据推动经济发展、完善社会治理、提升政府服务和监管能力正成为趋势,各国纷纷将开发利用云计算和大数据作为夺取新一轮竞争制高点的重要抓手,实施大数据战略。依据《国家十三五规划纲要》的指导思想,十三五期间,国家将重点突破云计算和大数据关键技术,积极促进云计算和物联网发展,把大数据作为基础战略资源,加快政府资源开放共享。云南省人民政府在关于印发《云南省国民经济和社会发展第十三个五年规划纲要的通知》提出:“十三五”期间,云南省计划凭借现代新兴技术,改变传统落后方式,提高劳动生产率,消除信息不对称,建成以大数据和云计算技术为基础的云南省政务大数据中心,为规划和决策提供强有力的数据支撑,提高决策效率,明确发展方向,促进云南省经济的可持续健康发展。地质数据是人类研究了解生存环境、开发利用自然资源所必需的数据,其广泛应用已经促使它成为国家大数据的重要组成部分,具备了大数据的本身特点和社会广泛应用的属性。作为社会经济发展中的重要基础支撑行业,地质行业已经渗透到国民经济的各个行业。以云计算为支撑,大数据为驱动开展地质大数据平台的建设已成为未来地质行业信息化发展的必然趋势。云南地质在城市规划、国土、水利、交通、环境、农业、地震、安全、能源、旅游等众多行业领域发挥了积极作用。

本项目具体目标包括提升省地矿局和云南地矿总公司(集团)(以下简称集团)所属各单位的生产管理水平,促进各产业健康发展;提升省地矿局、集团服务全省国民经济和社会发展各行业的能力和水平;促进技术成果应用和转化,提高产业持续发展能力。项目主要建设内容包括标准规范建设、基础设施建设、数据生产及入库、平台软件开发、应用软件开发、综合集成建设和运营支撑能力建设等。

本系统属于该项目的第5标段建设任务,负责数据采集系统的开发,包括"测绘地理数据采集系统"和"水工环"地质数据采集系统,满足数据生产和上层业务系统的需求。

本系统建设目标为以标准化数据结构为基础,按行业分工和差异化管理模式定制开发基于移动终端的数据采集系统,同时与数据管理系统有机协同,实现地质矿产、测绘、矿山、工程勘察等生产项目的标准化管理,同时保障大数据基础数据的完整性、规范性和有效性。

按照数据采集项目流程,本系统需要实现以下功能:

  • 作业人员在云平台进行项目数据下载,包括底图数据和项目信息。(项目数据来源于第6标段北京超图软件股份有限公司)
  • 将项目数据导入本系统的Windows桌面端,核查完毕后将数据分发到外业采集平板
  • 外业作业人员持作业平板进行数据采集任务,首先作业人员调入项目底图,并提供投影转换和底图矫正等功能
  • 外业采集APP在作业期间,将实时上传作业人员位置
  • 作业工作主要是采集点位数据,录入点位属性,指导作业人员在指定位置进行钻探等地质试验,并录入相关试验数据
  • 作业人员在进行钻探工作时可使用APP生成简易钻孔柱状图以及绘制钻孔剖面图草图
  • 本系统提供外业数据检查功能,在数据上传前及采集过程中,可随时对采集的外业数据进行必填项,选填项检查,辅助提高作业效率
  • 在采集过程中,可将采集的过程数据打包,实时上传至云平台
  • 采集完成后,作业人员使用本系统内业端对各外业人员采集的分散数据进行整理,形成统一的项目数据
  • 在数据整合并检查完成后,作业人员将使用本系统对采集的数据汇总,形成相关统计表
  • 在作业人员完成项目成果后,使用本系统将项目成果打包,在云平台库管系统进行入库

外业采集APP(java)

基于开源的nextgis平台二次开发的地质采集软件,用于外业人员数据采集工作

主要功能

  • 以json,geojson,sqlite等格式与内业端eps平台数据互通,实现采集数据和地理信息数据的导入导出
  • 接入云平台wmts地图服务
  • 开源的aForm二次开发autoForm库,用于解析json数据渲染html界面
  • 使用webview+autoform方式开发的数据采集界面,表单配置灵活方便
  • webview动态注入js实现数据校验,智能填充,自动计算等功能
  • 中间数据上传,交付于云平台
  • 定位监控服务,作业轨迹实时上传

程序截图

云南地质大数据内业处理

基于javafx开发的gui程序,嵌入EPS平台用于内业端数据处理工作

主要功能

  • 基于内部网络以及adb工具,导入外业平板中采集的数据
  • javafx+webview构建gui界面,与外业端android程序界面风格统一
  • 使用统一数据格式衔接android端中的表格以及数据
  • 数据汇总统计,echarts图表展示
  • 基于java-poi生成各类地质表格成果数据

调用

java -jar eps_plus.jar -o zk_data -t 工程钻孔 -n 114430920305030200 -y SWZK1

参数说明

Options: 
  -o 零散数据目录
  -t 地物类型
  -n 统一编号
  -y 野外编号

程序截图

云平台数据传输工具

使用golang开发的cli程序,用于从云平台库管系统下载数据以及成果数据入库

主要功能

  • 以无窗口exe的形式供给eps平台传参调用
  • 身份验证链接ftp服务器
  • 对云平台库管平台的数据进行检索下载
  • 检索本地成果数据目录上传成果数据,以sha1和最后修改日期为依据进行增量上传

调用

  • 推送
data_trans.exe push \
  -u user  \
  -p pwd  \
  -ip 127.0.0.1  \
  -n 114430920305030200 \
  -d C:\\test_data  
  • 拉取
data_trans.exe pull \
  -u user  \
  -p pwd  \
  -ip 127.0.0.1  \
  -n 114430920305030200 \
  -d C:\\test_data  

参数说明

Options: 
  -u 用户名
  -p 密码
  -ip 服务地质
  -n 统一编号
  -d 成果数据目录

山维星球介绍

山维星球可以干什么

  • 上传、发布地图数据、实景模型数据、点云数据
  • 按业务目标构建多数据融合的三维场景
  • 叠加业务数据,进行综合展示
  • 分享数据给其它用户,或指定用户
  • 作业员可根据任务范围线,进行EPS三维测图在线生产
  • 添加标记点、线、面,进行测量及三维分析
  • 可持Web浏览器上直接浏览成果,多场景对比
  • 可按预定飞机路线展示成果,添加各种动态效果

山维星球运行在哪儿

  • 支持私有云部署,用于支撑内部数据应用
  • 支持公有云部署,用于支撑互联网业务
  • 支持单机运行,用于成果汇报演示场合
  • 终端支持chrome浏览器

山维星球支持的数据

  • EPS生产成果(*.EDB)
  • 倾斜摄影生产的实景模型成果(*.osgb)
  • 2.5D房屋矢量面(*.shp)
  • 房屋白模(*.obj)
  • 点云数据(*.las)

山维星球技术特点

  • 支持开源数据库postgreSQL
  • 采用开源数据库mongoDB提升性能
  • 支持海量实景模型数据发布
  • 与EPS一体化协同,全面支撑生产到应用

山维星球应用示例

EPS三维测图在线生产

  • 私有云内网部署
  • 支持单个项目数百平方公里
  • 保护实景模型成果数据

三维不动产

  • 政务网部署
  • 承载城市级单体化实景模型+地图数据
  • 直观展示、便捷查询不动产的抵押状态、权属信息

农房核查

  • 一村一个三维场景
  • 实时上报核查信息
  • 农房核查APP支持补绘、相关人员签名
  • 在线验证权利人身份证信息

山维星球后台

基于springboot的web程序,提供restful接口以及网页服务

主要功能

  • 使用Shiro实现用户认证,管理授权,数据加密等功能
  • 使用ibatis作为数据持久化框架
  • 使用session+websocket实现服务端消息推送
  • 使用MongoDB GridFS进行分布式存储海量数据
  • 使用RabbitMQ解耦数据处理流程,保障数据处理过程中的一致性和稳定性
  • 使用Swagger生成API文档和调用接口
  • 使用Thymeleaf模板引擎动态渲染html页面,搭配thymeleaf-extras-shiro库实现按钮级权限验证
  • 使用网建SMS短信通SDK实现短信推送,一键登录,警告提醒等
  • 使用proj4j开源库实现坐标转换
  • 基于GeoServer实现OGC服务的管理发布

系统模块

├─系统管理
│  ├─用户管理
│  ├─角色管理
│  ├─菜单管理
├─系统监控
│  ├─在线用户
│  ├─系统日志
│  ├─登录日志
│  ├─请求追踪
│  ├─系统信息
├─数据管理
│  ├─数据入库
│  ├─数据更新
│  ├─局部加载
│  ├─动态分发
├─任务调度
│  ├─定时任务
│  └─调度日志

山维星球前端

使用cesium+layui构建web界面,用于山维星球前端展示

主要功能

  • 使用layui进行web界面开发
  • 依赖Cesium实现模型,点云,切片影像等gis数据的加载显示
  • 依赖tus实现大文件上传(tus是一个新的开放协议,用于基于HTTP的可恢复上传)

程序截图

数据处理程序

golang开发的gui程序,用于gis数据的处理和入库

主要功能

  • 基于walk构建windows gui界面(walk是开源的的windows应用程序库工具包)
  • 选择或者拖放文件夹到程序窗口,查找所有符合条件的数据并记录到任务列表
  • goroutine 批量执行任务列表中的任务,任务的执行包括调用关联程序进行数据格式转换
  • 链接mongodb,postgresql进行数据入库以及元数据存储
  • 使用goroutine+channel实现任务执行状态监控
  • 设置界面包含postgresql,mongodb连接设置,并行数设置,检查关联程序路径等
  • 另行编译一个cli版本,通过传参调用执行程序,供webserver程序调用

程序截图

山维星球数据管理模块

nodejs开发的express路由模块,以restful接口形式提供gis数据处理、获取、存储、发布的一些能力

构建

构建前需要拥有 npmtsc等必要依赖。

build in windows

  • 按需编辑tsconfig.json
{
  "compilerOptions": {
    "sourceMap": false,
    "declaration": false,
    "removeComments": false,
    "target": "es6",
    "module": "commonjs",
    "outDir": "./build",
    "baseUrl": "./src",
    "alwaysStrict": true,
    "noImplicitAny": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "allowSyntheticDefaultImports": true,
    "typeRoots": [
      "./node_modules/@types"
    ],
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "moduleResolution": "node"
  },
  "include": [
    "src/**/*.ts"
  ],
  "exclude": [
    ".idea",
    "node_modules",
    "build"
  ]
}
  • 安装npm依赖
npm install
  1. 创建编译结果文件夹
mkdir data_module
  1. typescript编译
tsc
  1. 复制编译结果
XCOPY .\build\**.* .\data_module\build\ /S /E 
COPY package.json data_module\package.json

import

"dependencies": {
    "data_module":  "file:./data_module"
}

typescript

import {TSConfig,TSRoute} from 'data_module';

const tsConfig: TSConfig = {
    database: "pg",
    pg: {
        user: "sunway",
        password: "sunwaywh",
        database: "tfs",
        host: "127.0.0.1",
        port: 5432
    },
    plugins: {
        mongod: "./plugins/Mongo3.6/bin/mongod.exe",
        upload: "./plugins/upload/upload.exe",
        update: "./plugins/update/update.exe"
    },
    mongo_storage_dir_path: "./mongo_data"
};
const tsRoute = new TSRoute(tsConfig);
app.use(`/tfs`, tsRoute.router)

javascript

const TSRoute = require('tileset_server').TSRoute

const tsConfig = {
    database: "pg",
    pg: {
        user: "sunway",
        password: "sunwaywh",
        database: "tfs",
        host: "127.0.0.1",
        port: 5432
    },
    plugins: {
        mongod: "./plugins/Mongo3.6/bin/mongod.exe",
        upload: "./plugins/upload/upload.exe",
        update: "./plugins/update/update.exe"
    },
    mongo_storage_dir_path: "./mongo_data"
};
const tsRoute = new TSRoute(tsConfig);
app.use(`/tfs`, tsRoute.router)

数据库模块

PlantUML rendering error: Failed to render inline diagram (Failed to generate PlantUML diagrams, PlantUML exited with code 127 (sh: 1: -tsvg: not found ).).

存储模块

PlantUML rendering error: Failed to render inline diagram (Failed to generate PlantUML diagrams, PlantUML exited with code 127 (sh: 1: -tsvg: not found ).).

山维星球单机版

基于Electron开发的桌面端程序

业务场景

实景模型成果提交给甲方时,方便甲方浏览查看。 有数据量大小要求,但与项目有关,一般500G以下(小于80平方公里) 有基本功能需求,但不要求强烈,具体如下

  • 标绘点、线、面、注记
  • 测距、测高
  • 测面积
  • 水淹效果
  • 日照

功能设计

免费版付费版调试版
开始场景保存场景
场景数据
视角全球
中国
自定义
地名搜索
自动飞行全球旋转
中心旋转
绑定相机
交互设置默认
右键旋转
VR-
第一人称
鼠标拾取
分屏
场景截图
调试地形调试--
瓦片调试--
地球颜色--
视图控件导航控件
比例尺
状态栏
时间轴-
数据源在线地图
本地服务
WMTS
历史影像
可视化调整--
常规点标
折线
矩形
双箭头-
多边形
单体化-
平尾箭头-
粒子-
粒子喷射-
平滑多边形
高级路径动画
贴地图元
道路
挡土墙
贴地图像
瓦片数据源在线
本地服务
自定义本地数据
谷歌
编辑分类瓦片
分类地形
样式
移动--
旋转--
视口
科技感-
SkipLOD--
包围盒--
可视化调整
地形数据源在线服务
本地服务
着色按高程
按坡度-
按坡向-
按等高线-
效果地形裁剪
显示地球
地形光照
深度检测
对数深度--
三角网--
地下模式
地表不透明度-
地表透明-
分析测量测量点位
距离
贴地距离
高度
面积
立面面积
模型体积-
方位角-
清除测量
分析剖面分析
通视分析
圆形通视
淹没分析
挖填方分析
可视化压平-
剖切-
挖填-
创建水面-
模型展开-
效果天气太阳
月亮
大气
全屏雾效
星空
天空盒
特效阴影
泛光
景深
轮廓
亮度
黑白
夜视
镜头耀斑
马赛克
强制光照
其他数据GeoJSON
KML
Gzml

竞品

LocaSpaceViewer >免费浏览在线数据和本地模型,加载的本地模型数据量有限。 北京三维远景科技有限公司的产品 跟苏州中科图新网络科技有限公司是同源 toC的云服务产品是wish3d 收费方式是年服务费,每年约6000 免费版不含分析功能,只有测距、标绘

国土空间规划众参系统

一、背景

目前国土空间规划需要采集、综合更全面的社会经济文化信息,使规划成果更具合理性,并能随时掌握已发布规划的实施情况。只有采集更及时的反馈信息,才能为年度规划体检和评估提供更多的信息支撑,从面提升规划成果的合理性、适应性、针对性。众参系统是国土空间规划系统的一部分,为系统提供与公众的信息渠道,建立与公众更紧密的信息沟通方式。为规划编制工作提供了现状信息,为规划公示时征求意见工作提供了便捷的反馈信息,为规划实施阶段提供了更广泛的规划监督信息。同时也能减少各阶段现场调查工作的巨大资源投入。系统能为大众参与国土空间规划工作提供渠道,保障了社会公众的知情权,充分发挥城乡规划作为公共政策体现公众利益的作用,降低规划的社会稳定风险。

二、系统目标

为公众提供国土空间规划公开信息。

公众通过众参系统参与规划,在调查、意见反馈方面,实现及时提供现状、反馈意见、收取回复等。

三、运行环境

  • 角色

    运行在安卓系统、苹果系统的手机上。

  • 系统环境

    运行在安卓系统、苹果系统的手机上。

    服务器运行在公众互联网上,发布WEB服务、WFS服务、实景模型数据服务。

    后台依赖国土空间规划系统的WMS服务。

四、系统结构

  • 网络结构

    PNG

五、关键技术

  • PostgreSQL数据库技术
  • MongoDB数据库技术
  • GeoServer
  • 服务发布技术
  • CesiumJS实景三维显示技术
  • AutoForm自动表单生成技术
  • IONIC+Angular移动端开发平台

六、主要功能设计

6.1 移动端前端设计

PNG

  • 规划展示

    列出所有已公布的规划,采用PDF、图片、二维地图方式展示发布的成果规划、现行规划。

  • 信息发布

    最新的规划相关新闻公告、科普研究、政策法规、规划知识。

    可设置关注,按TAG关键词,在关注页可看到相关信息。

    分页显示:热点页、关注页。

  • 问卷调查

    查看与填写各种调查问卷。

  • 征求意见

    列出收到的规划征求意见邀请。

    点开邀请后,可采用文字、语音、照片信息的形式,进行意见提交。

  • 专项投票

    为某专项的多个备选方案进行投票,如投票选出一种排水系统改造方案。有投票结果查看页面。

  • 选举代表

    为某调查的居民代表人进行投票选举,如投票选出参加某次专项规划坐 谈会的居民代表

    还可以自荐为候选人,发表简短的自荐宣言。。

    有选举结果查看页面。

  • 问题与建议

    显示提交问题、建议的页面,可输入文字、语音、照片信息,点“提交反馈意见”上传输入的信息。

  • 规划现状

    在二维地图、二维影像、三维实景模型上查看自己关注的区域,如自己居住的房屋、自已关心的农田。

    并可输入信息点,提供该点相关的信息,如房屋的居民人口信息等、农田灌溉水源点,信息可以用文字、语音、照片方式提供。

    还可输入信息面,提供该面相关的信息,如休闲活动性质的区域、经济作物区的相关信息、小区域地质灾害信息等。信息可以用文字、语音、照片方式提供。

    公众用户上传的照片数据,程序自动验证GPS信息是否在信息点附近。

    可以指错(纠正已发布的信息)、指认(添加信息)。设置默认视点(一种当前是GPS位置,一种是显示指定的位置,如用户的房屋)

  • 规划现状

    查看、编辑用户个人信息,如姓名、电话、住址、身份证号等。

    查看、清理缓存数据

    查看收藏的信息。

    查看填过的问卷、投过的票、反馈过的意见。

6.2 后端WEB页面功能设计

  • 提供UI给系统管理员,包括:

    发布信息

    发起问卷、发起征求意见、发起专项投票、发起代表选举(填写背景、说明)

    查询统计已提交问卷数量。

    查询统计已提交征求意见的反馈。

    选举投票结果查看(公开的,公众可看)。

    回复建议与问题、地球指认和指错的确认。

    查询统计待处理、已处理的问题与建议。

    提供查询统计结果给规划编制工作。

6.3 系统维护

  • 服务端提供运行维护,包括:

    用户管理

    山维星球数据配置

    添加WMS图层

    天地图图层配置

    自绘EPS矢量图层配置

    实景模型上传

    用户模型数据管理

七、数据结构

  • 规划展示

    需要后台服务器发布WMS服务

  • 信息发布

    在MONGO下存放HTML静态页面,内容为新闻。热点页展示所有新闻的列表,可点开查看其内容。

    每个发布信息都要有TAG字段,检索到公众用户关注包含的TAG时,该新闻列入关注页中,可点开查看其内容。

    可被公众用户收藏(在公众用户数据中存储静态页面唯一、永久地址)。

    含查询添加TAG的子页面

  • 问卷调查

    问卷表单根据后缀为FIELD的JSON配置文件自动生成。

    用户填写的问卷调查结果为JSON文件格式,存入MONGO中,同时自动抽取信息到PostgreSQL中的问卷结果表。

    在MONGO下存放FIELD文件,其文件名也会被记入结果JSON数据中。

  • 专项投票

    在MONGO下存放HTML静态页面,内容为投票页面。

    用户投票结果用JSON文件格式,存入MONGO中,同时更新PostgreSQL中的投票表。

  • 征求意见

    在 MONGO 下存放 HTML 静态页面,内容为征求意见描述。后台可设 置征求对象(用户 id 数组),提供选择用户的功能。

    将用户输入的多媒体反馈数据用 JSON 文件格式,存入 MONGO 中, 将文件 id 写入 PostgreSQL 中的征求意见表。

  • 问题与建议

    打开固定的反馈填写页。

    将用户输入的反馈数据用JSON文件格式,存入MONGO中,将文件id写PostgreSQL中的用户反馈表。

  • 规划现状

    前端展示三维地球,根据手机 GPS 位置显示附近的电子地图、影像 地图、实景模型。

    展示所有其它用户添加的信息(经过后台确认的)。

    添加信息点、面功能,将用户提供的多媒体数据传回后台,写入 PostgreSQL 中的用户标注信息表。只能添加用户相关区域范围内的

众参系统后台

基于EPS Planet山维星球系统架构拓展开发的web后台服务

主要功能

  • 基于json-web-token实现分布式站点的单点登录
  • 基于GeoServer实现OGC服务的管理发布
  • 使用网建SMS短信通SDK实现短信推送,一键登录,警告提醒等
  • 使用MongoDB GridFS进行分布式存储海量数据

运行环境

服务器运行在互联网上,发布服务包括

  • WEB 服务
  • WFS 服务
  • 实景模型文件服务
  • 业务数据服务

系统模块

1.系统管理
  • 用户管理
  • 基础管理
  • 版本管理
  • model图层管理
  • wfs图层管理
2.问卷管理
  • 模板管理
  • 发布问卷
  • 问卷查看
3.信息收集
  • 地图指认列表
  • 地图指认
  • 问题与意见
4.新闻管理

众参系统移动端

使用IONIC+Angular开发的跨平台APP

主要功能

  • 加载后台发布的WMS服务
  • 基于Cesium实现模型,影像等gis数据的加载显示
  • 最新的规划相关新闻公告、科普研究、政策法规、规划知识
  • 列出所有已公布的规划,采用PDF、图片、二维地图方式展示发布的成果规划、现行规划
  • 采用文字、语音、照片信息的形式,进行意见提交
  • 多个备选方案进行投票,如投票选出一种排水系统改造方案
  • 为某调查的居民代表人进行投票选举,如投票选出参加某次专项规划坐
  • 使用ant-designUI构建后台管理界面

程序截图

农房核查项目介绍

背景

为加快宅基地和集体建设用地使用权确权登记,北京山维科技股份有限公司推出“EPS农房不动产外业调绘系统”(以下简称“农房平板”),满足不动产确权登记中的权籍调查、不动产测量等工作。 系统依据《不动产登记暂行条例》、《不动产登记数据库标准》、《不动产权籍调查技术方案》和《不动产登记数据库整合技术规范》等相关规范标准,针对不动产确权登记的工作内容,定制了农房平板的功能,包括:内外业数据转换;宗地、房屋权属信息调绘录入;证件拍照、识别;房屋样本拍照;指界电子签章、视/音采集管理;GPS定位轨迹;草绘、标注及图属修改;影像叠加及权调信息二维码化等。 该系统应配合“EPS农房不动产权籍系统”(以下简称“内业端”)进行使用。

系统组成

  • 农房平板APP
  • EPS农房不动产权籍系统

运行环境

  • Android平板

软件使用

  • 网络下载apk安装包
  • 安装并启动软件APP
  • 申请设备授权
  • 授权完毕开始使用

技术路线

农房核查APP

在云南地质项目的外业采集APP的基本框架上开发的农房核查APP

主要功能

  • 内业数据同步
  • 正射影像加载
  • 地物图形属性编辑
  • 房屋,宗地,权属信息录入

配置说明

程序截图

在线授权服务

golang开发的web服务,数据持久层使用xorm+sqlite3,提供restful接口以及web管理界面

使用

1.客户端启动时使用设备唯一标识调用授权检测接口

2.如果设备未注册,则提示注册并自动授权30天体验期

3.如果设备已注册但超过了授权有效期,则提示授权过期并提示销售人员信息

4.如果设备已注册并在授权有效期内,则通过检测函数正常运行客户端软件

应用

  • 农房核查APP
  • 模型浏览平台

主要功能

  • 销售人员管理
  • 设备管理
  • 授权管理
  • 数据统计

系统介绍

智迩CheerOcean平台是一提升运维效率的服务器管理解决方案,可以方便高效的管理集群节点中服务及配置

标识应用组件应用说明
智迩CheerOcean平台主机nginx平台web端
时序数据库TDengine集群节点实时消息刷新(比如硬件信息、节点存活状态以及后续需要的各种时序数据)
后台服务server后台处理程序
节点机代理(Agent)probe节点客户端信息采集程序
全文索引数据库Elasticsearch日志过滤、搜索和显示
关系型数据库MySQL平台操作关系型数据存储库
JRE运行时环境JavaES安装和运行需要Java开发环境

应用组件

web端

使用vue+ant-design的web管理界面,使用echarts进行图表展示

服务端主体程序

服务端web程序,采用模块化的功能开发以及license授权机制进行分发控制,支持任意功能组合以及节点数限制

License服务

随主程序启动,根据机器码解密license文件并解析为模块配置等元信息,作为api中间件进行服务控制

探针程序

探针程序由服务端程序分发至节点机器,经预设的配置运行,主程序通过grpc连接探针服务

JMX代理

jmx代理程序,服务端主程序启动时连接程序,通过grpc与主程序交换数据,通过jmx来管理和监控Tomcat,JBoss,WebLogic等服务(JMX服务是JDK官方提供的Java程序性能监控程,提供网络、API、客户端三个层次的调用)

TDengine

开源时序数据库,用于存储节点机器中采集的指标和资源(cpu,mem,io)以及节点存活状态等大量时序指标

Elasticsearch

开源全文搜索引擎,主程序连接日志文件汇总,用于节点日志检索分析 Elasticsearch是一个建立在 Apache Lucene 基础上的实时的分布式搜索和分析引擎,是基于Lucene实现的、当今最先进,最高效的全功能开源搜索引擎框架。分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。实时分析的分布式搜索引擎。可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。考虑到elasticsearch的可扩展性和全文索引,选择ES作为平台实时搜索数据库。 通过在节点机器上运行的探针程序持续搜集到的一些信息到主服务程序处理后给elasticsearch建立全文索引,通过过滤关键字索引后,按照平台上人性化定制的日志输出格式给客户展示。 因为elasticsearch安装和运行依赖Java环境,所以需要在ES服务器上安装Java运行时环境。

MySQL

服务端主程序关系数据存储

License设计

license验证(随程序启动,调用inotify监控)

  • 获取服务器机器码
  • 读取license文件
  • 以机器码为key解密license文件(aes-256)
  • 解密信息并解析为节点总数,订阅模块等元信息

license生成

  • 输入机器码
  • 输入各个模块的开启状态过期时间等信息
  • 将输入的信息转换为预定义的结构体
  • 以机器码为key加密并生成license文件,文件名为输入的机器码,后缀名为license,二进制格式.

项目介绍

EdgeLog

产品简介

EdgeLog是一款小巧且功能干练实用的日志系统(集成报警)。采用C/S模式,拥有优秀写入速度、可存储容量高,占用资源少,部署维护成本低等特性。其诞生的目的就是为了解决在企业业务中,避免为日志系统投入过多的使用和运维成本(ELK)。 水平可扩展、高可用、多租户日志聚合系统。它的设计非常具有成本效益且易于操作。 采用简单的设计做日志系统最本质的事情。以系统高效稳定运行、低使用成本及服务运维成本为目标。 目前已经过上百TB数据写入稳定性验证,不足之处目前探针只支持linux系统, 后期可自行定制探针

模块介绍

  • 监控管理模块 监控管理模块包括主机监控和Agent探活检测。 主机监控主要监控受管主机的资源占用情况,监控主机的资源指标包括CPU利用率、CPU平均负、内存使用率、硬盘分区使用率、网络接收和发送情况; Agent探活检测主要检测agent存活状态以及监控主机上的应用在线与否状态 二、Nginx日志管理模块 Nginx日志管理模块包括日志检索分析、日志模板管理、采集节点管理。 日志检索分析显示节点nginx应用日志经过聚合计算后的各个指标数据,依次是独立访问IP统计、流量统计、状态码统计、请求资源统计 ;日志模板管理展示系统已经存在的日志模板列表信息;采集节点管理提供用户自行管理可以纳入系统管理平台的节点 三、预警管理模块 预警管理模块包括预警统计、预警通知、预警阈值设置、预警推送管理。 预警统计可以统计总共的告警数量和详细的CPU告警、内存告警、agent离线告警数量,并以图表的形式动态展示; 预警通知是显示系统平台搜集到的预警信息,管理员可以点击具体的预警查看详细情况;预警阈值设置方便管理员直接设置告警的阈值, 相关指标达到此阈值后就产生告警信息;预警推送管理通过邮件、企业微信、钉钉将告警信息推送给相关人员 四、监控大屏模块 此模块是按照多数企业关心的业务指标集成在可视化大屏展示,方便企业管理人对应用状态以及企业实际业务指标更加清晰,也可以按照不同企业的需求定制不通视角的大屏

Feature

  • 系统的版块可横向扩展,保证高可用,高性能,高容量。
  • 功能设计稳定,网络带宽占用可控,内存占用低。
  • 方便易操作的后台管理页面,让查询日志和配置管理都很高效。
  • 依赖国产TDengine数据库实现秒级数据收集,收集并存储海量数据指标
  • 支持额外的查询信息,比如 地域、状态码、ClientIP、多级条件等联合查询筛选。
  • 报警模块,支持日志直接报警,可轻松制定关键词,报警频率,灵活开关,可实现多种报警方式(目前支持DingDing,Weixin,Email)。
  • 部署简单,依赖少,支持Docker快捷部署,开箱即用。

Grafana 支持

基础模块

├─监控管理
│  ├─主机监控
│  ├─Agent监控
├─预警管理
│  ├─预警统计
│  ├─预警通知
│  ├─预警阈值设置
│  ├─预警推送管理
├─主机应用管理
│  ├─主机管理
│  ├─应用管理
├─系统管理
│  ├─个人中心
│  ├─用户管理
│  ├─角色管理
│  ├─部门管理
│  ├─岗位管理
│  ├─请求追踪
│  ├─系统日志
│  ├─系统订阅
│  ├─系统固件设计

拓展模块

├─Nginx日志管理
│  ├─日志模板管理
│  ├─采集节点管理
│  ├─日志检索分析
│  ├─监控大屏
├─NginxPlus日志管理
│  ├─...
├─Apache日志管理
│  ├─...
├─Tomcat日志管理
│  ├─...
├─...

程序截图

系统介绍

[未来社区数据中台]蓝鲸数据中台为客户统一采集同步各业态的数据,提供统一的数据模型和指标管理,降本增效。无需代码,界面化配置多种数据源的灵活接入。可视化的作业管理、编辑,降低开发门槛低。

API发布管理

从平台数据源中发布接口供外部接入使用. 通过浏览器端界面选择,配置接口路径\数据源\表字段等属性生成RESTFUL接口. 接口调用支持字段过滤\字段排序\条件查询\模糊查询\分页查询等. 针对发布的接口提供管理功能,包括跨域\超时\签名\黑白名单\上下线\动态限流\调用日志等.

蓝鲸数据中台为客户统一采集同步各业态的数据,提供统一的数据模型和指标管理,降本增效。无需代码,界面化配置多种数据源的灵活接入。可视化的作业管理、编辑,降低开发门槛低。

调用方式

管理平台注册的所有API均使用HTTPS GET方式调用,在调用时,需要在Header中传递调用凭证{appKey},其它所有参数均放在请求头url中.

关键字描述
API网关{服务地址}
传输方式为保证接口安全性,建议采用HTTPS传输
请求方式采用GET方法发送请求
数据格式JSON格式(application/json)
调用凭证在Header中以appKey: {appKey} 传递

必填请求参数

目前有 1 个必填请求参数,即在请求Header中传递接口签名

示例
curl -H "appKey: {appKey}" --request GET "{服务地址}/{apiPath}"

可选请求参数

1.分页

在请求url中传递pageNum(默认值1),pageSize(默认值10),目的是在自定义数据发布中进行分页查询

示例
curl -H "appKey: {appKey}" --request GET "{服务地址}/{apiPath}?pageNum=1&pageSize=10"

2.字段查询

在请求url中用以下格式传递,目的是在自定义数据发布中进行条件查询

格式描述逻辑
where_{field}=xxx精确查询... where field = 'xxx'
where_like#_{field}=xxx右端模糊查询... where field like 'xxx%'
where_#like_{field}=xxx左端模糊查询... where field like '%xxx'
where_#like#_{field}=xxx两端模糊查询... where field like '%xxx%'
custom=true&condition=to_base64(xxx)自定义查询条件... where from_base64(xxx)

解析优先级: 精确查询>模糊查询>自定义查询.{field}表示表字段,to_base64(xxx)表示将xxx进行base64编码,from_base64(xxx)表示将xxx进行base64解码

示例
curl -H "appKey: {appKey}" --request GET "{服务地址}/{apiPath}?{field}=xxx"

调用返回

1.API调用成功时返回格式为

{ "code": 0, "msg": null, "data": "xxx", "failed": false, "success": true }

其中code为返回码,成功时固定为0,data为API调用返回的实际内容

2.API调用失败时,返回格式为

{ "code": xx, "msg": "xxx", "data": "xxx", "failed": true, "success": false }

其中,code为返回码,msg为错误信息。

伟创生产系统功能设计清单

数据库

  • 数据库设计与搭建,根据业务需求,设计数据库结构,确定表的属性、关系和约束等。搭建数据库,设置用户权限,保障数据安全和可靠性。
  • 数据库管理,对数据库进行管理,包括备份、恢复、性能优化、容量规划等操作。对数据库进行监控,实时检测数据库的运行状态,及时发现和处理故障和异常。
  • 数据维护,对数据库中的数据进行维护,包括数据的增删改查、数据的导入导出、数据的清洗和归档等操作。对数据库中的数据进行验证和校验,确保数据的准确性和一致性。
  • 数据分析,利用数据库中的数据进行分析,包括数据挖掘、统计分析、机器学习等操作。实现数据可视化,将分析结果以图表、报表等形式呈现,帮助决策者进行业务决策。
  • 数据共享,实现数据共享,将数据库中的数据对外提供,包括数据服务、API等形式。对共享数据进行管理,确保数据的安全性和合法性,避免数据泄露和滥用。
  • 数据库扩展,根据业务需求,对数据库进行扩展,包括添加新表、新字段、新关系等。对扩展后的数据库进行测试和验证,确保新功能的稳定性和可靠性。

以上是关于业务数据库搭建的功能描述,包括数据库设计、表结构设计、数据管理和数据安全等方面。在数据库搭建过程中,应该根据实际业务需求,合理设计数据库的结构和功能,保证数据库的性能和可靠性,同时确保数据的安全性和保密性,提高数据库的管理效率和应用价值。

用户权限管理

  • 用户管理:管理员应该能够创建、编辑和删除用户帐户,并为每个用户分配适当的角色和权限。
  • 角色管理:管理员应该能够创建、编辑和删除角色,并将不同的权限分配给不同的角色。例如,管理员、普通用户、游客等。
  • 权限管理:管理员应该能够定义不同的权限,并将它们分配给不同的角色。例如,读取、写入、删除、导出等。
  • 用户认证:系统应该能够验证用户的身份和权限,以确保只有经过授权的用户才能访问受限制的数据和功能。
  • 访问控制:系统应该能够限制用户对数据和功能的访问权限。例如,只允许经过授权的用户查看和编辑特定的数据。
  • 审计日志:系统应该能够记录用户对系统的访问和操作,以便管理员可以随时审查用户的行为并监控潜在的安全问题。
  • 密码策略:系统应该能够强制实施强密码策略,如密码长度、字符类型、过期时间等,以确保用户账户的安全性。
  • 多因素认证:系统应该支持多种认证方式,如密码、指纹、短信验证码等,以提高系统的安全性。

以上是用户权限管理的一些基本功能,根据具体的应用场景和需求来制定更加细致的权限管理策略。

日志管理

  • 登录日志,系统应该记录所有用户的登录操作,包括用户名、登录时间、登录IP地址等信息。系统应该能够根据时间范围、用户角色、登录IP等条件查询相关的登录日志信息。
  • 用户操作日志,系统应该记录所有用户的操作行为,包括新增、修改、删除等操作,以及操作时间、操作人员、操作类型、操作对象等信息。用户操作日志的目的是为了监控系统的使用情况,及时发现异常操作行为,保障系统安全性和数据可靠性。系统应该能够根据时间范围、用户角色、操作类型等条件查询相关的用户操作日志信息。
  • 系统日志,系统日志应该记录系统的运行状态、错误信息、异常情况等信息,以便于管理员对系统进行监控和维护。系统日志应该包括系统启动日志、异常日志、警告日志、错误日志等类型,以方便管理员对日志信息进行分类和分析。系统应该能够根据时间范围、日志类型、错误等级等条件查询相关的系统日志信息。

以上是关于登录日志、用户操作日志和系统日志的功能描述。软件系统应该能够支持三种类型日志的记录、查询、分析和报警等功能,以提高系统的可靠性和安全性,保障用户数据和信息的安全。同时,系统应该保证日志信息的完整性和不可篡改性,确保记录的操作信息真实可信,有助于管理人员进行分析和决策。

对接金蝶ERP

  • 获取销售订单数据,通过金蝶ERP系统的API接口获取销售订单的数据。确定数据的格式和内容,包括销售订单号、客户名称、产品信息、数量、价格等。
  • 数据校验和处理,对获取到的销售订单数据进行校验和处理,确保数据的准确性和完整性。如有异常数据,进行异常处理,包括错误提示、数据修正等。
  • 数据转换和映射,对销售订单数据进行转换和映射,将金蝶ERP系统中的数据转换为系统能够处理的格式和内容。如有必要,对销售订单数据进行数据清洗和加工,以符合系统的要求。
  • 订单创建和更新,根据转换后的数据,自动创建或更新销售订单信息。系统需要能够支持订单状态的更新,以及数据的查看和导出。
  • 销售订单回传,对销售订单的处理结果进行回传,确保金蝶ERP系统中的销售订单数据和系统中的销售订单数据一致。回传数据包括订单号、处理状态、处理结果等。

文档管理

  • 文件上传功能,允许用户选择文件并将其上传到应用程序中。检查文件大小、类型和格式,以确保它们符合应用程序的要求。为每个上传的文件生成一个唯一的标识符,以便在需要时能够轻松地检索和识别文件。将文件保存到服务器的指定位置,并确保文件在存储过程中保持完整和安全。向用户提供上传进度条和状态信息,以便他们可以跟踪文件上传过程。
  • 文件下载功能,允许用户选择要下载的文件,并将其下载到本地设备上。检查用户的权限,以确保他们有权访问和下载该文件。将文件从服务器下载到用户的本地设备上,同时保持文件完整和安全。提供下载进度条和状态信息,以便用户可以跟踪文件下载过程。
  • 文件权限控制功能,根据用户角色或组设置文件访问权限,以确保只有授权用户可以访问和下载文件。支持对每个文件或文件夹设置不同的访问权限。提供权限管理界面,以便管理员可以轻松地为用户或组分配或取消文件访问权限。记录文件访问和下载日志,以便管理员可以随时查看和审计文件访问历史记录。

查询体系

  • 客户查询:用户可以通过该功能查询客户基本信息,包括客户名称、联系人、联系方式等。可以根据关键字、客户类型、客户状态等条件进行查询,也可以导出客户列表。
  • 订单查询:用户可以通过该功能查询订单信息,包括订单编号、客户名称、订单状态、订单金额等。可以根据关键字、订单状态、下单时间等条件进行查询,也可以导出订单列表。
  • 原料查询:用户可以通过该功能查询原料信息,包括原料名称、规格、生产厂家、库存数量等。可以根据关键字、原料类别、库存数量等条件进行查询,也可以导出原料列表。
  • 综合查询:用户可以通过该功能进行多条件组合查询,比如根据订单编号和客户名称查询订单信息,根据原料名称和生产厂家查询原料信息等。用户可以自定义查询条件和显示字段,也可以导出查询结果。

以上功能描述仅为参考,实际系统设计中需要根据具体业务需求进行调整和补充。

生产看板

  • 实时数据展示:该功能用于实时展示生产线上各种关键指标的数值,如产量、生产效率、设备运行状态等。这些数据通常以图表、数字、文字等形式展示在大屏幕上,便于生产管理人员快速了解生产情况。
  • 异常预警功能:生产看板模块还可以通过数据分析和算法模型,实现异常预警功能,及时发现生产线上可能出现的问题,避免生产线发生停机等严重后果。例如,通过设备运行状态监测,发现设备出现异常,自动触发报警,提醒维护人员及时进行处理。
  • 生产排程展示:该功能用于展示生产计划和生产排程,包括各个工序的开始时间、结束时间,生产进度等信息,帮助生产管理人员及时了解生产进度,避免生产延误或者过度生产造成资源浪费。
  • 物料配送展示:该功能用于展示生产线上各个工位的物料配送情况,包括物料名称、配送时间、配送数量等信息。生产管理人员可以通过该功能快速了解物料使用情况,及时调整物料配送计划。
  • 生产效率评估:该功能用于评估生产线的生产效率,比如通过设备运行时间、停机时间等数据进行分析,计算生产效率并展示在大屏幕上,帮助生产管理人员及时发现生产效率低下的问题,并采取措施进行改进。
  • 安全监测:生产看板模块还可以与安全监测系统对接,实现安全监测功能,如气体检测、温度监测等。当检测到异常情况时,生产看板模块会自动触发报警,并向管理人员发送警报信息,避免生产过程中出现安全事故。
  • 多屏展示:为了方便生产管理人员在不同场合下的使用,生产看板模块可以支持多屏展示,将生产数据以不同形式呈现在不同的大屏幕上,满足不同的展示需求。

软件系统设计中的生产看板模块通常用于实时展示生产线的各项指标,帮助生产管理人员及时了解生产情况,发现问题并采取相应的措施

转盘盘

玩具项目,没有接入后台服务

拼字字

将 scrabble 项目移植到微信小程序平台开发测试,基于 node 服务实现线上联机。未发布。

开发工具集

基于 spring-shell 开发的交互式 CLI 程序,可以轻松拓展功能模块,适应突发需求。

功能 | Features

1. 阿里云 OSS 存储

  • 上传本地文件夹到 OSS 存储
  • 下载 OSS 存储到本地

2. GridFs 存储

  • 保存本地文件夹到 GridFs 存储
  • 根据正则表达式匹配文件并下载到本地
  • 下载顶层数据(b3dm)到本地
  • 选择 Mongo 库提供 HTTP 访问服务
flowchart TD
    D[本地文件夹] -->|保存| E[GridFs 存储]
    E -->|匹配正则| F[下载文件]
    E -->|下载顶层数据| G[b3dm 文件]
    H[Mongo 库] -->|HTTP 访问| E

3. JSON 格式化

  • 选择文件夹格式化所有 JSON 文件
  • 选择文件夹压缩所有 JSON 文件

4. JS 压缩混淆加密

  • 选择文件夹以及处理模式,备份并处理文件夹中所有 JS

5. ZKFinger

  • 中科慧指 SDK 的使用

截图 | Screenshot

  • 合理的利用线程池,充分利用计算机资源

check_server

监测提醒程序,根据配置文件检测指定服务,如果服务异常或服务状态在预期外则针对该服务发出通知

配置文件说明

{
    "sms": {                                        //阿里云短信服务参数
        "ak": "********",
        "sk": "********",
        "singName": "********",
        "templateCode": "********"
    },
    "http": [
        {
            "name": "gitlab",                       //服务名称
            "address": "http://gitlab.sunwaywh.top",//服务地址
            "interval": 600,                        //检测间隔(秒),默认60
            "expect": [                             //预期状态码
                200,
                301
            ],
            "phones": [                             //接收通知手机号
                "15272829933",
                "13554122184"
            ]
        },
        {
            "name": "doc",
            "address": "http://doc.sunwaywh.top",
            "expect": [
                200
            ],
            "phones": [
                "13554122184"
            ]
        },
        {
            "name": "index",
            "url": "http://www.sunwaywh.top",
            "expect": [
                200
            ],
            "phones": [
                "15272829933"
            ]
        }
    ],
    "tcp": [
        {
            "name": "mysql",
            "address": "106.13.18.102:3306",
            "phones": [
                "13554122184",
                "15272829933"
            ]
        },
        {
            "name": "mongodb",
            "address": "106.13.18.102:27017",
            "phones": [
                "13554122184",
                "15272829933"
            ]
        }
    ]
}

code_translate

代码翻译工具,使用第三方翻译 api 将代码中的中文翻译为英文

安装和使用 | Install && Usage

# go install
# code_translate -cp ./test -cs .go -ai ************** -ak ************** -tm 1
mode1(all) => test/test.go
模块相关事件执行顺序 -> Execution sequence of module related events
服务端 -> Server
启动服务 -> Start service
停止服务 -> Out of Service
客户端 -> client
客户端启动 -> Client startup
客户端处理消息 -> Client processing messages
客户端处理错误 -> Client processing error
客户端关闭 -> Client shutdown

选项 | Option

  -ai string
        appid
  -ak string
        appkey
  -cp string
        code path (default ".")
  -cs string
        code suffix
  -tm int
        translate mode:
        0(default)->translate notes only
        1->translate all

依赖项 | Dependencies

代码统计 | Code statistics

===============================================================================
 Language            Files        Lines         Code     Comments       Blanks
===============================================================================
 Go                      6          462          395           26           41
===============================================================================
 Total                   6          462          395           26           41
===============================================================================

logo_generate

logo 生成工具,解析 ttf 字库生成个性化 logo。

用法和参数

USAGE:
      logo_generate [OPTIONS] "LOGO"
OPTIONS:
      -f string
            输出格式 svg|jpg|png|ascii (default "svg")
      -fs string
            指定字体风格 atiba|blox|organ|panda|xtrusion (default "atiba")
      -o string
            保存路径 (default ".")
      -r int
            排列方向 (0:horizontal,1:vertical,2:cover)
      -s int
            字体大小,范围限制在 24~1024 (default 24)
      -sp int
            字体间距 (default 1)
      -split
            是否拆分到多个文件
      -ss string
            svg css样式
      -ttf string
            指定字体文件

内置字体风格

风格示例
atiba
blox
organ
panda
xtrusion

示例

./logo_generate  -fs "organ" -ss "fill:#186A3B;fill-rule:evenodd;stroke-width:1;stroke:#1B2631" -s 128 EDGELOG
./logo_generate -f "ascii" LOGO

 |||                        +|||||+                     +||||||             +|||||+
 |||                       |||||||||                  |||||||||            |||||||||
 |||                      |||||++||||               +|||||||||+           |||||++||||
 |||                     +|||     |||+             +||||+                +|||     |||+
 |||                     |||       |||            +|||+                  |||       |||
 |||                     ||+       +||+           |||+                   ||+       +||+
 |||                    +||+       +||+          +|||                   +||+       +||+
 |||                    +||+       +||+          |||                    +||+       +||+
 |||                    +||+       +||+          |||                    +||+       +||+
 |||                    +||+       +||+          ||+                    +||+       +||+
 |||                    +||+       +||+         +||+        +++         +||+       +||+
 |||                    +||+       +||+         +||+        |||         +||+       +||+
 |||                    +||+       +||+         +||+        |||         +||+       +||+
 |||                    +||+       +||+         +||+        |||         +||+       +||+
 |||        +||         +||+       +||+         +||+        |||         +||+       +||+
 |||        |||          ||+       +||+         +||+        |||          ||+       +||+
 |||       +|||          |||       |||          +||+        |||          |||       |||
 |||      +|||+          +|||     |||+          +||+        |||          +|||     |||+
 ||||||||||||+            |||||++||||           +||||||||||||||           |||||++||||
 |||||||||||+              |||||||||            +||||||||||||||            |||||||||
 |||||||||+                 +|||||+             +||||||||||||||             +|||||+

meet_lang

基于 vite+react 开发的相亲出游计划,依赖 百度地图 sdk

配置 | Configuration

系统配置

通过编辑 public/config.json 配置系统信息。文件内容应为如下 Config 对象

密钥可去百度地图开放平台官网申请

export interface Config {
  // 页面标题
  Title: string;
  // 百度地图应用密钥
  BmapAk: string;
  // 静态资源路径
  ResourcePath: string;
}

旅行路线配置

通过编辑 public/trips.json 配置旅行路线。文件内容应为如下 Trip 数组

export interface Trip {
  // 行程描述
  Describe: string;
  // 出发地信息
  FromInfo: string;
  // 出发地名
  FromName: string;
  // 出发地经度
  FromLng: number;
  // 出发地纬度
  FromLat: number;
  // 到达地对应场景数组下标,没有对应场景则为-1
  FromScneeIdx: number;
  // 到达地信息
  ToInfo: string;
  // 到达地名
  ToName: string;
  // 到达地经度
  ToLng: number;
  // 到达地纬度
  ToLat: number;
  // 到达地对应场景数组下标,没有对应场景则为-1
  ToScneeIdx: number;
}

场景配置

通过编辑 public/scenes.json 配置场景信息。文件内容应为如下 Scene 数组

export interface Scene {
  // 场景名称
  Name: string;
  // 图片url
  Images: string[];
  // 评分
  Score: number;
  // 位置
  Position: string;
  // 经度
  Longitude: number;
  // 纬度
  Latitude: number;
  // 运营时段
  TimeInterval: string;
  // 联系方式
  Contact: string;
  // 来源
  SourceUrl: string;
}

jar_pack

一个基于 Golang embed 打包自定义的 JRE 和 JAR 文件的跨平台打包工具,方便打包 JAR 程序进行二进制分发。

系统架构

graph TD;
    A[jar_pack 工具] --> B[准备 JRE]
    A --> C[准备 JAR]
    A --> D[编译]
    B --> E[JRE 目录]
    C --> F[JAR 文件]
    D --> G[输出二进制文件]
    E --> H[嵌入 JRE]
    F --> H[嵌入 JAR]
    G --> H[生成可执行文件]

使用示例(Java 8 版本环境打包到 Linux x86 下运行)

步骤 1: 准备指定版本以及系统的 JRE

从 Azul 下载并解压到 /jre 目录下。

步骤 2: 准备需要打包的 JAR

将 JAR 重命名为 app.jar

mv your-app.jar app.jar

步骤 3: 打包 Java 程序依赖的本地库

将本地库文件解压到 /lib 目录下。(可选)

mv xxx.dll lib/
mv xxx.so lib/

步骤 4: 编译

GOOS=linux GOARCH=amd64 go build -o app

运行

运行 ./app 或者指定 JVM 参数运行 ./app --spring.config.location=./application.yml

Windows 系统特殊说明

使用 rsrc 工具嵌入图标

  • 查找并保存 favicon.ico 图标到程序同级目录。
  • 新建程序描述文件 app.manifest,写入以下内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
    <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="SomeFunkyNameHere" type="win32"/>
    <dependency>
        <dependentAssembly>
            <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
        </dependentAssembly>
    </dependency>
    <asmv3:application>
        <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
            <dpiAware>true</dpiAware>
        </asmv3:windowsSettings>
    </asmv3:application>
</assembly>
  • 生成资源嵌入文件 rsrc.syso
rsrc -manifest app.manifest -o rsrc.syso -ico favicon.ico
  • 编译时隐藏黑窗口:
go build -ldflags "-s -w -H=windowsgui"
  • 双击 exe 文件即可运行。

剪裁 JRE

Java 9 引入的一项功能,用于创建自定义的 JRE。这个自定义 JRE 只包含应用程序运行所需的模块,从而减少了体积。

分析依赖

使用 jdeps 工具分析 JAR 文件,确定需要的模块。假设你的应用程序 JAR 文件名为 app.jar

jdeps --list-deps app.jar

创建自定义 JRE

根据 jdeps 的输出,使用 jlink 创建自定义 JRE。例如,假设你的应用程序需要以下模块:

jlink --module-path $JAVA_HOME/jmods --add-modules java.base,java.logging --output custom-jre

运行原理

$JAVAW||$JAVA -Djava.library.path=$LIB -jar $JAR $ARGS...

工作流程

sequenceDiagram
    participant U as 用户
    participant J as jar_pack
    participant F as 文件系统
    U->>J: 准备 JRE
    J->>F: 解压 JRE 到 /jre 目录
    U->>J: 准备 JAR 文件
    J->>F: 移动 JAR 文件到 /app.jar
    U->>J: 准备本地库
    J->>F: 移动本地库到 /lib 目录
    U->>J: 编译项目
    J->>F: 生成可执行文件 app
    U->>J: 运行 app
    J->>J: 嵌入 JRE 和 JAR
    J->>F: 输出可执行文件

水印助手

用于高效处理图片水印的 GUI 工具,基于 walk 实现 Windows GUI 界面,使用 imaging 进行图像处理。

使用

  1. 启动程序:双击运行程序,打开主界面。
  2. 添加图片:点击 "添加" 按钮或将文件/文件夹拖放到任务列表。
  3. 选择水印:选择水印图片文件,配置位置、大小、透明度等参数。
  4. 实时预览:实时预览水印效果,调整参数直到满意。
  5. 执行操作:点击 "开始" 按钮,程序会在后台多线程处理任务。
  6. 完成通知:任务完成后,程序会弹出通知。

编译

确保已安装 Golangrsrc 工具,然后按照以下步骤操作:

rsrc -manifest main.manifest -ico watermark.ico -o rsrc.syso

go build -ldflags="-H windowsgui"

依赖项 | Dependencies

下载

chatgpt_proxy

chatgpt 代理工具, 将 chatgpt 的能力拓展到钉钉机器人, 微信客服等平台。

编译 | Build

go build

参数 | Arguments

参数说明默认值
-h帮助
-p服务端口9999
-ckchatgpt 密钥
-cmchatgpt model 参数"text-davinci-003"
-cmtchatgpt max_tokens 参数512
-cstchatgpt 会话超时时间360
-ctchatgpt temperature 参数0.9
-wa微信对话开放平台 开放 API APPID
-we微信对话开放平台 开放 API Encoding AESKey
-wt微信对话开放平台 开放 API Token

依赖项 | Dependencies

sequenceDiagram
    participant User as 用户
    participant WeChat as 微信/钉钉
    participant Proxy as chatgpt_proxy
    participant OpenAI as OpenAI API

    User->>WeChat: 发送消息
    WeChat->>Proxy: 转发消息
    Proxy->>OpenAI: 请求 ChatGPT 服务
    OpenAI-->>Proxy: 返回响应
    Proxy-->>WeChat: 转发响应
    WeChat-->>User: 返回 ChatGPT 回复

用户设备

  • 用户通过微信或钉钉发送消息。

微信/钉钉平台

  • 微信对话开放平台和钉钉开放平台接收用户消息,并转发至 chatgpt_proxy 服务。

chatgpt_proxy 服务

  • HTTP 服务器:接收来自微信/钉钉平台的消息。
  • 路由器:将消息路由到相应的处理器。
  • 处理器:处理消息,并向 OpenAI API 发送请求。
  • 日志服务:记录系统运行日志和请求日志。
graph TD
    subgraph 用户设备
        A[用户]
    end

    subgraph 微信/钉钉平台
        B[微信对话开放平台]
        C[钉钉开放平台]
    end

    subgraph chatgpt_proxy 服务
        D[HTTP 服务器]
        E[路由器]
        F[处理器]
        G[日志服务]
    end

    subgraph OpenAI 平台
        H[OpenAI API]
    end

    A -->|发送消息| B
    A -->|发送消息| C
    B -->|转发消息| D
    C -->|转发消息| D
    D --> E
    E --> F
    F -->|请求处理| H
    H -->|返回响应| F
    F -->|记录日志| G
    F --> E
    E --> D
    D --> B
    D --> C
    B -->|返回消息| A
    C -->|返回消息| A

Gct

AI 生成 Git 提交消息的命令行工具。

功能 | Features

  • 基于 Gemini Api 根据 Git 差异生成提交消息。
  • 提供交互式命令行界面,带有清晰的指导。
  • 支持多种语言的提交消息

系统架构

graph TD;
    A[Git 提交消息生成器] --> B[Gemini API]
    A --> C[用户输入]
    A --> D[Git 差异]
    B --> E[AI 生成消息]
    C --> E
    D --> E
    E --> F[提交消息]
    F --> G[Git 提交]

用法 | Use

编译

go build -o gct main.go

运行

运行编译后的二进制文件以启动:

gct

详细模式

gct -v

交互式命令行界面

  • enter 确认并提交
  • r 重新生成提交消息
  • k 设置 API 密钥
  • l 修改使用的语言
  • p 设置网络代理
graph TD;
    A[启动 gct] --> B{选择操作}
    B --> |<kbd>enter</kbd>| C[确认并提交]
    B --> |<kbd>r</kbd>| D[重新生成提交消息]
    B --> |<kbd>k</kbd>| E[设置 API 密钥]
    B --> |<kbd>l</kbd>| F[修改使用的语言]
    B --> |<kbd>p</kbd>| G[设置网络代理]

i18n_gen

使用 DeepL api 生成 i18n json 文件的工具。

Features

  • 针对 i18n-next 格式设计: 识别并保留文本中的占位符
  • 利用 DeepL 服务翻译 JSON 文件中的文本: 保持其结构不变
  • 翻译过程中的异常间隔处理: 保证程序平稳运行

用法 | Use

编译

go build

运行

运行编译后的二进制文件以启动:

i18n_gen [-h] [-server <deeplx_server_addr>] [-token <deeplx_access_token>] [-source <source_language>] <work_dir>

命令行标志

  • -h: 显示帮助信息
  • -server: 设置 DeepL 服务器地址(默认值:http://localhost:1188)
  • -token: 设置 DeepL 访问令牌(可选)
  • -source: 设置源语言(默认值:zh)
  • <work_dir>: 指定包含 i18n JSON 文件的工作目录

依赖项 | Dependencies

其他注意事项

  • 该工具假设 i18n 文件具有特定的 JSON 结构。
  • 参考 DeepL 文档以获取有关其 API 和使用准则的更多信息。
graph TD
    A[用户] -->|命令行| B[主程序]
    B --> C[DeepL API]
    B --> D[JSON 文件处理]
    C --> E[翻译结果]
    D --> F[占位符识别]
    D --> G[文件结构保持]
    E --> H[翻译后的 JSON 文件]

image2webp

用于将指定目录下的图片文件转换为 WebP 的命令行工具

功能 | Features

  • 支持多种图像格式:PNG、BMP、GIF、JPEG、JPG
  • 可调整输出质量(0-100,默认为 70)
  • 可调整图像大小(例如,0.5 表示将图像缩小为原来的一半,默认为 1.0,不调整大小)
  • 并行处理多个图像,提高转换速度,使用进度条显示转换进度

用法 | Use

编译

cargo build --release

运行

# 将 /tmp/images 目录中的图像转换为 WebP 格式,输出质量为 80,图像大小缩小为原来的一半
image2webp --quality 80 --size-factor 0.5 /tmp/images
  • 该应用程序使用 imagewebp 库进行图像处理和 WebP 编码。
  • 对于 GIF 图像,程序将依赖于 ffmpeg 进行转换。
  • 转换后的 WebP 图像的文件名与原始图像相同,但扩展名为 .webp

Shellx

跨平台协作式终端脚本和终端工具,支持 Windows、Mac、Linux 等主流操作系统。

slogan

脚本管理

  • 使用类似 VSCode 的编辑器编写和管理脚本
  • 支持简单拖拽快速执行
  • 保留编辑记录,随时回滚历史版本

script

文件管理

  • 同步当前会话目录
  • 支持文件上传下载

sftp

协作式终端

  • 通过 SSH 连接或浏览器访问目标设备
  • 支持公钥或密码验证
  • 所有验证均在本地进行,不会上传敏感信息

shtris

xianbao

分布式蜜罐系统,模拟常见易受攻击的服务来吸引攻击者,并收集攻击信息。采用模块化设计,支持多种协议和服务,帮助了解攻击者的行为模式。

主要模块

  • 蜜罐服务: 模拟多种服务(如 SSH、Redis、FTP 等),吸引攻击者并上报活动数据。
  • 数据服务器: 接收并分析蜜罐上报的数据,提供攻击趋势统计。
  • Web 界面: 用于管理蜜罐系统和展示统计数据,支持数据浏览和邮件订阅功能。
graph TD
    subgraph 蜜罐服务
        A1[SSH 服务]
        A2[Redis 服务]
        A3[FTP 服务]
        A4[MySQL 服务]
        A5[Telnet 服务]
    end

    subgraph 数据服务器
        B[接收活动数据]
        C[统计与分析]
    end

    subgraph Web 界面
        D[管理系统]
        E[查看统计]
        F[数据浏览]
        G[邮件订阅]
    end

    H[攻击者] -->|攻击| A1
    H -->|攻击| A2
    H -->|攻击| A3
    H -->|攻击| A4
    H -->|攻击| A5

    A1 -->|上报数据| B
    A2 -->|上报数据| B
    A3 -->|上报数据| B
    A4 -->|上报数据| B
    A5 -->|上报数据| B

    B --> C
    C -->|展示数据| D
    C -->|展示数据| E
    C -->|展示数据| F
    C -->|通知| G

Goodcode

代码编辑器插件,使用 ai 帮助提高代码质量和效率。

主要功能

  • AI 驱动的代码优化: 优化您的代码,使其更加清晰、易维护和高效。
  • 交互式聊天界面: 在 VSCode 中与 AI 模型无缝交互,满足各种使用场景。
  • 生成规范的提交信息: 根据更改的代码内容生成规范的提交信息,遵循最佳实践。
  • 支持多种语言: 自定义您首选的语言(英语、中文、西班牙语、阿拉伯语、葡萄牙语、俄语、日语和法语)。
  • 细粒度控制: 调整优化参数,例如温度、top K/P 值和最大输出长度,以获得定制结果。
  • 可扩展功能: 通过命令和菜单轻松与其他工具和工作流程集成。

注意事项

  • 需要提供 Gemini AI 的 apikey
  • 需要正确连接网络才能使用。
sequenceDiagram
    participant User as 开发者
    participant GoodCode as Good Code
    participant AI as AI 模型

    User->>GoodCode: 输入代码
    GoodCode->>AI: 分析代码内容
    AI-->>GoodCode: 返回优化建议
    GoodCode-->>User: 提供智能提示或重构建议
    User->>GoodCode: 选择性应用建议
    User->>GoodCode: 提交代码更改
    GoodCode->>AI: 生成提交信息
    GoodCode-->>User: 显示提交信息并确认

pantou

一个简单的倒计时应用,用于提醒距离特定时间还剩多久

截图 | Screenshot

pantou

jcef_browser

基于 jcef 开发的浏览器应用,用于在定制设备(指定区域、指定尺寸、指定形状)显示数据大屏。

参数说明

-u 或 --url: 要打开的网址,默认为 https://bing.com/
-w 或 --width: 窗口宽度,默认为 800
-h 或 --height: 窗口高度,默认为 600
-x 或 --x: 窗口的 X 坐标,默认为屏幕左上角 (0)
-y 或 --y: 窗口的 Y 坐标,默认为屏幕左上角 (0)
-s 或 --shape:指定窗口的形状。形状由不同的类型和参数组成,格式为以下之一:
  - ellipse:x:y:width:height:指定椭圆的边界矩形的左上角坐标 (x, y) 和椭圆的宽度和高度。
  - polygon:x1:y1,x2:y2,...:指定多边形的顶点坐标。坐标格式为 x1:y1,x2:y2,...,每对坐标用逗号分隔。
  - rounded-rectangle:x:y:width:height:arcWidth:arcHeight:指定圆角矩形的左上角坐标 (x, y),矩形的宽度和高度,以及圆角的宽度 (arcWidth) 和高度 (arcHeight)。

  如果未指定形状,则窗口默认为矩形。

示例用法

  • 打开一个指定网址并设置窗口为 1600 x 900 的矩形:
java -jar jcef_browser.jar -u http://localhost:8084/ui -w 1600 -h 900
  • 椭圆: ellipse
java -jar jcef_browser.jar -u http://localhost:8084/ui -w 1600 -h 900 -s "ellipse:0:0:1600:900"
  • 多边形: polygon
java -jar jcef_browser.jar -u http://localhost:8084/ui -w 1600 -h 900 -s "polygon:50:0,1550:0,1600:50,1600:850,1550:900,50:900,0:850,0:50"
  • 圆角矩形: rounded-rectangle
java -jar jcef_browser.jar -u http://localhost:8084/ui -w 1600 -h 900 -s "rounded-rectangle:0:0:1600:900:50:50"

工作流程

sequenceDiagram
    participant U as 用户
    participant JB as jcef_browser
    participant WM as 窗口管理
    participant BI as 浏览器初始化
    U->>JB: 提供 URL 和窗口参数
    JB->>WM: 创建窗口
    WM->>BI: 初始化浏览器
    BI->>WM: 返回浏览器实例
    WM->>JB: 设置窗口形状
    JB->>WM: 显示窗口
    JB->>U: 输出结果

依赖项 | Dependencies

截图 | Screenshot

使用前

使用后

jarwrap

用于将 Java JAR 文件打包为跨平台可执行文件,支持 windows,macos,linux 操作系统和常见 CPU 架构

jarwrap

主要模块

  • Site 服务 (Next.js): 用户界面交互,提交构建任务到消息队列。
  • Worker (Node.js): 从消息队列中获取构建任务,执行相应的任务逻辑(如构建、上传、生成下载链接)。涉及数据库操作、文件管理、S3、电子邮件发送等功能。
  • Builder (Golang): 基于 Golang 编写的打包程序,使用 Golang embed 功能嵌入 JRE、Native Library、JAR 文件,生成独立的可执行文件。

QShare

基于 Next.js 开发的文件分享平台,允许用户上传、管理和分享文件

graph TD
    subgraph 用户认证
        A[登录]
        B[退出]
    end

    subgraph 文件管理
        C[查看文件列表]
        D[重命名]
        E[复制链接]
        F[复制二维码]
        G[刷新链接]
        H[删除文件]
    end

    subgraph 文件详情
        I[显示二维码]
        J[访问链接]
    end

    subgraph 文件上传和预览
        K[上传文件]
        L[短链分享]
        M[二维码分享]
        N[在线预览]
    end

    A & B --> 用户认证
    C & D & E & F & G & H --> 文件管理
    I & J --> 文件详情
    K & L & M & N --> 文件上传和预览

用户操作流程图

sequenceDiagram
    participant 用户
    participant 客户端
    participant 前端
    participant 后端
    participant 文件存储服务
    participant 数据库

    用户->>客户端: 访问平台
    客户端->>前端: 请求登录页面
    前端->>客户端: 返回登录页面
    用户->>客户端: 提交登录信息
    客户端->>前端: 发送登录请求
    前端->>后端: 验证用户信息
    后端->>数据库: 查询用户信息
    数据库-->>后端: 返回验证结果
    后端-->>前端: 返回登录状态
    前端-->>客户端: 返回登录结果

    用户->>客户端: 上传文件
    客户端->>前端: 发送上传请求
    前端->>后端: 处理文件上传
    后端->>文件存储服务: 存储文件
    文件存储服务-->>后端: 返回存储结果
    后端-->>前端: 返回上传结果
    前端-->>客户端: 返回上传结果

    用户->>客户端: 查看文件列表
    客户端->>前端: 请求文件列表
    前端->>后端: 获取文件列表
    后端->>数据库: 查询文件信息
    数据库-->>后端: 返回文件信息
    后端-->>前端: 返回文件列表
    前端-->>客户端: 显示文件列表

    用户->>客户端: 操作文件(重命名、删除等)
    客户端->>前端: 发送文件操作请求
    前端->>后端: 处理文件操作
    后端->>数据库: 更新文件信息
    数据库-->>后端: 返回操作结果
    后端-->>前端: 返回操作结果
    前端-->>客户端: 返回操作结果

S3Tool

基于 Fyne 开发的跨平台图形界面应用,用于管理与 S3 兼容的对象存储服务


功能概述

  • 多配置管理:支持配置多个 S3 存储服务。
  • 文件上传:支持拖拽上传文件。
  • 轻量级 UI:基于 Fyne 框架,具备简洁直观的用户界面。
  • 跨平台:支持桌面端、移动端和 web。

graph TD
    A[用户] -->|操作界面| B[文件列表]
    A -->|配置界面| C[S3 连接配置]
    B --> D[批量操作]
    B --> E[上传功能]
    B --> F[刷新列表]
    C --> G[Name]
    C --> H[S3 Endpoint]
    C --> I[S3 Bucket]
    C --> J[S3 Region]
    C --> K[Secret ID]
    C --> L[Secret Key]
    C --> M[测试连接]
    C --> N[保存配置]
    D --> O[删除]
    D --> P[下载]
    E --> Q[选择文件]
    E --> R[上传文件]