やったもん勝ち

主にプログラミングのこと。生産性向上の某とかも。

goでよく使うスニペット(随時更新)

Go

go modでのモジュール管理 以下のようなパスでプロジェクトを作成。 プロジェクトのパスは、以前はGOPATH配下に置かないとだめだったようだが、今はgo modで管理すればどこでもOK. dirtest ├── go.mod ├── main.go └── subpkg └── sub1.go $go.modはdirtest…

seleniumで要素(モーダル)に対してscrollする

python - Scrolling to element using webdriver? - Stack Overflow より、 element = driver.find_element_by_id('some_id') element.location_once_scrolled_into_view スクロールするアクションではないが、副産物的にスクロールされると。 これ調べるの…

AWS lambdaのpythonで並列実行する方法

普通の並列実行は、こちらを参考にして実装できました。 qiita.com lambdaで実行するとなると若干修正しました。 import time from multiprocessing import Process, Pipe hoge_list = [1, 2, 3, 4] def wait_and_print(i, *args, **kwargs): print(f'start …

iphone, ipadでkindleの本をオーディオブックにする方法

最近本を読むように心がけていますが、電車移動などのスキマ時間を使って時間を作るようにしていますが、徒歩での移動中などの時間はまだまだ有効活用できていない感がありました。 近ごろまではpodcastやvoicyを聞きながら歩いていたり、部屋の掃除をしてい…

よく使うpython3のスニペット集(随時更新)

pythonスニペット unixtime⇔datetimeの変換 import datetime # datetimeのnowをつくる now = datetime.datetime.now() # => datetime.datetime(2018, 6, 20, 12, 37, 50, 642687) # datetiemをunixtimeに変換 unixtime = int(now.strftime('%s')) # => 15294…

AWS Lambdaでdatetimeを使うときにコンテナが再利用される罠

lambdaのpythonでdatetimeを使おうとしてコードを書いて、いざ動かしてみると、どうもちょっとおかしい。 明らかにおかしいというよりは時折おかしくなることがある。 これが逆に厄介でした。 原因は、lambdaの実行コンテナのコンテキストは再利用されること…

AWS SSMセッションマネージャーでvimのインサートモードから抜けられない問題

会社でAWS SSMを使って開発をしてたのが初めてだったのですが、罠にハマりました。 ブラウザからsshつなぐっていう感じの認識で、あまり深い理解はしていないのですが、とりあえずsshみたいに使えるもんだと思ってやってましたが、vimでハマりました。 vimで…

pythonのaws-sdkのboto3を使ってライブラリのコードをちゃんと読んでみる①

boto3とは? pythonのaws-sdkです。 他の言語のaws-sdkは大体aws-sdkみたいな名前で公開されていることが多いのですが、なぜかpythonだけboto3っていう名前です。 boto3.amazonaws.com 個人的にはこのドキュメントすごい読みやすくて好きなライブラリです。 …

aws-cliを使ってs3にgz圧縮ファイルをアップロードするときの注意点

aws-cliを使ってローカルからファイルをアップロードしようとしたのですが、csv.gzなファイルをアップロードするときにちょっとハマってしまったのでメモとして残しておきます。 まずはcsvファイルを用意します。 $cat sample.csv hoge,fuga foo,bar $ gzip …

AWSのEC2でAirflow実行環境を構築してチュートリアルを動かしてみる

今、airflowが熱いらしいです。 そこら編の解説は他の有用や記事に任せて、とりあえずチュートリアル動かしてみた備忘録を残しておきます。 AWS環境 Amazon Linux 2 セキュリティグループは sshの22番 ウェブコンソールの8080番 を開けておきます 大体チュー…

いい加減DockerとECSを整理する①

Dockerの概念が腑に落ちないこと早1年。 そろそろこれじゃだめだって思い始めて、復習する万。 install方法は割愛しておくことにする。 というか忘れてしまった。 Mac High Sierra 10.13.5 $ docker -v Docker version 17.12.0-ce, build c97c6d6 docker-com…

顔認識・画像認識ライブラリAPIを使ってみる

経緯 個人的な趣味で、顔認識のAPIを使いたいなと思い立ちました。 OpenCVで自前でできないかなーとも思ったのですが、なかなか難しいっぽく、諦めてAPIを使うという選択になった次第です。 どこがAPIを提供しているのか、以下のリンクがとても参考になりま…

Amazon linuxで/etc/cron.d/配下または/etc/cron.hourly/配下にcronを設定する.

cronの設定方法はいくつかあって、どこにどう設定すればいいのかの、ベストプラクティスはまだよく分かっていません。 いったんpart1として/etc/cron.d/と/etc/cron.hourly/はいかに設定する方法をまとめておきます。 環境 AWS amazon linux Amazon Linux AM…

python36で別のホストのmysqlに接続する。

環境 接続元 AWS EC2 Amazon Linux AMI release 2017.09 python3.6 pip pymysql グローバルIP: aaa.aaa.aaa.aaa 接続先 AWS EC2 Amazon Linux AMI release 2017.09 MySQL: 5.6.38 グローバルIP: xxx.xxx.xxx.xxx 準備 MySQLサーバ 事前にDBとテーブルを作っ…

sudoers.dファイルでコマンドのオプションはどこまで制限できるのか

sudoers.dで指定する、許可されるコマンドは、どこまで寛容なのか。 一字一句そのコマンドじゃなきゃいけないのか。 それとも、オプションだとかパスはよしなに指定させてくれるのか。 検証する。 # rootになっておく $ sudo su - # まずは、現在のユーザー…

40秒で支度しな!AWSのEC2にpython36で最速でflask実行環境を作成する

AWSのEC2、amazon linuxです。 $ sudo yum install -y python36 $ sudo pip-3.6 install flask $ vi ~/hello.py # 以下の内容で作成作成 from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello World!' if __name__ ==…

pythonのboto3でのエラーハンドリング

問題 pythonのboto3で以下のようなコードを書いていて、 try: hoge() except: print("error") flake8にdo not use bare except'と怒られた。 pythonのエラーの書き方をちゃんと調べてみると、エラーの種類をexceptで指定しておかないと、エラーメッセージを…

sudo rm -rf で削除できないファイルのパーミッション設定

背景 想定するのは、次のようなケース ownerがrootでパーミッション設定が700のディレクトリmydir配下のディレクトリ・ファイルをすべて削除したい mydir配下のディレクトリ・ファイルのパーミッションはすべて700 削除を実行するのはsudo権限を持った一般ユ…

visudoでsudoersを変更して、sudo権限を設定する

zabbixユーザーとsudo等々の権限周りでハマりました。 備忘録として開発環境で動作確認したのを残しておきます。 環境 MacOS High Sierra 10.13.1 Vagrant 2.0.1 CentOS 7.2.1511 かんたんなsudoersの知識 sudoとかの権限を設定しているのは、 /etc/sudoers…

python3でstrからdictに変換する

import ast str = "{'name':'Taro', 'hieght':170}" type(str) => <class 'str'> dict = ast.literal_eval(str) type(dict) => <class 'dict'> 他の記事でast.literal_dict(str) となっていたのですが、 AttributeError: module 'ast' has no attribute 'literal_dict' とエラーになって</class></class>…

AWS EMRを使ったhiveのチュートリアル

やりたいこと 以下のような3つの項目を持ったjsonファイルがあります。 id, cookie, date 基本的にはidはcookieと一対一の関係にありますが、たまにあるcookieに対して同じidが振られていることがあります。 つまり、cookieは完全にユニークですが、idには重…

AWSのEMRを使ってHiveの基本的な使い方を確認しておく備忘録

Hiveとは? Hiveとは? Hive(ハイブ)とは、オープンソースの大規模分散計算フレームワークHadoop上で動作するデータウェアハウス(DWH)向けのプロダクトです。 Hiveとは | クラウド・データセンター用語集/IDCフロンティア とあります。 大規模なデータ処…

ビットコインの自動売買プログラムを作る①APIいじってみる〜

bitflyerのAPIを使ってビットコインの売買が結構かんたんにできちゃいます。 以下のページから使いたいAPIを探します。 全部日本語で書いてあるので、嬉しいですね。 ビットコイン取引所【bitFlyer Lightning】 こちらでサンプルコードが載っているので、ほ…

rubyとseleniumでTwitterに自動ログインする。〜リベンジ編

SeleniumでTwitterの自動ブラウザ操作を行っていきたいです。 以前設定していたのですが、しばらくしてみると、そのコードでは対応できなくなっていました。 require 'selenium-webdriver' driver = Selenium::WebDriver.for :firefox driver.get "https://t…

SeleniumとRubyでTwitterの複数アカウントを自動ファボ&RT

背景 自分の趣味というか、ちょっとしたプロジェクトでTwitterを運営していて、特定のワードで検索されたときに上位に表示させたいなーと思うことがありました。 一つの方法が、ツイートを頻繁にするということで、それはbotで普通に解決できました。これは…

一つのPCから複数のgithubアカウントを使い分けてpushする

一つのPCから複数のgithubアカウントを使い分けてpushする ということをやってみたいと思いました。 背景 というのも、仕事とプライベートみたいな使い分け方じゃなく、開発用のアカウントと、英語学習用のアカウントを使い分けたいなと思ったからです。 日…

will_paginateの1ページあたりの表示数とラベルを変更する

ページネーションをうまいことやりたいとき、railsだとどうやらkaminariってのが有名らしい。 しかしrailsのチュートリアルで、will_paginateを使っていたので、それを活用していきます。 参考までにkaminari github.com そして今回のwill_paginate github.c…

rubyの配列、ハッシュ、シンボルあたりを整理する備忘録

ハッシュ、シンボル、配列あたりがごちゃごちゃしているので、まとめる。 備忘録です。 配列 シンプルな配列 array = [1,2,3,4,5] [1, 2, 3, 4, 5] 要素を追加したり、色々なメソッドを使えます。 array.push(10) [1, 2, 3, 4, 5, 10] 色んなものが配列の要…

rubyで配列、ハッシュに対する処理をするreduceについてのまとめ備忘録

reduceとは reduceはinjectの別名。 配列やハッシュを次々に処理していくときに使えるやつ。 早速例示して使ってみる。 まず配列について # 初期値なしで、配列の中身を順に足していく。 [1,2,3,4,5].reduce() {|sum, i| sum + i } 15 # 初期値を設定できる …

rubyで配列、ハッシュに対する処理をするmapについてのまとめ備忘録

rubyのmapなどについて使い方をまとめてみます。 map 配列やハッシュの各値に対して同じ操作をしていく。 配列について # 各値を2倍にする [1,2,3,4,5].map {|i| i*2} [2, 4, 6, 8, 10] # 何もしない [1,2,3,4,5].map{|i| i} [1, 2, 3, 4, 5] # 全部1にする …