Skip to main content

Mysql 工具集

1. 查询所有的表名

select column_name from information_schema.columns where table_schema=’‘ and table_name=’

2. dump/restore

mysql -uroot -h -p -P3306   < tbike.sql;
mysqldump -h -P3306 -uroot -p  > tbike.sql;

谈谈我的博世hackathon感受

一年一度的博世黑客马拉松要开始了,极客圈的小伙伴们都在跃跃欲试。好些个朋友都来问我这个参加过的选手,诸如xdk是啥啊,容易上手吗等问题,我干脆写到我自己的技术日记,要看随取。这里的确要吐槽下博世,的确宣传力度和技术社区培养不够,资料的确难找,不像STM32啊,Arduino啥的开源智能硬件,有强大的社区支持,例程和开发人员非常多。这也让xdk这个好东西让极客们有些陌生感。

粗暴的说,XDK是博世推出的IoT平台开发套件,它包含一个高度集成化的硬件终端,一些中间件,IDE和云平台。XDK秉承德国人一贯的严谨性,慢工出细活,东西是真TMD的精致,耐操。为啥这么说呢,大家都来IoT领域布局,所以都得有自己的独门绝技吧,比如,阿里拿手活儿是云计算,腾讯么靠强大的社交能力,这不Robin Li 要转型,祭出哥要扛起AI大旗杀手锏,结果一瓶矿泉水披头而下。那么德国博世的杀手锏则是传感器,传感器,传感器!

这个小盒子就是xdk的终端设备,它不是原型,它是一个实实在在的产品,而且是工业级的!工业级什么概念呢,自行百度吧。按产品设计的苛责级别是这样的:军工级别>车规级别>工业级别>消费电子级别。哥也参加过不少类似编程活动,现场给各种传感器模块,都是几块到几十块钱的廉价传感器,什么光敏电阻光传感器,PIR人体传感器,温湿度等等,我觉得和这个比起来呢,就是小孩玩具与成人级电子产品的差距,那些只能拿来玩一下丢掉,就是一个字,飘….。这个小盒子里集成了微机电加速度计,磁力计,陀螺仪,以及温湿度,压力,声光的传感器,还有2.4G蓝牙和WIFI互联方案,天线,卡槽和锂离子电池。这些都在一个指甲盖大小的电路板上集成!我比赛那会儿问专家,这么小,那诸如温度传感器自身的热量导致的数据准确怎么保证呢?专家说,我们有专门的补偿算法,可以直接用。请收下我的膝盖,瑟瑟发抖。这玩意儿除了贵,没其他毛病。我估计这个设备要卖一到两千元,因为它是面向工业级的。随贴随用,低功耗。

另外我简单看了下,板子上跑的应该是FreeRTOS,USB上电后,自动识别设备,直接可以和PC上的开发套件通信。PC的开发套件呢,其实就是基于eclipse CDT做的插件开发,细心的德国人几乎把你能想到的用户需求都给你做了,开发套件里面集成好了交叉编译链,烧写和调试等工具,而且包含大量的例程,每种外设都有例程,现场编程基本只需要把例程代码给copy出来通过编译,然后简单配置下外设即可一键烧写,开始调试,寄存器watch,断点等等,十分方便。这里截几个图给大家体验下。

开发时,你的数据总得上云啦。去年呢,博世时选择了物联网供应商sigfox,sigfox会发给你一个基于Arduino的EV板,然后给你提供了一个USB doogle的模拟基站,把Arduino和xdk板随便找几个rxtx杜邦线一戳,数据就来了,Arduino随便把示例程序改一下,烧一下,就可以和USB doogle的模拟基站通信了。PC上的模拟基站呢,其实很简单,用nodejs写的一个中转程序,通过浏览器配置好后,数据自动会被模拟基站利用PC的网络以HTTP方式发送出去。你只要配置发送目标例如:http://youip:port/youapi?name=$0&….$1..$2,用占位符就把数据传出去了。一次http get请求可以传152字节(记不太准确了)。今年好像没用这个了,这让你发挥空间更大,请极客们自行携带你的爱板,随便玩。

至于云端嘛,博世的云端时和微软Azure合作的,部署在微软云上,叫Bosch IoT Suite,这个其实你可以用可以不用,如果你对服务器熟悉,你完全可以随便把你自己的阿里云,腾讯云啥的http服务搞一个在那里,写几行php啊,nodejs或者servlet就行了。坦白讲,微软云的东西吧,用户接口很不好,不符合中国人的使用习惯,资源入口很难找,中文网站像机器翻译的一样。

我觉得博世的赛题也挺好的,可以充分发挥其传感器的作用。这里给小伙伴们点建议,比如电梯场景,可以利用加速度计检测电梯的运行速度,因为电梯可以调节运行加速度,商场等场所就很快,住宅楼则慢很多,可以用陀螺仪检测意外的轿厢抖动,还有可以利用光线传感器检测开门关门次数啊啥的,再检测些温湿度等工作环境啥啥。随便组合一下,做个电梯运行健康估值啊,异常情况预警啊,老化预测啊等等。我保证你带1万奖金回家。哈哈。。。。

(XDK_Getting_Started_v2 附上一份getting started指南,拿走不谢)

 

 

Python时间函数

在用Python编写程序时经常会遇到需要求解一个函数运行时间的情况,发现一个利用Python语言特性编写的比较巧妙的计算方法,这里记录和大家分享一下:

def time_function(f, *args):
    """
    Call a function f with args and return the time (in seconds) that 
    it took to execute.
    """
    import time
    tic = time.time()
    f(*args)
    toc = time.time()
    return toc - tic

jobconverter文档详解

版本: 4.2.0
https://github.com/sbraconnier/jodconverter/wiki/Getting-Started

概览

Jodconvert , 是一个java的文档转换器, 利用 openoffice 或 libreOffice 来进行文档格式转换.

其支持的格式如下:

对于html格式的特殊注意:

  • HTML可以用作输入格式,但您不应期望OOo像Chrome或IE那样正确地呈现复杂的网页。 仅适用于简单和“打印机友好”的网页。
  • HTML可以用作输出格式,但是所有其他格式总是生成单个输出文件,HTML可以生成多个文件。 实际上,除了HTML文件之外,输入文档中包含的任何图像也将保存在同一目录中。 这需要您的代码格外小心,特别是在Web环境中。

应用场景

  • 作为java类库使用
  • 作为命令行工具使用
  • 作为web应用使用

添加依赖

Maven

<properties>
    <jodconverter.version>4.1.1</jodconverter.version>
</properties>
<dependencies>
   <dependency>
      <groupId>org.jodconverter</groupId>
      <artifactId>jodconverter-local</artifactId>
      <version>${jodconverter.version}</version>
   </dependency>
</dependencies>

Gradle

ext {
    jodconverterVersion = 4.2.0
}
compile "org.jodconverter:jodconverter-local:$jodconverterVersion"

使用要求

  • java 1.7 及以上
  • openoffice 或 libreOffice 的稳定版本

参数配置

workingDir
该属性用来设置office临时文件配置目录。每个office进程启动时,一个文件配置目录将会被创建。当使用InputStream/OutputStream来转换时,这个目录也会被创建。默认由指定的路径为java.io.tmpdir

templateProfileDir
为了避免进程被中断或者用户使用了另一个OOo实例,LocalOfficeManager会为OOo进程创建一个临时配置文件目录。使用这个属性,你可以提供一个包含个性化设置的临时配置文件目录。OfficeManager会将以其为模板,来生成临时配置文件目录。所以当我们创建新的OOo实例时,都会使用相同的配置。默认情况虾,这个临时的配置文件由OOo使用默认配置来创建,并且其依赖于 -nofirststartwizard这个命令选项。

killExistingProcess
该属性能够指定,当一个包含相同connection string的office进程启动,是否杀死一个已经存在的office进程。默认为true.

processTimeout
当尝试调用一个office进程时(开始/中止),该属性可以设置超时时间,单位为毫秒。默认为120000(2 minutes)

processRetryInterval
每当尝试调用一个office进程时(开始/中止)的间隙,可用该属性设置延迟,单位为毫秒。默认为250(0.25 seconds)

taskExecutionTimeout
该属性设置执行一个任务的最大时间,若超过这个时间任务仍未执行,则当前任务被中止且执行下个任务。默认为12000(两分钟)

maxTasksPerProcess
该属性设置一个office进程在重启之前所能执行的最大任务数。默认为200个。

disableOpengl
当启动一个新的office进程时(在LibreOffice的情况下),该属性能够指定是否禁止OpenGL。如果OpenGL已经根据office进程使用的用户配置禁用,那么将不会执行任何操作。如果该属性改变,那么office进程必须重启。如果LO进程奔溃,那么你可以尝试测试该属性。默认为false

taskQueueTimeout
该属性用来设置一个任务在转换队列中的最大生存时间。如果等待时间超过最大生存时间或者有OfficeException异常抛出,则任务将会从队列中移除。默认为30000(30 seconds)

软件测试–Bug等级划分方法

测试BUG等级划分标准

  • Blocker(崩溃):阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。如:代码错误、死循环、数据库发生死锁、重要的一级菜单功能不能使用等
  • Critical(严重):系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他功能的测试。功能设计与需求严重不符,模块无法启动或调用,程序重启、自动退出,关联程序间调用冲突,安全问题、稳定性等。如:软件中数据保存后数据库中显示错误,用户所要求的功能缺失,程序接口错误,数值计算统计错误等(该等级问题出现在不影响其他功能测试的情况下可以继续该版本测试)。
  • Major(一般):功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性。如:操作时间长、查询时间长、格式错误、边界条件错误,删除没有确认框、数据库表中字段过多等(该问题实际测试中存在最多,合理安排解决BUG,解决率关系版本的优化程度)
  • Minor(次要):界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等。如:错别字、界面格式不规范,页面显示重叠、不该显示的要隐藏,描述不清楚,提示语丢失,文字排列不整齐,光标位置不正确,用户体验感受不好,可以优化性能的方案等(此类问题在测试初期较多,优先程度较低;在测试后期出现较少,应及时处理)