読者です 読者をやめる 読者になる 読者になる

知らないことを調べるブログ

映画の分からないところを調べてまとめる場所にしていきます。

きっとcgiでぜんぶ叶う


 この数日後に完全に死んだ。で、acer Liquid Z530に買い替えた。amazonで15000円だった。一年前、母親のスマホに同機種を選んだときは21000円くらいだった。とても使いやすくていい。バッテリーは、bluetoothテザリングしていたら一日でなくなる感じ。壊れたスマホと同じくらい持つので満足。端末がひどく熱くならないのもいい。


 2つ前のスマホはトイレに水没。1つ前のはフローリングに落として壊れた。こんどは落とさないように、なるべく机のへりとか不安定な場所に置かないように気をつける。






 ぼくは2chの小さなコミュニティの過去ログ保管庫をやっている(はてなIDのhokanokoは保管庫から付けた)。いま使っている技術に関していうと、

  • 過去ログはhtmlに変換して静的に出力している。
  • ログから抽出したデータはMySQLのデータベースにまとめている。
  • MySQLの操作はPHPでやっている。
  • ビューを整えるときにjavascriptを少しだけ使っている。

という感じ。で、最近pythonjavascriptをこつこつ勉強している。サイトにもその技術を試したくなっている。サイトのUXは向上するし、保守もかんたんになるし、ぼくの開発欲求も満たされるし、ということでサイトをリニューアルすることは複数の成果が得られる素晴らしい計画になってくれると期待している。


 で、pythonのwebフレームワークにbottleというのがあって、なんか楽そうなので導入しようとした。ところがだめだった。ぼくの借りているレンタルサーバーpythonはバージョン2.4で、bottleの対応バージョンは2.5以降だった。ぼくはフレームワーク技術を学習することをやめ、cgiの学習を始めることを決めた。ぼくのひとり小規模開発は、きっとcgiでぜんぶ叶うかもしれないし……。


 sqliteもだめ……と思いきや、モジュールが入っていた。ただ、sqlite3ではなくて、sqlite(package)という名前だった。違うの? import sqlite3ではエラー。import sqliteで通った。データベースファイルへのconnectも通り、0バイトのtest.dbが作成された。でも、テーブルを作るところでつまづいた。sqlite3と書き方が違うのかな? 調べ中。


 いま実際に運用しているデータベースはMySQLなんだけど、できればsqliteに乗り換えたい。なぜならいまMySQLで管理しているファイルの容量は30MBくらいで、これからデータベースで管理したいと考えているファイルが100MBくらいあるんだけど、ぼくの借りているレンタルサーバーでは100MBまでしか利用できない。いまぼくには2つの選択が迫られていて、

  1. dat形式で管理するかsqliteで管理するかの選択。
  2. MySQLの30MBをsqliteに移行するかそのままいくかの選択。

ということでsqliteをぜひやりたい。pythonのmysqldbがインストールされていることも発見したし、phpを使わずにpythonだけでデータをダンプできるかもしれない。これからがんばる。


 学習が進むときっとぼくは「cgiは古臭くなんかないじゃないか! ちょう楽しい!」と言っている。

pythonをandroidのkivylauncherで実行

 androidpythonが動いた。kivyというGUIライブラリを使った。同じコードでwindowsでも動く。ソースコードは以下。

# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.uix.label import Label
from kivy.core.text import LabelBase, DEFAULT_FONT
LabelBase.register(DEFAULT_FONT, "Myrica.ttc")
class IntroKivy(App):
    def build(self):
        return Label(text=u"どうやってやればいいんだろう?")

if __name__ == "__main__":
    IntroKivy().run()

 windowsではこんなふうになる
f:id:Hokanoko:20170206153958p:plain
 androidではこんな感じ
f:id:Hokanoko:20170206154008p:plain


windowsにkivyをインストールする

 公式のガイド(参考1)の「Installation」に従う。コマンドプロンプト
python -m pip install --upgrade pip wheel setuptools
python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
python -m pip install kivy.deps.gstreamer
python -m pip install kivy
を実行するとファイルがダウンロード・インストールされる。全部で150MBくらい。


参考1: Installation on Windows — Kivy 1.9.2.dev0 documentation



kivylauncherで実行

 kivylauncherはandroidでのkivy実行環境。Google playにある。使い方は、公式のガイド(参考2)の「Packaging your application for the Kivy Launcher」に書いてある。従う。/sdcard/kivyに適当なディレクトリを作ってmain.pyとandroid.txtを入れたら動いた。

 ちなみに、デフォルトで日本語に対応していない。なのでフォントを入れてあげる必要がある。ぼくはMyrica Mを入れた。


参考2: Create a package for Android — Kivy 1.9.2.dev0 documentation




 androidアプリを作れるようになった。しかもpythonで。javaはパズドラのクローンを作ってうんざり。もう触りたくない。kivyはなんだか楽しそうだ。目標のアプリはプレイリストをいい感じに作ってくれる音楽プレイヤーだ(参考3)。できるといいな。


参考3: 仕分けの日々、ほしいandroidアプリ - 知らないことを調べるブログ

仕分けの日々、ほしいandroidアプリ

 1ヶ月後の簿記試験に向けて勉強をしている。そのときPodcastを聴いている。でも、ダウンロードとか同期がめんどう。ぜんぶ自動化できたらいいのになあ。

仕分けの日々

 学校の科目試験が終わり、冬休みに入った。次の科目試験は初夏。ぼくは勤労学生なんだけど、お金稼ぎの予定は春から。春までひま。なので、簿記2級(2月末)と応用情報(4月半ば)を受けることにした。どちらも学校の授業と関係があるのでボーナス単位をくれるし、持っていたらちょっとうれしいし。

 簿記2級について経験者に聞くと、ひたすら仕分けをやると良いらしい。なので、簿記アプリでひたすら仕分けをやっている。パブロフ簿記(参考1)の3級、2級商業、2級工業というののAndroidアプリを、ひとつ600円で買った。

参考1:パブロフくんが日商簿記2級、3級を目指すブログ



 仕分けはPodcastを聞きながらやっている。Rebuild.FM(参考2)という番組があって、超たのしいので、バックナンバーを1からすべて聴いている。Aftershowというおまけ部分ぜんぶと、本編を半分くらい聞いたところ。Rebuild.FMは、バイリンガルニュースというPodcast番組(参考3)で知った。

参考2:Rebuild - Podcast by Tatsuhiko Miyagawa

参考3:バイリンガルニュース (Bilingual News)



 Rebuild.FMと一緒に、英単語の音声教材を聞いている。英単語は覚えていて損がないので。無料でmp3が配布されているvitalというやつ(参考4)。1つの音声ファイルにつき英単語10こくらい。復習のため、英単語は4回聞くとプレイリストから消えるようにしている。itunesのスマートプレイリストで設定できる。

参考4:文英堂


ほしいandroidアプリ

 で、最近思うのは、自分用のいい感じのプレイリストをリアルタイムで生成したいなーということ。具体的には、

  • Podcastの過去アーカイブをリリース日の古いものから順に聞くことができて、
  • 各エピソードの合間に英単語(上限15こ、再生回数4回以下)と、Youtubeの動画をmp3化したやつがいい感じに入る。
  • ついでに、ファイルのダウンロード、ライブラリへの追加、プレイリストへの挿入をリアルタイムでやってくれる。

という機能が実装できたら便利だなーと考えている。Youtubeの動画をmp3化したやつとは、Youtuberの人がやっている英語講座のこと。やりたいことのうち、手動なので面倒。



 いま僕は音楽の管理をitunesでやって、プレイリストをUSBでiPod shuffleに入れて聞いている。いつものぼくの手順は、

  1. YoutubeチャンネルのRSSを「androidFeedly」で取得し、あとでダウンロードするものをsaveする。
  2. saveしたURLを「WindowsFirefox」で開き、Youtubeの動画を「FirefoxアドオンのVideo DownloadHelper」でダウンロード。
  3. mp4を「WindowsのEcoDecoTool」でmp3に変換。
  4. mp3を「Windowsitunes」のライブラリに追加、アーティスト名を「ラジオ」に変更(アーティスト名を条件にスマートプレイリストを作っている)。
  5. スマートプレイリストの上限のチェックマークを外して、付け直す(選択方法をランダムにしておくと、これでプレイリストの並び順がシャッフルされる)。
  6. パソコンにUSBでiPod shuffleを同期させる。

という感じで、とても面倒なのがわかると思う、、、でも他にやり方がわからないのでこれでやっている。

 どうやればいいんだろう?



 ぜんぶモバイルデバイスだけでできたらいいのにな。YoutubePodcastRSSから任意のmp3ファイルをダウンロードできるandroidアプリがまずほしい。それから、いい感じの音楽プレイヤーがほしい。たとえばいくつかディレクトリがあって、それぞれ

  • Rebuild.FM(再生回数が0回でリリース日が古いものを6こまで)
  • 英単語(再生回数が3回以下で15こまで)
  • mp3にしたYoutube(再生回数が0回)

の条件を満たすmp3ファイルが入っている。このディレクトリの中からランダムに再生されて、再生がおわると再生回数でディレクトリが再編成されて、その中から次に再生するものが選ばれる。とか。



 こういうandroidアプリがほしい。ストアで見当たらないしとてもニッチなので自作するしかないんだろうな。いつかやるリストに追加していまは簿記をやる。

Pythonを覚えられたらいいな~。あと、Sublime Textがとても使いやすくていい

 Pythonを覚えたいなと思ったので、WindowsPythonSublime Textをインストールして、いろいろ設定した。以下はそのやり方。


Pythonのインストール


 Python学習サイト(参考 1)の手順に従って、Python公式サイトからPythonの2系をインストール(参考 2)。

 インストールが終わったら、環境変数のPathを通しておく。

参考1 インストール - Python入門から応用までの学習サイト

参考2 Download Python | Python.org


Sublime Textのインストール


 Sublime Text公式サイトから64bit版をインストール(参考 3)。

 フォントはMyricaを使用。

 Sublime Textは機能を拡張できるので、いくつか良さそうなプラグインをインストール。

package control プラグインのインストールが簡単になる
Japanize Sublime Textのメニューを日本語化する
View In Browser 任意のブラウザでプレビューできるようにする
ConvertToUTF8 文字コードUTF-8以外のファイルをUTF-8として表示してくれる
IMESupport 日本語をインラインで入力できるようにする
Print To HTML 印刷機能を追加する
SublimeCodeIntel コードの自動補完を拡張する
HTML5 HTML5の自動補完を拡張する

 これでおわり。ところが、日本語文字列を出力しようとするとエラーが出てしまう。Python2系の問題だそうだ。ちゃんとビルドできるようにするために、ビルドシステムを追加する(参考 4)。さらに、コードに以下のwrapperを入れる(参考 5)。これでエラーがなくなった。

import codecs, sys
sys.stdout = codecs.getwriter("cp932")(sys.stdout)

参考3 Sublime Text - Download

参考4 Sublime TextにBuild Systemを追加する - Qiita

参考5 Sublime Text3のPythonビルドで日本語出力できない問題と、Python2,3ビルド切り替え | みろりHP


これから


 Pythonを覚えられたらいいな~。入門サイトで学習中。ここまでやった(参考 6)。楽しい。

 あと、Sublime Textがとても使いやすくていい。TeraPadとはぜんぜん違う。

  • 文字列を選択しただけで文字数を教えてくれるのと、
  • htmlファイルのjavascript部分もハイライトしてくれるのと、
  • IDEみたいにいろいろできるのにとても軽いのと、
  • エディタを閉じてもタブの状態がそのまま

なのがうれしかった。メモ書きもレポート下書きもコーディングもこれでいけるなあと思った。


参考6 数値 - Python入門から応用までの学習サイト