GitHub Star 的意义

 

以目前来看,GitHub 上有用的仓库大致分为两种类型,项目和文档。 以代码为主的可运行项目 这类项目(排除那些没有替代品的)是有具体使用场景的,或是框架或是应用。如果从星数看,这类项目是比较难获得星的,因为: 项目具体的使用场景相对固定,这也就决定了其目标用户毕竟是少数项目的效果非常直观,通过代码质量、运行结果、文档、社区等可以很容易对比出同类项目的优劣 如果你“看不起”或者“看不懂” 的项目有较多星,说明的确是对一部分人有用,这是真的有价值的项目。它们节省了目标用户的时间、减少潜在的缺陷等。另外,这类的项目同质化严重,基本都大同小异,但它们之间的星数还是会有数量级上的差距的,这就是优秀、一般、一般般的直观差别。 如果要从设计或者代码上看这类项目有啥值得学习的,那可能还真没有。因为这类项目的本质其实就是干了一些脏活累活,而正是这些脏活累活很少人愿意自己干,更何况干得漂亮的了。 漂亮的 API 背后都是丑陋不堪的实现,丑陋是因为我们不想看,看不懂,发现不了它们的美。 以 Markdown 为主的文档 这类仓库在我看来大部分都是没用的: Awesome-xxx面试宝典-xxx 书籍收....

More...

是否应该让用户自己来分类内容有感

别让普通用户做选择,不然他们会把简单的事情复杂化。对于普通用户,发布内容时功能越简单越好,甚至是只需要一个标题。不要提供分类、节点、标签的选择,因为普通用户都有“选择困难症”。 这和垃圾分类是类似的(当然,我不是说普通用户发布的内容是垃圾)。只有很少一部分人在扔垃圾时会考虑适合的垃圾桶。我们的终极社会(共产主义)实现的前提是人民的素质必须到达非常高的地步,我们理想中的社区也需要用户在很大程度上达成行为的一致和思想上的共识。 而在目前,这显然是不可能的。高速发展带来的问题主要是内部矛盾,而内部矛盾通过系统化的规则约束和引导来解决是较为稳妥和可行的。在内容分类这个问题上,我们要让一部分有强烈分类意愿的用户来达到他们对分类的渴求: 隐藏分类入口,让有探索精神的用户发现并使用它设置管理分类的权限,让具备选择能力(权限)的用户帮助其他人分类 只有这样,我们才能把社区中混乱的信息逐步进行规整,将社区的管理工作逐步交给其他参与者来做。随着管理权逐步分散执行,最终实现自治的社区。

More...

2018 成为报废程序员的第一年

工作 第一次被裁员 2 月底云南省国资商城宣布裁员,很不幸,我和 @Vanessa 都被裁了,做扶贫的项目结果把员工给做贫了。 不过被裁也不是什么坏事,因为终于可以做自己想做的事情了!3 月份我们 建立了一家公司 —— 云南链滴科技,开启了两个程序员的创业之路。 春夏秋 创业的第一个春天创业的第一个夏天创业的第一个秋天这个冬天还没过完,明年开春前再总结 生活 旅游 7 月份沿大理-丽江-泸沽湖这条线游玩了一番,我发现我已经变成了个吃货,对景点兴趣不大,基本是走到哪里就研究那里有什么好吃的,人活一张嘴。 厨艺和散步 今年我完成了大部分的厨房灶火任务,下厨房这个 APP 还是蛮好用的,它满足了我大部分的需求,但同时我也很好奇它是怎么盈利的。可能是创业带来的影响吧,我最近总会考虑别人的赢利点,也许是潜意识中希望能借此偷来赚钱的点子吧。 每天吃完午饭,只要天气允许,我和 V 会下楼走一圈散个步,不是为了锻炼身体,而是为了讨论活下去的方法。这么说好像有点惨巴巴的,但是我们确实通过“散步讨论法”产出了好几个想做且能做的事情,当然,都是些基本没有把握能赚到钱(甚至是小钱)的事情。 这些事情可能只是....

More...

工程师和科学家

现在很多公司对程序员的招聘要求已经越来越高,比如招前端要求熟悉后端,招后端要求熟悉前端;招 Java 要求熟悉 golang。虽然名义上说是加分项,但其实也算是个硬性要求了,因为你不会但你的竞争者会。 程序员这个行业也经历了“合久必分分久必合”。很多年以前的招聘就要求啥都会,从前台都后台,从设计到运维。后来行业分工出现了,产品经理、设计师、前端、后端、测试、运维、运营、客服等岗位各司其职,一个较为“正规”的技术团队至少会包含这几个工种。 再后来,更细化的岗位接踵而至,交互设计师、UI 设计师、用户体验设计师、文案师、前中后台开发、策划师、算法工程师、DBA、业务架构师、技术架构师、流程 QA 等等,只要需要一个独立岗,这个岗上基本就是一个团队。 到现在,很多企业为了扁平化、敏捷管理,团队进行组合优化,“全才型”员工更受欢迎。仅从技术方面分析,这是因为云计算的普及化,很多企业上云(或者本地私有云)后,大部分技术都以平台化、组件化方式进行了实现,这对人的全面性要求就更高,深度要求则不会那么明显。 所以一个有趣的现象就是,现在的很多招聘事实上是面向独立开发者的,独立开发者比全栈工程师要求更高....

More...

未来 APP 形态猜想

大胆预测一下未来的应用程序形态,原生 APP 即传统 C/S 模式的应用程序将是未来的趋势。目前虽然基于浏览器 B/S 应用非常多,PWA 在 Google 的大力推广发展下已经逐步普及,但我还是觉得原生应用才是未来。 操作系统的发展 Windows、Mac 在桌面市场上已经没有敌手了。他们未来应该会做全平台的统一应用,全平台指的是移动端、PC 等设备上操作系统平台的统一,微软在这方面似乎已经先行一步。在不久的将来,开发者只需要开发一套代码,程序就可以跑在该操作系统平台的任何设备上。 操作系统也会为应用程序在打开、切换方式上做优化,让用户可以更方便地进行切换和管理。可能会很类似目前在浏览器上切换页签一样的用户体验。 浏览器的尴尬处境 目前主流的浏览器虽然在编程规范上已经逐渐统一、标准化,并拥有了一些原生应用的能力(比如可以通过 PWA 实现离线、通知等),但其归根结底还是没法为开发者带来“一次编写,到处运行”的便利,用户也需要在不同设备上重复安装 APP,相同 APP 在不同设备上的使用方式也没法得到一致的体验。 浏览器的“手”伸得再长,也还是运行在操作系统上,其作为一个“应用沙箱”显....

More...

关于简书社区的简书钻

简书钻 首先,这让我想起了天涯钻 :trollface: 简书钻 - 简书积分系统升级公告 - 简书 稍微再挖了几篇相关文章,大概是简书和一个叫 Fountain 的组织达成合作,通过 Fountain 的公链发币: 简书也要来区块链割韭菜吗 - 简书Fountain 白皮书 v0.95 - 简书 社区贡献的价值 简书也开始发币了,但可惜他们没有讲清楚用户最关心的事情:所谓社区贡献的价值到底是什么。 我认为简单来说,在大部分用户看来,社区贡献的价值基本等价于现实货币,也就是在平台上创作的内容是否能够变现。币圈公知李笑来曾经说过:“傻逼的共识也是共识,赚到钱就是成功”,话糙理不糙。在少部分用户(核心用户)看来,社区贡献才真正是社区产生的价值,可以在社区内通过社区币/通证的方式进行交换流通。这两者都可以看成是社区共识,也就是用户和社区达成了某种程度上价值取向的一致。 回报和增发 说回来,简书这次发币有点“作”,除了未来的价值问题没有介绍清楚外,还有个较为致命的问题:简书钻的总量上限没有公布,也就是说存在无限增发的可能。 从简书下线积分系统我基本可以断定,简书钻是无限增发的,不然....

More...

创业的第一个秋天

如果你是第一次看这个系列的文章,可从第一篇创业的第一个春天看起。 秋天是收获的季节,但我这个码农做得不够好。 黑客派 黑客派注册数和流量还在稳定提升中,目前日 PV 20K 独立 IP 7K,靠挂广告已经能够回本服务器、带宽等费用。最近一个月 Google Adsense 广告费有小几百刀,办了个光大的卡来西联收款,不求一夜暴富,只求细水长流。在这个 IT 社区泛滥同质化严重的情况下,能收支平衡也不错了,知足常乐吧。 智能机器的 UGC 是有意义的吗?对于内容运营,我会继续坚持一直以来的观点,内容都是真实用户产生,不做“开局一个站,内容全靠编”。因为做小编太难了,我不是那块料 :joy: 链书 随着这波炒币热潮的退却,很多圈钱的项目已经套现离场。有价值的项目开始进入长跑阶段,链书虽然没有融资,但会一直坚持运营下去,不断改进优化。 对了,V 用了大概 3 天时间实现了个链书的快应用,目前已经上架了小米、 OPPO、ZET、Vivo、金立,其他手机平台也会陆续上线,大家可以在负一屏或者应用商店搜索“链书”来体验(搜不到的话过两天再试试)。另外,关于快应用简介可以看这里。 BND BND....

More...

协慌网,一个汉化 Stack Overflow 的网站

Stack Overflow(SO)及其 Stack Exchange 站群想必在 IT 圈无人不知吧?对于我这样的搬砖工来说,没有 Google 可以,但是没有 SO 和 GH 是万万不行的。 SO 的价值毋庸置疑。由此,不断有类似中文版的 SO 出现,目前影响力较大的可能就是 SF 了。另一方面,也陆续有人在做 SO 某个类别下问题的翻译汉化,主要以博客文章、GH 仓库来实现。SO 全站的高票问题更是精华中的精华,这些问题是全世界开发者们最常见的,其高票答案言简意赅、发人深省。 “汉化 SO 上高票问答”的想法我能从网上能找到的最早记录是在 2010 年,当时的 SO 还没这么优秀,这足以说明其价值。这些年来一直有人在讨论汉化 SO 的可行性和必要性,其中有一种观点我嗤之以鼻: 连英文都看不懂的人就别写程序了 说这样话的人可能忘了语言只是一种工具,不是目的。如果有得选,我肯定选择适合我自己的工具。如果汉化的 SO 问答内容能被我搜到,我想它一定能在最大程度上帮助到我。 当然,这个想法除了讨论,也早有人付诸于实践了,可以说 SO 翻译站从生到死的案例举不胜举(你肯定没听说过,不然....

More...

Java 正则中的非捕获组

正则表达式中的非捕获组(non-capturing group)用于匹配但不“保存”匹配结果,出现在正则表达式模式中的 (?:pattern) 这部分就是非捕获组。 我试了几个在线的正则表达式测试工具,返回的匹配结果都是“整个组”,不是非捕获组。 Java 中 Matcher#group() 返回的是 group(0),也是整个匹配结果,如果要返回第一个非捕获组,需要用 group(1)。 Pattern pattern = Pattern.compile("([0-9]+)(?:st|nd|rd|th)?"); Matcher matcher = pattern.matcher("1st 2nd 3 4th"); while (matcher.find()) { System.out.printf("%3s %s\n", matcher.group(), matcher.group(1)); } 输出: 1st 1 2nd 2 3 3 4th 4 另外,使用非捕获组时需要注意结尾的 ?,在上面例子中 ([0-9]+)(?:st|nd|rd|th)? 说明该非捕获组是可选的,如....

More...

《提问的智慧》精读注解版

大学期间,我看过《大教堂与集市》、《提问的智慧》以及影片《操作系统的革命》,它们对我后来的职业生涯产生了重要的影响。其中《提问的智慧》是篇长文,几十分钟就能看完,此文作者 Eric Steven Raymond(ESR)也是《大教堂与集市》的作者,著名的黑客,开源先驱。他在 2001 年第一次发布《提》后一直对此文进行着更新维护,以保证它尽量适用于最新的情况,比如与时俱进地加入新章节、修复 URL 地址、更新翻译版链接等。 今天我又读了一遍《提》,作为一个开源项目的维护者,感慨万千。下文是我对《提》的 部分 注解,如果你时间有限,可以通过该注解版进行有限的了解。但还是强烈建议你精读一遍《提问的智慧》,英语好的同学可直接看原文 How To Ask Questions The Smart Way。 下面按照原文章节进行注解,标题即原文章节标题。再次说明,我仅仅是注解了《提》中的部分内容,有时间的话请一定要看原文。 声明 该小节 ESR 建议项目维护者在用户指南文档的显著位置标注: 本指南不提供此项目的实际支持服务! 我们已经深刻领教到少了上述声明所带来的痛苦。因为少了这点声明,我们不停....

More...

百度不限速下载器 BND2 技术架构简介

BND2 简介 BND2 是一款图形界面的百度不限速下载器,支持 64 位 Windows 和 Mac,仅提供给黑客派会员使用,下载地址:https://share.weiyun.com/5Z32JP8 高速下载原理 通过 PCS API 获得文件、下载链接通过 Aria2 实现高速下载 和百度网盘下载相关的内容我们就介绍到这里。下面我们主要介绍框架和实现相关的东西,如果你刚好想做一个桌面软件,可以参考借鉴一下。 技术架构 BND2 基于 Electron、React、golang 实现,通过主框架 - UI - 内核的分离实现 UI 以及内核的自动更新。 主框架:Electron 主进程,负责版本检查、账号登录以及管理内核UI:React 实现主界面,编译后上 CDN,通过 Electron <webview> 加载内核:golang 实现的 HTTP 服务,负责响应 UI 请求,管理 Aria2 进程。 编译后可执行二进制上 CDN 提供给主框架拉取更新 为什么选 Electron、React 和 golang 在选择 Electron 之前,我们大致看了下 NW....

More...

创业的第一个夏天

如果你是第一次看这个系列的文章,可从第一篇创业的第一个春天看起。 昆明的夏天让人感受不到热就要到秋天了,我好像又过了一个假的夏天。 BND 百度网盘不限速下载是很多人的刚需,所以 5 月初写了个小工具 BND(Baidu Netdisk Downloader),虽然有点糙但是还算好用。 BND2 计划开始社区投票了,如果你需要请前来投票。 解散 Q 群 真的很不舍啊,An 说这是“断舍离”,真是这样的。解散前夕大概十多个网友找我转让群,我都回绝了。大家主要是觉得: B3log 从此没有组织了活跃度这么高的群解散了太可惜 B3log 会一直存在下去,这是我一直以来在做的事,所以请大家放心好了。具体 Q 群解散的公告详见与此,希望大家以后将大把的时间用在处 CP、找情缘上,而不是用在装逼水群上,老群主言尽于此。 链书 年初有链书这个想法后又边做边想了小半年,6 月初上线了。对于只有程序员的项目,开发完恐怕就真的完了。但我们 B3log 不只有程序员,还有两个运营专员! 我们会陆续上架一些书籍,大家无聊的时候记得来看看。另外,你那里如果有书籍要卖(现阶段说成是"无偿共享"更贴切一些),请....

More...

链书 M1 上线

链书 简介 链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。 链书主要通过如下组件实现服务: 链书社:微信小程序,扫 ISBN 进行书籍上架、购买书籍、快递预约等业务操作黑客派:链书社服务端,实现账号系统、书籍管理、B3T 转账、社区论坛等B3T:B3log 开源社区币,以太坊 ERC20 令牌 动机 让闲置书籍继续发挥社会价值做一个真实落地的区块链应用为 B3T 赋值,扩大 B3log 开源社区影响力 使用流程 微信登录 如果没有黑客派账号,直接通过链书社小程序登录即可如果已有黑客派账号,需要先到个人设置账号中绑定微信,然后再通过链书社小程序登录 交易书籍 卖家使用小程序扫书 ISBN 并设定 x 个 B3T 上架,标明寄付或到付买家需求下单:冻结买家的 x 个 B3T卖家快递书给买家:通过系统联系快递上门取件进行寄送买家签收后系统将 x 个冻结 B3T 解冻并转账给卖家 在这个交易过程中: 卖家主要成本是发快递的人力时间成本,寄付的话还需要支付快递费,收益是获得 x 个自定价的 B3T买家主要成本是支付 ....

More...

关于解散所有 B3log 开源社区官方 QQ 群的公告

所有 B3log 开源官方 Q 群将于 2018 年 5 月 18 日(周五)中午解散。解散的群包括: B3log 开源①:2K 人群B3log 开源②:2K 人群B3log 开源③:300 人群B3log 币圈:400 人群B3log BND:1K 人群B3log Game:100 人群(如有需要,解散前大家可互加好友) 从建立第一个 Q 群到现在已经 8 年有余,但最终我还是不得不做出这个艰难的决定,主要是因为: B3log 开源社区的产品在 GitHub 上通过 issue 讨论更为专业和方便Q 群信息太过吵杂,对于有价值的讨论也无法给自己和后人留下参考管理 Q 群耗费了我们大量的精力,现阶段我们将把精力集中在 B3log 项目的推进上 最终 B3log 开源社区将只保留如下的线上联络渠道: 黑客派: https://hacpai.comGitHub: https://github.com/b3logTwitter:https://twitter.com/b3logosTelegramhttps://t.me/b3log微信公众号:b3logos微博:https://w....

More...

Windows 通过命令行安装根证书

背景 有的时候我们需要在用户机器上将自制的 CA 证书安装到“受信任的根证书颁发机构”下,这样就能使用该 CA 颁发自签名的证书了,以便后续完成一些安全相关的操作。 工具 在命令行安装证书需要用到证书管理器 certmgr.exe,这个二进制可执行文件在 Win10 中 大概 这个路径下,C:\Program Files (x86)\Windows Kits\8.1\bin\x86\certmgr.exe,建议把这个二进制打在程序的发布包中,或者让程序从网络上拉取到本地。 不带参直接运行的话会弹出一个简单的图形界面: 另外,还有个证书管理器 certmgr.msc,看上去功能更多一些,不过这个是纯图形界面的: certmgr.exe 可以通过该工具实现证书的管理操作: D:&gt;certmgr.exe /? Usage: CertMgr [options][-s [-r <location>][SourceStoreName] [-s [-r <location>][DestinationStoreName] Options: -add Add cert....

More...

创业的第一个春天

3 月份家里蹲之后,好几个早晨洗漱都会留鼻血,昆明的春天实在太干燥了。 健康 3 月下旬因为气胸住院了一个星期,自我感觉良好后就要求出院了。养到现在感觉已无大碍,只是不敢怎么运动了(说得自己之前多爱运动一样 :smirk:)。 一年多没体检了,所幸这次住院检查没查出什么不治之症。住院才知道钱花的快,病不起啊!所以,其实人最重要的事情是保护好身体,别生病。 保持身心健康在所有事情里面排第一位。 B3log 开源 B3log 开源的主要产品基本是每两个星期发布一个版本。虽然之前 Sym、Solo 作为业余时间的项目陆续开发好多年了,但现在感觉还是存在很大的改进空间。最近发布频繁网络上曝光比较多,用户多了起来,反馈的问题也变多了。 当然,这是一件非常好的事情,我想无论对我还是对项目而言,这都是从业余到专业的转变,继续保持下去吧 :stuck_out_tongue_closed_eyes: 链书本来计划 4 月份上线的,现在我可以确定 4 月份是上不了了,也不打算挣扎了,5 月份见。 关于收入 托朋友的福,我和 V 接了个外包,加上卖 Sym 商业授权,这两个月的收入还算过得去,但不稳定是个大....

More...

MySQL 迁移 utf8 到 utf8mb4

MySQL 版本和驱动 MySQL 至少是 5.5.3+mysql-connector-java 至少是 5.1.13,修改连接串参数 characterEncoding=UTF-8 历史数据迁移 生成表字符迁移 SQL: SELECT CONCAT( 'ALTER TABLE ', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;' ) AS mySQL FROM INFORMATION_SCHEMA. TABLES WHERE TABLE_SCHEMA = 'your_schema' 生成后执行一把,这样表和列的字符集就改完了。我这里通过修改表的字符集就自动修改列的了,最好自己确认下列是否已经改对。 修改库字符集: ALTER DATABASE your_schema CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci; 上面示例代码中的 COLLATE(排序规则)请按需修改。 关于连接串参数 characterEn....

More...

以太坊同步一直“卡着”的原因

用 geth 下载区块数据基本完成(基本追平当前区块高度),如果日志还一直刷如下两句: Imported new state entries .... Stalling state sync, dropping peer 那说明区块数据确实差不多已经跟上最新数据了,但是状态数据还差很多,正在同步。 如果你同步了很久(比如一两天)还是落后主网几十个块,那说明可能是你的磁盘性能不足,因为状态数据同步的瓶颈在磁盘 IO,不在带宽,换个 SSD 再同步就好。 如果你要同步全节点,那一定要用 SSD 磁盘,详细解释说明请看这里。 在区块高度 5244801 时同步完成大概是这么个情况:

More...

以太坊 JavaScript API web3.js 打币

ABI 简介 关于什么是 ABI(Application Binary Interface)请看官网文档。简单来说 ABI 就是外界和合约交互的方式: ABI 用 JSON 描述合约的接口定义用约定好的编码方式进行实际调用 做过 RPC 的同学可以理解为这就是异构平台的 RPC 实现,需要进行接口定义、存根生成、寻址、序列化、网络通讯等步骤就能调用到合约上的函数了。 ABI 的实例请看这里。 web3.js 简介 web3.js 是以太坊 JavaScript API 的官方实现,用它来和以太坊节点进行可编程通讯,基于 HTTP 或 IPC 连接。简单来说 web3.js 就是可以通过 JavaScript 调用本地或远程的以太坊节点,完成网络管理、账户管理、交易等操作。 下面的代码示例基于 web3.js v1.0 开发,请注意不同版本之间的差异。 同步区块 人们都说以太坊发币最大的技术难点就是同步区块,一点儿没错! 试了 ETHFANS 星火计划提供的静态节点也不行,最后还是放弃本地电脑同步,主要问题是我家这里的网络质量太差,很多时候藕断丝连。 后来在阿里云海外节点开了台服务器几....

More...

重装系统后 git 烂了

C:\Users\Administrator>git fatal: open /dev/null or dup failed: No such file or directory Windows 上也有 /dev/null????Google 一圈后发现确实有,是用一个系统服务模拟的: C:\Users\Administrator>sc query null SERVICE_NAME: null TYPE : 1 KERNEL_DRIVER STATE : 1 STOPPED WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 手动启动该服务报错: C:\Users\Administrator>sc start null [SC] StartService 失败 577: Windows 无法验证此文件的数字签名。某软件或硬件最近有所更改,可能安装了签名错误或损毁的文件,或者安装的文件可能是来路不明的恶意软件。 C:\Windows\System3....

More...