<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[GrowingIO 基于 BitMap 的海量数据分析]]></title><description><![CDATA[如何基于 BitMap 来作为底层的数据模型]]></description><link>https://blog.youkuaiyun.com/GrowingIO_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; GrowingIO_]]></copyright><item><title><![CDATA[GrowingIO Reactor速成指南]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/122047752</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/122047752</guid><author>GrowingIO_</author><pubDate>Mon, 20 Dec 2021 19:17:41 +0800</pubDate><description><![CDATA[所以在本文档中我们主要针对的是一些学习过程容易让新人感到迷茫的知识点（map、flatMap、异步、并发），期望能让新人更好上手 Spring WebFlux。]]></description><category></category></item><item><title><![CDATA[GrowingIO Terraform 实践]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/121842584</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/121842584</guid><author>GrowingIO_</author><pubDate>Thu, 09 Dec 2021 20:00:03 +0800</pubDate><description><![CDATA[为满足 GrowingIO 客户多样性的需求，在公有云设施上使用 Terraform 作资源管理。采取 Terrform 具有以下相关优势：]]></description><category></category></item><item><title><![CDATA[一文详解前端错误捕获和上报]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/121407759</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/121407759</guid><author>GrowingIO_</author><pubDate>Thu, 18 Nov 2021 19:53:10 +0800</pubDate><description><![CDATA[背景

众所周知，几乎没有一个开发者能够做到开发时100%没有Bug，那么一旦我们的产品出了问题，快速定位问题是迫切需要做的事。好在我们在Web场景中Js运行出现异常不会导致JS引擎崩溃，最多只会终止当前执行的任务。然后逐级上抛错误，类似冒泡事件，在遇到最近的一层catch时停止上抛，如果中间都没有错误处理的catch时，直至window对象结束。那么今天就与大家一起探讨一下我们在Web场景中的异常错误数据如何收集以及如何上报。

错误类型

想要获取到相对完整的异常错误数据，先要了解在Web中常见的异常错]]></description><category></category></item><item><title><![CDATA[GrowingIO Design 图标库：从原理到实现]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/121294328</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/121294328</guid><author>GrowingIO_</author><pubDate>Fri, 12 Nov 2021 19:56:09 +0800</pubDate><description><![CDATA[随着前端技术的发展，网页中的图标（Icon）已经不再局限于 &lt;img&gt; 标签，还有很多实现方式，比如：Sprites（俗称雪碧图）、Icon Font（字体图标）、SVG 等等。而一个被工程师所熟知的前端框架 Bootstrap，用这些技术实现了它的图标库。

本文先介绍 Bootstrap Icons 的各种实现方式，然后再 GrowingIO Design Icons 的原理与实现。

Bootstrap Icons

&lt;img&gt;



通过 &lt;img&gt; 标签来展示图]]></description><category></category></item><item><title><![CDATA[ClickHouse用户资源隔离在 GrowingIO 的实践]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/121167968</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/121167968</guid><author>GrowingIO_</author><pubDate>Fri, 05 Nov 2021 20:12:06 +0800</pubDate><description><![CDATA[业务场景

对 ClickHouse 做多租户，是一个非常必要的场景。如果不加限制，用户可能会过度消耗数据库服务的资源，影响其他用户使用。本文尝试在硬件级别的隔离之外，给大家展示另外一种相对便宜的方法。

本文先描述 ClickHouse 提供哪些资源限制的机制，再描述 GrowingIO 的实践。由于用户资源使用限制是用户管理的一种，本文也会加入用户管理的内容。

Hello World

一般通过 systemd 托管 ClickHouse，使用工具渲染模板得出配置文件，由于我们的目的只是演示，所以简化]]></description><category></category></item><item><title><![CDATA[GrowingIO 数据安全实践]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/120910340</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/120910340</guid><author>GrowingIO_</author><pubDate>Fri, 22 Oct 2021 18:15:47 +0800</pubDate><description><![CDATA[什么是数据安全

根据《中华人民共和国数据安全法》中第三条，给出了数据安全的定义，是指通过采取必要措施，确保数据处于有效保护和合法利用的状态，以及具备保障持续安全状态的能力。

为什么企业要做数据安全

在互联网盛行的今天，不法分子可以通过网络攻击，网络欺骗等手段窃取用户的个人信息甚至企业的机密信息。而且在拿到部分用户信息后就可以唯一的锁定具体某一个人，因此数据的保密显得格外重要。

GrowingIO 数据安全落地

为了保证客户数据的安全性， GrowingIO 通过构建一个安全的软件运行时与数据静态存]]></description><category></category></item><item><title><![CDATA[GrowingIO Design 组件库搭建之 CI/CD]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/120786250</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/120786250</guid><author>GrowingIO_</author><pubDate>Fri, 15 Oct 2021 18:09:17 +0800</pubDate><description><![CDATA[前言

在《GrowingIO SaaS 产品 CI/CD 实践》一文中，介绍了持续集成（Continuous Intergration，简称 CI）、持续交付（Continuous Delivery，简称 CD）和持续部署（Continuous Deployment，简称 CD）三个概念，以及在 GrowingIO SaaS 产品中的实践。 文中还强调一个典型的 CI/CD 流程建设至少需要具备以下功能的工具：


	代码存储库，即需要版本控制软件来保障代码的可维护性，同时作为构建过程的素材库
	
	
	]]></description><category></category></item><item><title><![CDATA[Flutter 无埋点SDK实现]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/120676375</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/120676375</guid><author>GrowingIO_</author><pubDate>Sat, 09 Oct 2021 20:06:59 +0800</pubDate><description><![CDATA[前言

先看下各个平台自动化埋点支持


			平台
			
			
			特点
			
			
			自动化埋点方案
			
		
			Android
			
			
			Java支持编译器静态代理/运行期动态代理
			
			
			有成熟方案和产品，例如GrowingIO、神策、友盟
			
		
			iOS
			
			
			OC提供了强大的运行时和动态性
			
			
			有成熟方案和产品，例如GrowingIO、神策、友盟
			
		
			Flutter
			
			
		]]></description><category></category></item><item><title><![CDATA[Flink 实时 metrics]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/120441365</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/120441365</guid><author>GrowingIO_</author><pubDate>Thu, 23 Sep 2021 20:02:10 +0800</pubDate><description><![CDATA[目前我们的 flink 任务跑在 yarn 集群上，在面对以下问题时
	常驻实时 job 是否在稳定运行？
	实时数据的处理能力如何？消费过慢？是否需要申请更多资源提升消费能力？
	实时数据质量可靠？是否有丢数据的风险？
	实时任务现有的资源是否足够支撑现有的数据量？资源是否闲置浪费？
虽然 flink web ui 提供了一些监控信息，但是对开发还是不够友好，所以我们利用 flink metrics + prometheus + grafana 搭建了一套实时监控看板，有利于收集 flink 任务的实时状]]></description><category></category></item><item><title><![CDATA[Growing 账号认证实践]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/120365522</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/120365522</guid><author>GrowingIO_</author><pubDate>Sat, 18 Sep 2021 14:31:01 +0800</pubDate><description><![CDATA[背景

GrowingIO 作为专业的数据运营解决方案提供商，我们的客户来自不同的行业，但他们都有相同的安全需求。在众多的客户中，许多客户都有自己的账号认证系统。因此我们需要能通过简单的配置接入客户的账号认证系统。目前 GrowingIO 一共支持了 CAS, OAuth2, LDAP 三种不同的接入协议。本文将详细介绍我们是如何支持这三个接入方式的。

不同接入协议的认证流程

OAuth2

一般来说，使用 OAuth2 来实现认证都是使用的授权码模式，我们这里也不例外，下面是 OAuth2 授权码模式]]></description><category></category></item><item><title><![CDATA[Frida笔记 - Android 篇 (一)]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/120204350</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/120204350</guid><author>GrowingIO_</author><pubDate>Thu, 09 Sep 2021 19:07:34 +0800</pubDate><description><![CDATA[前言

相信不少小伙伴对Xposed、Cydia Substrate、Frida等hook工具都有所了解, 并且用在了自己的工作中, 本文主要分享Frida的环境配置以及基本使用, 以及相关功能在日常开发调试带来的帮助

配置Frida的环境

Frida的环境安装可以参考官方文档, 或者参考网上分享的实践, 使用较为稳定的特定版本


# 通过pip3安装Frida的CLI工具
pip3 install frida-tools
# 安装的frida版本
frida --version
# 本机目前使用的1]]></description><category></category></item><item><title><![CDATA[数据结构和算法在流程画布中的实际应用]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/120066383</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/120066383</guid><author>GrowingIO_</author><pubDate>Thu, 02 Sep 2021 18:44:10 +0800</pubDate><description><![CDATA[图灵奖的获得者，Pascal 之父——Niklaus Wirth ，有个经典说法：“算法+数据结构=程序”（Algorithm+Data Structures=Programs）。我们以这个说法为思路，看在流程画布这个场景中，如何应用数据结构和算法来解决实际的业务需求。

树和图

在数据结构中，对树的描述为：树是n（n≥0）个结点的有限集，它或为空树（n=0）；或为非空树，对于非空树T：


	有且仅有一个称之为根的结点；
	
	
	除根结点以外的其余结点可分为m（m&gt;0）个互不相交的有限集T1, ]]></description><category></category></item><item><title><![CDATA[GrowingIO Design 组件库搭建之单元测试]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/119808956</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/119808956</guid><author>GrowingIO_</author><pubDate>Thu, 19 Aug 2021 20:01:06 +0800</pubDate><description><![CDATA[前言

GrowingIO Design 是用 React 编写的组件库，本质上就是 React 组件，你可以用像测试其他 JavaScript 代码类似的方式测试 React 组件。现在有许多种测试 React 组件的方法。大体上可以被分为两类：


	渲染组件树：在一个简化的测试环境中渲染组件树并对它们的输出做断言检查。
	
	
	运行完整应用：在一个真实的浏览器环境中运行整个应用。
	
我们对于第一类称之为单元测试，本文主要专注于这种情况的测试策略；第二类称为端到端（end-to-end）测试，完整的]]></description><category></category></item><item><title><![CDATA[iOS App注入SDK调试]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/119797496</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/119797496</guid><author>GrowingIO_</author><pubDate>Thu, 19 Aug 2021 15:11:42 +0800</pubDate><description><![CDATA[前言

本文仅作为技术分享，对于一些iOS SDK开发以及维护所遇到的场景问题进行处理，例如：


	客户想提前知晓线上App集成我们SDK后，是否会有SDK兼容性问题，例如Crash，符号冲突
	
	
	客户线上App集成了我们SDK，出现了问题，如何进行排查
	
	
	我们想测试SDK在某一款App中是否功能正常
	
对于这些问题，一般来说我们无法拿到App的源码，想要处理这些场景，就需要拿到客户App文件并注入代码，接下来我们从 iOS越狱、frida砸壳、MonkeyDev来讲述如何实现。

iOS]]></description><category></category></item><item><title><![CDATA[Jira Automation 探索与实践]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/119784564</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/119784564</guid><author>GrowingIO_</author><pubDate>Wed, 18 Aug 2021 20:58:56 +0800</pubDate><description><![CDATA[2020 年上半年，Atlassian 在 Jira Cloud 上推出了一个非常不错的新功能 Jira Automation，将强大的无代码自动化功能带入 Jira Cloud 原生功能中，不用安装额外的插件，就可以非常方便的实现如下能力：


	协助团队在不用编码的情况下，将很多重复且乏味的工作自动化，帮助团队专注在价值更高的工作上；
	
	
	在多团队、多工具的情况下，流程会因为每个人对于执行细则和工具使用的理解不一样而变得混乱。自动化可以帮助团队标准化的梳理和组织各种活动，而 Jira Automa]]></description><category></category></item><item><title><![CDATA[hbase运维故障案例分析]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/119003041</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/119003041</guid><author>GrowingIO_</author><pubDate>Thu, 22 Jul 2021 18:38:37 +0800</pubDate><description><![CDATA[在实际运维HBase集群时，各位小伙伴总会遇到RegionServer异常宕机、业务写入延迟增大甚至无法写入等类似问题。本章结合笔者的经验、列举真实生产线环境常见的几个问题，并介绍这些地问题的基本排查思路。同时，重点对HBase系统中的日志进行梳理介绍，最后对如何通过监控、日志等工具进行问题排查进行总结，形成问题排查套路，方便读者进行实践。

regionserver宕机

案例一: 长时间GC导致Regionserver宕机

长时间FullGC是RegionServer宕机最常见的原因.分析这类问题,可]]></description><category></category></item><item><title><![CDATA[Web UI自动化的设计和实践]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/118802155</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/118802155</guid><author>GrowingIO_</author><pubDate>Fri, 16 Jul 2021 16:56:09 +0800</pubDate><description><![CDATA[背景

UI 自动化测试，即通过自动化的手段来控制机器模拟人进行手工操作。随着 GrowingIO 业务的不断发展，新需求的不断增加，回归测试的任务越来越重，现有测试的资源已经不足以应对繁重的回归测试任务，亟需 UI 自动化来代替人手工进行回归测试，解放回归测试的人力去做更精准的测试。因此，引出下文在 GrowingIO 的Web UI 自动化的建设，本文主要就以下两个方面展开介绍：

1.框架搭建

2.集成质量平台



框架搭建

PageObject

众所周知，UI 自动化测试，是位于测试金字塔塔]]></description><category></category></item><item><title><![CDATA[Clickhouse Projection 特性探索]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/118578118</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/118578118</guid><author>GrowingIO_</author><pubDate>Thu, 08 Jul 2021 19:10:47 +0800</pubDate><description><![CDATA[年初的clickhouse meetup上快手团队分享了clickhouse projection在其公司内部的实践。分享包括了projection原理、使用、性能测试等内容。从性能测试的数据上看，projeciton对查询性能有着百倍级别的提升，意味着之前分钟级的查询响应延迟，将会提升到秒级响应。秒级的查询响应延迟，将会提升到毫秒级的响应，对于使用者将会有更加完美的体验。

看完了快手同学的clickhouse projeciton的分享，在我脑中也产生了几个问题？


	没有projection功能之前]]></description><category></category></item><item><title><![CDATA[GrowingIO Design 组件库搭建之Select组件]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/118490670</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/118490670</guid><author>GrowingIO_</author><pubDate>Mon, 05 Jul 2021 17:21:18 +0800</pubDate><description><![CDATA[前言

Select 是最频繁使用的UI组件之一，它可以运用在很多场景。大多数情况下，原生HTML的&lt;Select&gt;标签无法满足业务的功能过需求，以及原生HTML的&lt;Select&gt;标签在各个浏览器版本里样式表现不太一样。在这样的情况下，多数人都会选择实现一个符合UI要求以及产品功能需求的Select组件，或者选择使用一些开源组件库提供的 Select 组件。本文主要梳理了 gio-design 中的Select组件在实现过程中遇到的一些阻碍及需要注意的地方，希望能对大家在设计和实现s]]></description><category></category></item><item><title><![CDATA[使用 Scala 宏解决对象转换]]></title><link>https://blog.youkuaiyun.com/GrowingIO_/article/details/118225155</link><guid>https://blog.youkuaiyun.com/GrowingIO_/article/details/118225155</guid><author>GrowingIO_</author><pubDate>Mon, 28 Jun 2021 10:55:32 +0800</pubDate><description><![CDATA[背景
在 GrowingIO 服务端的开发中，我们使用 gRPC 进行微服务之间的数据通信，每个提供服务的项目，都要定义一套自己的 Protobuf 消息格式，然后利用 protoc 去生成对应语言的适配代码。在我们维护的项目中，主要使用 Scala 语言来实现各个服务，每个服务都会定义一套自己的领域模型（一般是一些 case class），而 protoc 默认生成的 JVM 平台的代码是 Java 语言的，对应的 Protobuf 消息格式与 Scala 项目中定义的领域模型会存在一些对应关系，并且他们]]></description><category></category></item></channel></rss>