Frege導入

Frege導入

FregeはJVM上で動くHaskellライクな文法の言語

1. jarのDL

ここからfregeXXX.jarを落とす。
DLしたfregeXXX.jarは,どこか特定の場所に置いておく(今回は ~/my/modules/ に置いた)

2. 初期化準備

FregeのGitHubの説明を読むとbuildディレクトリとかfrege.jarへのシンボリックリンクとか必要そうなので、それらを作るシェルスクリプトを作る。

#!/bin/bash

# frege-init というファイル名にでもしておく

if [ ! -e "build" ]; then
  # javaへ変換したファイルを格納するディレクトリは"build"としておく
  mkdir "build"
fi

if [ ! -L "frege.jar" ]; then
  # (*) DLしたfregeXXX.jarは, ~/my/modules/ 直下に置いたとする
  ln -s ~/my/modules/fregeXXX.jar frege.jar
fi

3. vim拡張

vimシンタックスこれを使う
インストールにはNeoBundleを使うと楽(誰かの記事を参考にして入れるといいと思うよ)

" .vimrcに以下を追加すると
" C-t c でコンパイル
" C-t p で実行となる
nnoremap [Exec] <Nop>
nmap <C-t> [Exec]
map <silent> [Exec]c :!java -Xss1m -jar frege.jar -d build %<CR>
map <silent> [Exec]p :!java -Xss1m -cp build:frege.jar %:r<CR>

4. 実行

  • まず、frege-initを実行してディレクトリとシンボリックリンクを作る
  • ファイル名をHello.frとする(module名と合わせておくこと)
module Hello where

greeting friend = "Hello, " ++ friend ++ "!"

main args = do
    println (greeting "World")

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