pycharm ver4.5.0でPy_Initializeエラー
現象
愛用しているpycharmのバージョンを4.3?から4.5にアップデートしたところ、以下のエラーが出力され、pythonコードがrunできなくなりました。
C:\Python34\python.exe D:/test/test.py
Fatal Python error: Py_Initialize: can't initialize sys standard streams
LookupError: unknown encoding: windows-31j
Process finished with exit code 3
対応
pythonを再インストールしたり、pycharmを再インストールしたり色々やったが、なかなか改善しなかったので、意を決してサポートに問い合わせました。
メールから5分程度で担当者から連絡が来て(早い!)、以下の対応で解消するか確認してほしいとの事でした。
(そして、言うとおりにやったら解消しました)
- pycharmをver4.5.1にアップデート
- Setting|Editor|File EncodingからIDE EncodingとProject Encodingを正常値に戻す
私の環境ではどちらもUTF-8にしました。
所感
こういうツール系の不可解な障害を良く引いてしまう私としては、サポートに聞けるのは良いですね。
あと、(簡単な既知の問題だったのかもしれませんが)サポートの回答が本当に早くて驚きました。
サポートセンターどこにあるのかとか、どういうシフトになっているのかなと思って、開発元のJetbrains社について調べたら、ロシアとアメリカとドイツに拠点を持っているとの事。
それら拠点の時差が、例えば8h毎なら、変則的な夜勤とか無く24hサービスセンター営業できるかもとか思ったけど、日本を0とした時に、ロシア、ドイツ、アメリカで(-7, -8, -13)という時差だったのでちょっと違う事がわかりました。
でもグローバル企業ならそういうサービスのやり方をやってるのでしょうかね。
python Tips
参考になるリンクをはりつけるページ
リストのサイズの取得(len関数) - リスト - Python入門
python - Is it possible for a unit test to assert that a method calls sys.exit() - Stack Overflow
要素の確認(in演算子, indexメソッド, countメソッド) - リスト - Python入門
リスト - 作成、取り出し、置換、追加、検索、削除、要素数 - ひきメモ
文字列及び数値を整数に変換(int) - 数値 - Python入門
ショートカット: Python スクリプトで出力している内容が Jenkins の Console にリアルタイムで出力されない。
プロキシ設定
困ることが多いproxy関連の設定方法をまとめます。
- pip(pythonパッケージ管理モジュール)
pipをプロキシ環境下で使って、パッケージをインストールする方法 - ろむめも
- git
WindowsローカルレポジトリにJenkinsを活用した話(Windows+svn)
背景
プライベートプロジェクトにJenkins氏を導入しました。
一人でやっている遊びプロジェクトですが、所謂TDDやってみたいなとか、メトリクスとかプロジェクトの進捗を可視化したいなと思いました。また、可視化すればプライベートプロジェクトで最も重要な「モチベーション」の維持ができるかもしれないという淡い期待も込めて、Jenkins氏にメンターになって頂きたいという思いから、導入してみました。
環境
参考までに導入環境は以下です
OS:windows7 64bit home
jenkins:1.596
構成管理:svn(レポジトリはローカルに配置)
概要
ざっくり構想はこんな感じにしました。
①ユーザーがソースコードをコミットする(Development/Commit)
②コミットをJenkinsに通知する(Hook)
③Jenkins働く(CheckOut/Build/Test/...)
④問題があればユーザーに通知する(Notice)
こうした理由は簡単で、業務用なら別ですけど、自宅のPCは必要なときしか電源入れないからです。他の構想としては例えばJenkins氏に深夜こっそり働いてもらう、定期的にレポジトリを見に行ってもらって変更があればビルドしてもらう、定期的にビルドしてもらうというような方法があると思います。自宅のPCは使うときにしか電源を入れないので、現実的にちゃんとライフサイクル回すにはこのフローが最適だと考えました。
導入
まずはJenkins氏のインストール。以下からインストーラを入手しました。
Welcome to Jenkins CI! | Jenkins CI
ダウンロードは右側の「Or native Package」というところのwindowsをクリックする。
svnはTortiseSVNを使っていたので、それをそのまま使いました。
svnのレポジトリ作成とかそのへんは割愛します。
環境設定
次にJenkins氏にsvnのレポジトリからcheckoutしてもらうための設定をおこないました。
①新規ジョブ作成
インストール時に特に操作してなければ、次のURLにアクセスすることで、Jenkins氏を確認できます。ポート番号は8080がデフォルトですが、任意の値に変更できます。
http://localhost:<ポート番号>
そして、左側にある「新規ジョブ作成」をクリックし、次の画面で「フリースタイル・プロジェクトのビルド」を選択してジョブ名を入力したところでOKをクリック
するとトップページに新しいジョブが追加されます。
Jenkins氏はこのジョブ単位で管理してくれます。
②ジョブの設定をする
トップページに戻って、先ほど作成したジョブ名をクリック
次の画面の左側の設定をクリック
ここで以下の設定を行います。
・プロジェクトの高度なオプションの「カスタムワークスペースを使用」にチェックを入れ、ディレクトリを設定
⇒デフォルトの場所(Program Files下)ではJenkinsにアクセス権を設定しなければならないので、他の場所に移したほうがよかったです。Jenkinsはこのワークスペースを使ってsvnのチェックアウトやビルドを行います。
・ソースコードの管理をsubversionに設定し、Repository URLを設定。
この時レポジトリの位置がローカルにある場合は、「file:///C:/Users/workspace/*****」というような書き方をします。Jenkinsの不具合なのかなんなのか、赤字でアクセスできないと表示されるんですが、無視して設定を保存するとちゃんとアクセスできました。それ以外の設定は変更しませんでした。チェックアウト方式はお好みで。
・動作確認
ここまでの設定を保存し、左側メニューにある「ビルド実行」をクリックすると、問題がなければJenkins氏がsvnから最新のリビジョンをチェックアウトしてくれるはずです。
結果は「ビルド実行状態」から確認してください。
また、環境のデバックにはコンソール出力を活用するのが良いと思います。
コンソール出力は実行中ジョブの日時をクリックして、次のページでConsoleOutputをクリックすると出力されます。
チェックアウト後に、上図の「Build/Test」のようにテストコードの実行や各種解析をJenkinsにさせたければ、「ビルド手順の追加」をクリックし、例えば「windowsバッチコマンドの実行」等を選択してバッチコマンドを記述することができます。
ここまでで上の図のCheckoutとBuild/Testができるようになります。
③svnとの連携
次に上の図の「Hook」を導入します。
イメージとしてはUserがCommitした時にsubversionに働いてもらって、jenkinsにCommitを通知するという流れです。そのため、svnのレポジトリのスクリプトをいじります。
レポジトリの中に「hooks」というフォルダがあるのでそこにhookスクリプト(tmplファイル)があります。
コミット前なら「pre-commit」、コミット後なら「post-commit」みたいなファイル名のようです。自分で好きな名前をつけても良いです。また、windowsの場合、拡張子をbatに変更する必要があります。私は名前をデフォルトのまま、post-commit.batを用意しました。そこに次のようにしました。
SET JOBNAME=<Jenkinsに設定したジョブの名前> SET REPOS=<レポジトリの場所>(C:\\workspace 等) SET JENKINSSERVER=<jenkinsサーバー>(http://localhost:8080等) FOR /f "tokens=*" %%c IN ( 'svnlook youngest %REPOS%' ) DO ( SET REV=%%c ) FOR /f "tokens=*" %%b IN ( 'svnlook changed --revision %REV% %REPOS%' ) DO ( SET POST=%%b ) wget ^ --header="Content-Type:text/plain;charset=UTF-8" ^ --post-data="%POST%" ^ --output-document="-" ^ --timeout=2 ^ %JENKINSSERVER%/job/%JOBNAME%/build?delay=0sec
書いていて思い出しましたが、上のバッチの利用にはwgetのインストールが必要です。以下を参考にインストールしました。
Windows版 wgetをインストールしよう:アシマネのドタバタ奮闘日記:So-netブログ
batファイルでは、Jenkins氏にwgetコマンド経由でビルド実行をお願いしています。
http://localhost:<ポート番号>/job/<job名>/build?delay=0sec
にアクセスすると働いてくれる(jenkins上のビルド実行クリックと同じ動作)ので、これをwgetで呼んでいます。
最後にTortiseSVNの設定をします。
どこでもいいのでエクスプローラ上で右クリック。svnのメニューから設定を選択。左側の設定メニューの中から「HookScript」をクリック。「追加」ボタンを押して、右上のダイアログから「post commit hook」を選択。ワーキングコピーと、先ほど作ったbatファイルの位置を設定。
以上の設定が正しくされれば、コミットをきっかけにJenkinsが働いてくれるはずです。ちょっと長くなったのでnoticeはいずれ書きます。
参考
シフトキーが効かなくなった
現象
かねてからFILCOの青軸つかっているんですが、 キーボードの左側にあるシフトキーが効かなくなりました。
他のキーでなるようなカチャカチャという音ではなく、ガチガチガチという音が鳴るようになってしまいました。
原因
キーボードの掃除をしたのが原因だと思います。
もともとシフトキーの効きが悪かったので、直るかなと思って掃除したら、余計に悪化してしまったという事です。
掃除の手順は以下です。
- すべてのキーを外す
- サイバークリーンでゴミをとる
- 取れない汚れを固く絞った布でふき取る
- キーを元に戻す
対策
さて、どうしましょう?
修理出すか、どうしよう。。。
参考
使っている青軸キーボード(こわれてしまったものですが)
キーの取り外しに便利です。
サイバークリーン
スライム状の汚れ取りで、隙間のゴミにもアプローチできて非常に良いです。
ぐりぐり押し付けてもいいですが、放置しておくとべトーっと広がって、隙間に入り込んでくれるのが良いです。
安心のキムワイプ。汚れの拭き取りに。
露骨にアフィリエイト貼ったブログ書いてみたらこうなりました。