<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    逝者如斯夫

    靜而思之
    數(shù)據(jù)加載中……

    2018年8月3日

    Docker Registry 安裝和運行

    使用場景

    • 內(nèi)部網(wǎng)絡(luò),無法訪問 Docker Hub
    • 控制 image 的存儲方式和存儲位置
    • 控制 image 的部署流程
    • 內(nèi)部開發(fā)流程需要集成控制 image 的部署和存儲

    應(yīng)用邏輯示意圖:

    ?

    安裝 Registry 服務(wù)

    概要

    Docker Registry 在 docker hub 的名稱是 registry。v1 版本的源碼地址 github.com/docker/docker-registry 已經(jīng)廢棄,v2 版本源碼地址在 github.com/docker/distribution,對應(yīng)的 API 是 Docker Registry HTTP API V2

    以下安裝沒有使用 HTTPS 方式,啟用 HTTPS 相關(guān)的證書配置參考這個文檔:

    官方文檔參考:

    最簡安裝(啟動)

    docker run -d -p 5000:5000 --name registry registry:2
    

    以上命令未使用用戶名密碼登錄策略。

    啟用登錄密碼

    生成密碼

    登錄密碼可以通過 host 的文件傳入,以下命令調(diào)用容器的 htpasswd 命令生成密碼文件:

    mkdir auth
    docker run --entrypoint htpasswd registry:2 \
        -Bbn <USER_NAME> <PASSWORD> > auth/auth.htpasswd
    

    啟用密碼

    通過 –volume 參數(shù)傳入密碼文件:

    docker run -d -p 5000:5000 --restart=always --name registry \
      --volume `PWD`/auth:/auth \
      --env "REGISTRY_AUTH=htpasswd" \
      --env "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
      --env REGISTRY_AUTH_HTPASSWD_PATH=/auth/auth.htpasswd \
      registry:2
    

    修改鏡像存儲

    默認鏡像數(shù)據(jù)存儲在 Docker Volume 中,可以通過 bind mount 進行修改,參數(shù)信息參考 Volume文檔。下面的例子將本機目錄 PWD/images 綁定到容器的 /var/lib/registry

    docker run -d -p 5000:5000 \
        --name auth-registry \
        -v `PWD`/images:/var/lib/registry \
        -e SQLALCHEMY_INDEX_DATABASE=sqlite:////opt/docker-image/docker-registry.db \
        -e STORAGE_PATH=/opt/docker-image \
        --restart=always \
        docker.onestch.com:5000/admin/registry:0.1
    

    默認的存儲引擎為本地文件系統(tǒng),可以修改文件的存儲引擎為 Amazon S3 bucket、Google Cloud Platform 或其他引擎,可以通過配置 config.yml 的方式修改存儲配置,更多信息參考 Docker Registry 存儲配置文檔

    停止服務(wù)

    停止 registry 容器并清理運行數(shù)據(jù)

    docker stop registry && \
    docker rm -v registry
    

    驗證

    查看容器信息

    docker ps --no-trunc
    

    查看全部配置信息或部分信息

    docker inspect <CONTAINER_ID> 
    
    docker inspect <CONTAINER_ID> | grep -C3 -e "Volumes\":"
    docker inspect <CONTAINER_ID> | grep -C2 Binds
    docker inspect -f '{{ .Mounts }}' <CONTAINER_ID>
    

    查看映射的詳細信息

    docker volume inspect 4496b0a257b966052ef8d0743014a4f63fc9924251c8de0df0e9c70fde4c45e6
    

    發(fā)布鏡像

    登錄服務(wù)

    如果安裝(啟動)的 registry 服務(wù)需要登錄訪問時,執(zhí)行:

    docker login <REGISTRY_HOST>:<REGISTRY_PORT>
    

    輸入安裝時設(shè)定的用戶名密碼。

    目標地址

    使用 docker tag 設(shè)定鏡像的目標地址,鏡像的目標地址包括三部分

    <HOST_NAME>[:<HOST_PORT>]/<IMAGE_NAME>:<IMAGE_VERSION>
    
    • HOST_NAME : HOST_PORT

      目標 registry 服務(wù)地址,缺省時使用官方 docker hub 的地址 registry-1.docker.io,且不允許包含下劃線

    • IMAGE_NAME 發(fā)布目標鏡像名稱

    • IMAGE_VERSION 發(fā)布目標鏡像版本

    例如:repo.company.com:3456/myapp:0.1

    發(fā)布鏡像

    發(fā)布的鏡像文件可以從 docker hub 中 Pull 或者本地使用 Dockerfile build 獲得

    Pull

    docker pull registry
    

    Build

    docker build -t docker.onestch.com:5000/admin/registry:0.1 .
    

    首先需要對鏡像 tag 設(shè)定目標倉庫,如果 build 的時候已經(jīng)設(shè)置了目標地址,可以不用進行 tag 操作

    docker tag registry:latest docker.onestch.com:5000/admin/registry:0.1
    

    然后 Push

    docker push docker.onestch.com:5000/admin/registry:0.1
    

    驗證

    重新從私有倉庫中獲取鏡像

    docker pull localhost:5000/admin/registry:0.1
    
    0.1: Pulling from admin/registry
    Digest: sha256:d738e358b6910d3a53c9c7ff7bbb5eac490ab7a9b12ffb4c1c27f2c53aae9275
    Status: Image is up to date for localhost:5000/admin/registry:0.1
    

    安裝 Registry UI

    選擇 registry ui,可選的有 atcol/docker-registry-uihyper/docker-registry-webkonradkleine/docker-registry-frontend

    安裝運行

    針對 hyper/docker-registry-web,使用 BASIC 認證,未使用 HTTPS的情況

    docker run -it -p 8080:8080 \
        --rm \
        --name registry-web \
        --link auth-registry \
        -e REGISTRY_URL=http://auth-registry:5000/v2 \
        -e REGISTRY_AUTH_ENABLED=false \
        -e REGISTRY_BASIC_AUTH=YWRtaW46MTIzNDU2 \
        -e REGISTRY_NAME=docker.onestch.com:5000 hyper/docker-registry-web
    

    命令中 auth-registry 是自定的 registry 鏡像。

    使用 HTTPS 時需要傳入 /config/auth.key 文件,或自定義 config.xml 配置,例如:
    docker run -it -p 8080:8080 –name registry-web \
    –link auth-registry \
    -v $(pwd)/config.yml:/conf/config.yml:ro \
    hyper/docker-registry-web

    管理界面

    建立了 registry 服務(wù)后,對 registry 的管理界面在本機的訪問地址是http://localhost:8080,一般 ui 服務(wù)會和 registry 服務(wù)同樣運行在私有網(wǎng)絡(luò),所以我們可以發(fā)布 registry ui 到 registry 服務(wù)器再運行。

    docker tag docker.io/hyper/docker-registry-web docker.onestch.com:5000/admin/docker-registry-web
    
    docker push docker.onestch.com:5000/admin/docker-registry-web
    

    查看 UI 界面如下圖

    ?

    posted @ 2018-08-03 11:49 ideame 閱讀(1296) | 評論 (0)編輯 收藏

    2016年10月10日

    Zookeeper Cli 常用命令

    服務(wù)管理

    • 啟動ZK服務(wù): zkServer.sh start
    • 查看ZK狀態(tài): zkServer.sh status
    • 停止ZK服務(wù): zkServer.sh stop
    • 重啟ZK服務(wù): zkServer.sh restart

    終端操作

    使用 zkCli 可以簡單的對 ZooKeeper 進行訪問,數(shù)據(jù)創(chuàng)建,數(shù)據(jù)修改等操作. 連接命令行如下:

    zkCli.sh -server 127.0.0.1:2181
    

    命令行工具常用操作:

    • 顯示根目錄下文件

      ls /              //查看當前節(jié)點數(shù)據(jù)
      ls2 /             //查看當前節(jié)點數(shù)據(jù)并能看到更新次數(shù)等數(shù)據(jù)
      
    • 創(chuàng)建文件, 并設(shè)置初始內(nèi)容:

      create /config "test" //創(chuàng)建一個新的節(jié)點并設(shè)置關(guān)聯(lián)值
      create /config “”     //創(chuàng)建一個新的空節(jié)點
      
    • 獲取文件內(nèi)容

      get /brokers      //獲取節(jié)點內(nèi)容
      
    • 修改文件內(nèi)容

      set /zk "zkbak"   //對 zk 所關(guān)聯(lián)的字符串進行設(shè)置
      
    • 刪除文件

      delete /brokers  //刪除節(jié)點
      rmr    /brokers  //刪除節(jié)點及子節(jié)點
      

    四字命令

    ZooKeeper 支持某些特定的四字命令字母與其的交互,用來獲取服務(wù)的當前狀態(tài)及相關(guān)信息。在客戶端可以通過 telnet 或 nc 向 ZooKeeper 提交相應(yīng)的命令。命令行如下:

    echo conf | nc 132.37.3.26 26181
    

    ZooKeeper 常用四字命令:

    • conf

      輸出相關(guān)服務(wù)配置的詳細信息

    • cons

      列出所有連接到服務(wù)器的客戶端的完全的連接 / 會話的詳細信息。包括“接受 / 發(fā)送”的包數(shù)量、會話 id 、操作延遲、最后的操作執(zhí)行等等信息

    • dump

      列出未經(jīng)處理的會話和臨時節(jié)點。

    • envi

      輸出關(guān)于服務(wù)環(huán)境的詳細信息(區(qū)別于 conf 命令)。

    • reqs

      列出未經(jīng)處理的請求

    • ruok

      測試服務(wù)是否處于正確狀態(tài)。如果確實如此,那么服務(wù)返回“ imok ”,否則不做任何相應(yīng)

    • stat

      輸出關(guān)于性能和連接的客戶端的列表。

    • wchs

      列出服務(wù)器 watch 的詳細信息

    • wchc

      通過 session 列出服務(wù)器 watch 的詳細信息,它的輸出是一個與 watch 相關(guān)的會話的列表

    • wchp

      通過路徑列出服務(wù)器 watch 的詳細信息。它輸出一個與 session 相關(guān)的路徑

    posted @ 2016-10-10 17:54 ideame 閱讀(5546) | 評論 (0)編輯 收藏

    2016年8月1日

    JMH(Java Micro Benchmark) 簡介

         摘要: JMH簡介本文由 ImportNew - hejiani 翻譯自 java-performance。JMH是新的microbenchmark(微基準測試)框架(2013年首次發(fā)布)。與其他眾多框架相比它的特色優(yōu)勢在于,它是由Oracle實現(xiàn)JIT的相同人員開發(fā)的。特別是我想提一下Aleksey Shipilev和他優(yōu)秀的博客文章。JMH可能與最新的Oracle JRE同步,其結(jié)果可信度很高。JMH...  閱讀全文

    posted @ 2016-08-01 17:12 ideame 閱讀(3259) | 評論 (0)編輯 收藏

    2014年2月28日

    如何將 SVN 源碼庫轉(zhuǎn)換為 Mercurial

    如何將 SVN 源碼庫轉(zhuǎn)換為 Mercurial [1]

    首先得安裝 Subversion 庫函數(shù)

    				    wget http://mirrors.hust.edu.cn/apache/subversion/subversion-1.8.8.tar.gz
    
        tar xzf subversion-1.8.8.tar.bz2 
    
        cd subversion-1.8.8
    
        subversion-1.8.8 aliang$ ./autogen.sh 
            buildcheck: checking installation...
            buildcheck: autoconf not found.
                        You need autoconf version 2.59 or newer installed.
    
        brew install autoconf
            ==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/autoconf-2.69.mavericks.bottle.tar.gz
            #################################################### 100.0%
            ==> Pouring autoconf-2.69.mavericks.bottle.tar.gz
            ?? /usr/local/Cellar/autoconf/2.69: 69 files, 2.0M
    
        ./autogen.sh 
            buildcheck: checking installation...
            buildcheck: autoconf version 2.69 (ok)
            buildcheck: autoheader version 2.69 (ok)
            buildcheck: libtool not found.
            You need libtool version 1.4 or newer installed
    
        brew install libtool
            Warning: A newer Command Line Tools release is available
            Update them from Software Update in the App Store.
            ==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/libtool-2.4.2.mavericks.bottle.2.tar.gz
            ##################################################### 100.0%
            ==> Pouring libtool-2.4.2.mavericks.bottle.2.tar.gz
            ==> Caveats
            In order to prevent conflicts with Apple''s own libtool we have prepended a "g"
            so, you have instead: glibtool and glibtoolize.
            ==> Summary
            ??  /usr/local/Cellar/libtool/2.4.2: 66 files, 2.2M
    
        ./autogen.sh 
            buildcheck: checking installation...
            buildcheck: autoconf version 2.69 (ok)
            buildcheck: autoheader version 2.69 (ok)
            buildcheck: libtool version 2.4.2 (ok)
            Copying libtool helper: /usr/local/share/aclocal/libtool.m4
            Copying libtool helper: /usr/local/share/aclocal/ltoptions.m4
            Copying libtool helper: /usr/local/share/aclocal/ltsugar.m4
            Copying libtool helper: /usr/local/share/aclocal/ltversion.m4
            Copying libtool helper: /usr/local/share/aclocal/lt~obsolete.m4
            Creating build-outputs.mk...
            Creating svn_private_config.h.in...
            Creating configure...
    
            You can run ./configure now.
    
            Running autogen.sh implies you are a maintainer.  You may prefer
            to run configure in one of the following ways:
    
            ./configure --enable-maintainer-mode
            ./configure --disable-shared
            ./configure --enable-maintainer-mode --disable-shared
            ./configure --disable-optimize --enable-debug
            ./configure CUSERFLAGS='--flags-for-C' CXXUSERFLAGS='--flags-for-C++'
    
            Note:  If you wish to run a Subversion HTTP server, you will need
            Apache 2.x.  See the INSTALL file for details.
    
        brew install swig
            ==> Downloading http://downloads.sourceforge.net/project/swig/swig/swig-2.0.11/swig-2.0.11.tar.gz
            ######################################################################## 100.0%
            ==> ./configure --prefix=/usr/local/Cellar/swig/2.0.11
            ==> make
            ==> make install
            ??  /usr/local/Cellar/swig/2.0.11: 597 files, 6.2M, built in 10.1 minutes 
    
        ./configure --with-swig=/usr/local/bin/swig
            configure: Configuring Subversion 1.8.8
            ... ...
            ==================================================================
            WARNING: You have chosen to compile Subversion with a different
                     compiler than the one used to compile Apache.
    
                Current compiler:  gcc
               Apache's compiler:  /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain/usr/bin/cc
    
            This could cause some problems.
            ==================================================================
            ... ...
    
        make swig-py
        make install
        make check-swig-py        
        sudo make install-swig-py
    
        sudo cp -r /usr/local/lib/svn-python/ /Library/Python/2.7/site-packages/
    
    		

    執(zhí)行轉(zhuǎn)換命令

    				    mkdir hgpath
    
        cd hgpath
    
        hg init
    
        hg convert -s svn -d hg ${local_path} ./hgpath
    
    		

    注意,這里轉(zhuǎn)換的 SVN 目錄只能是倉庫目錄而不是工作目錄

    posted @ 2014-02-28 11:25 ideame 閱讀(581) | 評論 (0)編輯 收藏

    2013年11月3日

    ditaa

    ?

    ditaa is a small command-line utility written in Java, that can
    convert diagrams drawn using ascii art ('drawings' that contain
    characters that resemble lines like | / - ), into proper
    bitmap graphics. This is best illustrated by the following
    example -- which also illustrates the benefits of using ditaa in
    comparison to other methods :)

        +--------+   +-------+    +-------+
        |        | --+ ditaa +--> |       |
        |  Text  |   +-------+    |diagram|
        |Document|   |!magic!|    |       |
        |     um4iki4|   |       |    |       |
        +---+----+   +-------+    +-------+
            :                         ^
            |       Lots of work      |
            +-------------------------+
    
    After conversion using ditaa, the above
    file becomes:
    round 		corner demo

    ditaa interprets ascci art as a series of open and closed
    shapes, but it also uses special markup syntax to increase the
    possibilities of shapes and symbols that can be rendered.

    ditaa is open source and free software (free as in free
    speech), since it is released under the GPL license.

    BUT WHY? Does this thing have any real use?

    There are several reasons why I did this:

    1. Simply for hack value. I wanted to know if/how it could be
      done and how easily.
    2. Aesthetic reasons and legacy formats: there are
      several old FAQs with ascii diagrams lying out there. At this
      time and age ascii diagrams make my eyes hurt due to their
      ugliness. ditaa can be used to convert them to something
      nicer. Although ditaa would not be able to convert all of them
      (due to differences in drawing 'style' in each case), it could
      prove useful in the effort of modernising some of those
      documents without too much effort. I also know a lot of people
      that can make an ascii diagram easily, but when it gets to using
      a diagram program, they don't do very well. Maybe this utility
      could help them make good-looking diagrams easily/quickly.
    3. Embedding diagrams to text-only formats: There is a
      number of formats that are text-based (html, docbook, LaTeX,
      programming language comments), but when rendered by other
      software (browsers, interpreters, the javadoc tool etc), they
      can contain images as part of their content. If ditaa was
      intergrated with those tools (and I'm planning to do the javadoc
      bit myself soon), then you would have readable/editable diagrams
      within the text format itself, something that would make things
      much easier. ditaa syntax can currently be embedded to HTML.
    4. Reusability of "code": Suppose you make a diagram in
      ascii art and you render it with version 0.6b of ditaa. You keep
      the ascii diagram, and then version 0.8 comes out, which
      features some new cool effects. You re-render your old diagram
      with the new version of ditaa, and it looks better, with zero
      effort! In that sense ditaa is a diagram markup language, with
      very loose syntax.


    Download

    (((-intro-))) (((-download-))) (((-usage and syntax-))) (((-friends-))) (((-contact-)))

    The latest version of ditaa can be obtained from its SourceForge project page.

    You can checkout the code using:

    ???svn co https://ditaa.svn.sourceforge.net/svnroot/ditaa ditaa

    You can also browse the code online.


    Usage and syntax

    (((-intro-))) (((-download-))) (((-usage and syntax-))) (((-friends-))) (((-contact-)))

    Command line

    You need the latest Java runtimes (JRE) to use ditaa. The best
    anti-aliasing can be achieved using Java 1.5 or higher.

    To start from the command line, type (where XXX is the version number):

    java -jar ditaaXXX.jar

    You will be presented with the command-line options help:

     -A,--no-antialias          Turns anti-aliasing off.
     -d,--debug                 Renders the debug grid over the resulting
                                image.
     -E,--no-separation         Prevents the separation of common edges of
                                shapes. You can see the difference below:
    
    +---------+
    | cBLU    |
    |         |
    |    +----+
    |    |cPNK|
    |    |    |
    +----+----+
    			
    Before processingCommon edge
    separation (default)
    No separation
    (with the -E option)
     -e,--encoding <ENCODING>   The encoding of the input file.
     -h,--html                  In this case the input is an HTML file. The
                                contents of the <pre class="textdiagram"> tags
                                are rendered as diagrams and saved in the
                                images directory and a new HTML file is
                                produced with the appropriate <img> tags.
                                See the HTML section.
        --help                  Prints usage help.
     -o,--overwrite             If the filename of the destination image
                                already exists, an alternative name is chosen.
                                If the overwrite option is selected, the image
                                file is instead overwriten.
     -r,--round-corners         Causes all corners to be rendered as round
                                corners.
     -s,--scale <SCALE>         A natural number that determines the size of
                                the rendered image. The units are fractions of
                                the default size (2.5 renders 1.5 times bigger
                                than the default).
     -S,--no-shadows            Turns off the drop-shadow effect.
     -t,--tabs <TABS>           Tabs are normally interpreted as 8 spaces but
                                it is possible to change that using this
                                option. It is not advisable to use tabs in
                                your diagrams.
     -v,--verbose               Makes ditaa more verbose.
    

    Syntax

    Round corners

    If you use / and \ to connect corners, they are rendered as
    round corners:

    /--+
    |  |
    +--/
    		  
    round corner demo
    Before processingRendered

    Color

    Color codes can be used to add color to the diagrams. The
    syntax of color codes is

    cXXX

    where XXX is a hex number. The first digit of the number
    represents the red compoment of the color, the second digit
    represents green and the third blue (good ol' RGB). See below for
    an example of use of color codes:

    /----\ /----\
    |c33F| |cC02|
    |    | |    |
    \----/ \----/
    
    /----\ /----\
    |c1FF| |c1AB|
    |    | |    |
    \----/ \----/
    		  
    color demo
    Before processingRendered

    This can become a bit tedious after a while, so there are (only
    some for now) human readable color codes provided:

    Color codes
    /-------------+-------------\
    |cRED RED     |cBLU BLU     |
    +-------------+-------------+
    |cGRE GRE     |cPNK PNK     |
    +-------------+-------------+
    |cBLK BLK     |cYEL YEL     |
    \-------------+-------------/
    
    color code
    Before processingRendered

    As you can see above, if a colored shape contains any text, the
    color of the text is adjusted according to the underlying
    color. If the undelying color is dark, the text color is changed
    to white (from the default black).

    Note that color codes only apply if they are within closed
    shapes, and they have no effect anywhere outside.

    Tags

    ditaa recognises some tags that change the way a rectangular
    shape is rendered. All tags are between { and }. See the table below:

    NameOriginalRenderedComment
    Document
    +-----+
    |auu2ygw  |
    |     |
    |     |
    +-----+
    		  
    Symbol representing a document.
    Storage
    +-----+
    |{s}  |
    |     |
    |     |
    +-----+
    		  
    Symbol representing a form of storage,
    like a
    database or a hard disk.
    Input/Output
    +-----+
    |{io} |
    |     |
    |     |
    +-----+
    		  
    Symbol representing input/output.

    Dashed lines

    Any lines that contain either at least one = (for horizontal
    lines) or at least one : (for vertical lines) are rendered as
    dashed lines. Only one of those characters can make a whole line
    dashed, so this feature "spreads". The rationale behind that is
    that you only have to change one character to switch from normal
    to dashed (and vice versa), rather than redrawing the whole
    line/shape. Special symbols (like document or storage symbols) can
    also be dashed. See below:

    ----+  /----\  +----+
        :  |    |  :    |
        |  |    |  |{s} |
        v  \-=--+  +----+
    
    Before processingRendered

    Point markers

    If * is encountered on a line (but not at the end of the
    line), it is rendered as a special marker, called the point
    marker (this feature is still experimental). See below:

    *----*
    |    |      /--*
    *    *      |
    |    |  -*--+
    *----*
    
    point marker demo
    Before processingRendered

    Text handling

    (This section is still being written)

    If the pattern ' o XXXXX' is encountered, where XXXXX is any
    text, the 'o' is interpreted and rendered as a bullet point. Note
    that there must be a space before the 'o' as well as after it. See
    below:

    /-----------------\
    | Things to do    |
    | cGRE            |
    | o Cut the grass |
    | o Buy jam       |
    | o Fix car       |
    | o Make website  |
    \-----------------/
    
    bullet point demo
    Before processingRendered

    ?

    HTML mode

    When ditaa is run using the --html option, the input
    is an HTML file. The contents of the <pre
    class="textdiagram">
    tags are rendered as diagrams and
    saved in the images directory and a new HTML file is
    produced with the appropriate <img> tags.

    If the id parameter is present in the
    <pre> tag, its value is used as the filename of the
    rendered png. Otherwise a filename of the form
    ditaa_diagram_X.png is used, where X is a
    number. Similarly, if there is no output filename specified, the
    converted html file is named in the form of
    xxxx_processed.html, where xxxx is the filename of the
    original file.

    In this mode, files that exist are not generated again, they
    are just skipped. You can force overwrite of the files using the
    --overwrite option.

    posted @ 2013-11-03 15:21 ideame 閱讀(520) | 評論 (0)編輯 收藏

    How to install ZXing in Xcode 4

    • April 2011
    • Posted By Yannick Loriot
    • 81 Comments

    After an upgrading to Xcode 4, I have been having trouble compiling my own ZXing iOS project. That’s why I decided to explain you how to install easily ZXing with Xcode 4.

    First of all (for those who don’t know), ZXing is an open-source library to read the 1D/2D barcodes. This library is available on many platforms such as the iOS, Android, Blackberry, ect. You can find it here: http://code.google.com/p/zxing/.

    Before to start, be sure that you have the latest version of ZXing on your computer. If you don’t, you must download it via a SVN client here: http://zxing.googlecode.com/svn/trunk/.

    ?

    To use ZXing into your project in Xcode 4 follow these steps:

    1. Firstly go to the “zxing/iphone/ZXingWidget/” and drag and drop the ZXingWidget.xcodeproj file onto your Xcode “Project navigator” sidebar. If a dialog appears uncheck the “Copy items” and verify that the “Reference Type” is “Relative to Project” before clicking “Add”.

    2. Now we are going to add ZXingWidget as a dependency of your project to allow Xcode to compile it whenever you compile the main project:
      1. First select your project file in the “Project navigator”.
      2. Then select the corresponding target.
      3. After choose the “Build Phases” tab and expand the “Target Dependencies” section.
      4. Click the “+” (add) button to display a dialog.
      5. To finish add the “ZXingWidget” target as shown above.

    3. Now we are going to link the ZXingWidget static library (libZXingWidget.a) to the project:
      1. Firstly choose the “Build Phases” tab and expand the “Link Binary With Libraries” section.
      2. Then click the “+” (add) button to display a dialog.
      3. To finish add the “libZXingWidget.a” which is located in the “Workspace” category as shown above.
      4. By the way add the following iOS frameworks too:
        • AddressBook
        • AddressBookUI
        • AudioToolbox
        • AVFoundation
        • CoreMedia
        • CoreVideo
        • libiconv.dylib

    4. Then you must configure the header search path of your project to allow Xcode to find the ZXingWidget headers. To do that:
      1. In the “Project navigator” select the main project (not the target).
      2. Go to the “Build Settings” tab and search the “Header Search Paths“.
      3. Double-click on it and add:
        • The full path of the “zxing/iphone/ZXingWidget/Classes” directory. Check the “recursive path“.
        • The full path of the “zxing/cpp/core/src/” directory. Uncheck the “recursive path“.

    Now you just have to import the “ZXingWidgetController.h” and the “QRCodeReader.h” to your project and use them.
    Attention: Make sure that the files in which you are using the ZXing headers have the .mm extension because they use c++ library files.

    Voilà! Now all should be ok. I hope it’ll help you!

    1 Star 2 Stars 3 Stars 4 Stars 5 Stars (33 votes, average: 4.55 out of 5)

    http://yannickloriot.com/2011/04/how-to-install-zxing-in-xcode-4/

    posted @ 2013-11-03 14:45 ideame 閱讀(388) | 評論 (0)編輯 收藏

    2013年7月22日

    MySQL-python 安裝的問題

    在Mac下安裝MySQL-python一直有問題,不管是用pip還是用setup.py,都是返回如下錯誤:


    sudo python setup.py install

    running install
    running bdist_egg
    running egg_info
    writing MySQL_python.egg-info/PKG-INFO
    writing top-level names to MySQL_python.egg-info/top_level.txt
    writing dependency_links to MySQL_python.egg-info/dependency_links.txt
    reading manifest file 'MySQL_python.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    writing manifest file 'MySQL_python.egg-info/SOURCES.txt'
    installing library code to build/bdist.macosx-10.7-x86_64/egg
    running install_lib
    running build_py
    copying MySQLdb/release.py -> build/lib.macosx-10.7-x86_64-2.7/MySQLdb
    running build_ext
    building '_mysql' extension
    / A p p l i c a t i o n s / X c o d e . a p p / C o n t e n t s / D e v e l o p e r / T o o l c h a i n s / X c o d e D e f a u l t . x c t o o l c h a i n / u s r / b i n / c l a n g?? - f n o - s t r i c t - a l i a s i n g?? - f n o - c o m m o n?? - d y n a m i c?? - I / u s r / l o c a l / i n c l u d e?? - I / u s r / l o c a l / o p t / s q l i t e / i n c l u d e?? - i s y s r o o t?? / A p p l i c a t i o n s / X c o d e . a p p / C o n t e n t s / D e v e l o p e r / P l a t f o r m s / M a c O S X . p l a t f o r m / D e v e l o p e r / S D K s / M a c O S X 1 0 . 7 . s d k?? - I / A p p l i c a t i o n s / X c o d e . a p p / C o n t e n t s / D e v e l o p e r / P l a t f o r m s / M a c O S X . p l a t f o r m / D e v e l o p e r / S D K s / M a c O S X 1 0 . 7 . s d k / S y s t e m / L i b r a r y / F r a m e w o r k s / T k . f r a m e w o r k / V e r s i o n s / 8 . 5 / H e a d e r s?? - D N D E B U G?? - g?? - f w r a p v?? - O 3?? - W a l l?? - W s t r i c t - p r o t o t y p e s?? -Dversion_info=(1,2,4,'final',1) -D__version__=1.2.4 -I/usr/local/Cellar/mysql/5.6.10/include -I/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _mysql.c -o build/temp.macosx-10.7-x86_64-2.7/_mysql.o -Os -g -fno-strict-aliasing
    unable to execute /: Permission denied
    error: command '/' failed with exit status 1


    經(jīng)過Google,發(fā)現(xiàn)原來是XCode沒有安裝Command line Tools的問題,參考:http://sourceforge.net/p/mysql-python/bugs/333/

    posted @ 2013-07-22 01:59 ideame 閱讀(553) | 評論 (0)編輯 收藏

    2013年7月16日

    軟件級負載均衡器(LVS/HAProxy/Nginx)的特點和對比

    LVS的特點是:

    1. 抗負載能力強、是工作在網(wǎng)絡(luò)4層之上僅作分發(fā)之用,沒有流量的產(chǎn)生,這個特點也決定了它在負載均衡軟件里的性能最強的;
    2. 配置性比較低,這是一個缺點也是一個優(yōu)點,因為沒有可太多配置的東西,所以并不需要太多接觸,大大減少了人為出錯的幾率;
    3. 工作穩(wěn)定,自身有完整的雙機熱備方案,如LVS+Keepalived和LVS+Heartbeat,不過我們在項目實施中用得最多的還是LVS/DR+Keepalived;
    4. 無流量,保證了均衡器IO的性能不會收到大流量的影響;
    5. 應(yīng)用范圍比較廣,可以對所有應(yīng)用做負載均衡;
    6. 軟件本身不支持正則處理,不能做動靜分離,這個就比較遺憾了;其實現(xiàn)在許多網(wǎng)站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優(yōu)勢所在。
    7. 如果是網(wǎng)站應(yīng)用比較龐大的話,實施LVS/DR+Keepalived起來就比較復(fù)雜了,特別后面有Windows Server應(yīng)用的機器的話,如果實施及配置還有維護過程就比較復(fù)雜了,相對而言,Nginx/HAProxy+Keepalived就簡單多了。

    Nginx的特點是:

    1. 工作在網(wǎng)絡(luò)的7層之上,可以針對http應(yīng)用做一些分流的策略,比如針對域名、目錄結(jié)構(gòu),它的正則規(guī)則比HAProxy更為強大和靈活,這也是許多朋友喜歡它的原因之一;
    2. Nginx對網(wǎng)絡(luò)的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優(yōu)勢所在;
    3. Nginx安裝和配置比較簡單,測試起來比較方便;
    4. 也可以承擔高的負載壓力且穩(wěn)定,一般能支撐超過幾萬次的并發(fā)量;
    5. Nginx可以通過端口檢測到服務(wù)器內(nèi)部的故障,比如根據(jù)服務(wù)器處理網(wǎng)頁返回的狀態(tài)碼、超時等等,并且會把返回錯誤的請求重新提交到另一個節(jié)點,不過其中缺點就是不支持url來檢測;
    6. N1.ginx僅能支持http和Email,這樣就在適用范圍上面小很多,這個它的弱勢;
    7. N1.ginx不僅僅是一款優(yōu)秀的負載均衡器/反向代理軟件,它同時也是功能強大的Web應(yīng)用服務(wù)器。LNMP現(xiàn)在也是非常流行的web架構(gòu),大有和以前最流行的LAMP架構(gòu)分庭抗爭之勢,在高流量的環(huán)境中也有很好的效果。
    8. Nginx現(xiàn)在作為Web反向加速緩存越來越成熟了,很多朋友都已在生產(chǎn)環(huán)境下投入生產(chǎn)了,而且反映效果不錯,速度比傳統(tǒng)的Squid服務(wù)器更快,有興趣的朋友可以考慮用其作為反向代理加速器。

    HAProxy的特點是:

    1. HAProxy是支持虛擬主機的,以前有朋友說這個不支持虛擬主機,我這里特此更正一下。
    2. 能夠補充Nginx的一些缺點比如Session的保持,Cookie的引導(dǎo)等工作
    3. 支持url檢測后端的服務(wù)器出問題的檢測會有很好的幫助。
    4. 它跟LVS一樣,本身僅僅就只是一款負載均衡軟件;單純從效率上來講HAProxy更會比Nginx有更出色的負載均衡速度,在并發(fā)處理上也是優(yōu)于Nginx的。
    5. HAProxy可以對Mysql讀進行負載均衡,對后端的MySQL節(jié)點進行檢測和負載均衡,不過在后端的MySQL slaves數(shù)量超過10臺時性能不如LVS,所以我向大家推薦LVS+Keepalived。

    HAProxy的算法現(xiàn)在也越來越多了,具體有如下8種:

    1. roundrobin,表示簡單的輪詢,這個不多說,這個是負載均衡基本都具備的;
    2. static-rr,表示根據(jù)權(quán)重,建議關(guān)注;
    3. leastconn,表示最少連接者先處理,建議關(guān)注;
    4. source,表示根據(jù)請求源IP,這個跟Nginx的IP_hash機制類似,我們用其作為解決session問題的一種方法,建議關(guān)注;
    5. ri,表示根據(jù)請求的URI;
    6. rlparam,表示根據(jù)請求的URl參數(shù)'balance urlparam' requires an URL parameter name;
    7. hdr(name),表示根據(jù)HTTP請求頭來鎖定每一次HTTP請求;
    8. rdp-cookie(name),表示根據(jù)據(jù)cookie(name)來鎖定并哈希每一次TCP請求。

    posted @ 2013-07-16 15:52 ideame 閱讀(1215) | 評論 (0)編輯 收藏

    2011年11月12日

    Git on Windows

    下載文件 http://msysgit.googlecode.com/files/PortableGit-1.7.7.1-preview20111027.7z

    解壓至 D:\JavaSoft\git-1.7.7.1

    增加系統(tǒng)環(huán)境路徑:D:\JavaSoft\git-1.7.7.1\bin;D:\JavaSoft\git-1.7.7.1\cmd;

    設(shè)置系統(tǒng)屬性:
    git config --global user.name "your.name" git config --global user.email git.mail.name@gmail.com

    創(chuàng)建密鑰:

    mkdir /.ssh

    ssh-keygen -f D:\JavaSoft\git-1.7.7.1\.ssh\id_rsa -t rsa -C 'git.mail.name@gmail.com' -t rsa

    復(fù)制 id_rsa.pub 的內(nèi)容,到github.com增加公鑰,然后粘貼保存。

    測試:git -v -T git@github.com

    Hi your.name! You've successfully authenticated, but GitHub does not provide shell access.

    posted @ 2011-11-12 11:27 ideame 閱讀(347) | 評論 (0)編輯 收藏

    2011年5月18日

    yum 上海交通大學(xué) Repository

    /etc/yum.repos.d/CentOS-Base.repo

    [base]
    name
    =CentOS-5?-?Base
    repo
    =os
    baseurl
    =http://ftp.sjtu.edu.cn/centos/5/os/$basearch/
    gpgcheck
    =1
    gpgkey
    =http://ftp.sjtu.edu.cn/centos/RPM-GPG-KEY-CentOS-5

    #released?updates
    [update]
    name
    =CentOS-5?-?Updates
    baseurl
    =http://ftp.sjtu.edu.cn/centos/5/updates/$basearch/
    gpgcheck
    =1
    gpgkey
    =http://ftp.sjtu.edu.cn/centos/RPM-GPG-KEY-CentOS-5

    #packages?used/produced?in?the?build?but?not?released
    [addons]
    name
    =CentOS-5?-?Addons
    baseurl
    =http://ftp.sjtu.edu.cn/centos/5/addons/$basearch/
    gpgcheck
    =1
    gpgkey
    =http://ftp.sjtu.edu.cn/centos/RPM-GPG-KEY-CentOS-5

    #additional?packages?that?may?be?useful
    [extras]
    name
    =CentOS-5?-?Extras
    baseurl
    =http://ftp.sjtu.edu.cn/centos/5/extras/$basearch/
    gpgcheck
    =1
    gpgkey
    =http://ftp.sjtu.edu.cn/centos/RPM-GPG-KEY-CentOS-5

    #additional?packages?that?extend?functionality?of?existing?packages
    [centosplus]
    name
    =CentOS-5?-?Plus
    baseurl
    =http://ftp.sjtu.edu.cn/centos/5/centosplus/$basearch/
    gpgcheck
    =1
    enabled
    =0
    gpgkey
    =http://ftp.sjtu.edu.cn/centos/RPM-GPG-KEY-CentOS-5

    #contrib?-?packages?by?Centos?Users
    [contrib]
    name
    =CentOS-5?-?Contrib
    baseurl
    =http://ftp.sjtu.edu.cn/centos/5/contrib/$basearch/
    gpgcheck
    =1
    enabled
    =0
    gpgkey
    =http://ftp.sjtu.edu.cn/centos/RPM-GPG-KEY-CentOS-5

    posted @ 2011-05-18 17:36 ideame 閱讀(513) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 日本亚洲欧美色视频在线播放 | 91在线视频免费91| 久久亚洲私人国产精品| 国产精品成人啪精品视频免费| 最近中文字幕大全免费版在线 | 免费一区二区无码视频在线播放| 日韩精品视频免费在线观看| 亚洲a∨无码一区二区| 又黄又爽的视频免费看| 91亚洲自偷手机在线观看| 一区二区三区视频免费| 亚洲七七久久精品中文国产| 中文字幕视频免费在线观看| 成人在线视频免费| 亚洲AV无码国产一区二区三区| 国产做床爱无遮挡免费视频| 亚洲精品黄色视频在线观看免费资源 | 亚洲免费在线视频观看| 国产又黄又爽胸又大免费视频 | 亚洲色大成网站www永久一区| 在线亚洲午夜片AV大片| 少妇太爽了在线观看免费视频| 免费人成视网站在线观看不卡| 中美日韩在线网免费毛片视频| 国产亚洲精品无码成人| 人妻仑刮八A级毛片免费看| 国产亚洲日韩在线三区| 美女内射毛片在线看免费人动物 | 亚洲人成国产精品无码| 日本不卡免费新一区二区三区| 亚洲成a人片在线观看中文app| 免费理论片51人人看电影| 久久国产福利免费| 国产亚洲美女精品久久久2020| 啦啦啦完整版免费视频在线观看| 亚洲AV电影天堂男人的天堂| 亚洲AV永久无码区成人网站| 午夜爱爱免费视频| 亚洲中文字幕无码爆乳app| 色婷婷7777免费视频在线观看| 免费国产a理论片|