Goのnet/httpパッケージでHello WorldするだけのWebアプリ

本記事の目的 Goを学ぼうかどうか判断するために、簡単なWebアプリを作ってみます (アクセスしたら、Hello Worldと表示するだけ)。 開発環境 Goを信用して良いのか分からなかったので、環境を汚さないために、Dockerでやります。 面白かったら、デバッカーと…

Terminalで顧客情報を取得する!

What JSforceを使って、顧客情報をTerminal上で取得してみます。 JSforce https://jsforce.github.io/ How JSforceの導入 まず、セットアップします。 $ sudo npm install jsforce $ jsforce --version 1.9.3 Salesforceにログイン パスワードとセキュリティ…

JavaScriptで環境変数を使う in Rails

What Rails + Vue.jsという構成のアプリにおいて、JavaScript (.jsや.vue) でも環境変数を使えるようにする。 Solution Rails側で.env以下に環境変数をまとめていることを前提に記述します。 .envファイル API_KEY=jofdashouhaemfaspo3u9fasnifgfa98 まず、y…

ng newにてThe Schematic workflow failed.

What ng newコマンド実行時、以下のエラー群が発生しました。 ⠏ Installing packages...npm WARN deprecated tslint@6.1.2: TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more informati…

MySQL8.0インストール時の諸々のエラー解決

What MySQL8.0インストール時に詰まったので、その対策等を記録しておきます。 MySQL8.0のインストール Homebrew経由で取得します。デフォルトで最新版をインストールすることができます。 $ brew install mysql パスワードの再設定 MySQLが起動しているなら…

Selenium::WebDriver::Error::WebDriverError ~Unable to find Mozilla geckodriver.~

What Capybaraにて、JavaScriptを扱う際、以下のエラーが出てきました。 Selenium::WebDriver::Error::WebDriverError: Unable to find Mozilla geckodriver. Please download the server from https://github.com/mozilla/geckodriver/releases and place i…

配列と連想配列 ~会津オンラインALDS1_4Cを通して~

What 会津オンラインの以下の問題を解きます。 onlinejudge.u-aizu.ac.jp Solution 配列で書く方法を真っ先に思いついたので、それで実装してみました。 function main(lines) { const input = lines.split('\n').slice(1) const n = input.length let str =…

全探索 (AtCoder B問題)

What 全探索は、全ての組み合わせを逐一、条件と一致するか確認するアルゴリズムです。 ここの問題を解いていく過程で学んだことや解法を記録しておきます。 qiita.com Results 全て列挙しなくても解ける問題が多いと感じました。 以下、それぞれの問題に関…

for of vs for in

What for文におけるofとinの違い for (let i = 0; i < xxx.length; i++)で書き直すことで、理解を深める。 Results まず、用語の導入として、プロパティ名とプロパティを簡単に示します。 ハッシュでは、{プロパティ名: プロパティ}となります。 配列の場合…

/[^\w]/g != new RegExp('[^\\w]', 'g')

What 正規表現の作り方について、理解に手間取ったので、まとめておきます。 文字列 Hi Bob!!をHiBobとして表示したい (空白や特殊文字を排除したい) 場合、以下の2通りの方法があります。 const word = 'Hi Bob!!'; reg1 = /[^\w]/g; regResult1 = word.rep…

Nuxt + Firebase | キャッシュを保存しない設定

What Nuxtでアプリ開発をした際、キャッシュが残り、結果が反映されないことがありました。そのため、キャッシュを保存しない設定を加え、対処しました。 Solution nuxt.config.jsに以下を追記します。 ... , serverMiddleware: [ '~/api/headers.js' ], ...…

Can't verify CSRF token authenticity.

What RailsでAPIを扱っている際にログに出現しました。 Solution ただ無効化する方法 Qiita等でよくあるやり方は、CSRFを無効化する方法です。 Railsのヘルパーを使っている場合は、トークンが発行されますが、コンポーネント化するために、生HTMLを使用する…

Nuxt + Firebase

What ローカルである程度開発し、デプロイして確認しているのですが、ちょいちょいコマンドを忘れるため、そのメモを残しておきます。 Lists Nuxtアプリを起動する アプリのあるディレクトリにて、以下を実行します。権限関連でエラーが起きる場合は、適宜権…

S3の設定

What 画像ファイル等をAWSの別コンテナに保存し、ec2コンテナを変更しても大丈夫なようにする。 具体的には、carrierwave利用時の画像保存先をS3にします。 Do Localの設定 config/carrierwave.rbというファイルを作成し、以下記述します。uploaders/image_u…

簡単な本番環境

Amazon Linux2を用いて、アプリをデプロイします。 今回はNginxと連携せず、アプリを開発して、デプロイしながら確認できるような環境を作ります。 下準備 イメージ、セキュリティ等を設定した上で、インスタンスにログインします。 パッケージのインストー…

It is likely that you need to grant write permissions for that path.

What bundle install時に以下のエラーが発生しました。 There was an error while trying to write to `xxx`. It is likely that you need to grant write permissions for that path. Solution エラー文通り、権限関連のエラーです。 以下で権限を与えるこ…

can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)

What /varディレクトリ直下に、/wwwディレクトリを作成し、GitHubからレポジトリをクローンしたディレクトリ内で、以下コマンドを実行したときに発生しました。 $ bundler -v ちなみに、/var直下では問題なくバージョンが示されます。 chownコマンドも実行済…

DBを再構築して、既存の本番環境を更新する

What 表題の通りです。 機能を追加するために、後からDBを修正することがあると思います (初めの設計がよくなかったパターン)。 Railsでの対処法を解説します。 Solution ローカル まず、migrationファイルでは扱いづらいため、jalkoby/squasherを使います。…

Axios + RailsでのPOSTの非同期化

What Railsにおいて、GET以外のメソッド (POST, UPDATE, DELETE) を非同期で扱う際は、CSRF対策が施されています。 本記事は、非同期処理とは何か、そしてまた何であったかを知るための備忘録です。 下準備 ルーティング、コントローラー、モデル等を作成し…

配列とハッシュ, 定数と変数, ==と===の違い

What JavaScriptを用いて、アルゴリズムとデータ構造について学びます。 以下のサイトで打ちながら学ぶと理解が深まります。 https://stephengrider.github.io/JSPlaygrounds/ 定数と変数 上書きできるか、できないかが異なります。 変数 (var, let) を使う…

タグ付け機能[バックエンド]

What タグ付け機能の実装例を紹介します。 DB テーブルはこんな感じ。 Strategy 文字列 (タグ) をparamsで保管しておいて、mapメソッドで都度都度保存 その時に、中間テーブルにもデータを入れておく このようにすれば、元からあるWorkテーブルと無関係にタ…

WARN: HTTP Origin header (https://xxxx) didn't match request.base_url (http://xxxx)

What サイトをSSL化した際、GETメソッドは通るものの、CREATE, UPDATE, DELETEメソッドでエラーが発生しました。 Solution log/production.logを確認します。 WARN -- : HTTP Origin header (https://xxxx) didn't match request.base_url (http://xxxx) INF…

docker-compose.ymlを書いたら

What DBを変えてみたり、バージョンを変えてみたりして、アプリが動くかを確認するのに、Dockerが使えそうです。 実際に構成を書いた後、どうするかをまとめておきます。 Do docker-composeコマンドを実行する前に 既存のアプリを使うため、git cloneしてお…

Mysql2::Error::ConnectionError: Can't connect to MySQL server on 'db' (111 "Connection refused")

What $ docker-compose run web rails db:create実行時に発生したエラーです。 Solution プロセスを確認してみます。 $ docker ps 私の場合は、コンテナ内でMySQLが起動していました。 プロセスをkillして、再度実行するとエラーもでませんでした。

モーダルウィンドウの実装

What 以下のようなモーダルウィンドウを実装します。 Solution 以下サイトの方法を参考にしました。 https://www.webantena.net/demo/javascript/currentmenu/index5.php

JSONに向き合う

ずっと逃げていたJSONに向き合います。 削除とかクリップ機能とかを非同期通信でやれたら良いな... はじめに 非同期通信の話になると、いつもJSONなる単語が出てきます。 ここでJSONとは、JavaScript Object Notionの略です。 なるほど。今思うと、同一ペー…

turbolinks削除

What slimに直書きしていたJS (jQuery) が、jsファイルに移行後、動かなくなった。 可能性として、2点 application.jsにおいて、jQueryを読み込む順番が=require_tree .よりも後ろになっている。 turbolinksの影響で、画面読み込みが先に行われ、JSファイル…

migration集約

What migrationファイルが増殖してきたため、整理します 環境 Rails: 5.2 MySQL: 5.6 Solution squasherというgemを使用します。 [参考] https://github.com/jalkoby/squasher Gemfile Gemfileに以下を記述します。 group :tools do gem 'squasher', '>= 0.6…

failed to load command: unicorn_rails

What 以下のようなエラーメッセージが発生しました。 failed to load command: unicorn_rails (/home/ec2-user/.rbenv/versions/2.5.1/bin/unicorn_rails) pid=/var/www/pile}/tmp/pids/unicorn.pid not writable Solution pidの値がおかしい。 実際、config…

Initialize language runtime | Nginx + Passenger + Rails

What Initialize language runtimeが失敗し、Error starting web applicationが発生しました。 Solution subprocessを確認します。権限問題が絡んでいるみたいです。chmodコマンドで解決できます。 /bin/sh: /home/centos/.rbenv/versions/2.5.1/bin/ruby: P…