寄り道も道草も一緒

マニュアルセーブ機能のようなもの

プラレールとトミカにハマりそうな話

最近、息子に初めてプラレールを買いました!

それもトミカとセットで遊べるタイプのを

というのも、マクドナルドのハッピーセットでもらったプラレールトミカを使って遊び始めるようになったので両方興味がありそうだなと思い一緒になったものにしてみました

私が子供の時はプラレールトミカも遊んでいなかったので私としても初なのですが、

初対面の感想としては、とてもリアルだなというのが第一印象でした

踏切や構内の音声などリアルだったり

切通過する時ちゃんと遮断機降りるのに驚いたり

子供のために買ったおもちゃでしたが、自分の方が楽しんでいました

またまだ1歳半の息子でちょつと早い気もしていましたが、使い方を教えたらスイッチ入れたり電車を走らせたり、車を渡らせたりちゃんと遊べてて安心しました

気になったので他の商品も見てみると、

レールや駅、道路だけでなく景観系のアイテムもあり、ガソリンスタンドや牛丼屋などのお店もあったりして、1個の街が作れそうだなととシムシティなどまちづくり系のゲームが好きな私の血が騒ぎ始めるのでした

これは完全にハマりそう

「ドラゴンクエストモンスターズ テリーのワンダーランドRETRO」でRTAに挑戦

はじめに

この前YoutubeでテリワンのRTAをたまたま見つけました。

 

「テリワン」といえば、1998年にGBで発売された「ドラゴンクエストモンスターズ テリーのワンダーランド

昔にプレイした記憶があり、個人的に結構好きなゲームです

実際の映像

以下は2022年末に行われていたテリワンのRTA in Japanの映像です

www.youtube.com

昔プレイした時はどれくらいの時間でクリアしたかは覚えていません、少なくとも30時間くらいはかかった気がしており、1時間でクリアしているのは超早い

自分でもやってみた!

懐かしさもあり自分でもテリワンのRTAをやっていみたいと思いたち、早速Switch版の「ドラゴンクエストモンスターズ テリーのワンダーランドRETRO」を購入してやってみました

ゲーム内でのRTAの手順は、水沢さんという方がまとめてくれています↓

docs.google.com

やってみた結果

結果としては、7時間くらいでクリアできました!

金策と最後の星降り大会で結構苦戦し時間がかかりましたが、昔普通にプレイしてクリアしていた頃に比べれば格段に早い!

慣れればあと半分くらいの時間でできそう!

最後に

初めてのRTAに挑戦してみました

普通にプレイするのとは、また違った感じで面白かったです!

DBから取得したデータを任意の順番で並び替える方法

仕事をしている中で、ステータスの値を使って特定の順番に並び替えてからフロントに返したいということがありました。

ステータスはenumで定義されていますが、指定された順番は定義順ではなかったためひと工夫必要そう

考えてみるとよくありそうで今までやってなかったので初めての作業でした。

忘れないようにメモとして残しておきます。

やり方

  1. 並び替えたい順番でステータスの値を配列で定義
TEST_ORDER = %w[aaa bbb ccc]
  1. 並び替えたいデータにsort_byを行い、sort_byの方法を1で指定した配列のindex順になるように指定
test_arr.sort_by { |test| TEST_ORDER.index(test.status) }

以上です。

 

注意点としては、

今回、私はControllerのメソッドで行いましたが、並び替えたい順番で値を定義する配列をメソッドの外で行うことです。

そうしないとエラーになりました。

今回の件に限った話ではないのですが、結構シンプルにできたの満足

dockerでの環境構築で「no space left on device」と怒られた時の対処法

いつも通りdocker-composeでコンテナを立ち上げようとした時、「no space left on device」というエラーが発生

そのエラーの対処法になります

前提

対処法

1. dockerのコンテナやイメージの削除

エラーの内容的にデバイスのスペースが無いとのことなので、まずは使っていないコンテナやイメージを削除すれば良いのではと予想立てて進めました

dockerのコンテナやイメージの削除については以下の記事を参考に行いました

qiita.com

ちなみにコマンドは、以下を使用しました

# コンテナ一覧を確認(停止しているものも含めて)
$ docker ps -a

# コンテナの削除
$ docker rm [コンテナID]

# イメージ一覧を確認
$ docker images

# イメージの削除
$ docker rmi [イメージID]

また、noneとなっているimageもいくつかあり、そちらは以下の記事を参考に削除を行いました

qiita.com

ちなみにコマンドは、以下を使用しました

$ docker image prune

さらに使っていないボリュームを削除しました

$ docker system prune -a --volumes

info.drobe.co.jp



2. 解決しないのでDockerのDisk images sizeを確認

予想に反して解決しなかったので、今度はDocker自体の使えるスペースが足りて無いのではと予想してDocker DesktopのダッシュボードからDisk images sizeを確認

ちなみに、確認方法はDocker Desktopを開いて

Settings > Resources > Docker image size

で確認できます

確認した結果、作成可能なimagesが16GBに対し、使用容量が16GBでした

spaceが無いと怒られるわけです

ということで、Disk images sizeを24GBに増量

エラーが出なくなり、無事解決しました!

belongs_toのoptional: trueの意味

Railsのソースを読んでいて、modelに以下のような記述がありました

belongs_to :company, optional: true

完全に忘れていたので、未来の自分のためにメモしておきます

belongs_toのoptional: trueとは?

外部キーがnilでも許可するという意味です

同じ記事を開いた形跡があったので、前にも調べたのに忘れていたようです

使用例

例えば、

class User < ApplicationRecord
  has_many: posts
end

class Company < ApplicationRecord
  has_many: posts
end


class Post < ApplicationRecord
  belongs_to :company, optional: true
  belongs_to :user, optional: true
end

上のような定義があり、

Userが追加した記事のデータもCompanyが追加した記事のデータも同じPostテーブルに保存されるとします

 

Postテーブルに保存されているデータには、Userに紐づいているものもあれば、Companyに紐づいているものもあります

ただし、UserとCompanyの両方に紐づいていることはありません

 

例えば、Userに紐づくPostのデータを作成した際には、

user_idは保存されますが、company_idはnilになります

 

もし、optional: trueをつけていなかった場合、company_idがnilだとエラーになります

このような時にoptional: trueが必要になってきます

 

参考

blog.ryskit.com

GithubでAchievementsをGetした話

一緒に仕事をしている人のGithubのプロフィールをふと覗いたときに、Achievementsなるものを発見してしまいました

ゲームが好きな自分としてはこういった称号的なものはは気になるし欲しくなってしまうもの

なのでとりあえずすぐに手に入る簡単なものからGetしました!

Achievements とは?

以下が公式の説明になりますが、ある一定の条件をクリアするとAchievementsがもらえるようです

github.com

注意点

取得してみて分かったのですが、リポジトリの設定がpublicになっていないとカウントされずAchievementsが取得できないようでした

仕事でも自学でもprivateのリポジトリで作業を行なっていたので手に入っていない訳です。。

今回取得したAchievements

今回取得したAchievementsは、「Pull Shark」と「Quickdraw」の2つをGetしました!

Pull Sharkは、Pull Requestを2回マージすることで手に入ります

また、QuickdrawはIssueもしくはPull Requestを作成して5分以内にCloseすると手に入ります

最後に

ちょっとしたものですが称号的なものを入手できるとモチベーションが上がりますね

JavaScriptで指定した回数で繰り返し処理する方法

JavaScriptで指定した回数で繰り返し処理する方法をいつも忘れてしまうので、備忘録用にメモ

countを使いたい場合
[...Array(指定した回数)].map((_, i) => 処理)

いらなければ、
[...Array(指定した回数)].map(() => 処理)

簡単に解説

指定した数の要素を持った配列を作成し、mapにより要素の数だけ繰り返しが行われます

ちなみに配列の要素は全て空です

なので、

[...Array(指定した回数)].map((i) => iを使った処理)

のように書くと、iundefineと怒られます。

また、配列の中身を表示させようとすると

console.log([...Array(3)])

以下のように空のitemsですと言われます。

[ <3 empty items> ]

参考

qiita.com