Skip to content

Latest commit

 

History

History
336 lines (243 loc) · 23.3 KB

Programming.md

File metadata and controls

336 lines (243 loc) · 23.3 KB

与程序员相关的CPU缓存知识

https://coolshell.cn/articles/20793.html

「最佳垃圾代码」的十九条关键准则 https://github.com/trekhleb/state-of-the-art-shitcode

Paul Graham:不用担心孩子第一次学编程会养成什么不好的编程习惯。唯一重要的,是习惯于用编程解决问题。整洁、规范都可以慢慢来,但激发热情要趁早。 ​​​​

【将永久改变你编程技能的40个技巧】《40 Tips that will change your coding skills forever》 化大块代码为小函数、下班没解决的问题第二天再搞中间不要再想、不过度预期专注眼下必须搞定的问题、不必全知全能基础一定要扎实、“保持简单”知易行难、别想太多、被问题/bug卡住走开是个好办法、学会写测试代码、先分解问题再开始代码、理解逻辑而非重复代码、光学不练假把式…… https://medium.com/swlh/40-tips-that-will-change-your-coding-skills-forever-bf9d6b936ccc

专为国人开发者打造的 Cheat Sheet — 操作系统、数据库、编程语言、框架和开发工具等速查' https://github.com/polaris1119/awesome-cheatsheets-cn

libcu++: NVIDIA的C++标准库 https://github.com/NVIDIA/libcudacxx

duf:Linux磁盘空间使用情况浏览工具 https://github.com/muesli/duf

可视化编程工具:Nodes。 该工具支持快速创建实时 3D 图形、可交互的 Web 应用、自定义和共享工具参数、可视化数据分析、构建复杂应用等功能。 https://github.com/nodes-io/nodes-io

《编程之道》 (Tao of Programming, 1987) 最新中英双语版 https://github.com/yikeke/tao-of-programming

软件开发人员/工程师的“常青技能”列表 https://github.com/romenrg/evergreen-skills-developers

在 Hacker News 上看到一个比较有意思的网站:Nand Game。 通过玩游戏的方式,在页面搭建与非门模块,一步步带你从零打造一台简易版计算机。网站提供中、英、俄三种语言供用户选择。 地址:nandgame.com ​​​​

common-regex - 常用正则表达式 - 收集一些在平时项目开发中经常用到的正则表达式 https://github.com/cdoco/common-regex

打造杰出软件开发团队的12条指导建议 https://github.com/taowen/12fallacy

盘点几个比较实用的命令行界面工具 https://switowski.com/blog/favorite-cli-tools fish shell:易于使用,对初学者友好的 Shell; starship:好用的命令行提示工具,无需设置; z:快速跳转到文件系统; fzf:通用模糊搜索; fd:类似 find,但更好用; ripgrep:类似 grep,但更好用; htop 和 glances:系统监控工具; virtualenv 和 virtualfish:Python 虚拟环境管理; pyenv, nodenv 和 rbenv:管理不同版本的 Python,Node 和 Ruby; pipx:在隔离的环境中安装 Python 软件包; ctop 和 lazydocker:Docker 监控工具; homebrew:macOS 软件包管理器; asciinema:记录终端会话; colordiff 和 diff-so-fancy:类似 diff,但配色丰富; tree:用于显示文件夹的内容; bat:类似 cat,但更好用; httpie:类似 curl,但更好用; tldr:简化版 "man pages"; exa:类似 ls,但更好用; litecli 和 pgcli:类似 sqlite3、psql,但更好用; mas:App Store 的命令行界面工具; ncdu:磁盘使用率分析器。

各种乱码的类型及其产生原因 [[各种乱码的类型及其产生原因.jpg]]

GWSL:在WSL中运行图形化Linux应用 https://opticos.github.io/gwsl/ https://github.com/Opticos/GWSL-Source

开源的 Linux 教程:Linux Up Skill Challenge https://github.com/snori74/linuxupskillchallenge

研究人员如何提高软件工程技能 https://ljvmiranda921.github.io/notebook/2020/11/15/data-science-swe/

Awesome CTO:CTO参考资源大列表 https://github.com/kuchin/awesome-cto

“最有效的调试工具仍然是深思熟虑,加上明智的输出语句” - Brian W. Kernighan, Unix for Beginners (1979) ​​​​

JAX入门教程 https://jax.readthedocs.io/en/latest/jax-101/index.html

'CSAPP,《深入理解计算机系统结构》2nd ,阅读与实践!' github.com/vonzhou/CSAPP

微软Rust入门教程 https://docs.microsoft.com/en-us/learn/paths/rust-first-steps/

跟我一起写Makefile (PDF重制版) github.com/seisman/how-to-write-makefile

一份开源的系统编程速记清单。 该清单是作者在 2019 年春季,在卡内基梅隆大学学习「计算机系统概论」时编写而成,主体内容基于《深入理解计算机系统》一书。 github.com/jstrieb/systems-programming-cheat-sheet ​​​​

技术思维导图:Psyduck。 借助 Xmind,绘制并注解了关于 Linux 操作系统、计算机网络、数据库、Redis、C++、Golang 相关的基础知识,便于开发者快速吸收与复习。 github.com/SmartKeyerror/Psyduck

Compiler Explorer是一个可以在浏览器里进行互动的编译工具。支持C、C++、Rust、Go、D、Haskell、Swift、Pascal、ispc或其他语言的代码,并能查看这些代码被实时编译后的情况。 https://github.com/compiler-explorer/compiler-explorer https://godbolt.org/

正则表达式速查清单 remram44.github.io/regex-cheatsheet/regex.html

改善代码可读性的5种方法 https://mp.weixin.qq.com/s?__biz=MzUyMzM2ODUwMA==&mid=2247490048&idx=2&sn=7c8f98562f87cea06c560a8517e28f16&chksm=fa3cfb5bcd4b724db933667cb2527d8ef78614268e50fe2b3e1bac5ad24db411b60601cd4b01&scene=27#wechat_redirect&comefrom=https://blogread.cn/news/

技术分享类项目:Today I Learned。 作者是来自芝加哥的开发者 Josh Branchaud,该仓库的创建目的,在于收集其平日所学的一些碎片化编程知识和开发技巧。其中包括 Git、JavaScript、Linux、VSCode、Devops、Chrome 等不同技术领域的分类。 github.com/jbranchaud/til ​​​​

《编程、数学、科学》(Programming, Math, Science)。 里面收录了编程、数学、科学领域相关的工具、书籍、网站等内容,涵盖算法、命令行工具、数据库、设计模式、GUI 编程、操作系统、文本编辑器等分支。 github.com/bobeff/programming-math-science

「编程涂鸦合集」:《一图胜千言》(A Picture's Worth A Thousand Words)。 主要创作了包含数据结构与算法、Web 开发、机器学习等编程领域的涂鸦作品,其中有部分被应用到了微软的开源教程。 github.com/girliemac/a-picture-is-worth-a-1000-words

Doodles-as-A-Service Repo:数据结构与算法/机器学习图解 github.com/girliemac/a-picture-is-worth-a-1000-words

服务器编程指南

github.com/howardlau1999/server-programming-guide https://liuhaohua.com/server-programming-guide/

Google 工程实践文档 此文档为 Google 工程师长期累积的最佳实践,希望通过这份文档,能帮助更多开发者完成代码审查工作,为项目代码提供标准参考。 中文版:jimmysong.io/eng-practices/ github.com/google/eng-practices

麻省理工大学的开源技术教程:《计算机教育中缺失的一课》中文版。 该课程主要讲授命令行、文本编辑器、Git 版本控制系统等工具的使用,以及关于元编程、安全和密码学等知识的科普。 https://github.com/missing-semester-cn/missing-semester-cn.github.io

计算机自学指南 github.com/PKUFlyingPig/pku-cs-self-learning

正则表达式从入门到进阶 https://regexlearn.com/zh-cn github.com/aykutkardas/regexlearn.com

一款交互式视觉小说游戏:Learn to Code RPG,可以让你边玩游戏、边学编程。 项目里面拥有 600 多道计算机科学相关的测试题,你可以通过探索游戏菜单和解题的方式,来提升编程技巧。 github.com/freeCodeCamp/LearnToCodeRPG ​​​​

科研人员编程实践手册 github.com/patrickmineault/codebook

Project Based Learning:C/C++/Java/Python等各种语言项目实战教程大列表 github.com/practical-tutorials/project-based-learning

很棒的Git学习与实战网站 https://gitexercises.fracz.com/

Penpot:面向跨域团队的开源设计&原型开发平台 github.com/penpot/penpot

Awesome profiling:程序性能分析工具大列表 github.com/msaroufim/awesome-profiling

对开发人员有用的定律、理论、原则和模式。(Laws, Theories, Principles and Patterns that developers will find useful.)' github.com/nusr/hacker-laws-zh

OneFile - 只有一个文件!汇集了仅一个文件,好玩的开源项目

github.com/521xueweihan/OneFile

CPU性能和CACHE 作者为了让程序能快点,特意了解了CPU的各种原理,比如多核、超线程、NUMA、睿频、功耗、GPU再到分支预测、cache_line失效、加锁代价、IPC等各种指标(都有对应的代码和测试数据)都会在这系列文章中得到答案。当然一定会有程序员最关心的分支预测、Disruptor无锁案例、cache_line等等。 地址:plantegg.github.io/2021/07/19/CPU性能和CACHE/

开发内功修炼:CPU、内存、磁盘、网络四大模块的深度思考和总结 github.com/yanfeizhang/coder-kung-fu

<开发者体验:探索与重塑>电子书 github.com/phodal/dx

从零开始制作一个操作系统!---- 操作系统开发指南 github.com/yanull/os-guide-cn

给数据科学家的GitHub综合指南 towardsdatascience.com/comprehensive-guide-to-github-for-data-scientist-d3f71bd320da

用 Rust 语言从零开始写一个基于 RISC-V 架构的类 Unix 内核。清华大学开源的中文教程,从计算机发展历史开始科普,一步步说到为何操作系统会诞生,以及现代操作系统必须具备的特性。实践方面也是从空文件夹开始,像搭乐高积木一样,慢慢将操作系统的核心开发出来,教程读起来简直像看小说一样让人欲罢不能。 github.io/rCore-Tutorial-Book-v3/

【CODEBALL:代码自动Review工具】’CODEBALL - a code review AI which approves Pull Requests that a human would have approved. Spend less time waiting, save time and money.’ by Sturdy GitHub: github.com/sturdy-dev/codeball-action

GitHub 上的开源技术资源:《一图胜千言》(A Picture's Worth A Thousand Words),由微软工程师 Tomomi 手绘并整理发布。 该仓库包含了数据结构与算法、Web 开发、机器学习、Git 开发等编程领域的涂鸦作品,其中有部分被应用到了微软的开源教程。 GitHub:github.com/girliemac/a-picture-is-worth-a-1000-words

'精益副业:程序员如何优雅地做副业' by Easy GitHub: github.com/easychen/lean-side-bussiness

GitHub 上的开源技术资源:《谷歌的软件工程》中文版(Software Engineering at Google),共 25 章,主要讲解 Google 技术团队在「软件工程」领域的实践。 该指南覆盖了团队管理、效率测量、代码风格规范、项目测试、版本控制、静态分析、依赖管理、持续交付与集成等内容。 GitHub:github.com/qiangmzsx/Software-Engineering-at-Google

【免费书:程序员应该知道的97件事】《97 Things Every Programmer Should Know》 97-things-every-x-should-know.gitbook.io/97-things-every-programmer-should-know/en

GitHub 上的开源技术教程:《Effective Debugging》中文翻译版,主要讲述如何更有效率地调试大型程序(以 C/C++ 为例)的方法和技能。 书中例子不仅丰富,而且都是从实际的工作经验提取,观点和方法有效且具有可行性。 GitHub:github.com/Celthi/effective-debugging-zh

GitHub 上的开源技术教程:《操作系统导论》中文版(Operating Systems:Three Easy Pieces)。 该书共有 50 个章节,内容深入浅出,围绕操作系统的虚拟化、并发、持久性展开讲解,涉及进程与进程、锁、CPU 调度、文件系统实现、分布式系统等知识点。 GitHub:github.com/remzi-arpacidusseau/ostep-translations

'git-machete - Probably the sharpest git repository organizer & rebase/merge workflow automation tool you've ever seen' by VirtusLab GitHub: github.com/VirtusLab/git-machete

'Spoor - Compiler-instrumented app tracing, gives you deep insight into your application's performance.’ by Microsoft GitHub: github.com/microsoft/spoor

GitHub 上开源的技术学习资源:《系统设计》,里面主要整理了系统设计相关的基础知识、面试技巧、开发指南、最佳实践,以及各个互联网大厂的踩坑经验总结等内容。 GitHub:github.com/codersguild/System-Design

【co_context:协程异步多线程并发框架,以提供可靠的性能为使命,也致力于减轻用户的心智负担,让 C++ 初学者也能轻松写出高并发程序】'co_context - A coroutine framework aimed at high-concurrency io with reasonable latency, based on liburingcxx.' by Zifeng Deng GitHub: github.com/Codesire-Deng/co_context

'自学计算机科学(TeachYourselfCS中文翻译)’ by Keith Null GitHub: https:// github.com/izackwu/TeachYourselfCS-CN/blob/master/TeachYourselfCS-CN.md

“计算机教育中缺失的一课 · The Missing Semester of Your CS Education 中文版” O网页链接 GitHub:github.com/missing-semester-cn/missing-semester-cn.github.io

https://www.bilibili.com/video/BV1aE41157q6/?vd_source=755883b550cb633125f234c146e2e7cb #TODO 如何充分利用高效程序员常用工具:如何玩转命令行,如何使用强大的文本编辑器,如何高效使用版本控制,如何自动化日常任务,如何管理包和软件,如何配置桌面环境等

著名的 P=NP 问题到底是什么? #TODO

https://mp.weixin.qq.com/s/iS9q1_6BPcA0VKpulL334g

【Linux bash命令终极大列表】'Ultimate list of Linux bash commands' by trinib GitHub: github.com/trinib/Linux-Bash-Commands

【Best Books For The Inquisitive Software Engineer】https:///gerlacdt.github.io/posts/programming-books/ 适合好奇的软件工程师的最佳书籍

《像黑客一样使用命令行》。 该书将从实际的例子出发,教你从无到有,一步一步学习命令行的使用。除了文字版本之外,亦有配套视频。 GitHub:github.com/xuxiaodong/usingcli-book ​​​​

'小林 x 图解计算机基础 - 图解计算机网络、操作系统、计算机组成、数据库,共 1000 张图 + 50 万字' by xiaolincoder https://xiaolincoding.com GitHub: github.com/xiaolincoder/CS-Base

'runcode - 在线代码编辑器,支持C、C++、Go、Nodejs、Rust、Java、Python、C Sharp、PHP,在线 js-challenge' by xjq GitHub: github.com/xjq7/runcode https://r.xjq.icu/

「Git飞行规则(Flight Rules),这是一个非常实在的repo。它直接给出了各种日常和犯错时如何处理的实例。 https://github.com/k88hudson/git-flight-rules/blob/master/README_zh-CN.md

每个程序员都应该知道的知识。闲着的时候可以查漏补缺用 https://github.com/mtdvio/every-programmer-should-know

'programmer_case - 程序员案例集锦' plantegg GitHub: github.com/plantegg/programmer_case

'360 安全规则集合 - 详细的C/C++编程规范指南,由360质量工程部编著,适用于桌面、服务端及嵌入式软件系统。' Qihoo 360 GitHub: github.com/Qihoo360/safe-rules

【Linux 服务器远程(命令行)管理课程】’Linux Upskill Challenge - Introduction to Linux Server Administration! - Learn the skills required to sysadmin a remote Linux server from the commandline.' Livia Lima https://linuxupskillchallenge.org/?continueFlag=6817c7861421f8b7a171c6db348c259e GitHub: github.com/livialima/linuxupskillchallenge

【面向可扩展统计计算和机器学习的函数式编程入门课程资料】’An introduction to functional programming for scalable statistical computing and machine learning' Darren Wilkinson GitHub: github.com/darrenjw/fp-ssc-course

每天学点Linux上能用到的命令来源 https:///github.com/jaywcjlove/linux-command

免费的GitHub Copilot替代,Codeium是一款对个人免费的AI编码辅助工具,类似GitHub Copilot有自动生成代码、代码解释等功能。 支持的编辑器也很多,比如VSCode、JetBrains、VIM、Jupyter Notebooks、Emacs、浏览器等 https://codeium.com/

salesforce发布了一个开源的、用于代码生成的大语言模型CodeT5+,内测效果已经超过了其他的开源产品(包括 OpenAI 的 code-cushman-001 模型,和前几天介绍的刚推出的StarCoder 微博正文 ) 地址:github.com/salesforce/CodeT5/tree/main/CodeT5%2B 论文:arxiv.org/pdf/2305.07922.pdf CodeT5+是一个新的开源代码大型语言模型家族,具有编码器-解码器架构,可以灵活地在不同模式(即仅编码器、仅解码器和编码器-解码器)中运行,以支持广泛的代码理解和生成任务。

【StarCoder in C++:StarCoder用C++运行推理的示例,使用ggml库用CPU运行,无需显卡,支持各种StarCoder模型,性能强大】'StarCoder in C++' by BigCode Project GitHub: github.com/bigcode-project/starcoder.cpp

【WizardCoder:新的编程大模型(Code LLM),基于Evol-Instruct方法开发,专门用于编程任务。WizardCoder-15B-v1.0模型在HumanEval基准测试中取得了57.3%的pass@ 1得分,比开源Code LLMs高出了22.3个百分点。与闭源模型相比,WizardCoder表现出更小的模型大小,并且在HumanEval和MBPP基准测试中具有显著的性能优势】 https://huggingface.co/TheBloke/WizardCoder-15B-1.0-GGML https://huggingface.co/TheBloke/WizardCoder-15B-1.0-GPTQ

【Rift:本地化的Github Copilot,开源语言服务器和IDE扩展,让每个人都能部署个人的AI软件工程师,本地托管,私密,安全,开源、免费】“Rift | Morph - an open-source language server and IDE extension that lets everyone deploy a personal AI software engineer - locally hosted, private, secure, open-source, and free.” GitHub: github.com/morph-labs/rift

【Diaphora:目前最先进的开源程序diffing分析工具,支持汇编、控制流图、符号名和注释移植等,还有独特的功能如并行分析、伪代码启发式算法等】'Diaphora - the most advanced Free and Open Source program diffing tool.' Joxean GitHub: github.com/joxeankoret/diaphora

【Crabviz:支持多种编程语言的交互式调用图生成器】'Crabviz - interactive call graph generator that supports various programming languages' chanhx GitHub: github.com/chanhx/crabviz

【Putting the "You" in CPU:详细介绍计算机从启动到运行程序的全过程,包括程序是否直接在CPU上执行,syscalls的工作原理以及多个程序如何同时运行,旨在向读者解释作者所学到的知识,并提供了章节链接,方便读者查看感兴趣的内容】’Putting the "You" in CPU - A technical explainer by @ kognise of how your computer runs programs, from start to finish.' Hack Club GitHub: github.com/hackclub/putting-the-you-in-cpu

【Linux高级用户指南:内容包括窗口管理器、终端、i3status、nvim、git、fish、壁纸和 Dunst 配置,包管理器的基本用法等】《Linux guide for power users | xnacly - blog》 https://xnacly.me/posts/2022/linux-for-powerusers/?continueFlag=dbcfad60de01c63138e323bb44da5fc7

【LINUX命令通览图】《LINUX Commands | kPastor - Xmind》 https://xmind.app/m/WwtB/

【像初学编程一样写代码】

  • 作者认为,在21世纪编程不应该仅仅为了技术本身,而应该关注如何实现自己的想法。
  • 作者在高中编程课上遇到一位同学,他不懂编程却通过硬编码画出了惊人的动画效果,这启发作者不应该过于在意代码的优雅性,初学者应该像刚学会编程一样去实现自己的想法和视觉效果。
  • 作者认为,很难同时关注用户体验和程序架构,也许根本不可能。唯一的方法是不在意后者,用最简单直接的代码实现自己的设计,而不去强求什么软件工程。
  • 文章建议初学编程的人不必过于在意代码质量,用最简单的方式实现自己的想法,就像刚学会编程一样。程序的可维护性和算法优雅度其实并不重要,实现想法才是最关键。 《Write Code Like You Just Learned How to Program》 https://prog21.dadgum.com/87.html

【免费书稿《调试的艺术》,内容是关于调试软件的方法和实践,目标是教导人们如何快速调试常见问题以及解决复杂问题的调试方法】’The Art of Debugging' Stas Bekman GitHub: github.com/stas00/the-art-of-debugging

【给新手程序员的建议】

  • 使用方便的编程工具,如VSCode,减少无关的摩擦。熟悉工具的使用可以节省时间和精力。
  • 编写代码时不要急于求成,要思考有意义的变量和函数名,编写可读性好的代码。这有助于代码的维护。
  • 避免重复代码,适当抽象封装。重复的代码往往表示需要新的函数或方法。
  • 调试要有系统,先明确问题,提出假设,然后通过打印日志、追踪数据流等方法验证,不要盲目猜测。
  • 解决重要问题或添加新功能后,拷贝一份完整代码的快照,以便回退。
  • 必要时请教别人,但不要违反学术诚信。
  • CS课程应该教授如何系统地编写软件,这一实用技能常被忽略。
  • 作者总体建议要投入时间思考,实践良好的编程习惯,这对编写和维护代码都很重要。 《Advice to a novice programmer》 https://blog.plover.com/prog/katara-advice.html

电子书《像黑客一样使用命令行》 (电子书源文件,还没有编译出的pdf或html) 地址:github.com/xuxiaodong/usingcli-book 精通命令行用法通常被认为是 Linux 黑客的秘密武器。对于普通用户而言,这种看似比较复杂、难以掌握的技能,其实只要打消恐惧心理,辅之以一定的练习,学会并不难。本书将从实际的例子出发,教你从无到有,一步一步的学习使用命令行。一旦夯实了基础,在学了高级命令行用法后,你也可以像 Linux 黑客一样感受到使用命令行是何等的高效和令人愉悦。

《一文聊聊代码的可读性》 https://my.oschina.net/yunqi/blog/10150848 作为程序员,我们对于自己写的代码有这么几层要求:1、我们的代码是可以正常运行并且能满足业务要求的;2、你写的代码结构是要符合当前应用或者当前架构的规范和约束的,比如包规范、命名规范、格式规范,嵌套不能多于 3 层,单方法不能超过 10 行等约束;3、你写的代码是要具备比较高的可读性的,其他程序员可以非常直白的读懂你的代码(这里绝不是指一行行读完,然后去猜想你的代码所表达的业务逻辑,而是非常直观的能 get 到你的代码逻辑和设计意图)

【伟大软件工程师的习惯】

  • 代码之外还要关注系统交互、可扩展性等更广泛的问题。
  • 保持进度平稳,碰到障碍也要想方设法保持前进动力。
  • 保持好奇心,不断探索新技术、新的可能性。
  • 理解代码背后的原理,不要只停留在语言层面。
  • 用系统性思维考虑代码对整体业务的影响。
  • 注重工作之外的生活,避免长时间坐在屏幕前。
  • 具备粗略估算系统性能的参数直觉。
  • 善于将解决一个问题的思路迁移到其他问题。
  • 善于用简单的方式解释复杂的概念。
  • 考虑长远影响,不仅注重眼前代码。
  • 培养“代码嗅觉”,能快速判断代码质量。
  • 抱有坚定的观点但保持灵活的态度。 《Habits of great software engineers》 https://vadimkravcenko.com/shorts/habits-of-great-software-engineers