似非プログラマのうんちく

「似非プログラマの覚え書き」出張版

春だから Spring やろうぜ(その 11)

エンティティのバリデーション JPA ではエンティティの各フィールドをバリデーションチェックするためのアノテーションが用意されている。 package jp.mydns.akanekodou.demo.entity; import javax.persistence.Column; import javax.persistence.Entity; im…

春だから Spring やろうぜ(その 10)

入力用のフォームを準備して、データを入力・保存できるようにする。 <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Top page</title> <link th:href="@{/css/hello.css}" rel="stylesheet" /> </head> <body> <h1 th:text="#{content.title}">Top page</h1> <form method="post" action="/" th:object="${formModel}"> </form></body></html>

春だから Spring やろうぜ(その 9)

JPA

エンティティから DDL を自動実行 以下のようなエンティティから DDL を自動で実行してデータベースにテーブルを作ってもらいたい。 package jp.mydns.akanekodou.demo.entity; import javax.persistence.Column; import javax.persistence.Entity; import j…

春だから Spring やろうぜ(その 8)

Thymeleaf で使えるメッセージ式 /src/main/resources フォルダに messages.properties ファイルを作り、以下の内容で保存する。 content.title=Sample page content.message=This is sample message from properties. こうするとテンプレート内で #{content…

春だから Spring やろうぜ(その 7)

Gradle を使ってみる 前回作ったものを ビルドツールとして Maven ではなく Gradle を使ってみる データベースは PostgreSQL を使ってみる で作り直してみる。 プラグインのインストール Gradle によるビルドを行うためには STS にプラグインを入れる必要が…

春だから Spring やろうぜ(その 6)

いよいよデータベースにアクセス 今回は H2 データベースから全件取得して表示するところまで。 Entity クラスの作成 基本的に JPA なのでそんなに難しくない。Lombok を使っているので @Data アノテーションを使うと楽。 package jp.mydns.akanekodou.demo;…

春だから Spring やろうぜ(その 5)

フォームを利用してみる 今回は フォームから入力を受け付ける 入力された値はセッションに保存しておく ところまでやってみる。 <html xmlns:th="http://www.thymeleaf.org"> <head> <title th:text="${title}"/> <link th:href="@{/css/hello.css}" rel="stylesheet" /> </head> <body> <h1 th:text="${title}"/> <p th:text="${message}"/> </p></h1></body></html>

春だから Spring やろうぜ(その 4)

まずは簡素なものを作ってみる まずはフォームも何もない、ただページを表示させるだけのものを作ってみる。ただしメッセージはコントローラーから渡すようにする。 package jp.mydns.akanekodou.demo; import org.springframework.stereotype.Controller; i…

春だから Spring やろうぜ(その 3)

STS(Spring Tool Suite) を使う さて、コマンドライン + Groovy でもまぁ簡素な Web アプリは作れたが、やはり本格的な開発には STS(Spring Tool Suite) が欲しいところなのでダウンロードしてくる。spring.ioeclipse ベースなので見た目はほとんど eclipse …

春だから Spring やろうぜ(その 2)

テンプレートを使ってみる 出力する文字列に HTML を直接打てば表示はされるけど当然ながら面倒くさい。そこで Thymeleaf というテンプレートを使うことにする。先ほどの app.groovy と同じフォルダに新たに templates というフォルダを作り、その中に index…

春だから Spring やろうぜ(その 1)

夏になっても秋になっても続くかも知れませんがそのときは生温かい目で見てやってください(苦笑) 今どきの Spring 事情 Spring はプロジェクトが巨大になり過ぎて、どれをどう使えばいいんだ、と尻込みしてしまう人も多いはず。 今人気の Spring MVC も、本…

巳年じゃないけど Python やろうぜ(その 22・最終回)

すっかり忘れていましたが、Python ネタの締めにこれの話をすると約束していたので書いておきます。 WSGI による Apache HTTPD との連携 Python では WSGI(Web Server Gateway Interface) という、Web サーバーと Web アプリケーションを接続する標準化され…

JUnit 5 でテストコードがだいぶ変わったという話

JUnit 5 がとっくの昔にリリースされてたのを今頃になって確認してみたらいろいろ変わってた話。 アプリケーションコード すごーい(CV : 尾崎由香)簡単な例でスマソ。 package jp.mydns.akanekodou; /** * <p>文字列から整数への変換メソッド提供クラス</p> * * @ve…

巳年じゃないけど Python やろうぜ(その 21)

PostgreSQL の利用 Django はデフォルトで SQLite3 を利用しますが、他のデータベースを活用することもできます。今回はその中から PostgreSQL を利用してみようと思います。 PostgreSQL のインストールと設定 Windows の場合は GUI インストーラもあって、…

Memcached をインストールする

Python シリーズ番外編で Memcached のインストール方法を紹介します。 Windows の場合 こちらが参考になります。Windows で Memcached を使う - make worldmemcached-win64-1.4.4-14.zip をダウンロードしてきて適当なフォルダ(例えば C:\memcached) に解凍…

巳年じゃないけど Python やろうぜ(その 20)

Ajax の活用(続き) バリデーションエラーの出力 フォームのバリデーションエラーに関する情報は form.errors に辞書形式で格納されているので、それを利用すれば行けることがわかりました。views.py from django.shortcuts import render from django.http.r…

巳年じゃないけど Python やろうぜ(その 19)

Ajax の活用 以前作成した customer_search アプリケーションを Ajax を活用して作り変えてみましょう。 Ajax 活用のための準備 Ajax 活用のために、いくつかの準備が必要です。1. js.cookie.js をダウンロードするGitHub - js-cookie/js-cookie: A simple, …

巳年じゃないけど Python やろうぜ(その 18)

キャッシュサーバーの活用 これまではセッションの情報をデータベース(SQLite3)で管理してきましたが、別途キャッシュサーバーを用意して、そちらで管理することもできます。キャッシュサーバーとしてよく使われるのが Memcached です。Memcached のインスト…

巳年じゃないけど Python やろうぜ(その 17)

国際化と翻訳 多くのフレームワークがそうであるように、Django にも国際化の仕組みが備わっています。 下準備 あらかじめ settings.py の USE_I18N が True になっていることを確認します(デフォルトでそうなっていると思います)。今回は customer_search …

巳年じゃないけど Python やろうぜ(その 16)

汎用ビューの活用 Django には、用途に応じて使える汎用ビューが多数用意されています。django_test/urls.py from django.conf.urls import url, include from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^hello…

巳年じゃないけど Python やろうぜ(その 15)

初期データの一括投入 今回から、当ブログではすっかりお馴染みの「政令指定都市一覧」を使って、Django の様々な機能を見ていきます。 $ ./manage.py startapp major_city例によってアプリを作成するところからスタート。Model を作ります。 from django.db…

巳年じゃないけど Python やろうぜ(その 14)

エラー表示の話 フォームのバリデーションエラーの表示場所をカスタマイズする方法があっさりとわかったので、次なるお題に移る前にさくっと書いておきます。 {% load static %} <html> <head> <title>顧客検索</title> <link rel="stylesheet" href="{% static 'customer_search/css/search.css' %}"> </head> <body> <h1>顧客検索</h1> <form method="post" action="."> {% csrf_token %} </form></body></html>

巳年じゃないけど Python やろうぜ(その 13)

ロギングの話 デフォルトでもある程度のログは出力されるのですが、データベースとの連携においては、少なくとも開発の段階では SQL の発行状況などを確認したいと思うはずです。これは settings.py に設定を記述することで可能になります。 LOGGING = { 've…

巳年じゃないけど Python やろうぜ(その 12)

フォームとビューの作成 まずはビューの作成に必要なフォームから作ります。既に Django バリバリ使ってる人なら「ModelForm 使えば楽やろ」って言うと思いますが、実は ModelForm には「(自動生成される id などの)AutoField はフォーム部品化の対象外」だ…

巳年じゃないけど Python やろうぜ(その 11)

管理画面を使う 管理者ユーザーの作成 管理画面を使うにはまず管理者ユーザーを作成しなければなりません。 $ ./manage.py createsuperuser Username (leave blank to use '(snip)'): admin Email address: admin@example.com Password: Password (again): T…

巳年じゃないけど Python やろうぜ(その 10)

だいぶシリーズが長期化してきました(苦笑) Model で遊ぶ 今回使用するデータは「現場で使えるSQL 第2版」のものを使用することにします。現場で使えるSQL 第2版 (DB Magazine SELECTION)作者: 小野哲,藤本亮出版社/メーカー: 翔泳社発売日: 2006/11/16メデ…

巳年じゃないけど Python やろうぜ(その 9)

Model を扱う いよいよ今回から Model を扱います。…の前に。 Atom で Django アプリの開発を快適に行うために すっかり忘れていましたが、Atom で Django アプリの開発を行う際に入れておくと良いパッケージを二つ紹介しておきます。 atom-django django-te…

巳年じゃないけど Python やろうぜ(その 8)

3 週間ほど空いてしまいました。この間こっそりと開発環境を Linux に移行させていたのは秘密です*1。 hello ページを作る(続き) 静的ファイル(CSS, JavaScript, etc...)の配置 今回は CSS を配置してみます。django_test\hello\static\hello というフォルダ…

巳年じゃないけど Python やろうぜ(その 7)

もうちょっとだけ hello ページをいじるよ。 hello ページを作る(続き) テンプレートを使い回す Django には共通のテンプレートを用意してそれを使い回す方法が用意されています。extends と include です。前者はベースとなるテンプレートに個別のテンプレ…

巳年じゃないけど Python やろうぜ(その 6)

Hello ページを作る(続き) 前回までで、テンプレートを利用して Web ページを表示させることができましたが、まだ Web アプリっぽくないですよね。もう少しそれっぽくするにはフォームとかあったらいいんじゃないでしょうかね。 フォームを作成する 今回はフ…