Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

软件工程师

现在的软件工程师太难了,他们要工作的内容太多而且太繁杂。

理想中的软件工程师要做的内容:

  • 接收需求
  • 实现代码
  • 单元测试

实际上软件工程师的要做的内容:

  • 丰富和改善需求内容(产品经理?需求分析师?)
  • 架构设计,包括软硬件选型、服务间调用、日志系统、监控系统(架构师?平台支持?)
  • 编程架构(架构师?项目Leader?)
  • 实现代码(软件工程师本职 √)
  • 单元测试(基本无了,从没遇见过写单元测试的)
  • 功能自测(测试呢?)
  • 软件发布(CI/CD?)
  • 软件运维,包括配置告警和监控(运维?售后?)

架构师

  • PPT
  • PPT
  • 还是PPT

反思

经常出现的一个现象是什么?

架构师或者产品经理拿着他的PPT去宣传软件工程师的系统,然后用户使用的时候才发现,架构师对系统功能的介绍完全是南辕北辙,反而让软件工程师背锅。

为什么呢?

一个是架构师或者说产品经理从来没有一个检验的标准,就是说大部分的人入职完全是靠PPT和演讲入职的。
而他们入职后,很多软件工程师就会发现他们在整个项目中并没有输出任何有用的信息,不是说他们的岗位应该被干掉,而是说大部分在这个岗位的人都没有符合的才能。

  • 没有整理出完善的需求文档,需要软件工程师自己对接
  • 没有可复用的软件架构,需要软件工程师自己搭建
  • 没有可复用的建模工具,需要软件工程师自己建模
  • 没有配套的测试、CI/CD、运维,一切都是软件工程师自己埋头苦干
  • 甚至于,架构师说:软件工程师,你把你的软件写一份部署文档、使用文档、交接文档吧。。。。

软件工程师的反击

  • 我在忙,找别人吧

反正软件工程师和项目经理之间不可调和的矛盾由此展开。

拨乱反正

架构师或者假如说你是项目Leader,你到底应该输出什么?

  • 需求文档,甚至接口文档、使用文档
  • 软件架构,包括源码的框架、个别复杂用例的设计流程图、多系统间的调用关系、流量管理、权限设计等等
  • 提供软件的安装和部署方式
  • 提供日志和监控系统

架构师如何入门?

不是说任何人看了几篇秒杀系统如何设计就是架构师了,说系统要添加缓存系统、链路上全部添加日志和监控,然后对接了xx系统就可以。

基本上,所有不是从软件工程师成长的架构师都不算架构师。

架构师,虽然有很多方向,我这边就只说一下有关我这个大数据软件工程师需要的架构师吧

  • PPT能力:不能说PPT没有用,只要负责的将系统的需求和功能阐述给软件开发工程师,那么软件工程师何来那么多的怨念
  • 编程能力
  • 平台能力:CICD、监控、日志、K8s、Linux
  • 算法和网络协议
  • 云平台能力(其实我觉的云平台一直是一种伪能力,因为如果你有本地部署的能力,云平台肯定没有问题。关键是现在很多架构师都决定使用云平台,但是呢,从来没有完整的看完云平台的能力和适用场景,导致很多不适用的问题,真是拍脑袋的决定)

任何没有掌握以上能力的架构师,不配拥有我这枚程序员;或者说,难道我一直在拿着程序员的工资,干着架构师的活?

结语

天下软件工程师苦架构师久矣,愿每个程序员都能遇到最好的架构师。

当Git仓库中存在大文件,会持续保留在Git历史中,下面是对删除这些大文件的一些解决方案

已提交到git缓存

删除缓存

1
git rm --cached video.mp4

已提交到本地分支

reset到上一个版本

1
2
git reset HEAD^
git gc

已提交到远程分支

1
2
3
4
5
6
7
8
9
## 删除本地文件和历史
git gc
git filter-repo --path-glob video.mp4 --invert-paths --force
git gc --aggressive

## 推送到远程分支
git remote add origin git@ticktechman.github.com:ticktechman/demo.git
git push --all --force
git push --tags --force

git filter-repo不是原生git命令,是一个拓展,从本地记录中寻找和指定文件相关的提交,将其全部删除,重写整个历史。

git filter repo仓库

对未知大文件的远程仓库清理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 寻找大文件
git gc
git rev-list --objects --all |grep -f (git verify-pack -v .git/objects/pack/*.idx | grep blob | sort -k 3 -n |cut -f 1 -d " " | tail -10)

# 或者使用该拓展命令获取前10大小的blob文件, https://github.com/ticktechman/git-commands
git largefiles -t 10

# 从本地中删除大文件并重写历史
git filter-repo --path-glob xxx.mp4 --invert-paths --force
git gc --aggressive

## 推送到远程分支
git remote add origin git@ticktechman.github.com:ticktechman/demo.git
git push --all --force
git push --tags --force

写作

创建一篇文章

1
hexo new  2023-10-11-使用Hexo

插入图片

1
![062005161512378.jpg](2023-10-11-使用Hexo/062005161512378.jpg)

062005161512378.jpg

文档分类和标签定义

1
2
3
4
5
6
7
8
---
title: 使用Hexo
date: 2023-10-11 18:40:44
tags:
- 教程
- hexo
categories: 教程
---

文本居中

文本居中效果演示
1
2
3
4
5
6
7
8
9
<!-- HTML方式: 直接在 Markdown 文件中编写 HTML 来调用 -->
<!-- 其中 class="blockquote-center" 是必须的 -->
<blockquote class="blockquote-center">blah blah blah</blockquote>

<!-- 标签 方式,要求版本在0.4.5或以上 -->
{% centerquote %}blah blah blah{% endcenterquote %}

<!-- 标签别名 -->
{% cq %} blah blah blah {% endcq %}

bootstrap

1
{% note primary %} Content (md partial supported) {% endnote %}

其中,class_name 可以是以下列表中的一个值:

default
primary
success
info
warning
danger

Content (md partial supported)

0%