Category Archives: Dev

配置IntelliJ IDEA 13的SBT和Scala开发环境

对于scala的开发环境,公认最好的IDE是IntelliJ IDEA+scala&sbt插件。sbt(Simple Build Tool,a build tool for Scala.)是scala专用的构建工具,使用scala语言编写,配置比maven等构建工具简单了许多。sbt集成了依赖管理(使用Ivy做依赖管理),并“只在请求时更新”。(详见twitter, scala school的简单构建工具)
SBT其他相关链接
sbt http://www.scala-sbt.org/
sbt github https://github.com/sbt/sbt
sbt-idea https://github.com/mpeltonen/sbt-idea
我在配置IDEA+scala&sbt的过程中走了不少弯路,所以记录一下配置的过程,希望对大家有所帮助。
打开安装完成的Intellij IDEA 13(http://www.jetbrains.com/idea/),首先要安装好scala和sbt plugin。在IDEA的wizard中选择plugin -> 安装插件 -> 搜索scala和sbt,然后等待安装完成即可。
Continue reading

Posted in Dev, Java|Scala.

使用Scala Casbah连接MongoDB

Casbah是Scala的MongoDB toolkit,它对java Driver进行了封装并提供了scala风格的接口。Casbah使用了隐式的“PIMP My Library”代码来增强Java代码的功能。PIMP My Library模式是使用额外的方法和属性来装饰类的一种方法,一般使用隐式函数定义的方式来让Scala转换一个对象为一个新的对象,参考PIMP My Library,下面是一个简单的PIMP My Library用例:

Continue reading

Posted in Database, Dev, Java|Scala, NoSQL.

MongoDB Casbah运算符

Casbah通过运算符提供了非常灵活的语法,用于构建DBObject文档对象。
Continue reading

Posted in Database, JavaScript, NoSQL.

Mongo – Class One

1. Concept

MongoDB的文档数据库特性表示对非结构化存储的支持非常好,即不能确定表的列结构的数据。这类数据无法固定模式/模型,数据结构持续变化中,数据库管理员和开发人员的压力被扩大。但多媒体这类二进制数据为”非结构化“数据并不准备。例如:调查表。每个被调查公司的调查项都不一样

MongoDB具有一些特点

· 面向文档的存储引擎,可以方便支持非结构化数据
· 全面的索引支持,可以在任意属性上建立索引
· 数据库本身内置的复制和高可用
· 数据库本身支持的自动分片集群
· 丰富的基于文档的查询功能
· 原子化的数据操作
· 支持Map/Reduce
· GridFS

MongoDB有下面三种逻辑对象

文档:mongoDB的“行”以json的形式表示(key-value的集合),称为一个document(文档),例如{“foo”:3, “greeting”:”hello world”}。注意一个文档中的key不能重复。文档中可以嵌入文档。
集合:一组文档的集合,文档类似于关系数据库中的行而集合类似于关系数据库里的表。集合是无模式的,即集合中的文档可以五花八门,没有固定格式。
数据库:由多个集合组成
Continue reading

Posted in Database, JavaScript, NoSQL.

使用Python操作Redis

1. 安装pyredis

首先安装pip

也可以使用easy_install的方式来安装:

或者直接编译安装:

Continue reading

Posted in NoSQL, Python|R.

Linux Note – 通过ulimit和PAM来限制资源

​ulimit是Shell内建指令,可用来控制shell进程或者shell子进程使用的系统资源。限制分为硬限制和软限制两种:
-H 设置硬资源限制,硬资源限制用于控制软限制。限定一旦设置只有root用户可以增加硬限制,普通用户只能减少自己的硬限制大小。
-S 设置弹性资源限制,弹性限制用于限制具体的用户或者进程。设置后普通用户可以增加,但是不能超过硬限制大小。
如果不指定-S或者-H,那么弹性资源限制和硬限制将同时设置。
Continue reading

Posted in C|C++, Linux.

Linux Note – auditd

Linux的审计系统包括内核审计子系统和一些进程,auditd服务则是Linux审计子系统的用户空间进程。内核的审计模块将收集的审计消息发送给用户空间的后台进程auditd进行处理。在默认的情况下,审计结果会发送到/var/log/audit/audit.log文件中。如果auditd没有运行,审计消息会发送给rsyslog。
audit_components
(图片来源:http://doc.opensuse.org)
审计消息的来源主要有两方面:
a).内核、应用程序(audit-libs-devel提供的API)。
b).系统管理员添加的审计规则,匹配规则的事件都将被记录下来。
Continue reading

Posted in C|C++, Linux.

Scala Note – 运算符和转义

scala的运算符

(1).Scala 没有实现任何操作符,所有的操作符运算都是对方法/函数的调用。
如 1+2 实际上是调用了.+()这个方法 即1.+(2)
a:b是b.:(a)的方法调用
在具体的调用中,调用+实际上包含了+的各种类型参数的重载,所以直接可以使用。
(2).前缀后缀运算符是一元操作,而中缀运算符是二元操作。
(3).操作符优先级
表达式的读取和执行并不依赖于顺序,更关键是操作符固定的优先级
顺序如下:
特殊字符 > */% > +- > : > =! > <> > & > ^ > | > 其他字母 > 赋值操作符
scala还支持 *** +-+之类的操作符重载,其优先级以第一个符号为主。
*=等带等号的运算符重载,会被认为是赋值运算符而具有最低的优先级。
m*=(n+5) 等价于 m*=(n+5)

scala的转义

\b \u0008 退格
\t \u0009 制表符
\n \u0004 换行
\f \u000c 换页
\r \u000d 回车
\” \u0022 双引号
\’ \u0027 单引号
\\ \u005c 反斜杠

Posted in Dev, Java|Scala.

Scala Note – 数组和集合

1. Mutable size array – arraybuffer

Continue reading

Posted in Dev, Java|Scala.

从Oracle到MySQL传输表数据

今天有一个需求,要把一个500W行的表传输到一个MySQL数据库中。有OGG和阿里楼大大的工具(见anysql.net)两种比较好的解决方法。这里我也简单得写了一小段python代码来实现这种简单的需求。
方法:Oracle -cx_Oracle lib-> Python -MySQLdb lib-> MySQL
常见类型对应如下:
number(12) – long – decimal(12)
date – datetime – datetime
varchar2(20) – str – varchar(20)
Continue reading

Posted in MySQL, Oracle, Python|R.