Code
Scala 怎样添加事件, 获得打断信号
启动 Scala 工程, 我们有时候可能需要做这样的处理: 获取打断(Interrupt )信号, 在程序关闭前做最后一些操作.
在 C 中, 我们一般可以用 signal 来实现, 而在 scala 中,我们同样有类似的机制. (more…)
启动 Scala 工程, 我们有时候可能需要做这样的处理: 获取打断(Interrupt )信号, 在程序关闭前做最后一些操作.
在 C 中, 我们一般可以用 signal 来实现, 而在 scala 中,我们同样有类似的机制. (more…)
Rust 是 Apache 基金会开的一个新坑, 简单说就是一个函数式编程的现代语言. 速度期望是和 c++ 差不多.
一个语言的实用与否, 不仅仅需要考虑语言本身(当然, 一个写起来爽的语言比一个语法糟糕的语言可能要好一千倍, 但这并不是唯一判断条件), 一些好的工具链, 社区环境等都可以让语言本身更加充满希望--或者失望.
rust 使用的是 Cargo 作为编译环境. 这是你安装好 rust 后的默认选项.
很多时候, 许多代码可以被复用, 一个好的工程组织会给人带来许多方便. 目前看来, Cargo 就是一个非常不错的工具(当然, 有些时候还是有些让人不尽如人意的)
Cargo 之于 rust, 大致相当于 cmake + make 之于 c. 我们可以在工程根目录下准备一个 Cargo.toml 文件, 里面可以写上我们想要的配置信息. 然后利用 Cargo 工具可以自动下载依赖, 编译. 此外, 我们还可以利用它发布我们的依赖等等. 总之, 这是一个包办了许多事情的一个集成工具.
本文的主旨是介绍一下库的写法, 依赖的发布和使用. (more…)
警告:
- gitlab 提供了一键安装包, 这种从 source 编译的方法并不有趣, 每次升级和改配置都极其麻烦, 它只会浪费你现在以及预期的未来的生命, 要是打算用它做生产环境, 那绝对是你的不智
- 在 gitlab 早期, 并没有那么好的条件, 因为历史原因才被迫这么做的. 本文作为历史存档, 仅作为参考, 主要目的是记录一段过去的血泪教训.
更新了下 gitlab. 留个 log. 安装可以按照说明文档 https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md, 若是6.x升级到7.14, 可以使用这个文档: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/update/6.x-or-7.x-to-7.14.md , 若7.14升级到8.0, 则可以使用这个文档: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/update/7.14-to-8.0.md. 一步一步走下去, 介绍得非常好. 本文也毫无意愿去吧内容翻译一下. 只是介绍下错误的处理. (more…)
docker 是一个非常不错的容器, 让我们可以先把程序部署在镜像中, 然后再放到某个实体机器上跑. 若一个实体机中我们使用多个容器, 我们可能需要限制一个容器占用的系统资源. 比如内存, CPU 等 (more…)
在gitlab配置完毕后,我们push一个repo,效果可能如下:
$ git push origin master:dev enjoy code, enjoy life. Total 0 (delta 0), reused 0 (delta 0) remote: GitLab: An unexpected error occurred (redis-cli returned 1). To git@xxx:root/my_project.git * [new branch] master -> dev
这儿它提示得已经足够清楚,redis有问题.不过也再也找不到其它提示了. (more…)
scala在编译&优化的时候,有时候会返回个inline warning.但是,实际上我们写代码已经不能再优化了. 比如如下这个例子:
yu:~ yu$ scala -version Scala code runner version 2.11.7 -- Copyright 2002-2013, LAMP/EPFL yu:~ yu$ scala -optimize -Yinline-warnings Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_05). Type in expressions to have them evaluated. Type :help for more information. scala> object O { Map( | "a" -> 0, "b" -> 1, "c" -> 2, "d" -> 3, "e" -> 4, | "a" -> 0, "b" -> 1, "c" -> 2, "d" -> 3, "e" -> 4, | "a" -> 0, "b" -> 1, "c" -> 2, "d" -> 3, "e" -> 4, | "f" -> 5, "g" -> 6, "h" -> 7, "i" -> 8) } warning: At the end of the day, could not inline @inline-marked method ->$extension warning: At the end of the day, could not inline @inline-marked method ->$extension warning: At the end of the day, could not inline @inline-marked method ->$extension warning: At the end of the day, could not inline @inline-marked method ->$extension defined object O
我们可以看到有个issue ,讲的就是这件事.它是12年底建立的,但一直没啥好的回答...可怜我为了关掉这个warning连带好几个其它warning都不能用了.
不过,今年五月终于有结果了.
一般情况下,我们会倾向于打开各种warning,以便规范我们的代码.不过,scala有时候有些warning也是蛮扯的.比如这么一段
$ scala -Xlint:missing-interpolator Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_05). Type in expressions to have them evaluated. Type :help for more information. scala> val key="value"; println("$key") <console>:12: warning: possible missing interpolator: detected interpolated identifier `$key` println("$key") ^ $key key: String = value
psjrs是一个做了一些修改的scala web工程, 你可以在此基础上很容易得开发出一个你要的工程.
工程基于play, silhouette 等框架. play让人可以很容易搭建一个web service, 而silhouette则提供了用户认证相关的服务. 此外, 我还对配置文件,文件内容进行了一些定制, 使得你可以更容易得组织内容.