% R' G8 X1 R9 f& O& M( n 7 Z5 \( c* S' G* Y$ T
DevWeekly收集整理每周优质开发者内容,包括开源项目、资源工具、技术文章等方面。 ' l! x0 T) f7 {- Z' n5 F) b+ N
H( q# v% Y/ o + s: D7 t I- O1 K0 l
每周五定期发布,同步更新到知乎:Jackpop 和公众号:平凡而诗意 。
9 |6 r( d. K+ I : v% U2 C6 c, A/ Z4 z
- o& z" v0 U, h" S1 ^# u8 t8 \
欢迎大家投稿,提交issue,推荐或者自荐开源项目/资源/工具/文章~ # B' B( \% g2 F/ j
/ @( e1 n2 F4 V" W5 ]: ]: S
2 o) H9 C V2 A O! R
订阅方式: % G* v1 W# V) {' |1 E& Y
; i5 L. E3 K( T* p2 H* |
, E7 D2 l3 Z# N7 }/ Y! H; F' y Star并收藏项目DevWeekly 1 y2 r2 L" S# K) ]; Q- z$ E
关注知乎:Jackpop
5 C, t. R* i/ O9 T 关注并星标公众号:平凡而诗意
* v, h3 X. `! J9 C/ E
( j% M. J, D$ i/ ]% p
C0 Y. |% D4 M# C8 L 进阶技术,优质资源,实用工具,欢迎关注公众号平凡而诗意!
2 x7 U2 N L) L) P
: }. k2 n( ~" d3 \% h2 L 3 \9 t: }( W$ w1 ]
开源项目4 z7 Y8 {1 C2 t5 j9 W) f6 q v
2 j- V# ]+ ^) b2 C& Z/ `$ |
# ?. C5 w" X1 ^/ l# y9 I$ m# Q 1. jetfuel
+ ^ K+ `9 @6 S# _" q" ^, B
/ C. V& [2 H( P x3 a& Q
; G9 _; |- z. \* v. ~ PythonStar:104
1 f3 n" U# S) M& c' F0 |4 a& S
6 W0 k$ T" V# X5 r. E& b+ z* _
! n- z4 F$ t/ s, H , \7 ?1 C8 r4 E
3 p; \1 k0 P! e( {& I) u
! W1 x, T- w' _/ _# U0 n* M4 _ Jetfuel是一种性能分析器,可以监视生产Python的性能,并使结果易于聚合和搜索。 * z9 J! i. x& S& _' b8 y3 J1 W
, I8 s" }: V* l4 N9 J7 l . b. }2 l7 i, P9 x
2. LovelyPlots
% ?- L( ?$ S5 H9 Q8 O2 X6 g6 Q( g 4 O. O1 t( s" B9 O3 w1 c5 o
; B' b" l8 J2 Y2 t- g. C$ C PythonStar:560
- n( A1 {+ l1 R& p) L6 T
, ^6 L0 s0 k% e% W6 O* Z8 L# | / g2 }' b" k' ~! `4 D$ ^4 z
) u. D3 l: p' [6 }! z1 ` : l: e+ J3 I! O+ Y* B! ]6 @
; a5 |6 P0 F0 I LovelyPlots是一个包含matplotlib样式表的存储库,可以很好地格式化科学论文,论文和演示文稿的图形,同时使它们在Adobe Illustrator中完全可编辑。 4 x% u1 H2 j) F* P' i8 m o4 S
# L( g, u9 D% Z
! B. Q- `* W z* v3 `
此外,.svg导出选项允许图形自动调整其字体以适应文档的字体。例如,.tex文件中导入.svg插图将使用.tex文件中使用的文本字体自动生成。 u2 v& U; B: n4 v$ _
" N$ Q; D5 ] _- x5 f1 ?
. K7 R9 k) ~ _' \ 3. tsuki
: G: u+ J2 G; V! Z ) V6 z4 s* S6 m: h4 M4 Q# t
0 [+ F. n8 N! O9 e. A, w7 c PythonStar:58 ! Q; l. D2 S0 l n- w. s! s
3 R5 j: u8 u- [& u. J# j ' u9 M6 l) ]* q4 E, m
Tsuki是一个极简主义的开源社交媒体平台,使用Python构建。 & F) C7 E$ Y; s% {
1 a& q1 T- ?& o/ w
' T( |' }' k" K 4. Xtra
4 P+ ~( r2 c* b' K. U/ f 0 R7 E) y8 S4 a+ R
L- @# ?( k9 u. N0 k: X
KotlinStar:350
5 i- d# A( b& Z8 ^1 P4 |/ M
3 t& o- d+ q$ a4 Y2 A
: {+ f2 z) _ z/ m% ^ Xtra是一款适用于安卓的Twitch播放器和浏览器。 * w% n e; s! T3 b) A, u5 R; r
# M; W1 x! M7 K4 O5 y, n$ J
! w( ?3 a! v$ J# `+ A3 J8 g 5. sbctl7 \% b/ [% |4 E4 k1 W$ Y5 \
: M7 o0 ~: K3 I z" R
; l: h" _/ I* h9 v' c$ \ GoStar:555
" f) t8 J8 c: i& Z3 n- s ' L" r1 j e9 T2 g, W* k4 q/ O, S
. Z& C! N H' K9 l) n+ f
% i. W$ p7 v( a: k3 W , i5 Q2 F7 f$ c# }: U
5 j- n _9 B0 P; b+ T
sbctl 旨在成为一个用户友好的安全启动密钥管理器,能够设置安全启动,提供密钥管理功能,并跟踪需要在启动链中签名的文件。 . b$ d1 j/ v; ?; d; L" u
, ~1 |/ @; t! g
Z) H3 V W) \. X) D6 I- @3 z
6. cli
! M, T4 `/ e! G $ r0 H) j1 x: D) o& [+ `
7 l9 D: i9 A: L4 r6 \ GoStar:983
9 D& L7 {! J4 O, e6 j' }; F 2 Y+ A4 ~4 t2 ], \* @' U/ r
* v. ^$ G4 N6 W1 Y: n 用于 IPinfo API 的官方命令行工具。 # @& y) X4 E1 p/ o" @ h) H: _
: t3 c8 `+ |( Y- o
2 k; a0 B/ z0 e! z) `4 g 7. thisisthewall
& w) \% Q3 J! d' g" {
! F2 D5 N; Y7 b- p; p+ {9 A; {, q* U
/ e' I& H8 k: |) @+ a. T9 m- i JavaScriptStar:14 9 Q. v" j* \! v7 v& n8 [$ ~
" @* M! Y; ^- O) j- U " u, ?+ V7 w% L+ t, i3 o5 J
使用此API,你可以在任何设备的屏幕上获取壁纸的图片。
u' _ `2 W9 M' {8 o. Y# R' O
( L6 [6 y9 e8 E% H% m {/ K * c& X% C5 P7 H) b
8. magic-regexp
$ Y* d; {, v' y# a6 |3 _1 ^, H 5 i, ]/ G* g9 I) }# q) g; t; H8 U
0 C9 B# I2 c8 S8 K TypeScriptStar:1.4k - [) H+ J7 U! B
. t9 N5 D) a6 C. J" _
( h K1 l6 ^* v% R. `; h 一种经过编译、类型安全、可读的正则表达式替代方案。 ; a( t) I7 F Z( v- a6 h- S1 o. D
8 j5 T! h0 Y* J1 [7 I5 x
- N2 x) C* u; W/ H8 I 9. frawk) U) j1 \0 m7 x' e2 h6 N- r' \; G1 S, c
2 f W4 {) z& [# V
) @8 U7 \* L) Z* F- o' P8 D4 h$ z RustStar:1k & z" B0 e$ Z( u- e: e" a4 K
% I9 ~" l8 M* C; ]8 h
9 b8 l+ G- z S frawk是一种小型编程语言,用于编写处理文本数据的短程序。
2 {# X- l+ I* l' Z6 T* R$ g . K/ F$ k) ` [, j7 B5 J& g
- T( W' j6 N' N3 q 它类似于AWK语言,许多常见的Awk程序在传递给fruk时会产生等效的输出。如果你希望脚本像标准 Awk 字段一样处理转义的 CSV/TSV,或者希望脚本执行得更快,那么frawk会表现更好。 " g: h1 l5 x1 f$ |3 R
7 h1 e. K' ~- c! u 4 Z) t _5 K8 D: g1 ?
10. Vale8 h9 C1 Q/ p& c1 N3 X/ ?" Y% G: h1 w
% K' U" j7 W& k; H3 |) v
0 `3 V) _9 ^8 m' l1 Z' t! u+ r
ScalaStar:1k - b7 b8 \- z# L b) |
8 `' e5 d) s- O C' p3 l
8 J+ E' Z1 k m1 l+ P2 U3 ~ Vale是一种编程语言,其目标不仅是快速和内存安全,而且简单灵活。
/ e, y5 S$ L: W4 G" x9 t1 U
7 i4 k# g k. B7 h. t3 w+ z
$ h- v" _( v' c# X1 x/ Q; f 资源工具
( X$ S6 ~# p( ~6 Q2 l 0 M! v* Z. J' }
( R) [/ q: K" p8 k3 H# t9 I* p; z 1. GitExplorer
& d* S2 r* M! B" C$ W$ s8 R: R* r: U9 I
1 V7 C7 i, ~' T: [# _6 l
2 @! { `$ @2 J" q2 S2 w' I' K : c9 D# Z' W! J+ S! ]- [
* O) Q& Z7 h9 c& Q - H; V e# V: J! K# l* c
一款Git命令浏览器,只需要选择想执行的动作,它就可以快速生成命令。 0 S0 U+ F7 N" z" j4 H
& d9 [% J8 k' \) C! S0 @ * V- h2 O9 N+ D6 v" v4 y' r2 N7 s
2. Bookworm
H2 N, k; N9 X5 o X) e9 j4 o
# |; C8 ~9 c! E! p4 |* X7 V - p+ [; `2 A! |9 K( u5 L
* s1 Y+ c- d) Y, @
* Q/ y- G0 O3 ~2 W' X) d/ f* l3 I
/ G" ?: |, S- N4 c 适用于 Linux 的简单而功能丰富的电子书阅读器 ' i0 p/ g; `) U3 Z/ ^
5 G5 M* R# T5 M7 Y9 H1 R X: v" J ?. j& P+ p
3. gitlogs
+ g: y7 o- \1 w% Q " h: C5 b A5 ]) J
- r( h5 [; ]0 v9 U7 h 能够及时准确的发现最新优秀的Github项目。 ( [ a$ f% ~" u {2 \; m1 u# ^
( }" a5 J8 O* b# v8 a ( F$ C; X0 g) X$ N# C2 l
4. readme.so
% B6 U9 f5 F% L# a- r- z$ A : r; o* z: V( R+ b4 E
) @6 z K# I+ W, x9 ]4 A) f; t
4 X% [; G4 W( X% n0 X( v
, f* K7 _; [! }# s8 ?9 M* d . }+ |- M0 b5 W: j0 @' ]
readme是Github开源项目中非常简单的文件,那么为什么有的readme写的那么精美?
! n* w3 |+ o( k- G6 ]9 N
7 I# G7 Q( c% J - a) k( a2 O; D3 U5 E
这款项目就可以通过简单的选择快速生成美观的readme。 - H6 M3 W! e9 y: ~5 M0 r
2 j) q) b. G# Y3 R# l- @' V' ` + A/ G6 i' N1 D* Y* F
5. learngitbranching" B) i5 G' V0 z7 g! @
- T- B$ |- g% i9 T, k& D8 K1 K , p" o1 @* I9 B; Z) @' T$ [
2 O* l6 y# M5 O
- u/ ^+ V# m/ D 1 y$ j% V* y0 @1 V3 ?
一款在线的Git分支学习工具,通过这款工具可以可视化的解释常用命令,更有助于理解。
. ^3 P( H s8 n0 }6 f 3 \* G9 A7 }- o3 O6 c# w! `$ F
8 R6 t8 d5 } O: P5 z
技术文章
$ D( R* M$ p2 o4 `( J
2 w! T8 Y% m( i) {5 R8 v
4 S+ W9 Q& \2 ^* u6 L 1. 了解Linux路由2 x7 G+ R+ \* N( P
" k6 U q+ _3 ?6 S* g8 Q
/ s1 h: W" f3 A, m b
过去只需在我的Linux终端中输入路route(或者后来的ir route),就可以准确了解我的所有路由。
$ r% }+ p" r) l$ L , P! t' R+ ^7 S3 W
# v4 M6 ~& X$ o+ a' @! c, p7 U
现在情况已不再如此。 & ]8 k0 j) p. g
W: s& R# t/ n- r k: d6 b$ P
+ y. x! X8 V8 H1 F3 S
例如,当前使用的机器使用wg-quick脚本通过有线卫士协议连接到Mullvad虚拟接口。我很确定我的所有流量都通过Mullvad,但却无法从我的ip路由输出中看出这一点。
2 G7 L. T9 \7 S
' ]' s8 a6 M) b. r 4 I5 Y, }' M) A' s6 s
默认路由似乎通过我的物理网络接口而不是虚拟接口定向所有流量。
5 p z. R& W; O" y& s [4 M/ S+ Z
1 Y% t3 {0 N/ G2 v: f6 F$ B 9 y" P& H+ D1 t! S$ j
通过这篇文章就来了解一下Linux路由是如何工作的。
# |& N1 Q1 m l
- S6 g: |- C4 J" g2 J+ [& }
0 x b) ]) Q; s; q& y8 P' B/ t 2. 一个专业程序员的10年" B( P4 L. K9 ]
1 }6 s0 Z0 Y" M
* e8 F2 I. y5 I5 g/ z 10年,对于一名程序员来说算是比较漫长的,在这10年中项目、工作经历了很多,也感悟了很多。 , e; a/ y. s* V: F1 [
1 P7 B1 y' i: p- ^6 {0 @
) _" b/ S8 B1 b0 ~6 k 作者是一名从事10年编程的程序员,从工作、技术等不同方面总结了自己的感悟,很有借鉴意义。 5 `; a8 i5 R, x
+ _/ c# u9 K4 |8 s' q, p
- c- ?. w z! n$ f 举报/反馈 7 S4 A/ X# {* X; x4 Y4 F6 G
! S+ n1 [% ?( b# ^9 {: Q3 }
* f9 I/ l) n3 q: \
; ?$ M5 z2 S" C+ E' c) V) I
3 ]& `6 G6 r* @* T6 l% u
- j7 w0 J1 B$ z0 q+ F+ W
|