TinyLab

Keep eyes on the star and feet on the ground.


  • 首页

  • 归档

  • 分类

  • 标签

每周回顾:少一点,再少一点

发表于 2015-08-28   |   分类于 每周回顾   |  

信息爆炸,知识爆炸,知识量在以指数级上升,据说近几十年的知识量比过去人类整个历史积累的知识量都要多。而我们的大脑的进化速度,完全赶不上知识的增长,互联网时代给予我们太多便利去获得知识了,各种免费资源取之不尽,只要有求知欲,想学习什么可以轻而易举的获取各种资料,包括书籍、课件、视频等等。有时我就在想,人类的某一个领域,甚至某一领域的某一分支的知识会不会复杂到一个人穷尽一生也学习不完的地步?或许知识的分类会更多,会更精细,届时对于那些求知欲强大的人,企图一窥全貌,知道所有细枝末节几乎是不可能的事情了。貌似现在已经是这样了。

以上是在学习数据挖掘和机器学习时候,碰到很多新知识,随便google一下,又会扯出一堆信息,有感而发。自叹记忆力大不如前,看过就忘,还有悔不该在学校没有深入学几门数学。

阅读全文 »

将Python脚本打包成可执行文件

发表于 2015-08-21   |   分类于 工具   |  

Python是一个脚本语言,被解释器解释执行。它的发布方式:

  • .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的各种安装包就是这样做的)

  • .pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库。

  • 可执行文件:对于非码农用户或者一些小白用户,你让他装个Python同时还要折腾一堆依赖库,那简直是个灾难。对于此类用户,最简单的方式就是提供一个可执行文件,只需要把用法告诉Ta即可。比较麻烦的是需要针对不同平台需要打包不同的可执行文件(Windows,Linux,Mac,…)。

本文主要就是介绍最后一种方式,.py和.pyc都比较简单,Python本身就可以搞定。将Python脚本打包成可执行文件有多种方式,本文重点介绍PyInstaller,其它仅作比较和参考。

阅读全文 »

编码之道:面向对象的五大原则

发表于 2015-03-31   |   分类于 编码之道   |  

面向对象编程是一种模拟现实的编程范式。问题领域的一些概念,我们会抽象成类;概念的实体,我们会抽象为对象。面向对象的思想已经比较成熟了,前人在使用面向对象编程的过程中已经总结了许多经验,然后记录下来,如:设计模式、OOD、OOP等。下面整理一下,比较大的几个指导原则,深刻理解这些原则一定能做出好的设计,写出漂亮、可维护的代码。或许你已经这么做了,只是还没有意识到而已。

阅读全文 »

编码之道:结构体 vs. 对象

发表于 2015-03-15   |   分类于 编码之道   |  

在编程中,现实中的事物及其组织,需要用数据抽象来表示。在C++语言中,既可以使用使用过程式的struct来做数据抽象,同时也可以使用面向对象的class来做抽象。在语言层面上,struct和class除了默认访问权限不一样,其它都是一样,但本文中区别对待之,一般使用struct时代表的是数据,Plain Of Data,即就是所谓的POD类型,可以直接存档和在网络上传输。而class代表的是对象的类,支持面向对象中的各种用法。

阅读全文 »

自我超越之路

发表于 2015-03-02   |   分类于 个人管理   |  

成为自己,成为我们能成为的人,这是生活的唯一目标 ———— 斯宾诺莎

工作七年了,一直忙着实现别人提得需求,整天面对着的就只有代码,期间迷茫过、烦躁过、甚至都想键盘一甩,该干嘛干嘛去了。偶尔,停下来想一下有些可怕,当你的生活被指派给自己的工作填满,被那些海量信息包围着。有趣没趣的,有意义的没意义的,紧急的的事情,将我们包围着,根本理不出个头绪,只能像无头苍蝇一样,肆意乱撞。不知道自己想要的是什么,是多么的可怕。

编程本该是一件有趣好玩的事情!生活本该是让人感到幸福的!我们与生俱来的激情、好奇心和求知欲都慢慢地被一点一点磨灭掉了。

就在2011年的时候,应该算是最忙的时候,项目上线,需求多如牛毛,再加上各种不如意之事,苦闷和迷茫几乎让人崩溃。也就是那个时候的一个周末,一个人呆在空荡荡的房子里面,就在想:未来的几年该如何的度过,像现在一样忙碌却到头了还不知道忙了些什么?还是要去认识真正的自己,去做对于自己来说有意义的事情?然后就抽空去阅读一些关于哲学、心理学和个人管理相关的书籍。知道了时间管理、知识管理、价值观、如何去设定目标、制定计划、发现自己的优势、高效率的工作和慢下脚步来感受生活中值得我们为之付出更多的时光。

今天写下这篇“自我超越之路”,算是对自己之前个人管理方面的总结,同时也整理一下上周部门分享中的思路,以文记之,以备他人所需。

阅读全文 »

编码之道:小函数的大威力

发表于 2015-02-12   |   分类于 编码之道   |  

一屏之地,一览无余!对的!要的就是短小精悍!

翻开项目的代码,处处可见成百上千行的函数,函数体里面switch-case、if、for等交错在一起,一眼望不到头的感觉。有些变态的函数,长度可能得按公里计算了。神啊,请赐予我看下去的勇气吧!先不论逻辑如何,首先这长度直接就把人给吓到了。这些超大号函数是怎么来得呢?

阅读全文 »

编码之道:取个好名字很重要

发表于 2015-02-11   |   分类于 编码之道   |  

代码就是程序员的孩子,给“孩子”取个好听的名字很重要!

我们在项目开发中,接触到的变量、函数、类多数都是项目自己定义的,往往都是为了解决一些特定的领域的问题,引入了各种各样的概念,代码里面的名字就对应着问题领域或方案领域的这些概念,所以,对于一个命名良好,代码规范,设计简洁的系统,要想非常快的理解一个系统,最直接的方式就是RTFC(Read The Fucking Code)。对于一个不断演进的系统,代码的可读性至关重要,首要要解决的问题就是名字,变量名、函数名、类名等都需要仔细斟酌,认真对待,一个能够简洁,能够清晰表达概念和意图的名字就显得尤为重要。

阅读全文 »

编码之道:是谁制造了混乱

发表于 2015-01-21   |   分类于 编码之道   |  

项目随着时间的推移,开发人员换过了一波又一波,项目的代码被一些代码风格“狂野”的新同学们“强奸”了一遍又一遍。我们游戏服务器代码从09年时的50W行激增到现在的200W行,不得不赞叹:“还真是能写啊!”。代码混乱的程度,简直不忍直视:风格迥异的命名方式、得以米计算长度的函数、各种MagicNumber,让人摸不着头脑、缺少封装导致的大量重复代码、各种奇葩的缩进方式、拥挤在一堆,就不知道敲个空格或空行会浪费多少时间啊…。

阅读全文 »

关于线程化库

发表于 2013-09-03   |   分类于 架构   |  

对于我们做游戏服务器开发的来说,多数都在Linux平台下作开发,经常用到pthreads(Posix Threads)库。Windows下的线程化库没有用过,据说和pthreads多数API都比较类似。提供线程创建、销毁、Join、mutex/临界区、条件变量等。这些api把数据同步和对线程的控制权全部交给程序员,给程序员以极大自由,同时也带来一堆麻烦。除此之外,还有那些比较通用的线程化库呢?

阅读全文 »

Redis:简介

发表于 2013-07-18   |   分类于 架构   |  

Redis是一个开源的,先进的key-value持久化产品。它通常被称为数据结构服务器,它的值可以是字符串(String)、哈希(Map)、列表(List)、集合(Sets)和有序集合(Sorted sets)等类型。

可以在这些类型上面做一些原子操作,如:字符串追加、增加Hash里面的值、添加元素到列表、计算集合的交集,并集和差集;或者区有序集合中排名最高的成员。为了取得好的性能,Redis是一个内存型数据库。不限于此,看你怎么用了,也可以吧数据dump到磁盘中,或者把数据操作指令追加了一个日志文件,把它用于持久化。也可以用Redis容易的搭建master-slave架构用于数据复制。

阅读全文 »
123…10
David++

David++

92 日志
21 分类
60 标签
RSS
GitHub 知乎 微博 豆瓣
© 2007 - 2016 David++
由 Hexo 强力驱动
主题 - NexT.Pisces