首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

推荐一个很牛叉开源Flask项目

推荐给大家是因为近期我在二次开发redash一些部分,整体感受就是这个架构太棒了!我认为就算你不去二次开发它,但是你去了解它,看它代码,你也会收获到很多意外惊喜。...整个项目所涉及一些开源技术如下: - Python - AngularJS - PostgreSQL - Redis 这个项目在gitee上也进行了开源,这里给大家链接: https://gitee.com...这个项目是前后端分离,如果不懂前端朋友可以单独看redash文件里代码。 ?...这一点其实也突出了一个项目的优秀,有一部分原因是它拓展性如何,如果拓展性很高,也代表着这个项目的可能性越多,思想与思想之间碰撞也越多。 如何redash增加一个功能模块?...这样就能够新增一个功能模块了,但是前提还是了解我上面红框具体代码,这样你才能跟着它架构来新增功能,不是跟着自己思路来。

6.8K10

数据可视化开源方案: Superset vs Redash vs Metabase (一)

在使用Superset之前我们用是Looker(很不错商用BI工具,可惜太贵),一年半前把Looker上所有的Dashboard迁移到Superset上,整个过程也很顺利。...对于数据分析人员来说,由于在Superset上他们不是直接写SQL,而是通过选择指标(Metric), 分组条件(Group)和过滤条件(Filter)来画图表,所以在构建复杂查询时可能会有些不适应。...如果说Superset是构建一个BI平台,那Redash目标就是更纯粹地做好数据查询结果可视化。...相比Superset,Redash在文档方面做得更好,除了快速入门教程以外,每一个功能模块都有文档且条理清晰。...我答案是Redash原因主要不是功能层面,而是技术层面。这里正好可以引出我们下篇要聊内容,从技术框架与源代码层面来比较一下这三个项目,以及我选择开源项目的一些通用原则,敬请期待!

1.8K40
您找到你想要的搜索结果了吗?
是的
没有找到

数据可视化开源方案: Superset vs Redash vs Metabase (一)

对于数据分析人员来说,由于在 Superset 上他们不是直接写 SQL,而是通过选择指标(Metric), 分组条件(Group)和过滤条件(Filter)来画图表,所以在构建复杂查询时可能会有些不适应...如果说 Superset 是构建一个 BI 平台,那 Redash 目标就是更纯粹地做好数据查询结果可视化。...相比 Superset,Redash 在文档方面做得更好,除了快速入门教程以外,每一个功能模块都有文档且条理清晰。...虽然 Superset 是我们公司现在主要使用可视化工具,但我问过自己“如果现在让我重新选择,我会使用哪个开源项目?”我答案是 Redash,原因主要不是功能层面,而是技术层面。...这里正好可以引出我们下篇要聊内容,从技术框架与源代码层面来比较一下这三个项目,以及我选择开源项目的一些通用原则,敬请期待! 阅读原文

2.6K20

Redash里面真的含金量很高!

今天继续跟大家聊聊redash。 其实这个开源项目在可视化领域还是挺火,我当前所处公司,似乎也看到过它身影。除此之外,我也有搜到过相关公司专门做redash二次开发。...有关于它文件结构我在之前文章中有说过,那么今天主要来跟大家讲讲它总体架构以及一些里面重要模块 大家可以看到下面这张图(自己瞎画),其实我们可以看到主要有三层后端、前端、应用层。...在后端里面主要有个Server层,我们大部分二次开发代码都是在这个部分来进行编写。...大家可以看到上面这张图,我们可以看到整个开源项目底层数据库都是使用PostgreSQL来进行存储,所以不会玩PostgreSQL,得提前简单学学相关命令了。...如果你想要去了解一下命令行开发,这个项目里面也有。 主要集中在cli文件夹中,当做成了一个大系统、大项目,其实很多时候需要去开发一些命令行来进行一些初始化操作。

1K20

数据可视化开源方案: Superset vs Redash vs Metabase (二)

另外,Redash 直接提供了 AWS 上镜像,以及开发环境 docker-compose 配置,无论是对运维人员还是开发人员算很友善。...在前端,Superset 借助 FAB 来生成大部分管理界面,图表或是 SQL 编辑器等对交互性要求很高界面,则由 React + Redux 来实现。...React + Redux 是目前最流行前端开发框架之一,Metabase 系统切分与模块化做得非常出色,所以在前端架构方面 Metabase 我给满分。...而在生产环境中,它提供了如何在 AWS、Heroku、Kubernetes 上部署详尽文档,可谓体贴入微。 三、源代码规模与质量 以下是三个项目的源代码行数与测试代码行数。 ?...在这方面,我主观评价是 Metabase 代码品质最高,不仅整体代码结构清晰,模块切分合理,而且代码整洁度到了一个相当变态水准,看起来赏心悦目。

5.3K30

前端学习

基于React进行开发时所有的DOM构造都是通过虚拟DOM进行,每当数据变化时,React都会重新构建整个DOM树,然后React将当前整个DOM树和上一次DOM树进行对比,得到DOM结构区别,然后仅仅将需要变化部分进行实际浏览器...这样,在保证性能同时,开发者将不再需要关注某个数据变化如何更新到一个或多个具体DOM元素,只需要关心在任意一个数据状态下,整个界面是如何Render。   ...将普通DOM以数据结构形式展现出来 自我认知:   react主要用于构建UI,可用react来构建component,开发时所有的dom构造基于virtual dom,所谓virtual dom...由于不必在每个元素每次变化时重新渲染整个巨大table, React相对于其他JavaScript框架有显著性能提升....由于不必在每个元素每次变化时重新渲染整个巨大table, React相对于其他JavaScript框架有显著性能提升.   3.

2.3K10

详细揭秘微信小程序框架技术——Mpx

既然采用这种方式去组织代码的话,那么模板、逻辑代码、json配置文件、style样式等放到了同一个文件当中。...例如在上面给出来 demo 实例当中,通过compiler.genNode(ast)方法最终生成代码为: mpx 文件当中 template 模块被初步处理成上面的代码后,可以看到这是一段可执行...构建整个响应式系统当中。...renderFunction 方法执行过程中便会访问到渲染所需要响应式数据并完成依赖收集; 根据 immediateAsync 配置来决定回调是放到下一帧还是立即执行; 当响应式数据发生变化时候...当 obj 值发生变化后,首先触发 reaction 回调,即 this.update() 方法,如果是个同步 watch,那么立即调用 this.run() 方法,即 watcher 监听回调方法

1.7K20

软件设计原则(02)-开闭原则(Open Close Principle,OCP)

每个扩展点都是个需要设计模型。 1.2 用抽象构建框架,用实现扩展细节 一个软件实体应通过扩展实现变化不是通过修改已有代码实现变化。...OCP对扩展开放,对修改关闭,但并不是说不做任何修改,低层模块变更,必然要与高层模块耦合,否则就是孤立无意义代码段。 3 变化类型 3.1 逻辑变化变化一个逻辑,不涉及其它模块。...既然每次要增加是用户级,且各种服务差异体现在用户级,就需要一个用户级模型。...5.1 为什么懂很多道理,却依旧写不好代码? 阻碍我们构造稳定模块,是构建模型能力。回想产生变化UserLevel是如何升级成有行为UserLevel。...减少代码量,避免相同逻辑分散,避免后来维护人员为修改一个小bug或加个新功能,而在整个项目到处查找相关代码,然后发出对开发人员吼出“极度失望”感慨。 ② 如何提高复用率?

23940

前端工程化 - Webpack 常见面试题速查

# webpack、rollup、parcel 优劣 webpack 适用于大型复杂前端站点构建 webpack 有强大 loader 和 插件生态,打包后文件实际上就是一个立即执行函数,这个立即执行函数接收一个参数...,该参数是模块对象,键为各个模块路径,值为模块内容 立即执行函数内部则处理模块之间引用,执行模块等,适合文件依赖复杂应用开发 rollup 适用于基础库打包,如 vue、d3 等 Rollup...,这一步不同于第一步,并不是监控代码变化重新打包。...# 如何提高 webpack 构建速度 多入口情况下,使用 CommonsChunkPlugin 来提取公共代码 通过 externals 配置来提取常用库 利用 Dllplugin 和 DllReferencePlugin...比如,每个页面引用了同一套 css 样式表 随着业务不断扩展,页面可能会不断追加,所以一定要让入口配置足够灵活,避免每次添加新页面还需要修改构建配置

45540

微前端自检清单

项目每次发布都是全量发布,即使是上线一个小模块,也可能导致整个项目挂掉。 项目由多个系统组成,完成一个功能需要不断地跳转多个系统页。 项目开发人员流动大,存在一些祖传代码难以维护,一般人都不好改。...增量升级 支持渐进式重构,先让新旧代码和谐共存,再逐步转化旧代码,直到整个重构完成。 独立部署 每一个子应用具备独立开发,持续部署,独立运行能力。...对于这个问题,建议在做微前端改造时,最好快速上线: 首先将整个原项目当成一个大子项目,进行微前端改造。 主项目快速搭建好路由、子应用管理,然后立即上线。...可以看到,项目最终结构已经完全不同了,开发,测试,部署流程也需要进行变化。...需要注意是: 子项目需支持独立启动,不是在开发时启动所有项目,只需启动与业务相关子项目即可。 子项目需支持独立部署,开发完成之后,只需要部署与业务相关子项目即可。

92320

从CICD持续集成部署到DevOps研发运维一体化

可以看到里面会涉及到配置代码库,编译构建环境,测试环境三个典型资源。...可以看到整体持续集成和交付过程并没有明显变化,仅仅在于交付单位变成镜像,同时增加了镜像制作过程。...但是如果涉及多个整个过程就复杂了很多。 我们举例来说,现在接收到一个或多个用户变更需求,经过需求分析后发现实际影响三个微服务模块需要进行配套变更才能够完成。...整个顶层流水线执行时候就会将三个变更模块全部编译构建并打包部署,然后驱动后面的自动化测试,人工测试和验证。整个需求实现,缺陷修改过程应该是完整可视。...一个DevOps支撑平台在搭建总体架构时候可以看到,其核心更多是围绕持续交付进行各种能力集成和自动化,不是说其本身新创作了什么能力。对于这种集成本身包括几个关键部分。

1.6K30

对vite理解

即时模块替换(HMR)即时模块替换(HMR)是指在开发过程中,当你对代码进行修改后,Vite 能够实时更新修改模块,而无需完全刷新整个页面或重新加载整个应用程序。...当你修改了某个模块代码后,Vite 会通过 WebSocket 或者 HMR 运行时,将新模块代码发送到浏览器中。浏览器接收到更新后模块代码后,会立即应用这些变化不需要刷新整个页面。...在代码发生变化时,需要刷新整个页面或重新加载整个应用程序,以查看更新后效果。这会导致开发者在每次修改代码需要手动刷新页面,增加了开发时间和复杂性。...在构建阶段,Vite 使用 Rollup 进行优化构建,仅处理入口文件和模块依赖关系,生成优化代码块。...在开发过程中,Vite 会监视文件变化,当某个模块源码文件发生修改时,它会通过 WebSocket 或 HMR 运行时将更新模块代码推送到浏览器端,实现即时模块替换(HMR)。

23570

持续交付:发布可靠软件系统方法

第3章 持续集成 持续集成要求每当有人提交代码时,就对整个应用进行构建,并对其执行全面的自动化测试集合。而且至关重要是,假如构建或测试过程失败,开发团队就要停下手中工作,立即修复它。...如果构建时间太长,则可以进行下一步工作,但是要关注构建完成之后消息吧。 回家之前,构建必须处于成功状态 倘若在回家时间节点发现构建失败了,就应该立即修复,不是等回家,或者第二天来搞。...部署流水线方式则要求每次提交都会触发构建。 只要有环节失败,就停止整个流水线 每次提交代码到版本控制系统中后,都能够构建成功并通过所有的测试。对于整个部署流水线来说,适用这一要求。...如果构建时间太长,则可以进行下一步工作,但是要关注构建完成之后消息吧。 回家之前,构建必须处于成功状态 倘若在回家时间节点发现构建失败了,就应该立即修复,不是等回家,或者第二天来搞。...部署流水线方式则要求每次提交都会触发构建。 只要有环节失败,就停止整个流水线 每次提交代码到版本控制系统中后,都能够构建成功并通过所有的测试。对于整个部署流水线来说,适用这一要求。

69650

四要素落地持续交付

1、通过快速灵活统一环境构建,全面改善企业对测试环境管理方法,使得环境管理更合理、更自由。 2、标准、规范、流程落地,需要载体,最好载体就是平台工具。...持续交付是一整套平台工具落地,几乎涵盖了研发整个生命周期,是天然、最佳载体。...构建时会对整个应用所有模块进行编译,并伴随单元测试以及代码质量分析。...如果构建过程失败了,那么必须立即邮件告警到相关开发责任人,并责令立即修复问题,如果20分钟内无法修复,就要回退代码提交,总之,要求代码代码持续处于可用状态。...目前,每次成功构建(编译+单元测试+代码质量分析)一般在5分钟内完成,单元测试中外部依赖通过Mock方式解决,这块我们会在后续文章中专门讲解分析。

1K30

前端面试那些题

CMD在依赖模块加载完成后并不执行,只是下载而已,等到所有的依赖模块加载好后,进入回调函数逻辑,遇到 require 语句时候才执行对应模块,这样模块执行顺序就和我们书写顺序保持一致了。...属性),该对象只有在脚本运行完才会生成ES6 Module :模块输出是一个值引用,编译时输出接口,ES6模块不是对象,它对外接口只是一种静态定义,在代码静态解析阶段就会生成。...UDP 协议“QUIC”协议,让HTTP跑在QUIC上不是TCP上。...,让耦合双方依赖于抽象,不是依赖于具体。...当某些对象之间作用发生改变时,不会立即影响其他一些对象之间作用,保证这些作用可以彼此独立变化

513260

9102年:手写一个React脚手架 【优化极致版】

我这套代码,在开发环境中性能不是完美的,但是构建速度打包生产环境代码是极快,请你一定要去看我git仓库,现在已经加入了项目实践,也在里面,可以的话给个star哦 实现需求: 识别JSX文件 tree...重要是要记得,在 webpack 配置中定义 loader 时,要定义在 module.rules 中,不是 rules。然而,在定义错误时 webpack 会给出严重警告。...Compiler 和 Compilation 区别在于: Compiler 代表了整个 Webpack 从启动到关闭生命周期, Compilation 只是代表了一次新编译。...第三步是 webpack-dev-server 对文件变化一个监控,这一步不同于第一步,并不是监控代码变化重新打包。...第 10 步是决定 HMR 成功与否关键步骤,在该步骤中,HotModulePlugin 将会对新旧模块进行对比,决定是否更新模块,在决定更新模块后,检查模块之间依赖关系,更新模块同时更新模块依赖引用

86910

谈谈企业持续交付流水线设计

再看看持续交付宗旨,持续交付核心宗旨是:保证每次提交代码产生一个可发布版本。...持续集成要求代码开发和功能集成并行进行,相辅相成,要求至少做到每日编译甚至代码提交即触发编译。构建时会对整个应用所有模块进行编译,并伴随单元测试以及代码质量分析等动作。...如果编译失败了或者单元测试失败了,那么必须要立即修复问题,直到构建成功。总之,要求代码代码持续处于可用状态。 持续集成时间一定要尽可能短,尤其是代码提交触发构建场景下。...否则试想:一支20余人开发团队,每次构建(编译+单元测试+代码质量分析)需要花费20多分钟;每次代码提交时触发构建,会产生大量编译任务排队,并且会不停增加;编译发生问题时较难定位,因为在上次开始编译到这次编译中间...如何直观查看交付流程目前到了哪个环节、每个环节状态是什么样如何以环境为视角,看到该环境下正在运行哪些应用?

1.5K80

开始学习React js

基于React进行开发时所有的DOM构造都是通过虚拟DOM进行,每当数据变化时,React都会重新构建整个DOM树,然后React将当前整个DOM树和上一次DOM树进行对比,得到DOM结构区别,然后仅仅将需要变化部分进行实际浏览器...这样,在保证性能同时,开发者将不再需要关注某个数据变化如何更新到一个或多个具体DOM元素,只需要关心在任意一个数据状态下,整个界面是如何Render。...如果这时因为用户一个点击需要改变某个状态文字,那么也是通过刷新整个页面来完成。服务器端并不需要知道是哪一小段HTML发生了变化只需要根据数据刷新整个页面。...例如,Facebookinstagram.com整站采用了React来开发,整个页面就是一个大组件,其中包含了嵌套大量其它组件,大家有兴趣可以看下它背后代码。...在React中,你按照界面模块自然划分方式来组织和编写你代码,对于评论界面而言,整个UI是一个通过小组件构成大组件,每个组件只关心自己部分逻辑,彼此独立。 ?

7.2K60

一看就懂ReactJs入门教程(精华版)

基于React进行开发时所有的DOM构造都是通过虚拟DOM进行,每当数据变化时,React都会重新构建整个DOM树,然后React将当前整个DOM树和上一次DOM树进行对比,得到DOM结构区别,然后仅仅将需要变化部分进行实际浏览器...这样,在保证性能同时,开发者将不再需要关注某个数据变化如何更新到一个或多个具体DOM元素,只需要关心在任意一个数据状态下,整个界面是如何Render。...如果这时因为用户一个点击需要改变某个状态文字,那么也是通过刷新整个页面来完成。服务器端并不需要知道是哪一小段HTML发生了变化只需要根据数据刷新整个页面。...例如,Facebookinstagram.com整站采用了React来开发,整个页面就是一个大组件,其中包含了嵌套大量其它组件,大家有兴趣可以看下它背后代码。...在React中,你按照界面模块自然划分方式来组织和编写你代码,对于评论界面而言,整个UI是一个通过小组件构成大组件,每个组件只关心自己部分逻辑,彼此独立。

6.2K70

《微服务设计》第 1 章 微服务

持续交付理论告诉我们如何更有效及更高效地发布软件产品,并指出保持每次提交均可发布重要性。基于对 Web 理解,我们寻找到了机器与机器交互更好方式。...它并不是被发明出来,而是从现实世界中总结出来一种趋势或模式 ---- 1.1 什么是微服务 微服务就是一些协同工作自治服务 1.1.1 很小,专注于做好一件事 内聚性是指将相关代码放在一起,...就像认为 XP 或者 Scrum 是敏捷软件开发一种特定方法一样,你也可以认为微服务架构是 SOA 一种特定方法 ---- 1.4 其他分解技术 1.4.1 共享库 基本上所有的语言支持将整个代码库分解成为多个库...再次,除非你使用是动态链接库,否则每次当库有更新时候,需要重新部署整个进程,以至于无法独立地部署变更。...它们允许对模块进行生命周期管理,这样就可以把模块部署到运行进程中,并且可以在不停止整个进程前提下对某个模块进行修改 ---- 1.5 没有银弹 微服务不是免费午餐,更不是银弹,如果你想要得到一条通用准则

42631
领券