仕事メモとか

仕事中に調べた情報とか知ったことをメモしています。
unixコマンド, vim, oracle, putty, postgresql, bash, EXCEL, python, SQL全般 など。
最近は tableau, movabletype とかも触ったりしています。
雑な読書感想とかはこちら

python勉強始めてみた~計算編~

pythonを使うようになりそうなので、ちゃんと勉強しようと思い、
公式サイトが良いとアドバイスを貰ったので、まずは公式サイトをあたまから読んでみようかと思いまして。

んで、気になった点を明記していきます。
最近の(?)言語使いからすると当たり前的なものも多数あると思いますが、
良く考えたらちゃんとした勉強はCしかやっておらず(C++ですらない)、あとは勘でやってきたので、
最近のは進化してるんだなー、 という点も書いていきます。

読み込み対象
https://docs.python.org/ja/3/tutorial/index.html

python公式サイト。使うのが3系なので、3.7.3で読み進めます。

んでまず知ったのが、pythonって蛇の方からじゃなくて、モンティパイソンから来てるのね、と。
但し、モンティパイソンのパイソンが蛇(ニシキヘビ)から来てるので、最終的には間違っていないのですが。
(更にモンティパイソンの方は、どちらかというと隠語として使ってるようなので、隠語の方を調べたい人はググってください)

と、本題。
四則演算についても最近(?)のやつは便利なんだなーと。

+ - * /
この辺は分かるのですが、整数部だけの演算

//
を知りませんでした。

5 / 2
=2.5

5 // 2
=2

はい、端数切捨てて整数部だけ取れます。
取った値を整数化とかしなくていいです。便利。

また、べき乗も出来ることを初めて知りました。

2 ** 3
=8

ということで、雑な一覧

+ =足し算
- =引き算
* =掛け算
/ =割り算
% =割り算のあまり
// =割り算の整数部だけ
** =べき乗

ちなみに整数と浮動小数点(0.5とか、整数以下があるもの)を混在して計算した場合、
出力結果は浮動小数点になります(大体の言語はそうだと思いますが)


スプレッドシートで作った関数を大量発行したら、途中からエラーになった

はい、以下の記事の続きです

http://workmemo.techblog.jp/archives/37357577.html

喜び勇んで作った関数を大量に(1万件)くらい回してみたら、
実行に結構時間が掛かるうえ、ERRORになってる場所が結構ある。
ただし個別にデコードするとちゃんと成功する。

調べてみたらgoogleスプレッドシートって
スクリプトを大量に呼ぶと途中であきらめてERRORにする癖があるようで。

参考:
http://jutememo.blogspot.com/2014/01/google.html


ちゃんと測ってませんが、直観的に1000件くらいを超えると怪しい。

#ERROR! となり、以下のエラーが吐き出されます。
Service invoked too many times in a short time: exec qps. Try
Utilities.sleep(1000) between calls.(行 0)が発生しました。


今回は自動化することが目的ではなく、単発でデータを出すことが目的だったので、
ISERRORでERRORになっていない部分を抜き出してデータ化。
ERRORになってる部分だけを再計算するようにしました。

この再計算もスプレッドシートの自動計算のクセなのか、
フォーカスのin-outではだめで、一度セルを綺麗にして再度コピペする、みたいにしないとダメでした。
再計算ボタン探したけど見当たらなかったのですが、たぶんどこかにあるんじゃないかと。


スプレッドシートは便利だけど、地味な落とし穴がたまに空いてます。


アクセスログにあるエンコーディングされた文字列を良い感じに表示する

アクセスログ見たら、大体エンコーディングされた%ナントカみたいなのが大量に並んでいます。
んで、これを良い感じに見えるようにしようと思ったんですが、googleスプレッドシートで出来るんじゃ? と思ってやってみました。

但し、デコード関数が無い点に注意


●アクセスログからデータ取得
zgrep {取りたいURLだけを特定する文字} {アクセスログファイル} | cut -f{URLのx番目}

●スプレッドシートに貼り付け

●URLをデコード
エンコード関数はあるものの、デコード関数は無いので、
「ツール」「スクリプトエディタ」から関数を作成

参考:
https://teratail.com/questions/91518

こちらの例で言うと、JavaScriptのdecodeURIを直接読んでます。素晴らしい

●作った関数を呼ぶ


これで簡単にURLデコードして日本語部分を良い感じに抜けるようになりました。
ついでにmid関数とか使って不必要な部分をカットすれば割と色々使えそうです。


viエディタで複数行のインデントをいい感じに入れる方法

多分他にもやり方はいろいろあると思いますが、忘れないためにメモ。

1.複数行矩形選択
 Ctrl+Vでヴィジュアルモード
 下に矩形選択して複数行をマーク

2.Shift+Iで挿入モード
 入れたいスペースを入力

3.ESCで挿入モードを抜ける
 複数行のインデントが完了


どうもviエディタのビジュアルモードは慣れないというかすぐにピンとこないという。

コマンドプロンプトでディレクトリ移動


はい、完全にタイトルの通りなんですが、windowsというよりDOS時代のような記事です。

通常、GUIだとほとんど気にならないのですが、たまにコマンドプロンプトでなんかやる必要が出てきます。
たいていの場合、Cドライブに物がありそれをそのまま実行するんですが、今回は違うドライブにあってそれを実行する必要がありました。

んで、CDコマンドを打ってみたんですが、なんかドライブが変わらない。

cd x:\xxx\xxx

ってやってもコマンドプロンプトのディレクトリが変わらない。
はて? と思って

cd x:
とやったら、x上のドライブのディレクトリは移動してるっぽい。

完全に忘れていたんですが、ドライブ移動は別でした。

ということで、
cd \d {移動先フルパス}
とするか、
x:
とやってxドライブに移動する、みたいなことをやる必要があります。


参考:
https://jibunlife.hateblo.jp/entry/cmd-cd-drive

↑このページのトップヘ