小重山

昨夜寒蛩不住鸣

Run Envjs-site on Local

As the envjs site http://www.envjs.com/ expired, and I want to access the doc and guides of envjs, I will setup a local envjs-site server.

First I need to download appengine java sdk with version 1.2.1, from maven repository http://mvnrepository.com/artifact/com.google.appengine/appengine-java-sdk/1.2.1, as it does not exist on google appengine official site.

Then I need to clone or download envjs-site project, and put it under /opt/webapps/

Then I need to modify the dev_appserver.sh, add

--jvm_flag=-Dappengine.user.timezone=UTC

to the java command at last line.

Run it on local:

sudo dev_appserver.sh --address=0.0.0.0 path-to-envjs-site Done.

Resolve a Xcode/iOS License Problem

Throw a exception which message is

Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.

when use git or other commands, type

sudo xcodebuild -license

in terminal, and then agree the license.

Done.

Run Jenkins on Jetty

Download jetty Download jenkins.war

copy the jenkins.war into jetty’s webapps

Create jenkins.xml in webapps, content:

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
    <Set name="contextPath">/jenkins</Set>
    <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/jenkins.war</Set>
    <Get name="securityHandler">
        <Set name="loginService">
            <New class="org.eclipse.jetty.security.HashLoginService">
                <Set name="name">Jenkins Realm</Set>
                <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
            </New>
        </Set>
    </Get>
</Configure>`

*Otherwise you’ll encounter the no LoginService error.

Startup the jetty is very simple.

Usergrid Usage Notes

首先是 clone master 代码

git clone https://github.com/apache/incubator-usergrid.git build

mvn clean install -DskipTests=true

之后就可以到 stack 目录下去启动了

cd launcher; java -jar target/usergrid-launcher-*.jar

后台管理界面, 到 portal 中去

./build.sh dev

即可

但 usergrid-launcher 报 cassandra jamm 相关的错误, 一种方式是可以在上面的启动命令中加参数

java -javaagent:../rest/target/ROOT/WEB-INF/lib/jamm-0.2.5.jar -jar target/usergrid-launcher-*.jar

目前是发现在 rest 中的 WEB-INF 下有 jamm 的 jar

另一种就是改 launcher 目录下的 launch 脚本, 向 JVM_OPTS 中加上面的参数, 再使用 launch 脚本来启动应用

启动时, 除了第一次勾选 Initialize Database on Start, 以后启动时都不要勾, 不然前面创建的数据就全没了

另外, 启动时也可以加 -db, -init option 来指定是 Start Database 还是 Initialize Database, 这个详细情况只能看源代码了, 查看 launch 的 pom.xml 找到 main class 跟进去看就可以, 我就懒得把类名写在这儿了, 都还是比较简单的

客户端在使用时, (以 iOS 为例) 初始化时把自己的 stack launcher 的地址作为 initWithOrganizationId:withApplicationID:baseURL 作为第三个参数传递过去, 客户端的文档比较差。

Use Idea/Intellij to Develop Scala/Spark Project

  1. 没法忍了,电信这个臭不要脸的东西,Idea 里下载 scala, sbt 的插件实在是没法成功,一个方法那就是把两个插件的下载链接放到百度云盘里去做离线下载,再从云盘下到本地,然后从磁盘安装插件就可以了
  2. 对于外部创建的 sbt 项目,倒没必要去装个什么 idea 的 sbt plugin, 装了上面的 Idea 的 sbt 插件就够了, 打开相应项目的 .sbt 文件,会提示你导入的,之后就可以看到相应的引入的依赖了
  3. 基本上一个基本的开发环境就建起来了

Programming-language

咱家实在是记忆力差,几个快捷键先暂且记录下来:

Ctrl + x + c 退出 Emacs

Ctrl + x + f 打开文件

Ctrl + x + s 保存文件

Ctrl + c + s 打开 sml repl 如果打开 sml repl 的时候报找不到 sml, 修改 ~/.emacs 在顶上添加两行

(setenv "PATH" (concat "/usr/local/smlnj-110.75/bin:" (getenv "PATH")))

(setq exec-path (cons "/usr/local/smlnj-110.75/bin" exec-path))

虽然我对 emacs 配置的这一个个 function 不熟, 但咱也多少看得懂一点 lisp 语法, 这不就是把 PATH 环境变量 append 一个 smlnj 的 bin 路径, 再把 exec-path append 一个 smlnj 的 bin 路径嘛

进入 sml repl 后, 引入一个文件用 use, 别忘了以分号结尾

use "first.sml";


关于表达式(expression),有三个重要的问题:

  1. 语法(Syntax)
  2. 类型检查规则(Type-checking rules)
  3. 计算表达式的值的规则(Evaluation rules)

Hadoop 教程1

环境: Mac, JDK8, Maven3

  1. 下载二进制版,这种 java 代码的玩意儿就同必要从源码去编译了吧,怎么方便怎么来
  2. 先在单机上跑一下试试
  3. 在下载下来的 hadoop 目录里,创建个 input 目录

    $mkdir input

  4. 把 etc/hadoop 目录下的 xml 文件复制进去,后面使用

    $cp etc/hadoop/*.xml input

  5. 统计一下 input 目录里的文件内容匹配 ‘dfs[a-z.]+’ 的地方,结果放到 output 目录里

    $bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep input output 'dfs[a-z.]+'

  6. 查看一下 output 的内容

    $cat output/*

  7. 以伪分布式的方式玩玩,首先修改 etc/hadoop/core-site.xml:

    <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>

  8. 修改 etc/hadoop/hdfs-site.xml:

    <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>

  9. 为了能够无密钥 ssh 登录 localhost,需要生成一对 dsa 算法的加密密钥,并把公钥放到 authorized_keys 里去

    $ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

    $cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

    $export HADOOP_PREFIX=/usr/local/hadoop

    不要按官网上教程抄,HADOOP_PREFIX 中的下划线不需要转义

  10. 格式化文件系统,虽然我目前也不是太了解 HDFS

    $bin/hdfs namenode -format

  11. 以后台进程的形式启动 NameNode, DataNode:

    $sbin/start-dfs.sh 然后就可以打开 localhost:50070 查看 NameNode 了

  12. 建立 MapReduce jobs 执行必需的目录,我的用户名就是 admin:

    $bin/hdfs dfs -mkdir /user

    $bin/hdfs dfs -mkdir /user/admin

  13. 把etc/hadoop 里的文件复制到分布式文件系统中

    $bin/hdfs dfs -put etc/hadoop input

  14. 执行 example:

    $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep input output 'dfs[a-z.]+'

  15. 有两种方式查看上面的结果, 一种是先把分布式文件系统中的文件复制到本地文件系统中来再查看:

    $ bin/hdfs dfs -get output output

    $ cat output/*

    一种是直接查看分布式文件系统上的内容:

    $ bin/hdfs dfs -cat output/*

  16. 与 11 配套的, 关闭后台的 NameNode, DataNode:

    $ sbin/stop-dfs.sh

好在以前接触过 solr,这种分布式的东西了解一点,后面再慢慢把这里面每一行都确切地搞清楚做了什么事。

Terminologies

  1. 不同的报单形式及对应中文
English 中文
limit order 限价单
stop order 止损单
market order 市价单
stop limit order 限价止损单