タイトルの通りです。
pg_dumpコマンドを使用して簡単にインポート(リストア)できます。 your_database_nameとdump_name.dumpは任意の文字列に置き換えてください。
pg_restore --verbose --clean --no-acl --no-owner -h localhost -d your_database_name dump_name.dump
タイトルの通りです。
pg_dumpコマンドを使用して簡単にインポート(リストア)できます。 your_database_nameとdump_name.dumpは任意の文字列に置き換えてください。
pg_restore --verbose --clean --no-acl --no-owner -h localhost -d your_database_name dump_name.dump
「新しいサービスを開発したいけど、どんなサービスを開発したら良いのか思いつかない。。」と悩んでいたころ、たまたまアイデアの作り方という書籍を見つけました。
読んでみると目からウロコで、自分自身アイデアが思いつかない理由がはっきりとわかりました。
自分用のメモを兼ねて本を要約してみましたので、アイデアが思いつかないと悩んでいる方はぜひ参考にしてみてください。
アイデアとは「既存の要素の新しい組み合わせ」によって生まれます。 それ以上でもそれ以下でもありません。
既存の要素から新しい組み合わせを見つけるには、各要素を十分理解した上で、それぞれにおける関連性を見つけ出す必要があります。
各要素の関連性を見つけるためには日々の修練が必要です。一朝一夕で出来ることではありません。
以下の5つの段階を踏むことで体系的にアイデアを生み出す方法を磨いていくことができます。
第一段階は資料収集です。集める資料は2種類あります。
一つ目は「特殊資料」と呼ばれるものです。これは、探求しようとしている分野の専門的な資料のことを指します。 例えばすでに貴社のサービスを利用している顧客がいる場合、顧客の属性や業界などの情報などがそれにあたります。
サービスがまだ存在しない場合は、サービスを利用してもらいたい顧客の情報や業界知識などがそれにあたります。
集める資料の量は「こんなものかな」というレベルではなく、自分が十分だと自信持てるレベルまで集める必要があります。
特殊資料は、ある程度の期間を設けて継続的に収集する必要があります。
2つ目の「一般的資料」と呼ばれるものです。 これはジャンル問わず継続的に集める資料のことを指します。例えば日々のニュースや、興味を持った事柄についての知識、趣味の深堀りなどが当てはまります。
知識に貪欲であるほうが資料が集まりやすいので、意識的に情報感度を上げたり、新しい経験をするように心がけることで効率化を図ることができます。
一般的資料は一生涯に渡って継続的に収集する必要があります。
アイデアは、顧客や業界に関する特殊資料と世間の出来事や社会情勢に関する一般的資料との新しい組み合わせから生まれます。 これらの要素が多くなればなるほど、様々な要素の組み合わせのパターンが作られることになり、新しいアイデアが生まれてきます。
第2段階は資料の咀嚼です。 まずは集めた資料をじっくりと眺める必要があります。それぞれの資料を並べたり、資料を行ったり来たりして各要素が噛み合うかどうかを調べます。
そのようなことを繰り返し行っていると次第に「仮の部分的なアイデア」というものがが生まれてきます。これらは流すのではなく、すぐにどこかに書き留めておくことが重要です。
しばらくこの作業を継続していると心が疲弊して嫌気がさしてくると思います。この作業はとても心的エネルギーを使うので当然なことです。
すべての要素の組み合わせを試した上で、何もかも心の中がぐちゃぐちゃになると第2段階が終了したことを意味します。
第3段階においては、これらの問題を一旦意識の外に移す作業になります。問題を完全に放棄し、何でも良いので自分の想像力や感情を刺激するものに心を移します。
音楽を聞いたり、映画を見たり、趣味に没頭したりすると良いのではないかと私は考えます。
第3段階まで終えると、ふとした何気ないときにアイデアが生まれてきます。 それはお風呂に入っている時や散歩をしている時、はたまた夢の中かもしれません。
問題について何も考えていないときにこそアイデアが生まれてきます。
最終段階では、生まれてきたアイデアをより具体化して育てます。 生まれてくるアイデアはかなり幼稚な状態であることがほとんどです。 それを現実化できるように手を加えていく必要があります。
子供の状態であるアイデアを成長させていくことが重要になります。
アイデアを生み出すには良い習慣を作ることが重要だと感じました。
とくに特殊資料と一般的資料の収集は、一朝一夕で結果が出るものではなく、日々の積み重ねが重要だと思います。
習慣化するためには目的が必要です。
ただ情報収集するのではなく、アイデアを作るためという目的を持てば、それがモチベーションとなって習慣化しやすくなるのではないかと思います。
私は現在、この5段階を実施している最中ですので、なにか進展がありましたら記事にして報告したいと思います。
ScoutAPMを使ってモニタリングしているとトランザクションとログインユーザー情報を紐付けたいと思ったことはありませんか?
そのような場合は、ScoutAPMのCustom Contextという機能を使うことでトランザクションに対して付加情報を付けることが出来ます。
ScoutAPMでモニタリングされるトランザクションに対して、任意の付加情報を付ける機能です。 アプリケーション側にシンプルなコードを埋め込むだけで実現することが出来ます。
どのような情報を付加するかはアイデア次第ですので、例えば以下のようなニーズに応えることが可能です。
ユーザー情報を付加したい場合は下記のメソッドを使用します。
ScoutApm::Context.add_user({})
例えばIDを付加したい場合は下記のような実装になります。
ScoutApm::Context.add_user(id: @user.id)
ユーザー情報ではない一般的な情報を付加したい場合は下記のメソッドを使用します。
ScoutApm::Context.add({})
下記のように任意の情報を付加することが出来ます。
ScoutApm::Context.add(database_shard: @db.shard_id)
各アクション単位でユーザーIDをContextに付加することで実現可能です。
ApplicationController.rb
に下記を定義します
before_filter :set_scout_context def set_scout_context ScoutApm::Context.add_user(id: current_user.id) if current_user.is_a?(User) end
このような実装を加えるだけで簡単にContextを追加することが出来ます。
下記は実際のScoutAPMのContextタブの画面イメージです。
user idが新しく追加されていることが確認できます。
設定自体はとても簡単なので運用のトレーサビリティを上げたい場合は設定しておくことをおすすめします。
Ruby on Rails5でリクエストログにユーザーIDを追加する方法を説明します。 ミドルウェアの修正は不要ですので、気軽に取り入れることができると思います。
config/initializers/logging.rb
Rails.configuration.log_tags = [ :request_id, lambda do |req| session_key = (Rails.application.config.session_options || {})[:key] session_data = req.cookie_jar.encrypted[session_key] || {} user_key = session_data['warden.user.user.key'] user_id = user_key.present? ? user_key[0][0] : 'guest' "user: #{user_id}" end, ]
config.log_tagsというメソッドを使用して出力したいタグを指定します。
https://railsguides.jp/configuring.html#config-log-tags
Rails5の場合、デフォルトでproduction.rbにconfig.log_tags = [ :request_id ]
が指定されていますが、今回は環境問わずlogging.rbの内容で上書きします。
user_idを出力したいので、:request_id
の後ろにrequestオブジェクトを引数に取るlambdaメソッドを定義します。
Rails.application.config.session_optionsからsession_key取得して、requestのcookie情報からsession_keyに対応するsession_dataを取得します。
session_dataは以下のような内容になっています。
{ "session_id" => "c8aead6bfbdfsdfc2dsafasccdda2", "warden.user.user.key" => [ [12], "$2A$1d$Qd775IfaSsdfRfasdfdfmu" ], "_csrf_token" => "vffdcdfasd-t3rWY8mfDFADSFACEFDAfeccdsfffSA" }
warden.user.user.keyの[0][0]がuser_idですので、それをログに出力します。
Railsアプリを構築しようとするときにbuildエラーになるライブラリの代表にlibv8、mini_racerなどが上げられると思います。(個人的感覚)
毎回gemを最新化することでなんとなく解決していたのですが、これではその場凌ぎしかなく応用が効きません。 しっかり理解しておく必要があると思ったので、libv8周りのことを調べてみました。
アプリケーションのnode.jsのバージョンを上げて、yarn install
コマンドを実行したら以下のようなエラーが発生しました。
1 error generated. make: *** [Release/obj.target/binding/src/binding.o] Error 1 gyp ERR! build error gyp ERR! stack Error: `make` failed with exit code: 2 gyp ERR! stack at ChildProcess.onExit (/Users/my_name/my_app/node_modules/node-gyp/lib/build.js:262:23) gyp ERR! stack at ChildProcess.emit (node:events:390:28) gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:290:12) gyp ERR! System Darwin 20.6.0 gyp ERR! command "/usr/local/var/nodebrew/node/v16.13.1/bin/node" "/Users/my_name/my_app/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library=" gyp ERR! cwd /Users/my_name/my_app/node_modules/node-sass gyp ERR! node -v v16.13.1
エラー内容を確認すると下の方にnode-sass
と出力されています。
node-sass
はpackage.jsonには記載のないライブラリでした。そのため、アプリケーション内で使用している何らかのライブラリがnode-sassに依存しているということがわかります。
yarn why [モジュール名]
というコマンドで、間接的に依存しているライブラリを特定できます。
$ yarn why node-sass [1/4] 🤔 Why do we have the module "node-sass"...? [2/4] 🚚 Initialising dependency graph... [3/4] 🔍 Finding dependency... [4/4] 🚡 Calculating file sizes... => Found "node-sass@4.14.1" info Reasons this module exists - "@rails#webpacker" depends on it - Hoisted from "@rails#webpacker#node-sass" info Disk size without dependencies: "2.97MB" info Disk size with unique dependencies: "11.13MB" info Disk size with transitive dependencies: "23.48MB" info Number of sha
"@rails#webpacker" depends on it
という記載がありますので、@rails#webpackerで使用されているnode-sassのバージョンに問題があることがわかりました。
@rails#webpackerで使用しているnode-sassのバージョンに問題があることがわかりましたので、本体となる@rails#webpackerのバージョンを上げてみようと思います。
package.jsonの記載を以下のように変更しました。
"@rails/webpacker": "^5.4.3",
その後、yarn install
を実行したら正常にインストールが完了しました。
めでたしめでたし。
YOUTUBEやTwitterを見ているとリモートワークの機会が増えたこともあり、自宅の作業環境をアップグレードする人が多いように感じます。
PC、デスク、椅子、照明などに投資していくのが一般的だと思うのですが、実はそれと同じくらい普段身につけているアイテムにも投資したほうが良いと筆者は考えます。
身につけるモノをアップグレードしたことで生産性が上がったと実感しています。
リモートワーク歴4年の私が、オススメしたい生活用品を4種類紹介したいと思います。
目が悪い人は一日中メガネを付けているのではないでしょうか。 特にリモートワークだと一日の中でメガネを付ける時間がかなり長くなるので、メガネは真っ先に投資するアイテムの一つです。
という観点で選定すると良いでしょう。
ちなみに筆者は眼鏡市場で購入したこちらのメガネにブルーライトカット加工オプションを付けて使用しています。 流行りのボストン型で、しかも軽量、価格も絶妙ですのでオススメです。
部屋着もかなり重要です。寝間着のままスウェットやパジャマで作業するのも良いのですが、服を着替えて仕事モードに心を切り替えてることが大事だと考えます。
という観点で選定すると良いでしょう。
特に「そのままの格好で外に出ても平気か」というのは地味に重要です。気軽に外出できることで時間短縮になりますし、突然の配達などで人に合う場合も恥ずかしくないというメリットがあります。
筆者のオススメ部屋着は、冬場であればユニクロの「ファーリーフリースフルジップジャケット」は欠かせません。
インナーには無印の「脇に縫い目がない 天竺編みTシャツ」などのオーガニックコットン素材のモノがオススメです。
スボンは動きやすさや通気性を重視すると良いと思います。 「ウルトラストレッチドライスウェットパンツ」などがオススメです。
スリッパは履かないという人もいるかもしれませんが、冬場であればスリッパの使用をおすすめします。 座って作業するのが中心になると足への血流が悪くなり、足裏が冷えてしまいます。 スリッパを履くと足が冷えることを防げますので、集中力が向上します。
素材によって好き嫌いがあると思うので、自分の好みで選ぶと良いでしょう。
ちなみに筆者はニトリで購入した「あったかスリッパ」を使用しています。
アイスコーヒーやホットコーヒーを飲んでいてすぐにぬるくなってしまうのは非常に残念です。 いつでも適温な状態で飲み物を口にできるとリッラクス効果が高まり、生産性も上がるのではないでしょうか。
という観点で選定すると良いでしょう。
例えばサーモスのタンブラーなどがオススメです。
その際、タンブラーの蓋も同時に購入するのは必須です。 保温性が高まりますし、転倒した場合の被害もある程度防げますので買って損はありません。
タンブラー用フタ(S)/JDA Lid(S) | マグカップ・タンブラー・ジョッキ・保冷缶ホルダー・食器 | サーモス 魔法びんのパイオニア