PostgreSQLでNOT NULL制約を変更する

PostgreSQLでNOT NULL 制約を後から変更する方法について調べてみました。

NOT NULL 制約を追加する

NOT NULL 制約を後からつける場合は以下のようにします

ALTER TABLE テーブル名 ALTER COLUMN カラム名 SET NOT NULL;

追加する前に、NULLのデータがあるとエラーになり変更できません。

NOT NULL 制約を削除する

NOT NULL 制約を後から削除する場合は、以下のようにします

ALTER TABLE テーブル名 ALTER COLUMN カラム名 DROP NOT NULL;

参考

www.postgresql.jp

KotlinでChar型からInt型にする

やり方

一度文字列に変換した後に、toIntを使用するとできます

val char = '1'
char.toString().toInt()

つまづきポイント

Char型のtoIntメソッドはASCIIコードを返却するので、一度文字列に変換しないとハマります。

val char = '1'
char.toInt()            // 49
char.toString().toInt() // 1

参考

stackoverflow.com

JavaScriptで月の長さを指定する

Dateオブジェクトの日付を 0 にすると、前の月の最終日になることを利用します。

let date = new Date()
let year = date.getFullYear()
let month = date.getMonth()

let month_days = new Date(year, month + 1, 0).getDate()

console.log(month_days)

注意点

以下のようなコードでやると失敗します。

let date = new Date(2019, 8, 31)

date.setMonth(date.getMonth() + 1) // 翌月にする
date.setDate(0)                    // 0日にする
let month_days = date.getDate()

console.log(month_days)
// 30

8月は31日ありますが、30が出力されてしまいます。 上のコードでは、Dateオブジェクトの指す日付は以下のように変化します。

  1. 8/31
  2. 9/31 -> (10/1) ※9月は30日までなので翌日の10/1となる
  3. 10/0 -> (9/30)

よって、8月の最終日を出力をするつもりが、9月の最終日が出力されてします。

参考

developer.mozilla.org

pythonでタプルの指定の要素でソートする

タプルの指定の要素でソートする場合は、sortメソッド・sorted関数のkeyを指定します。 ラムダ式とitemgetterで指定する2つの方法があるのでそれぞれ紹介します。

ラムダ式

list = [(1, 'c'), (2, 'b'), (3, 'a')]
list.sort(key=lambda tup: tup[1])

# [(3, 'a'), (2, 'b'), (1, 'c')]

sorted関数は以下のようになります

sorted(list, key=lambda tup: tup[1])

itemgetter

from operator import itemgetter

list = [(1, 'c'), (2, 'b'), (3, 'a')]
list.sort(key=itemgetter(1))

# [(3, 'a'), (2, 'b'), (1, 'c')]

sorted関数は以下のようになります

sorted(list, key=itemgetter(1))

最後に

itemgetterを使用したほうが短く書くことができますね

Pythonにおけるモジュールとファイル名の関係

はじめに

pythonでモジュール名とは何なのか気になったので調べてみました。

モジュールとファイル関係

pythonでは定義や文が入ったファイルをモジュールという。ファイル名はモジュール名の最後に.pyがつけたものとなる。
例えば、ファイル名をfoo.pyとするとモジュール名はfooとなる

まとめ

  • ファイル名はモジュール名.py

参考文献

6. モジュール (module) — Python 3.7.4rc1 ドキュメント

Android Studioでクラスを追加する

Android Studioでクラスを追加するには、File、Newから、Java Classを選択し、

f:id:Tokky_tane:20180709210608p:plain

出てきたダイアログに項目を入力後、OKを押して完了。

項目名 記入内容
Name クラス名
Superclass スーパークラス
Interface(s) 実装するインターフェース名
Package パッケージ名
Visibility アクセス修飾子
Modifiers その他修飾子

f:id:Tokky_tane:20180709211206p:plain