xummer 发布的文章

Android 调用系统相机

最近碰到一个android 调用系统相机拍照问题
调用相机代码网上随便找到很多

    Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    Uri uri = Uri.fromFile(new File(imagePath));
    intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);
    startActivityForResult(intent,RESULT_CAPTURE_IMAGE);

定义一个文件路径,new File,要确保文件夾都存在
然后果在onActivityResult去取文件
在这一步碰到一个奇葩问题,小米4手机拍完点确认后,取到的文件是空的
要等个几秒钟才有,其它手机并没有这个问题
最后用Observable.interval间隔时间去取直到取到的方案解决问题
不用Rx也可以用for等循环去取
附个代码片段):

    subscription = Observable.interval(500L, TimeUnit.MILLISECONDS).map(new Func1<Long, Long>() {
                public Long call(Long aLong) {
                    long size = 0L;
                    if (file.exists() && file.length() > 0L) {
                        size = file.length();
                    }
                    return size;
                }
            }).filter(new Func1<Long, Boolean>() {
                public Boolean call(Long aLong) {
                    return aLong != 0L;
                }
            }).compose(activity.<Long>bindToLifecycle()).observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io()).subscribe(new Action1<Long>() {
                public void call(Long aLong) {
                    //处理逻辑
                    subscription.unsubscribe();
               });

python git webhook

    #!/usr/bin/python
    # coding=utf8
    
    from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
    import commands
    import json
    
    PORT_NUMBER = 8080
    WEB_ROOT = '/www_root/web_root'
    PULL_COMMAND = ''.join(['cd ', WEB_ROOT, ' && git pull'])
    
    
    class myHandler(BaseHTTPRequestHandler):
        def do_GET(self):
            if self.path == "/git/pull":
                self.git_pull()
                return
    
            if self.path == "/test":
                self.send_response(200)
                self.send_header('Content-type', "application/json")
                self.end_headers()
                self.wfile.write("service is runing!")
                return
    
        def do_POST(self):
            if self.path == "/git/pull":
                self.git_pull()
                return
    
        def git_pull(self):
            (status, output) = commands.getstatusoutput(PULL_COMMAND)
            obj = [{'status': status, 'output': output}]
            encodedjson = json.dumps(obj)
            self.send_response(200)
            self.send_header('Content-type', "application/json")
            self.end_headers()
            self.wfile.write(encodedjson)
    
    try:
        server = HTTPServer(('', PORT_NUMBER), myHandler)
        print 'Started httpserver on port ', PORT_NUMBER
    
        server.serve_forever()
    
    except KeyboardInterrupt:
        print '^C received, shutting down the web server'
        server.socket.close()

ionic安装笔记

近来心血来潮想弄APP玩,看到了ionic觉得不错,所以想装来试试
可不想装一个小框架却装了我两天
主要原因是因为咱国家的长城过于坚固
在家里其实还是挺简单的,挂上vpn

$ npm install -g cordova ionic

搞定,说的虽然轻松,其实却不然,就不说没挂vpn时的各种坑了
提醒一下,在我装的时候和nodejs的版本还有关系,最终挂vpn+node版本退到0.10.38安装成功。

但是,但是,但是在公司就太坑了,因为公司的网络有防火墙vpn上不了
使我折腾了两天才把ionic给装上去
起初当然什么淘宝镜象啊cnpm啊什么的试了无数次
原因为他,网络问题,虽然用淘宝镜象ionic主包能从镜象下载,但他的依赖包还是从原始源进行下载而且还是https协议
网上有许多把https改成http关闭使用ssl等试多操作都试了
后面还用burpsuite作反向代理【均是然并卵】!
最后还是通过更npm缓存的文件包中npm-shrinkwrap.json文件才解决!

过程步聚:
据网上教程安装到cordova;cordova基本都能成功
1、安装cnpm源指向淘宝镜(如之前已用便略过)

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

2、安装ionic

$ cnpm install -g ionic

此时便各种提取错误,解压败;
3、失败后找到缓存文件夹

$ cnpm config ls -l

看配置里的缓存文件夹在哪,一般在用户文件夹下的.cnpm
4、找到ionic文件夹下1.6.1[版本号]下的package.tgz用7zip打开,找到里面的npm-shrinkwrap.json导出用编辑器把里面的包地址全部替换为http://registry.npm.taobao.org,保存后再替换到包里
5、然后删除缓存文件夹下除ionic文件夹的其它文件,再次安装ionic

$ cnpm install -g ionic

最后成功了,真是各种坑啊,vpn什么的代理什么的卖了我好几十两顿饭都没了。哭瞎!

前端表格的合并行和合并列

虽然现在早已没人用表格进行布局,但是并不代表table标签被放弃,反而在前端布局中许多行列数据的呈现还是使用table更为合适,特别是有行列合并的情况下尤为需要使用表格
TD标签有个两个属性,分别是rowspan和colspan分别代表跨行数和跨列数,指定他们的值便可实现单元格的合并

    <!DOCTYPE html>
    <html>
        <head>
            <title></title>
            <style type="text/css">
                .table td {
                    text-align: center;
                    width: 180px;
                    border: #0CC 3px solid;
                }
            </style>
        </head>
        <body>
            <table class="table">
                <tr>
                    <td>一行一列</td>
                    <td>一行二列</td>
                    <td>一行二列</td>
                </tr>
                <tr>
                    <td>二行一列</td>
                    <td>二行二列</td>
                    <td rowspan="2">一行三列,二行三列</td>
                </tr>
                <tr>
                    <td>三行一列</td>
                    <td>三行二列</td>
                </tr>
                <tr>
                    <td>四行一列</td>
                    <td colspan="2">四行二列</td>
                </tr>
            </table>
        </body>
    </html>

一行一列 一行二列 一行二列
二行一列 二行二列 一行三列,二行三列
三行一列 三行二列
四行一列 四行二列