Archive for the ‘Programming’ Category

687474703a2f2f626f7765722e696f2f696d672f626f7765722d6c6f676f2e706e67

ちょっとウェブサイトのスクラッチをしようと思って、CMSフレームワークはGumbyを使おうと思ってスタート。

以前にもつかった事あるし〜と思いながらGumbyのDLサイトに行くとGumbyの開発が終了したとのおしらせ。
なぜ・・・。

結局CSSフレームワークはBootstrap一強時代に突入なのか。
Gumby使い勝手よかっただけに残念です。今後OSS化するらしい。
Bootstrapの学習面倒くさい・・・。

気を取り直してまだ下の方でDL出来たのでGumbyゲット(結局使うやつ)

さて、今回はParallaxを使いたかったのでBowerを使ってParallaxを導入としたところ、npmもbowerも環境がなかったので構築しようとしたところハマったのでメモです。

npmのインストール

# apt-get install npm
でOKです。

npmを使ってbowerのインストール

# npm install -g bower

でどうぞ。
ちなみに-gはグローバルにインストールという事でこれをつけるとpathが通るって事だと思います。

続いて、gumbyのディレクトリに移動してから

$ bower install gumby-parallax

としたところ、

との表示が。

bowerないじゃん!

という事で、解決策を探したところありました。

# ln -s /usr/bin/nodejs /usr/bin/node

をしたらいいとの事です。

/usr/bin/node を /usr/bin/nodejs にリンクさせてあげたらよかったんですね。

これでめでたく、parallaxのmoduleがゲットできました。

それでは、また。

python-logo-master-v3-TM

先日Linux上でPythonのプログラムを開発していた時にディレクトリの中の画像ファイル一覧を取得したいなあと思う事がありました。

ディレクトリの中にはテキストファイルや、csvファイルが同時に含まれていたのですが、画像ファイルの一覧だけをリスト化したいなあと。

という事でどうやって解決したのかをここに記して置こうと思います。

import commands
jpgList = []
jpgList =  commands.getoutput("ls targetPath | grep *.jpg").split("\n")

osモジュールのlistdir()メソッドとかでもディレクトリとファイルの参照が出来るようですが、使い慣れたbashの出力をそのままゲット出来るcommands.getoutput()メソッドの方が便利だなと私は感じました。

このメソッドに文字列を渡すとカレントディレクトリでシェルコマンドを実行、返り値を取得する事ができます。

次のsplit()メソッドがキモなのですが、lsの返り値は”\n”で区切られています。

適当なファイルのあるディレクトリ内で

ls > result.txt
less result.txt

とやってみれば改行がIFS(内部フィールド区切り文字 (Internal Field Separator))となっている事が分かると思います。

よって、split(“\n”)で改行によって分割、リスト化してあげればlsの返り値を簡単にリスト化する事が出来るというワケです。

読者諸兄におかれましては蛇足となりましょうが、 ”| grep *.jpg” によってファイル末尾(拡張子)が”.jpg”のファイル群のみをリストアップするようにする事でjpgファイルらのみをリスト化しております。

python-logo-master-v3-TM

Pythonでは文字列型に文字を挿入するメソッドが存在しないようですね。
リスト型に挿入する方法はあるのですが・・・。

まあここらへんは各々ハックされていらっしゃる事だと存じますが、
今回私が使った手法をご紹介させていただこうとおもいます。

例えば 
“http://www.example.jp/0/1/700/500.1.jpg”という文字列があったとして
文字列中の”/1/”の部分を”/7/”に変更したいとします。
これだけなら.replace()メソッドを使う事で実現できてしまうのですが、もしも文字列が
“http://www.example.jp/1/1/700/500.1.jpg”
であった場合、”/1/”は2つ存在する事になり、両方とも置換されてしまいます。
この様な動作が目的に沿わない場合もある事でしょう。

こういうケースの場合以下の様に書く事によって、任意の場所の文字列を変更する事が可能です。

src = "http://www.example.jp/0/1/700/500.1.jpg"

#文字列の末尾から"/1/"を検索、その場所を確保
idx = src.rfind(r'/1/')

#ここがキモです。pythonでは文字列は非破壊なので、新しい変数を用意する必要があります。
#スライスを使って文字列srcのidxまでの文字列を取得、そこに"/7/"を加えて、更にスライスを用いてidx+3(+3は"/7/"の3文字を表す)より後の文字列を結合させています。
result = src[:idx] + "/7/" + src[idx+3:]

以上の方法によって私は、文字列の挿入を可能としました。

文字列の「スライス」の方法は以下に詳しく書いてあります。
スライスを使った部分文字列の取得