仕事メモとか

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


python勉強始めてみた~文字列編~

はい、公式を読み進めている勉強のログをあげております。
https://docs.python.org/ja/3/tutorial/index.html

公式の資料良いですね、読みやすいし情報がちゃんとあります。
例も多い。

ということで、今日は文字列について。

pythonのプログラムを見ていると、文字列の扱いで結構疑問に思うことがあり、
初歩的なことすぎて「これで動くんだろうか?」みたいなものがあったのですが、
やっぱりこれも公式にちゃんと載っていました。

ということで、今日はこちら。
https://docs.python.org/ja/3/tutorial/introduction.html#strings

文字列について。
紹介の都合上、全角で書いていますが、半角だと思ってください。
まあここを読むより、公式読んだ方が良いです。


●基本編
’シングルコーテーション’か、”ダブルコーテーション”で括る。

●エスケープ
¥でエスケープ。
’あ¥’ああ’

あ’ああ

●¥のエスケープを行わない
頭に「r」を付け足す
r’あ¥nああ’

あ¥nああ

●複数行(¥だけを行末に入れると改行しない)
”””¥
引用文字を
3連結する
”””

●リテラル型文字列は連続して書いたら自動連結(但し、変数には効かない)
’あああ’ ’いいい’

あああいいい


●変数の文字列分割

dat[0:12]
→0文字目から12文字目までを取得。添え字は0から始まるので、0が1文字目。

●たとえば4文字目移行全部取りたい場合(下の例ならd以降)
dat = 'abcdef'
dat[3:]

abcdef
012345

def


とりあえず、これくらい覚えておけば大丈夫そう。
rを使うことでraw型になって、\がそのまま使える、っていうのは知らないと混乱しそう。
このエントリーをはてなブックマークに追加

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エディタのビジュアルモードは慣れないというかすぐにピンとこないという。
このエントリーをはてなブックマークに追加

↑このページのトップヘ