Happy Hacking!

Apr 12 2017
化繁为简的企业级 Git 管理实战(四):多 Gitlab 数据同步

    化繁为简的企业级 Git 管理实战(四):多 Gitlab 数据同步

    需求描述

    在继续写数学系列前,我想切回去之前的 Git 系列写点东西。我想写系列文章也可以像操作系统的进程调度一样,一个系列暂时写不动了,先 保存现场 跳去另一个 topic 写点东西,同时也给自己留点 buffer 再酝酿一下这个暂时 中断 的系列。等这个系列酝酿够了,再 恢复现场 ,继续还这个系列的技术债。

    对于一个规模较大的企业,存在多个 Gitlab 站点是很常见的事情。

    比如,我们团队在公司发布统一的 Gitlab 之前早已经搭了一个团队用的 Gitlab ,当公司开始推 Git 时,由于我们已经对自己团队的 Gitlab 做了大量的定制,因此并不打算迁移到公司的 Gitlab 。

    自己搭建 Gitlab 的好处是可以随心所欲的进行定制,像加远程钩子之类的东西想加就加。但缺点就是平台的维护成本也落到了自己身上。相比之下,公司 Gitlab 则没有什么维护成本,服务的稳定性由更专业的运维人员保证,也不用考虑扩容的问题,但灵活定制就别想了。如果能够实现 Gitlab 间的数据自动同步,我们可以没有顾忌的使用自己的 Gitlab 平台,一旦出现问题,再无痛迁移到公司的 Gitlab 。这样一方面避免了单点问题,节省了维护成本;另一方面也能尽可能保证灵活可定制。本文想讨论的就是多个 Gitlab 站点间的数据同步问题。

Read More

Feb 12 2017
机器学习的数学基础:线性代数进阶篇

    机器学习的数学基础:线性代数进阶篇

    前言

    在前面两篇文章中,我简要概括了线性代数中两个最基本的数据表达方式:矩阵向量。有了这两个数学工具作为基础,我们可以再进一步,讨论下面一些内容:

    1. 如何求解线性空间的基?
    2. 向量的子空间、零空间、列空间、行空间、左零空间都是什么东西?怎么求解?
    3. 如何用线性代数的知识来拟合数据?
    4. 机器学习、图像处理中常见的“特征向量”究竟是什么东西?它和变换矩阵有什么联系?

    本篇文章将作为线性代数子系列的最终篇。

Read More

Feb 6 2017
机器学习的数学基础:向量篇

    机器学习的数学基础:向量篇

    前言

    上文 中我简单概括了矩阵的基本运算,并给出了两个应用实例。这篇文章我们继续谈谈向量。

    向量是线性代数中的基本概念,也是机器学习的基础数据表示形式。例如计算机阅读文本的过程首先就会将文本分词,然后用向量表示[1]。这是因为向量很适合在高维空间中表达和处理。在机器学习中会接触到的诸如投影、降维的概念,都是在向量的基础上做的。

Read More

Jan 31 2017
机器学习的数学基础:矩阵篇

    机器学习的数学基础:矩阵篇

    前言

    机器学习如火如荼,要学习机器学习,数学基础少不了。所以本系列将对机器学习所用到的线性代数、微积分和概率统计的基础知识做一个简单的概括。

    本文将总结线性代数中矩阵的基本知识点。同时理论结合实践,使用 Python 来进行实践。如果需要跟着进行编程实践,请先确保下列环境已安装:

    • Python - 编程实践所使用的语言;
    • Numpy - Python 的数值计算库。

    矩阵(Matrix)是人为约定的一种数据的表示方法,在图像处理、人工智能等领域,使用矩阵来表示和处理数据非常常见。

Read More

Apr 29 2016
化繁为简的企业级 Git 管理实战(三):分支管理策略

    说到版本控制,就不得不提到分支管理策略。就像学开车必须学学交通规则。分支管理策略是代码版本控制的基础组成部分。为团队定制一套合适的分支管理策略,就好比制定了一套合理的交通规则,可以让团队的代码的更加有序地演进,尽可能降低多分支带来的复杂度,并避免由于分支混乱引发的各种“车祸”。本文将简单讨论下我们在开发过程中尝试的各种分支管理策略,在面对各种复杂场景下呈现的优势与不足,以及我们的妥协和后续期望。

    Github-Flow

    作为 Github 的重度用户,我首先考虑的当然是 Github-Flow

    Github-Flow

    Github-Flow 是一种非常简单的分支管理方案。它的流程只有如下几步:

    1. 拉出一个新分支;
    2. 在新分支上进行修改,并提交和推送你的改动;
    3. 发起一个 Pull Request ,向代码管理员申请将你提交的分支合并到原来的分支;
    4. 讨论并接受 Code Review。在这个过程中,你依然可以继续推送新的代码到你的开发分支上,并且新的提交在推送后会出现在未完成合并的 Pull Request 页面中;
    5. 合并和发布。Review 通过后,代码管理员将该分支合并到原来的主分支上。
Read More

© 2019 Joseph Pan