1月4週

今週も実装・実装・実装(平日からは図書管理に入りたい)

土曜:10h

  • 実装のスピードアップとして、ある程度は正規表現を扱えるようになったほうがいいなーーー
  • qiita.com
  • せめてグループ化くらいは覚えよう
const yearFrom = parseInt(ymfrom.replace(/(\d{4})(\d{2})/, '$1'))
    const monthFrom = parseInt(ymfrom.replace(/(\d{4})(\d{2})/, '$2'))
  • 桁を0埋めとかでそろえたいとき
    • lodashのpadStartを使う
_.padStart(5, 2, '0'); // => '05'
_.padStart(12, 4, '0'); // => '0012'
_.padStart(100, 2, '0'); // => '100'
  • 年月の比較どうしようかと思ったけどNumber型で比較できそう
Number(setReadOnlyFilter.kknendo + term) >= yyyymm
  • yyyyMMのリストをfrom,toを受け取って動的に作るのに関数がないんだね。。。
  • 結果自分で作った
const terms: string[] = []
    const termsyyyymm: string[] = []
    const yyyymmFrom = parseInt(ymFrom)
    const yyyymmTo = parseInt(ymTo)
    const yearFrom = parseInt(ymFrom.replace(/(\d{4})(\d{2})/, '$1')) // 201904のとき2019
    const yearTo = parseInt(ymTo.replace(/(\d{4})(\d{2})/, '$1')) // 201904の時04
    if (yearFrom !== yearTo) {
      for (let k = yyyymmFrom; k <= yyyymmTo; k++) {
        const mm = k.toString().substr(4, 2)
        if (mm !== '13') {
          termsyyyymm.push(k.toString())
          terms.push(_.padStart(k.toString().substr(4, 2), 2, '0'))
          if (termsyyyymm.length === 12) {
            break
          }
        } else {
          const newyear = yearFrom + 1
          const newyyyymm = parseInt(newyear.toString() + '01')
          termsyyyymm.push(newyyyymm.toString())
          terms.push(_.padStart(newyyyymm.toString().substr(4, 2), 2, '0'))
          if (termsyyyymm.length === 12) {
            break
          }
          k = newyyyymm
        }
      }
    } else {
      for (let j = yyyymmFrom; j <= yyyymmTo; j++) {
        termsyyyymm.push(j.toString())
        const term = _.padStart(j.toString().substr(4, 2), 2, '0')
        terms.push(term)
        if (termsyyyymm.length === 12) {
          break
        }
      }
    }
    this.termsyyyymm = termsyyyymm
    this.terms = terms

日曜:2h

  • ある画面に対して認証必須にしたい時はミドルウェアを定義してそのページにミドルウェアを効かせる
  • こんな感じでmiddleware/authed.tsを定義して・・
/**
 * 認証が必要なページで未認証の場合はリダイレクトする
 */
export default function({ store, redirect }) {
  if (
    store.state.authenticate.id === null ||
    typeof store.state.authenticate.id === 'undefined'
  ) {
    redirect('/signup')
  }
}
  • こんな感じで使う
@Component({
  middleware: 'authed',
  components: {
    Logo,
    VuetifyLogo,
    BmDialog
  }
})
export default class IndexPage extends Vue {
  • nuxt.config.tsで宣言すると横断的に効いてしまうのでこういう場合は書かなくて良い

月曜:11h

  • 業務で忙殺(バグ取り)

    火曜:11h

  • 業務で忙殺(バグ取り)(Qiita執筆中

    水曜:12h

  • 業務で忙殺(バグ取り)(Qiita執筆中

    木曜:10h

  • 業務で忙殺(バグ取り)(Qiita執筆中

    金曜:10h

  • 業務で忙殺(バグ取り)

週次報告

  • 目標勉強時間:70h
  • 勉強時間:66h
  • 目標との乖離:-259.25h
  • 何を得たか:nuxt.js + TypeScriptの基礎 + javascriptの基礎 + ディベロッパーツールの使い方
  • 何が必要か:nuxt.js + typescriptの基礎と応用
  • 来週の目標:nuxt.js + typescript + firebaseにて書籍管理アプリのモックを作成する