仕事メモとか

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


pythonで指定した期間の毎月1日を取得

はい、複数月のデータを取るときに、SQL一発でやっていましたが、
月を指定してループで回す方が可読性あがるよね、ということで、
python側で月をループで取るようにしたサンプルです。


import datetime

def month_range(start_date: date, end_date: date):
m = start_date
while m < end_date:
yield m.replace(day=1)
m = (m.replace(day=1) + timedelta(31)).replace(day=1)


def main():

for m in month_range(datetime.date(2019, 1, 1), datetime.date.today()):
print m


こんな感じにすると、
・貰ったスタートの日付を一旦その月の1日に変換、yieldで返す
・次はそこに31日を足して、その月の1日に変換、yieldで返す
・・・

となります。

timedeltaは月の加算減産は出来ないそうで。
やりたいならサードパーティのライブラリを使う、という手もあるっポイです。
https://python.civic-apps.com/add-month-relativedelta/


参考:
https://www.sejuku.net/blog/23716
https://python.civic-apps.com/timedelta/
このエントリーをはてなブックマークに追加


pandasの出力で、floatにすると、整数が「x.0」ってなるやつの対応方法

はい、pandas便利ですね。
データフレームにすると大体便利に扱えるので、これからの時代はpandasじゃないかな、
って思うんですが、ちょっとした落とし穴が。

数値データを取り扱うとfloatになるんですが、これのせいでデータが、

10

10.0

となります。小数値が欲しいときは良いんですが、整数として取り扱いたいときに、
csvで出力しようとすると、こうなります。

df.to_csv('outfile.csv', encoding='MS932', index=False,
header=['xxx', 'yyy', 'zzz'])

この時
float_formatでフォーマットを指定すると、色々出来ます。
こうすると、整数のときの「.0」が出ないようになります。

float_format='%g'

例)
df.to_csv('outfile.csv', encoding='MS932', index=False, float_format='%g',
header=['xxx', 'yyy', 'zzz'])


参考
https://note.nkmk.me/python-pandas-option-display/
https://pythondatascience.plavox.info/pandas/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%82%92%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B
このエントリーをはてなブックマークに追加


brew install postgresql で、perl.h がどうのこうのでコケる

はい、macに環境を構築しようと四苦八苦しているのですが、
postgresqlをインストールしようとすると、なんかエラーでコケます。
postgresqlのバージョンは11です。


brew install postgresql
(略)
hecking tcl.h presence... yes
checking for tcl.h... yes
checking for perl.h... no
configure: error: header file is required for Perl

Do not report this issue to Homebrew/brew or Homebrew/core!

どうも、perlでエラーになるようなんですが、原因が良くわからない。

試しに、perlを個別にインストールしてみると上手くいく。
brew install perl

とりあえず単独でperl入れられたから、postgresql上は入れないようにしたい、
と思ってい調べたら、--without-perlというのがあるも、これはバージョン9.6以降は使えない。

ということで、以下の方法で除外したら上手く行きました。

brew edit postgresql
※--with-perl 行を除外

brew install postgresql

pipenv install -d


インストール内容のセットをedit出来るんですね。


参考:
https://github.com/petere/homebrew-postgresql/issues/44
https://github.com/petere/homebrew-postgresql/issues/41
https://github.com/hhvm/homebrew-hhvm/issues/122
https://github.com/Homebrew/linuxbrew-core/pull/13036
このエントリーをはてなブックマークに追加


puttygenでopenSSHにして、windowsで使っていた鍵をmacでも使う

はい、mac移行中なんですが、各種サーバーに入る方式が地味に違うため、
puttyでやっていたことをmacで出来るように準備中です。

以下の手順で対応しました。


●putty秘密鍵をopenSSHに変更

puttygenを立ち上げて、自分の持ってる鍵(ppkファイル)を読み込み、
conversionsタブから、「Exoprt Open SSH Key」にてopenSSH化

参考
https://www.tkd55.net/?p=873


●作ったファイルをmacに持っていく

/Users/{自分}/.ssh に「id_rsa」としてコピー。
この時、他の人に実行権限があると上手くいかないので、600とする
chmod 600 id_rsa


●sshコマンドでアクセスしてみる

ssh {対象サーバー}


●番外編1「自分のユーザー名とサーバーに入るユーザー名が違う」
●番外編2「パスフレーズを覚えさせる」

/Users/{自分}/.ssh/config ファイルを作成

Host {任意のホスト名、全部なら*}
User {サーバーに入るときの名前}
UseKeychain yes



参考:
https://qiita.com/passol78/items/2ad123e39efeb1a5286b
このエントリーをはてなブックマークに追加


grepで大文字小文字を気にしなくて検索したい、など

はい、良く使うgrepですが、結構うろ覚えな機能も多数。
ということで、今回は気になるgrepの良く使う機能を纏めておきました。


●大文字小文字を区別しないで検索したい
-i , --ignore-case

●検索結果に色を付けたい
--color

●ファイル単位に検索結果が何件あるか調べたい
-c , --count

●バイナリファイルを検索対象としない
-I

●検索結果の行番号を一緒に出力
-n , --line-number

●パターンを含んだ行「以外」を出力
-v, --invert-match


参考:
https://linuxjm.osdn.jp/html/GNU_grep/man1/grep.1.html

grepでORとかAND検索
http://workmemo.techblog.jp/archives/24855377.html

grepで前後のデータを出したい
http://workmemo.techblog.jp/archives/36652828.html
このエントリーをはてなブックマークに追加

↑このページのトップヘ