Make it possible with Python.

最近Pythonから離れ気味、その他物作りに寄り気味です。

’’’(トリプルクォート)はコメント以外でも複数行の入力に使える

タイトル通りのことを、今更ながら知りました。

例えばこの本のP71にある

Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-

Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-

この部分、1行目の「'‘'」の意味と、2行目の「…」の意味がわからずしばし検索をしましたが、 (この記号たちは検索がちょっと大変でした)

>>> html = lxml.html.fromstring('''
... <html>
... <head><title>八百屋オンライン</title></head>
... <body>
... <h1 id="main">今日のくだもの</h1>
... <ul>
... <li>りんご</li>
... <li class="featured">みかん</li>
... <li>ぶどう</li>
... </ul>
... </body>
... </html>''')

「'‘'」はコメント以外でも、とにかく2行以上にわたって、改行もエスケープせずに文字列を書きたいときに使う物で、

「…」はインタプリタ内で複数行にわたる入力が必要になったときに出てくる物

ということがわかりました。

以上です。

バックアップにSynology cloud station backupは使用しないことにします

SynologyのNASでPCのデータのバックアップをしていますが、 cloud station backupは使わないことに決めました。

それは以下の理由からです。

Synology cloud station backupの私にとっての欠点

一言で言うと、私の使い方だとCPU使用率がやたら高くなり、ファンがうるさく、バッテリーの消費が速くなるためです。それは下記2つが原因のようです。

  • 常時ファイルの変更監視とバックアップがされるため、firefoxのprofileフォルダが対象に含まれていると常に転送がされる。その間ずっと、cloud backup daemonのCPU使用率が10~20%となる。

f:id:medakamaster:20170502152447p:plain

  • NASの電源が常時ONじゃないと正常に動かない?

 NASの電源が切れていると、ツールの表示が「接続中」のまま止まって、CPUを微妙に使い続ける。うちではNASは自動バックアップのためだけに使われており、夜間しか電源が入っていないため、昼間にPCを立ち上げるとずっと「接続中」となり、バッテリーの減りが早くなる。

代替案は Bunbackup

Synology公式の cloud station backupの代わりに、Bunbackup を使います。これとNASのスナップショット設定を組み合わせることで、私の理想のバックアップをすることができます。

nagatsuki.la.coocan.jp

このツールなら、時間指定のバックアップが取れるので、NASがオフラインの時に探し続けることはありませんし、常時更新されるファイルを常にNASに送り続けることもしません。他にも暗号化など便利な機能がたくさんあります。

ちなみにBunbackupでは、シンプルに選択フォルダのミラーリングだけを実施すればよく、世代管理は行う必要はありません。 DS216+の Btrfsでスナップショットを取ることで、より高機能な世代管理ができるためです。

何か勘違いがあれば、教えてもらえると幸いです。

Synology Cloud Station Backupでエラー

今まで 高機能な Bunbackupを使っていたけれど、うちで今使っているNAS, DS215+がbtrfsに対応して、 それに関する便利な機能な使えそうな気がしたので、一度 Synologyのバックアップを試してみることにした。

が、一つ導入で引っかかることがあったので、メモ。 たぶん普通の使い方をする人がハマることはないですが、Webで検索して出てこなかったのでここに記録。

エラー内容は、Cloud Station BackupをPCにインストールして初回起動のNASへの接続で、以下のメッセージ。

「バックアップするための共有フォルダがありません」

原因は、ユーザーホーム機能によるフォルダをオフにしていたため。

このツールではバックアップ先フォルダはユーザーホーム機能で生成されるフォルダに固定されるため、 そのフォルダがないと、バックアップをすることが出来ない様子。

コントロールパネル→ユーザー→詳細 から 「ユーザーホームサービスを有効にする」にチェックを入れてOK

RaspberryPiを普段使いPCからSSH、VNC操作する設定

RaspberryPiでプログラミングをすると、いくつかストレスを感じることがありました。 具体的には、通常のPCと比べると動作が遅かったり、Linuxの知識が足りないために思い通りにファイル操作ができないストレスが多いです。

  • ブラウザ動作が遅く、調べ物効率が非常に悪い。やむを得ず隣にノートPCをおいて調べ物。
  • キーボード、マウスが調べ物用のメインPCとRaspberryPiで2組あると、操作しにくい。
  • GUIだとファイルのアクセス権を取得できないことがある?
  • viなどのテキストエディタのUIがわからない。

このうち前半については、ネットワーク越しにRaspberryPiを操作すれば解消できそうなので、SSH接続とVNCを導入することにしました。

photo by cameronjking

続きを読む

RaspberryPi とPCのファイルのやりとりを簡単にする方法

ちょっと作りたいものがあって、RaspberryPi2を買いました。

Raspberry Pi 2 Model B

Raspberry Pi 2 Model B

初Linuxです。

Windowsと勝手が違う点が多く、戸惑っています。GUIはおまけなんですね。

少しずつ作業をする中で、困ったことがありました。

RaspberryPi2はCPUも非力で、ブラウザでの調べ物は厳しいので、調べ物はWindows PCでやっています。

そうすると、ブラウザからのコピペができないので、テキストをWindowsからRaspberrypiに手軽送る方法がないか、探してみました。

以下サイトで、SAMBAをインストールしてネットワーク越しにファイルをやりとりするという方法が紹介されていました。

Raspberry Pi 2にSambaを入れてファイル共有サーバーにする - がちゃのーと。 Gotcha-Note

工作と小物のがらくた部屋: Raspberry Pi とWindows でファイル共有(samba)

上のページを参考に、以下の流れでインストールと設定までができました。

sudo apt-get update
sudo apt-get install samba

cd /etc/samba
sudo cp -pi smb.conf smb.conf.org #オリジナルファイルをコピー
sudo vi smb.conf #vimで編集

vimが起動したら、最後にカーソルを持って行き、

o を押して編集開始で、以下を追加

     [pi]
      comment = pi's home
      path = home/pi
      public = Yes
      read only = No
      writable = Yes
      guest ok = Yes
      force user = pi
      directory mode = 0777
      create mode = 0666

ここまで終わったら、ESC → ZZ で保存終了して、

     sudo service samba restart

で再起動すると、PCのネットワークから “RASPBERRYPI” というフォルダが見えて、中身も編集できるようになる。

無線LANにつながる人なら誰でも編集できるので、注意。

これで、だいぶ便利になりました。

2017.05追記①

vimでなくNanoの方が簡単でコマンドも表示されていて使いやすいので、テキストの編集は、Nanoを使うことにしました。

sudo nano smb.conf

追記②

【後日追記】 sambaのリスタートでこのようなエラーが出ましたが、

Failed to restart samba.service: Unit samba.service is masked.

参考URLの追記の通りに、smbdとnmbdを個別にリスタートするとOKでした。

$ sudo service smbd restart
$ sudo service nmbd restart

ファイル名、ファイル内テキスト一括置換スクリプト 2 (Python2/3対応, その他改善版)

過去に作ったテキスト置換スクリプトを、手直ししました。

過去スクリプト:ファイル名とファイル内テキストを置換するpythonスクリプト - Make it possible with Python.

photo by Mathias L.

このスクリプトは、ファイル名、拡張子の指定条件に一致する複数のテキストファイルのファイル名と内容の一括置換してくれます。

今回改善した点は以下です。

  • Python3 / 2.7 両対応(のはず)
  • 文字コードをShift-JISから、Windows用Shift-JISコードであるcp932に変更
  • 出力ファイルが元ファイルと混在しないよう、リネームファイルは新規フォルダ内に生成
  • 出力ファイル上書き防止のため、同一ファイル名作成時にはエラーと、ファイル名先頭にduplicatedを付与
  • .iniファイルに条件、置換文字列を記載(exeにして配布時のため)

いままでは特定の条件で出力ファイルが空になったりして、人には勧められませんでしたが、これで実用になるのではと思います。

コードはこちら。

続きを読む