使用 CNPM 搭建私有 npm 仓库
CNPM 是一个可以提供 npm 私有化部署的开源方案。它提供了 JavaScript 模块的存储、发布和下载,以及一个用于在线浏览的 Web 界面。
为什么需要私有 npm
官方的 npm 可以说是最大的 JavaScript 模块仓库,大约有 60 多万个开源的 JavaScript 模块。那为什么我们还需要一个私有 npm 仓库呢?
总结起来,有以下几点原因:
保证 npm 服务的快速、稳定。由于国内网络环境的原因,从官方 npm 上安装模块依赖时,可能需要花费很长的时间。在部署私有 npm 后,可以把经过审核的 npm 模块加入到私有仓库,这样在开发环境和生产环境中就可以对模块进行快速安装了。另外还能避免类似 left-pad 事件的发生1。
发布私有 n...
如何搭建一个基于 LDAP 认证的 GitLab 服务
本文主要介绍了如何在 CentOS 7 环境下安装 GitLab EE 服务,以及集成 LDAP 统一认证、开启 HTTPS 等一系列配置。关于前期工作 LDAP 服务的安装和配置,请阅读上一篇文章:
CentOS 7 环境下 OpenLDAP 的安装与配置
一、安装 GitLab CE
GitLab 有 CE(社区版)和 EE(企业版)两个版本,我们使用的是 GitLab CE 10.3.1 的版本1,并通过官方推荐的 Omnibus 包的方式进行安装。
首先,我们需要下载下面这些 GitLab 必需的依赖包:
# yum install -y curl policycoreutils-python openssh-server postfix
# systemct...
CentOS 7 环境下 OpenLDAP 的安装与配置
最近,自主研发团队正在搭建一套基于 LDAP 统一认证的开发协作平台(包括代码托管服务 GitLab、私有 npm 服务 CNPM 等),以便达到用户统一管理、统一授权的效果。在这期间,我们阅读和参考了许多优秀的文档和资料,同时也遇到了一些知识瓶颈和技术难题,但最终顺利地完成了该平台搭建。因此我们认为有必要把这些经验整理和汇总成一些文档和笔记并分享出来,以使后来有需要的人参考使用,并践行开源自由之精神。
本文是该系列的第一篇,主要介绍了 LDAP 的基本概念,以及在 CentOS 7 环境下 OpenLDAP 的安装步骤及配置,最后会介绍如何通过 phpLDAPadmin 来管理 LDAP 服务。关于 GitLab 和 CNPM 的安装和配置,请阅读:
如何搭建一个基于 LD...
爬虫框架 Scrapy 入门教程
Scrapy 是一个用 Python 开发的爬虫框架,用于抓取 Web 页面并提取其中的结构化数据。
一、安装
首先,确定你的电脑上已经安装了 Python 3 以及对应的 pip。可以使用下面的命令查看:
$ python3 --version
Python 3.6.3
$ pip3 --version
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)
如果没有安装的话,推荐使 Homebrew 这个工具来进行安装。
pip 是 Python 的一个包管理工具,类似于 npm,可以在线安装、卸载所有的第三方 Python 模块,并自动处理依赖关系。这里我们使用下面的命令来安装 Scrapy...
2017 年我读了哪些书
一直打算入手一个 Kindle 的,没想到三月份的时候,竟意外获奖,而奖品刚好是 Kindle Paperwhite,正遂我愿。我的读书生涯也进入了电纸书的时代。
有 Kindle 这几个月来,我一直热衷于收集各类高质量的电子书(主要是 awz3 格式,也有少量的 mobi 格式)。同时,我也挑了几本经典,感受 Kindle 带来的全新的阅读体验。
下面的篇幅我将介绍今年在读的几本不错的书。
邓小平时代(傅高义著)
该书主要讲述邓小平在文化大革命之后的政治轨迹。对了解中国改革开放和市场经济制度的建立有重要指导意义。
西方哲学简史(罗素著)
哲学是送给爱思考的人的礼物,所以我一直对哲学怀有好感。初次看这本此书还是在重交大的图书馆里,斯宾诺莎的“简单生活,高贵思考”对我...
Angular 最佳实践
从去年十月份开始接触 Angular 到现在,已经有大半年的时间了,同时也见证了 Angular 的快速发展,其版本也从 Angular 2 跃升为 Angular 4。与 React、Vue 相比,Angular 框架更加严谨而全面,这使得它非常适合构建大型 Web App。然而也是因为这一点,使其学习曲线陡峭,让很多初学者望而止步。
本文将介绍在创建一个 Angular 应用中所使用的一些最佳实践。
一、核心概念
Angular 中最重要的三个概念是:模块、服务和组件:
模块:用于打包发布组件和服务
服务:用于添加应用逻辑
组件:用于管理 HTML 模板
模块是一个带有 @NgModule 装饰器的类。每一个 Angular 应用都有一个根模块(AppMo...
起名的艺术
计算机科学中仅存在两件难事:缓存失效和事物命名。
— Phil Karlton
定理 1:代码应该是写给人来读的,只不过顺便能在机器执行而已。
代码大部分时候是用来维护的,而不是用来实现功能的,这个准则适用于大部分的软件工程。比如我所知道的一个软件系统,开发了三个月即上线使用,而用于维护的时间却是以年为单位的,开发者花大量的时间用于调整代码以确保其正确运行。
因此,编写可读代码成了用于衡量代码质量的重要标准之一(另外一个熟知的标准是正确性)。
定理 2:好的代码胜过好的注释。
好的代码自己本身就是最好的文档。当你打算加注释的时候,问问自己“我如何才能把我的代码改善到不需增加注释?”重构自己的代码,然后使文档让其更清楚。
注释的恰当用法是弥补我们在用代码表达意图...
创造者的鉴赏力
本文是 Taste for Makers 的中文翻译,经原作者 Paul Graham 的同意,公开发表。
在保留和不改变本版权信息的前提下,本译文可以自由地复制,变更和再发布。
Copyright 2002 by Paul Graham
原文地址:http://www.paulgraham.com/taste.html
中文地址:http://daiyuwen.freeshell.org/gb/taste/taste.html
哥白尼对天动说美学上的反对是他拒绝托勒密体系的重要原因…
— Thomas Kuhn, The Copernican Revolution
在 Kelly Johnson 的训练之下,我们狂热地坚信他的主张:一架看上去很美的飞机飞得也会同样...
共计 54 篇文章,7 页。