% B2 j& L! I; K
0 x8 g; B+ o6 U! V! B' h
DevWeekly收集整理每周优质开发者内容,包括开源项目、资源工具、技术文章等方面。 & c1 M0 v& V8 C+ T4 _7 ]+ r
. D/ c8 b0 W9 x4 a5 q* Y 0 {" q. G$ V8 i) l1 ~+ ^
每周五定期发布,同步更新到知乎:Jackpop 和公众号:平凡而诗意 。 9 u- l- z' A, z) `
% H; |; j; N1 C0 f - P* p3 G0 B2 z7 k
欢迎大家投稿,提交issue,推荐或者自荐开源项目/资源/工具/文章~ " X4 }1 i9 I/ a, z" b k) C
+ O5 u; e: R) @' v, I9 V% @
; @" C1 p0 q6 l3 b' R
订阅方式: ; L( i, I6 g! P1 {% u1 c
9 q& [( ^0 i! z+ Z' E: K & ? _: _& M. j- p
Star并收藏项目DevWeekly X; u1 j& |, F6 [' k* K5 d
关注知乎:Jackpop & f) N! L# _8 A1 R
关注并星标公众号:平凡而诗意
5 e+ ]; j$ f1 x; T 1 ?2 x9 r9 O/ P0 g: ]0 [3 {. y
8 N e0 Z) y; i- I9 e; d1 @8 n
进阶技术,优质资源,实用工具,欢迎关注公众号平凡而诗意!
' A: \) P4 {! q$ C" {6 x % s U- }0 [6 X- j
D5 v) r1 o- C
开源项目: z* p7 D/ { a J3 X. d- G
6 N$ I; Z: F5 s' `9 u; N ) T; X& V' F3 |9 z! C4 s0 Q
1. jetfuel
* A6 H( `" z$ S& S+ ?" m- V
% I; r6 T+ t$ O$ q ( e3 _/ L5 a. R* D0 S3 x+ P
PythonStar:104 ) D+ t o- Q1 I9 G" p$ n
) `% c8 U5 Q+ F; ?. d* j
" s. _/ w- e. E# w% A
* H' W# s$ i$ Z0 H# P4 [
0 M) T/ V' K* N) y) N% a p" o% Q* M7 h/ o
Jetfuel是一种性能分析器,可以监视生产Python的性能,并使结果易于聚合和搜索。
# m" P, ]9 W6 g1 h
9 n' X) |% y& D. X/ T4 v 4 [! |. |$ q2 k) r( f% s+ k( Q
2. LovelyPlots; r4 r; ~( I" M6 A T! \) s
+ i. f' W4 b+ L1 J- ]
8 `; p& Z5 O0 Z; I8 ]$ V3 O. i# ~ PythonStar:560
+ V& y4 V, O: a# z9 k. U
i N2 ]8 H# v* n9 M6 a/ {
4 \( O- ]. r; [& j# o - p, r; [( @9 y1 H% x5 X) Y; Q
" \: x, P7 d2 d8 _7 s * g4 w7 j- D! t) U- I2 n! Z, V/ |; V. J
LovelyPlots是一个包含matplotlib样式表的存储库,可以很好地格式化科学论文,论文和演示文稿的图形,同时使它们在Adobe Illustrator中完全可编辑。 ! d# Q. z9 N: M/ q# k7 J5 R
& e, v7 R0 q2 y) R& G& O . W9 o# ]3 q& b
此外,.svg导出选项允许图形自动调整其字体以适应文档的字体。例如,.tex文件中导入.svg插图将使用.tex文件中使用的文本字体自动生成。
; F8 j6 f( z# Q" Q5 _9 r0 @1 G
5 z. a! |0 d Z$ [ 6 L6 D- L- }* u) Z1 d( q
3. tsuki; J: \/ c J8 [: z4 _! S$ l
" O' }' D/ v9 n2 s
; Y4 B8 O+ R1 e. T( D* v
PythonStar:58 ; C7 { i: l, U1 o2 T8 @" D
: I6 T) y# ^5 D8 G
, F* N0 Z1 y3 R! l) v Tsuki是一个极简主义的开源社交媒体平台,使用Python构建。
* |( { m1 ] ]1 w+ e 9 o, a( D2 E# I1 p% C# j3 C" ^) T
- D% F+ L- H& ?" G% V( [. n0 t" [- c0 M 4. Xtra1 W: r+ i5 n1 o: i
! B7 V: P; R6 H0 e- p. l
+ g) Q6 ]$ q9 _' c KotlinStar:350
L3 ]7 ~; N% x, @+ R$ ^( R% v
0 Y1 V t4 }% N: Y0 ~ L, v7 J2 U2 D2 q# E: Q
Xtra是一款适用于安卓的Twitch播放器和浏览器。
( e! k: I1 ~' x9 { 0 Q" }5 x J! G3 `
" M3 q' p n% k6 ^9 L5 ]1 A 5. sbctl
, w4 Q. x. E" ^; [6 D+ T: O6 M / x) G- k; T' o D! {/ \6 f; ]/ N
7 G* p4 _6 b$ C/ ~$ R. u
GoStar:555 ; B b+ _+ {! E2 l9 y
; l7 O! c+ h+ l5 w# P/ x ; r% Q" }2 s4 e2 A0 p
. a: A1 G/ H4 s( p9 d- b/ R
: f% T, H! @! X8 n6 |$ I- j 9 G6 T) z9 j( ]# O+ N" \7 J
sbctl 旨在成为一个用户友好的安全启动密钥管理器,能够设置安全启动,提供密钥管理功能,并跟踪需要在启动链中签名的文件。 + f6 X3 |) Z% B% Q
' L% T, {% K5 {4 T' q. C
1 @$ D5 L$ V3 u T9 I- a 6. cli
, G \) ?8 K# u3 Y) z' @
! s, k+ A7 a* A7 h% w 3 M1 Y- |! F, G( k
GoStar:983 : x0 P8 I+ |. s" U/ {* f
8 D! S% G, D# P* K + a1 X h9 S5 n& R
用于 IPinfo API 的官方命令行工具。
; w6 X1 a N0 o) k% M; t; r
) K, D- [7 H: b+ y% V / h" o$ S9 ^5 m7 F3 l
7. thisisthewall
# N: B' u( t \, P" k% [4 ~( h+ o3 ~& U
7 w0 E5 Z3 ~. C# ]8 { C0 i
. J6 C U* L. p* I JavaScriptStar:14
5 I$ _+ Y# w/ D' F& I. ~7 y# {& l m # q7 R, }* J5 n, j1 I0 U# R1 ?
& y$ ]) i P# K) i, R 使用此API,你可以在任何设备的屏幕上获取壁纸的图片。
; G0 B* ? J, y& S6 E( B# [# S" u
& p# ^. C- C; A) T8 e+ U l
; h, j: ~; q" W 8. magic-regexp
3 p( A3 p% [( r, P
: ~0 o0 I( V1 U. D8 Q 2 R! |+ {, E" K. K) n) v
TypeScriptStar:1.4k
7 f) B x6 F1 ?" k
3 H# K( Y" |% q2 D/ S- g! E * f# i1 T4 O' K
一种经过编译、类型安全、可读的正则表达式替代方案。 3 v$ ], |: s8 @4 i
) T5 ?; n, D) K& o4 c: G# t" D ! |. t7 |& x- B0 \
9. frawk
" I) E/ ?: A) R3 m" B5 i. Q( e
$ M' _6 K) w; b( A: A/ }5 P9 W
2 S& P5 y g& B5 x, N& e RustStar:1k : D/ c* H0 h8 `4 @3 }
* P8 T0 D# N$ A6 H! o* b- P2 C
$ B. U* B9 }& d6 G+ H* G frawk是一种小型编程语言,用于编写处理文本数据的短程序。
( i) V1 G" A* ?! Q2 R! ?
, w+ i# Q$ Q% S' i }6 R8 O9 C; B9 @ & S+ q& _. l% @% \4 T: K# l
它类似于AWK语言,许多常见的Awk程序在传递给fruk时会产生等效的输出。如果你希望脚本像标准 Awk 字段一样处理转义的 CSV/TSV,或者希望脚本执行得更快,那么frawk会表现更好。
2 D' j- |+ m5 a8 o+ A# V: i ( e% J7 n6 P4 O' J
+ G4 Q {' p8 g- G+ e 10. Vale5 L/ n7 |% a v! E, ~
$ ]" R$ H: y7 d1 B2 F
, v8 a% T Y0 v5 ?) i1 l ScalaStar:1k - M7 y% ^: [5 L
. _. O' c6 O. X' X
2 J& q3 v+ u1 ]6 D& a* N Vale是一种编程语言,其目标不仅是快速和内存安全,而且简单灵活。
i, f- a( Q9 a& i7 c0 K0 l
. p: u9 C! S( h
6 r2 ~* R6 f! t/ f5 k6 { 资源工具7 P9 B. R0 {1 V3 H6 E% g
4 k' D3 G# m: P" R
2 p# P# C9 |9 \6 V \" r$ t) o 1. GitExplorer
' w6 [8 Q& p9 D' w ; t; y" ]/ v$ ]
0 R' F$ ?" j7 f7 ]
9 k9 y/ _) l8 ^9 Q
5 ~' Q- l2 Z( p4 Y- k! E
, k9 O/ O5 G! M1 r5 u" ? 一款Git命令浏览器,只需要选择想执行的动作,它就可以快速生成命令。 7 ^9 w& N. r' z. U- |) G
' L8 R7 E, A1 q: {0 N, j
. J+ b2 V+ q$ X- y2 ~4 H+ ?* T 2. Bookworm, H/ b5 L8 p' o: `
) R2 f; g/ x2 L- u6 Y
1 f! A) r' P" w0 z
- Q, J5 H4 J4 i4 x6 C% P
9 O6 U* {3 p1 ]! p7 S a% l
9 W4 z% @% F4 w6 z7 z 适用于 Linux 的简单而功能丰富的电子书阅读器 ; }3 N/ A% y/ j
& H8 e: o \( c2 k
# q9 R2 ?0 i) u" C' M0 X8 S 3. gitlogs
& f7 _( R# Y" k; I
& ?, y6 J4 ?: [ : u" L' Q Q; _, w
能够及时准确的发现最新优秀的Github项目。
3 p4 a, h; C2 c) m2 y8 w& | 4 N0 |& ~, ~" l# p$ b1 G
& @; I' }: d) n5 n. [% _ J 4. readme.so
- ~% d/ _$ @: T ! m( G0 h7 V( t1 X: h
: i- A- U) z* w0 E
# H- k6 m# b/ a3 t l4 c! O
8 i" g2 X2 P4 v% O 5 j% T2 @3 f1 ^* O( z b. y8 m E
readme是Github开源项目中非常简单的文件,那么为什么有的readme写的那么精美? 3 W$ G0 Z4 r6 D& ^9 F
$ K- Z J# p0 m# r3 O
' N7 n8 @( m# z9 B6 m 这款项目就可以通过简单的选择快速生成美观的readme。
$ D. L4 c- H# I 8 Z; f4 H/ Y* K. l2 k; A6 M
9 }6 G4 G9 ~8 A/ k* t1 K: }) D 5. learngitbranching) J* l% h: s% j5 L9 ]8 m( y
. z! \, Q2 d* n0 u! Y8 [' ]
/ ]' u$ Y/ T' T( v' [! L$ a- C5 s( |3 U / Z8 [9 d1 I0 m9 y4 k1 X
5 ~2 X( p+ `1 d
A) n+ t2 a2 o/ z 一款在线的Git分支学习工具,通过这款工具可以可视化的解释常用命令,更有助于理解。 ; ^7 D# M7 z2 I4 ~( X7 Q/ A
: J1 c, I$ @/ a" f
9 s6 j& { R! A g 技术文章( H( ^2 O( p4 g- J$ B9 h
( C* Y6 P, N7 G" X: `$ a
X h! Q0 N( R3 I; A6 c
1. 了解Linux路由) \/ z! U- n5 }- `8 \
0 x0 V9 J0 L4 R) q Q1 w f: \+ S0 |* }2 p/ i
过去只需在我的Linux终端中输入路route(或者后来的ir route),就可以准确了解我的所有路由。
2 ]6 d2 C9 G7 {* g3 h9 d
% O; o2 M2 G4 P) t L4 R * {. m2 q" {! Q. g) }
现在情况已不再如此。 # S p9 s* [' w' [4 U
8 j( B( W2 K# `- d
* E f: _+ _# A m 例如,当前使用的机器使用wg-quick脚本通过有线卫士协议连接到Mullvad虚拟接口。我很确定我的所有流量都通过Mullvad,但却无法从我的ip路由输出中看出这一点。 ) n9 R# P+ Z' o1 [ y
$ D' |2 \7 y: T& g6 q
4 p+ ^7 N3 h' a3 d. ~9 O 默认路由似乎通过我的物理网络接口而不是虚拟接口定向所有流量。
0 ^* U+ w7 B/ p. q4 g: I7 i( z7 W
; c* e7 h b5 g7 W
! h6 q" u3 F* G x; M e$ e! y 通过这篇文章就来了解一下Linux路由是如何工作的。 7 e& O. }) x' T( G/ {. f$ u- f
$ P, z7 i9 e/ C% F! b0 y% ~ 1 u6 Q1 u# v" j* o& o) y
2. 一个专业程序员的10年; L+ e( i9 ?; A5 S6 O* m! b- G
& s9 y; L& e0 ]* U3 r* A1 Y
& n6 `6 C" d/ |4 B# h4 u 10年,对于一名程序员来说算是比较漫长的,在这10年中项目、工作经历了很多,也感悟了很多。
( P a" v R$ v. L- Z7 u* [/ v
4 G; o4 L* v! T1 ~# z ' j4 Z M% X/ E, ~5 n1 X
作者是一名从事10年编程的程序员,从工作、技术等不同方面总结了自己的感悟,很有借鉴意义。
- W+ P. n) R- Z6 f& ^' e- R
4 R% {1 x) H0 v
^" ~4 Q$ B3 \3 P 举报/反馈
+ m* r/ R, c( L& v; e- B 6 m/ t3 g/ ^* g, {" b6 y1 `1 D; |
* X" P" j" A8 N) b1 S2 c
" {/ J/ L* ~9 e8 ]8 U: ^) o& Q
: Q e# `9 _8 P0 y# c* g
; Q4 U) O; P3 B
|