写一个玩具

写一个玩具

核心理念

  1. 以对话的形式
  2. 用摇签的交互方式
  3. 通过信息掮客赚心里按摩的钱

模型设计

用例图

@startuml
left to right direction
skinparam packageStyle rectangle

actor "求问人" as Seeker
actor "解签人" as Interpreter
rectangle "系统" as System {
  usecase "摇晃手机模拟摇卦" as UseCase1
  usecase "向解签人求问卦象" as UseCase2
  usecase "解签人回答并提供咨询" as UseCase3
}

Seeker --> UseCase1
Seeker --> UseCase2
Interpreter --> UseCase3

@enduml

类图

@startuml
interface Role {
  +interpretation(): String
  +shake(): Yao
}

class Account {
  -name: String
  -role: Role
}

class Interpreter implements Role {
  +interpretation(): String
}

class Seeker implements Role {
  +shake(): Yao
}

class DivinationCup {
  +shake(): Yao
}

class Yao {
  -value: Boolean
}

class Hexagram {
  -yas: Yao[6]
  -interpretation: String
  +getSession(theme: String, account: Account): Session
}

class Session {
  -hexagram: Hexagram
  -interpretationRecord: InterpretationRecord
  -theme: String
  -sender: Account
  -receiver: Account
  +sendToInterpreter(): void
}

class InterpretationRecord {
  -interpreterComments: String
  -question: String
  -theme: String
}

Account --> Role : has
Seeker --> DivinationCup : uses
Hexagram --> Yao : contains
Hexagram --> Session : creates
Session --> InterpretationRecord : records

@enduml


非核心业务需求描述

  1. 使用一套代码支持多种类型程序(小程序、APP、H5等)
  2. 使用相同的业务账户
  3. 将收费项目移到可控代码处

技术选型

业务前端

  1. 目前Taro+Taro-ui
  2. 微信小程序
  3. 原生APP

可控代码后端

  1. 选用Java/Go均可

技术架构一些想到的

技术架构一些想到的

来源

听到了一个关于在AI时代下软硬件架构的挑战以及成功解决的部分场景

思考

所谓的技术架构,总是要考虑当前是什么样的技术架构,在使用了多少资源量下,解决了哪些问题。
技术的更迭也就是,新场景新问题

举个例子

在AI训练的场景下,其特点是,相对较高的延时,巨大的传输带宽,包括硬盘到内存的搬运,内存到现存的搬运。
在单机的情况下,是对PCIE和内存总线提出了新要求。
在分布式场景下,因为巨大的数据交换的消耗,TCP在这种情况下对于分包、重传等维护完整性的机制占用了巨量的CPU资源,还会占用将内存搬运到显存的CPU,使得计算效率下降。
那在这种场景下,就需要新的架构,尽可能的使得各个分系统直连,不需要CPU的参与。比如实现RDMA直通显存。

想到的

分析现状,实事求是,确实在方方面面都是相同的。

一些可以提供的服务思考

一些可以提供的服务思考

技术能力

  1. 软件建模能力,完成过交易平台核心领域建模,完成过SaaS应用市场建模
  2. 软件开发能力,Go、Java、React、Python是我的常用技术栈
  3. 画过网页界面,也画过单机可运行程序
  4. 写过上位机程序
  5. 也能修改硬件程序
  6. 有一部分运维端部署的经验,Nginx,Linux,Windows Server都使用过构建系统

沟通能力

  1. 和供应商扯过皮
  2. 和开发分解过工作
  3. 和测试配和过测试,并且成功上线
  4. 和业务喝过酒,吹过牛,还能砍需求

如何用代码挣钱

  1. 卖知识
    1. 开课?
    2. 开付费渠道?
    3. 做自媒体?
  2. 卖技能
    1. 比如针对特定情况查bug
    2. 部署网络环境
    3. 甚至硬件管控?

交易系统建模

交易系统建模

平台视角

业务域

  • 聚合根
    • 管理员/商家/采购员
    • 询价单
    • 交易订单
    • 交易对手方
    • 交易时间
    • 交易内容
      • 出库单/入库单
      • 库存
      • 批次
      • 数量
    • 履约单
      • 物流单
      • 仓储单
      • 配送单
    • 售后单
    • 摊位信息
    • 图片
    • 简介
    • 商品列表
    • 广告位
    • 结算单

支撑域

  • 技术支撑
  • 外部接入
  • 对外服务

管理域

  • 工单
  • 入驻审核单

建模图片

打家劫舍(4)(2023-09-19)

打家劫舍(4)

题目

沿街有一排连续的房屋。每间房屋内都藏有一定的现金。现在有一位小偷计划从这些房屋中窃取现金。

由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋 。

小偷的 窃取能力 定义为他在窃取过程中能从单间房屋中窃取的 最大金额 。

给你一个整数数组 nums 表示每间房屋存放的现金金额。形式上,从左起第 i 间房屋中放有 nums[i] 美元。

另给你一个整数 k ,表示窃贼将会窃取的 最少 房屋数。小偷总能窃取至少 k 间房屋。

返回小偷的 最小 窃取能力。

题目分析

这里的核心是找到最少能偷的K间房
设x是预设的偷窃能力
f(x)是在x的偷窃能力下,能够偷的房屋
随着x的增大,f(x)总是能保持增加或者相等
我们只需要找到这个搜索能力值,并且满足f(x)正好小于k的情况

自训练

自训练

关键词摘取(国内)

供应链保持稳定
供应链重点技术突破
稳消费

关键词摘取(国外)

粮食
人口迁徙
技术封锁

运维标准化实践

运维标准化实践

现状

运维负责的事项有如下:

  • 维护现网机器运行状态
  • 接收上线单,完成应用上线
  • 对上线脚本进行审核

问题如下:

  • 没有办法对软件提供服务工程提供保证,也就是对外无法承诺时间,对内无法有效的反馈提升软件质量
  • 没有统一的资产管理平台,所有的资产均是通过excel交接
  • 对于流量等缺乏管控工具,无法提供可靠的无感升级以及可能存在的升级致使的事务中断,尤其涉及金融业务

对策

  1. 首先将零散的服务器资产的表格进行汇总,然后建设运维部门的统一管控平台
  2. 对资产进行标准化编号,避免需要运维人员去主动起名字,防止不同运维人员起名不统一
  3. 替换网关,由原来nginx替换为openresty+lua方案,用以解决优雅降级+流量切换
  4. 继续迭代原有账号服务,用来打通网关服务

最终实现效果

运维需要对流量进行控制,包括不限于

  • 能标记具体用户,要控制用户(包括不限于可能的真实环境测试账号)进入的服务器
  • 基于流量控制,能完成优雅降级和无感应用升级

将升级变成流量切换,时间短且可控
部署全部自动化

翻新系统实践

翻新系统实践

基本情况

  • freemark+jsp+java14的怪异组合
  • 有部分内部接口采用feign
  • 大部分接口采用nacos作为profile管理以及服务注册发现
  • 前端部分仅使用了以jquery和easyui为主的插件,工程化程度不高

需求说明

来自于上线时候的苦恼,每次更新代码总会引发未在版本规划内的前端代码提交,且升级时间较长,失败回滚时候还有cache问题

问题分析

  1. 交互代码和逻辑代码均由同一个开发人员完成,此时心智负担较大,在工期较为短的时候,非常容易造成误操作,且只有上线后才能发现
  2. 系统经历了十年左右的开发,每个开发人员有不同的技术栈喜好,例如早期约定使用Spring Cloud的早期版本,而在五年后发现Spring Cloud很多功能又要二次开发,转向了nacos为主的国产。成员变换中不习惯,有部分接口就干脆采取域名+Nginx网关直连的形式
  3. 除此之外业务系统的拧巴逻辑也是翻新的重大障碍

方案选择

经过和开发小组成员讨论,建议先从增量做起,避开旧有尚能完备运行的业务,其中最简单的是需要抽出一个专门的开发人力,进行前端框架的搭建。(目前使用vue2,开发人员易于招聘)

框架需要完成以下几个事项:

  1. 要替换掉原来依靠服务器进行状态管理的现状,将状态管理放在前端
  2. 要将功能路由管理放在前端框架进行管理
  3. 要维护一个列表,标记哪些路由是用于直接走原来的逻辑,哪些路由是新增的有前端管理的逻辑
  4. 需要后端软件新增接口用以维护新旧软件的状态(一次性开发成本)

在前端框架开发完成一个月后,选取更新频率最低的应用作为试点应用,避免与正在开发的任务同时进行

当前后端代码可以剥离完毕后,在考虑后端的技术栈提纯,不应将改造任务混杂

一些结局

  1. 成功改造了从外包厂商回收的代码
  2. 在重要业务中,成功替换了进门抬杆页面的代码
  3. 为后续的业务不中断升级铺平道路

一些好玩的近况

一些好玩的近况

最近出差多,不像在家里,小朋友睡觉了还要顾着点小朋友不能吵醒他。

静下心来最近好多传闻总能扰动心绪,写写文字大概能缓解下。

疫情

消息纷纷扰扰,总有人说要放开,各种奇怪的source,各种传言。虽然在物理上我们真的完全不具备条件去做这个事情,但是满天飞的传言确确实实影响了所有人的。

大概2022年的十月份看到了个对于网络空间信息污染及扭转认知的技术性文章,大概挺有意思的,也是最近这一段时间能反复相互印证的手段。

一旦有了技术性分析,事情本身可能对于我来说更多是高一个维度的观察。

主要的手段有:
1、启用冷藏多年的账号库
2、反复投放Unknown Source Speak
3、内容在普遍意义上符合一定的诉求
4、反复多账号打榜,人为攻击社交网络体系,使得本不值得讨论的问题成为了一个讨论的问题
5、一旦出现官方辟谣,一定会转为以傻子为节点的传谣

工作

加入现在的公司应该快满两年了。贡献给公司的代码是越来越少了,大部分让我还能使用编程能力都是为了我自己的服务器。反倒是真的像车库阶段的个人电脑使用方向。工具也是初创公司才会去使用。

怎么说呢,这样分裂的感觉,又使得我更好的观察了到底所谓的技术是什么。

这两年让我锻炼出的一个基本技能就是看使用的工具链能评价出具体一个开发团队会大概需要多少开发人员,凡是声称自己公司有特别强的自我研发能力,然后发现人数队伍不匹配,大概率也就是商业吹嘘了,不会有实质性的开发能力。

游戏

出差这么多天,发现我这个新买的超薄本,性能很牛逼啊,就是内存小了点,Intel的Iris Xe能打很多以前台式才能玩的游戏了,加上20w的满血CPU,而且是稳定释放。我竟然又开始静悄悄的玩一下小时后的游戏。可惜了,我已经记不起来以前玩过的好多游戏,只能支离破碎的记得一些画面。

一点观察

一点观察

关于业务调查

首先需要明确,我们调研的是什么业务。
其次应该要调研目前较为频繁的操作,必须要区分主次而不是把曾经的流程死缠烂打。边缘策略不需要太关注
最后应调研的是,不同角色的不同吐槽,然后汇总

关于会议

一个有效的会议组织,应该事前分发好资料,事中做好记录,事后做好跟踪
对于傻逼议题能有效的中断。
会议必须要有时限。