|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
背景
& d* n$ n6 U, R" u! |- _/ o0 [2 K在社交软件中,通常大家在互相不了解的情况下,如何寻找志同道合的朋友?一般来讲,我们会通过关键词查询,比如:校友群、单身群、兴趣爱好群等。而在一个社交群体中,大家也会通过自我介绍的方式向其他成员介绍自己。" q6 ~2 ^& T2 d/ |3 y8 M% j6 Y
; g7 i/ l, q* k& E0 c. g0 Q2 B
开源社区本质上与其他社交软件类似,是一个以开源项目为载体、寻找志同道合之人的社交平台,而开源项目的自我介绍就是项目文件。一个靠谱的开源项目都会在项目的顶级目录中提供详细的说明文件,完整详实的说明可以帮助他人快速了解项目,降低入门门槛,更能吸引对项目感兴趣的开源贡献者参与项目。因此,想要了解开源项目,了解项目中的各类文件是非常有必要的,有助于提升我们对项目的理解。 Z/ ?4 Z% `1 Z
3 U) k! m S# t, b; g1 K! X2 U
文件类型
* |% p2 r0 [! U1 d( _我们常见的文件类型有很多,不同的项目中用到的文件也各有不同。可以大致分为 5 类:说明文件、编程文件、脚本文件、配置文件、资源文件和软件包文件。接下来,让我们来逐一了解这 6 类文件。
R4 E M* Z, _9 W& S& z$ x; {$ q* S G
说明文件
6 U) Q9 F" {4 q2 [5 _3 F9 d: k5 v说明文件一般会在项目的顶层目录列出,用来提供项目介绍、使用说明、变更记录、参与者及使用者说明等。下面列举几种常见的说明文件:
$ t: {! V) E M+ L) e! G RAUTHORS:贡献者列表,记录项目的贡献者。
' s& x# _2 [) s4 n, Q; _DISCLAIMER:免责声明文件。! R% N! R7 X7 O; I' r9 x$ M! T4 G
CHANGELOG:CHANGELOG 文件用来记录项目的变更记录,通常包含 Added、Changed、Removed 和 Fixed。
- `8 _" Z& J" P* X3 ?CODE_OF_CONDUCT:行为准则文件. 行为准则定义了如何在社区中进行交互和交流的最佳实践, 它也可以作为解决社区成员之间冲突的首选文件。
1 L7 G5 e1 @6 o" r) ~CODEOWNERS:代码所有者,代码所有者文件是 Github 提供的特性,可以指定文件或目录的代码所有者,当文件或目录出现 PR 时,可以推送给代码所有者,提醒进行 PR 审查。# q( F5 Z9 V o- {6 d/ m( J5 L* r. L4 x
CONTRIBUTING:指导参与者如何对项目做出贡献,CONTRIBUTING 中表述了项目需要什么类型的贡献,社区或者本项目的作业流程。
# G5 w, _! ^ j# k, aLICENSE:开源许可证文件,开源项目通过编写开源许可文件,声明项目使用的开源协议。5 V" [- v5 w9 W% l) [
NOTICE:用来存放 License 定义的法律声明文件。( `7 Y# i. M3 e G7 _ Y6 a- q9 C; t
README:项目介绍说明文件,通常 README 会表述项目的用处、发起原因、快速使用等。
( ]7 K6 a4 u/ P需要注意的是,上述文件仅作为项目开源的指导性文件,属于约定俗成的开源项目规范,并非强制要求,请根据自身需求选择使用相应的文件。当然,你也可以按照自己的想法制定自己的项目规范,只要能够帮助项目在开源过程中的能够很好的管理、开发和维护,能够保障项目相关权利,它就是一份良好的项目规范。
4 C! X9 e* ]( J* U9 K8 @) W9 |& {7 i% h7 T
程序文件) \. X, a4 I: J4 {1 H
程序文件主要依赖于对应的编程语言,是一个开源项目中占比最多的主要文件。说明文件用来帮助了解项目的全貌,而更细节的内容就需要从具体的程序文件来了解了。程序文件的存放目录一般与架构设计有关,比如:Java 项目的程序源文件(*.java)默认存放路径为“./src/main/java”。下面列举几种常用的程序文件:& M9 c- o6 @! v& \: Y
*.asp:ASP(Active Server Page)程序源文件。5 g7 k! @6 a- @& R) C. q
*.c:C 程序源文件。. H& c$ {9 w& [7 [, F
*.cc / *.cpp:C++ 程序源文件。
/ v2 w( @5 k$ ^: Z. k( d) z* J*.class:Java class 文件。
: d5 t4 L5 w' `& i* Y) z. y3 N @*.frm:MySQL 表结构定义文件。4 \# q/ m% }+ \3 |* b& R7 W5 I
*.h:C 程序头文件。
% x' w, _2 C0 H) H e7 b. D*.hpp:C++ 程序头文件。6 @/ A' G2 c6 j
*.java:Java 程序源文件。
) J* n7 R( |% b' q*.jsp:Java 语言编写的动态网页程序文件。
4 f# i: @+ w; V*.php:PHP 程序源文件。
+ j0 v5 r5 ?8 }! L*.py:Python 程序源文件。
( }8 i+ u: c' b8 t) y8 I*.ts:TypeScript 程序源文件。
' s+ \( q2 T t/ f* e, `+ W*.dart:Dart 程序源文件。; u) ~, j+ J& B0 {% a
*.go:Go 程序源文件。2 ]$ o5 V- Q5 o" H% o
*.cs:C# 程序源文件。+ r: } {' s: r5 A. V
*.kt:Kotlin 程序源文件。
/ N6 C$ K7 r- }1 o* v& Q( z& K% q! |; m: O, u' f$ C. t) r: R/ G
脚本文件2 F& M1 t6 ~1 L9 Q$ g" I
*.bat:bat 文件是 Windows 平台下的批处理脚本文件。
% b, g' Y$ m( A; a k* o! E- y*.sh:sh 文件是使用 Shell 的语法与指令编写的脚本文件。
% K9 u4 k. Z: Y W/ U*.sql:Sql 脚本文件。
& h( I9 X7 h# `, L% V% U9 W' L*.vbs:Visual Basic 脚本文件。% r$ W- t* ?, [/ E) w8 _
4 L+ S( a5 H4 {! a" b
配置文件6 ?) q- j# N2 a5 v \7 i
配置文件顾名思义,是提供项目中所需配置的文件,包括各种配置信息、脚本文件、数据字典、Mock 数据、样式文件、模型文件等。配置文件的存放目录并不固定,存放目录一般与项目类型和项目规范有关,例如:SpringBoot 项目的配置文件目录默认是 resources 文件夹。下面列举几种常见的配置文件:
7 E' ^2 R7 t1 `6 V! o*.config:config 文件是一种的通用配置文件,不同的程序可以根据不同的格式来存储配置信息。
+ D( F& I( x* w% Q*.ini:ini 文件是某些平台或软件上的配置文件,以节(section)和键(key)构成,比如: Windows 操作系统、Mysql 配置等。+ u, D* \$ o" J m
*.json:json(JavaScript Object Notation)是一种轻量级的数据交换格式,常见于 Restful 接口数据交互,以及 Mock 数据。
- i( D1 j4 L5 t*.lua:lua 是一种由标准 C 编写小巧的脚本文件,其设计目的是为了嵌入应用程序中,为应用程序提供灵活的扩展和定制功能。# \; T0 v, X, O4 S7 i# v( m$ x
*.properties:properties 是一种 Java 中常见的配置文件,通过"键=值"的格式存储配置信息。$ {" Y! ?0 u" I
*.xml:XML 是一种可扩展标记语言(EXtensible Markup Language),由 W3C 制定。
& U2 v; V9 p" {8 i* Q: A) D/ a*.yml / *.yaml:YAML 是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互。: G! A W, Z& W4 O
1 R% S/ ?9 }* `" S! {6 @5 g/ L静态资源文件
0 V: x9 e/ `7 v X静态资源文件是指非服务器动态运行生成的文件,一般包括:静态页面、样式文件、压缩文件、图像文件、音频文件、视频文件和文档文件等。* l' P' S* A, S/ c9 Y/ Y
2 N( d+ v9 t8 P5 |. M页面文件
4 D6 u" A4 h& e- Y: P*.html:HTML 文件是可以被多种网页浏览器读取,产生网页传递各类资讯的文件。: \" l* m L' P8 f1 B
*.js:js 文件是使用 Javascript 语法编写的网页脚本文件。
1 A, o0 R" E9 n! |: r% V7 }
+ f4 R4 z6 c+ m, G0 I; u8 n d( S样式文件
0 _( V7 N5 A8 J. K6 B& j4 Z*.css:css 文件是使用 CSS 用于描述网页上的信息格式化和显示的方式。! q( T8 L- ]: | q7 l+ k
( v4 v/ d4 `5 Z4 d$ p D: C压缩文件
0 Q5 ]$ _, ~1 ]' ~*.7z:7z 文件是 7z 格式的压缩文件,是一种主流高效的压缩格式,拥有极高的压缩比。
+ P% c, I: z- v% i' k& N*.gz:gz 文件使用 gzip 命令压缩的压缩文件,是 Unix 和类 Unix 系统中经常用来对文件进行压缩和解压缩的命令。
# f# G! _' Y; R9 I*.jar:jar 文件是一种归档文件,以 zip 格式构建,可以使用 JDK 自带的 jar 命令创建或提取 jar 文件,也可以使用其他zip压缩工具。* }. x9 H& r0 i* x( \7 _, u( U
*.rar:rar 文件是一种较高压缩率的压缩文件,可以管理的文件大小几乎是无限制的。
7 e9 N. C3 }9 a) \# U# g" e*.tar:tar 文件是 Unix 和类 Unix 系统上的压缩文件,可以将多个文件合并为一个文件。
8 h' }( I' d' }' C5 r*.zip:zip 文件是一种开放性的压缩文件,压缩速度较快,处理单个文件的最大值为 4 GB。
" D& S0 g9 j5 z* \- t) |
) R$ ?1 N( [+ W d! r图像文件
. I6 R! L4 R7 \& U*.jpg:JPEG(Joint Photographic Experts Group)是一种广泛使用的图片有损压缩格式。1 I7 e# Z* J) ]1 z; X
*.png:PNG 是一种采用无损压缩算法的位图格式。
- U- Z I* y# s( K$ i4 O6 u7 D*.webp:WebP 是一种同时提供了有损压缩与无损压缩(可逆压缩)的图片文件格式。! P6 a7 W9 p- Q: u' \/ I
*.bmp:BMP 是英文 Bitmap(位图)的简写,bmp 文件是Windows操作系统中的标准图像文件。
" U! W A# R8 g& f) l) o4 l*.gif:GIF 的全称是 Graphics Interchange Format,可译为图形交换格式。) O4 [1 {% t) u7 ]2 ?- X
*.ico / *.icon:ICO 是一种图标文件格式,图标文件可以存储单个图案、多尺寸、多色板的图标文件。一个图标实际上是多张不同格式的图片的集合体,并且还包含了一定的透明区域。! w& h# Q0 V* l/ \" |( T; q
*.svg: SVG (可缩放矢量图形)是一种图像文件格式,使用 XML 来编写,可以无限制放大而不影响分辨率。1 t1 k; o1 Y6 f; J/ S, }
( s% k- [- b3 e' {9 [音频文件) a' q3 q2 C& R( q9 X+ T( k
*.ac3:AC3(Audio Coding3)是杜比数码的同义词,杜比数码是一种高级音频压缩技术,它最多可以对 6 个比特率最高为 448 kbps 的单独声道进行编码。* X6 L# v' n/ f
*.acc:AAC(Advanced Audio Coding)意为高级音频编码,出现于 1997 年,基于 MPEG-2 的音频编码技术。由 Fraunhofer IIS、杜比实验室、AT&T、Sony 等公司共同开发,目的是取代 MP3 格式。
* A- T# G! W9 u! P! M% Q" K*.avi:AVI (Audio Video Interleaved)是指音频视频交错格式,是微软公司于 1992 年 11 月推出、作为其 Windows 视频软件一部分的一种多媒体容器格式。
- Z8 _$ p3 S# t% o7 D9 H*.flac:FLAC 可解释为无损音频压缩编码。不同于其他有损压缩编码如 MP3 及 AAC,它不会破坏任何原有的音频信息,所以可以还原音乐光盘音质。! u5 e9 H1 P- a$ s6 R6 g
*.mp3:MP3 是一种音频压缩技术,其全称是动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III),简称为 MP3。) H1 c8 c$ M+ T p: u
*.mp4:MP4 是一套用于音频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“动态图像专家组”(Moving Picture Experts Group,即MPEG)制定。! J1 X+ P6 o! }
*.m4a:M4A 是 MPEG-4 音频标准的文件的扩展名。* C! b# i2 E7 N3 g
*.wav:WAV 是最常见的声音文件格式之一,是微软公司专门为 Windows 开发的一种标准数字音频文件,该文件能记录各种单声道或立体声的声音信息,并能保证声音不失真。9 L5 [' O' C& q4 u2 J7 v1 y6 v# t
8 H6 u# }+ J2 x, ~7 b7 I& ^9 Z视频文件" ]- v! c W6 ^$ V# R1 o
*.flv:FLV(FLASH VIDEO)是一种流媒体格式,是随着 Flash MX 的推出发展而来的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能。
* D1 I1 P( Q, _( O$ r2 K*.mkv:MKV 是 Matroska 的一种媒体文件,Matroska 是一种新的多媒体封装格式,也称多媒体容器 (Multimedia Container)。
4 P7 J" W# I+ ]% V6 b! \
& C, K8 D# A: s( \ U7 x文档文件' M$ D0 F; x* A* I" O
*.chm:CHM 文件被称作“编译的 HTML 帮助文件”(Compiled HTML Help file),是微软于 1998 年推出的基于 HTML 文件特性的帮助文件。
3 M9 L; R v( p8 i2 A, w*.doc:doc 文件是 Word2003 以前版本的文档文件。. t7 a% ]% o. Z
*.docx:docx 文件是 Word2007 之后版本的文档文件。1 ^, K4 V& G' _& K* b% `( x
*.md:md 文件(即 markdown 文件)是一种快速标记、快速排版语言,遵循 markdown 文档的基本编写语法,现在很多项目中的说明文件都是用其编写的。 N: x# @8 G- b4 k
*.pdf:PDF(Portable Document Format的简称,意为“可携带文档格式”),是由Adobe Systems用于与应用程序、操作系统、硬件无关的方式进行文件交换所发展出的文件格式。
3 z: }7 P! O' n5 T$ E*.ppt:ppt 文件是 PowerPoint2003 以前版本的文档文件。6 s+ [. o' b, O |
*.pptx:pptx 文件是 PowerPoint2007 之后版本的文档文件。/ [# [- p1 W: f8 I( W" c
*.xls:xls 文件是 Excel2003 以前版本的文档文件。
% o* Q/ c6 m5 o% I- t*.xlsx:xlsx 文件是 Excel2007 之后版本的文档文件。1 h/ C7 b$ j) [1 z
% z8 g: K5 c" \( x1 h
软件包文件, j# a1 t @; ~1 Q( l$ y+ L
*.exe: exe 文件是 Windows 操作系统中的可执行程序。( Q- Y4 ]! O3 P" y5 j
*.deb: deb 文件是 Debian 发行版创建的软件包格式文件,在基于 Debian 的发行版中使用。+ W# s3 v3 q9 A- r8 R3 F, z0 v) R
*.rpm: rpm 文件是 Redhat 发行版创建的软件包格式文件,在基于 Redhat 的发行版中使用。
- w5 L- G5 a7 ]. K* k*.AppImage: AppImage 文件是一种通用的软件包格式,几乎可以在所有的 linux 发行版本中使用。; q9 f4 Z' Z$ g
" `& d/ I E, D. l4 H% B小结
( r& r3 {, a7 d% |7 U; r通过以上描述,大家可能会发现很多文件格式都有见过。没错!常见的各类文件格式不仅存在于开源项目中,在日常生活中也随处可见。不同文件格式有着不同的作用,标准的文件格式使得我们可以快速分辨文件用途,也能够帮助我们更好地了解开源项目。% g7 k9 I+ J6 F4 \( P+ v1 f
除此之外,如果你想定义自己的文件格式也是没有问题的,比如我们常用的音乐软件和视频软件,它们都拥有自己独特的文件格式。想象一下,在未来的某一天,如果你定义的文件格式被广泛采纳,或许它就会出现在这里。
+ `- J5 ]/ Q) W
8 b3 ~: g7 D; b$ c) a0 k |
|