以前Kotz’ijをHerokuにデプロイしたけど、Herokuの料金体系が支払いを初めてから物凄く曖昧と気付いたので辞めた。でどうしようかなぁと思って今使っているサーバー上に置こうかなと思う。具体的にはXserver。出来るかどうかは分からないけど。
で取り敢えずはFTPの設定。そういえば最近Gitは使ってもFTPって殆ど使ってなかった様な気が。FileZillaを使うことにした。クライアントは別にこれでなくてもいいけど何となく。
まずはサーバーパネルへ。FTPアカウント設定を選択。
以前Kotz’ijをHerokuにデプロイしたけど、Herokuの料金体系が支払いを初めてから物凄く曖昧と気付いたので辞めた。でどうしようかなぁと思って今使っているサーバー上に置こうかなと思う。具体的にはXserver。出来るかどうかは分からないけど。
で取り敢えずはFTPの設定。そういえば最近Gitは使ってもFTPって殆ど使ってなかった様な気が。FileZillaを使うことにした。クライアントは別にこれでなくてもいいけど何となく。
まずはサーバーパネルへ。FTPアカウント設定を選択。
キチェ語を話す人の総数は100万人以上とはよく言われるがその根拠というのが説得力に欠くものが多い。
2002年の国勢調査を改めて見てみた。15年前に集計されたデータだけど来年新たな国勢調査が発表されるまでは最新のものなのでこれを使う。 このセンサスでは3歳以上の人に対して言語の質問をしているのでデータを3歳以上の人口に絞る。
その後、話者数が多い5先住民言語のグラフを実数とパーセンテージで表したのがこちら。
母語、若しくは第二・第三言語としてグアテマラでキチェ語を喋る人は952,503人、四捨五入すれば百万人となるけれど百万人以上とはならない。まぁ、百万人に近いことは間違いないけど。15年前と比べてグアテマラの人口は大分増えたけどそれが先住民言語の話者数増加に繋がっているのかは判断し難い。どの程度喋れれば話者と数えることが出来るかによるかな。
パーセンテージのグラフがこれ。敢えてY軸の上限を100にした。キチェ語話者は三歳以上の人口の9.32%となっている。
どちらにしてもこれは15年前のデータなのでやはり現状を知るには新たなセンサスのマイクロ・データが欲しい。
Rコードはこちら
1 2 3 4 5 6 7 |
barplot(idioma, names.arg=c("K'iche'","Q'eqchi'","Kaqchikel","Mam","Q'anjob'al"), col=c("#ec6d71", "#b55233", "#a19361", "#84a2d4", "#4f455c"), xlab="Language", ylab="Population Size (thousands)", ylim=c(0,1000), axis.lty=1, las=1, font.main=2, font.lab=1, font=3, #font type cex.main=3, cex.lab=1.2, cex.names=1.2, cex.axis=1.2) #font size box(lty=1) |
キチェ語のノートは前にも述べたと思うけどLaTeXで管理している。ファイルも軽いし何より好きな様に編集できるのが利点。
ただ、これまでは論文執筆を中心に使ってきたため、これまでとは少し使い方が異なり新たな機能が必要となったので作ることとした。
例えば問題への回答を下線と朱色の文字を使って書くということ。下線の長さを統一したり、微調整する時に面倒なことが多かったのでこう書いた。
1 2 |
\newcommand\ulrt[2]{ \stackengine{0pt}{\underline{\hspace{#1}\vphantom{}}}{\color{red}#2}{O}{l}{F}{F}{L}} |
また、キチェ語の文法ではシータをよく使うけど、これはノートでは必ず太文字を使っているので
1 |
\boldmath |
を入れておけばその後は気にする必要なし。
後は空白の統一や自動インデントを除く仕様にした。インデントについてはこうする。
1 |
\setlength\parindent{0pt} |
こんな風にノートを作成している。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
\documentclass[letter]{article} \usepackage{color, soul, ulem} \usepackage[ddmmyyyy]{datetime} \usepackage{graphicx, stackengine} \usepackage[top=1.5cm, bottom=1.75cm, left=1cm, right=1cm]{geometry} \setlength\parindent{0pt} %noindet thorough document \renewcommand{\dateseparator}{--} \newcommand\ulrt[2]{ \stackengine{0pt}{\underline{\hspace{#1}\vphantom{}}}{\color{red}#2}{O}{l}{F}{F}{L}} \newenvironment{nscenter} {\parskip=0pt\par\nopagebreak\centering} {\par\noindent\ignorespacesafterend} \title{Reta'maxik le K'iche' mayab' ch'ab'al:} \author{13 No'j, Ph.D.} \date{\today} \newcommand{\pspace}{ \vspace{3pt}} \begin{document} \boldmath \maketitle \begin{nscenter} \bf Conjugaci\'on de Verbos de Segunda Conjugaci\'on (Consonante) \pspace \begin{tabular}{|c|c|} \hline in & nu/in \\\hline at & a \\\hline --/lal & --/lal \\\hline \(\theta\) & u \\\hline oj & qa \\\hline ix & i \\\hline --/alaq & --/alaq \\\hline e & ki \\\hline \end{tabular} \end{nscenter} \ulrt{1.5cm}{Wachi'l, chqatatab'ej jas le kub'ij le qajtij.} \pspace \ulrt{3cm}{Wachi'l, chqatatab'ej jas le kub'ij le qajtij.} \pspace \ulrt{6cm}{Wachi'l, chqatatab'ej jas le kub'ij le qajtij.} \pspace \ulrt{8cm}{Wachi'l, chqatatab'ej jas le kub'ij le qajtij.} \end{document} |
実行結果はこちら。細かいところは今後説明したい。備忘録として役に立つ。
なお、Wachi’l, chqatatab’ej jas le kub’ij le qajtijは「みんな(友達)、先生の言うことを聞こうよ!」という意味。
前回の続き。
今回は作成したRubyのプログラムをHerokuにデプロイして実行する。そうすることによってHeroku Schedulerを使って定期的にプログラムを実行出来る。
まずはHeroku用のGemFileを作成。
1 2 3 4 |
source 'https://rubygems.org' gem 'sinatra' gem 'twitter', '5.17.0' gem 'google_drive', '2.1.5' |
でここに書かれているgemをインストールする。
1 |
bundle install |
するとGemfile.lockが作成される。
git関連の作業を行う。
1 2 3 |
git add -A git commit -m "Google Drive related" git push heroku master |
これで準備完了。
後は
1 |
heroku run ruby gd.rb |
で実行できる。
Heroku上で定期的に実行したい場合はSchedulerを用いる。
1 2 |
heroku addons:create scheduler:standard heroku addons:open scheduler |
これはブラウザを用いても出来る。
コマンド欄には
1 |
bundle exec ruby gd.rb |
と入力し頻度を選択。
以前、HerokuにデプロイしたRubyによるTwitterbot, Kotz’i’jでツイートへの返信を行う際に以前に読み込まれたツイートを除くため、最新のツイートIDを保存することとしたけどHeroku上のファイルはこの方法では更新されないことが判明。
代替策としてGoogle SheetsのシートにIDを保存し、毎回読み込みと更新することとした。
でその方法。
まずはGoogle APIsにアクセスし、
利用規約に同意する。
色々選択肢があるけど、HerokuにデプロイしたアプリからAPIを呼び出す場合はその他のUIを選ぶと上手くいく筈。それからユーザーデータにアクセスするを選択。
下記の画面が現れるのでJSONをダウンロードし完了ボタンを押す。
このJSONはHerokuにデプロイするアプリがあるディレクトリに保存する。
Google SheetsのシートにアクセスするRubyでプログラムを作成することとなるけど、その前にアクセス用のGoogle Sheetsファイルを作成しておく。
また、テスト用に任意のセルに値を入れておく。
ファイルを作成したらそれを選択し、共有リンクを取得。
共有リンクのd/と/edit?の間の値がキーとなるので保存しておく。
google_driveのgemをインストール。
1 |
gem install google_drive -v "2.1.5" |
ここでバージョン指定しているのはTwitterbotとの関係でFaradayが問題を起こしてしまうから。
プログラムをこんな感じで書く。
1 2 3 4 5 6 7 8 9 |
require 'rubygems' gem 'google_drive', '2.1.5' require "google_drive" #Google Drive session = GoogleDrive::Session.from_config("client_secret.json") sheet = session.spreadsheet_by_key("KEY").worksheets[0] value = sheet[1,1] p "the value is: " + value |
初めて実行した時は下記のメッセージが現れるので指示に従う。
表示されたアドレスにアクセスすると許可を求められるので承認する。
これでシートへのアクセスが出来るはず。
1 2 |
sheet[1, 1] = "word" sheet.save |
これを実行すると:
長くなったので今回はここまで。次回はこれをHerokuにデプロイして実行する方法を紹介する。