Superset学习体验

superset代码评测:

版本还未稳定,release版本长时间脱离 master版本,且本身并不稳定。项目庞大涉及领域繁多加上人员混杂可能是导致目前代码略显凌乱bug较多的原因。尝试了几个不同的版本才获得一个可以在Ubuntu及Mac平台都可使用Docker正常运行的版本(非release版本),且该版本在前端控制台还存在肉眼可见的bug。版本号:(#6934) ea9d22b2eca6cf823380adc96d2040a5c955edd8

值得一提的问题,部署。项目的打包过程非常复杂,涉及到Linux的环境包,Python包,JavaScript包以及可能存在的其他未知类型的包。打包过程中GFW造成了巨大的阻碍。在有透明代理的路由环境下打包的成功率还是很高的,但在一般环境下成功率十不存一。甚至可能出现已经正常启动过的开发环境,重新启动时因为DNS污染的问题,把原来正确的包给破坏掉的情况。

可行的解决办法是在发布时进行本地打包Docker image,再上传至服务器启动,需要修改部分代码。

VirtualBox 虚拟机 Ubuntu 踩坑

虚拟机-网络设置

  1. 使用网络桥接模式保证host和虚拟机可以互访,虚拟机可连接Internet。
  2. host系统下网卡设置共享
  3. subnet 地址计算器

Docker 学习记录

架构解析

context build image build container run by daemon

docker-compose 为单独安装的软件,mac/windows 安装包自带,Linux自行安装

docker-machine 理解不深入,windows10非企业版下是控制虚拟机,win10非专业、企业版缺少Hyber-V支持,无法安装docker 安装包最新版,只能安装legacy版本。

文件解释

  1. Dockerfile用于build image
  2. docker-compose.yml用于组织container,设置network,启动顺序,依赖关系,来源build或pull。

待补充知识

  1. container 内部操作及commit为新 image

React hooks 学习体会

上接React、Vue比较

又经过一段时间的学习和开发对React有了更加深刻的理解,领悟了相较于Vue更多的优势。应为语法更接近原生的关系,class在使用extends时很方便,可以把很多相近的页面组件的共通部分写成一个class专门用于继承,可以大大缩短开发时间。而这点在Vue上也有对应的实现mixin,但可惜的是官方文档几乎没有说明,也不清楚具体的内在机制。

还有最近的两个重磅更新懒加载的官方实现React.lazy + suspense 实现。以及react-hooks

react hooks 的实际效果让我想起了 meteor 中的动态变量,动态变量本身不依赖组件存在,而且始终具备动态属性。可以用专门的订阅器 watch 其变化。

当然区别还是很大的,hooks的设计初衷不是方便我们在组件之间传递它的。

我对官方介绍视频hooks的开发者Dan的最后一段话特别有感触。原文大意:React的logo是一个原子,似乎是想表达React对web开发的解构,万物由原子构成,而一个web项目则是由无数个组件构成。组件即是web的原子。就像科学家原先以为原子就是世间的最小单位,之后又发现了电子、中子。hooks即是React的电子,只是之前我们对其的理解不够深,看到是state、life-cycle之类的表象,剥去表象之后才发现其真实的样子,以及其是如何影响原子的特性的。看看react logo上那围绕中子的轨道,也许那就是hooks。

React、Vue比较

React Vue 框架比较

使用Vue全家桶开发有一年多时间,React三个月。说一点自己的感受。

总体上来说Vue 比 React要友好一些,React 则更加接近 JavaScript 语言原生状态。就个人来说先学习Vue,在使用了一段时间之后对其模板混合等概念无法很好的理解,官方文档不尽详细,阅读源码从效率上讲意义不大,导致想深入很难。

React 组件直接使用 Class 语法,方便理解,感觉开发过程当中和底层的距离更近。

细节上一一分析

  1. 文件

    Vue的文件组成更加清晰,模板,JS,CSS分割清楚。React JSX 或 JS 基本混成一团,从开发体验上讲不如Vue。

  2. 语法

    最大的区别在于 Vue 的模板语言,和React的JSX。在大多数的简单场景下 Vue有更好的体验,v-if v-show等属性标记传承自 AngularJS,React 的 JSX 在复杂组件下有更好的表现因为是完全编程式的书写方式。但是Vue同样也有JSX的实现方式,所以从这点上来说Vue是完爆了 React。同时非常重要的一点Form表单的书写上Vue也是完爆了React,React的表单书写尤其复杂冗余。

  3. 生态

    就国内的开发环境来说就是Element-UI和Ant-Design的对比。不是我对阿里有成见,我实在是不清楚Ant-Design的团队在想什么,做UI组件库何不专注做好这一件事。非要在项目脚手架上做文章,做文章不是原罪,做的差还乱改就是罪上加罪了。

    先是做了一个roadhog的脚手架,本意是好的简化项目搭建流程。但是做了一半丢着不管,扩展性又非常差,有些特殊需求就抓虾了,还是得自己从头webpack一步步从新构建开发编译环境。

    做了一半丢着不管之后是怎样?在挖一个更大的坑,新版的演示项目使用UMI,项目耦合程度比上一个单纯的编译工具更高,直接和开发源码耦合,用了就别想退回 webpack原生了,真不知是怎么想的,你们是想卖授权吗?

    Elment团队在这点上做的就很好,一句话不做多余的事,直接给一个webpack的最佳实践,大家照抄就行了。

    从UI组件库的完成度上来讲也是Element更高。

综上所述,单纯的Web开发来讲,我强烈推荐Vue学习曲线平滑,也留下了可以深入的空间,生态上也好于React,唯一的弱项在于native开发,但是近期由于Airbnb 对React-native的放弃,个人也不看好JS技术一统原生江湖的未来,天下大势合久必分,分久必合。个人看好将来Vue一统江湖。但是原生估计没希望了,PS:微信小程序 前端工程师的灾难。