作者归档:vicalloy

为django-lb-workflow增加Pipenv

不知道是否是有项目在用(或是计划使用)django-lb-workflow,最近陆陆续续的收到一些issue。其中大多是咨询django-lb-workflow如何使用,也有些windows平台下的bug,还有就是因为python第三方库版本问题导致跑不起来的。
我使用virtualenv来创建虚拟环境,并使用pip(requirements.txt)管理第三方依赖。在指定依赖时通常都只会指定所需的最低版本,过一段时间不维护依赖就要出问题。
近年来Pipenv开始流行,目前看来很有希望成为今后python项目的标配。
Pipenv为您的项目创建和管理Python虚拟环境,并通过Pipfile 和 Pipfile.lock这 两个文件来管理项目中的Python依赖包。对我来说Pipenv的Pipfile.lock提供了对所有依赖层级的Python包的版本锁,可以有效的避免由于requirements.txt过于简单导致的第三方库版本问题。
希望用了Pipenv后,因为第三方库版本问题导致程序跑不起来的问题可以不再出现。

长滩岛

之前在从亚庇回来的飞机上听人盛赞长滩岛,称长滩岛要远比亚庇漂亮,之后一直挺想去长滩岛看看。这次遇到公司组织长滩岛的旅游,立马报名。
可能是之前有着过高的期待,长滩岛远没有达低于自己的预期。想来纯海岛对我来说还是太单调,还是更喜欢亚庇。亚庇作为一个城市,可以看看国外的城市,看看别国的人如何生活。从酒店出发花30分钟就可以上岛,在体验生活的同时也完全不必担心玩水。可以去美人鱼岛潜水,作为离岛美人鱼岛的水远比近海漂亮。

Tips:

  • 直飞长滩岛非常折腾,有小朋友就放弃直飞吧。到kalibo后出关花了一个多小时,之后又是三个小时的车船连运,折腾一整晚才能到酒店。杭州出发,晚上10点的飞机,晚点到11点,最后早上6点多才都酒店。
  • 绿藻确实非常严重,从S1到S3整个沙滩只有及少数地方是没有绿藻的。而且这些地方还停满了船。
  • 一到长滩岛导游(华人)就告诉大家如何防小黑得,比如沙雕拍照要给消费,帮忙搬行李要给消费,不要理会路边拉客的小黑等。实际上接触下来菲律宾人大多都挺热情友善。遇上拉客的小黑你明确拒绝后也不会进行纠缠。事后想想可能是导游给出的游乐项目价格过高,不希望我们和本地人接触了解实际价格。或许真同导游自己开玩笑时说的,不坑自己人坑谁。
  • 很多东西都需要砍价,特别是海鲜。
  • 长滩岛毕竟是一个只有9平方公里的小岛,除了水上娱乐项目外没有啥其他活动,也没有什么特别好吃的东西。
  • 长滩岛已经被国人攻占了。

照片

白沙滩

帆船

落日风帆

水晶岛

luho山上的长滩岛全景

严重的绿藻

Hi, 2018

不知为何,几乎所有事情都堆到了春节前。从进入2018年到现在各种忙,为此也出了一些“事故”。一方面有些沮丧,一方面却也有些习惯。
至于2018应当如何,目前可能还只能是一些省略号,需要给自己留一些时间将一些东西理清楚。

从HHVM换回到PHP-FPM

之前一直用PHP-FPM作为PHP的解析器,上次在将博客迁移到linode的时候换成了HHVM。换到HHVM后博客就一直不太稳定,经常莫名其妙的down掉。
前两天博客有down掉了,重启HHVM也不解决问题,干脆换回了PHP-FPM。希望之后博客能稳定一些。

关闭“似水流年”

将服务器迁移到linode后, jstwind.com 就一直有些问题。因为没有什么人访问也懒得去改了。后来想想,既然没什么人用,也懒得维护,还是把网站关了。

“似水流年”是我做的一个用于编辑时间线的网站,用户可以在上面创建和分享时间线。网站前端用的是Bootstrap,当时Bootstrap刚出来没多久,我也是第一次使用Bootstrap,因此前端部分写的非常烂。为了保证良好的用户体验,时间线的编辑部分采用了AJAX,当时很多时间都花在了这上面。

网站关了,域名还会继续留着,说不定哪天用来做个新“玩具”。

代码托管在Github上,你可以在这里找到: https://github.com/vicalloy/timeline-site

徒步雨崩

总是感觉雪山美丽且神秘。很早之前走过一次川藏线。那次一路上天气不是太好,雪山只是偶尔露个脸。看雪山本是那趟旅行的一个重要目的,最终却没怎么看到。
这次趁着淡季的机票折扣去了上次旅行中错过的雨崩。虽未看到日照金山让旅程不够完美,但总的来说是一次不错的经历。路上的风景很美,路上遇到的人也都很友好。

Tips:

  • 飞来石观景台¥60的门票不是很值得花,飞来寺客栈的顶楼就是最好的观景台。
  • 网上一些人气比较高的客栈,可能由于人气比较旺打理不过来,反而不如其他的客栈值得入住。飞来寺入住的“吉祥客栈”只要¥40一个人,景观非常棒。开窗即可看到连绵的雪山,楼顶更是极佳的观景台。
  • 在上雨崩入住的“小明的暖屋”。新开的客栈,房间很干净,老板娘很热情。房间的景观很好,开窗即可看到雪山。他们家还有粘人的漂亮喵喵,见人就过来讨吃的。
  • 如果不怕累,一大早进雨崩还是来得及去神瀑的。夏季的时候8:30才天黑,其他季节请注意安排好时间。下雨崩到上雨崩有近一个小时的路程,如果打算进雨崩的当天去神瀑,最好还是住下雨崩。


在飞来寺远眺对面的雪山


日照金山。云很多,山峰始终不肯露脸。


雨崩客栈拍的日照金山。山峰依旧是不肯露脸


在神瀑拍的冰川


只有在月下卡瓦博格才肯露脸。这次旅行的另一个期望是可以看到漂亮的星空。可惜去的时候是满月,皓月当空,只能看到星星点点的星星。


第一次看到这么漂亮的蜥蜴。在此之前我印象中的蜥蜴都是又丑又恶心。

Mark-关于技术发展趋势

前一段时间和朋友讨论技术的发展趋势。
在这里做个记录,等3年之后再回过头来看看今天的预测。

我认为:

  • 近几年JS(HTML5)的发展速度很快。虽然JS有各种天生的缺陷,但JS在进化,在特定的场合中JS的某些缺陷问题不是太大。
  • JS或许并不是一个完全体,但JS是目前的各种开发技术中很有潜力的一个(特指UI部分)。至少目前还未看到比JS在UI方面更有潜力的东西出现,在今后几年会不会有也很难说。
  • 今后JS的应用还会持续走高。采用存JS开发或是混合应用(或类似React Native的技术)会越来越多,很占领很大一部分的开发市场。
  • 不太看好JS在服务端的发展,至少我不是很喜欢写Node.js。

朋友认为:

  • JS有很多天生缺陷,成不了主流
    • 注:我个人觉得目前JS已经很主流了。
  • 巨头间的博弈。一旦跨平台,平台独占的优势将不再明显。处于优势地位的巨头不欢迎跨平台技术。
    • 注:iOS和Android已不存在谁是绝对优势。且即使是Apple平台也有桌面和移动端的跨平台需求。或许巨头们不是很心甘情愿的跨平台,但也很难阻止。

注:

有一种说法是当你做出选择后就会在潜意识里不自觉的强化自己的选择。
在我看来因为朋友是做Apple平台的Native开发,因此会不自觉的对Web技术有所抵触。
我Web和Native开发都做过,自我感觉会相对公正些。

开始写lbworkflow的文档

文档是一个开源项目很重要的一个组成部分,在我看来一个没有文档的开源项目不是一个合格的项目。最近开始给 django-lb-workflow 写文档。

对我来说喜欢写代码多过写文档,特别是在我英文不灵光的情况下。工作流本身就是一个挺复杂的东西,也不知道最终写出来的文档别人能不能看懂。

目前文档只完成了很小的一部分。里面有一个简单的例子,照葫芦画瓢应当也基本能知道怎么使用了。
文档地址: http://django-lb-workflow.rtfd.io/

lbworkflow预览版

django-lb-workflow 是我开发的一个工作流组件。目前还有很多工作要做,不过主体功能已基本可以使用了。在我看来还远没有到可以发布的阶段,不过还是很想先宣传一下,也希望能收到一些反馈。

关于为啥要挖这个坑,以及一下想法可以见之前的博客: 挖了一个新坑-Django的工作流引擎

演示项目地址:
http://wf.haoluobo.com/
管理员用户:
用户名:admin 密码:password
登陆后快速切换用户:
http://wf.haoluobo.com/impersonate/search/
http://wf.haoluobo.com/impersonate/stop/
流程配置信息查看:
http://wf.haoluobo.com/admin/lbworkflow/

目前还处于零文档的情况,用法只能先看代码了。
测试用例里是一个请假的演示:
https://github.com/vicalloy/django-lb-workflow/tree/master/lbworkflow/tests/leave

挖了一个新坑-Django的工作流引擎

Python和Java相比资源的丰富程度还是要差非常多。就如工作流引擎,Java下商业和开源实现都非常多,Python的就要少很多。因为工作的关系,当初将Python下的开源工作流引擎研究了一遍,始终没有找到合适的解决方案。最终系统中的工作流模块还是自己开发的。

近来决定挖个新坑,开源一个工作流引擎。我希望这是一个认真的开源项目,也希望这个项目能帮忙有相关需求的人解决具体问题。作为一个认真的开源项目,除保证代码质量外,单元测试,文档也都将是必须的。预计这个项目的工作量会有些大,前前后后应当会持续挺长一段时间,希望不要烂尾了。

目前已经开始码代码了,如果感兴趣可以先过去看看: https://github.com/vicalloy/django-lb-workflow

关于这个项目

  • 基于Django且完全不考虑移植到其他框架。
    • 如果考虑移植性系统要复杂很多,也很难保证易用性。
  • 采用半可配置方案以平衡开发及使用的便利性。(注:“半可配置”是我自己取的名字)
    • 数据模型,表单布局,数据校验规则,特殊处理采用编码方式实现。
      • 这部分如要做灵活可配置,配置工具的开发会非常复杂,且配置项非常多,在具体配置的时候也会很麻烦。
      • 这部分功能在开发后改动的情况较少,使用代码实现要灵活的多。
    • 流程节点,审批人,流转关系采用配置方式实现。在管理后台直接通过管理界面进行配置。
      • 根据公司规定,组织结构的变更流程的流转规则,审批人的变动较为频繁,使用代码实现很不灵活,也不方便。
      • 流程节点及节点间的流转这对各类型的流程来说操作都是比较一致的,比较容易采用配置的方式实现。
      • 使用配置实现可以方面的自动画出流程图。
    • 代码生成器
      • 提供代码生成器,只需要完成数据模型的编码,代码生成器会自动生成流程的提交/查看/报表等所有框架代码。