Django + Hylang

DjangoでHylangを使ってみるテスト

Projectの作成

# 必要なライブラリの設定
# (mkvirtualenvとかはインストールしてあること前提)
$ mkvirtualenv django
$ pip install hy
$ pip install django
# Djangoプロジェクト作成
$ django-admin startproject hydjango
$ cd hydjango
# DBとかのセットアップ
$ python manage.py migrate
$ python manage.py startapp hyapp
# Templateフォルダ作成
$ mkdir templates

ファイルの変更

  • hydjango/settings.pyを編集
INSTALLED_APPS = (
  # なんやらかんやら書いてあるので、最後に下記を追加
  'hyapp',
  )
# ...
TEMPLATES = [
  'BACKEND': ...
  # DIRSの所に、上で作成したtemplatesフォルダを指定する
  'DIRS': [os.path.join(BASE_DIR, "templates")],
  'APP_DIRS': ...
  ...
]
  • templates/hyapp_index.htmlを編集
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  <h2>Hylang + Djangoサンプル</h2>
</body>
</html>
  • hydjango/urls.pyを編集
# import文に下記を追加
import hy
import hyapp
from hyapp import views
# urlpatternsに下記を追加
urlpatterns = [
  url(r'^admin/', include(admin.site.urls)),
  # 下記を追加
  url(r'^', hyapp.views.main),
]
  • hyapp/views.hyを編集
    (*) hyapp/views.pyを消してviews.hyを作成する
(import os)
(import [django.shortcuts [render]])
(import [django.http [HttpResponse]])
(import [django.template [RequestContext loader]])

(defun main [request]
  (setv template (.get_template loader "hyapp_index.html"))
  (setv context (RequestContext request {}))
  (HttpResponse (.render template context)))
  • サーバ実行
$ python manage.py runserver 0.0.0.0:8888

GitHub

下記に上げたので参考にどうぞ
https://github.com/dis-kaichi/hylang-samples

所感

とりあえず、views.pyをviews.hyに変えるだけでよかったので、難しくはなかった。
需要あるのかねコレ?
公式サイト見るとhttps://github.com/paultag/djlisp/tree/master/djlispみたいなのがあるので、完全にhylangにしたい場合はそっちを参考にすると良いかも

GitHub連携メモ

GitHubと連携する方法

いつも忘れるのでメモ。

GitHub上でプロジェクト追加

別にローカルでもいいけどめんどいので、GitHub上でやる

ローカルにクローン

GitHub上の「SSH clone URL」を参照して、ローカルにクローンを作る。

# サンプル
git clone git@github.com:dis-kaichi/hylang-samples.git

Gitの設定

# 取り敢えずGlobalで設定する
## user.name/user.emailは設定しないとcommitができないので必須
git config --global user.name "UserName"
git config --global user.email "MyEmail@xxx.com"
git ocnfig --global core.editor vim

ファイル編集

# 追加 & Commit
git add my_program.hy
git commit

GitHubにpush

# サンプル
git push git@github.com:dis-kaichi/hylang-samples.git

こんな感じ。

プリンタドライバインストール

プリンタドライバのインストール

ドライバDL

Linuxでプリンタのドライバをインストールする場合、Windowsの様に接続したら勝手にやってくれるわけではないので、自分でドライバを持ってくる必要がある。
今回の型番は「PIXUS MG4130」なので、以下からLinux/Ver3.60/Debian版をDLする。
http://cweb.canon.jp/cgi-bin/download/select-os.cgi?i_cd_pr_catg=011&i_cd_pr=3161&i_pr_search_word=&i_fl_select_pr_catg=1

libtiff4がapt-getでインストールできない

ここ参照How-to Install libtiff4 for Ubuntu 14.04 Trusty LTS Linux Easy Guide

必要なパッケージをインストール

上記のtarファイルを解凍すると、packagesディレクトリの中に、amd64(64bit)のdebファイルが2つある。
それらをインストールしようとすると、パッケージが足りないと言われるので、色々追加する。

# 色々追加したもの(下)
sudo apt-get install libtiff4-dev libtiff5-dev libtiffxx5 zlib1g-dev libjpeg-dev libjpeg8-dev libjbig-dev liblzma-dev libjpeg-turbo8-dev libtiff4

日本語打ち込み小ネタ

mozc + 月配列

mozcで月配列を実現する方法は、以前紹介したが、この入力で1個問題がある。
例えば「は」(1文字)を入力したい場合、「a」を入力するのだが、aを入力しただけでは「は」に変換されない。
次に何か文字を入力するか、「F6」などでひらがなにする必要があり、かなり面倒。
結論としては、どうしようもないので、ひらがなにするキーを打つ事になるのだが、「F6」はフォームポジションを崩すので、べつなキーでやる事にする。

mozcショートカットキー

mozcのデフォルトのショートカットキーを利用して解決する。

キー 機能
C-u ひらがな
C-i カタカナ
C-p 英字全角
C-t 英字半角

ちなみにWindowsでもできるので活用しよう

ディスプレイ追加

Basixでディスプレイ追加

久しぶりにやったら、やり方を忘れていたので、備忘としてメモしておく。
Linux,画面解像度のお手軽設定( cvt, xrandrの利用)|世界的日曜WEBプログラマー日記
基本的に上記参照。

ディスプレイをPCに挿して、下記コマンドを実行。

xrandr --current

下記の様に表示される。
端子一覧と利用できるサイズが表示されるので、適当なものを選ぶ。
(下記はノートPCの画面(LVDS1)のみであるが、ディスプレイが接続されているとHDMI1, VGA1の下に一覧が表示される。)

Screen 0: minimum 320 x 200, current 1366 x 768, maximum 32767 x 32767
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
1366x768       60.0*+
1360x768       59.8     60.0  
1024x768       60.0  
800x600        60.3     56.2  
640x480        59.9  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

HDMIでテレビを繋いだ場合の設定。(今回設定した内容)
長いので、スクリプトにしておいた方が良いかと。

xrandr --output LVDS1 --mode 1366x768 --rate 60.0 --output HDMI1 --mode 1920x1080i --rate 59.9 --primary --right-of LVDS1

PythonでLISP

PythonLispがしたい

Hy(hylang)とか言う、LISP方言があるらしい。
公式
数多くのLISP方言があるが、このHyの何がすごいのかというと、Pythonで実装されているのである。
雰囲気的には、 Javaに於けるClojureみたいなもので、HyPythonの連携が容易である。
つまり、PythonistaでLisperの人にとっては夢のような言語なのである。
(実行速度が速いかどうかは置いといて。。。)
ClojureからJavaライブラリが容易に扱えるように、HyからPythonのライブラリも容易に扱える。

Vimで使う場合

VimにはHy用のfiletypeは(多分)無いので、何か別のもので代用する必要がある。
何がベストなのかは分からないが、とりあえずClojureにしている。
(関数の引数とかの書き方がClojureっぽいので)

; vimrcに下記を書いておくと、自動的にファイルタイプを設定してくれる
au BufRead,BufNewFile *.hy set filetype=clojure
; または起動後に、下記を実行
; :set filetype=clojure

Clojureが無い場合はLispでいいんじゃないかな。

インストール & 実行

インストールはPythonのライブラリ環境操作コマンドであるpipより簡単にできる。

; インストール
pip install hy
; 実行
hy sample.hy