【后端总结】PHP基础

在 2018/11/13 19:54:57 发布于 编程实践 分类 • 标签为 后端总结

大部分得语言内容都静静得躺在语言手册中,如果复述一遍,一方面未必又手册描述得清晰,另一方面也是有悖总结知名。而且基础类的文章这么写法,常常会陷入种种细节的窠臼。所以这篇文章写写珊珊总是落不成笔。

所谓经典就是不管看几遍总是能够有所收获。翻看SICP的时候,开篇对于编程语言元素的总结简明扼要又醍醐灌顶

The Elements of Programming

  1. primitive expressions, which represent the simplest entities the language is concerned with,
  2. means of combination, by which compound elements are built from simpler ones, and
  3. means of abstraction, by which compound elements can be named and …

阅读全文

后端总结序

在 2018/11/07 17:07:14 发布于 编程实践 分类 • 标签为 后端总结

2014年毕业,按照毕业算工作年限是四年,如果是2014年初的实习开始,就快五年了。五年来,从一无所知的小白到现在前端后端都能写,虽然自认业务能力充足,但很多时候还是带点心虚。

有的时候不得不承认,不是科班出生的,总归是要比别人慢一点。当别人已经开始学习大数据、AI、区块链的时候,我还在补数据结构、操作系统、编译原理,还补得磕磕绊绊。五年了,因为没有系统的检验,即使学了,还是不明白自己究竟有几斤几两。对事物的控制欲望让我想知道方方面面的细节,否则我就不放心。对于自身也是一样。虽然我知道面对寻常的后端开发工作,90%以上的工作都可以胜任,但只有在问题出现的时候才能判断这件事是否在这90%之中,让我非常的焦虑。这种焦虑,有点像以前做数学考卷的时候,知道某个题是用什么知识点来解的,但能不能解出来,还得算来看看——本质上是知识没有条理性。

最近一长段时间,大概有个一年半,尝试过用一些方法来梳理自己的知识体系。用过思维导图,感觉太过简单;用过wiki,但会陷入到细节中拔不出来。不管怎么做,总是不那么如意和顺畅。做准备工作的时候,明明觉得提纲里的东西都用得顺手,但是实际写来却艰苦卓绝。最近想明白了 …


阅读全文

Rust 模块系统初探

在 2018/11/07 16:16:57 发布于 编程实践 分类 • 标签为 Rust, 模块

学习一门编程语言,知道如何引用外部的文件或者说模块系统是比较重要的一点,PHP用autoload机制,C有经典的include。最近写 wslexe 的时候,因为原作者用的 rust,所以就简单学习了一下。但是 rust 的模块文档是从顶部设计开始写的,很多概念,有些复杂,这里写一个应用导向的学习笔记。

引入文件

首先,让我们初始化一个项目。

mkdir rustmod
cd rustmod
cargo init

我们得到了下面这样的基础项目结构

rustmod
├── Cargo.toml
└── src
    └── main.rs

main.rs里面只有一个简单的输出的‘hello world’的main函数。我们新增一个functions.rs文件,将生成字符串的过程做成一个函数,供main …


阅读全文

中数据分析

在 2017/06/19 17:03:00 发布于 编程实践 分类

same 在前段时间更新了数据的展示形式,数据流的方式意味着决策上将要更多地向个性化的方向发展。说到个性化,那就意味着大量的用户行为数据的收集和处理,意味着原先用 MySQL 还能支撑的统计分析将不再适用。因此,开始考虑需要一套大数据处理的工具。说到大数据,一般都会自然得想到 Hadoop 系的一系列工具,从计算引擎,到存储系统,再到查询工具。Hadoop 的这一整套东西,很好很强大,但也意味着架构的复杂。

作为一个之前没有接触过任何 Hadoop 系统地超新手,我们艰难得尝试了几天,最终还是选择了放弃。放弃的原因,除了复杂度之外,更是因为一种杀鸡用牛刀的感觉。即使是全量的记录 same 的访问日志,每天也不过数 GB,这样的数据量,要直接上动辄十数台机器(hdfs + Hadoop + 控制节点)的集群着实有些奢侈(费用和维护成本)。而且,公司里也基本没有对 Hadoop 体系熟悉的人,后续的知识传承也很成问题。放弃了 Hadoop,就要重新寻找这样一种简单又可扩展的替代品:架构简单 …


阅读全文

一些重构体会

在 2016/12/29 04:26:00 发布于 编程实践 分类

最近在重构多媒体服务,包括爬虫和搜索两部分。原先的代码是一个实习生 Q 同学写的,用的 python。如果抽出其中的一块代码来看, Q 同学应该是一个重实践的同学,代码质量还是很不错的,但是之前看的时候我还是很难理解他的编程思路。直到这次彻底的重构,才发现代码中的一些问题。 这里记录下来,也是对自己的提醒。

命名

这其实是一个老生常谈的问题,而且大部分人其实都有这个意识,Q 同学在对待大部分的命名上也都在尽量选择合适词汇。但是,对于工具函数却没有一视同仁。 比如

def _l(x):
    r = list(map(_ft, x))
    if len(r) == 1:
        r = r[0]
    return r

这是一个内部函数,用来提取出爬取的元素,并根据获取的元素数量返回不同的数据结构,在爬取数据的时候多次用到。即使不用太高级的英语,直接用 get_result_as_list_or_string已经可以极大地缓解在阅读过程中返回去看这里干了什么的情况。同样的 …


阅读全文

初始化一个 Python 开发环境的正确姿势

在 2016/12/10 17:41:00 发布于 编程实践 分类 • 标签为 python, virtualenv

在看这篇文章的时候,我需要两个假设,以避免做过多无关的解释。

  1. 假设读者对 Python 有最基本的了解,知道如何使用 pip。并且系统环境中已经安装有 Python 和 pip。
  2. 假设读者对 virtualenv 有最基本的了解,知道为什么要用 virtualenv。

如果假设不成立,可以跟随上面的链接和 Google 来了解。

0x1 更换 pypi 源为豆瓣的源

如果网络环境好的话这一步也可以不做

mkdir -p ~/.config/pip/
touch ~/.config/pip/pip.conf

在pip.conf 文件中添加以下内容

[global]
timeout = 60
index-url = https://pypi.doubanio.com/simple/

0x2 安装 virtualenv …


阅读全文