hgでエラーが出てbitbucketにつながらない
mercurial + bitbucket.org で開発してたんですが、気がついたらhg
がエラー吐くようになってた。
びっくりしたのがmac、debian、 raspberrypi全部で同じ現象なので、bitbucket.org側を疑ったんだけど、とりあえずmacでmercurial更新してみたら直った。
SSLエラーが出たので、証明期限切れなのかもしれない(よくわかってない)
$ hg version
mercurial 3.1.2
$ hg incoming
Traceback (most recent call last):
File "/usr/bin/hg", line 43, in <module>
mercurial.dispatch.run()
File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 28, in run
sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255)
File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 69, in dispatch
ret = _runcatch(req)
File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 227, in _runcatch
ui.warn(_("abort: error: %s\n") % reason)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
エンコードの問題かと思い、LANG=C
や、pythonのデフォルトエンコードをutf-8
にしても解決せず別エラーが発生。
$ LANG=C;hg incoming
abort: error: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:581)
$ python
>>> import sys
>>> sys.getdefaultencoding()
'ascii'
>>> import site
>>> site.getusersitepackages()
'/home/USERNAME/.local/lib/python2.7/site-packages'
フォルダ自体がないので作成してusercustomize.pyを作成。
参考:sitecustomize.py を使わず usercustomize.py を使おうね
mkdir -p /home/USERNAME/.local/lib/python2.7/site-packages
cd /home/USERNAME/.local/lib/python2.7/site-packages
echo -e "import sys\nsys.setdefaultencoding('utf-8') > usercustomize.py
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
これでデフォルトエンコードがutf-8になった。で試すと同じ_ssl.cでエラー。
$ hg incoming
中止: エラー: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:581)
とりあえずmacのmercurialを最新版にしてみる...
$ brew update
$ brew upgrade mercurial
$ hg version
mercurial 4.8.1
$ hg incoming
(正常な反応が帰ってくる)
3.1.2 => 4.8.1 に更新で解決した。
手動で最新版を入れる
次、debianとraspberrypi。両方jessieで、パッケージリストの最新版が3.1.2だったのでapt-get install update, upgrade
しても解決せず。
手動で取得して入れてみる。
$ sudo apt-get install python-dev python-docutils //パッケージ不足
$ wget http://mercurial-scm.org/release/mercurial-4.8.1.tar.gz
$ tar xvzf mercurial-4.8.1.tar.gz
$ cd mercurial-4.8.1
$ sudo make install //sudoないとpermissonエラーが起きる
....
make 成功。
上記作業終了時点でhg
実行しても謎エラーがでる。
$ hg version
Traceback (most recent call last):
File "/usr/bin/hg", line 41, in <module>
mercurial.util.setbinary(fp)
File "/usr/local/lib/python2.7/dist-packages/hgdemandimport/demandimportpy2.py", line 151, in __getattr__
return getattr(self._module, attr)
AttributeError: 'module' object has no attribute 'setbinary'
原因がさっぱりわからんですが、とりあえずばコンソール開き直したら直った(reset
コマンドでは直らなかった)
$ hg version
mercurial 4.8.1
debian, raspberrypiからでもエラーなくbitbucket.orgへ繫がるようになって良く分かってないけど解決。
python3 import class in the package
結論から書く。
やりたかったこと、mypackage.mymodule.myclass
を mypackage.myclass
として呼び出したかった。
見つけたのは2通りの方法。
(1) モジュールをパッケージ名にしちゃう。
/mypackage
__init__.py (empty)
mymodule.py
class myclass:
pass
main.py
import mypackage.mymodule as mypackage
print(mypackage.myclass)
>>> <class 'mypackage.mymodule.myclass'>
(2) パッケージ側で予めインポートしておく。
/mypackage
__init__.py
from .mymodule import myclass
mymodule.py
class myclass:
pass
main.py
import mypackage
print(mypackage.myclass)
>>> <class 'mypackage.mymodule.myclass'>
どっちがスマートなんだろうか?
もしパッケージ内に複数のモジュールが含まれるなら、(1)の方法は使いづらい。が、(2)のパッケージ側で予めインポートした場合、不要なものまで勝手にインポートしちゃってるかもしれん。
映画「エヴェレスト 神々の山嶺」
映画「エヴェレスト 神々の山嶺」
クライマー羽生、死に際のメモ
もういいか
もういいかまだか
休むのは死ぬ時だ
休むな
生きている間は休まない
休むなんて俺は許さないぞ
おれは必ず戻る
生きて戻る
死んだらゴミだ
足が動かなければ手で歩け
手が動かなれば指でゆけ
指が動かなければ歯で雪を噛みながら歩け
歯もダメになったら目でゆけ
目で睨みながら歩け
目もダメになって本当にダメになったら
思え
ありったけの心で思え
想え
力強いお言葉。
映画自体は雑なんだよね、残念ながら。
古今googletestのインストール
昔(もう取得できません)
$ wget http://googletest.googlecode.com/files/gtest-1.7.0.zip
$ unzip gtest-1.7.0.zip
今、github
$ git clone https://github.com/google/googletest.git
$ cd googletest
~/googletest $ mkdir build
~/googletest $ cd build
~/googletest/build $ cmake ..
~/googletest/build $ make
んで、ファイルのパスも変わった。
昔
~/googletest/gtest/include/gtest/gtest.h
~/googletest/gtest/lib/libgtest.a
今
~/googletest $ find ./ -nmae "*.a"
./build/googlemock/libmock.a
./build/googlemock/gtest/libgtest_main.a
./build/googlemock/gtest/libgtest.a
./build/googlemock/libgmock_main.a
~/googletest $ find ./ -name "gtest.h"
./googletest/include/gtest/gtest.h
./googletest/include/gtest/internal/custom/gtest.h
というわけでパスが以下に変わってた。
~/googletest/googletest/include/gtest/gtest.h
~/googletest/build/googlemock/gtest/libgtest.a
詳しくは下記参照。
MacでVisual Studio CodeでPython3
1. Visual Studio Code を入れる。
Visual Studio Codeからダウンロードしてインストールする。
2. Python用の拡張機能を入れる。
メニュー>表示>拡張機能
で python
と入力、Python(by Don Jayamanne)をインストールする。
3. 設定
⌘,
で設定を呼び出し(またはメニュー>Code>基本設定>設定
)
ユーザー設定で下記を追加する。
"python.pythonPath": "python3",
"python.linting.pylintEnabled": false,
実行環境の確認したい場合は、新規ファイル作成して、下記コードを書いて⌘F5
で実行しようとするとVoiceOverになる1、くっそ。
メニュー>デバッグ>デバッグなしで実行
すると確認できる。
import platform print(platform.python_version())
デバッグコンソールにバージョンが表示される(設定を追加しておくと3.6.1になる)
2.7.13
linting = lint は記述の曖昧さや揺れをチェックするツール、とりあえずはいいや。
参考
インストールから実行まで、lintも下記が詳しい。
Homebrew, git, mercurial, python3
開発環境を入れてみる。 ホストはmacOS Sierra 10.12.3。
パッケージマネジャーはHomebrew。 バージョン管理は都合上2種類、今はgitが主流だね。 言語はPython3、仮想環境はとりあえずいらねえや、後回し。
Homebrew
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
要Xcode。入ってなくても、勝手にダウンロードしてインストールまでしてくれるぜ。
動作確認。
$ brew doctor
Your system is ready to brew.
git
$ git --version
git version 2.11.0 (Apple Git-81)
設定する。
$ git config --global user.name "First-name"
$ git config --global user.email "hoge@hoge.com"
$ git config --global core.editor 'vim -c "set fenc=utf-8"'
$ git config --global color.diff auto
$ git config --global color.status auto
$ git config --global color.branch auto
$ git config --global core.precomposeunicode true
$ git config --local core.precomposeunicode true
$ git config --global core.quotepath false
gitの設定は下記を参考にしました。
mercurial
$ brew install mercurial
$ hg --version
Mercurial Distributed SCM (version 4.2.2)
(see https://mercurial-scm.org for more information)
Copyright (C) 2005-2017 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
設定をする(かホームフォルダに設定ファイルを作る。$HOME/.hgrc
)
$ hg config --edit
[ui]
username = hoge<hoge@hoge.com>
editor = vim
ignore = ~/.hgignore
次に無視ファイルも作っておく。$HOME/.hgignore
# ignore file for gcc/c++, macos, use glob syntax.
syntax: glob
*~
*.o
*.out
.DS_Store
python3
$ brew install python3
$ python3 --version
Python 3.6.1
$ pip3 --version
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)
Pythonの仮想環境はそのうちでいいや、とりあえずコード書く方を優先。 でも下記が参考になる。
追。virtualenv
というのが良いそうな。入れ方は下記。
接続先の有効なピアプロセスが見つかりませんでした
VMware Fusion 8.5.7 でレジューム状態のWindows7を起動しようとしたが、「接続先の有効なピアプロセスが見つかりません」と出て起動できない。
ざっくり調べたら下記のいずれかで直るっぽい。
- ホストOSの再起動
- ゲストOSのパッケージ内からレジュームファイル(.vmss)を削除
- ゲストOSのパッケージ内から仮想ディスクのロックファイル(.lck)を削除
1は望み薄そうだから、2から試す。がレジュームファイルが見当たらない。3はいくつかの.lckを見つけたので削除して、起動を試みたが症状変わらず… で、ダメ元でmac自体を再起動したら直るという遠回りな日々。