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

ひこぽんのーと

覚書と雑記です。

http記法(はてな記法)でリンクターゲットが指定できないのこと

その他

はてな記法で記事を書いていて、
参考ページを貼り付けることがよくあるのだけれど、
本文中の参考ページは別タブないし、別窓で表したいと思っている。

けれども、http記法ではリンクターゲットが指定できないので、
うっかりアンカーを押すと本文からリンク先へ遷移してしまう。
まぁ、読み終わったあとbackで戻ればいいのだけれど、
ポリシーとしては最初に描いた通りなので、少々の不満がある。

そんなわけで、ぐぐってみたら、
対処法を作ってくれている人がいた。

markdown記法でリンクをtarget="_blank"にする - エンジニアをリングする

また、それを紹介してくれている人がいた。

はてなブログ内のリンクを新しいタブ(別窓)で開く方法 - maroom

すばらしいっですね、これで、リンクについてあまり気にする必要がなくなったよ。

UbuntuにUnity3Dをインストールするのこと

ubuntu

Unity3Dをインストールしてみたくて、インストール方法を調べてみた。
ubutnu-makeでインストールするのが一番簡単だったりするのだが、
これはこれで問題があって、うまくいかなかった。

umake games unity3d

手順としては、これでインストールできる。
・・・・・・はずだが、インストールできたり、できなかったりする。
また、インストールできても起動できなかったりして、
どうにもならなかった。

しかたないので、パッケージファイルを探したら、
本家Unity3Dのフォーラムでパッケージファイルがひっそりと公開されていた。
(ダウンロードページには一言も、Linux対応版の文字がないのにね)

https://forum.unity3d.com/threads/unity-on-linux-release-notes-and-known-issues.350256/

最新の記事から遡って、環境にあったパッケージファイルをダウンロードしてインストールすれば、
簡単にインストールできる。

実際、Linuxでも動かせるのに、なぜ、ダウンロードページに紹介が無いのだろう。
このフォーラムへのリンクくらいはあるとありがたいのだが。。。

ubuntu-makeを試してみて、ダメだったらバイナリからインストールがいいのかしらん。

pythonで音声を再生するのこと

python プログラム

pythonで音楽を再生したくなったので、やり方を調べてみた。
まずあたったのが、pyAudioというライブラリ。

PyAudio: PortAudio v19 Python Bindings

ページにはpipで入れよと書いてあったけど、
ubuntuならapt-getでもインストールできる。

sudo apt-get install python-pyaudio

けれども、ライブラリのサンプルを眺めてみると
どうやらこれはwave再生のようで、MP3が再生できるかはわからない。
コードを書いて調べるのも面倒だったので、
次に行くことにした。

MP3が再生できそうなライブラリにpygameが当たった。

ダウンロード&リファレンスサイト
http://pygame.org/download.shtml

その日本語訳。
pygame - Pygameドキュメント 日本語訳

これもapt-getでインストールできる。

sudo apt-get install python-pygame

ゲーム制作用のライブラリのようだが、
それなら当然、音声再生もできる。
というわけでこれを使ってみることにした。
音の出し方は意外と簡単だった。

import pygame
import time


if __name__ == '__main__':
    # ライブラリの初期化
    pygame.mixer.init()
    # MP3ファイルのロード
    pygame.mixer.music.load(u"MP3ファイルパス")
  # 再生回数の指定。-1ならリピート
    pygame.mixer.music.play(1)
    # 音楽再生の間、スレッドを止めるためにスリープ。
    # これでは中断のために割り込みとかできないから、
    # 本当に使うときは色々と作りこみをする必要がある。
    time.sleep(300)
    # 再生の停止。
    pygame.mixer.music.stop()

これはストリーム再生なので起動も早く、負荷も少ない。
ただし、音声ファイルの再生時間が取得できない。
ストリーム故にバッファに読み込んだデータの再生時間は取得できるが。。。
とはいえ、waitする時間の根拠値としても、音声の再生時間はどうしても取得したい。

なんとかならないかと探してみた。
mutagenというライブラリでMP3の再生時間が取得できるらしい。

Overview — mutagen

インストールはやはりapt-getでいける。

sudo apt-get install python-mutagen

使い方は簡単で、ファイルを読み込んで該当のプロパティを叩けばいい。

import mutagen.MP3

sound = mutagen.MP3(u"MP3ファイルパス")
print sound.info.length

といわけで、これらのライブラリを使うことでMP3の再生はできた。
いやぁ、楽しいなぁ、こういうの。

pythonでポップアップ通知を表示するのこと。

プログラム python

NASAの科学者によると、
30分に1回立ち上がると老化防止になるそうな。
本当かなと思いながら"試してガッテン"を見ていた。

こういうのに乗せられやすい性質なので、
PCが起動している間、30分に1回ポップアップ通知を出すプログラムでも作ってみようと思い、
実装方法を調べてみた。
(まぁ、タイマーなんて腐るほどあるんだろうけれど、なんでも勉強なので)

pythonでポップアップ通知を出す方法については、下記の記事が参考になった。

http://kyoui3350.blog96.fc2.com/blog-entry-258.html

上のサイトにもあるように、下のロジックで通知表示できる。

import pynotify

pynotify.init(u"application name")
n = pynotify.Notification(u"title", u"message")
n.show()

けれども、これには落とし穴があった。
自分が試したところでは、
wxPythonのApplicationクラスと併用しようとするとエラーになる。

さらに調べた結果、notify2というライブラリがあるので、
結局、こっちの方を使うことにした。
インストールはapt-getからインストールできる。

sudo apt-get install python-notify2

で、使い方についてはpynotifyと全く同じ。
インポートするライブラリだけが異なる。

import notify2

notify2.init(u"application name")
n = notify2.Notification(u"title", u"message")
n.show()

f:id:nagamitsu1976:20161117172659p:plain

と、まぁ、こんな感じでした。
アプリ?
その後、ちゃんと作りましたとも。

.profileを再読み込みするのこと

ubuntu

知らなかったのでメモを残しておく。

.profileを変更した場合、ログアウト等をせずに再読込したい場合、
下記のコマンドで再読み込みができる。

source ~/.profile

参考文献はここ。
qiita.com

Ubuntu 16.04での市販DVDの再生について

ubuntu

VLCをインストールするだけではDVDメディアの再生ができないので、
なにかインストールする必要があるのは知っていたのだが、
15.04以前と15.10以降では手順が異なるのは知らなかった。

RestrictedFormats/PlayingDVDs - Community Help Wiki


以下に16.04で行った手順をメモしておく。

sudo apt-get install libdvd-pkg 
sudo dpkg-reconfigure libdvd-pkg 

2つ目のコマンドは1つ目を実行した際に、
"dpkgがロックされているので後で実行すること"と
注意が表示されたので実行した。

正式な手順があってよかった。

pythonでのunicode型とstr型の扱いについて

プログラム python

pythonianな人には当たり前かもしれないが。

ファイルの読み書きでunicode文字とstr文字の絡みで、
すんなりロジック書けなくて、ここしばらく悩んでた。

ファイルを書き込む際に日本語が混ざってると発生するUnicodeEncodeError。

このページとか、
PythonのUnicodeEncodeErrorを知る - HDEラボ

このぺーじとか
Python でUTF-8, shift_jis, euc_jpなど日本語を使う方法

読んでみてわかったような、わからんような。

なんとなく頭に入ったのは、

  • リテラルはとりあえずunicode型にしておく、
  • 日本語を含むファイルを読み書きするなら、open()ではなく、codecs.open()を使っておけ
  • ロケールエンコードを取るにはlocale.getpreferredencoding()を使え
import locale
import codecs

enc = locale.getpreferredencoding()
with codecs.open(u"aaa.txt", u"r", enc) as file:
    for line in file:
        ・・・

対処療法的で全く内容を理解していないのが、やばい。