よしたく blog

ITエンジニアとして自分が知らなかったことをまとめています

pipenvでpipenv install throws --system is intended to be used for pre-existing Pipfile installationが発生したときの解決方法

pipenvを触り始めて試行錯誤していたら環境を壊してしまったようで、同名のフォルダを再作成してもうまくいかず、pipenv install throws --system is intended to be used for pre-existing Pipfile installationが発生した。 まずはpipenv --venvで仮想環境…

Pythonの%timeで出力される値の見方

Pythonの%timeで出力される値の見方を調べたので、メモしておく。 yoshitaku-jp.hatenablog.com CPU times: user 14 µs, sys: 0 ns, total: 14 µs Wall time: 19.1 µs と表示されているとき、 Wall time: 19.1 µsは全体の実行時間を表している。 CPU times: …

Jupyter Notebookでコードの速度を計測するtimeとtimeit

Jupyte Notebook でコードの速度を計測する方法にマジックコマンドとして用意されている、timeと timeitを使う方法がある。 この 2 つの存在は知っていたが、 time と timeit で何が違うのか %の数が 1 つのときと 2 つのときで何が違うのか がわからなかっ…

Pandasで欠損値を埋めるための方法

Pandasで欠損値を埋めるための方法をいくつか確認したのでまとめておく。fillna関数を使うと引数に渡した値で、NaNを埋められる。 まずは適当にNaNを含んだデータを生成する。 import numpy as np import pandas as pd df = pd.DataFrame(data=[1,2,4,np.nan…

PythonのCounterクラスを使って要素の出現回数を集計する

Pythonでは、よく使われる組み込みコンテナの dict、list、set、tuple に代わる特殊なコンテナがあり、collectionsモジュールにまとまっている。今回はその中にある辞書型のサブクラスであるCounterを使ってリストなどの要素の出現回数を数え、簡単に集計を…

7月よりブログ更新を再開します

7月より週1でのブログ更新を再開します。と言う宣言です。 集中して取り組みたいことがあり、こっそり5,6月と休んでおりました。 その中で改めてブログに助けられたことがあり、休みつつも「落ち着いたら再開しよう!」という気持ちが高まっておりました。 …

MinIOをboto3を使ってPythonから操作する

Python で S3 を操作するときに使う、AWS SDK for Python(boto3) を使って MinIO も操作できる。 以前作った環境を利用し、Python から操作できるか確認する。 yoshitaku-jp.hatenablog.com 準備 インストール pip で boto3 をインストールしておく。 pip …

【Rails】HerokuでPumaを使用する

Heroku の dyno リソースを理解できておらず、rails serverでアプリケーションを起動していた。 Heroku は Web サーバとして Puma を推奨しているので、Puma で明示的に起動できるように設定を変更してみる。 puma.io Procfile 設定をせずシンプルに起動させ…

Rails7でTailwind CSSを試す

Rails7 になって TailwindCSS が使えるようになったので、導入方法をメモしておく。 rails new rails new をするタイミングで tailwind を導入するには--css tailwindオプションを指定する。 rails new myapp --css tailwind cd myapp このあたりは定型文に…

Docker Compose環境のRailsをHerokuへデプロイする

Docker Compose 環境で作成した Rails アプリケーションを Heroku へアップロードするには Git を使用したデプロイとは別のコマンド実行が必要になる。 例えば Git を使用するときはgit push heroku mainなどでデプロイができたが、Docker Compose 環境は He…

Action CableをHerokuで動かす時のサブスクリプションアダプタ設定

Heroku で Action Cable を使うにはデフォルトの設定から変更する必要がある。 具体的に、初期設定ではconfig/cable.ymlファイルは下記のようになっており、redis を使う設定になっている。Heroku 環境を用意したときにデフォルトで Redis は使用できないの…

macOS Montereyから登場したショートカットを使う

iOSでは以前から使うことができたショートカットアプリが、Macでも使うことができるようになった。 現在自分が設定しているものをアイデアとして載せておく。 www.apple.com コミュニケーション系アプリを全部終わらせるショートカット 起動したコミュニケー…

Terminal is dumb but no VISUAL nor EDITOR defined.エラーを解決する

macOS Monterey にして VS Code から git commitとしたらTerminal is dumb but no VISUAL nor EDITOR defined.が発生した。 デフォルト設定が外れてしまった理由がよくわからないけど、再度設定しておく。 設定する際に検索したことと、検索しても欲しい情報…

S3互換のMinIOを触ってみた

MinIO とは MinIO は、高性能で S3 互換のオブジェクトストレージを提供します。 Kubernetes にネイティブな MinIO は、以下のような環境で利用できる唯一のオブジェクトストレージスイートです。 すべてのパブリッククラウド、すべての Kubernetes ディスト…

Streamlitに用意されている「line_chart」「area_chart」「bar_chart」を触ってみた

Streamlit について引き続き確認していく。 yoshitaku-jp.hatenablog.com 今回は Streamlit で標準に用意されている simple chart を試す。 紹介されているのは以下の 3 種類になる。 line_chart area_chart bar_chart line_chart 線グラフはst.line_chart関…

SQLAlchemyを使ってMysql 8.0にアクセスしたらAuthentication plugin 'caching_sha2_password' is not supported エラーが発生した

SQLAlchemyを使ったPython環境でDcoker上に立てたMysql 8.0にアクセスしたらAuthentication plugin 'caching_sha2_password' is not supported エラーが発生した。 これはMySQLのバージョン8.0以降、デフォルトの認証方式がcaching_sha2_passwordに変更され…

Python製のWebフレームワークStreamlitをさわってみた

datatech-jp Casual Talks #1に参加したときに知った、Python製のWebフレームワークStreamlitを触ってみた。 yoshitaku-jp.hatenablog.com streamlit.io github.com Streamlitのサイトを覗くとまずThe fastest way to build and share data appsと書いてあり…

datatech-jp Casual Talks #1 に参加した!

datatech-jpのCasual Talks #1 が開催されるとのことで覗いてみた! datatech-jp.connpass.com 発表内容 syou6162 データ管理に役立つメタデータ reizist 小さく始めるデータ基盤 ohsawa0515 BigQueryのネイティブJSON型がサポートされたので触ってみた udzu…

Azure Data FactoryのFailアクティビティについて調べた

2021年後半にAzure Data FactoryのFailアクティビティが追加されました。10月頃にプレビューで登場していたのは確認していたのですが、いつのまにかGAされていました。Failアクティビティは名前の通りパイプライン上で意図的にエラーを引き起こしたいときに…

Cloud Storageでオブジェクトのライフサイクルを設定する

GCP

多くの企業がデータ分析基盤を選択するときにGoogle Cloud Platformを選んでいる気がするので、気になって少し触ってみた。 わからないことが多すぎてオープンワールドのゲームに飛び込んだような感覚なので、まずは手軽にCloud Storageでライフサイクルの設…

PyArrowでCSVをParquetに変換する

今回は PyArrow を使って CSV を Parquet に変換してみた。 データレイクは生データを溜めることが主目的だが、レイクハウス型のアーキテクチャの流れもあり、データを利用したいサービス側が利用しやすいような整形化されたデータを用意する用途も増えてく…

Pythonでの再帰関数の上限を変更する

Python ではデフォルトで再帰関数の上限が 1000 に設定されている。知らなかった... sys.getrecursionlimit()で現在の上限を確認できる。 今回はサッと確認するのに便利なGoogle Colaboratoryを使う。 import sys print(sys.getrecursionlimit()) たしかに 1…

Azure Data Factoryを使って、新規・変更済みファイルのみをデータレイク間でコピーする

Azure Data Factoryを使って、新規・変更済みファイルのみをデータレイク間でコピーする。新規・変更済みファイルのみを移動対象とすることで、無駄なデータ移動が発生せず、料金も抑えることができるようになる。 準備 パイプライン パラメーターを2つ用意…

2021年のふりかえりと2022年の抱負

あけましておめでとうございます。今年もよろしくお願いいたします。 2021 年をふりかえり、2022 年の抱負にしたいと思います。 お仕事 2021 年のお仕事は 6 月までと 6 月以降で大きく変わりました。 2 年ほど前に部署を異動してから 2021 年 6 月まではハ…

math.factorialを使って階乗を計算する

背景 Project Euler でmath.factorial()を使う機会が多くなってきたので簡単にまとめる。 math.factorial とは math.factorial()は標準ライブラリの math に含まれていて、階乗が計算できるシンプルな関数になる。 引数には整数が指定でき、整数以外や負の数…

【Project Euler】Problem 20 Factorial digit sumをPythonで解く

この問題をPythonで解いた。 #20 Factorial digit sum - Project Euler 日本語の問題文はこちら n × (n - 1) × ... × 3 × 2 × 1 を n! と表す. 例えば, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800 となる. この数の各桁の合計は 3 + 6 + 2 + 8 + 8 + 0 + 0 =…

【Project Euler】Problem 19 Counting SundaysをPythonで解く

この問題をPythonで解いた。 #19 Counting Sundays - Project Euler 日本語の問題文はこちら 次の情報が与えられている. 1900年1月1日は月曜日である. 9月, 4月, 6月, 11月は30日まであり, 2月を除く他の月は31日まである. 2月は28日まであるが, うるう年の…

~/.config/git/ignoreでグローバルなgitignoreを設定してファイルを除外する

git

背景 .DS_Store のようなファイルを毎回.gitignoreに書くのがめんどくさくなり、グローバルに設定できないか調べました。 解決方法 ~/.config/gitにignoreファイルを作る .gitignoreと同様に記述する .DS_Store これだけで完了です。 Patterns which a user …

【Project Euler】Problem 16 Power digit sumをPythonで解く

この問題をPythonで解いた。 #16 Power digit sum - Project Euler 日本語の問題文はこちら 215 = 32768 であり, 各位の数字の和は 3 + 2 + 7 + 6 + 8 = 26 となる. 同様にして, 21000 の各位の数字の和を求めよ. Problem 16 - PukiWiki sum(map(int, str(2*…

【Project Euler】Problem 15 Lattice pathsをPythonで解く

この問題をPythonで解いた。 #15 Lattice paths - Project Euler 日本語の問題文はこちら 2×2 のマス目の左上からスタートした場合, 引き返しなしで右下にいくルートは 6 つある. (画像省略) では, 20×20 のマス目ではいくつのルートがあるか. Problem 15 …