2011年10月27日木曜日

あるー日♪homwbrewをupdateしたらエラーがでよった。

あるー日♪homwbrewをupdateしたらエラーがでよった。

追記

検索したらhttps://github.com/mxcl/homebrew/issues/2906で対処方法が書いてあった。

対処

ううむ。とりあえず以下のようにして対処。
sudo chown -R `whoami` /usr/local
cd /usr/local
git stash
git reset --hard
brew update
git stash
sudo chown -R root /usr/local
git stash clear

出たエラー

$ brew update
remote: Counting objects: 6067, done.
remote: Compressing objects: 100% (2320/2320), done.
remote: Total 5519 (delta 4066), reused 4343 (delta 3138)
Receiving objects: 100% (5519/5519), 906.93 KiB | 274 KiB/s, done.
Resolving deltas: 100% (4066/4066), completed with 437 local objects.
From http://github.com/mxcl/homebrew
* branch            master     -> FETCH_HEAD
error: unable to unlink old '.gitignore' (Permission denied)
Updating 8e52cfa..d34a131
Error: Failed while executing git pull http://github.com/mxcl/homebrew.git master
Permisson deniedというのでsudoしたらエラーがでよった。
$ sudo brew update
From https://github.com/mxcl/homebrew
* [new branch]      master     -> origin/master
error: Your local changes to the following files would be overwritten by merge:
Library/Contributions/brew_bash_completion.sh
Library/Contributions/brew_zsh_completion.zsh
Library/Contributions/examples/brew-bottle.rb
Library/Contributions/examples/brew-missing.rb
Library/Contributions/examples/brew-pull.rb
Library/Contributions/examples/brew-server
Library/Contributions/examples/brew-unpack.rb
Library/Contributions/manpages/brew.1.md
Library/Formula/a2ps.rb
Library/Formula/aamath.rb
Library/Formula/ack.rb
Library/Formula/activemq.rb
Library/Formula/adns.rb
Library/Formula/android-ndk.rb
Library/Formula/android-sdk.rb
Library/Formula/ansifilter.rb
Library/Formula/antlr.rb
Library/Formula/aplus.rb
Library/Formula/app-engine-java-sdk.rb
Library/Formula/aqbanking.rb
Library/Formula/aria2.rb
Library/Formula/arm.rb
Library/Formula/asciidoc.rb
Library/Formula/aspell.rb
Library/Formula/asymptote.rb
Library/Formula/atf.rb
Library/Formula/atk.rb
Library/Formula/atlassian-plugin-sdk.rb
Library/Formula/atomicparsley.rb
Library/Formula/audiofile.rb
Library/Formula/authexec.rb
Library/Formula/autoconf-archive.rb
Library/Formula/autogen.rb
Library/Formula/autojump.rb
Library/Formula/avrdude.rb
Library/Formula/aws-cfn-tools.rb
Library/Formula/bagit.rb
Library/Formula/bash-completion.rb
Library/Formula/bash.rb
Library/Formula/bazaar.rb
Library/Formula/bdw-gc.rb
Library/Formula/beanstalk.rb
Library/Formula/bedtools.rb
Library/Formula/binutils.rb
Library/Formula/bmon.rb
Library/Formula/boost.rb
Library/Formula/botan.rb
Library/Formula/bulk_extractor.rb
Library/Formula/bullet.rb
Library/Formula/bwa.rb
Library/Formula/byobu.rb
Library/Formula/c-ares.rb
Library/Formula/cabal-install.rb
Library/Formula/cairo.rb
Library/Formula/cassandra.rb
Library/Formula/ccache.rb
Library/Formula/cdecl.rb
Library/Formula/cdparanoia.rb
Library/Formula/cfitsio.rb
Library/Formula/cflow.rb
Library/Formula/cherokee.rb
Library/Formula/chocolate-doom.rb
Library/Formula/chromedriver.rb
Library/Formula/class-dump.rb
Library/Formula/clisp.rb
Library/Formula/cliweather.rb
Library/Formula/clojure-contrib.rb
Library/Formula/clojure.rb
Library/Formula/cmake.rb
Library/Formula/cmigemo.rb
Library/Formula/coda-cli.rb
Library/Formula/color-code.rb
Library/Formula/coreutils.rb
Library/Formula/couchdb-lucene.rb
Library/Formula/couchdb.rb
Library/Formula/cppcheck.rb
Library/Formula/cppdom.rb
Library/Formula/cppunit.rb
Library/Formula/csshx.rb
Library/Formula/csstidy.rb
Library/Formula/csv-fix.rb
Library/Formula/cufflinks.rb
Library/Formula/curl.rb
Library/Formula/d-bus.rb
Library/Formula/dash.rb
Library/Formula/dcmtk.rb
Library/Formula/dcraw.rb
Library/Formula/ddclient.rb
Library/Formula/ddrescue.rb
Library/Formula/deja-gnu.rb
Library/Formula/dialog.rb
Library/Formula/diction.rb
Library/Formula/diffpdf.rb
Library/Formula/direnv.rb
Library/Formula/discount.rb
Library/Formula/djmount.rb
Library/Formula/djview4.rb
Library/Formula/dmd.rb
Library/Formula/dnsmasq.rb
Library/Formula/dos2unix.rb
Library/Formula/dotless.rb
Library/Formula/dovecot.rb
Library/Formula/doxygen.rb
Library/Formula/duplicity.rb
Library/Formula/dvtm.rb
Library/Formula/easy-tag.rb
Library/Formula/ec2-api-tools.rb
Library/Formula/eigen.rb
Library/Formula/ejabberd.rb
Library/Formula/elasticsearch.rb
Library/Formula/elb-tools.rb
Library/Formula/elinks.rb
Library/Formula/emacs.rb
Library/Formula/encfs.rb
Library/Formula/erlang.rb
Library/Formula/esniper.rb
Library/Formula/exiftool.rb
Library/Formula/exult.rb
Library/Formula/fantom.rb
Library/Formula/feh.rb
Library/Formula/fex.rb
Library/Formula/ffmpeg.rb
Library/Formula/ffmpegthumbnailer.rb
Library/Formula/fftw.rb
Library/Formula/figlet.rb
Library/Formula/findutils.rb
Library/Formula/fio.rb
Library/Formula/fltk.rb
Library/Formula/fossil.rb
Library/Formula/freetds.rb
Library/Formula/frink.rb
Library/Formula/ftimes.rb
Library/Formula/gauche.rb
Library/Formula/gawk.rb
Library/Formula/gcal.rb
Library/Formula/gd.rb
Library/Formula/gdal.rb
Lib
error: The following untracked working tree files would be overwritten by merge:
Library/Aliases/boehmgc
Library/Aliases/dwarffortress
Library/Aliases/gjstest
Library/Aliases/libnettle
Library/Aliases/mediainfo
Library/Aliases/unix2dos
Library/Aliases/xmlsec1
Library/Contributions/examples/brew-mirror-check.rb
Library/Formula/aespipe.rb
Library/Formula/aimage.rb
Library/Formula/amap.rb
Library/Formula/anttweakbar.rb
Library/Formula/apiextractor.rb
Library/Formula/apktool.rb
Library/Formula/apparix.rb
Library/Formula/armadillo.rb
Library/Formula/asciitex.rb
Library/Formula/assimp.rb
Library/Formula/auctex.rb
Library/Formula/augeas.rb
Library/Formula/avra.rb
Library/Formula/aws-elasticache.rb
Library/Formula/bbcp.rb
Library/Formula/bonnie++.rb
Library/Formula/cast.rb
Library/Formula/cfengine.rb
Library/Formula/chkrootkit.rb
Library/Formula/cminpack.rb
Library/Formula/convertlit.rb
Library/Formula/cpputest.rb
Library/Formula/cssembed.rb
Library/Formula/csup.rb
Library/Formula/csvprintf.rb
Library/Formula/cunit.rb
Library/Formula/curlpp.rb
Library/Formula/daq.rb
Library/Formula/dc3dd.rb
Library/Formula/ddd.rb
Library/Formula/denyhosts.rb
Library/Formula/dfu-util.rb
Library/Formula/djvu2pdf.rb
Library/Formula/dsocks.rb
Library/Formula/dwarf-fortress.rb
Library/Formula/figtoipe.rb
Library/Formula/flann.rb
Library/Formula/fuse4x-kext.rb
Library/Formula/fuse4x.rb
Library/Formula/gearman-php.rb
Library/Formula/generatorrunner.rb
Library/Formula/ggobi.rb
Library/Formula/git-url-sub.rb
Library/Formula/google-js-test.rb
Library/Formula/grads.rb
Library/Formula/graylog2-server.rb
Library/Formula/gremlin.rb
Library/Formula/growly.rb
Library/Formula/gsutil.rb
Library/Formula/gv.rb
Library/Formula/herrie.rb
Library/Formula/hexedit.rb
Library/Formula/hmmer.rb
Library/Formula/httpry.rb
Library/Formula/idutils.rb
Library/Formula/imake.rb
Library/Formula/ipopt.rb
Library/Formula/ipv6calc.rb
Library/Formula/iso-codes.rb
Library/Formula/jbig2dec.rb
Library/Formula/jbig2enc.rb
Library/Formula/jbigkit.rb
Library/Formula/jp2a.rb
Library/Formula/js-test-driver.rb
Library/Formula/jscoverage.rb
Library/Formula/jsonpp.rb
Library/Formula/kbtin.rb
Library/Formula/kdiff3.rb
Library/Formula/libflowmanager.rb
Library/Formula/libmp3splt.rb
Library/Formula/libraw.rb
Library/Formula/libtommath.rb
Library/Formula/libunique.rb
Library/Formula/libutf.rb
Library/Formula/libxmlsec1.rb
Library/Formula/libxslt.rb
Library/Formula/libyubikey.rb
Library/Formula/liquibase.rb
Library/Formula/minised.rb
Library/Formula/montage.rb
Library/Formula/mp3splt.rb
Library/Formula/mupdf.rb
Library/Formula/mysql++.rb
Library/Formula/mysql-connector-c++.rb
Library/Formula/neo4j.rb
Library/Formula/nettle.rb
Library/Formula/nss.rb
Library/Formula/ntfs-3g.rb
Library/Formula/ntl.rb
Library/Formula/opencc.rb
Library/Formula/openmeeg.rb
Library/Formula/p11-kit.rb
Library/Formula/parmetis.rb
Library/Formula/pdfgrep.rb
Library/Formula/peg-markdown.rb
Library/Formula/pngwriter.rb
Library/Formula/podofo.rb
Library/Formula/pyqwt.rb
Library/Formula/pyside-tools.rb
Library/Formula/pyside.rb
Library/Formula/qfits.rb
Library/Formula/qi.rb
Library/Formula/qprint.rb
Library/Formula/rbenv-gemset.rb
Library/Formula/robodoc.rb
Library/Formula/rsyslog.rb
Library/Formula/ruby-build.rb
Library/Formula/s3fs.rb
Library/Formula/saga-core.rb
Library/Formula/salt.rb
Library/Formula/sc68.rb
Library/Formula/scotch.rb
Library/Formula/sersniff.rb
Library/Formula/shen.rb
Library/Formula/shiboken.rb
Library/Formula/sisc-scheme.rb
Library/Formula/snort.rb
Library/Formula/solid.rb
Library/Formula/spiped.rb
Library/Formula/sshfs.rb
Library/Formula/sslscan.rb
Library/Formula/star.rb
Library/Formula/stress.rb
Library/Formula/synfigstudio.rb
Library/Formula/tinyfugue.rb
Library/Formula/topgit.rb
Library/Formula/transmission.rb
Library/Formula/tup.rb
Library/Formula/udis86.rb
Library/Formula/udns.rb
Library/Formula/unifdef.rb
Library/Formula/unrtf.rb
Library/Formula/whatmask.rb
Library/F
Updating 8e52cfa..d34a131
Aborting
Error: Failed while executing git pull  origin refs/heads/master:refs/remotes/origin/master

2011年10月18日火曜日

jQuery templatesを利用して元のHTMLにテンプレート用のタグをできるだけ入れないようにしてみた

jQuery templatesを利用して、支給されたhtmlにデータを動的に適用します。

方針

  • できる限りもとのHTMLをいじらない
  • 動的に変更されるデータ部分に適用されているサンプルデータを消さない
  • テンプレート部分は外だしする

説明

こんな感じのHTMLがデザイナさんから提供されたとします。
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <h1>sample</h1>
    <h2>リスト</h2>
    <ol id="result-list">
        <li><b>鈴木(30)</b>:女性</li>
        <li><b>安藤(20)</b>:男性</li>
    </ol>
    
    <hr/>
    
    <h2>テーブル</h2>
    <table>
        <thead>
            <tr>
                <th>name</th>
                <th>age</th>
                <th>sex</th>
            </tr>
        </thead>
        <tbody id="result-table">
            <tr>
                <td>鈴木</td>
                <td>30</td>
                <td>女性</td>
            </tr>
            <tr>
                <td>安藤</td>
                <td>20</td>
                <td>男性</td>
            </tr>
        </tbody>
    </table>
  </body>
</html>

動的に変更される部分の確認

サンプルでデータが入っていますが、動的に変更される箇所が2カ所あります。

<li><b>鈴木(30)</b>:女性</li>
<li><b>安藤(20)</b>:男性</li>

<tr>
    <td>鈴木</td>
    <td>30</td>
    <td>女性</td>
</tr>
<tr>
    <td>安藤</td>
    <td>20</td>
    <td>男性</td>
</tr>

テンプレート化

では、この部分をテンプレート化します。項目は三つで「名前」「年齢」「性別」なので、単純に「${変数名}」として置き換えます。

<li><b>${name}(${age})</b>:${sex}</li>

<tr><td>${name}</td><td>${age}</td><td>${sex}</td></tr>

jQuery.templatesを利用してテンプレートをコードとして格納する

$.template(name, template)というメソッドを使って$.templateというmapに先ほど作成したテンプレートを格納します。
$.templateというmapにnameがkeyでtemplateがvalueとして格納されます。mapなので、$.template["name"]でtemplateが参照できます。

先ほどのHTMLで動的に変更される部分にidがついていたので、それをそのままtemplate名としてしまいましょう。

index.template.js
$(function(){
    $.template(
        "result-list", 
        "<li><b>${name}(${age})</b>:${sex}</li>"
    );
    
    $.template(
        "result-table", 
        "<tr><td>${name}</td><td>${age}</td><td>${sex}</td></tr>"
    );
});

元のhtmlにjQuery、jQuery templates、自作のテンプレートを読み込ませる

今回はjQueryとjQuery templatesを利用するのでheadで読み込ませます。先ほど作成したindex.template.jsも読み込ませておきます

この時点では以下の通りです。

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js"></script>    
    <script type="text/javascript" src="index.template.js"></script>    
  </head>
  <body>
    <h1>sample</h1>
    <h2>リスト</h2>
    <ol id="result-list">
        <li><b>鈴木(30)</b>:女性</li>
        <li><b>安藤(20)</b>:男性</li>
    </ol>
    
    <hr/>
    
    <h2>テーブル</h2>
    <table>
        <thead>
            <tr>
                <th>name</th>
                <th>age</th>
                <th>sex</th>
            </tr>
        </thead>
        <tbody id="result-table">
            <tr>
                <td>鈴木</td>
                <td>30</td>
                <td>女性</td>
            </tr>
            <tr>
                <td>安藤</td>
                <td>20</td>
                <td>男性</td>
            </tr>
        </tbody>
    </table>
  </body>
</html>

テンプレートにデータを適用する。

とりあえず、index.jsなどとして、配列に名前、年齢、性別を持ったオブジェクトを詰めておきます。実際にはajaxアクセスなどして取得したjsonとかを詰めることになると思います。
$.tmpl(template, data)でtemplateにdataが反映されるので、適用したいtargetにappendToすることで反映されます。
サンプルデータが入っているので、最初に空にしてから反映するというメソッドにしています。

index.js
$(function() {    
    var data = [
        { name:"鈴木", age:20, sex:"男性" },
        { name:"田中", age:50, sex:"女性" },
        { name:"齋藤", age:35, sex:"週二回" },
    ];
    
    var appendTemplate = function(template, target){
        $(target).empty();
        $.tmpl(template, data).appendTo(target);            
    }

    appendTemplate("result-list","#result-list");      
    appendTemplate("result-table","#result-table");
});

完成品はgitHubに上げてあります。JavaScriptを無効にすると元々のサンプルデータが入った状態になります。