逝者如斯夫

          靜而思之
          數據加載中……

          2013年11月3日

          Docker Registry 安裝和運行

          使用場景

          • 內部網絡,無法訪問 Docker Hub
          • 控制 image 的存儲方式和存儲位置
          • 控制 image 的部署流程
          • 內部開發流程需要集成控制 image 的部署和存儲

          應用邏輯示意圖:

          ?

          安裝 Registry 服務

          概要

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

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

          官方文檔參考:

          最簡安裝(啟動)

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

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

          啟用登錄密碼

          生成密碼

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

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

          啟用密碼

          通過 –volume 參數傳入密碼文件:

          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
          

          修改鏡像存儲

          默認鏡像數據存儲在 Docker Volume 中,可以通過 bind mount 進行修改,參數信息參考 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
          

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

          停止服務

          停止 registry 容器并清理運行數據

          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
          

          發布鏡像

          登錄服務

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

          docker login <REGISTRY_HOST>:<REGISTRY_PORT>
          

          輸入安裝時設定的用戶名密碼。

          目標地址

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

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

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

          • IMAGE_NAME 發布目標鏡像名稱

          • IMAGE_VERSION 發布目標鏡像版本

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

          發布鏡像

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

          Pull

          docker pull registry
          

          Build

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

          首先需要對鏡像 tag 設定目標倉庫,如果 build 的時候已經設置了目標地址,可以不用進行 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 服務后,對 registry 的管理界面在本機的訪問地址是http://localhost:8080,一般 ui 服務會和 registry 服務同樣運行在私有網絡,所以我們可以發布 registry ui 到 registry 服務器再運行。

          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 閱讀(1306) | 評論 (0)編輯 收藏

          Zookeeper Cli 常用命令

          服務管理

          • 啟動ZK服務: zkServer.sh start
          • 查看ZK狀態: zkServer.sh status
          • 停止ZK服務: zkServer.sh stop
          • 重啟ZK服務: zkServer.sh restart

          終端操作

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

          zkCli.sh -server 127.0.0.1:2181
          

          命令行工具常用操作:

          • 顯示根目錄下文件

            ls /              //查看當前節點數據
            ls2 /             //查看當前節點數據并能看到更新次數等數據
            
          • 創建文件, 并設置初始內容:

            create /config "test" //創建一個新的節點并設置關聯值
            create /config “”     //創建一個新的空節點
            
          • 獲取文件內容

            get /brokers      //獲取節點內容
            
          • 修改文件內容

            set /zk "zkbak"   //對 zk 所關聯的字符串進行設置
            
          • 刪除文件

            delete /brokers  //刪除節點
            rmr    /brokers  //刪除節點及子節點
            

          四字命令

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

          echo conf | nc 132.37.3.26 26181
          

          ZooKeeper 常用四字命令:

          • conf

            輸出相關服務配置的詳細信息

          • cons

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

          • dump

            列出未經處理的會話和臨時節點。

          • envi

            輸出關于服務環境的詳細信息(區別于 conf 命令)。

          • reqs

            列出未經處理的請求

          • ruok

            測試服務是否處于正確狀態。如果確實如此,那么服務返回“ imok ”,否則不做任何相應

          • stat

            輸出關于性能和連接的客戶端的列表。

          • wchs

            列出服務器 watch 的詳細信息

          • wchc

            通過 session 列出服務器 watch 的詳細信息,它的輸出是一個與 watch 相關的會話的列表

          • wchp

            通過路徑列出服務器 watch 的詳細信息。它輸出一個與 session 相關的路徑

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

          JMH(Java Micro Benchmark) 簡介

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

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

          如何將 SVN 源碼庫轉換為 Mercurial

          如何將 SVN 源碼庫轉換為 Mercurial [1]

          首先得安裝 Subversion 庫函數

          				    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/
          
          		

          執行轉換命令

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

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

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

          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!|    |       |
              |     wmqeeuq|   |       |    |       |
              +---+----+   +-------+    +-------+
                  :                         ^
                  |       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
          +-----+
          |wmqeeuq  |
          |     |
          |     |
          +-----+
          		  
          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 閱讀(527) | 評論 (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 閱讀(393) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 庐江县| 兴文县| 遂川县| 吉木乃县| 石狮市| 望都县| 仙桃市| 邮箱| 文水县| 石渠县| 泗水县| 泰宁县| 保靖县| 兰考县| 武功县| 海门市| 壤塘县| 奉节县| 南皮县| 安吉县| 霍邱县| 焦作市| 嘉荫县| 南江县| 建瓯市| 临沧市| 吴旗县| 枣庄市| 古交市| 枣强县| 翼城县| 台山市| 遵化市| 石首市| 三门峡市| 剑阁县| 博客| 隆昌县| 富锦市| 兖州市| 临夏县|