# @% Y& y1 n a% O2 L6 L4 e ^
0 z2 p1 |* U" p* _! k5 Y4 ?
DevWeekly收集整理每周优质开发者内容,包括开源项目、资源工具、技术文章等方面。
2 N+ i$ ~) G0 Z! ?. }) N% T
+ L5 U% p( [. r& V5 T ! [% z% G& d/ l, i
每周五定期发布,同步更新到知乎:Jackpop 和公众号:平凡而诗意 。
+ d% b( ]- P$ V$ u# u) i. ] ) r8 |3 x; v% s- I9 }& z1 M& j
/ k A& R, W! ^& H9 Q2 [& k$ \
欢迎大家投稿,提交issue,推荐或者自荐开源项目/资源/工具/文章~
4 `% j8 M7 ^2 B 8 ~4 C8 A* h3 I- Z
, Z2 |6 F* a, l& { 订阅方式:
' i9 N ]+ x, I b. ^; i8 D* R, ~ 6 X) z( m r9 {
% ^4 f. r/ N+ m; g/ Y5 `# n* R
Star并收藏项目DevWeekly
5 M3 E+ h+ U! n" s$ S 关注知乎:Jackpop ) g! b5 C4 [+ ]
关注并星标公众号:平凡而诗意
7 i, O% F6 r; c- A 1 r9 G' V9 n$ r# o
* A9 Y" z% F; ~6 x9 ?3 }" F! e$ u 进阶技术,优质资源,实用工具,欢迎关注公众号平凡而诗意! ( k+ C4 z0 J" p+ h6 I5 M
0 p# `3 ~& a$ X
- r) a9 @9 P2 {8 W! w
开源项目
, L' \! N' A* @3 t/ Y2 X; P
, J+ z+ J) i) @/ Q. Q2 q% ^ 7 S9 k$ Y/ M- ?( ?' J
1. jetfuel; D* X5 X, I. |4 V
6 G. g9 K6 A2 Z) N- j8 m2 Y 9 p2 N' V8 J3 k4 D$ z$ z2 m4 [
PythonStar:104 % U- e/ q( O* q5 i+ Y
& {" h% p9 M! D& j2 ^8 m( g
# o* z% F i" {' B# t( @ $ S) o; A' ^- i
" D$ J% \' Q: p& t1 Y 9 q, r N3 C# x& M! X) g
Jetfuel是一种性能分析器,可以监视生产Python的性能,并使结果易于聚合和搜索。
5 M; P: L/ H5 i( j
9 W8 I! D- s. \% [% r
7 F4 F3 \, J- P4 @ 2. LovelyPlots) `( r( T4 n3 _$ }( p+ ]' c2 |
9 Q; p. U( @' h5 f. V
+ h1 s( ~2 }# k! q) t PythonStar:560 * x A% Y7 g& m) {% i0 h% G: W8 h$ {
/ U1 V8 w% F- d4 |( E 9 G1 D3 {, F4 J; m- ~
( ~" w0 k4 M3 w& ?3 x5 S ; Z8 |, r& h( t' i4 [( R
3 l4 l8 f3 J8 ~7 m& {
LovelyPlots是一个包含matplotlib样式表的存储库,可以很好地格式化科学论文,论文和演示文稿的图形,同时使它们在Adobe Illustrator中完全可编辑。 : ?/ Q: k. ^3 W
5 U- i. V% x! C5 n/ s, M! o; ~9 F% V
% F5 M c$ m! i W3 w# N7 r 此外,.svg导出选项允许图形自动调整其字体以适应文档的字体。例如,.tex文件中导入.svg插图将使用.tex文件中使用的文本字体自动生成。 - q- d* K4 o1 W+ P6 q
" e8 V8 D( e+ n
3 g+ A( x0 H. r. [2 o6 ? f
3. tsuki, k+ @/ ?9 B7 t4 \0 l0 ^
* p) O4 g; A( b7 _, B! [
% b4 Q* x) |! B2 C6 V PythonStar:58
k. Y$ s1 p. Z1 Z+ x' v8 U 5 J! k# Z$ _2 y! [' R: L+ ?
- R) Q& f4 T! }* L' E Tsuki是一个极简主义的开源社交媒体平台,使用Python构建。
7 j1 [& p* z! t8 n 7 l( U3 V0 u; u% C
, f$ J& p W. l V* M 4. Xtra
) ?9 l7 a0 R F2 J/ F( U 1 w9 a( ]6 p4 C; |9 }5 [
/ {+ o# Z* v- B! k
KotlinStar:350 * A7 m5 F% v7 S, [' L6 x
/ C1 w3 g! @1 ~) ?& u% d% A4 V. P
. `; w' z7 d* ^. N6 ]# ^ Xtra是一款适用于安卓的Twitch播放器和浏览器。
8 i' W) H9 k3 p
6 `8 L) m! u# T, F! `. Z1 O j/ D" \3 w5 t7 V; e
5. sbctl. T$ t8 h, O3 _, k' L3 J) {) e: ?! _
# p) s2 b. X( ^
4 G& C3 y* p$ t
GoStar:555 * ~5 _$ ]% K0 k0 A7 i' s* h& K% u& B
2 j3 |- V& K5 }, j
; W( n1 @+ V) W
: w5 A2 R. x9 d3 J ; V5 _: L/ ?' B4 n0 m& v5 p
" H/ |) B8 L) O8 p* \$ T( `# [ sbctl 旨在成为一个用户友好的安全启动密钥管理器,能够设置安全启动,提供密钥管理功能,并跟踪需要在启动链中签名的文件。
. m7 b4 v3 J* y1 w7 W% b( P m! j2 p8 e2 k, g
V, @) x5 y. T$ z 6. cli9 @ s; r+ T8 E4 a/ C
- o; Y5 B4 ~" f7 t" C: M
/ j N+ M# c: A: d, `$ m
GoStar:983
1 u: H9 w+ x+ L( ~" d. r, W: A. S
. w+ x1 |* u9 r }
L* a2 h, n: y 用于 IPinfo API 的官方命令行工具。 2 n y `4 ~# w3 V ^$ o
4 J* ~' p3 P) R( i& v# q. b2 R" V
_; h0 M* k! K7 t 7. thisisthewall% a/ d4 x5 {4 B' B
% B1 A2 {/ \( P$ E. Z ! q& a7 M3 Y7 X; h- q( a4 I
JavaScriptStar:14
& m. L9 W. \$ m7 A3 X8 Z. ?/ a) c" ^ : q8 W( f# x+ K: p, W$ N
1 ^) Z% t# \& ]! w5 ] 使用此API,你可以在任何设备的屏幕上获取壁纸的图片。 ; y- n! A* h: ]/ p1 D/ F
: c9 v/ y, u' Z$ D4 e, P5 E
1 z. t. [+ L- P& |4 f" D( k7 _" a 8. magic-regexp+ H/ g8 {1 z! m6 }+ s! v
3 @; q, S6 a' C3 p1 i& X
7 D0 @4 y$ Z& i# z3 Q( r1 ] J
TypeScriptStar:1.4k , S+ s$ [; C* l
8 T8 V* j7 y4 a0 R6 G1 \ 6 I+ [' x: a' c0 D' W$ h
一种经过编译、类型安全、可读的正则表达式替代方案。 8 x* b) P1 `8 t# q- O& H" c
3 B5 ~" {2 ^' b% q& H, O
) |- }6 u6 d8 P 9. frawk
6 s5 S- f& g5 A/ u 3 Y! n8 n" L" N- s# R r
. N# m4 t* M: Y( U
RustStar:1k & r8 M. D" k& c* ?% R [2 `
. e6 F Z" X4 T& z7 q' x # d$ E( p8 S$ A4 z
frawk是一种小型编程语言,用于编写处理文本数据的短程序。 9 O B4 @8 U; o! z8 x7 K
( B, F0 e6 h! M; S8 \1 m
: V4 a' _! L0 t9 Q, r 它类似于AWK语言,许多常见的Awk程序在传递给fruk时会产生等效的输出。如果你希望脚本像标准 Awk 字段一样处理转义的 CSV/TSV,或者希望脚本执行得更快,那么frawk会表现更好。
9 b* E0 s/ q6 b c* C $ _3 r, a0 R# p% ~
7 @( o7 Y. \1 j# V9 v 10. Vale. M" u7 I, P( s/ ]9 \
8 i5 L$ p- a" Q2 e @
/ m9 S/ v8 c" ]5 |6 A! y ScalaStar:1k
9 u. k/ g3 l% i
9 @9 C# r8 g m' K1 ~ 1 u8 W- m1 k4 B# S5 D8 n; O
Vale是一种编程语言,其目标不仅是快速和内存安全,而且简单灵活。 4 ?+ ]6 `8 \: }$ x
& D. u* a' l# n, I2 l8 e* r
, i4 G6 z) S2 {: M
资源工具
% |. u8 b5 P% V3 v L( o- M 9 v5 G9 b, q) E4 m. E9 q
1 {- b' I8 a+ _) }
1. GitExplorer
/ c+ u$ G2 d( v: y$ ?7 G4 Y/ e 9 k* Z3 S3 O) b6 }1 n3 m5 V- A
Q5 p! [/ U0 B2 t6 N5 y
7 @8 u+ P- g) x: i
. s6 M6 P9 a: y / F# J/ E8 Q( b E ?
一款Git命令浏览器,只需要选择想执行的动作,它就可以快速生成命令。 2 N" ?+ i0 p. R
- o' e* g& q. D# H8 o 9 s+ {4 M9 N! ?5 I
2. Bookworm
% D$ Z7 t$ J4 m+ t0 H , |& F7 Q; I6 `' Q0 V% x; l
8 n% H* e. ~+ S& c/ X( k& k ' f. A* J3 L9 r4 P/ j) C$ A5 @
" q7 h9 p& r1 U- n
6 \2 q( m/ `7 D* F% r
适用于 Linux 的简单而功能丰富的电子书阅读器 4 L+ A1 X+ ^9 [% r! K
+ G1 m1 `& k4 _ 9 d8 y& C0 r+ u7 X
3. gitlogs
: D- a# v/ u6 H Y
8 O% k$ h3 |; V1 R# h
- W9 E* {3 B6 q 能够及时准确的发现最新优秀的Github项目。
0 @) F4 V3 B, e& M2 {" e
- f9 w0 E" z1 j & M$ N5 h; ]/ ?- e
4. readme.so6 | O0 P7 p5 g. ~
5 t& |8 ]" n/ Z3 o+ _: R+ A - }- N/ w7 a! w* Y5 ]3 u
" f2 T0 O! A! ^( o
% E% i6 e( P) O* X( u1 Y
. v; w, t" t) U% v readme是Github开源项目中非常简单的文件,那么为什么有的readme写的那么精美? % q0 J+ P! i0 b8 z+ l) g( _
8 [' i) ?1 t8 i
+ x$ b9 c3 E3 F 这款项目就可以通过简单的选择快速生成美观的readme。 $ |% g$ h7 C& Y [
& ]) E6 T5 X0 i$ K \/ a ' `4 c( N4 m$ K A, V
5. learngitbranching9 k- W1 k. v' O! k% w
# i$ F6 F5 v. ~$ r/ r/ _0 w0 i( t
$ M0 [" h' ` d' _7 H9 n2 W% ~
+ f6 r0 W, Y. G4 _* e C % ]: `9 c/ \' l: l
' }5 D, D/ G; K7 f0 d$ y3 K 一款在线的Git分支学习工具,通过这款工具可以可视化的解释常用命令,更有助于理解。
/ f R5 r0 j% `3 |
, K: G) U; z/ ^# D9 Y. m$ [' Y ; u/ i/ ^5 O$ y# I# Y
技术文章
( m8 g' ^% Z4 c* b3 y - n& O, n$ F9 ` @) L
7 { e6 a, r# n. `, u
1. 了解Linux路由
% n, w3 g' Z1 d& L" _
: M( @# {: \0 t. {* _6 j 7 x2 i j' [& K/ K2 Q5 m. A
过去只需在我的Linux终端中输入路route(或者后来的ir route),就可以准确了解我的所有路由。
1 L9 [# F: p* K. N
0 F/ e# \8 |6 E* ~1 L
5 _# E9 v3 f) R y) h 现在情况已不再如此。 9 N" e1 o! h+ ?9 }' ?3 o5 D
! p8 p5 ^' p/ O. Y4 o $ \) {" W$ Z" w6 d4 }! \( e9 X" j
例如,当前使用的机器使用wg-quick脚本通过有线卫士协议连接到Mullvad虚拟接口。我很确定我的所有流量都通过Mullvad,但却无法从我的ip路由输出中看出这一点。
. m" l; Q2 k, ]3 m5 H
2 e) s1 m, b0 l9 B
/ L5 }0 f6 F8 ] 默认路由似乎通过我的物理网络接口而不是虚拟接口定向所有流量。 3 g) y( Q7 t+ d/ v. A! E
) I: P n2 X. ?0 |9 E# b
! C6 W }( ~4 H
通过这篇文章就来了解一下Linux路由是如何工作的。
- e4 I$ A$ l. E0 [5 S/ Z8 _
, R5 M6 h! z5 ]. R2 ]; d9 J: s1 w
8 C% Y- l0 e. M- t& G Y7 V3 q/ I 2. 一个专业程序员的10年1 L* p R8 g0 A! s
6 {" V6 H- v1 l4 [% u+ i! Y
' a1 L1 s# I: c3 t* ]8 v
10年,对于一名程序员来说算是比较漫长的,在这10年中项目、工作经历了很多,也感悟了很多。
) L. R6 V$ T* d& k$ o! t9 h
$ ?+ N1 _4 d7 D' w+ k
& {* Z% d/ n: U/ {( u/ [7 I2 y* Y 作者是一名从事10年编程的程序员,从工作、技术等不同方面总结了自己的感悟,很有借鉴意义。 , @7 ~% r6 `; m* b* [
' e2 A1 q$ T' x0 g& q3 _$ |+ ^
$ a, M7 U" f+ d& S* L6 K/ Y
举报/反馈 ' K0 C! S) {# |* k. `2 }/ m. p, I
( \4 n9 c2 f4 `
* K" E$ w0 [4 I* A" e8 B4 h7 ^% z% {) U: ^1 z8 _ i
1 U; Q8 h+ a: l5 L! r8 \( p) j2 W. }' M4 B6 d
|