自動化無しに生活無し

WEBとかAIとかLinux関係をひたすら書く備忘録系ブログ

  • 複数のPDFファイルを1つのPDFファイルにまとめる

    書類(PDF)を1つにまとめる必要が出てきたので。 複数のPDFを1つにまとめるPythonコードを作ることにした。 前提 pip install PyPDF2==3.0.1 ソースコード PyPDF2 をインストールしておく。 PyPDF2 では PdfFileMerger は削除されたため、 PdfMerger を使う。 import glob import datetime from PyPDF2 import PdfMerger now = datetime.datetime.now() now_str = now.strftime("%Y-%m-%d_%H:%M:%S") # TIPS: 既存のPDFファイル名を指定した場合、上書きではなく、追記されるので注意。 def merge_pdfs(output_filename=f"{now_str}.pdf"): # すべてのPDFファイルを取得。 # ファイル名順に並び替える。 pdfs = sorted( glob.glob(f"./*.pdf") ) #print(pdfs) if not pdfs: print(& ...
  • 【シェルスクリプト】git clone した後、クローンしたディレクトリへ移動する

    git cloneコマンドを実行してクローンした後、cdコマンドでディレクトリ移動するのがめんどくさい。 そこで、git clone とcd コマンドを1つにまとめたシェルスクリプトを用意した。 #! /bin/bash # $1 https://github.com/seiya0723/django-auth/tree/main/accounts echo $1 # ここでtree以降は切り捨てる。 repo=$(echo "$1" | sed s/tree.*//g) # 移動対象のディレクトリを取り出す。 destination=$(echo ./"$1" | sed "s/tree\/[[:alnum:]_-]*\///g" | sed "s/https:\/\/github.com\/[[:alnum:]_-]*\///g") git clone $repo cd $destination 例えば、特定のディレクトリ(tree/main/accounts)を指定している場合、そのディレクトリへ移動 ...
  • 【Django】views.pyからurls.pyを自動的に作る【コマンド1発で生成】

    views.pyからurls.pyを作る。 URL引数(パスコンバーター)にも対応させる。 これまでと同様、コードは追記する形式ではあるが、実行は自己責任で。 【Django】models.pyとforms.pyからviews.pyを自動的に作る【コマンド1発で生成】 【Django】models.pyからforms.py及びadmin.pyを自動的に作る【コマンド1発で生成】 注意 Viewを継承したビュー ...
  • 【Django】models.pyとforms.pyからviews.pyを自動的に作る【コマンド1発で生成】

    以前の自動生成ツール 【Django】models.pyからforms.py及びadmin.pyを自動的に作る【コマンド1発で生成】 この続き。今回はviews.pyを自動的に作る。 いつも同じようなものをimportして、ビュークラスを作り、DB操作とレンダリングしているだけなので。 内容は以前のコードをviews.py仕様にしただけで、特別なものは使っていない。 ソースコード import glob, re, sys ## 引数の指定がある場 ...
  • 【Django】カスタムテンプレートタグを実装させずにページネーションと検索を両立させる【Paginator】

    以前のページネーションを実装する方法(他パラメータとの両立)は、実装に手間がかかる。 views.pyでPaginatorのオブジェクトを作り bbs/templatetags/param_change.py を作り ↑をsettings.pyに登録 ↑をテンプレートで呼び出し、カスタムテンプレートタグを実行 たかが、検索とページネーションを両立させるためだけに、3工程も4工程もかかってしまう。 もっとシンプルにできないかと模索し、カスタムテンプレートタグの処理をビューで ...
  • 【Django】各アプリのトップページとアプリ名をまとめてレンダリングする【apps.pyとurls.pyを操作】

    1つのDjangoプロジェクトに複数のアプリを作り、各アプリのリンクをまとめて表示する。 新しいアプリが追加されるたび、そのリンクをテンプレートにて手動で追記しているようではとても手間だ。整合性も取れなくなるだろう。 だから、全てのアプリのトップページのリンクと、アプリ名をまとめて生成。contextに入れ、レンダリングする。 そういう処理を作る。 前提 このコードを実装する前に、以下前提を守る必要がある。 ...
  • 【Django】models.pyからforms.py及びadmin.pyを自動的に作る【コマンド1発で生成】

    Djangoプロジェクトを何度も何度も作っていてふと思う。 models.pyからforms.py、admin.pyを作る時がすごいめんどくさいと。 どれも似たようなコードになるので、これは自動生成してしまったほうが容易いなと。 故に、本記事ではmodels.pyからforms.py及びadmin.pyを自動生成するPythonコードをまとめる。 ※ファイルを読み込んで追記する仕様上、実行は自己責任でお願 ...
  • 【Vimでスニペット】snipmateプラグインをインストールして使ってみる【爆速コーディング】

    vim-snipmateはVimのスニペットプラグイン。スニペットとは、コードの断片のこと。このプラグインは、スニペットを即時呼び出して貼り付けできる。 同じようなコードを何度も何度も書くのは大変。だからスニペットプラグインを使用して爆速コーディングを実現させる。 環境はUbuntu22.04より インストール方法 snipmateはtlibとvim-addon-mw-utilsに依存しているので、まとめ ...
  • 【Linux】grepとsedとxargsで複数のファイルに点在する誤字を一括修正(置換)する

    開発をしていて、複数の誤字が見つかった。 しかもその誤字は複数のファイルに点在している。 そんな時、ファイルを開いて1つずつ置換して修正しているようでは時間がかかりすぎる。 そこで、コマンド一発で複数のファイルに点在する誤字を一括修正する。 コマンド 置換対象のファイルのバックアップを取るならこっち grep -rl "誤字" ./* | xargs sed -i ".bak" 's/誤字/修正文/g' バックアップを取らないならこっち grep -rl &qu ...
  • 【保存版】追加しておくべきvimrcの設定【検索ハイライト、タブはスペース4つ、拡張子ごとの初期データ】

    とりあえず、結論から。Ubuntuの場合、usr/share/vim/vimrcの末尾に下記を追加する。 "行番号表示 set number "タイトルの表示 set title "検索時にハイライト表示 set hlsearch "マークダウンを書くときに斜体を禁止する autocmd! FileType markdown hi! def link markdownItalic Nomal "全角記号の重なりの修正 set ambiwidth=double autocmd BufNewFile *.py 0r $HOME/.vim/template/python3.txt autocmd BufNewFile *.html 0r $HOME/.vim/template/html.txt autocmd BufNewFile *.css 0r $HOME/.vim/template/css.txt autocmd BufNewFile *.js 0r $HOME/.vim/template/javascript.txt autocmd BufNewFile *.c 0r $HOME/.vim/template/c.txt autocmd BufNewFile *.java 0r $HOME/.vim/template/java.txt set tabstop=4 set softtabstop=4 set shiftwidth=4 set expandtab set autoindent set smartindent 特にautoc ...