フィヨルドブートキャンプでLinux(Ubuntu)を使うときの実情

この記事は フィヨルドブートキャンプ Part 1 Advent Calendar 2021 の16日目の記事です。 Part2 もあります。
昨日の記事はperoさんの 英語とプログラミングと世界の話 でした。

フィヨルドブートキャンプはMac/Windows/Linuxのうち好きなものでプラクティスを進めることが可能です。
ですが、公式でおすすめされているのはMacであり、実際に受講生のほとんどがMacを利用していると思います。
それ以外のOS、特にLinuxは、扱いが難しいことが示唆されています。

FAQ | FJORD BOOT CAMP(フィヨルドブートキャンプ)

Linuxで学習をしたいのですが可能ですか?
Linuxでも可能ですが条件があります。用意しているカリキュラムは Mac を想定して作られています。そのため、Linux でカリキュラムを行う場合は自分自身でMac用のカリキュラムをLinuxに合わせて操作方法などを変える必要があります。それができるだけのLinuxのスキルがある方のみ、Linuxで学習をすることをOKとしています。

そんな中でLinuxを使用している少数派の立場から、実際にLinuxで学習するとどうなるのか、という実例を書こうと思います。
※あくまで1つのケースに過ぎないので、誰しもに当てはまることを保証するものではありません

続きを読む

【Rails】1つのformに別々のformatのsubmitボタンを配置する

例えば検索フォームを作っていて、「検索」ボタンと「CSV出力」ボタンを置きたいときがあります。

  • 検索ボタンでは、検索フォームに入力した条件でレコードを絞り込み、結果をviewに表示したい。formatはhtml
  • CSV出力ボタンでは、検索フォームに入力した条件でレコードを絞り込み、結果をCSVに出力したい。formatはcsv

form内で使える f.submit には1つのformatしか指定できません。
そこで、2つ目以降のformat用には button_tag を使います。

<%= form_with(model: @reports) do |f| %>
  ...
  <%= f.submit '検索' # html %>
  <%= button_tag 'CSV出力', value: 'csv', name: 'format' # csv %>
<% end %>

【Rails】migration後にブランチを切り替えるときは、rails db:rollbackした方がいいんじゃないかと思う

所属しているコミュニティで、migrationを実行したブランチから他のブランチに切り替えたときには rails db:reset するとよい、というアイディアが出ています。
この方法を完全に否定するわけではないのですが、可能であれば別の方法を取ったほうがいいと思ったので記事を書きました。
(追記)実戦的なブランチ切替方法についてコメントをいただいたので、ページ末尾のコメントもぜひご覧ください

TL;DR

  • 開発環境のデータを守りたいなら rails db:rollback した方がいい
  • 開発環境のデータをリセットしてもいい、かつロールバックが難しいなら、 rails db:migrate:reset(rails db:reset)もやむなし
  • 困ったらとりあえずリセットすればいいと思う やっぱりできるだけロールバックしたほうがいい
続きを読む

【Vue.js】親コンポーネントから渡されたpropsをv-modelに使用する

すぐに思いつくのは以下のようなコードですが、これではpropsの値をそのまま書き換えようとして警告が出てしまいます。

<template>
  <textarea rows="10" v-model="itemBody"></textarea>
</template>

<script>
export default {
  props: {
    itemBody: {
      type: String,
      required: false,
      default: null
    },
  // ...

警告を回避するには、v-modelをプロパティへのバインドとイベント発火とにバラします。

<template>
  <textarea rows="10" :value="itemBody" @input="form.body=$event.target.value"></textarea>
</template>

<script>
export default {
  props: {
    itemBody: {
      type: String,
      required: false,
      default: null
    },
  data() {
    return {
      formBody: this.itemBody
    }
  },
  // ...

Vue.js + Firebaseでユーザー別のデータ保存・取得を実装する

メモアプリを例にして、ユーザー別にメモ内容を保存・取得できるコードを示していきます。
Firebaseを使用したのは初めてなので、未熟な部分があるかもしれません。
また、FirebaseのUIは日々更新されているようなので、時期によっては添付のスクリーンショットとUIが異なる可能性が有ります。

※事前にGoogleアカウントを用意してください
※Firebaseを用いたウェブアプリ作成が初めての場合、まずはcodelabsのチュートリアルをこなすことをおすすめします

要件

  • メモアプリはVue.js(Vue CLI)で実装します
  • データ永続化にはFirebaseのRealtime Databaseを使用します
  • ユーザーごとにメモを保存・取得できるように、FirebaseでGoogleアカウントによる認証機能を設けます
続きを読む