Category: ソフトウェア
案外知られていない気がする。
Ruby や Python では、パッケージを簡単にインストールして利用する方法があって、
Ruby では gem
Python では easy_install
がこれに該当しますかね。
.NET にも NuGet という同様の仕掛けが存在し、
利用することが出来ます。
.NET開発の新標準「NuGet」入門(前編) - @IT
詳細な解説についてはここのあたりを見ておくと良いかと思います。
注:対象は Visual Studio 2010 以降の Visual Studio に限ります。
分からない人向け:
たとえば、今から Twitter の機能を利用したソフトウェアを作ろうとあなたが思ったとき、
以下の選択肢から一つ選ぶことになると思います。
1.自分で OAuth の認証書いて、アクセスするライブラリを作る。
2.インターネットから既存のライブラリをとってくる。
現代においては、教育目的を除いて 1 を選ぶことは殆ど無いかと思います。
(気に入る形に出来ない場合や、そもそも無い場合は作ることにはなりますが。)
となると、現実的な回答としては、2となりますが、
インターネットから探してきて、インストールして・・っていうのは面倒で、
カタカタっと名前を打ったりして、簡単にインストール出来た方がいいわけです。
インストーラが面倒くさいということも考えられるでしょうし、
そもそも、インストーラが無くて、自分で組み込まなければならない場合は面倒になりますし、
友人に教えながら作業するという場合や、雑誌にやり方を載せる場合などにおいては、
友人や読者にファイルのありかを教えなければなりませんし、
複数台に組み込む時なども・・・・ とまぁ、非常にナンセンスな訳です。
そんなわけで、 Python の easy_install や Ruby の gem
そして、この記事で触れる .NET の NuGet などのパッケージ管理ソフトウェアを用いることにより、
単純明快でかつ高速に、ライブラリを用意して使い始めることが出来ます。
また、ライブラリに更新があった場合、手動で入れた場合はまたインストールをしなければなりませんが、
大抵こういうパッケージ管理ソフトでは、アップデートも簡単に行える仕様が備わっています。
という感じで、長文になりましたが、
導入~更新 まで、ライブラリの利用に関するあらゆることを簡単に使えるようにした物。
それが、パッケージ管理ソフトウェア ということになります。
というわけで本題。
1.導入
http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c
上記URL より、 Download をクリックしてダウンロード、インストーラを起動します。
上のような画面が出ますので、インストールをクリックし、導入を完了させます。
2.開発を始める。
いつものように、ソリューションを開きます。
3.パッケージを導入する。
メニューバーの 「ツール」 → 「Library Package Manager」 → 「Package Manager Console」 をクリックします。
コンソールが立ち上がった。
今回は例として、
http://www.twitterizer.net/
上記URL にて公開している、「Twitterizer」を導入してみます。
Install-Package twitterizer
と打って、Enter で実行。
自動的に依存関係が解決された状態で、参照にライブラリが加わり、使えるようになる。
3.コード書いて動かす。
とりあえずこんな感じ。
というわけで、適当に超基本的なコマンドだけ、対応表にするとこんな感じなのかなぁ。
コマンド | NuGet | gem | easy_install |
| hoge をインストール | Install-Package hoge | gem install hoge | easy_install hoge |
| hoge を更新 | Update-Package hoge | gem update hoge | easy_install –U hoge |
| 全部更新 | Update-Package | gem update | easy_install –U |
| hoge を削除 | Uninstall-Package hoge | gem uninstall hoge |
NuGet のコマンドについては、
http://www.atmarkit.co.jp/fdotnet/chushin/nuget_01/nuget_01_02.html
上記URL に大体まとまっているかと思います。
そんな感じで。であであ。
どうもみむらです。
とっても見づらいブログ記事で本当に申し訳ございませんでした。
変に改行とかが入って、おそろしく見づらかったことかと思います。
ということで、今回はそれの犯人と、
修正の方法。
原因:
<pre> </pre> 以降の HTML データが上手く処理されず、
テキストデータとして改行がなされたところに <br /> たぐが自動挿入されたため。
対策:
WordPress 内の wpautop というフィルタによって自動挿入されるため、
http://urbangiraffe.com/plugins/disable-wpautop/
上記URL より入手できるプラグインを導入して処理を除去。
結果:
対策前:
上記のように、文と文が離れていて大変読みづらい状況でした。
対策後:
本来、当方が記述した際の正しい記述にて表示が行われ、
段落ごとに文章がまとまり、見やすくなっています。
というわけで、
WordPress で <pre> を利用してコードを記述している方で、
ずたずたにスタイルが崩れてしまった場合、利用してみてはいかがでしょうか。
ちなみに、RSS フィードに対しても wpautop は適用され、
改行が挿入されますが、
このプラグインでは RSS フィードに対しても有効であり、
かつ、Wordpress をアップデートしても有効となるため、かなり有用かと思います。
体力が切れてきた。やばい。みむらんです。
データベースを使ったサンプルってことで、何かやろうかと思ったのですが、
小さいものが見当たらないので、使い方だけ。
参照 : http://djangoproject.jp/doc/ja/1.0/topics/db/queries.html
1.models.py でモデルを定義しよう
Entry クラスにぼこぼこ書くだけで定義完了です。
class Human(models.Model):
name = models.CharField(max_length=12)
description = models.TextField()
age = models.IntegerField()たとえば、人の名前を管理するなら、こんな感じでしょうか。
| name | CharField(max_length=12) | 最長12文字の文字列 |
| description | TextField() | 文字列 |
| age | IntegerField() | 数字 |
2.データベースへの反映
settings.py に、各種設定を済ませておきます。
| 変数名 | 設定内容 | 例 |
| DATABASE_ENGINE | データベースエンジン | ‘mysql’ / ‘sqlite3’ など |
| DATABASE_NAME | データベース名 | ‘human_db’ |
| DATABASE_USER | ユーザ名 | ‘mimuran’ |
| DATABASE_PASSWORD | パスワード | ‘hogehoge’ |
| DATABASE_HOST | サーバホスト名 | ‘example.com’ |
| DATABASE_PORT | ポート番号 | ‘1234’ |
一通り済ませたら、
$ ./manage.py syndb
で、実データベースに反映します。
3.データの読み書き
書き込み:
data = Human() data.name = u'みむらん' data.age = 19 data.description u'ぱいそんよくわかってない系だんし' data.save()
インスタンスを生成して、ごにょごにょ詰め込んだ後、 save メソッドを呼び出して保存。
すべて読み出し:
all = Human.objects.all()
条件を付けて読み出す:
mimuran = Human.objects.filter(name=u'みむらん')
とりあえず、こんな感じで。
ども、みむらんです。
第2回の続きってことで。
1.テンプレートとなる HTML ファイルを書く。
test_project ディレクトリ以下に templates/test_app ディレクトリを作成し、
templates/test_app ディレクトリ以下に home.html を以下の内容で作成します。
<html>
<head>
<title>{{title}}</title>
</head>
<body>
{% for i in data %}
{{i}}<br/>
{% endblock %}
</body>
</html>{{変数}} というのを、「テンプレート変数」と呼び、
{{% タグ 引数 %}} ~ {{% end タグ %}} というのを、「タグ」と呼びます。
テンプレート変数の記述を用いて、変数の中身を表示させ、
タグの記述を用いて表示上の処理を記述する形となります。
Django テンプレート言語 — Django v1.0 documentation
ぱーっとこのページを見ていた感じでは、以下の要素がよく使われそうな気がします(ぉ
タグ名 | 利用用途 |
| extends [template file] | すでに定義されているテンプレートファイルを継承する。 Java での extend と同義と捉えられるかも。 |
| block [block name] | 継承元:ブロック(範囲)を定義し、継承先で値が変更される場所を設定する。 継承先:事前にブロックとして定義されている範囲のテキストを変更する。 |
| for [val1] in [val2] | val2 から要素を1つ1つ取り出し、 val1 に格納する形で、 for ~ endfor 間を繰り返す。 Java で言うところの foreach がこれに該当。 ちなみに、 Python の for は全て foreach な処理になっている。 |
| if [条件] ~ else ~ endif ifequal [val1] [val2] ~ endifequal ifnotequal [val1] [val2] endnotequal | 条件が真であれば、該当範囲が実行される。通常の if 条件と同じ。 ifequal は2つが等しい場合。 ifnotequal は2つが等しくない場合にそれぞれ実行される。 |
2.settings.py にテンプレートが置かれているディレクトリのパスを記述する。
TEMPLATE_DIRS = ( )
こうなっている部分があるかと思いますが、ここを下記のように書き換えます。
TEMPLATE_DIRS = ( '[test_project までの絶対パス]/templates', )
([test_project までの絶対パス] には、それぞれの環境に合ったパスを記述してください。)
3.views.py を編集する。
test_app に移動し、views.py を以下のように書き換えます。
from django.http import HttpResponse
from django.template import loader, RequestContext
def home(req):
contexts = RequestContext(req, {
'title' : 'hello django!',
'data' : ('Hello', 'django', 'world'),
})
template = loader.get_template('test_app/home.html')
return HttpResponse(template.render(contexts))
最近のコメント