一个文件的开源项目,开启你的开源之旅
你是否记得:刚学完编程基础那会儿,特别想写个东西,但动起手来却发现到处碰壁?
你是否找到:一个好玩的开源项目,结果卡在了部署环境、安装依赖上?最后"含恨而终"!
我刚学编程的时候,不止一次打开 IDE 看着闪动的光标发呆,大脑和空白的页面一样,一片空白毫无头绪。想写点东西根本无从下手,想玩别人的项目也跑不起来。一下子从书本抄代码的阶段,转变到自己构思、设计、编写代码,这跨度着实有些大。当时感觉自己学的那些什么语法规则,都吃完拉了什么都没留下。
有没有人和我一样,有过上面的经历或者正处于这种状态。我当时就在想有没有那种,比书上的实例代码长一些,有些实际用途的开源项目。即:
一个文件、运行简单、一看就懂,有趣的开源项目!
因为一个文件的项目基本上复制代码到编辑器里就能跑,还可以通过调试看每步的结果更容易读懂代码。重点是它要有实际用途,不是代码例子,这样就可以拿出去给别人看和使用,学起来很有动力。代码中再多来点注释,相对于干巴巴的教程文章,我更喜欢代码中的注释,简洁直给解惑效果更佳。
功夫不负有心人,终于让我找到它们了:
OneFile 汇集了仅一个文件,好玩的开源项目。
这里有游戏、编译器、服务器、工具、实用库等,它们运行简单甚至复制代码就能跑。
下面让我们一起来把玩下吧!
1、点击停球
消磨时间的小游戏,只需将球停在有颜色的区域即可得分。所有代码就只有一个 HTML 文件,玩累了还可以右键“显示网页源代码”,研究下源码如何作弊。
试玩:https://hellogithub.com/onefile/code/cc759276aefe4bad87ac259940042581
2、番茄时钟
纯 Python 实现的命令行番茄时钟,另外还支持安装扩展实现桌面通知。复制代码到 PyCharm 右键即可运行。
源码:https://github.com/521xueweihan/OneFile/blob/main/src/python/tomato-clock.py
3、迷你编译器
用 JavaScript 写的迷你编译器,实现将 LISP 转化成 C 代码。每一步写的特别详细注释比代码多,人人都能看懂的编译器项目。打开浏览器的“开发者工具”跳转到“Console”页面,把代码粘贴进去即可运行。
* LISP C * * 2 + 2 (add 2 2) add(2, 2) * 4 - 2 (subtract 4 2) subtract(4, 2) * 2 + (4 - 2) (add 2 (subtract 4 2)) add(2, subtract(4, 2))
源码:https://github.com/521xueweihan/OneFile/blob/main/src/javascript/the-super-tiny-compiler.js
4、字符视频
打开网页授权开启摄像头,你将看到实时转化成 ASCII 码的图像。浏览器右键“显示网页源代码”,即可查看全部源码。
试玩:https://hellogithub.com/onefile/code/126093303b6b414dbab9d623c957fdd4
5、太空侵略者
原版的《太空侵略者》由大约 2k 行的 8080 汇编代码写成,但汇编语言太过底层不方便阅读,今天讲解的开源项目 si78c 是按照原版汇编代码用 C 语言重写了一遍。这个项目虽然核心文件只有一个,但运行稍微复杂,不怕我们有配套讲解文章。
源码:https://github.com/521xueweihan/OneFile/blob/main/src/c/si78c.c
万事开头难,但这些项目一点都不难!
无数次想写东西却无从下手...无数个卡住的夜晚...无数次想砸电脑的冲动...
它们都将成为过去式,希望本期推荐的一个文件开源项目,能让你重拾信心发现编程的乐趣。点击发现更多!
开启开源之旅
每个开源项目都是从一个文件开始,通过不停迭代才成为了被人熟知和喜爱的知名项目。
如果你发现某个痛点或者灵光乍现,仅需创建一个文件把它记录下来,然后不断更新迭代并开源出来。最终,它可以帮助到更多人,未来的某一天会惊艳到包括你在内的所有人!
如果让你只用一个文件展示“平生所学”,编程语言不限!你会交出什么样的作品呢?
一个文件的编程挑战,要求如下:
- 单个文件、不可压缩、体积小于 1 MB
- 代码结构清晰,包含注释,行数小于 5000 行
- 不限编程语言,不可仅包含 Markdown 文件
- 不引入任何外部文件(图片、视频、CSS 等)
- 项目功能完整,具有学习或使用价值
- (可选)最多依赖一个开源库或框架
轻点 即可参加,开启你的开源之旅。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
HMS Core音频编辑服务,实时分离人声、伴奏和乐器声
想获取一首歌的伴奏却找不到资源怎么办?没关系,我们可以自己解决。音频编辑服务提供音源分离的功能,帮助开发者在应用中构建人声与伴奏分离的功能。 目前,音源分离功能已经开放了人声与伴奏、乐器等多种分离的方式,可以实时解析并将乐器中的人声和各种乐器元素提取到独立的音轨上,满足创作者对伴奏制作、扒带、音乐创作等多种场景的应用需求。并且,无需专业的音频处理软件,只要集成华为音频编辑服务,就能在移动端轻松完成音频剪辑,让创作者更加便捷的感受到声音的魅力。 Demo演示 下面我们来实操一下如何接入华为音频编辑服务,实现音源分离效果。 开发实战 1. 开发准备 详细准备步骤可参考华为开发者联盟官网: https://developer.huawei.com/consumer/cn/doc/development/Media-Guides/config-agc-0000001154009063?ha_source=hms1 2. 编辑工程集成 2.1设置应用的鉴权信息 开发者需要通过api_key或者Access Token来设置应用鉴权信息。 (推荐)通过setAccessToken方法设置Acces...
- 下一篇
Golang 常见设计模式之装饰模式
想必只要是熟悉 Python 的同学对装饰模式一定不会陌生,这类 Python 从语法上原生支持的装饰器,大大提高了装饰模式在 Python 中的应用。尽管 Go 语言中装饰模式没有 Python 中应用的那么广泛,但是它也有其独到的地方。接下来就一起看下装饰模式在 Go 语言中的应用。 ## 简单装饰器 我们通过一个简单的例子来看一下装饰器的简单应用,首先编写一个 hello 函数: package main import "fmt" func hello() { fmt.Println("Hello World!") } func main() { hello() } 完成上面代码后,执行会输出“Hello World!”。接下来通过以下方式,在打印“Hello World!”前后各加一行日志: package main import "fmt" func hello() { fmt.Println("before") fmt.Println("Hello World!") fmt.Println("after") } func main() { hello() } 代码执行后输出...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS关闭SELinux安全模块
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址