Skip to content

Commit

Permalink
update 2451
Browse files Browse the repository at this point in the history
Signed-off-by: Ji Bin <[email protected]>
  • Loading branch information
matrixji committed Dec 22, 2024
1 parent b03a251 commit 4b9e657
Show file tree
Hide file tree
Showing 15 changed files with 158 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .astro/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
"enabled": false
},
"_variables": {
"lastUpdateCheck": 1733199719996
"lastUpdateCheck": 1734273212086
}
}
Binary file added images/IMG_9039.heic
Binary file not shown.
Binary file added images/IMG_9056.heic
Binary file not shown.
Binary file added images/IMG_9061.heic
Binary file not shown.
Binary file added public/images/d/img-9039-thumb.webp
Binary file not shown.
Binary file added public/images/d/img-9039.webp
Binary file not shown.
Binary file added public/images/d/img-9056-thumb.webp
Binary file not shown.
Binary file added public/images/d/img-9056.webp
Binary file not shown.
Binary file added public/images/d/img-9061-thumb.webp
Binary file not shown.
Binary file added public/images/d/img-9061.webp
Binary file not shown.
19 changes: 19 additions & 0 deletions py/patch_post_images.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,24 @@
import os

from any2webp import transform
from PIL import Image


def create_exif_for_webp(filepath):
if not os.path.exists(filepath):
return
exif_filepath = filepath + '.exif.txt'
if os.path.exists(exif_filepath):
return
img = Image.open(filepath)
exif = img.getexif()
if exif:
camera_model = exif.get(272, '')
camera_make = exif.get(271, '')
datetime = exif.get(306, '')
if camera_make or camera_model or datetime:
with open(exif_filepath, 'w') as f:
f.write(f'by: {camera_make} {camera_model}, {datetime}')


def patch_md_images(md_file, images_dir, dest_images_dir):
Expand Down Expand Up @@ -39,6 +57,7 @@ def patch_md_images(md_file, images_dir, dest_images_dir):
print(f'Converted {d_filepath_full} to {d_thumb_filepath}')
first_done = True
lines[i] = line.replace(filepath, d_filepath)
# create_exif_for_webp(d_filepath_full)
with open(md_file, 'w') as f:
f.writelines(lines)

Expand Down
28 changes: 28 additions & 0 deletions src/components/Card.astro
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,16 @@ import { getYmdFormPost, parseArticleSummary, parseArticleTitle } from "@/util";
const title = parseArticleTitle(post);
const dateText = getYmdFormPost(post);
const summary = parseArticleSummary(post);
const isDraft =
post.frontmatter.draft === true ||
title.toLowerCase().includes("draft") ||
title.toLowerCase().includes("草稿");
---

<a
href={post.url}
class="card flex flex-col mx-auto my-2 shadow-lg dark:shadow-gray-700 rounded-md"
data-draft={isDraft.toString()}
>
<div class="block md:w-80 md:h-48 w-96 h-52 rounded-t-md overflow-hidden">
<img src={post.frontmatter.pic} class="w-full h-full object-cover" />
Expand All @@ -27,3 +32,26 @@ const summary = parseArticleSummary(post);
</span>
</div>
</a>

<script>
import { config } from "@/config";
if (document.location.href.startsWith(config.site.url)) {
document.addEventListener("DOMContentLoaded", () => {
const cards = document.querySelectorAll("a[data-draft='true']");
// hidden
cards.forEach((card) => {
card.classList.add("hidden");
});
});
} else {
// for dev
const cards = document.querySelectorAll("a[data-draft='true']");
// add opacity and border
cards.forEach((card) => {
card.classList.add("opacity-60");
card.classList.add("border-2");
card.classList.add("border-gray-500");
card.classList.add("border-dashed");
});
}
</script>
13 changes: 13 additions & 0 deletions src/layouts/post.astro
Original file line number Diff line number Diff line change
Expand Up @@ -97,3 +97,16 @@ const articleDate = getYmdFormPost(post);
});
});
</script>

<!-- add exif info for img -->
<script>
document.addEventListener("DOMContentLoaded", () => {
const imgs = document.querySelectorAll("article img");
imgs.forEach((img) => {
const exif = img.getAttribute("data-exif");
if (exif) {
console.log(exif)
}
});
});
</script>
36 changes: 36 additions & 0 deletions src/pages/posts/2450-敏捷培训.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
---

![敏捷培训](/images/d/img-9039.webp)

<small>部门组织敏捷培训,一整天,举办了两期了,下午的实践环节使用乐高搭建城市,自己在这两期培训中也是感悟颇丰……</small>

## 技术

### 12 Days of OpenAI

OpenAI的发布会朴实无华,相比国内的一些发布会,没有那么多的炫技,继续看看吧,下周应该能结束,到时候再总结一下。

Google 也没有闲着,发布了 Gemini 2。整个世界就是一个大大的瑞士卷。

### Robyn

[sparckles/Robyn](https://github.com/sparckles/Robyn)

Robyn 是一个高性能、社区驱动和创新者友好的 Web 框架,具有 Rust 运行时。
从语法上看,和 Flask 有点像。性能更好。使用 Sqlalchemy 做 ORM。使用 Jinja2 做模板引擎。

感觉 Python 和 Golang 的世界里就不会像 Java 那样,有一个 Spring Boot 那样大一统的框架。

## 随笔

### 敏捷培训

这次敏捷培训的一个小插曲。因为现场可以参加的人数有限,所以安排了直播和视频录制的方式。
既然说到直播和录制,就会涉及音频的录制,由于当天早上比较仓促,并没对录制方案做最终的调试确认,最后录音没有录进去,只有视频。
当然直播时候是有声音的。

由此可见,任何事情凡事预则立,不预则废。下次准备好对OBS有更深入的了解,同时也准备地更加充分一些,做好录制的准备工作。

最近看到PMI出品的一本书 《敏捷实践指南》。比较简明扼要,值得一看.

61 changes: 61 additions & 0 deletions src/pages/posts/2451-甲辰冬至.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
---

![冬至夕阳](/images/d/img-9056.webp)

<small>冬至日的夕阳,人眼不愧为世界上最先进的图像传感器,手机的镜头是远远不能表达当时的画面感的</small>

## 思考

### 何时做性能优化

最近的一个思考(不说背景了):先优先功能还是优先性能?这是一个很有意思的问题。

首先是用户体验的问题:

- 一个功能做得很好,用户会可能会觉得这个产品很好,即使性能不是很好。
- 但也有可能一个功能做得不错,但因为性能问题,用户会觉得这个产品体验不好。

再次是成本的问题:

- 过早地优化,可能会导致成本浪费时间,因为可能这个功能并不是用户所需要的。
- 但是过晚的优化,可能会因为技术债务的累积,导致后续的优化成本更高。
- 当然最好的情况是,能够在功能开发的同时,就能够保证性能。
- 但是同时兼顾功能和性能,那就得用更优秀的工程师,那人力成本就是另外一个问题了。

还有不道德的绩效问题:

- 程序一版写好,兼顾功能和性能,后续没有太多的优化工作,可能体现不出工程师的价值。
- 一直在优化,持续地和过去的自己做对比,可能会有更好的绩效。团队可能也有更好的获得感。

所以说一个软件团队的决策者,往往需要在不同的方面做权衡。这可能也是软件工程的魅力所在。


### 基础永不过时

一个晚上被拉起来解决一个兄弟部门的工程重构问题,因此看了一些代码,感觉很多工程上的做法,能够运行,但不优雅,不简洁,不易维护。

交流的过程中也发现,其实很多问题,在基础的书籍中都有,但是却忽略了。

虽然我们现在涉猎的很多知识和工具都是近10年,乃至5年内的,但是很多基础的知识,往往是永不过时的。

比如 现代 C++ 一直在迭代,比如现在用的CMake 基本上也是近10年的东西了,更不用说Kubernetes,Docker等等,还有 Git也是20年内的东西了。

但是回到技术的本质,很多原理性的东西,并没有因为工具和技术的演进而改变。比如算法、设计模式、架构、编译原理。

那天晚上到家后,又找出了 《Linkers and Loaders》这本书。 Stay hungry, stay foolish.


## 随笔

### 咖啡机

![咖啡机](/images/d/img-9061.webp)

终于在老婆大人的帮助下,家里有了舒服的放咖啡机的地方。看来以后,每天早上的咖啡就可以在家里享受了。

因为想在家方便地喝咖啡,所以买了一个咖啡机,因为想找一个舒服的地方放置咖啡机,所以老婆大人找人定制了一个柜子,所幸屋子里面能够找到安置柜子的地方。

### 冬至

冬至已至,春归不远。

0 comments on commit 4b9e657

Please sign in to comment.