紙一重の積み重ね

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

プログラミング

【クラウドIDE】Cloud9が無料で使えなくなってしまったのでGitpodを試してみた話

はじめに 場所に限らず、ネットにさえ繋がっていれば、どこからでもコードが書けるCloudIDEは、AtCoderの学習や、ちょっとしたコードを書きたいときにとても便利です。 私はRailsチュートリアルをきっかけに、Cloud9で個人的な開発を進めてきました。無料で…

【Devise】ユーザのメール認証が成功した際に、管理者向けにメール送信処理を組み込む方法 #ruby #Rails

はじめに 最近、Deviseをいじる機会があったのでメモ。 やりたいこと Deviseのメール認証に成功した後に、管理者向けに「ユーザがメール認証したよ」的なメールを送信したい send_user_confirmed_emailみたいな感じ 困ったこと 素直に実装すると、ユーザがUR…

【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…

【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

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

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

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

【N+1問題対策】Ransackとincludesメソッドを使ってActiveRecordの多段の関連を検索する方法 #Rails5

はじめに N+1問題を解消するために、複数の関連を持つModelをincludesメソッドで解消する方法をメモ。 実行環境 Rails5.2.0 Ransack Slim Model定義 Userに持っている名称と、Corporationに持っている名称を取得したい。 class User < ApplicationRecord has…

【Python+Postgres】'int' object does not support indexingが発生したときの対処法。タプルの要素が1つの場合でもカンマが必要。

はじめに Psycopg2のmogrifyにint型の要素を1つ渡して、エスケープしたSQLを取得しようとしたらエラーになったのでメモ。 環境 AWS Lambda Python3.6 PostgreSQL9.6 発生したエラー "errorMessage": "'int' object does not support indexing", "errorType":…

【Rails5.2.0】ActiveRecord::DangerousAttributeError association is defined by Active Record. が発生したときの対処法 #Rails #ActiveRecord

はじめに Rails5.2.0でアプリケーションを開発中に見慣れないエラーが出たのでメモ。 実行環境 Rails5.2.0 ActiveRecord5.2.0 PostgreSQL 9.6 発生したエラー ActiveRecord::DangerousAttributeError association is defined by Active Record. Check to mak…

【ActiveRecord5.2.0】JoinDependencyのコンストラクタの引数の仕様がいろいろ変わっている事に気づかず、3日くらいハマった話。#Rails #ActiveRecord

はじめに Rails5.1.1で動かしていたプログラムを、Rails5.2.0で動かしたら、JoinDependency.newでエラーが発生した。 いろいろ回り道して調べた結果、ここ3日くらいハマってしまったのでメモ。 発生したエラー wrong number of arguments (given 3, expected…

【VS Code】Failed to start Solargraph: Unable to load the EventMachine C extensionのエラーが出たときの対処方法 #Solargraph

はじめに Visual StudioでSolargraphが動かなくなったので、解決するまでをメモ。 実行環境 Windows10 64bit Pro Vivual Studio Code 1.27.2 Ruby 2.4.4 発生したエラー Failed to start Solargraph: Unable to load the EventMachine C extension; To use t…

【読書】36歳にして初めてリーダブルコードを読んで猛省している件。プログラマはもちろん経営者にも読んで欲しい1冊

はじめに 同僚に薦められて、リーダブルコードを読み始めました。 リーダブルコードとは? わかりやすいプログラムを書くための原理原則が書いてある本です。 リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practic…

【Python+Psycopg2】PostgreSQLからEXISTSを使ってデータの存在チェックメソッドを作る方法

実行環境 AWS Lambda Python3.6 PostgreSQL9.6.6 psycopg2 やりたいこと existsでデータの有無を確認 結果をBooleanで返却したい 解決方法 fetchone()を使う。公式ドキュメントは以下。 The cursor class — Psycopg 2.7.5 documentation 実装例 def is_exist…

【Python】複数のインデックス番号を指定してリストから一括削除する方法

やりたいこと 複数のインデックス番号を指定して、リストから対象のデータを一度に削除したい 結論 lambda式を使う 困った例 以下だと、削除したいインデックスがずれてしまう。 list = ["りんご","みかん","バナナ","メロン","スイカ"] # りんごとメロンを…

でかドージョーin東京にはじめてメンター参加したらニンジャたちのレベルの高さに衝撃を受けた話 #CoderDojo #DecaDojo

はじめに 2018年7月22日に開催された、でかドージョーin東京にはじめて参加してきました。 いろいろ学ぶことがあったため振り返ります。 参加しようと思ったきっかけ 以下の記事にまとめました。 www.yokoyan.net 会場はサイボウズさん 今回のでかドージョー…

「Scratchをはじめよう」をやってみました。 #Scratch

はじめに ツールバーのヒントをクリックすると出てくる、Scratchをはじめようの学習ログです。 色を変える 見た目をクリックします。 色の効果を25ずつ変えるブロックをドラッグします。 ドラッグしたブロックをクリックすると語に、ネコの色が変われば成功…

【Python3】メソッドの戻り値を複数返す方法

やりたいこと 1つのメソッドで複数の戻り値を返したい 解決策 returnする値をカンマで区切る 文字列と数字を返す例 def hoge(): # 略 return "hoge",123456789 文字列と数字が含まれたリストを返す例 def hoge(): # 略 return ["hoge",123456789] 複数のリス…

【はじめてのScratch】アカウント登録からネコを動かして保存するまでの手順

はじめに 今後、CoderDojyoにメンターとして継続的に参加したいと考えています。 CoderDojyoでは、子ども向けのプログラミング言語Scratchを使うことが多いため、自分でも触ってみることにしました。 Scratchに興味がある方々の参考になれば幸いです。 事前…

DecaDojo(でかドージョー)in Tokyoにメンター参加します #CoderDojo

はじめに 2018年7月22日(日) に開催される「DecaDojo(でかドージョー)」in 東京にメンターとして参加させていただくことになりました。 DecaDojyoとは? CoderDojo(コーダー道場) は7〜17歳の子どもを対象にしたプログラミング道場で、ボランティアで運営さ…

【Python】Scrapyでログを出力する方法

やりたいこと Scrapyで実装した処理の任意の場所にログを追加したい。 環境 Scrapy1.5.0 Python3.6 実現方法 import loggingと、logging.log_level()を使用する。 以下、infoレベルのログ出力の実装例。 import logging # 略 logging.info("hogehoge") 参考…

【Python】flake8指摘事項まとめ

はじめに 最近、Pythonを使ってコードを書きます。まだまだ不慣れなので、flake8を導入してみました。 Rubocopみたいで便利ですね。後学のために指摘された内容をまとめます。 【参考情報】flake8公式 lintlyci.github.io E111 indentation is not a multipl…

【Visual Studio Code】Pythonのコードフォーマッター設定を行う

はじめに Visual Studio CodeでPythonの開発を行う際のコードフォーマット設定を行います。 参考 dev.classmethod.jp 事前準備 Visual Studio Codeの統合ターミナルで以下を実行します。 $ pip install flake8 $ pip install yapf settings.jsonの設定変更 V…

#CoderDojo さいたまにメンターとして初参加してきました

はじめに 5/20に開催されたCoderDojoさいたまにメンターとして参加してきました。 coderdojo-saitama.com 会場の6Fはとってもおしゃれ!! 大宮のコワーキングスペースである7F(ナナエフ)の一つ下の6F(ロクエフ)で開催されました。フリードリンクもあり…

【初挑戦】小・中学生向けのプログラミングクラブにメンター参加します #CoderDojo さいたま

はじめに 年始の目標に掲げていたCoderDojoのメンターに申し込みました。直前の申し込みにもかかわらず、快諾いただいた運営の方々に感謝です。 CoderDojoとは? CoderDojo は7〜17歳の子どもを対象にしたプログラミング道場です。2011年にアイルランドで始…

【Ruby】多重配列の中身を1行ずつ改行して表示したい

はじめに AtCoderの問題をいろいろやっている中で、多重配列について迷ったのでメモ。 やりたいこと 多重配列の中身を1行ずつ改行して表示したい。 実現方法 joinメソッドを使う。 docs.ruby-lang.org 実装例 $ irb 2.4.0 :001 > H,W=3,4 => [3, 4] 2.4.0 :0…

【まずはBeginners Selectionから】35歳だけどAtCoderはじめました #AtCoder

はじめに 育児の合間にAtCoderのBeginners Selectionの問題を少しづつ解いています。 qiita.com やってみた感想 自分のプログラムの書けなさっぷりに衝撃を受けました。 SIerでプロジェクトリーダーやPJ管理の仕事ばかりしていたため、プログラムを書いてき…

【はじめてのあっとこーだー】Ubuntu16.04にVisual Studio Codeとrubyをインストールしてチュートリアル問題やってみた #AtCoder

はじめに Qiitaで見つけた以下の記事が面白そうです。 qiita.com 上記10問を解いて、プログラミングコンテストであるAtcoderのコンテストに参加してみようと思い立ったので、まずは環境構築からチュートリアル問題までやってみます。 Visual Studio Codeの取…

Windows10にVisual Studio Codeをインストールする

Railsの開発のために、MicrosoftのVisual Studio Code(以下、VSCode)を入れます。 VSCodeのメリット IDEと比べると圧倒的に軽い。 インストール手順 Visual Studio Codeから、インストーラをダウンロードする。 インストール 次へをクリック。 デフォルト…

【Ruby】ドットインストールRuby入門(全26回)を完走しました

ドットインストールの学習状況です。 学習中のレッスン Ruby入門 (全26回) 現在の進捗状況 全26回完了。 所要時間 5日間。 − なんだかんだで5〜6時間くらい。 作成したプログラム github.comにて管理しています。 やってみた感想 基礎の基礎から学べるので非…