5 e8 ^8 v4 R8 \. `; }+ z( T0 ?6 e ' b# E( s( S& V# L, @# h
DevWeekly收集整理每周优质开发者内容,包括开源项目、资源工具、技术文章等方面。 # _2 T6 L: \* y" j
" ?/ d& T7 Y/ p, H/ t
) p) Q8 c& S p3 M: U1 _ 每周五定期发布,同步更新到知乎:Jackpop 和公众号:平凡而诗意 。 9 N$ u, g( |* l3 L! u6 F( s
; S' s$ c A9 D0 o: w * `: A1 C3 ~6 @7 H
欢迎大家投稿,提交issue,推荐或者自荐开源项目/资源/工具/文章~
2 X# M5 Y; E$ U+ P ~ `
( u2 E, S7 i. [3 C; q8 T7 z" Y
- s* _" r; ~. e' `6 {8 Z0 t. D& j 订阅方式:
2 ~0 P: Z# x" `4 _- ]( U 3 J' u9 }' {, ^1 G
; j# H) _4 R8 T' o Star并收藏项目DevWeekly
$ Q8 J! ~. i: Y+ g- H* J; ~' L6 }4 m 关注知乎:Jackpop
' I9 T) s) w/ E- A# U 关注并星标公众号:平凡而诗意
' d: w7 ]* `$ E+ Z
! H+ Y7 U* c. P& q E: n* J
& S8 _: _4 Z, u/ I" C+ b! A( J 进阶技术,优质资源,实用工具,欢迎关注公众号平凡而诗意!
& E0 h( @5 l1 u$ J* ~% `' i1 G
P* ?2 X7 |# G# ?2 I. j : `. y [9 R( ]3 c. F b
开源项目
. ~) t# q, `0 t0 M: J1 V; ?; G
" \3 h s: c0 m0 r 7 i! H% M4 z2 g- v2 ` d- m
1. jetfuel; a' o$ v T ~& s8 ]; R) Z
9 ?6 F8 L) v8 c% i( I$ Y2 j6 ]& @
* P8 f0 y, z K' V: S
PythonStar:104 : j% y6 _1 z! w' u9 Q
- T1 U( ^5 H& i E# U, p
/ @; W) ]0 \- m
! @$ [1 _4 \, X% x: h4 @
6 [$ w" i+ r+ O2 ]* a; A4 K( u
5 `( Q9 m+ l+ D" ?% B) ~ Jetfuel是一种性能分析器,可以监视生产Python的性能,并使结果易于聚合和搜索。 0 c# n2 W8 v6 y: n$ e5 D) U6 k/ H
: C: P- A; y0 j% \( B # M7 E% N' N0 u1 _+ p
2. LovelyPlots
- ~9 I: J, y( G 7 _$ C$ K2 x3 M' f% Z
" i9 g/ t J+ p8 M& o PythonStar:560 ) |& l/ b' i' [5 K% k. c
% ]8 I5 T: P: V9 X8 y
& N; U7 ~4 k4 x8 z 4 Z, o2 |: r" c6 U% L
% U9 M7 Q6 y: A . b' Q0 b' L$ q5 I6 B5 N
LovelyPlots是一个包含matplotlib样式表的存储库,可以很好地格式化科学论文,论文和演示文稿的图形,同时使它们在Adobe Illustrator中完全可编辑。 4 h( E0 P7 D$ K* \& G6 o
$ L, F) ^3 S; ^; D. s
3 [5 a" Y9 ^) p/ Z0 h' `: _
此外,.svg导出选项允许图形自动调整其字体以适应文档的字体。例如,.tex文件中导入.svg插图将使用.tex文件中使用的文本字体自动生成。 % Z8 Y& W0 C" j8 g W$ V' J* J
$ w9 j$ ]1 Z d) y" }' f; i2 t$ W5 {
# F" |( ~8 S1 r8 M; B9 Y 3. tsuki& C5 I6 Q8 |- S5 F
* H1 N; G$ l7 ]% }
0 ?8 P. M% s8 W# [' r9 y7 ` PythonStar:58 V. w; s/ f# b9 k% y! M" l& U
+ @# k+ T/ T' U! v- `; Z 4 D5 V3 Z5 c4 G0 y
Tsuki是一个极简主义的开源社交媒体平台,使用Python构建。 + k( ^+ f' p3 c# Q
' [- N9 g T$ P5 n3 e! F ?" T+ f5 _, F' L# i: ^
4. Xtra* @8 r! `& Z0 M
3 _5 l" @# n! C% I$ u( G* m
0 G4 h" I5 `, l' ~3 e$ d1 l" Q KotlinStar:350 7 _, I% A3 f0 y5 t* D% H& T
5 H- @1 G' U& K8 Z' N/ ? ) _6 |& R4 ^' [: M
Xtra是一款适用于安卓的Twitch播放器和浏览器。 3 S: q0 k# W1 K, e
4 N1 T3 E/ t% e 9 O M- n* [* [; `+ o: [9 d
5. sbctl
, K) f4 ^9 d0 Z2 J) Z9 r 5 ?3 j [) y$ [9 n- c, p
5 s' Q' R( l- x0 m% s' q8 V GoStar:555 1 Z5 D8 a& t& Y, u
) x/ h+ K# u- e. q
( b' h; d# s/ B! k, q. c ! X, ^ {0 I" x- X5 `
7 V7 e% e# d9 r & x# N; \. Y+ ~! Y0 K0 J. b9 ^
sbctl 旨在成为一个用户友好的安全启动密钥管理器,能够设置安全启动,提供密钥管理功能,并跟踪需要在启动链中签名的文件。 % u9 I7 v2 S5 e# p# c$ M) Z
% K. j" p8 Q7 d9 Z: f 4 ?4 P; r# l+ b9 @& p/ d8 q
6. cli
% r- o' k3 T# |
% e$ e6 k, i6 W( e" X# s
/ s# T3 U6 M; N% j GoStar:983
% |9 f/ I+ a- Z. b) a/ }
2 v0 a b$ V5 G) @* X % ] G# x% U) A. }8 ~
用于 IPinfo API 的官方命令行工具。
/ b1 ?6 j9 _) P5 p
( E' Y6 R! {) S- D6 i, O & f' z) ^/ J' W3 g) n p
7. thisisthewall9 g. q. M8 U& o I9 A; d: V# f2 |3 y
* x+ P. Z- J1 @9 j2 g
% R1 M x3 G. N JavaScriptStar:14
6 Q. }( D- ~* V6 x, |: W0 `* ` / e6 ?% K; x# i9 ^8 s, @- q: r3 D# N3 ~
6 [0 t2 m9 Y5 V0 h0 x; J" M
使用此API,你可以在任何设备的屏幕上获取壁纸的图片。
4 t$ v# u, t' o! m) J- `) u" @8 J
$ a5 U; c6 m2 t+ R" l& | 0 }0 o, ^/ N/ A1 m
8. magic-regexp* ^& `! L' S4 _$ K) q7 N
( O& N9 h7 o; L) O ! x. M* u! [5 D' ]+ G
TypeScriptStar:1.4k ) k {$ u9 S' Z7 R
2 z/ `6 \1 c$ ]
( M4 U# l% r' \5 T% H2 D+ M# d" h( a 一种经过编译、类型安全、可读的正则表达式替代方案。
- }5 T. `2 X/ k* G; G
1 E1 R- |8 a# U7 l
. I# o) @. V9 ^& i+ { 9. frawk
4 ^6 q M5 b2 K' x4 C6 u' [0 i L
0 m" a# t6 X2 s: H6 C/ A) U* x1 i% D
+ N! O' Q& w" n ~ RustStar:1k
# t0 ]' T: c3 [% g9 o# b - c A' W+ A( J- O
0 k; C8 W: u, I. ^# l- G9 G
frawk是一种小型编程语言,用于编写处理文本数据的短程序。 + h( d% r! m+ S, c9 T! v
# Y6 B! F2 y: e8 N5 Y( q 9 E* w! C. `6 q: {9 J0 B, V0 u" a
它类似于AWK语言,许多常见的Awk程序在传递给fruk时会产生等效的输出。如果你希望脚本像标准 Awk 字段一样处理转义的 CSV/TSV,或者希望脚本执行得更快,那么frawk会表现更好。
, l; y" D" ]# c1 g2 g; Q g
3 b" P: j, d+ o; i
6 H# E8 {# A3 h. K4 j3 s 10. Vale
. a* l4 T% K! ~' f4 S6 ~- v2 s
/ R- n1 }* L# k1 S4 B1 e% A8 X3 } " O( B1 T0 R% @5 p/ e B( l; f, T
ScalaStar:1k
: z- r8 i6 G+ N" q6 F 6 g. g( c: Y) m3 Y ]
0 w0 ]7 X: G! J1 _ O2 N. {) m Vale是一种编程语言,其目标不仅是快速和内存安全,而且简单灵活。 7 f& R5 Q' ~+ C2 w( Y
* U6 S! _4 P# O5 v/ {
: W3 U% K' v8 S 资源工具. q/ L( v0 t" \9 G1 i5 L% b4 B* i
" R) o/ w+ m0 Z9 U. n
" k/ c% k3 j, G9 s! L 1. GitExplorer
2 _8 m- A# o, [ j. [' z' x8 T
1 x9 e0 ]2 }6 a: F, A ' v; t2 P0 [( M8 u7 Y5 p
/ f' d% v2 ]. k ( c( M3 l, E3 N
+ M* {9 r7 S. k4 {$ l* b) @. t1 w
一款Git命令浏览器,只需要选择想执行的动作,它就可以快速生成命令。 7 N5 a% Z7 X4 {4 g1 x
# O' h6 n _& |+ y0 P9 i( u
: q" Q2 V) u( q 2. Bookworm0 c: a$ L, [& X1 D4 o0 u6 s
+ e! L$ Z1 V* Q" Y9 F
/ f* y6 B# b" V
, W7 t- e/ b$ c! f# w/ C" J 7 _' d! I, G5 e- y! ~+ x
+ K" ]# H" _; D W r& g
适用于 Linux 的简单而功能丰富的电子书阅读器
8 _6 Z; W) W8 ^* [% Q
( h( z) r( t1 {% F3 [. E# z7 d * i9 `; c: |( K/ ?
3. gitlogs9 T/ K$ q0 p! i# [0 x/ p4 k
! k' F' ^$ I% O6 s R
7 u9 K% D6 w. i \% C N P! N0 g$ \ 能够及时准确的发现最新优秀的Github项目。 9 F8 R( ?" y1 ?
. ], U- d1 V( B4 ^8 _
, r9 i M3 D1 a9 V {4 G- v9 k
4. readme.so
9 l0 v* |3 e7 E& j/ ?2 Q5 B& b* H
1 f3 O* K) T4 U, v6 z* T $ k2 Q* t; Y% l5 W. i
' Z+ s7 Y( X) I# n1 i
4 M" A1 O3 T+ t, `: }0 T
: E0 D3 }) V. s2 ?, j8 T C readme是Github开源项目中非常简单的文件,那么为什么有的readme写的那么精美? - g2 @" n( D3 s
$ D0 k4 _ ]! X2 }& y0 B% I . x% |& u3 P& F A: t/ H
这款项目就可以通过简单的选择快速生成美观的readme。
& c+ [' ]. v" j* s/ q5 u
* }2 O, ?( [+ x! Z. O) b
* y8 `3 ?- K# n2 L( A$ D 5. learngitbranching
# b O; X2 }5 D" \ & h# f/ Q- F1 N4 Z) F. M; X
& n' g" G6 `1 i+ F& @5 B
1 t8 @+ A& q3 K* {! b/ X0 I7 {8 H
0 ~9 }! r# g4 L$ D. ~, y" z1 G ! _' b4 q( q; w" e8 c( r4 P2 h
一款在线的Git分支学习工具,通过这款工具可以可视化的解释常用命令,更有助于理解。
9 @' f" G& b) R' z
. F- ^0 s( i: B 9 i" \: L, S4 t6 e% r. ~( `- Z
技术文章. _, M4 M5 m; h
, q! k% Q. N3 X. L) H E
! R8 c% _0 G, t8 {5 q5 |0 u 1. 了解Linux路由# k9 b* @! B7 Y- z# X
$ }; v1 P9 E- s
7 U$ k7 L* `4 H- R8 w- Z3 y; F 过去只需在我的Linux终端中输入路route(或者后来的ir route),就可以准确了解我的所有路由。
% L. g3 z8 K7 E* v 3 b7 u2 r) Q' ^
3 Y; `6 Y5 J7 k+ Q1 L 现在情况已不再如此。 + }) }0 v* ~- m. @; r$ _8 k
3 ~/ E+ v( W( W5 I9 q6 h# B' A! A2 r
6 K- w6 J0 K( Y$ w6 @ 例如,当前使用的机器使用wg-quick脚本通过有线卫士协议连接到Mullvad虚拟接口。我很确定我的所有流量都通过Mullvad,但却无法从我的ip路由输出中看出这一点。 " I; @ l' @, p# z A, ]
+ ?' P. f; @2 l! o0 f
: S6 ^* Z+ ]9 l7 y. _ 默认路由似乎通过我的物理网络接口而不是虚拟接口定向所有流量。
M0 j; Z w. C7 o( r
$ t+ R2 H U' }! q: V$ Q* D/ O ) L/ O. O* ^* s/ P; M* N
通过这篇文章就来了解一下Linux路由是如何工作的。
7 Y' q: z. v4 J0 u) Z7 [
k/ S( _# b8 h$ b
7 {% ?: `$ Y t 2. 一个专业程序员的10年
) ?( U7 R9 `" n" Y " |& r) K7 @, d P! w; j2 J) V
8 N) w: c' b6 A
10年,对于一名程序员来说算是比较漫长的,在这10年中项目、工作经历了很多,也感悟了很多。 & z$ v( `/ d" D; A$ i
W4 X6 E$ p3 P4 a+ J
7 L& K- [& X- N) s 作者是一名从事10年编程的程序员,从工作、技术等不同方面总结了自己的感悟,很有借鉴意义。
% M4 Y+ A8 b5 j: C* ]
4 u% D C- z4 ]' f0 I - V" ~. z/ C. G% {8 s" R
举报/反馈 9 x% q: _; b5 y) w0 e
9 ]' W8 D ?+ @) L1 o! L; e1 R
_1 v0 e& L7 W) G: J) }( `+ \4 L
' C. Y& f8 K" S; P: K
% f4 Y# S5 J. O$ K! O3 |, n( B4 K/ @" M1 l
|