全国免费咨询:

13245491521

VR图标白色 VR图标黑色
X

中高端软件定制开发服务商

与我们取得联系

13245491521     13245491521

2021-01-31_每个程序员都应该尝试的项目

您的位置:首页 >> 新闻 >> 行业资讯

每个程序员都应该尝试的项目 作者 | Austin Z. Henley 译者 | 王者 策划 | 万佳 一年前,我发表了“每个程序员都应该尝试的项目”一文。文中列出了每个程序员都应该去尝试的项目,包括一个文本编辑器、太空入侵者游戏、一个 BASIC 编译器、一个小型的操作系统、一个电子表格和一个视频游戏控制台模拟器。这篇文章在网上爆红,一个月内浏览量超过 10 万次。 https://web.eecs.utk.edu/~azh/blog/challengingprojects.html 现在,我要加入更多“现代”的项目: 光线追踪器 键值存储 Web API Web 浏览器 股票交易机器人 光线追踪者它是 3D 图形!在发表前一篇文章后,我收到很多评论,建议加入光线追踪器。我同意了他们的建议。事实上,这是我在 2009 年学习 C# 时最先尝试的一个项目。如果你无法马上理解所有与数学相关的东西或术语,请不要担心,你可以循序渐进,努力取得进步。网上有很多关于光线追踪器的资源优势,在学习过程中,你会获得强烈的视觉感受。 光线跟踪器可以生成一些非常好看的图像,只需要 300 行代码!首先,你可能需要支持各种反射、光线和纹理,或者你开始意识到原来渲染一张图片需要几分钟,所以你开始优化。你可以使用线程并行化光线追踪器、减少交集的数量,或者使用分析器来跟踪分配了多少对象并找出瓶颈。 创意!我不想再去做另一个优化到半路的光线追踪器,也不想追求超现实的折射效果。相反,我特意降低了分辨率,这样就可以做出实时动画。一个带有下落粒子旋转圆环的动图可以让你在推特上获得不少点赞。我认为独立游戏可以走这条路,创造出独特的艺术风格。请期待我的 8 位复古视频游戏! 更多资料: 系列书籍之“Ray Tracing In One Weekend” https://raytracing.github.io/ 《计算机图形程序设计入门》 https://www.scratchapixel.com/lessons/3d-basic-rendering/get-started 计算机图形入门 https://www.gabrielgambetta.com/computer-graphics-from-scratch/introduction.html 用 Python 开发光线跟踪器 https://medium.com/swlh/ray-tracing-from-scratch-in-python-41670e6a96f9%22 Go 光线追踪器优化 https://dzone.com/articles/optimizing-a-simple-ray-tracer-written-in-go-part 用 JavaScript 实现实时的光线追踪 https://johanneshoff.com/raytrace-mirror/ 层次包围盒结构 https://en.wikipedia.org/wiki/Bounding_volume_hierarchy 光线追踪宝石 https://amzn.to/374vhM4 光线追踪器挑战 https://amzn.to/2VZCirf 实时渲染 https://amzn.to/3mbkILo 键值存储 Web API键值存储实际上就是一个字典。向它提供一个键,它就返回一个值。你可以添加新键、删除键或更新值。实际上,这就是一个 NoSQL 数据库!不过你可以更进一步,将其作为 Web API,这样你未来的所有 Web 应用程序都可以使用你的数据库服务。 我真的很喜欢这个项目,因为用它来创建最基本的“数据库”真的很容易。你可以从使用任何一门编程语言所提供的字典数据结构开始,并在这个基础之上添加一个 Web API。除此之外,你还可以添加更多的内容:性能优化、安全性和多用户、原子事务、数据类型、批处理操作、持久性、故障恢复,以及跨多个服务器运行能力。很快,你就会拥有像 Redis 或 Amazon DynamoDB 那样价值 10 亿美元的产品。 说真的,打开你的代码编辑器,并使用你最喜欢的编程语言尝试一下。为了获得不同的体验,我用 Go 和 Racket 试过了,并从中获得了很多启发。在一些小型的测试中,我的 Go 版本的性能已经足够好了。 更多资料: 键值数据库 https://en.wikipedia.org/wiki/Key%E2%80%93value_database B 树数据结构 https://en.wikipedia.org/wiki/B-tree 原子性 https://en.wikipedia.org/wiki/Atomicity_(database_systems) 如何使用 Go 构建一个键值存储 https://medium.com/@naqvi.jafar91/how-i-built-a-key-value-store-in-go-bd89f68062a8 Badger:超快的 Go 键值数据库 https://github.com/dgraph-io/badger 如果你想深入了解数据库,可以看看这本《自己动手设计数据库》 https://amzn.to/3m8r5is Web 浏览器第一次面试一个软件开发岗位时,面试官问我:“当你在浏览器上输入 Yelp.com 并按回车键时,都发生了什么”?我回答得不好,没有通过面试。于是,我开始了解万物运作原理的旅程。我发现最有趣的是浏览器如何将 HTML 和 CSS 转换成渲染好的 Web 页面。这是一个很常见的面试题,但我却因为太无知没有回答好。有一个非常棒的资源,它为很多问题提供了答案。 https://github.com/alex/what-happens-when 想要设计出一些足以击垮 Safari 或 Brave 的杀手级用户界面?不要抱太大希望了。在你达到那个目标之前,还有很多事情要做!不如让我们来缩小一下范围,假设你有一个 HTTP 库和一个 HTML 解析器,你必须实现自己的渲染器。你不能使用 WebBrowser 或 WebKit 之类的东西。你会怎么做? 我的建议是从创建一个基于文本的 Web 浏览器开始。实际上,你也可以忽略所有的格式化问题,忽略所有的 JavaScript 和 CSS。你要做的是使用给定的 URL 执行 HTTP GET,解析 HTML,找到需要显示的文本,并将其显示在屏幕上。你要做的就是这些。 获得纯文本之后,你就可以添加其他功能了。你可以添加标签、历史、后退和前进按钮,等等。但到了某个时候,你可能想要的不只是文本……那么祝你们好运。渲染网页视觉元素可能是我永远不会去尝试的事情,或许要等到我有用不完的时间。一步一步来,每次只关注一个 HTML 标记和属性。如果你想尝试这么做,请让我知道是如何进行的。 更多资料: Browsh:一个基于文本的浏览器 https://github.com/browsh-org/browsh HTML 标准 https://html.spec.whatwg.org/ Mozilla 的 HTTP 文档 https://developer.mozilla.org/en-US/docs/Web/HTTP 让我们来构建一个浏览器引擎 https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.html Web 浏览器工程 https://browser.engineering/ 股票交易机器人现在,你有机会构建一些理论上可以让你变得富有的东西:股票交易机器人!构建一个基础的交易机器人是非常简单的,你可以添加无穷无尽的功能。你甚至不需要了解任何与投资有关的知识。在这个过程中,你至少可以学到如何利用不同的 Web API、如何处理数据,并应用现有或创建自己的交易策略。你可以使用大量的历史数据来测试它。 这样还不够?那就用上机器学习或搭建一个 Twitch 流,让陌生人来控制你的钱。 https://socialblade.com/blog/twitch-stockstream-bot/ 这是一个基础的交易机器人开发路线。首先,找出几家你感兴趣的大公司 (如苹果、特斯拉和 Target)。第二,确定何时买进、何时卖出。例如,如果当前价格达到 52 周低点就买入,如果达到 52 周高点就卖出。(千万不要把这个策略用在实际当中,这个策略其实是个愚蠢的策略)。第三,弄清楚如何使用一个免费的 API 来获取股票数据。第四,建立测试环境,让它跑起来! 现在可以找乐子了……使用历史数据进行自动化测试,实现几十种交易算法,并对它们进行比较,添加可视化,使用 API 连接到真正的券商服务器,尝试一些机器学习或进化算法,并将成功的交易结果共享到 Twitter 上。 更多资料: 交易信号 https://www.investopedia.com/terms/t/trade-signal.asp trump2cash:一个交易机器人 https://github.com/maxbbraun/trump2cash Q 学习 https://en.wikipedia.org/wiki/Q-learning 如何从零开始构建一个股票交易机器人 https://towardsdatascience.com/how-to-get-started-building-a-stock-cryptocurrency-forex-trading-program-2abbf0a4729f 免费构建一个人工智能股票交易机器 https://medium.com/swlh/build-an-ai-stock-trading-bot-for-free-4a46bec2a18 如何用 Python 构建算法交易机器人 https://www.activestate.com/blog/how-to-build-an-algorithmic-trading-bot/ 罗宾汉 API 指南 https://algotrading101.com/learn/robinhood-api-guide/ 你也「在看」吗???

上一篇:2020-02-03_科技公司驰援善举;浙江突破AI诊断技术:疑似病例基因分析缩至半小时;苹果临时关闭中国大陆零售店 | AI一周资讯 下一篇:2022-07-09_GitLab技术选型为何如此不同:坚持用过气Web框架十多年、坚决不用微服务

TAG标签:

21
网站开发网络凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设网站改版域名注册主机空间手机网站建设网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线:13245491521 13245491521 ,我们会详细为你一一解答你心中的疑难。
项目经理在线

相关阅读 更多>>

猜您喜欢更多>>

我们已经准备好了,你呢?
2022我们与您携手共赢,为您的企业营销保驾护航!

不达标就退款

高性价比建站

免费网站代备案

1对1原创设计服务

7×24小时售后支持

 

全国免费咨询:

13245491521

业务咨询:13245491521 / 13245491521

节假值班:13245491521()

联系地址:

Copyright © 2019-2025      ICP备案:沪ICP备19027192号-6 法律顾问:律师XXX支持

在线
客服

技术在线服务时间:9:00-20:00

在网站开发,您对接的直接是技术员,而非客服传话!

电话
咨询

13245491521
7*24小时客服热线

13245491521
项目经理手机

微信
咨询

加微信获取报价