带有标签 Programming 的文章

关于函数式编程,有读过不少介绍文章,但是很多文章要么太理论化(范畴轮、幺半群等等),有的又讲的太泛泛,比如说函数式“代码简洁、易读、科里化和合成很有用”,但是读完是知道了函数式编程有这些特性,却并没有看出了和其他编程范式相比有什么优点。

自己也学习过 Haskell,但是平时函数式代码写的也比较少,所以很多概念可能是过几天就忘了。

所以这篇文章不深入理论,而是用实际的代码来展示,为什么一些代码逻辑用函数式能写出更“简介、易读、易维护”的代码。

...

查看全文

前一段时间项目上有过一个需求,可以考虑通过自动给 React 组件添加属性来实现。虽然这是一个很反模式的方式并且最终否决了这个方案,但是还是尝试研究了一下如何实现 自动给 React 组件添加属性。更确切地说,是在 webpack 打包出来的最终文件内给 React 组件添加上自定义的 props

webpack 处理 React 文件(js/jsx)使用 babel-loader,babel 就是我们的 JavaScript 编译器,它接收我们的源代码作为输入,产出编译后的可运行于浏览器的目标代码作为输出。babel 支持插件(plugin),可以视作编译器前端与后端之间的中间件:前端根据源代码生成抽象语法树(AST)等,后端根据抽象语法树生成目标代码,而插件作为中间件则是在生成目标代码之前对抽象语法树做相应的修改。

RSA 加密算法是目前广泛使用的一种非对称加密算法。RSA 加密算法的可靠性依赖于极大整数因数分解的困难度。本文主要根据 RSA 加密算法实现一个简单版本的 Python 代码实现,包括私钥、公钥生成与加密、解密方法。

RSA 加密算法概述

RSA 加密算法为非对称加密算法,意味着加密和解密使用不同的秘钥,称为 公钥私钥 ,公钥可以任意分发并用于加密,私钥需妥善保存用于解密。

...

查看全文

软件开发离不开开源项目,自己单干无异闭门造车,所以我们需要别人的库/工具(package)帮助我们完成工作。我们需要的,是尽可能轻松地集成到我们的项目内,并且能很好地解决我们的需求而不引起其他问题。我们以以下三个方面来考虑是否选择一个库:

cherry-pick 是一个比较常用的 git 操作,可以将一个分支上的 commit “精选”到另一个分支上。然而在最近的开发过程中,却时不时的遇到 merge 冲突。在下文中,我将会详细的分析 cherry-pick 造成冲突的原因,以及 cherry-pick 可能造成的其他更严重问题。

我们以一个简单的例子来进行分析:

the-cp

...

查看全文