; K" b# W+ l* h9 W" L& t* F5 e
; Q( y8 D$ \: E; F6 ]: U* W DevWeekly收集整理每周优质开发者内容,包括开源项目、资源工具、技术文章等方面。 % X/ |! R9 z. J
( v& J' q; U9 K: F& v
6 a# a9 R" O" T) U$ G5 T. w" _ 每周五定期发布,同步更新到知乎:Jackpop 和公众号:平凡而诗意 。 ' d0 C+ U; `0 ]: R3 _" z3 \
- G! b+ h g: ^* R
1 W& o- A, i4 b. d8 A5 l3 l 欢迎大家投稿,提交issue,推荐或者自荐开源项目/资源/工具/文章~
8 u. b2 G/ }) F, i% K; s) ?4 P 0 y2 q7 {& D7 _5 Z
$ A+ q1 D7 z/ d. p4 h
订阅方式: , q3 e$ Y M; p0 o
\. I; p5 @& X( O- _
( b; E! ~. c1 ~! E& I' E5 ] Star并收藏项目DevWeekly
6 u- t& y- Q7 S; x' L 关注知乎:Jackpop ; F6 b# K2 k4 j) f
关注并星标公众号:平凡而诗意 3 N/ T. X" l! z
& b0 h4 T6 m! l . q5 C/ |1 y+ e$ {
进阶技术,优质资源,实用工具,欢迎关注公众号平凡而诗意! ' f" y& |; z: e4 {' C
9 l3 U: ]$ x9 ]) D' v& g. f& x$ J! l
' G+ B0 b9 p6 y2 s
开源项目/ }9 L* p$ ?% R
4 l' h8 @# O" q. B; U
`- N: O* {: _4 m9 }7 P8 r- l
1. jetfuel2 V8 }8 ?# M3 P! h; q& l3 r! r
# I- R! W# y3 }$ s+ x; v7 t. Y
6 K) o# O, f9 n5 I PythonStar:104
' D) |- I0 Z2 U & _2 J& s) w: V+ o* c4 R7 X; L$ L
2 O2 G& F0 o- Q& H$ V. s4 p, w Q
: c1 H# U0 W5 B# \; a
9 U& ?8 X6 G" K
* L5 v3 ^" H% ?7 z+ L/ Q0 y! d( a
Jetfuel是一种性能分析器,可以监视生产Python的性能,并使结果易于聚合和搜索。 6 u: [0 F4 C; d+ P t& Z+ i4 s7 a
+ d! S5 d. n9 P4 h6 S. ~ 8 v* q4 K0 s7 I
2. LovelyPlots
0 i2 R0 l2 a* z1 E0 q9 X3 e Z* e" q2 p" W8 ~6 n( r6 U7 F. d
* ^! N9 ?( s! J3 O( T+ r& k( A
PythonStar:560
/ [- a2 E0 A- A' ~ Y8 X+ y+ h; I! L
( _$ x$ V' ?) @% w. {
: }8 T; ~0 Q- P, }7 Y8 W9 ] . v6 w: Z$ f0 p. R+ _
[3 g- O- c4 N; Q& ^4 m. G 4 B5 v: o% |6 x7 [! D, N+ x0 r
LovelyPlots是一个包含matplotlib样式表的存储库,可以很好地格式化科学论文,论文和演示文稿的图形,同时使它们在Adobe Illustrator中完全可编辑。
. I; l+ U1 ?9 L+ r S
; s5 q( r; E& R' h$ O
) f" {) I N0 l$ @7 j 此外,.svg导出选项允许图形自动调整其字体以适应文档的字体。例如,.tex文件中导入.svg插图将使用.tex文件中使用的文本字体自动生成。
3 R* v( Q$ N' N
2 V5 o4 f$ S! @7 z& ]
6 q3 E7 x8 Z8 B8 y. F0 S5 k: B. i 3. tsuki
! u1 ]4 s7 S* B. N3 x 8 f. i1 @9 X8 a' B2 `
4 H% \6 U; U5 x- u# w2 E+ m: G
PythonStar:58 # [' A5 t, C% L, t% n# _
$ S; d" h. b) k: F) o- r6 N
0 D: Z& d T; |8 V* ^% _/ ? Tsuki是一个极简主义的开源社交媒体平台,使用Python构建。 , X. K8 C# ?2 f# x5 m1 X) t. s& V7 E
$ f5 {5 J# P: V0 L; R$ b2 ]( k6 k
# G8 Q0 m, D+ V ?) ~# L 4. Xtra$ `2 t" P2 G9 j% u# m5 ]
# D8 H9 Y" H6 I4 H f; G7 {1 L
$ |- q1 m4 l* e- f- V KotlinStar:350 , Q0 v" X' K2 U9 i$ a8 t
% @1 a' W- a& ^; e
0 E$ K. a: U( r Xtra是一款适用于安卓的Twitch播放器和浏览器。
$ O& R% \; n! R# h! W + e) f5 O8 N3 h; i8 y% e5 S+ _9 P
' b, z' P a) h: D: ~ 5. sbctl9 H& L+ h% _0 J2 U* \
6 O G; ^, y8 D. c% v4 H2 s
3 `8 Y' }% i2 H( w# l GoStar:555
) h2 b" Y2 z/ e" a3 Z : D4 [* `3 q2 n$ C
& q# K- H! S; n. A7 b: Y & I; i5 p8 x' v7 h8 }
6 |# A: ?, ?0 x+ h 2 c; V$ v+ j9 Z
sbctl 旨在成为一个用户友好的安全启动密钥管理器,能够设置安全启动,提供密钥管理功能,并跟踪需要在启动链中签名的文件。 9 \' R6 Y9 q- q1 |; W
$ X8 ^$ m7 p" B- ~# D6 z
2 D2 R8 Z, A+ Z7 C$ y" ?2 j2 ]7 _1 @" j 6. cli
" V" u: F) O+ y( T
" |8 G7 p- Z) A* `" u 3 z l. g; \6 r* H+ ?. P% l! J
GoStar:983
4 ~/ G6 S6 G6 ]& d # w' Z# X% w; P( C
$ ~. V8 Q& ^* {4 c- N, ~6 H4 u1 [ 用于 IPinfo API 的官方命令行工具。
* v, c: C% U1 r( g& I g
8 @4 X+ ~: k. W, u& `5 l & J& D7 Q( O/ B. r) o
7. thisisthewall
& l+ {6 w4 i4 E. C5 \: k0 i : s& h$ }) J' n9 d4 a8 h
* |4 ]" u- V0 w) q JavaScriptStar:14 ( w0 Z) y! i1 X" |
) F; P- P8 ^% E" Q 2 r1 W' i" t9 ?/ C# r+ s+ `
使用此API,你可以在任何设备的屏幕上获取壁纸的图片。
, d2 g5 `' V, x# v# n4 ]! G
6 r0 z9 ?* k& y1 M 6 Y$ u3 M& B7 l5 }2 ]2 a+ t% [1 ?
8. magic-regexp
% |4 l0 f- x% ]
8 z- C1 b5 N1 S" H " p5 B8 O* ` S) G
TypeScriptStar:1.4k
; u1 P5 T0 O2 C, t% F- \ 5 C5 a# r6 s7 M9 ?% `4 |- }1 e8 E9 D
: u+ Z3 K, ~& [7 y7 n2 x 一种经过编译、类型安全、可读的正则表达式替代方案。
. Z" w# n; X2 K$ ]# J6 ~4 ~9 F : e) o Q! s9 y
1 n% d/ g2 D* e
9. frawk
( o: M( I0 K6 O5 ]( M' } ! \" i, n6 s1 o; k
/ g' K9 C7 y: a, L( m RustStar:1k
6 m" J/ m7 B9 `; ]2 J \7 ]4 J$ k0 d3 m* g
% g- i" e, \. Q- ~$ k( f frawk是一种小型编程语言,用于编写处理文本数据的短程序。 + s# e* }0 l3 X7 n5 J1 v: x
U3 S7 o9 {2 k 5 r& F3 P; R4 \/ |9 M" \) H! A! h- g0 E
它类似于AWK语言,许多常见的Awk程序在传递给fruk时会产生等效的输出。如果你希望脚本像标准 Awk 字段一样处理转义的 CSV/TSV,或者希望脚本执行得更快,那么frawk会表现更好。
8 j2 Q) S! T, _4 f+ p. }4 f; F + L* l2 E9 J: E% m
! X( x' u: a1 y0 B; ] 10. Vale
1 |; @" L+ e) V; x# l- M8 R
4 W% a* r, M8 W8 U1 F9 } 0 o; ]9 n! a. u- P7 N E% O
ScalaStar:1k 0 ]" o! L. ^' c% v3 r* p2 Q% f
) E D! r8 F$ `9 x
, e6 n( i8 a; n* t Vale是一种编程语言,其目标不仅是快速和内存安全,而且简单灵活。
0 F! [3 e6 t7 b0 j. Y$ N3 F 1 Y! P' M. L. t/ Q0 X+ Z7 T Q
8 g. K* T3 o/ U: u. J 资源工具
! C# U6 B# ^, e1 q2 u 3 R+ U' g% U, o- M0 U4 Q4 U
* w7 Y1 w; w* l$ b2 F 1. GitExplorer
% y X/ j2 z1 ^: U4 N1 T. H2 j ( ]% U0 N( C* I, S! V& j! L
2 {9 h0 q" d9 }7 V
- G( J/ q9 U$ R- k: O7 V. K
1 O# [7 b" N2 ^% j K* g7 h+ N
7 R1 k# w& }! m$ D: k: V, F 一款Git命令浏览器,只需要选择想执行的动作,它就可以快速生成命令。
Z+ ^( J5 V% O1 k- b$ l0 U; y
, o d5 ?! N8 Q
2 V3 |+ n/ C7 A& U p 2. Bookworm& j6 s, |! p, Y# @' t R
. Q" j/ O- s1 Z" L5 ]' y4 [
- F* L* i: X c
8 u9 M) Q$ Z4 K! p5 ] : G+ I: ?& I& ^% E+ K) B
/ t% Z, Q) F* w/ s- G4 j
适用于 Linux 的简单而功能丰富的电子书阅读器 ( l! ?9 {) N# @, c4 f
1 q( T, m+ L4 P
( a$ _: W* c, n. @
3. gitlogs
/ u; Y) G. h8 a( _
% P5 R0 m( O$ l ! Y$ {! ^0 k$ V6 K1 v1 l3 \
能够及时准确的发现最新优秀的Github项目。 7 R5 } A6 |4 g5 h3 }& h- Q/ \4 z) L
k+ e3 t# P1 W( z
9 Y7 E3 }; w' q6 R" `6 i4 {7 ^ 4. readme.so
4 z O/ G% ?% W& ]$ S4 l# P
0 h: K: b1 j( _0 A6 y
+ ?7 n' g4 z# n+ C7 ?. [# O
9 i. y& K6 W1 s - d; E/ D3 a) _5 e+ g( N0 O
* Z& G0 S) r) E4 c
readme是Github开源项目中非常简单的文件,那么为什么有的readme写的那么精美? ( r0 I/ s. }! C, B6 ~! C" C
+ o0 ]3 e, A* D* t& F+ S2 p& M0 a
1 l g& ?0 u8 v6 i9 ^" R 这款项目就可以通过简单的选择快速生成美观的readme。 $ b" k0 n$ k+ N
& a9 @1 D0 ?" I+ g# r
0 H. g0 C" s' {2 | 5. learngitbranching, `7 B$ F' t9 t9 h
, [9 e1 {0 u# ], }0 h 7 c% v2 e% T1 }9 @
- [+ A% s) i4 s9 [ $ Y. Q, k, s9 n. k( \. x0 {
, z6 z- c, l$ L2 _7 k2 Y: A7 ?
一款在线的Git分支学习工具,通过这款工具可以可视化的解释常用命令,更有助于理解。
{) |9 Z0 P% x2 n
# ~ a) }: j/ M$ E) `0 H5 D# Y : k% G4 O6 ?$ C0 j. J" Z
技术文章$ D; X, ]4 ^: D4 w- J# M5 i- R5 d
9 D, [; Z8 f/ p' C) w 3 J( I3 q: ?8 E- f& t" k
1. 了解Linux路由
% E# _, ^5 }3 R5 R
! l) w. |( J; T. v % A. b! \! {( I
过去只需在我的Linux终端中输入路route(或者后来的ir route),就可以准确了解我的所有路由。
: z G; c( r# k. n g ! U5 ^, e. {; D. b2 L
% z& q* D0 l5 @" h: u, ?
现在情况已不再如此。 3 [1 D6 s3 q% A% V3 T0 D
8 d" \! i. O- l9 P: T6 v
- p7 o# h) ~+ P/ q 例如,当前使用的机器使用wg-quick脚本通过有线卫士协议连接到Mullvad虚拟接口。我很确定我的所有流量都通过Mullvad,但却无法从我的ip路由输出中看出这一点。
& m+ W {3 ]3 N- C
; r3 P) l- @+ X6 a. R: Z
9 o9 }2 T) ], p4 m! H) x# R 默认路由似乎通过我的物理网络接口而不是虚拟接口定向所有流量。 ! t) v% D: Q: W- j/ M
$ T$ d' e/ C# V' J- F
& t1 U% e/ j4 O9 w' R. K4 K 通过这篇文章就来了解一下Linux路由是如何工作的。 U+ t9 c F6 R' y, {
4 _+ u D6 {& f3 ~# Q8 ~
8 F; U) s" f. t9 X 2. 一个专业程序员的10年
, Y' ?/ f2 c/ ~1 b9 | U+ R ; q5 W, p$ ^* D6 b" u
# Q+ ^3 C* ^; V p/ M 10年,对于一名程序员来说算是比较漫长的,在这10年中项目、工作经历了很多,也感悟了很多。 V, ^+ ?5 t$ `- N. w
9 m* ?$ Y H! Z# U) f6 F% `
, K/ O. P* _+ J5 r 作者是一名从事10年编程的程序员,从工作、技术等不同方面总结了自己的感悟,很有借鉴意义。
$ y t& h# w. `* _7 A8 B$ D9 D) }' s
: W4 j7 Z) T( Z4 X6 n2 X 4 d: ]& o8 [4 X4 A( {
举报/反馈 ' w/ F. d9 n0 Q/ E$ Q/ j+ m9 C7 {
! ^: ~) s& m. N* a" Q8 Y, O& J& b# l, e/ W
5 X; E$ o. F1 Q
0 [& B: j3 O! L' e! s$ H, i; A8 ]9 ^" `" [* Q. \, N4 P
|