这俩软件直接brew install安装的。
opam需要配置
opam init 初始化opam目录,~/.opam
.bash_profile里添加. ~/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true
设置一些环境变量。
vim ~/.ocamlinit
添加
let () =
try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH")
with Not_found -> ()
;;
这些配置提示,在执行opam init 的时候会显示。
opam switch可以查看已经安装的版本编译器,并可以切换
$ opam switch 4.01.0
$ eval `opam config env`
安装utop
opam install core utop
然后会装特么的一堆包。
再次配置.ocamlinit
就是初始导入,以后启动解析器的时候就不用导入了
#use "topfind";;
#thread;;
#camlp4o;;
#require "core.top";;
#require "core.syntax";;
open Core.Std;;
可以用utop愉快的玩耍了
Read more...
mac os安装f#
安装管网提示一步步安装的。还有个mono的东西,没用。
brew update
brew install openssl
第二部下载安装包,点击安装。安装完目录添加到path。
创建一个hello world例子工程
Read more...
mkdir hwapp
cd hwapp
dotnet new --lang f#
运行例子
dotnet restore
dotnet run
就输出f#版的hello world了
使用druid解析sql
那些开源的都不太靠谱,同事推荐这个druid解析sql。试了一下确实给力。
打包方法:
git clone https://github.com/alibaba/druid.git
mvn install -Dmaven.javadoc.skip=true -Dmaven.test.skip=true
会安装到.m2目录,copy一个项目用
target/druid-1.0.27-SNAPSHOT-sources.jar
示例代码:
Read more...
import java.util.*;
import com.alibaba.druid.stat.TableStat;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor;
import py4j.GatewayServer;
public class SQLParser {
public static List get_tables(String sql){
MySqlStatementParser parser = new MySqlStatementParser(sql);
List statementList = parser.parseStatementList();
SQLStatement statemen = statementList.get(0);
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
statemen.accept(visitor);
Map result = visitor.getTables();
System.out.println("Tables : " + result);
List list = new ArrayList<>();
for ( TableStat.Name name : result.keySet() ) {
System.out.println( name );
list.add(name.getName());
}
return list;
}
public static void main(String[] args){
GatewayServer gatewayServer = new GatewayServer(new SQLParser());
gatewayServer.start();
System.out.println("Gateway Server Started");
}
}
打包命令:
javac -cp .:./py4j0.10.4.jar:./druid-1.0.27-SNAPSHOT.jar:$CLASSPATH SQLParser.java
java -cp .:./py4j0.10.4.jar:./druid-1.0.27-SNAPSHOT.jar:$CLASSPATH SQLParser
mysql语法解析之使用jsqlparser
上一篇使用antlr解析的,发现不行,官方提供的语法文件bug太多,多到不能用的程度,还是得用专门的开源库。这次选jsqlparser了。
从github下载一个源码,mvn package 打一个jar包。将jsqlparser-0.9.6.jar拷贝到工作目录。
Read more...
import java.util.*;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import net.sf.jsqlparser.statement.select.Select;
import net.sf.jsqlparser.util.TablesNamesFinder;
public class ParserTest {
public static void main(String[] args){
System.out.println("Hello World!");
String sql = "select NVL( (SELECT 1 FROM DUAL), 1) AS A from TEST1,test";
try{
Select selectStatement = (Select) CCJSqlParserUtil.parse(sql);
TablesNamesFinder tablesNamesFinder = new TablesNamesFinder();
List tableList = tablesNamesFinder.getTableList(selectStatement);
for(String s : tableList) {
System.out.println(s);
}
}catch(Exception e){
String sql1 = " TEST1";
//e.printStacktrace();
}
}
}
这是调用解析table name的代码。
编译运行
javac -cp ./jsqlparser-0.9.6.jar ParserTest.java
java -cp .:./jsqlparser-0.9.6.jar:$CLASSPATH ParserTest
还挺好用。
用antlr生成Python语言的mysql语法解析器
做个项目要解析mysql sql语句,使用开源的库发现问题很多,不太适合。推荐的几个项目都是项目里边集成的,语言也不符合,太麻烦。只能自己搞了,选择antlr的原因是官方提供mysql解析的语法,做起来比较简单。
安装:
curl -O http://www.antlr.org/download/antlr-4.5.3-complete.jar
然后写一个shell脚本antlr,用来执行命令
#!/bin/bash
java -cp .:./antlr-4.5.3-complete.jar:$CLASSPATH org.antlr.v4.Tool $*
从https://github.com/antlr/grammars-v4.git clone一些已经写好的sql语法文件。
生成Python版的解析代码。
./antlr -Dlanguage=Python2 MySQLLexer.g4
./antlr -Dlanguage=Python2 -visitor MySQLParser.g4
第二个加参数是为了生成MySQLGrammarVisitor。
然后参照例子写了个函数包起来就能用。这工具做的好,原因就是不用研究太深就能用。
Read more...
ubuntu挂载nfs共享目录
freenas也支持nfs共享,配置完后,在ubuntu上不知道怎么挂载,得安装软件支持。
sudo mount -t nfs 192.168.0.88:/mnt/MyNAS /tmp/aaa
会不成功
mount: wrong fs type, bad option, bad superblock on 192.168.0.88:/mnt/MyNAS,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount. helper program)
看了一下sbin目录确实没有nfs支持的文件。网上查,找到个showmount命令,执行发现没这个命令sudo apt-get install nfs-common安装。
安装完那个文件也有了。
showmount -e 192.168.0.88
Export list for 192.168.0.88:
/mnt/MyNAS 192.168.0.0
然后就没问题了。
sudo mount -t nfs 192.168.0.88:/mnt/MyNAS /tmp/aaa
就成功了
Read more...
mac 安装bochs
之前搜索过,以前在mac上搞过gdk还是啥的对x11阴影很大,这次想着只管搞一下,开虚拟机太费劲了。
mikecoder.cn/?post=116
安装这篇文章搞定了,备份一下。
brew install sdl
./configure --enable-ne2000
--enable-all-optimizations
--enable-cpu-level=6
--enable-x86-64
--enable-vmx=2
--enable-pci
--enable-usb
--enable-usb-ohci
--enable-e1000
--enable-debugger
--enable-disasm
--disable-debugger-gui
--with-sdl
--prefix=$HOME/opt/bochs
make & make install
export BXSHARE="$HOME/opt/bochs/share/bochs"
export PATH="$PATH:$HOME/opt/bochs/bin"
就好了。
Read more...
python调用selenium模拟浏览器请求网页
selenium安装
去官网下载一个jar包,然后运行:java -jar selenium-server-standalone-2.53.1.jar
然后写代码就行了,会打开一个浏览器窗口。看看有办法静默打开不,好像phantomjs模式可以,这个还要安装。
Read more...
# coding: utf-8
# from selenium import selenium
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.phantomjs.webdriver import WebDriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Firefox()
# browser = WebDriver()
browser.get('http://baidu.com/')
print browser.title
f = browser.find_element_by_id('kw')
f.send_keys(u'谷歌')
f = browser.find_element_by_id('su')
f.click()
WebDriverWait(browser, 10).until(EC.title_contains(u"谷歌"))
print browser.title
# browser.quit()
CodeMirror sql补全的关键字排序
这个开始的时候想解决的,查文档搜索都没有,就没搞。现在有时间了准备搞搞,发现就一行代码就行了。
sql-hint.js文件
CodeMirror.registerHelper("hint", "sql", function(editor, options) {这里边。
addMatches()结果都存在result了,然后对result进行排序就搞定了。
result = result.sort();
一行代码。
Read more...
react-native报错“Type Error: Network request failed”
之前没有这个错“Type Error: Network request failed”,然后之后有了,很纳闷。
通过查找发现是ios9之后请求必须走https不然系统就给你禁掉了。解决办法
Info.plist文件里修改
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
这个官方网站也有提,“Running On Device”这节。
Read more...