V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iammutex
V2EX  ›  程序员

CodeWa - 读懂每一行代码!

  •  
  •   iammutex · 2014-01-06 20:32:08 +08:00 · 23277 次点击
    这是一个创建于 3977 天前的主题,其中的信息可能已经有所发展或是发生改变。
    CodeWa( http://codewa.com )是我2013年的个人任务之一,很幸运能够在2013年年底之前完成,目前自己试跑了一段时间,也算是最简可用版本出炉。

    CodeWa的口号是:“读懂每一行代码!”,这个口号其实来自一个比较无奈的现实。这个现实就是,我们身为程序员,用代码混饭吃,但是很多人每天都只在机械地coding,能够主动去读优秀代码的人其实非常之少。就我身边的朋友来说,每天和各种开源软件打着交道,但是对WebServer的运作、HTTP协议的实现、数据库缓存的内部实现等等完全没有概念,而了解这些最方便有效系统的方法,莫过于读源码。

    为什么大家不去读源码?而答案也很简单,水平有限,门槛过高,难于坚持。实际上归结到一个字上,就是“难”。那如果我们能够做一些事,让读源码的难度降低下来,是不是会有更多人愿意去读优秀的源码,提高自己的水平呢?我想这个答案是肯定的。

    于是有了CodeWa,在CodeWa,每个人都可以对每一行代码添加自己的批注,每一个人也可以看到其他人添加的批注,当你看不懂一段代码时,其他人的批注没准就能够帮你理解。经过时间的沉淀,可能对每一行代码,我们都能积累很多不同角度的优秀批注,帮助新加入的朋友更容易的进行学习。

    CodeWa现在还很简陋,但是让他运作起来的核心功能已经有了,现在,就等你加入了。

    http://codewa.com
    第 1 条附言  ·  2014-01-15 23:43:16 +08:00
    更新一下近期工作:
    firefox无法滚动的问题解决
    firefox行号对内容错位问题解决
    添加修改昵称功能,避免暴露邮箱地址的隐私
    添加helloworld沙盘演练项目,方便大家试用CodeWa
    及一系列内部改造

    同时完成了个人的Nginx源码阅读计划的一小部分,对Nginx内存池管理部分源码进行了较完整的批注。见:http://v2ex.com/t/97180
    158 条回复    2015-04-30 18:09:39 +08:00
    1  2  
    pirex
        101
    pirex  
       2014-01-07 14:07:59 +08:00
    希望能够增加自己上传代码。
    为何不考虑开源
    iEverX
        102
    iEverX  
       2014-01-07 14:14:14 +08:00
    好顶赞
    可以定期增加呼声最大的项目
    venglide
        103
    venglide  
       2014-01-07 14:16:53 +08:00
    做得不错,如果和sourcegraph结合起来就非常方便了
    a591826944
        104
    a591826944  
       2014-01-07 14:46:57 +08:00
    喜欢。。。期待补补课,加入一下
    MarsWang
        105
    MarsWang  
       2014-01-07 14:47:02 +08:00
    挺好的。
    lovesky
        106
    lovesky  
       2014-01-07 14:54:07 +08:00
    想法不错,但是我用起来觉得好别扭,提个建议,最好可以支持用户定制界面和树状文件切换。
    ql9075
        107
    ql9075  
       2014-01-07 15:45:13 +08:00
    楼主,有木有可以让用户自己增加源码项目的功能。。
    xiaozi
        108
    xiaozi  
       2014-01-07 15:54:08 +08:00
    为何只能对一行编写注释
    iammutex
        109
    iammutex  
    OP
       2014-01-07 16:03:17 +08:00
    @ql9075
    @pirex
    后续可能会考虑自己上传代码的,目前限制只能系统上传也是为了一点点尝试
    iammutex
        110
    iammutex  
    OP
       2014-01-07 16:03:50 +08:00
    @lovesky 多谢建议,我们考虑一下这个需求的普适程度
    iammutex
        111
    iammutex  
    OP
       2014-01-07 16:04:23 +08:00
    @xiaozi 请见我在27楼的回复
    acking
        112
    acking  
       2014-01-07 16:20:01 +08:00
    这样的话到时候会出现很多无用的注释么
    iammutex
        113
    iammutex  
    OP
       2014-01-07 16:29:36 +08:00
    @acking
    会,所以后续会加点赞或者顶踩功能,让最优秀的批注放到最前面。无用的,垃圾的都会被折叠。现在还没有做的原因,是因为目前内容还很不够,不存在这个问题。
    最终的图景可能是,对每一个问题点,可能都有几条优秀的批注,从不同的角度对知识做讲解,让大家可以从多种角度来理解。
    mikale
        114
    mikale  
       2014-01-07 16:33:53 +08:00
    没交叉引用,读代码根本不适合
    coetzee
        115
    coetzee  
       2014-01-07 17:07:09 +08:00
    这个想法很好,给一个小建议:暗色主题是不是更有诱惑力?
    lenville
        116
    lenville  
       2014-01-07 17:30:46 +08:00
    Cool !
    iammutex
        117
    iammutex  
    OP
       2014-01-07 18:16:54 +08:00
    @mikale 有交叉引用的,双击或者选中函数名或者其它定义名,左侧会出现定义的链接,点击即可。具体可以看首页的图片说明。
    huangz
        118
    huangz  
       2014-01-07 18:55:42 +08:00
    祝贺 CodeWa 正式上线!!
    hhkbp2
        119
    hhkbp2  
       2014-01-07 19:07:17 +08:00
    读代码的话,个人还是习惯一个好点的IDE,或者编辑器,可以查定义,查所有引用,查使用次数,查继承结构等
    CodeWa这个想法很好,对于看不懂的部分代码,可以学习一下别人的批注,起补充作用
    hulk
        120
    hulk  
       2014-01-07 19:12:34 +08:00
    点赞
    iammutex
        121
    iammutex  
    OP
       2014-01-07 19:41:13 +08:00
    @hhkbp2
    是的,CodeWa从来就不是想做一个阅读体验最好的代码阅读器,只是想帮助读不懂的人去理解代码。
    现实中有太多好用的IDE了,但是现状却是,很多人还是没有能力使用它们去读源码。
    alexapollo
        122
    alexapollo  
       2014-01-07 21:26:57 +08:00   ❤️ 1
    不错!非常喜欢这个作品,是否开源,是否可以加入开发?
    hhrmatata
        123
    hhrmatata  
       2014-01-07 21:34:13 +08:00 via Android
    @iammutex
    @hhkbp2
    所以我说开放一个api,大家给编辑器写插件,这样使用编辑器阅读时也能查看注释,甚至添加注释
    iammutex
        124
    iammutex  
    OP
       2014-01-07 22:08:55 +08:00 via iPhone
    @alexapollo 在产品形态确定之前,暂时还不考虑开源。
    其实CodeWa的开发并不难,所以,相对于加入开发,参与贡献优秀的代码批注是不是也同样有意义呢,期待各位的代码贡献,让CodeWa更精彩。
    iammutex
        125
    iammutex  
    OP
       2014-01-07 22:13:46 +08:00 via iPhone
    @huangz 感谢huangz兄的内测,后续Redis部分的源码还要多靠你了
    alexapollo
        126
    alexapollo  
       2014-01-07 22:31:27 +08:00
    @iammutex 更喜欢做个好作品啊。。。可惜了,如果有开源想法,务必告诉一声
    lightening
        127
    lightening  
       2014-01-07 22:59:23 +08:00
    本地的 hacking night 上,大家一起讨论一些经典代码。上次研究了个 pwd (GNU, FreeBSD, Solaris 各个版本), 就差不多研究了一晚上……
    如果大家一起读 WebServer 的源代码,估计要一年了。
    hoterran
        128
    hoterran  
       2014-01-08 12:12:24 +08:00
    cool, 哈哈
    hoterran
        129
    hoterran  
       2014-01-08 12:15:50 +08:00
    看起来还有很多工作可以做。
    比如显示函数的调用,变量的申明,java 代码, 能显 基类,接口等等。
    Liutos
        130
    Liutos  
       2014-01-08 13:04:50 +08:00
    看标题以为是静态分析工具,原来是类似于阅读代码记笔记的功能=v=

    这东西很好,老实说我觉得这个思路也很棒,自己阅读源代码太辛苦,如果可以和其他人分享阅读心得多半会有更好的作用。以前我也想要类似的功能,后来选择在GitHub上开个repo,然后用issues功能来记笔记,可惜的是没坚持下来。

    期待成品。
    christianwong
        131
    christianwong  
       2014-01-08 17:10:22 +08:00
    这个非常不错, 大赞!
    iammutex
        132
    iammutex  
    OP
       2014-01-08 20:39:33 +08:00
    @hoterran 感谢阮兄,后面的路还很长
    doublleft
        133
    doublleft  
       2014-01-09 10:18:03 +08:00
    哇 , 好赞!
    williamx
        134
    williamx  
       2014-01-09 10:34:20 +08:00
    想法超赞!
    y1
        135
    y1  
       2014-01-09 12:09:27 +08:00
    大赞,建议支持 github 导入,可以 github checkout 不同的 head 然后大家一起分析不同的代码。当然最好还要有显示自己的批注的功能。
    huangz
        136
    huangz  
       2014-01-09 19:14:36 +08:00
    @iammutex 注释新版 Redis 代码的工作我在 Git 上已经做了一大部分了,将来完成的时候也许可以想个办法导入到 CodeWa 上面?
    Golevka
        137
    Golevka  
       2014-01-09 20:09:29 +08:00
    @Liutos 大家都无处不在呀
    iammutex
        138
    iammutex  
    OP
       2014-01-09 21:05:00 +08:00 via iPhone
    @huangz 就交给我吧:-)
    huangz
        139
    huangz  
       2014-01-09 21:30:55 +08:00
    @iammutex 好的,期待!
    Liutos
        140
    Liutos  
       2014-01-11 00:00:21 +08:00
    @Golevka 哈哈,握爪握爪
    porcorossomiao
        141
    porcorossomiao  
       2014-01-13 08:56:25 +08:00
    不错,关注
    kernel1983
        142
    kernel1983  
       2014-01-13 12:53:39 +08:00
    为什么没有 linux 0.01 版本的代码?

    这个创意真不赖
    v3exer
        143
    v3exer  
       2014-01-13 13:30:25 +08:00
    非常棒的想法,希望可以开源,想在自己的小团队内搭建这样一个环境,这样,大家可以共享对code的理解
    iammutex
        144
    iammutex  
    OP
       2014-01-13 15:24:11 +08:00
    @kernel1983
    谢谢建议!
    目前代码只放了一个演练用的helloworld,一个版本的nginx和一个版本的redis源码。后续会逐步放更多的源码,甚至考虑开放用户上传源码的功能。
    这个会根据大家的使用情况和反馈做调整。
    iammutex
        145
    iammutex  
    OP
       2014-01-13 15:25:39 +08:00
    @v3exer
    独乐乐不如众乐乐,欢迎来CodeWa和大家一起讨论学习提高。
    如果是团队内部做codereview,我觉得用reviewboard就挺好。
    tolbkni
        146
    tolbkni  
       2014-01-13 18:06:47 +08:00
    @iammutex 我这里代码和行号没有完美对齐
    iammutex
        147
    iammutex  
    OP
       2014-01-13 21:54:54 +08:00
    @tolbkni 麻烦提供一下操作系统及浏览器类型版本吧。目前chrome应该是支持最完善的。
    androidBrant
        148
    androidBrant  
       2014-01-14 09:25:05 +08:00
    源码少了点,期待更多源码,移动开发,js node
    franky_xhl
        149
    franky_xhl  
       2014-01-16 00:35:12 +08:00
    @lightening 酷!下次回国来H4推广下这种方法
    rrfeng
        150
    rrfeng  
       2014-01-16 08:49:21 +08:00
    赞。
    simonxia
        151
    simonxia  
       2014-01-16 09:25:32 +08:00
    点赞,很好的交流方式
    allengaller
        152
    allengaller  
       2014-01-17 11:40:23 +08:00
    上不去
    RangerWolf
        153
    RangerWolf  
       2014-01-17 11:49:50 +08:00
    个人觉得很不错的
    我觉得lz 可以考虑做成企业版,对于一个软件公司来说,可能会有用~
    dlutcat
        154
    dlutcat  
       2014-01-22 13:19:37 +08:00
    这是个good idea!
    Tankpt
        155
    Tankpt  
       2014-02-17 10:51:25 +08:00
    楼主强烈建议你把underscore.js的代码放上去=-=
    leafonsword
        156
    leafonsword  
       2014-06-15 10:46:49 +08:00
    能上传自定义代码就好了
    inevermore
        157
    inevermore  
       2015-04-30 18:07:27 +08:00
    期待
    1. 代码高亮
    2. 就算不支持自己上传代码,起码提供个建议页面,添加github知名项目
    inevermore
        158
    inevermore  
       2015-04-30 18:09:39 +08:00
    还有个建议是 开启个编辑模式,显示所有的注解,这样思路更加顺畅。 另外,可以鼠标指向某一行时自己显示注解。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1893 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 16:27 · PVG 00:27 · LAX 08:27 · JFK 11:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.