自動化無しに生活無し

WEB開発関係を中心に備忘録をまとめています

  • laravelで開発中、ログを表示させる【エラー箇所の確認・デバッグ作業に】

    laravelではDjango(Python)のように処理の途中でprint()を実行してターミナルにログを表示させることはできない。代替として使用されるのがLogファサードを使用する方法である。 Logファサードを使用してログを表示させる 下記コードを任意の場所に書き込む。 \Log::debug("ログ"); 内容は全てstorage/logs/laravel.log内に保存される ...
  • Laravelのartisanコマンドのまとめ【開発用サーバー立ち上げ、コントローラやマイグレーションファイル等の作成、ルーティングの確認などに】

    laravelのartisanコマンドをよく使うと思われる順にまとめる。 開発用サーバーを立ち上げる php artisan serve ホスト名とポート番号の指定もできる。 php artisan serve --host=[ホスト名] --port=[ポート番号] コントローラーを作る php artisan make:controller [コントローラー名] –resourceをつけると、Restful化もできる php artisan make:controller [コントローラー名] --resource モデルを作る php artisan make:model [モデル名] –migratio ...
  • laravelコマンドをUbuntuで実行可能にする方法

    laravelで新しいプロジェクトを生成するとき、 composer create-project --prefer-dist laravel/laravel [プロジェクト名] このように実行するのだが、とても長い。 laravel new [プロジェクト名] そこで上記コマンドを実行しようとしてもlaravelコマンドがインストールされていないと言う。laravelコマンドを使えるようにするにはまずはcomposerからのインストールが必要。 composer global require "laravel/installer" そしてその上で、~/.bashrcにてパスを通す。~/.bashrcの ...
  • 【Nginx】1MB以上のファイルアップロードが出来ない場合の対処法

    ファイルアップロード系のウェブアプリを作り、デプロイも無事成功し、さあファイルをアップロードしようとすると、うまくアップロードされない事がある。 これはなぜか。ウェブサーバーの設定に施されたデフォルトのファイルアップロード上限容量が原因である。 対策 /etc/nginx/sites-available/の中にあるサーバー起動用の設定ファイルを編集することで対処できる server { listen 80; server_name 192.168.11.XXX; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { ...
  • DjangoやPythonにおける*argsと**kwargsとは何か

    結論から言うと、*argsはキーワード未指定の引数のリスト、**kwargsはキーワードが指定された引数の辞書を手に入れるためのものである。 *argsはキーワード未指定の引数のリスト まずは、下記コードを参考にしたい。 #! /usr/bin/env python3 # -*- coding: utf-8 -*- import sys def main(name,*args): print(name) print(args) if __name__ == "__main__": try: main("Tom","Mike","Bob") except KeyboardInterrupt: print("\nprogram was ended.\n") sys.exit() main()関数に3つの文字列の引数を与えている。"Tom","Mike","Bo ...
  • 【Django】外部キーに対応したデータの個数をカウントして表示【リプライ・コメント数の表示に有効】【annotate+Count】

    例えば、Djangoで掲示板サイトを作り、投稿した内容に対してリプライできる機能を付けたとする。そのリプライ数を一覧表示時に合わせて表示させる時、どうする? 本記事では、上記のように一対多のリレーションが構築されている環境下で、多に該当するデータ数を計算して表示させる方法を解説する。 多のデータ数を計算してそれぞれ表示させる 下記のような、Topicに対してReplyができるモデルになっていたとする。 from ...
  • 【Django】モデルフィールドに正規表現によるバリデーションを指定する【カラーコード・電話番号に有効】

    例えば、Djangoで電話番号や16進数カラーコード、郵便番号や金融機関コードなどの、桁数と使用文字の種類が決まったデータをモデルフィールドに挿入する時、どうしていますか? CharFieldやIntegerFieldにそのまま入れる?フロント側で対策しているから大丈夫?そんなわけない。不適切なデータがDBに入った時点で、システムは破綻する。それは世の常。 そこで、本記事ではモデルに正規表現のバリデー ...
  • 【django-cleanup】画像等のファイルを自動的に削除する

    例えば、Djangoの画像掲示板で削除をする時、ビューでレコードを削除すると同時に、レコードに紐付いた画像も同時に削除すると思う。その時、パスを抜き取り、os.remove()などを使用して画像を削除しているようでは、ビューの処理がどんどん増えていく。 Djangoでは、レコードに紐付いたファイルの削除処理記述の手間を減らしてくれるdjango-cleanupなるものがある。本記事ではその使用方法を ...
  • Djangoで埋め込みカスタムテンプレートタグを実装する方法

    Djangoでデータの値に応じて文字列を返したい場合は、カスタムテンプレートタグを使用すれば良い。下記記事は、ページ移動と検索を両立させるため、文字列を返す、カスタムテンプレートタグを実装している。 Djangoでページネーションを実装する方法【django.core.paginator】【パラメータ両立】 しかし、データの値に応じてHTMLタグを返却するには、上記の方法では成立しない。safeフィル ...
  • Vue.jsでTODOを作る【CRUD】

    Codepenに掲載されていた偉い人のコードを元に、Todoを作ってみた。変数名がベストプラクティスとは異なる可能性があるため、あくまでもvue.jsの全体の機能確認用としている。 ソースコード まずはindex.html <html lang="ja"> <head> <meta charset="utf-8"> <title>Vue.jsでTodo</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.10/vue.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/vue-router/2.2.1/vue-router.js"></script> <script src="script.js"></script> </head> <body> <header class="text-center" style="background:orange;color:white;"> <h1>Vue.jsでTodo</h1 ...