发布新日志

  • 如何让Fiddler模拟重复发送请求多次

    2018-10-12 17:27:33

  • 手把手用Monkey写一个压测脚本

    2018-06-04 15:45:11

    https://segmentfault.com/a/1190000008491332
    手把手用Monkey写一个压测脚本


    https://segmentfault.com/a/1190000008300644
    移动APP测试之Monkey Test 运用
  • JMeter-Test Fragment

    2018-01-14 17:35:15

    不能直接执行,必须通过逻辑控制器中的Include_Controller 或者模块控制器来调用。添加下级组件的方法与线程组相同(可以简单理解为不能执行的线程组)。

    在模块化脚本构建中会很好用。比如:将登录脚本保存为一个Test Fragment, 然后就可以在其他所有需要登录的测试脚本中调用这个Test Fragment,而不需要在每个测试脚本中都再写一个登录过程。(特别是测试脚本多,而登录脚本有变动的时候,只需要修改登录的Test Fragment,大大减少工作量)

  • 在mac上通过Homebrew安装redis

    2017-11-13 16:54:00

    使用Homebrew安装redis可以减少大量的安装和配置的工作量。
    安装命令

    brew install redis


      ~ brew install redis
    Updating Homebrew...
    ==> Auto-updated Homebrew!
    Updated 1 tap (homebrew/core).
    ==> New Formulae
    csvkit                               e2tools                              just                                 simg2img
    dps8m                                heartbeat                            kaitai-struct-compiler
    ==> Updated Formulae
    imagemagick
                     faas-cli                      jenkins-lts                   node                          rtags
    abcmidi                       feh                           jruby                         node-build                    scalaenv
    alexjs                        ffmpeg@2.8                    kerl                          node@4                        scalastyle
    amazon-ecs-cli                filebeat                      kibana                        node@6                        scm-manager
    apibuilder-cli                firebase-cli                  knot-resolver                 ntl                           selenium-server-standalone
    app-engine-java               flow                          kobalt                        nuttcp                        simple-obfs
    aria2                         fluent-bit                    kubectx                       omniorb                       singular
    asciidoc                      fn                            kubernetes-cli                ompl                          sjk
    b2-tools                      frugal                        ldc                           openvdb                       solr
    babl                          gdcm                          libcue                        ortp                          source-to-image
    bash-snippets                 gegl                          libfabric                     packetbeat                    sourcekitten
    bazel                         getdns                        libfixbuf                     packetq                       ssdeep
    binaryen                      geth                          libgsf                        paket                         sslyze
    bit                           git-annex                     libmaxminddb                  pandoc                        svgo
    bluepill                      glide                         libogg                        pandoc-crossref               swiftformat
    buku                          gmic                          libpq                         pcl                           swiftlint
    certigo                       gmt                           libpqxx                       pdfcrack                      syncthing
    charm-tools                   gmt@4                         libuv                         pick                          telegraf
    chisel                        gnu-time                      logstash                      pipenv                        temporal_tables
    cimg                          gnupg                         logtalk                       poco                          terragrunt
    clojure                       go-jira                       mdds                          poppler                       tintin
    cmake                         gofabric8                     metricbeat                    postgresql                    typescript
    convox                        gradle                        mikutter                      postgresql@9.4                uncrustify
    couchdb                       grpc                          mingw-w64                     postgresql@9.5                vala
    cppad                         gsmartcontrol                 mitie                         postgresql@9.6                vapoursynth
    davix                         gtk+3                         monit                         pre-commit                    vtk
    debianutils                   hadoop                        mupdf                         prometheus                    wireguard-tools
    django-completion             hashcat                       mupdf-tools                   protobuf-swift                xmake
    docfx                         hive                          mypy                          pushpin                       yara
    docker-compose                i2p                           nanomsg                       py2cairo                      zabbix
    docker-compose-completion     imagemagick@6                 nativefier                    py3cairo                      zint
    doitlive                      immortal                      nco                           rabbitmq                      zurl
    dssim                         influxdb                      ncview                        rbenv-bundler
    elasticsearch                 inspircd                      neovim                        re2c
    erlang                        iron-functions                netcdf                        resty
    exploitdb                     jenkins                       nickle                        ringojs
    ==> Renamed Formulae
    newsbeuter -> newsboat
    ==> Deleted Formulae
    bchunk

    ==> Downloading https://homebrew.bintray.com/bottles/redis-4.0.2.sierra.bottle.1.tar.gz
    ######################################################################## 100.0%
    ==> Pouring redis-4.0.2.sierra.bottle.1.tar.gz
    ==> Caveats
    To have launchd start redis now and restart at login:
      brew services start redis
    Or, if you don't want/need a background service you can just run:
      redis-server /usr/local/etc/redis.conf
    ==> Summary
    🍺  /usr/local/Cellar/redis/4.0.2: 13 files, 2.8MB

      ~ pwd
    /Users/mac

      ~ cd /usr/local/Cellar/redis/4.0.2/bin
      bin ls
    redis-benchmark redis-check-aof redis-check-rdb redis-cli       redis-sentinel  redis-server
      bin ./redis-cli -h ceshi.my.com -p 6378 -a 密码

    ^C
      bin ./redis-cli -h ceshi.my.com -p 6379 -a 密码
    ceshi.my.com:6379> select 1
    OK
    ceshi.my.com:6379[1]> key reg_*
    (error) ERR unknown command 'key'
    ceshi.my.com:6379[1]> keys reg_*
    1) "reg_18515108600"
    2) "reg_18629081280"
    3) "reg_13620171113"
    4) "reg_13311111111"
    5) "reg_13232323232"
    ceshi.my.com:6379[1]> get reg_reg_18515108600
    (nil)
    ceshi.my.com:6379[1]> get reg_18515108600
    "877635"
    ceshi.my.com:6379[1]>
      bin pwd
    /usr/local/Cellar/redis/4.0.2/bin
      bin ./redis-cli -h ceshi.my.com -p 6379 -a password
    ceshi.my.com:6379> keys *
    '1) "PHP_java_api_sum"
    2) "PHP_Admin_Nav"
    3) "PHP_Admin_Node_All"
    4) "PHP_categorylist_level"
    5) "PHP_rbac_shop_redis_list"
    6) "PHP_java_api_method_sum"
    ceshi.my:6379> select 1
    OK
    ceshi.my.com:6379[1]> keys  *
       1) "3FED2D01D8A12A8AD4D3F350021DD47215058012181411198238304"
       2) "AE3E6F82854148CF32748D18E80ADE2D20170907164715876"
       3) "1090618090000000000"
       4) "after_sale_flow_status_111061508228501275_1"
       5) "AB704CCAD89A6917BA6D9AAD278BEEE315088370708211667596991"
       6) "5FFE8167AE474DEBF5892639EC2238A715054574645237655558901"
       7) "F71C1624C3CA1F23F5994C93C571572515084969572546594824039"
       8) "1080312030300000000"
       9) "1090424060000000000"


    要在Redis远程服务器上运行命令,需要通过客户端redis-cli连接到服务器

    语法

    [yiibai@ubuntu:~]$ redis-cli -h host -p port -a password

    Shell

    示例
    以下示例显示如何连接到Redis远程服务器,在主机(host)127.0.0.1,端口(port)6379上运行,并使用密码为 mypass

    [yiibai@ubuntu:~]$ redis-cli -h 127.0.0.1 -p 6379 -a "mypass" 
    redis 127.0.0.1:6379> 
    redis 127.0.0.1:6379> PING  
    PONG
    


     

  • mac安装Redis可视化工具-Redis Desktop Manager

    2017-11-13 10:50:38

    http://www.jianshu.com/p/214baa511f2e

    Redis Desktop Manager
    一款基于Qt5的跨平台Redis桌面管理软件
    支持: Windows 7+, Mac OS X 10.10+, Ubuntu 14+
    特点: C++ 编写,响应迅速,性能好。但不支持数据库备份与恢复。
    项目地址: https://github.com/uglide/RedisDesktopManager


    image

    安装方法

    • 安装brew cask : 在终端中输入下面语句 回车

      ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null ; brew install caskroom/cask/brew-cask 2> /dev/null

      可能会需要你的mac密码,输入即可

    • 安装Redis Desktop Manager
      安装完cask之后,在终端中输入 回车

      brew cask install rdm

    安装完成后


    Paste_Image.png

    打开rdm.app 连接redis数据库


    Paste_Image.png

  • 如何查看IOS的CRASH

    2017-10-17 16:27:39

    用户把设备连接到电脑上打开xcode-window-organizer,选中Devices-当前连接设备-Device Log,就可以查看所有当前设备的crash log,这个时候打开每一份crash的时候发现这些文件的部分地址都会被转换成类名方法名和行号等 

  • Genymotion添加手机模拟器步骤详解

    2017-08-10 15:43:42

  • MAC安装monkey工具

    2017-03-24 18:34:28


    转自http://www.jianshu.com/p/9823ac1fcb69

    一、monkey测试简介:

    monkey工具是Android自动化测试工具的一种,主要对Android,APP可进行压力测试。(总结)

    Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

    二、 Monkey的特征

    1、 测试的对象仅为应用程序包,有一定的局限性。

    2、 Monky测试使用的事件流数据流是随机的,不能进行自定义。

    3、 可对MonkeyTest的对象,事件数量,类型,频率等进行设置。

    三、安装monkey工具

    1》下载安装了JDK

    附JDK官网下载链接http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    下载截图(其中需要同意许可证,同时针对mac下载已标注)


    JD下载页面

    安装成功后,在终端上输入 javac -version 若弹出版本信息,已经安装成功了


    检查jdk的版本

    2》下载Android开发环境的Adt Bundle

    附下载链接http://www.cnblogs.com/tc310/p/3938353.html

    下面是下载截图(针对mac下载已标注)


    Android Adt Bundle

    此时打开终端输入adb会提示-bash: abd: command not found。需要解决Android SDK的adb命令添加到环境变量的问题。

    1.启动终端,进入到当前用户的Home目录(命令在下一行)

    cd $HOME

    2.创建 .bash_profile文件

    touch .bash_profile

    3.打开 .bash_profile 文件,对其内容进行编辑

    open -e .bash_profile

    4.此时文本编辑器会打开一个文本,编辑内容如下:

    export PATH=/Users/JianDan/dev_android/adt-bundle-mac-x86_64-20130729/sdk/platform-tools/:$PATH
    注意:在网上搜索了很多文章,多数写的是 PATH=${PATH}:/eclipse/android_sdk/platform-tools(这样写的解释
    是:如果是需要添加很多命令到PATH下时,需要用“:”(英文的冒号)隔开即可,因为Android和adb这些命令是在不同的
    文件夹中的,这样才能两者兼得.),而没有最后面:$PATH,结果我重复了N次创建删除 .bash_profile文件,也复制
    粘贴了N次PATH=${PATH}:/eclipse/android_sdk/platform-tools,就是配置不对。

    编辑完成后,可直接关闭,此时已保存

    5.更新此文件

    source .bash_profile

    此时的adb环境配置好,可以检验一下

    6.检验是否成功(终端输入)

    adb devices

    配置成功的截图在下面


    adb环境配置步骤

    顺便来一张monkey测试的贴图


    monkey测试成功的例子(黑线是包的名字)
  • 对比IOS自动化工具UIAutomation和Appium

    2017-03-15 17:46:52

    1、ios自动化UIAutomation是苹果xcode自带的工具,肯定比较好用。连上手机(签名的app或者越狱debug包)就可以进行自动化测试了。
    2、再说appium,它原理就是通过selenium的webdriver移植过来的,现在也可以驱动UIAutomation进行自动化测试,优点是可以用任何语言开发,但是工具本身bug多,容易假死。
    所以你2个工具最好都要会用。
  • Android 内存监测工具 DDMS --> Heap, 用MAT分析heap dumps

    2016-12-27 11:41:15

  • 接口测试工具-SoapUI

    2016-12-13 15:21:23

  • [转]Git教程

    2016-11-01 17:37:59

    史上最浅显易懂的Git教程!

    为什么要编写这个教程?因为我在学习Git的过程中,买过书,也在网上Google了一堆Git相关的文章和教程,但令人失望的是,这些教程不是难得令人 发指,就是简单得一笔带过,或者,只支离破碎地介绍Git的某几个命令,还有直接从Git手册粘贴帮助文档的,总之,初学者很难找到一个由浅入深,学完后 能立刻上手的Git教程。

    既然号称史上最浅显易懂的Git教程,那这个教程有什么让你怦然心动的特点呢?

    首先,本教程绝对面向初学者,没有接触过版本控制概念的读者也可以轻松入门,不必担心起步难度;

    其次,本教程实用性超强,边学边练,一点也不觉得枯燥。而且,你所学的Git命令是“充分且必要”的,掌握了这些东西,你就可以通过Git轻松地完成你的工作。

    文字+图片还看不明白?有视频!!!

    本教程只会让你成为Git用户,不会让你成为Git专家。很多Git命令只有那些专家才明白(事实上我也不明白,因为我不是Git专家),但我保证这些命 令可能你一辈子都不会用到。既然Git是一个工具,就没必要把时间浪费在那些“高级”但几乎永远不会用到的命令上。一旦你真的非用不可了,到时候再自行 Google或者请教专家也未迟。

    如果你是一个开发人员,想用上这个世界上目前最先进的分布式版本控制系统,那么,赶快开始学习吧!
    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

  • Eclipse导入SVN项目的三种方式

    2016-09-23 17:40:45

    一.直接Import导入:

    1.点击 File –> Import,进入导入项目窗口
    Eclipse导入SVN项目的三种方式

     

    2.选择从SVN检出项目,点击Next
    Eclipse导入SVN项目的三种方式
     
    3.选择创建新的资源库位置,点击Next
    Eclipse导入SVN项目的三种方式
     

    4.在URL处输入SVN项目远程地址,点击Next
    Eclipse导入SVN项目的三种方式

     

    5.选中检索到的远程项目,点击Next
    Eclipse导入SVN项目的三种方式
     

    6.输入项目名称,点击Next
    Eclipse导入SVN项目的三种方式

     

    7.选择工作空间,点击Finish,到此项目导入完成。
    Eclipse导入SVN项目的三种方式
     

    二.SVN资源库导入:

    1.点击Eclipse右上角带“+”的图标,进入Open Perspective窗口
    Eclipse导入SVN项目的三种方式

     

    2.选择SVN资源研究库,点击OK
    Eclipse导入SVN项目的三种方式
     

    3.右上角出现对应的图标,同时进入SVN资源库界面
    Eclipse导入SVN项目的三种方式
     
    4.在空白位置单击右键,点击 新建 –> 资源库位置,进入添加SVN资源库界面
    Eclipse导入SVN项目的三种方式
    Eclipse导入SVN项目的三种方式
     

    5.在URL处输入SVN项目远程地址,点击Finish
    Eclipse导入SVN项目的三种方式
     
    6.在SVN资源库界面出现检索到的远程项目
    Eclipse导入SVN项目的三种方式
     

    7.点击远程项目的SVN地址,单击右键,点击“检出为”
    Eclipse导入SVN项目的三种方式
     

    8.输入项目名称,点击Next
    Eclipse导入SVN项目的三种方式

     

    9.选择工作空间,点击Finish,到此项目导入完成。
    Eclipse导入SVN项目的三种方式

     

    三.SVN客户端导入:

    1.创建一个空文件夹,在文件夹中单击右键,点击”SVN Checkout”
    Eclipse导入SVN项目的三种方式
     

    2.出现Checkout窗口,在URL of repository 处输入SVN项目远程地址,点击OK
    Eclipse导入SVN项目的三种方式
     

    3.等待项目检出成功
    Eclipse导入SVN项目的三种方式
     

    4.点击OK,文件夹中会出现以下内容
    Eclipse导入SVN项目的三种方式
     

    5.打开Eclipse, 点击 File –> Import,进入导入项目窗口
    Eclipse导入SVN项目的三种方式
     

    6.选择普通导入项目方式:General –> Existing Projects into Workspace,点击Next
    Eclipse导入SVN项目的三种方式
     

    7.进入Import窗口,点击Browse选择之前创建的文件夹
    Eclipse导入SVN项目的三种方式
     
     

    8.选择之后,出现项目地址和项目名称,点击Finish,到此项目导入完成
    Eclipse导入SVN项目的三种方式
     

    9.Eclipse的Project Explorer界面出现导入的项目,显示的是Java项目,若是Web项目只需进行相应设置即可。
    Eclipse导入SVN项目的三种方式
     
  • maven安装

    2016-09-23 17:20:51

    1、首先去官方网站下载之:[url]http://maven.apache.org/download.html[/url],我选择的是截至目前最新版本maven2.0.4版本
    2、设置环境变量:Maven2下载完后,我将其解压到我的计算机的d:\maven204下,目录结构如下:
    D:\
    |--Maven204
    |-- bin
    |-- conf
    |-- core
    |-- lib
    |-- local


    环境变量:(操作系统windows2003)
            我的电脑----属性----高级----环境变量,点击“系统变量”下的新建,输入:变量名 MAVEN_HOME; 变量值d:\Maven204,在系统变量列表中找到系统变量path,打开之,在变量值中追加”;%MAVEN_HOME%\bin”,至此环境变量设置完毕。
            检查一下是否已经完成安装,打开dos窗口,输入mvn –v,如果出现以下信息则表示maven2已经安装成功:
    X:〉mvn –v
    Maven Version 2.0.4

  • Jetty与 Tomcat 的比较

    2016-09-23 16:37:28

    Tomcat 和 Jetty 都是作为一个 Servlet 引擎应用的比较广泛,可以将它们比作为中国与美国的关系,虽然 Jetty 正常成长为一个优秀的 Servlet 引擎,但是目前的 Tomcat 的地位仍然难以撼动。相比较来看,它们都有各自的优点与缺点。
    Tomcat 经过长时间的发展,它已经广泛的被市场接受和认可,相对 Jetty 来说 Tomcat 还是比较稳定和**,尤其在企业级应用方面,Tomcat 仍然是第一选择。但是随着 Jetty 的发展,Jetty 的市场份额也在不断提高,至于原因就要归功与 Jetty 的很多优点了,而这些优点也是因为 Jetty 在技术上的优势体现出来的。

    架构比较

    从架构上来说,显然 Jetty 比 Tomcat 更加简单,如果你对 Tomcat 的架构还不是很了解的话,建议你先看一下 《Tomcat系统架构与设计模式》这篇文章。
    Jetty 的架构从前面的分析可知,它的所有组件都是基于 Handler 来实现,当然它也支持 JMX。但是主要的功能扩展都可以用 Handler 来实现。可以说 Jetty 是面向 Handler 的架构,就像 Spring 是面向 Bean 的架构,iBATIS 是面向 statement 一样,而 Tomcat 是以多级容器构建起来的,它们的架构设计必然都有一个“元神”,所有以这个“元神“构建的其它组件都是肉身。
    从设计模板角度来看,Handler 的设计实际上就是一个责任链模式,接口类 HandlerCollection 可以帮助开发者构建一个链,而另一个接口类 ScopeHandler 可以帮助你控制这个链的访问顺序。另外一个用到的设计模板就是观察者模式,用这个设计模式控制了整个 Jetty 的生命周期,只要继承了 LifeCycle 接口,你的对象就可以交给 Jetty 来统一管理了。所以扩展 Jetty 非常简单,也很容易让人理解,整体架构上的简单也带来了无比的好处,Jetty 可以很容易被扩展和裁剪。
    相比之下,Tomcat 要臃肿很多,Tomcat 的整体设计上很复杂,前面说了 Tomcat 的核心是它的容器的设计,从 Server 到 Service 再到 engine 等 container 容器。作为一个应用服务器这样设计无口厚非,容器的分层设计也是为了更好的扩展,只是这种扩展方式将应用服务器的内部结构暴露给外部使用者,使得如果想扩 展 Tomcat,开发人员必须要首先了解 Tomcat 的整体设计结构,然后才能知道如何按照它的规范来做扩展。这样无形就增加了对 Tomcat 的学习成本。不仅仅是容器,实际上 Tomcat 也有基于责任链的设计方式,像串联 Pipeline 的 Vavle 设计也是与 Jetty 的 Handler 类似的方式。要自己实现一个 Vavle 与写一个 Handler 的难度不相上下。表面上看,Tomcat 的功能要比 Jetty 强大,因为 Tomcat 已经帮你做了很多工作了,而 Jetty 只告诉,你能怎么做,如何做,由你去实现。 打个比方,就像小孩子学数学,Tomcat 告诉你 1+1=2,1+2=3,2+2=4 这个结果,然后你可以根据这个方式得出 1+1+2=4,你要计算其它数必须根据它给你的公式才能计算,而 Jetty 是告诉你加减乘除的算法规则,然后你就可以根据这个规则自己做运算了。所以你一旦掌握了 Jetty,Jetty 将变得异常强大。

    性能比较

    单纯比较 Tomcat 与 Jetty 的性能意义不是很大,只能说在某种使用场景下,它表现的各有差异。因为它们面向的使用场景不尽相同。从架构上来看 Tomcat 在处理少数非常繁忙的连接上更有优势,也就是说连接的生命周期如果短的话,Tomcat 的总体性能更高。
    而 Jetty 刚好相反,Jetty 可以同时处理大量连接而且可以长时间保持这些连接。例如像一些 web 聊天应用非常适合用 Jetty 做服务器,像淘宝的 web 旺旺就是用 Jetty 作为 Servlet 引擎。
    另外由于 Jetty 的架构非常简单,作为服务器它可以按需加载组件,这样不需要的组件可以去掉,这样无形可以减少服务器本身的内存开销,处理一次请求也是可以减少产生的临时 对象,这样性能也会提高。另外 Jetty 默认使用的是 NIO 技术在处理 I/O 请求上更占优势,Tomcat 默认使用的是 BIO,在处理静态资源时,Tomcat 的性能不如 Jetty。

    特性比较

    作为一个标准的 Servlet 引擎,它们都支持标准的 Servlet 规范,还有 Java EE 的规范也都支持,由于 Tomcat 的使用的更加广泛,它对这些支持的更加全面一些,有很多特性 Tomcat 都直接集成进来了。但是 Jetty 的应变更加快速,这一方面是因为 Jetty 的开发社区更加活跃,另一方面也是因为 Jetty 的修改更加简单,它只要把相应的组件替换就好了,而 Tomcat 的整体结构上要复杂很多,修改功能比较缓慢。所以 Tomcat 对最新的 Servlet 规范的支持总是要比人们预期的要晚。

  • 使用tcpdump和wireshark对Android应用程序进行抓包并分析

    2016-09-05 14:40:35

    本文主要介绍如何使用tcpdump和wireshark对Android应用程序进行抓包并分析,需要说明的是在抓包之前,你的Android设备必须root过了,另外你的电脑必须有Android SDK环境。

    下载并安装tcpdump

    tcpdump链接:http://www.tcpdump.org/

    选择一个版本下载并解压提取出其中tcpdump文件,然后push到你的手机上去:

    1
    adb push c:\tcpdump /data/local/tcpdump

    进一步操作:

    1
    2
    3
    adb shell
    su
    chmod +x /data/local/tcpdump

    然后就可以开始抓包了:

    1
    /data/local/tcpdump -p -vv -s 0 -w /sdcard/capture.pcap

    这时你可以操作应用程序相应的操作了,抓包完毕后ctrl+c停止抓包。

    然后将抓到pcap文件传输本地开始进行分析了,这里假设你pull到c盘目录下。

    1
    adb pull /sdcard/capture.pcap c:/

    使用wireshark分析抓包数据

    pc上安装wireshark

    wireshark下载:http://www.wireshark.org/download.html

    如果安装完毕,就可以直接打刚才的pcap文件了。

    image

    使用过滤器filter

    如果抓到的东西过多,可以使用上方的过滤器,比如我只看http协议,并且是由我设备发出的

    image

    右键记录查看tcp stream

    这个功能我比较喜欢,可以查看此次http,client端请求和server端返回的数据

    image

    还有我觉得更厉害的功能

    可以把请求的内容和结果存储下来,比如可以查看post的内容

    这是在面板看到的具体的tcp/ip各层的内容

    image

    但是这种编码之后,并且以字节流发出去的东西很让人讨厌,利用存储可能,你就可以看到具体的结果了:

    选择File->Export Objects->HTTP,导出这条记录就可以啦。

    image

    最后总结下

    这是我最近在工作中实际用得到的,但在实际操作tcpdump和wireshark的时候,有更多功能、技巧可以挖掘出来,这篇文章算是对从来没有用过这两个工具的人的一个入门介绍吧。

    from:http://www.myhack58.com/Article/48/67/2013/39798.htm

  • Snagit--图像捕捉和视频捕捉工具

    2016-07-19 15:00:58

    Snagit支持各种形式的图像捕捉,包括常见窗口,DirectX表面捕捉(游戏)和视频捕捉,web 捕捉,支持几乎所有常见的图片格式,并具有后期图片编辑和管理功能。试用期15天。
  • FastStone Capture屏幕抓图软件

    2016-07-07 10:48:57

    FastStone Capture是一款灵活简单的屏幕抓图软件。FastStone Capture可抓取某个窗口或者对象的图片,也可全屏或者以矩形模式抓图,甚至可按照手绘的任意形状抓图。
  • 编辑器sed

    2016-06-14 10:09:08

    原文链接:http://www.linuxso.com/command/grep.html


    sed 是一种UNIX/LINUX 平台下的轻量级流编辑器,日常一般用于处理文本文件。sed 有许多很好的特性。首先,它相当小巧;其次, sed 可以配合强大的 shell 完成许多复杂的功能。在我看来,sed完全可以看成一个脚本解释器,用类似于编程的手段完成许多事情。

    sed简单示例

    sed命令的格式是
    sed [-options] [command] [stdin]
    比如这个例子
    $ sed –e ‘d’ ./Mydir/Myfile
    执行该命令,将得不到任何输出。在该例中,用一个编辑命令 'd' 调用 sed;sed 打开 ./Mydir/Myfile 将一行读入其模式缓冲区,执行’d’(“删除行”);然后打印模式缓冲区(缓冲区已为空);它对后面的每一行重复这些步骤,这不会产生输出!
    对 这个命令要说明的几点是:首先,它根本没有修改 ./Mydir/Myfile。这是因为 sed 是流处理器,它只读取在命令行指定的文件,它不试图修改该文件。其次, sed 是面向行的,'d' 命令不是简单地告诉 sed 一下子删除所有输入数据;相反,sed 逐行将 ./Mydir/Myfile 的每一行读入其称为模式缓冲区的内部缓冲区,一旦将一行读入模式缓冲区,它就执行 'd' 命令,然后打印模式缓冲区的内容。最后要注意的事是括起 'd' 命令的单引号的用法,这样可以禁用 shell 扩展。

    指定sed的作用范围

    看下面的三个例子
    $ sed –e ‘1d’ ./Mydir/Myfile
    $ sed –e ‘1,10d’ ./Mydir/Myfile
    $ sed –e ‘/begin/,/end/p’ ./Mydir/Myfile
    第一个例子说明只删除./Mydir/Myfile第一行的缓冲,第二个例子将删除第1~10行的缓冲。第三个例子最复杂,它定义了以字符串’begin’开始到’end’结束的作用范围

    sed中的正则表达式

    sed支持正则表达式,比如
    $ sed –n -e ‘/regexp/p’ ./Mydir/Myfile
    比如要删除所有的空行
    $ sed –e ‘/^$/d’ ./Mydir/Myfile
    sed中的一些特殊定义是
    规则 表达式 描述
    /./ 将与包含至少一个字符的任何行匹配
    /../ 将与包含至少两个字符的任何行匹配
    /^#/ 将与以 '#' 开始的任何行匹配
    /^$/ 将与所有空行匹配
    /}^/ 将与以 '}'(无空格)结束的任何行匹配
    /} *^/ 将与以 '}' 后面跟有 零或多个空格结束的任何行匹配
    /[abc]/ 将与包含小写 'a'、'b' 或 'c' 的任何行匹配
    /^[abc]/ 将与以 'a'、'b' 或 'c' 开始的任何行匹配

    再比如一个经典的例子,打印c源代码中的main函数内容,其命令可以写成如下
    $ sed –n –e ‘/main[[:space]]*(/,/^}/p’ ./Mydir/*.c
    其中[:space]表示空格,[[:space]]*表示有0~多个空格,所以main[[:space]]*(的意思是匹配“main (”字符串;“^}”表示这一行有且只有一个字符}。当然,上面的命令不是十分严谨。

    sed –e ‘s/regexp/repalcement’ file

    替换是sed命令中最常用的命令,比如如下的例子
    $ sed –e ‘s/a/b’ ./Mydir/Myfile
    $ sed –e ‘s/a/b/g’ ./Mydir/Myfile
    第一个命令将./Mydir/Myfile中每一行第一次出现的字符a替换成字符b;第二个命令由于加入了’/g’,表示是全局(全部)替换字符a成字符b。

    经常还可以看见如下两种形式的sed
    $ sed –e ‘1,10s/a/b’ ./Mydir/Myfile
    $ sed –e ‘/^$/,/^END/s/a/b/g’ ./Mydir/Myfile
    第一个命令是指替换1~10行;第二个命令是指全局替换从空行开始到以END开始的行中的内容。

    替换命令不一定非要以/分隔,比如
    $ sed –e ‘s:usr/local:/usr:g’ ./Mydir/Myfile
    就是将./Mydir/Myfile中的usr/local全部替换成/usr

    要用好替换命令,当然要使用正则表达式,除了上面所说的表达式的例子,还有一些是非常有用的
    字符类 描述
    [:alnum:] 字母数字 [a-z A-Z 0-9]
    [:alpha:] 字母 [a-z A-Z]
    [:blank:] 空格或制表键
    [:cntrl:] 任何控制字符
    [:digit:] 数字 [0-9]
    [:graph:] 任何可视字符(无空格)
    [:lower:] 小写 [a-z]
    [:print:] 非控制字符
    [:punct:] 标点字符
    [:space:] 空格
    [:upper:] 大写 [A-Z]
    [:xdigit:] 十六进制数字 [0-9 a-f A-F]

    比如下面这个例子
    $ sed –e ‘s/<[^>]*>//g’ ./Mydir/Myfile
    <[^>]*>匹配<…>这样的字符串(…中不含>)。运行这个命令,能够将 “This is what I meant.”这样的字符串替换成“This is what I meant.”

    考察如下的命令
    $ sed -e 's/.*/# &/' ./Mydir/Myfile
    这个命令将所有的非空行以“#”注释掉——&告诉sed在行首插入字符。

    ‘s///’允许我们在规则表达式中定义区域,然后可以在替换字符串中引用这些特定区域。这些区域是以(和)隔开的。
    比如定义三个匹配非空字符的区域'(.*) (.*) (.*)',现在可以定义这三个区域的动作,比如
    $ sed -e 's/(.*) (.*) (.*)/PreFix 1-2 Fix 3/' ./Mydir/Myfile
    假如把三个区域分别命名为a、b、c,则最后结果是 PreFix a-b Fix c

    sed中组合命令

    sed中的命令可以组合,以;号隔开,比如
    $ sed –n –e ‘=;p’ ./Mydir/Myfile
    =表示打印行号,p表示打印。对于更复杂的指令,则可以写成命令脚本,然后用-f选项导入,比如
    $ sed –n –f MyScript.sed ./Mydir/Myfile
    对于同一个地址上的操作,则可以用{}组合,比如
    $ sed –n ‘1,20{ s/samba/Samba/g s/posix/POSIX/g }’ ./Mydir/Myfile

    sed中的行附加命令

    在当前行之前插入行“i”,如果要插入多行,则将多行用分隔
    在当前行之后插入行“a”,用法和上面相似
    更改当前行“c”

  • Jenkins简单使用介绍

    2016-01-08 15:22:36

    一、Jenkins的配置

    1. 下载地址:

    Jenkins的官方网站:http://jenkins-ci.org/

    目前最新版本的Windows版:http://mirror.xmission.com/jenkins/windows/jenkins-1.504.zip


    2. 安装

    Windows版的安装方式,直接按照安装包提示即可。此版本自带服务器,安装之后,就可以直接访问。

    如果下载的是.war文件,可以用tomcat进行配置。并且安装java,使用Java -jar jenkins.war命令。


    3. 启动服务

    在服务中,启动jenkins




    4. 访问

    使用 http://localhost:8080/ 访问,默认端口为8080,可以修改。

     


    二、权限

    1. 插件管理

    Jenkins提供了大量的插件,其中在对用户进行管理配置这块推荐使用“Role-basedAuthorization Strategy”

    如下图在系统管理界面下,点击管理插件进入插件安装界面。Jenkins的插件安装管理配置都很简单,通过web直接全能搞定。



    插件管理界面如下图所示:



    勾选需要的插件,到页面最下面有两个按钮“Install without restart” “Download now and install after restart”,根据需要点选提交开始安装。


    2. “Role-basedAuthorization Strategy”的启用:

    点击系统管理点击系统设置,如下图所示:安全域选择使用Jenkins专有用户数据库,可以在初始化的时候勾选允许用户注册,以后为了安全,请关闭该项;授权策略选择使用“Role-Based Strategy”



    配置完成save后在系统管理下新增选项“Manage and Assign Roles”。点击管理用户新建账户后即可进行账户,群组的安全策略配置。


    3. 管理组权限设置,构建权限设置:

    点击“Manage and AssignRoles”,先选择“Manage Roles”如下图所示,在Global roles这里创建权限分组,如admin是最高管理员权限,拥有所有权限,readonly只有读权限等,这里可以根据具体情况设置多个分组,不同权限;然后设置“Project roles”Role to add 填写分组名称,Pattern填写分组的规则。例如这个分组叫test,他的规则就是构建名为“test.*”的所有构件,然后在“Job”区里勾选相关权限。设置完成点保存即可。


    4. 用户权限分配:

    点击“Assign Roles”如下图所示,在“Global roles”“User/group to add”栏中输入添加的用户名,然后勾选管理组。记得把默认的匿名用户“Anonymous”的默认admin权限去掉,在添加管理员之后,否则不需登录就能控制整个Jenkins的权限;在“Project roles”“User/group to add”栏中输入添加的用户名,然后勾选对应构建权限名。设置完保存即可。


    三、创建Job

    1. 创建

    点击新Job,输入一个job名称,选择一个项目的类型。


    Job的一些属性配置



    源代码管理可以与一些SVN等代码管理软件,直接管理



    构建时候的命令,一般简单的命令可以使用批处理即可,当然也支持脚本语言。

    建议每个命令集中,语句不要太多,或太过复杂。如果很复杂可以使用脚本语言,或写成批处理文件,进行调用。



    构建后操作,可以完成之后发送邮件,生成文档,运行下一个构建项目等操作。比如创建一些可以分布进行的项目。



    2. 开始构建

    Job建立好之后,在界面上就,能够选择该项目了。点击该项目进入,项目操作界面。可以进行立即构建,构造中项目前面的圆点在闪烁。停止闪烁,构建完成。



    3. 构建完成

    构建完成后,如果前面的圆圈是蓝色,说明构建成功,如果是红色或黄色,说明构建失败或有问题。可以点击build History中,本次任务的链接,进行查看本次构建的详情。


    4. 查看错误

    在详情界面中,点击控制台输出,可以看见一些编译过程中的信息,可以在其中发现构建错误的原因。



    转自:http://blog.csdn.net/qiming_zhang/article/details/8646233

391/212>
Open Toolbar