紙一重の積み重ね

35歳のエンジニアがなれる最高の自分を目指して、学んだことをこつこつ情報発信するブログです。

【Rails5 + Postgres10】pgcryptoを使ってuuidを実装する方法

やりたいこと URLにidを使っていると、値を変更して他のユーザの情報が見れたり、データ数の推測ができてしまう。これを避けたい。 https:example.com/user/1/hoge ではなく、 https:example.com/user/76a049b8-d280-49e8-917f-d7b28107c660/hoge というよう…

【 ねっと99夢フォーラム】小宮一慶さんの講演「成功するリーダーの条件」を聴いてきました

はじめに 千葉の九十九里浜にある大里総合管理さんで開催されたねっと99夢フォーラムに参加してきました。 ねっと99夢フォーラムとは 大里総合管理さんで毎月開催されている勉強会です。詳細は以下ホームページをご覧ください。 www.net99yume.com 今回の講…

【AWS】複数のAWSアカウント情報を切り替えて AWS CLI を実行する方法

はじめに AWS CLIにて複数のアカウントを使い分ける必要が出てきたのでメモ。 設定方法 credentialsに複数のAWSアカウントのキーを設定する [default] aws_access_key_id = hogehogehoge aws_secret_access_key = hogehogehogehogehogehoge [other_aws] aws_…

【初めてのDevRelHub】自社サービスのMeetUPイベント開催の具体的なアドバイスをいただいた話

はじめに 今月の10日に新宿で開催された DevRel Meetup in Tokyo の DevRelHub に参加してきました。 今日は初めて #DevRelhub に参加してみた。 #DevReljp のミートアップにも参加したことないのに、いきなり行って大丈夫かなとちょっと不安だったけど、…

【Ruby2.6.0】find_spec_for_exe: can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException) エラーの解決方法

はじめに 新年早々ハマったのでメモ。 今年の1月から同様の事象が発生しているように見受けられます。 stackoverflow.com 結論 Ruby2.6.0を使えば解決します。 やりたいこと まっさらなEC2にRubyを入れて、Unicornをインストールしたい 実行環境 $ ruby --ve…

【AWS】ALBを作る時は、healthCheckIntervalSecondsを5以上にしよう #CloudFormation

はじめに CloudFormationで少しハマったのでメモ。 結論 ターゲットグループのhealthCheckIntervalSecondsは、5以上に設定する。 困っていること CodeDeployの待ち時間が遅い 10分位待つ AWSの構成 ALB EC2×2 ALB、TargetGroup、EC2等はCloudFormationで一気…

【Rails5】axlsx_railsを使ってCSV出力機能を実装する

はじめに axlsx_railsを使ってCSV出力機能を実装するメモ。 やりたいこと Rails5アプリケーションからCSVを出力したい 実現方法 gem axlsx_railsを使う github.com 実装方法 gemインストール gem 'axlsx_rails' MIMEの登録 長いので\config\initializers\mim…

【Rails5】Punditを使って権限管理の機能を実現する

はじめに Punditを使った権限管理の実装方法のメモ。 やりたいこと 権限管理の機能を簡単に実装したい。 実現方法 Punditを使う。 github.com 実装 application_controller Punditをインクルードする class ApplicationController < ActionController::Base …

【新年の抱負】#Ruby を学んで、 資格の取得や #AtCoder に出場することを重点的に取り組む2019年にする

はじめに 一年の計は元旦にあるということで、人生の目的と2019年の目標を考えました。 人生の目的 昨年の反省をもとに妻への接し方を追加しました。 家庭 自分と妻の家族・友人・周りの人たちに感謝して、健康で心穏やかに笑顔で過ごす 妻を幸せにする。私…

【2018年総括】育児と仕事を両立して、エンジニアとして外部から評価をいただくことができた1年 #振り返り

はじめに 2018年も残すところあと1日となりました。2018年を振り返ります。 今年の総括 とても良い一年でした。 今年は人生初の体験が非常に多く、刺激的な一年でした。また。家庭と仕事のバランスがうまくとれた一年でもありました。プログラミングをよく学…

【2018年12月の振り返り】Qiitaアドベントカレンダーに参加して、社内のMeetUPイベントでLTした1ヶ月

はじめに 2018年も残り2日となりました。12月を振り返ります。 今月達成できたこと やりたかったことに対して、達成できたものを消しました。 CloudFormationのテンプレートを完成させる 以下の構成を1発で作る VPC subnet(Public、Private) Gateway(In…

【2018年】#つみたてNISA 40万円を使い切りました #インデックス投資

はじめに 2018年度の40万円のつみたてNISA枠を使い切りました。 世界的な株安がすごい 年末に向けて世界的な株安が進んでいます。 www.nikkei.com 特に日本株においては、10月から2割程度下落しているようです。アベノミクスでは3回目の弱気相場とのことです…

SIerで働くエンジニアが社内でMeetUPイベントを企画した話

はじめに 会社で初めてのミートアップイベントを開催することにしました。 私の勤務先の状況 SIerです ライトニングトークをする文化はない 社外のミートアップイベントに参加している人は少ない(ように見える) 社内の文化は保守的 きっかけ 日頃、ライト…

末尾にイコールがついているメソッドは代入構文として使える #Ruby

はじめに たまにメソッドにイコールがついているものを見かけるのでメモ。 実装例 def user_params=(user) id = user.id self.created_user ||= id self.updated_user = id end メリット 代入構文のように使用できる Rubyでは、()を省略できる。また、イコー…

Rubyをバージョンアップした時に bundle: command not found エラーが発生したときの対処法

やったこと Ruby2.4.1 を入れた直後に、2.5.1にバージョンアップした 発生したエラー $ bundle rbenv: bundle: command not found The bundle command exists in these Ruby versions: 2.4.1 原因 bundleがいないため 2.5.1 ~/.rbenv/versions/2.5.1/bin$ ll…

【CodeDeploy】rootユーザからubuntuユーザの権限を使用して bundle install したら Could not locate Gemfile と言われてハマった話

やりたいこと CodeDeployでbundle installしたい .rbenvをインストールしたのはubuntuユーザであるため、rootからubuntuユーザに切り替わって実行する必要がある。 こんな感じのapplication_start.shを書いた。 #!/bin/bash cd /home/ubuntu/hoge sudo -i -u…

35歳のエンジニアがRailsと出会って人生が変わった話 #Qiita #Rails

はじめに この記事は、Ruby on Rails Advent Calendar 2018の12日目の記事です。 qiita.com SIerで働く35歳のエンジニアが、Railsと出会って変わったことについて書きます。 私のこれまでの経歴 文系新卒でパッケージベンダっぽいSIerに入社 現在14年目ぐら…

【AWS】NATInstanceのルーティングに失敗する時は送信元/送信先の変更チェックを確認する #CloudFormation

困ったこと NATインスタンスをCloudFormationで作成 PrivateSubnetからapt-add-repositoryが動かない NAT経由で外に出れないように見える 原因 送信元/送信先の変更チェック が 有効 になっているため。 確認 マネジメントコンソールから作る場合は、送信元/…

【AWS】既存の本番環境から #CloudFormation のテンプレートを作る方法

はじめに はじめてCloudFormationでAWS環境を構築しました。 便利すぎて涙が出たので作業内容を共有します。 やりたいこと すでに手動で構築した別プロダクトのProduction環境の構成をテンプレート化したい。 テンプレートを流用して、別プロダクトのAWS環境…

【2018年11月】社内の企画コンテストで優勝し、たくさんの人と交流したり、帰省した1ヶ月 #振り返り

はじめに 早いもので2018年も残すところ1ヶ月となりました。 11月を振り返ります。 今月達成できたこと やりたかったことに対して、達成できたものを消しました。 社内の企画コンテストの決勝プレゼンで優勝を狙う 優勝しました! いろいろ学びがあったので…

【AWS Lambda】No module named 'xxxx'エラーが発生したときの対処法

やりたいこと 業務で書いたLambdaのコード量が900行を超えてカオスになったので、リファクタリングしたい。 コードの用途ごとにソースを分割したい。 発生したエラー Unable to import module 'lambda_function': No module named 'util' 原因 zipで圧縮した…

【PostgreSQL】1つのカラムに入ったカンマ区切りのデータを分割して取得する方法

実行環境 AWS PostgreSQL10.3 やりたいこと 1つのカラムにカンマ区切りでidなどが入っている このカラムを分割してキーにしたい こういうデータを、 列名 値 hoge_id 1,2,3,11 こうしたい。 列名 値 hoge_id 1 hoge_id 2 hoge_id 3 hoge_id 11 実現方法 rege…

【読書】「一生折れない自信のつくり方」はエンジニアが読んでも学びが多い一冊でした

はじめに アチーブメントの青木仁志さんの「一生折れない自信のつくり方」を読みました。 一生折れない自信のつくり方作者: 青木仁志出版社/メーカー: アチーブメントシュッパン発売日: 2009/11/25メディア: 単行本(ソフトカバー)購入: 14人 クリック: 227…

【人生初挑戦】アドベントカレンダーに参加することにしました #Qiita #Rails

はじめに 初めてQiitaのアドベントカレンダーに参加することにしました。テーマは、Ruby on Railsです。 アドベントカレンダーとは? もともとは、クリスマスまでの期間に日数を数えるために使用されるカレンダーとのことです。 アドベントカレンダー - Wiki…

「投信ブロガーが選ぶ! Fund of the Year 2018」に投票しました #FOY2018

はじめに 「投信ブロガーが選ぶ! Fund of the Year 2018」に投票しました。 そもそも、このブログは投信ブログなのか?という疑問もありましたが、このブログで1番読まれている記事が、つみたてNISAに関する記事 なので、投票することにしました。 www.yoko…

【Rails5 + Slim】ブラウザのメニューバーやツールバーなどを表示せずに、リンクを新しいウインドウで開く方法

やりたいこと リンクを別のウインドウで表示したい 別のウインドウには、ブラウザのツールバーやメニューを表示したくない 別ウインドウの大きさは手動で調整できるようにしたい やりたいことのイメージ 楽天銀行のログイン画面のこういうやつ www.rakuten-b…

【AWS Lambda】PythonからPostgreSQLのストアドプロシージャを実行する方法 #aws

やりたいこと PythonからPostgreSQLのストアドプロシージャを実行したい。 具体的にはAWS Lambdaからストアドを実行したい。 実行環境 AWS Lambda Python3.6 psycopg2 PostgreSQL9.6.6 実現方法 psycopg2のcallprocメソッドを使う。 実装例 import sys impor…

【PostgreSQL10】日付の範囲検索条件まとめ。初日、末日、Nヶ月前の取得方法

やりたいこと BETWEEN検索で、今月初日 00:00:00~末日 23:59:59の検索がしたい BETWEEN検索で、先月初日 00:00:00~先月末日 23:59:59の検索がしたい 取得したい値 実行日は、2018/11/13。 今月初日(時間なし) -- 2018/11/01 SELECT DATE_TRUNC('month',now…

【AWS/RDS】PostgreSQL10のタイムゾーンをUTCからJSTに変更する方法

はじめに PostgreSQLに限らず、AWS RDSのタイムゾーン設定は、defaultではUTCになっています。変更手順をまとめます。 環境 AWS RDS postgreSQL10 注意事項 defaultのパラメータグループは編集できないので注意! パラメータグループの作成手順 パラメータグ…

心身ともに健康なプログラマであるために、メンタルヘルスケアの資格を取ることにしました。

はじめに メンタルヘルス・マネジメント検定のⅢ種を取得することにしました。 私の職業は エンジニアです。最近は AWS のインフラ構築や、RubyやPython を使った実装まで幅広く行っています。少ないチームなので、一人当たりの役割や裁量が大きいため、やり…