上一篇使用antlr解析的,发现不行,官方提供的语法文件bug太多,多到不能用的程度,还是得用专门的开源库。这次选jsqlparser了。 从github下载一个源码,mvn package 打一个jar包。将jsqlparser-0.9.6.jar拷贝到工作目录。  

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 还挺好用。

Continue

做个项目要解析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。   然后参照例子写了个函数包起来就能用。这工具做的好,原因就是不用研究太深就能用。

Continue

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 就成功了

Continue

之前搜索过,以前在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" 就好了。

Continue

selenium安装 去官网下载一个jar包,然后运行:java -jar selenium-server-standalone-2.53.1.jar 然后写代码就行了,会打开一个浏览器窗口。看看有办法静默打开不,好像phantomjs模式可以,这个还要安装。    

# 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()

Continue

这个开始的时候想解决的,查文档搜索都没有,就没搞。现在有时间了准备搞搞,发现就一行代码就行了。 sql-hint.js文件 CodeMirror.registerHelper("hint", "sql", function(editor, options) {这里边。 addMatches()结果都存在result了,然后对result进行排序就搞定了。 result = result.sort(); 一行代码。

Continue

之前没有这个错“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”这节。

Continue

搞了两三次升级了,各种问题,都不记得了。   npm install --save react-native@0.29 然后提示 “UNMET PEER DEPENDENCY react@15.0.2”。 npm WARN react-native@0.29.1 requires a peer of react@~15.2.0 but none was installed.   然后根据提示升级react的版本,npm install --save react@~15.2.0。 然后又执行了一遍:npm install --save react-native@0.29 就好了。   第二部执行:react-native upgrade,会替换很多配置等文件。   第三步:rnpm link 导入资源

Continue

master安装

curl -L https://bootstrap.saltstack.com -o install_salt.sh
sudo sh install_salt.sh -P -M
这个也会在机器上安装minion.

minion安装
curl -L https://bootstrap.saltstack.com -o install_salt.sh
sudo sh install_salt.sh -P
安装完salt-key --list-all是空的 然后修改配置文件/etc/salt/master和minion master interface: 0.0.0.0 minion master: 127.0.0.1 重启服务 /etc/init.d/salt-master restart /etc/init.d/salt-minion restart 然后
salt-key --list-all Unaccepted Keys:就有了
salt-key --accept-all是接受所有,salt-key --accept=<key>是接受一个。


艹 麻痹的写到这,多人反馈发布系统不能用了,,我在发布系统机器上装的,装完,建立的发布系统用的虚拟环境不能用了。
然后我重新装了一个虚拟环境,安装依赖还发现个问题,然后才好了。
这个需要注意卧槽

salt '*' test.ping 返回true 成功
 
 
 

Continue

本来没想在mac上搭建开发环境,但是我搜索php安装的时候。发现有mac安装就看一下麻不麻烦。然后发现自带php5,并且自带Apache,卧槽那还用啥虚拟机。   安装方法和官网还是有出入的。我大体看了一下配置,没有盲目修改。 sudo vim /private/etc/apache2/httpd.conf 将LoadModule php5_module libexec/apache2/libphp5.so注释去掉。另一个,没搜到。 Include /private/etc/apache2/other/*.conf这个里边有个php5 的conf,将下边的也插入进去了,所以不用添加。 项目的根目录是/Library/WebServer/Documents. 插入个<?php phpinfo(); ?>,成功。 重启apache, sudo apachectl restart   rewrite_module模块开启 LoadModule rewrite_module libexec/apache2/mod_rewrite.so AllowOverride All

Continue