z-indexを効かせるためには
- positionがstatic以外でないと効かない。つまりposition: に何かしらの値を設定していないといけない(設定しないとposition: staticになるため)
Nuxtでグローバル変数を読み込ませる
$ yarn add nuxt-sass-resources-loader @nuxtjs/style-resources node-sass sass-loader ` `` - nuxt.config.jsに追記する
modules: [ '@nuxtjs/style-resources', ], styleResources: { scss: ['~/assets/_variables.scss'], },
nuxt + TypeScriptでのmiddlewareの型
- contextを型化して指定する
import { Context } from '@nuxt/types' export default ({ redirect, store }: Context) => { // }
11月2週
goland ショートかっと
- コードのフォーマット:
command + option + L
10月4週
月曜
- アルファ版を動かすために最小構成で動かしてみる
- ec2にgoを入れる
- qiita.com
EC2にインストール
利用できるバージョンの確認
$ amazon-linux-extras list | grep golang →29 golang1.11=latest enabled \
インストール
amazon-linux-extras install golang1.11
GOPATHの追記
export GOPATH="$HOME/go" export PATH=$PATH:$GOPATH/bin
インストール確認
go version →go version go1.13.4 linux/amd64
ec2にmysql5.7を導入
手順
- デフォルトでmariaDBがデフォルトが入っているのでアンインストールしておく。
$ sudo yum list installed | grep mariadb $ sudo yum remove mariadb-libs
リポジトリを追加する。centos7系なのでel6ではなくel7をインストールする。
$ sudo yum install http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
インストールする。
$ sudo yum install mysql-community-server
依存性の問題が解決できないときはel6で入れてしまっていなか確認する。(念のためキャッシュも消しておくとよい。)
$ sudo yum clean all $ sudo rm -rf /var/cache/yum
正しくインストールされたことを確認する。
$ yum repolist enabled | grep "mysql.*-community.*"
バージョンを確認する。
$ mysql --version mysql Ver 14.14 Distrib 5.7.23, for Linux (x86_64) using EditLine wrapper
$ mysqld -V mysqld Ver 5.7.23 for Linux on x86_64 (MySQL Community Server (GPL))
起動してみる。
$ sudo /bin/systemctl start mysqld.service
起動できているか確認してみる。
$ systemctl list-units | grep mysqld.service mysqld.service loaded active running MySQL Server
自動で起動するようにしておく。
- 現在の状態を確認する
$ systemctl is-enabled mysqld.service disabled
- enableに変更しておく
$ systemctl enable mysqld.service
ログインしてみる。
$ mysql -u root -p ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
- デフォルトでパスワードかかっていた…
- パスワードを確認する。
$ cat /var/log/mysqld.log | grep password 2018-09-01T10:27:36.011362Z 1 [Note] A temporary password is generated for root@localhost: ************
調べたパスワードで再度ログインしてみる。
$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 13 Server version: 5.7.23 Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
できた!
- パスワードを変更しておく。デフォルトの制約が強いのでちょっと弱めておく。
mysql> SET GLOBAL validate_password_length=8; Query OK, 0 rows affected (0.00 sec) mysql> SET GLOBAL validate_password_policy=LOW; Query OK, 0 rows affected (0.00 sec) mysql> ALTER USER root@localhost IDENTIFIED BY 'new password'; Query OK, 0 rows affected (0.00 sec)
文字コードを確認する。
mysql> show variables like "chara%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
設定ファイルに以下の2行を追記して再起動する。
/etc/my.cnf [mysqld] character-set-server=utf8 [client] default-character-set=utf8
$ sudo /bin/systemctl restart mysqld.service
新しいユーザーを作成する。
mysql> GRANT ALL PRIVILEGES ON `app_production`.* TO `username`@localhost IDENTIFIED BY 'new password';
ログインできるか試してみる。
$ mysql -u username -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.7.23 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
各リージョンにおけるAMIのIDの取得方法
aws ssm get-parameter \ --name /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 \ --query "Parameter.Value" \ --{リージョン名}
- これで
"ami-0c2f25c1f66a1ff4d"
みたいに返ってくる
10月3週
土曜:
djangoフィルターの作成
- setting.pyの設定
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'django_filters', # 追加 'rest_framework.authtoken', 'corsheaders', 'lottery_api.apps.LotteryApiConfig', 'lottery_batch.apps.LotteryBatchConfig', ] # 追加 REST_FRAMEWORK = { 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend'] }
- filters.pyを新規作成(timesをフィルタリングしたい場合)
from django_filters import rest_framework as filters from lottery_api.models import ( LotoSeven, ) class LotoSevenFilter(filters.FilterSet): times = filters.RangeFilter(field_name='times') class Meta: model = LotoSeven fields = ['times']
- viewに組み込む
# 汎用APIView ListAPIView (リストを取得するだけの用途)他にもCreateAPIViewとかがある class LotoSevenListView(generics.ListAPIView): queryset = LotoSeven.objects.all() serializer_class = serializers.LotoSevenSerializer filter_class = LotoSevenFilter # 追加 def get_queryset(self): return self.queryset.order_by('times')
10月2週
react
- Api周りはApiContextというのを作ってルートに設置することでどこからでも使えるようにしてる
- axiosでbodyに詰めたい時はFormDataを使う
django
逆参照とは
- 外部キー制約設定をしたモデルについて逆の参照ができる
例
from django.db import models class Food(models.Model): name = models.CharField(max_length=100) def __str__(self): return self.name class Person(models.Model): name = models.CharField(max_length=100) favorite_food = models.ForeignKey(Food, on_delete="CASCADE", null=True) def __str__(self): return self.name
- 上記ではPersonのfavorite_food(人の好きな食べ物)として外部キーが設定されているが、逆参照と使うとFoodのperson_setとして呼び出すことができる。どういうことか↓
# 参照 >>> person1 = Person.objects.get(name="ジョブス") >>> person1.favorite_food <Food: 寿司> # 逆参照 >>> food1 = Food.objects.get(name="寿司") >>> food1.person_set.all() <QuerySet [<Person: ジョブス>, <Person: ローラ>, <Person: ジョン>]>