ラベル JavaScript の投稿を表示しています。 すべての投稿を表示
ラベル JavaScript の投稿を表示しています。 すべての投稿を表示

2016年1月25日月曜日

markdown2impress を使って Markdown からスライドを作成してみた

概要

これまでスライドは Reveal.js を使って作成してきました
Reveal.js も良く出来ていて重宝しているのですが、編集が HTML を直接編集するため互換性やら見た目があまりよくありません
Jekyll にも Hekyll というプラグインがありこれを使えば Jekyll でスライドが作成できるのですが、スライドごとに Markdown ファイルを追加しなければいけないのでページが多いと大変です
今回は README.md 一個でスライドが簡単に作れる markdown2impress を試してみました

環境

  • CentOS 6.7 64bit
  • Perl v5.10.1
  • cpan 1.9402
  • Apache httpd 2.2.15
  • 動作確認ブラウザ Firefox 43.0.4

必要なモジュールのインストール

  • cpan -i Data::Section::Simple
  • cpan -i Text::Markdown
  • cpan -i Text::Xslate
  • cpan -i Path::Class

それぞれインストールしてください
インストールに結構時間がかかります

サンプルスライドの作成

About me
========

* @kakakikikeke
* [blog](http://kakakikikeke.blogspot.jp/)
  • mkdir -p /var/www/html/test
  • cp -ipr index.html js/ css/ /var/www/html/test

http://localhost/test/ にアクセスするとサンプルのスライドを確認することができると思います

sample_markdown2impress.png

Tips

YAML 系のエラーが出る場合は以下を試してみてください
http://kakakikikeke.blogspot.jp/2012/10/perlcpanyaml.html

cpan でモジュールをインストールする前にインストール時の yes の回答をデフォルトで全部 yes にしておくことをおすすめします
「Text::Xslate」のインストールが非常に長いので
http://kakakikikeke.blogspot.jp/2013/07/perlcpan.html

2016年1月19日火曜日

楽譜を作成できる abc.js を試してみた

概要

abc.js はブラウザ上に楽譜を描画することができるライブラリです
楽譜の描画に必要な情報を渡すと SVG 形式で楽譜を描画してくれます

環境

  • CentOS 6.7 64bit
  • Apache httpd 2.2.15
  • Firefox 43.0.4
  • abc.js 2.3

abc.js のインストール

インストールは簡単です
必要な js ファイルを適当な場所に配置すれば OK です

今回は既存のサイトの <pre> 情報から楽譜を作成するプラグイン方式と、abc.js のメソッドをコールすることで楽譜を描画するベーシック方式の 2 種類で楽譜を作成してみました

abcjs_plugin を使ったサンプルコード

まずはプラグイン方式を使った方式を紹介します

  • cd /var/www/html/abcjs
  • wget https://raw.github.com/paulrosen/abcjs/master/bin/abcjs_plugin_2.3-min.js
  • vim plugin_sample.html
<!DOCTYPE html>
<html>
  <head>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
  <script src="abcjs_plugin_2.3-min.js" type="text/javascript"></script>
  <body>
    <pre>
X: 1
T: Musikalisches Opfer (BWV 1079)
T: No. 3 Canones diversi (Realisation)
C: J. S. Bach
K: Eb
V: 1
C4E4|G4A4|=B,4z2G2-|G2^F4=F2-|=F2=E4_E2-|_E2=D2_D2C2|
V: 2
C2E2G2c2|=Bcde fedc|dGdf edc=B|=A=Bce dc=B=A|GAB_d cBAG|FGAB AGFE|
V: 1
=B,2G,2C2F2|E4D4|C4E4|GFGc GEDE|FG=A=B cEFG|ADEF GFED|
V: 2
DEFG FEDA|GFEc =B=AGF|EDEG cGFG|E4C4|D4E4|F2C2G,2=B,2|
V: 1
EFGA BAGF|GABc _dBAG|=A=Bcd ec=B=A|=Bcde fdGd|cdef edc=B|c2G2E2C2:|
V: 2
C2_D2=D2_E2|-_E2=E4=F2|-=F2^F4G2|-G2z2=B,4|A4G4|E4C4:|
    </pre>
  </body>
</html>

これで http://localhost/abcjs/plugin_sample.html にアクセスすると楽譜の元データと楽譜の SVG 画像が表示されるとおもいます

abcjs_plugin_sample.png

プラグイン方式の場合は <pre> タグの中に <div> タグで SVG 情報を描画するので、既存の楽譜情報を削除することができません
( 別途、JavaScript を使えばできると思いますが )

もしすでに楽譜情報が HTML として存在しているなら、この方式を使ったほうが簡単ではあります

abcjs_basic を使ったサンプルコード

では、次に楽譜情報を作成する関数をコールすることで楽譜を描画してみたいと思います

  • cd /var/www/html/abcjs
  • wget https://raw.github.com/paulrosen/abcjs/master/bin/abcjs_basic_2.3-min.js
  • vim basic_sample.html
<!DOCTYPE html>
<html>
  <head>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
  <script src="abcjs_basic_2.3-min.js" type="text/javascript"></script>
  <script src="myabc.js" type="text/javascript"></script>
  <body onload="ABCJS.renderAbc('notation', score); return false;">
    <div id="notation"></div>
  </body>
</html>
  • vim myabc.js
var number_of_tunes = "1"; // 曲数
var title = "score_title"; // 楽譜タイトル
var measure = "4/4"; // 拍子 (e.g. 4 拍子)
var long = "1/4"; // 音符の長さ (e.g. 8分音符)
var rhythm = ""; // リズム
var major_key = ""; // 長調
var score = '\
X: ' + number_of_tunes + '\n\
T: ' + title + '\n\
M: ' + measure + '\n\
L: ' + long + '\n\
R: ' + rhythm + '\n\
K: ' + major_key + '\n\
C D E F|G A B c|C D E F|G A B c\n\
'

せっかくなので全く同じ楽譜ではなく自分で楽譜の情報を与えてみました
とは言ったも「ドレミファソラシド」を描画しているだけです
また、JavaScript と HTML を分けて、楽譜情報を JavaScript ファイルで管理するようにしています

ABCJS.renderAbc に描画する div タグの id 情報と描画する楽譜の文字列情報を渡せば OK です

コード中に各パラメータの説明を簡単に記載しています
自分は楽譜を読むことはできないので、解釈を間違っているパラメータがあるかもしれないのでご了承ください

ドレミファソラシドは英語で「CDEFGABc」に対応しているのでその情報を与えています

これで http://localhost/abcjs/basic_sample.html にアクセスすると楽譜の SVG 画像が表示されるとおもいます
先ほど違って楽譜の元情報は描画されないと思います

abcjs_basic_sample.png

最後に

とりあえず楽譜を描画することはできました

触っていて一番気になったのはドキュメントが非常に少ないことです
公式サイトにもちゃんとしたドキュメントがなく、楽譜を描画する際に与えるパラメータ情報が見つからず「X:」とか「L:」とかが一体何を表しているのかさっぱりわかりませんでした

なのでソースコードを Github からダウンロードして特定のキーワードで grep をかけることでパラメータをパースしている実装部分を探して何を表しているパラメータなのか判断しながら試しました

  • $ grep -r --exclude=jquery-1.11.3.min.js --exclude-dir bin/ 'R:' * | grep -v 'PER:'

結構たくさん指定できるパラメータがあって、ちゃんとこれらを使って楽譜を作成しようとしたら、楽譜を書く力もないと結構大変かもしれません

  • parse/abc_parse_header.js
var metaTextHeaders = {
        A: 'author',
        B: 'book',
        C: 'composer',
        D: 'discography',
        F: 'url',
        G: 'group',
        I: 'instruction',
        N: 'notes',
        O: 'origin',
        R: 'rhythm',
        S: 'source',
        W: 'unalignedWords',
        Z: 'transcription'
};

2016年1月9日土曜日

Express + CoffeeScript で簡単な REST API アプリを作成してみた

概要

Express は Nodejs 用の Web フレームワークです
CoffeeScript は JavaScript を簡単に書けるようにしたラッパー言語でコンパイルすることで JavaScript のコードを生成できます
今回は CoffeeScript 内で Express を使うことで CoffeeScript だけで簡単な REST API アプリを作成してみました

環境

  • CentOS 6.7 64bit
  • Nodejs 0.10.36
  • npm 1.3.6
  • CoffeeScript 1.10.0
  • Express 4.13.3

各種インストール

Nodejs と npm は yum コマンドでインストールしました
EPEL を使えば yum でインストールすることができます

  • yum install nodejs npm –enablerepo=epel

CoffeeScript のインストール

  • npm install -g coffee-script

Express のインストール

  • cd work/
  • npm install express

サンプルアプリのソースコード

  • cd work/
  • vim app.coffee
app = require('express')()                                                                                               
http = require('http').Server(app)
port = 3000

app.get '/', (req, res) ->
  res.json {"status":"200"}

app.get '/error', (req, res) ->
  res.status 404
  res.json {"status":"404"}

http.listen port, ->
  console.log "listening on *:", port

「/」と「/error」の URI に GET メソッドでアクセスすることができる API アプリになります

実行してみる

  • cd work/
  • coffee app.coffee

で 3000 番ポートで LISTEN します
curl を使って確認してみます

  • curl http://localhost:3000/

{“status”:”200”}

  • curl http://localhost:3000/error

{“status”:”404”}

上記のようにレスポンスが返ってくれば OK です

最後に

簡単ですが、API アプリを作成してみました
Experss 自体は Nodejs 用の Web フレームワークなので、JavaScript だけで書くこともできます
わざわざ CoffeeScript を使う理由としては JavaScript よりシンプルに書けるというのが一番の理由だと思います

2014年4月1日火曜日

reveal.jsでスライドを作成してみた

■環境
CentOS release 6.5 (Final)

■事前準備
yum -y update
yum -y install httpd
yum -y install git

■reveal.jsインストール
cd /var/www/html/
git clone https://github.com/hakimel/reveal.js.git
mv reveal.js/ reveal
    この状態で http://localhost/reveal/ にアクセスするとサンプルを確認することができるかと思います

■スライド作成
cd /var/www/html/reveal/
vim index.html

   既存のindex.htmlを編集すると楽です
  • <div class="slides">直下の<section>タグ内にHTMLを使ってスライドの内容を記載していくことができます
  • <section data-markdown="">を使用するとmarkdownを使ってスライドを作成することができます
  • その他、サンプルのsectionタグにいろいろな命令があるのでそれらを使うと簡単に作成できるかと思います
   index.htmlを 編集 -> 保存 してブラウザで内容を確認しながらやるといいと思います

■Tips
  • 日本語のスライドを作成する場合はindex.htmlの冒頭にある<html lang="en">を<html lang="jp">に書き換えたほうがいいです
  • その他デフォルトの段階から書き換えたほうが良さそうな部分
    • <title>タグの変更
    • <meta name="description">タグの変更
    • <meta name="author">タグの変更
  • <section>内に更に<section>を記載すると縦に移動できるスライドを作成することができます

■参考サイト

2012年8月21日火曜日

【JavaScript】faviconeを円グラフにできるpieconを使ってみた(サンプルあり)

git clone git://github.com/lipka/piecon.git
cp -ip piecon/piecon.min.js /usr/local/tomcat/webapps/ROOT/
cd /usr/local/tomcat/webapps/ROOT/
wget http://kakakikikeke.blogspot.jp/favicon.ico
emacs index.html

<head>
<link rel="icon" href="favicon.ico" />
<script src="./piecon.min.js"></script>
<script>
(function(){
  var count = 0;
  Piecon.setOptions({color: '#ff0084', background: '#bbb', shadow: '#fff', fallback: 'force'});
  var i = setInterval(function(){
    if (++count > 100) {
      Piecon.reset();
      clearInterval(i);
      return false;
    }
  Piecon.setProgress(count);
}, 250);
})();
</script>
</head>


■ポイント
  • favicon.icoはあれば何でも問題ないです
  • デフォルトでは100秒で円グラフが完了する設定になっています
  • 速度は引数2つ目250のところを小さくすると早くなります
  • Piecon.setOptionsで色を設定できます
  • デフォルトだとonLoad後に呼ばれる(っぽいのでロードの進捗率を表示するのは厳しいか)
  • ⇒ボタンをポチポチ押していくと進捗があがるみたいなアンケートページに使えるのか・・・
https://github.com/lipka/piecon
公式は以下です