2017年10月14日土曜日

anaconda内のQt

久しぶりに、少しQtを復習しようかと思いました。とりあえず、まずは慣れているmacで初めて、簡単なプログラム(signal, SLOTの復習です)を入力し、
$ qmake
としたら、何かmacx用のテンプレートがない、というようなことを言われました。

はて?macには今年の春、Qt5.8をインストールしたはずと思い、試しにwhichでqmakeの場所を調べてみると、何とanaconda内のqmakeになっています。どうもanaconda内のpythonパッケージに含まれるPyQtが最低限のバイナリとして持っていて、そこにPATHが通ってしまっています。ぐぐってみると、結構記事があり、PyQtでQtの勉強しよう、というのもありましたが、とりあえずanacondaのqtでは単独で使用するのは難しそうです。(独自にPyQt5をbrewでインストールしてしまう、という荒技もありますが、今度はanacondaのパッケージ管理で問題が出そうなのでやめておきます。)

win10にもanacondaをインストールしていたので、調べてみるとこっちも同じ状況です。win10にはQt5.9をanacondaの後にインストールしていますが、なぜかPATHが通ってません。(元々、コンソールで使うつもりなかったし、そのためかな)試しにPATHを通して見ましたが、デフォルトがg++を使う設定で、win10にはcygwinは入れてありません。(Visual Studioで開発するつもりでしたから、それにcygwin好きじゃないし)

これはおそらくLinuxも同じ様な状況になっているんだろうな。仕方ないので、再度Macに戻り、PATH設定をしてqmakeしました。今度はうまく行きましたが、anacondaのpythonでPyQt使う時何か問題でるかな?(今の所、全然使う予定ないので、逆にanacondaからPyQt外した方がいいかもしれません)

PS
ところで、最後にmacでバイナリが作れましたが、macのqmakeでビルド後にできるバイナリは、Finderからクリックできる構造の*.appになっているのにびっくりしました。コンソールから試すだけだから、そんな構造にインストールしてくれなくてもいいのに… .proに何かオプションを追加すればいいのかもしれません。

2017年9月23日土曜日

Visual StudioでのPython(win10でのpython環境)

いつの間にかVisualStudio上でpythonが開発できることに今更気づきました。このところVSCodeでpythonのデバッグ環境を作っていたので、これなら本家のVisual Studioだってできるだろうと思いつき、調べてみたら2013くらいからできるようになったようです。

win10上でのpython環境は、Visual StudioではPython Toolsのパッケージをインストールしないとデバッグできませんが、pythonインタープリタ自体は自分で好きなものをインストールしろとのこと。runtimeには含めていないようです。配布を考えると、どっちが楽なんだろうか微妙なところですが、これまでwindowsではpythonはメジャーではなかったし、元々OS非依存で開発されていましたからこんな形になったんでしょう。

うちにある最新のwin10マシンにはVisual Stuido 2017 Communityが入れてありますが、真っ先にAnacondaが入れてあるため、そちらがデフォルトのpythonインタープリタになっています。もう一つのマシンには2015 Communityが入っていて、2013年に入れたおそらくpython.orgのpython27が入っていました。

しかしおかげで一つのマシン内に複数のpythonがインストールされている状態です。実際、Visual Studioの機能でd「python環境」というwindowがあり、そこでデバッグ/実行するときのpython環境を選べるようになっているくらいです。(いや、それCLIで実行するときはどうするんだよ、と突っ込みを入れたくなりますがそれも含めて考えてデバッグしろということでしょう。面倒くさい。)

この際、古いマシンの方のpythonをpython3にしようかと考えたんですが、ちょっとググってみたら、M$の推奨は悩んだらAnacondaが無難、Visual StudioのC++, C#と連携を考えるならIronPythonとのこと。調べると、IronPythonって、C#で実装されているとのこと。そのおかげで、Cythonもいけるらしい。しかしながら、python3がなくいまだに2.7というところが悲しいですが、ちょっと連携を試してみたいのでIronPythonを入れてみます。

Macもpythonは多数のバージョンがpyenvのおかげで入っていてひどいことになっています。python好きなんだけど、バージョン管理をなんとかして。(配布の時のハードルがかなり高いです)

2017年8月23日水曜日

win10 VSCodeでpython(githubへup)

これまで基本自分はLinuxかMacでプログラムを作り、gitでコード管理、githubへupしていました。ただ一応、windowsでもeclipseではgithubにupしてました。
しかし、このところどうにもwindowsでプログラムを作らないとやっていけなさそうな状況になってきて、更にM$がVScodeをOpenSourceにしてきて、ずいぶん力を入れてきています。まだまだ、eclipseにはかないませんが、かなり頑張ってきています。これは一つ、今のうちに使い方を覚えていこうと試してみました。

とりあえず、せっかくVScodeを使うので言語は好きなpythonで行ってみます。(これはまた設定でかなり悩みましたが、それは別の時に)VScode自体は、ローカルではgitの管理機能を持っていますが、eclipseと違い、残念ながらまだリモートへのpush/pullの手段を持っていません。
そのために、VScodeの「統合ターミナル」で直にgitコマンドを実行しないといけません。しかし、更に問題なのがwindowsは標準ではsshのアクセスコントロール機能を持っていません。つまり、githubにアクセスするRSAキーを素では扱えないんです。
ネットでぐぐると、その他のGUIツール(例えば亀とか)を使えと書いてありますが、それもいやなので、しばらく考えてみました。

思いついたのが、gitのremote originを登録するとき、git@ではなく、https://github.com/ならどうだろうか?ということです。試してみたら、pushしたところで、githubのアカウントとパスワードを問い合わせるDialogが出てきて、入力したらうまくいきました。
一応、1回pushできればアクセス・コントロールは通るので、次からはVScodeのUIでいけるようです。(まあダメでも、アカウントとパスワードの入力くらいなら構いません)

ただ、ローカルのgitの初期化後の最初のcommitもかなり苦労しました(;^_^A もう何度、統合ターミナルで直にgitコマンド打ち込んでやろうと思ったことか。(元々、gitは直にコマンド打ち込む方が好きなんです)しかし、なんかそれでは負けなような気がして、VScodeのエラーログや画面をにらめっこして、やっとうまくいきました。(実は、本日いきなりVScodeの更新が入り、なんか少し設定ファイルやら変わったよう。それもあってかネットの情報そのままでは素直に動いてくれませんでした)

2017年8月12日土曜日

Win10でPython

今まではPython使うときは、基本MacかLinuxでした。しかし、大抵の人はWindowsで動くプログラムを希望します。
仕方ないので、Windows10でのPython環境を構築することを考えて、anacondaで試してみました。特に地図表示が欲しいので、basemapパッケージをインストールしたいのですが、これまでwindowsだけは単にinstallコマンドだけではダメでした。しかし、最近やっと一発で行けるようになったようです。以下のコマンドでできました。

> conda install -c conda-forge basemap
> conda install -c conda-forge basemap-data-hires (地図データです)

参考にしたHPでは、basemapのバージョン指定をしていましたが、元のHPを見ると、バージョン番号は省いても最新のものを入れてくれるように今はなっていました。
ただ、このconda-forgeを使うと、conda自体を古いバージョンにしてしまうらしく、再度最新のものにしておかないと、今後の管理に支障をきたす恐れがあります。

> conda update conda

実際、自分が試した時もconda-forgeを使うと一つ古いバージョンに戻されていました。

さて実際に使ってみましたが(Python入門にあったロケットシミュレーションです)、なんかグラフの軸のラベルが文字化けして、□が出てくるだけです。(どうも日本語がダメです)おかしいと思い、半年くらい前に最初に試したMacで動かしてみると、packageのimportでエラーが出ます。どうもいくつか更新したものの相互依存関係が壊れているようなので、全部最新に更新します。それで動かしてみると、あれ?windowsと同じようにグラフの軸のラベルが文字化けしています。最初からこうだったけ?どうも何か問題が起きているようです。(どうも最新のmatplotlibのデフォルトフォントが日本語対応していないようです。plt.rcParams['font.family']='IPAexGothic'とフォントを指定していますが、システムにそれがない模様。)
ただ、windowsでもほぼ同様なpython環境が実現できているようです。

fontについてその後
少し調べてみましたが、以下のコマンドでシステムに登録されているTTFのフォントリストが得られます。
>> import matplotlib.font_manager
>> print([f.name for f in matplotlib.font_manager.fontManager.ttflist])

大量にフォントが出力されてきて、どれが日本語に対応しているのかわかりませんが以下で日本語が出力されました。
・win10
mpl.rcParams['font.family'] = 'HGMaruGothicMPRO'
・Mac
mpl.rcParams['font.family'] = 'AppleGothic'
(一部文字がまだ豆腐でした。Macは少し前にOSがSierraに変わったときにフォントが変わってしまったようです。)

conda-forgeとは
anacondaは元々、continuum社がパッケージをまとめたものですが、github社がその他のグループのリポジトリを集めて公開しているもののようです。そのため、より先進的なパッケージが集まっています。今回試したbasemap(windows版)が、anaconda.orgにはなくても、conda-forgeにはありました。

2017年8月5日土曜日

MacBookのバッテリー交換

2010年より前に購入(つまり10年くらいたってる)したMacBookがあります。当時、Intel搭載の最初のMacBookとして非常に人気が高かったものです。今ではもうOSの更新はとうにできませんが、時々使っています。(さすがにネットサーフィンは怖くて、これではしません)
今日、持ってみたら何か裏面に違和感が… バッテリーが膨らんでいる!?


いや~、見事に膨張していますね。上にのっけたWalkmanが傾いています。これはもう使用は危険です。いつ爆発するかもしれません。(最悪の話ですが)爆発はしなくても、煙くらい吹いてもおかしくありません。これは使用中止かと思いましたが、特定用途でまだ使っているので、試しにバッテリーなしで100Vをつないだ状態で電源を入れてみたら動きます。
それでも、その状態で使い続けるのも危ないので、AMAZONで探してみたら、互換品ですがまだ売ってるんですね交換用バッテリー。早速注文しました。

PS
交換用バッテリー届きました。もちろん純正品ではなく、チャイナ系のメーカーです。容量も少し大きくなっています。早速セットしてみると、微妙にサイズが厚いようで、ロックするのに苦労しました。まあ、それくらいは想定内、ちょっとおそるおそる電源を入れてみると普通に動きます。しばらくは様子に注意しながらの運用です。

2017年7月22日土曜日

Windows Visual StudioによるPython環境について

自分はよくPythonでプログラムを作っているんですが、ほとんどMacかLinuxでした。WindowsでPythonやろうと思うと、パッケージを別途インストールしないといけないし、そのメンテンナンスも面倒だし。(Macなんてbrewで更新一発ですよ。最近は、anacondaも試しています。)
ところが、この前Visual StudioでもPython開発環境ができたことを知りました。いや不勉強にも、Visual Studio 2015くらいからあったようです。いや、何だかんだ言っても、仕事でプログラムを作っていると、お客さんはどうしてもWindowsで動くようにして欲しいという要望が多いんです。はっきり言って、システム作る方はWindowsでは作りたくありません。動作環境がM$の都合でコロコロ変わり、動作保証するのが大変なんです。おまけに、余分なプロセスが一杯動いていて、自分の作ったプログラムがどうしても遅くなるし。

ただまあ、お客様の希望は聞かないといけません。ちょっとWindowsでのPython開発環境を試してみました。ただ、その辺は色んなHPに一杯書かれているので省き、一番大事な問題、作ったPythonプログラムをどうやって動かすかです。
どのHPみても(M$のドキュメント見ても)、皆Visual Studioから起動することしか教えてくれません。いやいや、開発中はそれでもいいんですが、開発終わったらアイコン等から直接動かしたいでしょう。ところが肝心の、直接動かす設定に関する情報がどうしても見つかりません。仕方ないので、ちょっと調べてみました。(イリーガルなところがあるかもしれません)

まずそもそもVisual Studio自体が、Python環境としてどこを使っているのかが問題です。(コマンドプロンプトではpythonがどこにあるのかわからない、と言ってきます)実際、anacondaインストールすると、Visual Studioは自動的にその環境を検出してくれて、元々Visual Studioが持っているPython環境とどちらを使うか選択させてくれます。色々ぐぐってみましたが、全然情報が見つからないので、やむなくC:\から「検索」で調べてみました。すると以下の所にPython.exeがありました。

C:\Program Files\Python36\

64bitのPythonインタープリタなのに、何故こちら?とは思うんですが、どうもここです。まあ、PATH設定に追加してしまうのが簡単なんですが、ちょっと場所が気持ち悪いところにあるので何時変わるかもしれません。どうせ単独動作させるときは.batファイルから起動することが多いでしょうから、そこだけPATHを設定してしまいましょう。
Pythonのプログラムを起動する.batファイルを作り、最初に以下を入れておきます。

set PATH=C:\Program Files\Python36;%PATH%

これで、この.batファイルから起動されるプロセスだけにPythonのPATHが通ります。この後、Pythonプログラムの起動プログラムを書いてやればいいだけです。

2017年5月18日木曜日

【雑談】NTTの光モデムがやばい

自分が何時、家のネット回線をADSLから光に変えたか忘れてしまいましたが、昔からずっとNTTです。当時の光は3台装置が必要だったんです。光-電気変換器(正式な名称があるんだろうけど忘れました^^;)、CTU、最後にモデムです。この当時は1portしかEtherがなく、複数台のPCで使いたい場合はその1portをブリッジに繋げるしかありませんでした。(本当はルータにして、そこでproxy噛ませたかったんですが、NTTはDHCPの機能はNTTが持つので、ブリッジしか許してくれませんでした。)

1、2回雷が誘雷したのか壊れて交換しましたが、数年前CTUとモデムを一体型にした新型に交換してくれと電話がきたことがありました。その時は交換が面倒だったので断りましたが、数ヶ月前NTTの携帯と回線の契約をまとめると少し料金がお得になりますという甘言に負けて、契約したらその一体型のモデムに無理やり交換させられてしまいました。開通の設定が少し手間がかかりましたが無事使える様にしました。この新しいモデムですが、無線LANのカードを別売りで追加することはできるは、Etherも4port持ってます。さすがに10年以上前みたいに一家にPCが1台だけだとは思わなくなった様です。
ただLANの配線をし直すのも大変なので、従来のブリッジからの1portとメインのPCをモデムにつなぎました。(ブリッジ経由より、少しは速度が有利なんじゃないかという軽い気持ちでした)

ここからが本題なんですが、家ではNASを使っていて、半年〜1年に1回くらいUSB-HDDにバックアップをとってます。半日くらいかかりますが、まあしかたありません。ところが、今回バックアップをメインのPCにUSB-HDDをつないで行うと、なんかむちゃくちゃ遅い…。しかもよくNASからレスがなくなり、コピーできませんと言ってきます。どうしたのか、色々調べました。NAS周りのLAN回線がどこか接触不良した様子もありませんでした。しかも別の部屋(そこまでWiFiが届かないので、別途回線を通して別のWiFi親機を設置しています)でタブレット等でネットに繋ごうとすると、何時もは何も問題が起きないのに今日に限って全然つながりません。しばらく試していて、どうも別の部屋でタブレットを使うタイミングで、メインPCとNASの接続がおかしくなる様です。

ここまできてやっと推測ができました。メインPCはNTTのモデムに直結しています。4portあるうち、1portの通信量が増えて、他のportからのDHCPの要求に応えれなくなった様です。(能力がこのモデム足りなさすぎ)NASもDHCP機能を使って家庭内LANに接続してますから、時々DHCPアドレスの更新要求を出していますが、その時に別の部屋でタブレットがアクセスしようとすると、両方のDHCP応答が時間内にできない状態になっていたようです。メインPCをNTTのモデムに直結はやめ、NTTのモデムにはブリッジだけつなぎ、あとはブリッジ経由にしました。そうしたところ、NASのバックアップの速度が速くなり、別の部屋でのタブレット使用も問題なくなりました。

しかし、このNTTのモデム一体どんな回路構造になっているのやら。4portつけても、どれかが大量にデータ転送すると(まあ普通の一般家庭では、まずそんなことしないかもしれませんが)、他のportの機能の応答に支障がでるとは。かなりおそまつなCPUを使ってるんだろうな。