Category:

pythonの型ヒント

pythonは動的型付け言語ですが、バージョン3.5で型ヒントが導入されたことにより、静的型付け言語っぽく開発することができるようになりました。 ただし、公式ページ にも以下のように書いてあるように、 Python ランタイムは、関数や変数の型アノテーションを強制しません。 型アノテーションは、型チェッカー、IDE、linterなどのサードパーティーツールで使われます。 型ヒント自体はあくまでコメントの延長であり動作には一切影響を与えません。型チェッカー、IDE、linterなどのツールによって利用されます。 型ヒントの導入に関してはメリットしかないと思いますので、導入して快適なpython lifeをおくりましょう。 型ヒントのメリット 型ヒントを導入するメリットは3つあると思います。 コードチェック 入力候補の表示 可読性向上 コードチェック 型ヒントの最大のメリットは静的型チェックだ Continue Reading

Posted On :
Category:

UbuntuにJenkinsをインストールして初期設定を行うまで

Ubuntuにjenkinsをインストールする手順を記載します。 基本的には こちら にしたがって作業を進めます。 バージョン Ubuntu: 18.04 Jenkins: 2.190 Javaランタイム: 11 Javaランタイムのインストール Jenkins 2.164 よりJava 11をサポートしているらしいので、Java11をインストールします。 それ以前のバージョンの場合は、Java8をインストールします。 sudo apt-get update sudo apt-get install openjdk-11-jre java –version > openjdk 11.0.4 2019-07-16 Jenkinsインストール wget -q -O – https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key ad Continue Reading

Posted On :
Category:

pythonにおけるローカル環境での環境変数の設定

Twelve-Factor Appがデファクトになりつつある中、pythonのアプリを作る際も、設定はコードから切り離し環境変数に格納することも多いと思います。 staging環境やproduction環境は、service化するなりdocker化するなり、何らかの方法で環境変数を外部から与えると思いますが、ローカル開発環境においてどうやって環境変数を与えるかは結構悩みどころです。 この記事では、その辺を考えてみたいと思います。 考慮ポイント 基本的には上にあるものほど、優先度が高いと考えました。 環境を汚さない(環境変数が残ったままにしない) 環境変数が残ったままになると、別のプログラムを同じterminalで実行して、不正な動作をしたり事故につながる 開発のスピードを落とさない 実装から動作確認までのイテレートが短ければ短いほどよい(環境立ち上げに時間がかかるのは嫌) 運用の手間を増や Continue Reading

Posted On :
Category:

ssh_exchange_identification: Connection closed by remote host エラーの対処

ssh_exchange_identification: Connection closed by remote hostエラーが発生した場合の対処方法をメモっておきます。 まず、ググると以下がヒットしたので、それを試してみました。 ~/.ssh/known_hosts から関連しそうな設定を消す /etc/hosts.allow に接続元IPアドレスを記載する /etc/ssh/sshd_config の MaxStartups の設定をデフォルト値の 10:30:100 から増やす host名やipアドレスが本当にあっているか確認する しかしいずれも解決にはつながらず、途方にくれた私を救ってくれたのは、上司からの Host test-* みたいな共通設定が入ってません?? というエスパー指摘でした。まさにその設定が入っています!! 踏み台サーバ経由で各サーバにsshする必要があるため、 Continue Reading

Posted On :
Category:

BigQueryのTips

BigQuery関係のTipsをまとめていきます。 bqコマンドについては こちら に記載してます。 コストについて こちらを参照するとわかりますが、ストレージコストとクエリコストがあります。 ストレージコストはだいたい想像つくと思うので、ここではクエリコストについて記載します。 認識しておきたいのは以下の3つだと私は思ってます。 コストは、アクセスするデータ量(バイト数)で決まる カラム型DBなので、必要なカラムのデータだけを取得する オプティマイザが優秀なので、最終的に利用するテーブル・カラム以外は処理対象にならない このルールを元に考えると、だいたいコストがどうなるか分かります。 実際にbq query –dry_runでアクセスするデータ量を厳密に確認しつつ以下の表を作りました。 項目 コストへの影響 説明 * 対象テーブルの全カラム分のコストがかかる *を使うとそのテーブルの全 Continue Reading

Posted On :
Category:

Google Apps Script(GAS)のTips

Google Apps Script(GAS)に関するTipsを書きためていきます。 実行中の関数を強制停止する https://script.google.com/home/executions にアクセスして、対象の実行をキャンセルします。 ログ確認 Logger.log()で出力したログはstackdriverに出力されますが、 https://script.google.com/home/executions から確認することができます。 スプレッドシートから値を取得する 1〜最大行数まで2〜3列目の値を取得するケースについて書いてあります。 対象データが多い場合は、getValues()で二次元配列として一括で値を取得するのが鉄則です。 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spr Continue Reading

Posted On :
Category:

GCP CLIのTips

たまに使うと忘れてることが多いので、よく使うコマンドをメモっていきます。 gcloud サービスアカウント設定 # リストアップ gcloud auth list # キーファイルで有効化 gcloud auth activate-service-account –key-file {key_file_json_path} # 有効化とデフォルトプロジェクト設定 gcloud auth activate-service-account –key-file {key_file_json_path} –project {project_name} # サービスアカウントを無効化 gcloud auth activate-service-account {service_account_name} デフォルトプロジェクト設定 # 設定確認 gcloud config list # プロジェ Continue Reading

Posted On :
Category:

DataProc+PySparkのTips

環境変数の利用 DBへの接続情報など環境変数から設定するようにしたいケースが発生しそうなので調査しました。 いずれもドライバプログラム内でしか利用できません。つまりworkerノード(リモート)で利用するためには一旦変数に格納してアプリケーションコード内で参照するような工夫が必要ですのでご注意ください。 方法1:initialization-actionsで自前スクリプトを実行する initialization-actionsで自前のスクリプトを実行して、その中で環境変数を設定するというとても原始的な方法です。この方法だと変数の内容をファイルに記載して、GCSにアップロードしなくてはならないので正直使えないと思っています。 まず、クラスター作成時にinitialization-actionsオプションで指定するスクリプト(initialize.sh)を実装する echo "exp Continue Reading

Posted On :
Category:

pythonのTips

仕事でpythonを触る機会が今後増えそうなので、pythonに関するメモをためていく予定です。 Pythonのバージョン管理(pyenv) pyenvを使ってpythonをインストールします # pyenvのインストール brew install pyenv pyenv -v > pyenv 1.2.13 # インストール可能なpythonのバージョン確認 pyenv install –list # 特定のバージョンのpythonをインストール pyenv install 3.7.4 # インストール済みのpythonのバージョン確認 pyenv versions > * system (set by /Users/rinoguchi/.pyenv/version) > 3.7.4 # ~/.bash_profileに以下の設定を追加(symsとautocompletionの有効化) Continue Reading

Posted On :
Category:

拾った梅で梅ジャムを作った

先週末、近場の梅林で地面に落っこちている梅の実を拾ってきて、大量の梅ジャムを作ったので、作り方を記録しておきます。おそらく今年は200個ぐらいの実を拾ってきて、結構大きめなビン8本分のジャムを作ることができました。我が家では毎朝のヨールグトにジャムを入れるのが定番なので、毎年ただで大量に作れる梅ジャムをとても重宝しています。 なお、もちろん梅泥棒ではありません。梅林の管理人さんに確認して、落ちている梅は拾って問題ないとの返事をいただいていることは明記しておきます。 容器を煮沸消毒する まずは出来上がった梅ジャムを入れるビンを煮沸消毒します。数分間沸騰したお湯でビンを茹でるだけです。 梅の実を水で洗う 拾ってきた梅の実を水で洗います。落ちている梅の実はナメクジとかがくっついていたりするので、表面は結構汚れていると思います。どうせこの後煮沸消毒されるので、あまり気にしてもしょうがないかもしれま Continue Reading

Posted On :