博文

superset安装配置中的几点注意事项

先放个官网安装配置文档: https://superset.incubator.apache.org/installation.html ,网上的介绍文档虽然不少,但看来看去还不如官网的文档准确可靠,所以还是以官网文档为基础。 两种安装方式,第一种是推荐的docker,但我的机器一是不能联通外网,二是有在使用中的docker服务,不好解决冲突,所以还是换第二种,python的安装方式。 官网推荐用沙盒方式python virtualenv,但我用的是虚机试装,无所谓环境隔离。所以跳过这一步,直接上pip安装。 官网的安装步骤很简单,一共就5步: # Install superset pip install superset # Create an admin user (you will be prompted to set username, first and last name before setting a password) fabmanager create - admin -- app superset # Initialize the database superset db upgrade # Load some data to play with superset load_examples # Create default roles and permissions superset init # To start a development web server on port 8088, use -p to bind to another port superset runserver - d 实际安装就是第一步: pip install superset 但实际过程中还是要解决不少问题,我还记得的有: 升级pip到最新版本,否则有些module安装不上 如果访问外网源有问题,想用pip指定内网源的话,加--trusted-host和-i参数: # pip install --trusted-host mirrors.idc.公司内网.com -i http://mirrors.idc.公司内网.com/pypi/web/simple superset  需...

centos上安装cpp11编译环境

先装gcc: [root@localhost ~]$ yum install gcc ... ... 验证版本: [root@localhost ~]$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper Target: x86_64-redhat-linux Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-r...

安装testlink遇到的大坑

    昨天想试用一下testlink。     之前看网上的文档就发现它的安装文档已经很久没更新了,看官方论坛上也是一堆的吐槽文档问题,但人家就是我自巍然不动╮(╯▽╰)╭     正所谓没有问题创造问题也要上!于是还是去官网上下了安装包和文档,开干。     文档第一个要求就说web服务器、PHP和数据库的问题,并推荐用xampp这样的套件。我一是对套件本能地不信任,二是怀疑套件和它自己都飞速地在升级,但是安装文档N久不升级,这样用靠谱么?所以俺做了第一个错误的决定:不用套件,自己来装依赖环境。     细节就不说了,总之花了点儿时间把apache2、php7、mysql5.7都给装上了,然后又想着testlink会比较费空间吧,于是又把mysql默认数据存放的位置给改到了一块单独的磁盘上,顺手改了root密码和访问权限...     然后照着testlink安装文档,解压安装包,放到web的htdocs目录下,打开http://hostname/testlink...还不错嘛,没碰到php版本不对之类的破事儿,页面打开得很顺利,选安装,再选同意用户协议,开始检查前置条件...嗯,mysql数据库也找到了,挺顺利,只有最后报有两个目录找不到,于是按照所要求的去创建了两个目录,并给赋了777,再继续,输入mysql的root和密码,点继续...悲剧了,报无法建立数据库连接@_#     从这里开始了昨天一下午的悲惨经历。当时想mysql都找到了,数据库连接这算个事儿啊!先想是不是远程访问的原因,排除;又想是不是域名解析的问题,排除;再想是不是PHP无法正确解析,写了个简单的连mysql的php,丢上去,再用浏览器访问,没问题;再想是不是用户的原因,换个mysql账号,排除...这就很尴尬了!我从浏览器所在的机器,mysql -h -u -p明明是访问得很溜的啊,一头问号啊!     于是上网求助...结果不搜不知道,一搜,全是因为这个问题在求助的帖子,而且几乎没有人找到解决办法。   ...

go用xorm去update数据库的一个坑

    最近写API服务比较多,一般试验性质的用python flask简单又快,需要稍微考虑点儿并发性能的,那还是用go来写咯。API服务一般都要落盘写库,随便选了个xorm来写mysql数据库。     但是最近碰到一个有点儿奇怪的现象,调用端报告偶有数据没有更新的现象。回头去查代码,写库这段逻辑如下:  if _, err = session.Where("col1 = ?", d.col1).Update(d); err != nil {     glog.Infof("has result col1:%s updated!", d.col1)     return }     一眼就能看明白的一个调用,看不出有啥毛病啊-_-b     试图重现也没能重现,于是只能加debug log以图能保存下次发生时的事发现场。结果过了一个月果然又出现了。确实是这段代码更新表中数据时出错了。     后来搜xorm文档时发现了这么一个Q&A: https://www.kancloud.cn/kancloud/xorm-manual-zh-cn/56018 我的struct里面包含bool类型,为什么它不能作为条件也没法用Update更新? 答:默认bool类型因为无法判断是否为空,所以不会自动作为条件也不会作为Update的内容。可以使用UseBool函数,也可以使用Cols函数 engine . Cols ( "bool_field" ) . Update ( & Struct { BoolField : true } ) // UPDATE struct SET bool_field = true       深受启发啊!我出问题的数据虽然不是bool,但是0!于是又去查了下文档,发现xorm的帮助文档在一个角落里果然提到了bool false, int 0, 空nil都 默认不会更新 !好坑啊!这种update默认方式的设计简直是反人类啊!    ...

flask/post+jsonschema报错:None is not of type 'object'

用python的unittest,对flask的post测试,testcase如下: def test_post_new_testCheckingService ( self ): rsp = self .app.post( '/test' , data =json.dumps(json_new)).data data = json.loads(rsp) self .assertEquals( 1 , data[ 'return_code' ]) 但是报错: [jenkins_bot@A04-R08-I53-67 testChecking]$ python test_testCheckingService.py ...WARNING: input json is invalid: (None is not of type 'object' Failed validating 'type' in schema:     {'description': 'POST request coming in test service API',      'properties': {'note': {'description': 'The note for the operation',                              'type': 'string'},                            ...详细的jsonschema定义省略...      'title': ...

解决jira的catalina.out日志文件过大的问题

利用linux/unix系统一般都有的logrotate来解决: [root@A02-R12-I167-39-6X25S62 logs]# which logrotate /usr/sbin/logrotate [root@A02-R12-I167-39-6X25S62 logs]# echo > /export/atlassian/jira/logs/catalina.out [root@A02-R12-I167-39-6X25S62 logs]# vi /etc/logrotate.d/jira-tomcat.conf /export/atlassian/jira/logs/catalina.out {         rotate 5         size 20M         nocompress         notifempty         missingok         copytruncate         su jira jira } [root@A02-R12-I167-39-6X25S62 logs]# logrotate --force /etc/logrotate.d/jira-tomcat.conf [root@A02-R12-I167-39-6X25S62 logs]# ls -altr drwx------ 2 jira jira 12288 May 15 11:50 . rw-r---- 1 jira jira 4784 May 15 11:50 catalina.out rw-r---- 1 jira jira 69566 May 15 11:50 catalina.out.1

一个repo关联多个git

    其实挺简单的,网上说的改什么.git/config文件并不准确,还挺有误导性的。过程简单如下。怎么装git就不说了。     使用多个git账号的关键是需要让git的ssh认证能同时支持多个git。我们知道git认证是通过.ssh/id_rsa密钥来进行的。而如果同时用多个git,那么必然需要生成多个密钥对。所以生成密钥的时候,不能都用默认的密钥对的名字id_rsa,需要加以区分,比如加后缀名: # ssh-keygen -t rsa -C "your_email@youremail.com"     我们一般是一路回车按到底,但对于多个git,在屏幕回显生成密钥对文件名时,需要自定义一下,否则都用默认的id_rsa,那么后面的就会覆盖掉前面的 >Generating public/private rsa key pair. Enter file in which to save the key  (/Users/your_user_directory/.ssh/id_rsa):<press enter>     这里不要用默认的文件名,自定义一个新的文件名,比如输入 /Users/your_user_directory/.ssh/id_rsa _github     后面的可以一路回车按到底     同理,下一个git需要生成密钥对的时候,也在这里改一下默认文件名,比如 /Users/your_user_directory/.ssh/id_rsa _company     但是这样有个问题,回头做push/pull的时候,因为git默认是去找.ssh/id_rsa,所以找不到id_rsa会报认证失败。所以还必须让git知道哪个git应该用哪个密钥。还是在.ssh目录下,有个config文件,编辑此文件,有几个git就加几个section。注意是改./ssh下的config,不是像很多网上文章说的那样改.git下的config。config的例子: Host company   HostName git.company.com ...