ESPIER 一只JAVA程序猿的日常

数据结构与算法学习系列(一)

关于新坑和旧坑的说明

我又开了一个新的坑,迫于近期一些方面的压力,我又把数据结构和算法这个东西捡起来了,至于之前Clojure学习笔记系列的坑,咳咳,虽然还会更新下去,但是估计会延后很多了,因为学了Clojure蛮久的时间了,没有太多的实践机会,也没有对Clojure理解的足够深,因此这个系列估计会稍微放一放,等我理解足够深刻了在继续下去(对不起,还是因为懒XD)。

什么是算法

算法,这个东西其实是思路的体现,也可以说是问题的解决方案。相信大家也都看到过这句话:

程序=算法+数据结构

虽然这么说或许不够准确,但是算法对于程序本身而言意义是十分重大的。也是影响程序性能的一个关键因素。大多时候算法都是一个由实际问题转化而成的数学模型,因此,像写出一个好的算法的话首先要能充分理解问题,然后就是将问题转化成一个高效的数学模型。所以说啊,学好数学还是很关键滴~

配置lein的私有依赖仓库

lein与私有仓库

lein在new一个新的项目的时候都会从maven或者clojars上下载对应的依赖,但是一旦你离开了互联网环境只有一个maven私服的时候,这一切就变得不是那么美好了。因此,我们需要配置一下lein,让它能够从我们指定的位置下载依赖。

创建profiles.clj

在$HOME/.lein/下创建profiles.clj文件,在其中添加如下内容:

clojure学习笔记其三

Namespace

名称空间对于Clojure来说是一个逻辑上对于代码进行分组的概念,类似于Java的package,通过使用名称空间能够规避方法名冲突,有效的对代码进行管理。主要应用的话,其实就是方便代码的引入和使用了,毕竟你不可能将所有代码放到一个clj文件中。

create-ns

user> (create-ns 'clojure.by.example)
nil

这样一个名称空间就建立好了,是不是so easy!

in-ns

;; create the namespace and switch to it
(in-ns 'first-namespace)

in-ns的主要作用是切换到指定的namespace中,如果这个namespace不存在,则会创建他。

Atom配置国内源

配置国内插件源

atom这个编辑器确实很好用,但是她的插件安装的速度实在是让人难受,没有梯子的话会让人抓狂w(゚Д゚)w,在网上查了一下,找到了一个比较靠谱的方案,记下来方便以后使用。

  1. 本方法在linux和windows下都是可用的
  2. 在**$HOME/.atom目录下新建.atomrc**文件
  3. 在文件内添加如下内容:
registry=https://registry.npm.taobao.org/  
strict-ssl=false

Over !

clojure学习笔记其二

今天的主题是Function

正如标题所言,今天这篇笔记的主题是function,当然也就是lisp语言中的一等公民,“函数"啦XD

那么直入主题,首先来看一下怎么定义一个函数:

;;    name   params         body
;;    -----  ------  -------------------
(defn greet  [name]  (str "Hello, " name) )

这里我引用了官方文档中的说明。

那么这个函数的使用就可以像上一篇中所说的那样:

user=> (greet "小明")
"Hello, 小明"

你也可以给你的方法增加方法说明:

(defn greet  
  "this is the greet function for you"
  [name]  
  (str "Hello, " name))

clojure学习笔记其一

简述

  学习clojure的起因主要还是想学习lisp语言吧。由于既想学lisp现阶段又无法脱离jvm这个大的框架,所以就发现了clojure语言,然后就踏上了“自虐”的不归路:D

学习思路

  在刚开始学习的过程中,我看了很多相关的教程、博客,但总是感觉不得其门而入,简单来说就是找不到这门语言的学习思路。大体是因为clojure和传统的C type语言思路不同吧,再加上语法糖太多,导致各种磕磕碰碰。仔细想想,还是整理一下目前所学,也希望整理的东西能给clojure的初学者提供一定的帮助。
  本系列的笔记是基于官方文档整理、补充的,如有错漏,请在评论区指出,以便及时进行修改,也有助于我自身的提升和进步。

语言学习的第一步

没错,就是Hello World!

user=> (println "Hello, Clojure!")
Hello, Clojure!
nil

这一句是在repl中执行的,哦,差点忘了,记得安装lein哦,至于怎么装请自行百度,如果需要梯子,emmmmm,自己想办法吧,程序员或者想成为程序员的人不应该被一面墙阻拦(有人敲门,我去开一下,Σ(っ °Д °;)っ好像有哪里不对)

言归正传,输出的结果是“Hello, Clojure!”,但方法的返回值是nil,这个输出其实就是函数println的副产物。

折腾hexo系列之在jacman里集成gitment评论系统

从disqus到gitment

其实就易用性和使用效果上讲,disqus还是很好用的,只需要注册一个账号,在主题里配置一下就可以了,然而,disqus最大的问题还是在于翻墙,咳,科学上网。今天这个问题我的一个小伙伴也跟我吐槽了,毕竟不是每个人都会去弄个vpn啊,ss啊之类的东西。因此,回家之后果断搞起。

《大道至简》读书笔记

编程的精义

开发是一个阐述思想的过程,把想法转化成逻辑,最后变成代码,就是整个开发的过程。

编程,是开发的一环,也就是把逻辑转化为代码的过程。

正如文中所说的那样,“程序=算法+结构”。算法是顺序,分支,循环的组合变化,结构是思想在程序中的映射。因此,代码在编程里是最为easy的一环。

嘛~~第一章大致就是说了这么一个内容,强调了在编程过程中最为重要的反而是思想,逻辑。掌握语言和转化成代码其实都是最为容易的事。PS:是不是说我只要懂得足够多就能当PPT架构师了:)

当然,这里说代码是思想的转化自然是没什么问题的,然而写代码同样是一个磨练技艺的过程,怎么写更好,怎么写更易懂,怎么写更容易维护,这也是一个程序猿需要不断去锻炼学习的。PS:这一段与原文主旨没什么关系,只是忽然想到就加上了。不过话说回来,在这方面如果能做到尽善尽美,这让接盘子的人会非常开心吧(o゜▽゜)o☆

26岁的细思极恐

班车上的感慨(人总是莫名伤感233333)

  转眼间已经快工作3年了,年龄也逐渐到达了26岁,我不知道我会在IT这个行业坚持多久,或许是几年也或许是一辈子。人们总是说时光荏苒,白驹过隙。但不仔细回头想想,真的不会发现时间就这样在每天匆忙的上下班中从自己的身后溜走了。   回想过去两年的工作(我是在传统开发行业工作的,互联网接触的不多,主要还是学了没地方用QAQ),虽然在技术上逐渐成熟,也学了很多的东西(想想自己从刚毕业什么都不会,到现在当个开发组的小组长内心还是颇为自豪的23333),框架的,前端的,后端的,也踩了各种坑,但是看看前沿的论坛新闻,感觉自己离这个时代要求的能力还是有不小差距的。不能沉迷于所得的成就,人总是得向前看。   30而立,但看着自己离30岁越来越近,事业上,爱情上都是毫无建树(单身狗。。。哇的一声哭了出来),不禁心里有了些触动,这也是我写这篇博文的动机(估计没什么人愿意看我发牢骚)。


Ubuntu下如何添加ppa仓库

Ubuntu下添加ppa仓库

此处以安装atom为例,命令如下:

sudo add-apt-repository ppa:webupd8team/atom  
sudo apt-get update  
sudo apt-get install atom 

这样就把atom的仓库添加并安装完成了。

然而,并没有这么简单

sudo: add-apt-repository : command not found

mdzz 这是怎么回事,不应该是这样的(╯‵□′)╯︵┻━┻