比特币与区块链

2月15日下班高峰,经历了惨绝人寰的堵车、堵地铁、堵电梯后,16位小伙伴齐聚观音桥,参加Hello Code Club 第三期由创始会员梦林带来的《比特币与区块链》分享,大部分小伙伴都是见过2次面的熟人,所以简单的寒暄后进入正题。 比特币相关概念 简单来说,比特币网络是一个去中心化的分布式账本,里面记录着每一笔交易详情,并不是具体的币,但它具备有限发行、价值转换、流通性等货币属性。更完整的描述,当然是去看维基百科啦。 记录交易 既然说到,比特币说到底是个账本,那么是谁任劳任怨、积极主动把这么多的交易收纳进账本呢。主要通过竞争记账,也就是大家熟知的挖矿制造新区块来进行。 矿工提取比特币网络前一个区块到目前(周期大约10分钟)的交易记录详情,放到一个数据块,再添加自己的特征信息进行大量计算,生成符合规则的目标值(n个0开头的字符串),万里长征就算看到希望,就可以把区块发送到网络上的节点,给自己账户添加一笔新增N个(目前12.5个)比特币的交易记录,同时获得区块里面每笔交易的交易费。 基于公式比特币新增一个区块的奖励是指数递减的,后面无矿可挖怎么办,所以后面的激励策略主要是靠交易费了。 Merkle 树 梦林用了一点时间跟大家解释每个区块里面交易是一种哈希二叉树,试图说明在计算和校验大规模数据的时候,这是一个非常高效的设计,网上找了一个图,大家将就看吧。 顺便说一句,如果用了大量的算力,只是算出一些无聊的字母,未免太浪费。所以一些新的区块链设计里面加入了破解基因图谱类似的分解工作,让计算更有价值 比特币的使用 主要涉及私钥、公钥密码学相关应用,每一笔交易都会被1个或多个签名加密。为了解决多重交易的问题,需要多个block包含这笔交易,实践中每笔交易经过6个block或者一些可信度较高的节点确认,风险就会降到最小,所以大约是1小时,说到底安全就是个信任和成本的问题。 因为私钥的管理方式不同,账户一般通过自己管理的钱包和交易所两种形式。每个账户地址是唯一,账户背后的使用者则不一定,另外整个网络通过混编传输等技术实现了交易记录的匿名性。 过程中大家还探讨了,因为比特币越来越少,会不会最后难以交易或者收藏不流通以及如果是政府机构,如何处理“通缩”的问题。首先,比特币是可以无限分解的,不会出现不能找零或者要用一沓报纸买一杯水的场景。另外,通缩的问题,现实中可以通过减少发行量、回购、银行节点增加备付金等形式来调控,那么比特币网络也可以根据流通情况来调整,需有待观察。 动态调整和不可变的数据 区块链这样的去中心化技术的精妙之处,希望通过自发共识机制,让整个生态可持续。比如上面提到的挖矿工作量证明难度、一个新区块的周期都是根据当前网络的算力动态调整的。 为何叫区块“链”呢。因为通过竞争记账,每一笔交易都会根据发生顺序一个block接一个block的串起来,里面的交易头和签名信息都是根据密码学方式保证,使得数据不可篡改即不可变。 区块链应用扩展 通过上面比特币的实例化阐述,梦林得出一个经典总结。 区块链核心本质就是价值的传递 除了金融行业,大部分需要守护价值传递的场景都可运用上区块链技术,比如: 股权 知识产权 复杂多方交易 在这个环节,大家也是脑洞大开,技术也是需要成本的嘛,在场的一位兄弟就提到他用一个更低成本的实现来保障代码专利,大致思路就是把代码片段hash后,把hash字符串存到银行的交易备注记录里,当发生纠纷重现这个hash来主张自己的权利。这里涉及到银行背书,大家又发散到法律界如何进行举证以及互联网证据在我国法律中的可信度等讨论。 中心化和去中心化探讨 梦林提及最初发明Internet、万维网的这帮开路先锋,初衷就是希望去中心化,但是现在越来越多大公司的产品和做法却是中心化的,目的呢就像我厂boss比较经典的总结,任何平台发展到最后一定是个大数据公司和金融公司。 这个环节,初步达成一致,中心化能提供便利的服务,去中心化能降低风险和有效利用资源,正确的做法是根据场景配套起来实施。(其实是因为到这节点都快10点,赶不上回家末班车了,懒得撕逼了_) 小总结:经历了互联网、加密学、金融、政治、法律等多方面的友好切磋,大家意犹未尽的离去,感谢梦林的精心总结,感谢大家的热情参与,最后爆个照。 如果你也想参加这样的分享活动,来个思想上的激情碰撞,先从关注公众号(hellocode_club)和我们交流开始吧

February 16, 2017 · laotan
春节6天江沪包游记

春节6天江沪包游记

前几年在外漂泊的时候,春节都是老老实实呆家里的。最近2年,实在是闲不住,都会忍不住的想出去浪。 年前在规划目的地的时候犯了难,看一些论坛里最热门的北海去过了,也不想去云南人车扎堆,国外景点费用节节攀高。翻开旅行类app就看国内哪里机票便宜,发现到上海的机票只要400多,遂打算带着侄子去迪斯尼玩,更巧的是在深圳的好友春节要回婺源结婚,这地离上海挺近,更加坚定了长三角逛逛的想法。可惜事与愿违,侄子比较内向不肯出去玩,买不到婺源到上海的回城高铁婚礼没去成。 一般去长三角都会选择华东五市游,只是因为时间有限,杭州也去过了,最终选择了南京-苏州-上海的行程。 南京 十朝古都,一砖一瓦都透露着历史的气息,随处可见的历史遗迹、博物馆、纪念馆。以致于到最后都开始怀疑了,哪些是真迹哪些后人修缮,在重庆就不会有这种感觉,因为80%的古镇古迹都是人为复刻的。那天,暴走了微信运动历史我最高的18公里。 夫子庙旁、秦淮河边,正在努力的展现古时的生活场景 总统府,近代史的封面 而这一切,像诗里描述,“旧时王谢堂前燕,飞入寻常百姓家” 苏州 “上有天堂,下有苏杭”,苏州的美丽、富饶淋漓地刻画进了错落有致的民居、运河和大大小小的园林里。却不知何以令得乾隆皇帝流连忘返,总之我看了2个园林后已经审美疲劳,不得其妙了。 七里山塘,很贴切的解释了什么是东方威尼斯 拙政园的假山真乃一绝,起初导游解说乾隆曾经在里面迷路2个小时,我还不信。当我亲身钻进去,体验到各种峰回路转的设计,真的像绕迷宫一样,是在下输了。 苏州园林时刻在阐述景中有画、画中有景,从不同的角度望出去,都是一副独立构图的山水画 寒山寺,文人骚客路过此地都不免感慨,印证了悲伤会传染的事实 上海 有纸醉金迷的繁华,也有风情独具的弄堂,还有超客气的吴侬软语,但总感觉这个城市和重庆有许多相似之处,棱角宣明特色自显,或许一个是阳春白雪,另一个是下里巴人罢了。 上海滩,旧上海的繁荣存照 外滩对面的陆家嘴,则是当今上海的金融核心 爬上了亚洲目前建成最高楼,也算此行无憾了 外白渡桥,有守卫,估计是担心游客效仿影视剧跳下去 如果要说上海和重庆夜景的区别,一个格局足够大,一个更立体 (完)

February 14, 2017 · laotan

做一个合格的技术管理者

工作6年半,最近有契机让自己停下来检查过往的工作,为下一个里程碑做好准备。 做一个技术管理者,可能是中国式IT发展的经典套路,毕竟很多人都要面临30岁以后写不动代码怎么办的问题,因为认知的改变,现在条件普遍上升到了40岁😆。 结合我自己的经历,总结下技术管理者应该具备的素质,而我自己明确有许多不足的地方,路还很漫长。 既然是技术管理者,那肯定是和技术强关联的,骨子里就认同并热爱技术。具体应该表现在基础扎实、实战经验过硬、某个领域的攻坚、对技术敏感且包容,这是一个技术领头人的硬实力。技术思维也是非常重要的,认同技术短期服务业务,长期应该驱动业务发展,需要带着严密的逻辑性来分析问题,用自动化的思路来解决问题,用预警机制来降低风险。 反观自己,理论基础可能是自己的硬伤,空凭一腔热爱和敢于折腾,走上了程序员道路。一定规模内的应用还能hold住,真到复杂化的场景可能就啃不动了。对于这点的弥补,团队的重要性就体现出来,团队内必须有相应的人顶上,并且给予足够的信任。 所以,谈下如何在团队中发挥技术管理者的作用,工程师的分水岭就体现在前期能否管理自我、站稳脚跟,后期能否带领更多的人达成目标、创造价值。管理学是一门非常复杂的学问,但对于一个团队的技术管理者,主要职责可以归类于项目管理和团队建设。 项目管理首要是有代入感,把自己当成创造者而不是协作者,这样才有动力和责任心去完成,除了技术方案的评估,对于业务也要求非常熟悉,能提前感知风险并排除阻碍,项目的质量和如期交付同等重要。 团队建设可能是一个技术管理者最棘手的问题,收效慢需要长期耕耘和传承,我在此花了许多时间也走了不少弯路。相比于技术主导和项目管理,团队建设更缺少可复用的模式,每个团队的风格也不尽一样。团队建设涉及的环节也非常多,招聘、培养、激励、考核、规范流程、分享和交流、影响力……可以总结的有这几点:技术人员普遍有较强的自主性,引导多余约束;关注每个人的定位和需求,给予足够空间和帮助;创新驱动,不要增加负担。 最后给过早被推上位的技术TL一些忠告也算是经验,不要只顾投身于团队奉献而忘了自己的出发点;情感会蒙蔽自己,利益驱动才是本质。

February 13, 2017 · laotan

把博客从wordpress迁移到ghost

博客程序已经从wordpress迁移到了ghost wordpress频繁更新但还是漏洞百出,前段时间忘了升级程序被扫描到并且hacked,加上wordpress作为个人blog显得有点笨重,安装备份迁移也麻烦。 一入前端深似海,折腾Node.js后,也很久没有折腾过PHP项目,用ghost替换wordpress也是迟早的事。 还有个最重要的原因,翻阅之前的文章,幼稚得瑟瑟发抖,难免想重新开始,但不会完全抹去,毕竟这是从幼稚走向成熟的见证,挑几篇看得过去的转移过来,其他的就作为backup资料封存起来吧。 最后趁热加上了https访问

February 8, 2017 · laotan

2016年终回忆录

没有什么大事情 今年更舍得给自己投资,买了一把鹅厂同款超舒服人体工学椅,买了一些想买即买的电子产品,给车子也加装了一些增强科技体验的小部件。 生活半径的加大,再加上压抑不住想四处浪的心态,年初自驾了北海,10月去了大西北,再加上川渝周边的地方,除了丰富亲历才有的体验就是一笔笔的开支,但最终发现不管去不去浪,都没什么余粮,再一次印证了物质守恒的真理:-D 工作方面,大小几个项目,有大快人心的明星项目也有尴尬收场的自嗨,今年让我理解最深的一个道理就是,一个事情的成功,天时地利人和都很重要,也就是一定要在合适的场景做正确的事,才会事半功倍。 此外,岁月的更迭,带走了记忆中的一些事物,也带走了少许看我们从小到大的亲人,特别是到了现在的生命周期,可能这种别离会越频繁,越麻木。我有一个心愿,不是世界和平,而是希望每个人可以生前不留遗憾,逝后得到尊重,不枉世间走一回。 新的一年,我仍然期待多姿多彩的转变,而且正在酝酿着。

January 1, 2017 · laotan

基于GitLab CI、Docker的Node.js持续集成部署方案

理论部分不赘述,一张图说完整个流程,实操以Centos 7和root用户为例 GitLab Runner安装和配置 1、 在部署机器安装CI Runner curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash 2、 注册Runner并绑定到CI gitlab-ci-multi-runner register # url和token,在Git项目的 /runners页面可获取,step by step填写 配置信息保存在/etc/gitlab-runner/config.toml 3、Git根目录配置 .gitlab-ci.yml stages: - deploy cache: paths: - node_modules/ #部分需要重复利用又被gitignore的文件 before_script: - npm install - npm run static-prod - npm run vue deploy_test: stage: deploy only: - dev script: - rsync -azp --delete --exclude=.git current_dir deploy_dir - docker exec -d nodejs-xxx-test bash -c “pm2 restart xxx” ...other task Docker安装和配置 1、安装Docker和启动 ...

December 21, 2016 · laotan

山里的记忆

每次回到生我养我的山村里,总会勾起一些回忆,产生一些想法,很怕自己忘记。 路过的一洼田、一垄土、一颗树都会把记忆拉回小时候,背负和体重差不多的重负一步步往目的地挪动,但小时候没有苦的概念,只有咬咬牙的坚持。 农村人很伟大又很可怜,他们有着坚韧勤劳的品质,但同时会显得愚昧和固执,为了生活的期望,一代代的活着。 新事物对传统冲击一直都有,一些古老的东西正在丢失,有坏的风俗也有一些古老的文化和技艺。有机会我很想带更多人来看看我的小山村,不为了寻找同情也不是批判,只是看看这个一直运转的世界。

October 27, 2016 · laotan

2015年终回忆录

今年的回忆录来得迟了些,拖延症重度发作外加这几天一直比较焦虑,迟迟难下笔。 随手记欢迎页提醒,已经坚持记账1700多天了,先回头看看今年都做了些什么。 工作上值得记录的有,组织了几个活动,4月对外的前端培训,8月公司内的黑客马拉松,9月对内的前端训练营,11月公司外的渝FE2015,都属具有历史意义的第一次,虽然结果均有遗憾,但都是超出预期的。对我自己而言,这些经验,让我在组织新的活动时能更从容,但同时也需要去重视的有活动的持续性以及下一次如何更完美。今年还参与了2次行业交流会,放空心态后总会收获一些有用的经验和资源。 生活方面的改变有,从报名驾校到拿本提车上路,一气呵成,当有明确的目标时,执行力和意志力还是能蹦出来的。今年还见了几个不在这座城市的老友,每一个都会合影留念,虽然现在交通更加便捷,但见面需要的契机是可遇而不可求的。 过完流水,最近一直在想的几个点,经过自己总结以及和他人交流,也需要记录。 关于焦虑,这一年状态最好的时候中间段,最难熬的就是年初和现在,或许是中间段有明确的目标和计划,稳步进行,忙碌充实有收获,两头的时候要么丢失了目标,要么是停止了努力的脚步,外加行业发展太快,新人辈出,如何“找自己”?所谓饱暖思淫欲,得闲空焦虑。人无远虑,必有近忧,我现在应该就是处于忧的状态,需要新的计划来充实自己。 关于计划,我还是希望做一个实在的人,做有价值的事,既不想浑浑噩噩混日子,也不想轰轰烈烈赚眼球。所以给自己的四个字是“厚积薄发”,在自己擅长和熟悉的领域深入下去,做一些细致的沉淀,同时对于认知的广度和新鲜事物的敏感度稍作加强,最后就是对于工作和生活的热情不能丢。有些保守,因为保守曾错失一些美好,但到手的也相对踏实,这是一把双刃剑。 关于情商,我不认为自己有多高也不认为有多糟糕,而且我相信是可以磨练的。总结的时候,发现自己有个很不好的地方,古训教导我们“严于律己,宽以待人”,而我恰恰是对身边的人更苛刻,这倒不是关键,关键的是要求他人之前我没做好示范,所以接下来多关心身边亲人,不能伤了他们心。

January 9, 2016 · laotan

再谈Web前端性能优化

如题,Web前端性能优化这个话题被谈得有点厌了,十年前就有《Yahoo网站性能优化34条军规》、《Google性能优化准则》等参考教条了。根据这些准则和日常开发的经验,我制作了如下Web前端性能优化流程图。 既然再谈,就要旧瓶装点新酒,那么这个“新”从何而来?恐怕只有Web的最终载体——浏览器能告诉答案,能够支持些什么新技术,宿主环境发生了些什么变化。 Web新技术层出不穷,跟性能优化相关的,可能要首推HTTP/2了,它的多路复用和服务端推送重要特性,轻松解决了我们之前不遗余力去做的一些如压缩合并、顺序并发、缓存更新等静态资源管理问题,这也是当下主流前端工程化方案的重要一环。 另外我们团队正在调研并逐步接入的WebP也非常值得一提,它具有更高压缩比,同时支持无损和有损,支持Alpha和动画,完全就是其他图片格式的超集。通过工具分析,前端静态资源的重头还是在图片,其他优化手段的效果许多时候还不如压缩一张大图高效。 HTTP/2和WebP在主流浏览器得到了较好支持或者有对应的解决方案,但在火热的移动端就不太友好了。现在,前端性能优化在移动端开发的时候被提到更多,军规同样适用而且更严格。感觉在重走PC Web开发之前的老路,主要还是受浏览器和客户端的能力限制。 每次谈性能优化最后都想强调,优化不是空穴来风也不应该是虚声恫吓。有的公司的性能基准线是3s,有的是7s,而像12306那种强需求的半分钟也不为过。 我们对高级前端工程师的要求,除了掌握常见的优化技巧外,还应该通过数据统计分析进行系统优化。对于一些性能不是大问题的页面我们会更多考虑可维护性等协作要求,针对一些关键性页面或性能瓶颈就要采用创造性的优化手段。

November 12, 2015 · laotan

重庆首届前端培训体验班资料

《你真的会切图吗》 切图概念 前端职责 与产品经理和交互、视觉设计师协作,根据需求文档、线框图、设计稿完成页面制作(切图部分); 与后台工程师协作,完成数据交互、动态信息展现和用户的互动 切图定义 设计思路的理解和还原 页面模块化制作的预演 切图理论储备 常见图片格式 设备像素比 devicePixelRatio = 物理像素 / dips(device-independent像素,设备无关的像素),常见@1x,@2x,@3x 切图实践要领 心中有数 需求定位、结果模块、资源细分、 疑难杂症 大刀阔斧 工欲善其事,必先利其器:硬件舍得、软件恰当、工具够用 图层的合理运用:选择、分组、复制 精雕细磨 压缩图片体积、图片大小范围、仿色杂边处理、雪碧图合并 simple than simple 不切图、让他人切图、自动化切图 《HTML构建之法》 HTML释义 HTML与XHTML、结构与表现分离、使用语义化标签 语义化 What:用合理的HTML标签标记相应的内容。 Why:可用性、易用性、可维护、SEO等 How:认识HTML标签、理解标签的意义 HTML5 新特性 Canvas 元素 Video 、 Audio 元素 本地离线存储 新标签: article、footer、header、nav、section 新表单: calendar、date、time、email、url、search 模块化 可复用性、方便维护、利于协作 BEM:B -> 块(Block)、E -> 元素 (Element)、M -> 修饰符(Modifier) 最佳实践 书写规范:小写、闭合 合理使用标签:语义化、模块化 声明正确的文档类型 少使用框架 结构、表现、行为分离:不写内联样式 学习提升 多看手册(W3School) 分享文章(UED、个人博客、前端社区) 查看元素(Chrome、Firefox) 告别随意(实践出真知…) 《CSS基础》 CSS概念 CSS基本概念、引入方式、CSS规则 ...

June 21, 2015 · laotan