Good good study, day day up

aleung的学习笔记, aleung的idea

Kossel Mini 3D打印机制作记录 (1)

| DIY

缘起及设计

一切都起源于 flyisland 转的这篇文章:从零开始,给自己设计一台3D打印机,大量的图文细节和制作过程描述吸引了我,门槛似乎也不怎么高,于是产生了做一台的想法。看了 Thingivers 这个网站,更是发现了新的世界,打消了“有3d打印机不知道用来做什么”的疑虑,对喜欢搞制作的人来说3d打印机太有用了。

于是开始网上查找资料,了解相关信息。一开始的想法是做像那篇文章中的 XYZ 结构,大一点的打印体积(开始都是贪心的),看了 RepRap 论坛发现关于 delta 结构的讨论很热门,了解多一些后知道 delta 结构打印机的打印速度快,成本比较低,制作也不复杂,于是锁定了 Kossel 机型,心想先做一个出来练练手,小一点也够用了,以后真玩起来有需要再做大机器。

接下来在寻找国内的资源的时候知道了 K800 打印机,这是国内爱好者 maximscy 在 Kossel Mini 基础上改进的以降低成本为目标的机型,原本 K800 的意思就是人民币800元可以做出来的 Kossel,但实际上基本上也还是要上千元。

K800 应该说对于推动3D打印机在国内普及有不少功劳,淘宝上有不少卖套件的。K800 降低了成本,但是毕竟还是以牺牲一点精度为代价,因此卖家也有不少“升级套餐”,例如将打印制作的元件换成铝合金元件,滑轮换回直线导轨等等。我对成本还不算很敏感,想做出来的机器质素好一点,但看下来发现套件的价格水分又太大了,而且配置不一定跟自己要求一致,于是决定自己采购元件。

最后定下来的方案基本上是原版的 Kossel Mini 方案,高度增加50mm,框架连接件用铝合金的以增加牢固程度和精度,挤出机用铝合金的套件。斜杆的制作精度要求比较高,也直接买做好的算了。

制作相关的资料信息,例如 BOM,记录在GitHub的 KosselPrinter 项目里。

进展

国庆节前

计划用国庆节7天假期来制作,所有材料应该要在节前采购完毕。开始没有考虑到淘宝店家在国庆节会放假,到27号了BOM还没有完全做好,订单还没下。淘宝上采购的难度比预计要困难得多,要比较不同店家的产品,而且搜索了才知道有些元件有好多选择,要弄清楚它们的区别,相互的配套,一个变了可能设计就要改变,配套的东西也不同了。在马云家奋战一个晚上直到凌晨3点,第二天又继续买买买,终于把订单全下完,总金额1400元出头。

元件在29、30日陆续送到,其中挤出机发现配件不齐,找卖家补发。想着剩下的东西在1日都能够全部收齐了吧?

10-1

安装框架,发现买的铝合金连接件是按照国标铝型材设计的,竖杆孔里有几条棱,而我用的是欧标铝型材,配合使用T型螺母,因为棱的存在无法压紧,只好尝试用锉刀去锉掉那条棱。另外,我买的 M3*8 螺丝显得小和短了,有点勉强,出去转了一圈,没有找到卖铝型材用螺母的地方,都放假了。

铝合金连接件有一件漏打一个孔,跟店家联系,他晚上直接开车给我送一个好的过来,超好人。跟他说起欧标型材的问题,他说可以送给我一些国标 M4 方螺母,也可以塞进欧标型材的槽里的,就不需要锉掉那条棱了。

10-2

把直线导轨装上,发现只有一根导轨的滑块能够在重力下自己下滑,另外两根摩擦力都好大,而且是不均匀,在某些地方特别卡,需要用一点力才能推过去。网上问人,说这是不正常的,要么是质量特别差,要么是旧零件翻新。只好退货了,然后就不知道应该买什么导轨,国产的似乎不可靠,台湾上银的又太贵,而且据说淘宝假货很多。

快递国庆节都休息了,节前买的东西到了配送点就是没人送上门,停工待料。开始看软件、参数调整和建模方面的资料,发现入坑了,而且似乎是深不见底。

试用 OpenSCAD,通过写代码的方式来建3D模型,很容易上手,做基于几何体的模型很简便(自由曲面用什么工具都不简单吧?)。

10-3

收到M4螺丝螺母,把原来用M3螺丝螺母已经装好的框架拆掉。发现步进电机、同步轮和连接件的安装位置不太吻合,看来又要动用钢锉。要等导轨和滑车到了后确定具体位置才好动手。于是所有东西又回到一堆零件的状态。

将计划从国庆假期完成更新为10月底前完成。

10-5

快递终于上班了,所有淘宝买的东西都送齐了。但是直线导轨退货后还没有重新购买,没有这个关键零件还是什么都做不了。

今天没有干什么东西,只是将送丝机和挤出头装配了起来。

(To be contined…)

自由软件质量不如软件企业自己开发的可靠?

| SoftwareDev

在软件企业中开发产品/项目,做技术选型时经常会听到的一个说法是:选择开源自由软件,会不会质量不够有保障?还是我们自己做好一些。

自由软件遵循的是完全的市场经济,面对的是残酷的竞争。如果项目做得不好,满足不了需求,就会无人问津而最终被废弃掉,使用者才不心痛已经有多少人力物力已经投入到这个项目中。项目设计太差,代码太烂,同样也吸引不了贡献者,导致原有贡献者的离开或者另起炉灶。对比的看,软件企业中开发的软件项目就如受着国家保护的国企,虽然也面临外部竞争,但在内部怎么也还是自家孩子,再烂也很难让大家承认它的失败,要放弃更加是艰难的决定,往往意味影响好些人的仕途。因此,你会看到很多企业开发的软件项目很烂,因为它们本来应该死掉的,但被强制维持着生命。

从软件开发者的平均水平这个角度来看,自由软件项目也优于企业开发的软件项目。当然,这里谈的自由软件项目是指有一组稳定贡献者有明确蓝图的,这样才能与企业项目相比较,个人练手的项目不算在内。试想一下,在一个软件企业里面,水平足矣为自由软件提交代码的开发者占了多少比例?但是那些尚不能为自由软件项目提交代码的开发者,在企业里面可是天天写代码的,甚至大部分代码是出自他们之手。

泛泛的说,在某个领域,如果可选的自由软件有不少,那么排名前列的项目,质量基本上不需要太过担心。

上面是我对自由软件质量担忧的看法,但这当然不代表就可以随意选择使用自由软件,技术选型中需要评估的东西还有很多。

持续学习

| PersonalDevelopment, Presentation

上次提到用 HTML 做的 presentation,是在公司里做的关于持续学习的一个分享。

注意:看绿色导航箭头,是可以向下翻页的。有些背景图片可能需要翻墙才能看到,否则会变成空白。

HTML Presentation Framework

| Presentation

最近要做一个分享,需要做个有趣一些的 slides。工作上的 slides 都是用 PowerPoints 来做的,但 ppt 放网上分享不方便,而且也不 cool,因此琢磨着弄个什么来玩玩。开始打算想用 markdown 来写,一方面是习惯了,另外也够简便。几年前就曾试过用 markdown 写一个简单的 slides

上网搜索一圈,发现这种打着 “HTML presentation framework” 名号的工具还真多,近些年来 HTML5、CSS、JavaScript 的广泛应用,这些基于 HTML 的演示可以做得很炫,让人耳目一新,例如这个 50 Years of the Rolling StonesMass of Planets (要允许网页使用摄像头)。

比较了一下,感觉 reveal.js 不错,也很受欢迎。后来又发现另外一个后起之秀 bespoke.js,影响力不够 reveal.js 大,但它的插件式设计更胜一筹。对了,这些工具基本上都是用 JavaScript/Node.js 等一套工具链的,前端相关的技术 js 独霸天下了。

先试了一下 bespoke.js。看到 reveal.js 能使用 Leap Motion Controller 来手势控制,演示起来会比较出彩,正好同事有一个 leap motion,可以借来玩,但是却找不到 bespoke.js 支持 leap motion 的插件。查了一下,原来 leap 有 JavaScript API,在浏览器里面能够通过事件监听获得双手各个手指的位置和手势动作的信息,API 暴露出来的已经是处理后的双手模型了,应用用起来相当方便。于是就简单的 port 了一个 bespoke-leapmotion 插件出来。但说实在的,leap motion 这东西还是中看不中用,用手势切换页面根本就不如手指头按个按键快捷和省力,手势的辨别也不够精准(这方面应用在数据处理上是可以下些功夫的)。

Bespoke.js 的 markdown 支持似乎还有些坑,总有这样那样的问题。而且在 markdown 在版面布局方面局限性也很大,做出来的 slides 显得单调了些,效果不够理想,于是又在看看直接用 HTML 来写会怎样。HTML 是足够灵活了,但是要设置排版布局又累死了,我对 HTML+CSS 也不是那么熟悉,有点想放弃用回 PowerPoint 了。

正好这个时候,发现了 slides.com 这个网站,它背后用的就是 reveal.js,但它的在线编辑器真心好用啊,鼠标拖放元素,功能简洁但又足够做出漂亮的效果了。就是它了!

但是,我还是念念不忘 leap motion —— 演示的时候可以带来新奇的效果啊。Slides.com 自然不会有这偏门的功能,但它很良心的提供了 export to reveal.js,在上面编辑好的 slides 可以放回本地的 reveal.js 里面播放,免费用户都可以享受。嗯,看起来一切都好,可是,怎么在 slides.com 里面写好的 speaker notes 导出后都丢失了呢?查看导出文件的内容,似乎是 slides.com 内部处理 speaker notes 用的机制跟 reveal.js 不一样,存放的格式也不同了。还好,只要数据都在,还是有办法的,写个程序来转换就行了。

永恒的终结

| Reading

花了几天空余时间,看完了阿西莫夫的科幻小说《永恒的终结》

在我的印象中,阿西莫夫的科幻小说是以逻辑严谨为特征的。他的好多作品都是设定在未来背景的侦探推理小说。小学时代读他的“机器人系列”,还以为机器人三大定律真的是生产机器人都需要固化的逻辑。总之,感觉他的书基本上都是烧脑之作,读起来要细细思考琢磨的。

(提示: 有关键情节透露)

在《永恒的终结》的设定中,时间的流逝是绝对的、单向的。即使在永恒时空,依然存在着时间的流逝(所谓的物理时间)。时间作用在永恒之人身上,他们依然会变老。严格的说,在整部小说的设定中,只存在一个时空,也就是一般时空。并不存在着一个独立的永恒时空,永恒时空其实是锚定在一般时空之上的一个个节点(在某些世纪上存在一个分区),永恒时空的时间跟一般时空的时间是同步的流逝的。

《永恒的终结》并没有引入其他科幻小说常用的平行时空的概念,或者说即使有平行时空,他们(永恒之人)也只能在其中一个时空上活动。永恒之人的特别之处在于他们拥有着在时间轴上穿行的能力,他们能够到达时空上的任何一个时刻(也包括空间位置,但这在故事中不是重点)。将时空中的活动想象为一盘按正常速度播放录像带,永恒之人就是能够倒退或者快进到录像带的某个时刻进行播放。无论如何,在这(唯一的)时空之中,因果率是起作用的,也就是说,这盘录像带的剧情是合乎因果情理来发展的,前一时刻的事件产生的后果会反映到后面的时刻中。永恒之人在时空之中穿梭观察,以一个旁观者的身份,他可以看到一件事情发生的前因后果。

但是,永恒之人要亲临一般时空的某个时刻进行观察,免不了会对该时刻发生的事件带来影响,因为这不像我们看录像带,超脱于录像的时空之外,前面说了时空其实始终只有一个,永恒之人进入某个时刻,也就是成为录像带场景中的一部分了。他在这个时刻的任何行动,都会在后续的时刻带来后果,也就是干扰了现实,带来了现实的变革。变革有多大,视乎影响的大小,如果恰好改变了因果链的一个关键节点,就会对后续的社会发展带来很大的影响,也就是永恒之人所做的现实变革。

虽然永恒之人可以随时进入某个时刻,做某些事情去改变现实,但他们并不能预先观察到引发的后果。因为这个一般时空是严格遵从因果律的,时空技师可以先去2481世纪看看是什么样子的,然后去2456世纪去实施现实变革计划,但是他看到的2481世纪只会是没有变革的,他没办法预先看到变革后的2481世纪,因为他还没有改变2456世纪发生的事件,无因就无果。当时空技师在2456世纪干预了某些事件,带来了连锁反应的后果,再去看2481世纪,这时他看到的就跟之前看到的2481世纪不一样了,之前的2481世纪已经不存在——只存在在他的记忆里——现实已经被改写。这就是为什么技师爱上了482世纪的一个女人,但当现实变革后,他即使再回到482世纪也无法找回他的爱人——也许她不存在了,也许在新的现实里她从来就没有爱过他。小说冲击了读者的一个观念:在具体的某一个时刻,发生过的事情永远不会改变。在这里,时间只是一个一维坐标系,事件并不是固化在上面的,就像可以将一件物品从空间一个位置上挪走,同样可以在时间上改变某个时刻发生的事件。

因为永恒之人并无法预先观测到现实变革的后果,他们只能依靠先进的计算机阵列和经验丰富的计算师去预测某个方案能够带来怎样的变化。不知道他们是怎样为世界的运转建模的,还有超凡的计算能力去预估一个扰动在逐渐发散的因果链上带来的后果。不过,跟蝴蝶效应之类的理论不同,在小说中设定为现实的演进是存在惯性的,一个扰动并不会带来无限发散的后续影响,而是经过一段时间后回归到跟没有扰动发生过一样的演进状态。所以,一个现实变革可能会影响几个世纪乃至上百个世纪的演进,但不会带来无穷的影响。

如果这种影响只是单向的:永恒之人可以进入某个时刻,给这个时间带来影响,那么一切还是很完美,因果链始终是开放无穷伸展的,不会成为闭环。但是小说其实还是要回到时空旅行的经典因果悖论:循环因果中去。

其实时间的因果悖论在永恒时空之中也存在:一个永恒之人是不是能够返回到前几天,去改变全时理事会的一次会议讨论?但小说将永恒时空设定为非连续的时空(至少一个世纪才有一个分区),绕开了这个问题,因为小说要指向一个更加大的悖论。

(注意:以下关键剧透)

小说将永恒时空的建立,或者说时空旅行的技术的产生,设定为是永恒之人将未来(27世纪)才发现的数学原理带回24世纪而创造的。这样,因果链条就形成了闭环了,前事之因带来后事之果,而后事却又是前事之因(这里的前、后指的是时间轴上的坐标)。那么,一旦“后事”没有发生,“前事”又何来呢?答案还是那个:现实将被抹去,一切都没有发生过。这与现实变革其实是一样的,永恒之人实施现实变革是对某个时刻实施干预,影响它的后果而将当前现实更替为另外一个现实;而永恒时空的建立本身就是一个来自未来的干预的结果,因此永恒之人需要去实施这个干预,以保证因果链的闭合,使得当前现实得以保存。一旦这个预期的干预没有发生,从那个时刻起的现实就毁灭了,变成一个新的现实——没有发生过来自未来的干预的现实。

但是我始终没有想明白的是,假若时间旅行是可行的,这种循环因果链在逻辑上可能存在吗?它是怎样形成的?可以不存在一个第一推动者?

小说最终的三个章节的转折还是让我意料不及,用的道理是很平白的:生于忧患,死于安乐,整个人类也是如此。拥有了时空穿行能力的人类会不断的通过现实变革,将人类的发展历史局限在一个安稳的状态。但是缺失了外太空探险精神的人类就在与外星文明的竞争中落败了。

在我的个人阅读体验里,读到最后几页感觉是前面做了如此华丽的铺垫,图穷匕见的却是一个建立银河帝国的俗套的梦想,颇有失望。

阿西莫夫将毁灭永恒时空的动机解释为男女之间的爱情,也许爱情是世界上最重要的东西,唯有它才能产生改变整个时空的动力。但阿西莫夫毕竟还是写逻辑推理更擅长,写起男女感情来完全读不出味道。


豆瓣书评:http://book.douban.com/review/7495652/