プログラミングの問題をブラウザで解くウェブサイト「LeetCode」が実践的で面白い。

どうも、りーずです。

プログラミングの問題をブラウザ上で解くウェブサイト「LeetCode」というものがあります。

これはコーディングのテストなどでも実際に使われることがあるようです。
趣味的に普段から解いていると実践力が付きそう。

また、何かのプログラミング言語を学びたい場合などにLeetCodeの「Easy」の問題だけを解いていくというのも1つの手段として良さそうです。

「LeetCode – Easy問題」
https://leetcode.com/problemset/all/?difficulty=Easy

このサイトです。

自然とfor文やif文などを使うことになるので、プログラミング言語習得の1つの手段やキッカケに使えますね。

イメージとしては詰め将棋のような感じです。

ということで、簡単ながら記事として記しておきます。

Windows10環境のRuby on RailsでMySQLを使うときはRubyのbinフォルダにlibmysql. dllファイルを入れよう。

どうも、りーずです。

Windows10環境でのRuby on RailsでMySQLを使うときに、うまく動かない事がありました。

これはメモしておかないと忘れてしまうので、記事にしてメモしておきます。

上のツイートが今回の記事の伝えたいことのすべてです。「libmysql.dll」というファイルを使っているRubyの「bin」フォルダに入れましょう。


ちなみに今回のキッカケはHerokuのStackをアップグレードする時に起きたことです。

Herokuは、Linuxのバージョンを上げるためにStackを上げることがあります。
これにより、Rubyのバージョンが古いとデプロイが出来なくなることがあり、僕もRuby2.5を使っていたので、上げる必要がありました。

しかし、MySQL(mysql2というgem)を使うときに「何かのファイルをRuby本体に入れないと動かない」ということがあったのです。
この「何かのファイル」というのが今回紹介する「libmysql.dll」というファイルです。

Rubyがある「bin」フォルダに「libmysql.dll」を貼り付ける、というところが今回のポイントです。
ファイルは
http://cdn.mysql.com/Downloads/Connector-C/mysql-connector-c-6.1.11-win32.zip

上記のリンクから直接ダウンロードします。
かなり原始的な方法ですが、これがすべてです。

「gem mysql2をインストール時にエラー「You’ve installed the binary version of mysql2.」が発生した場合」
https://mebee.info/2020/07/22/post-14994/

以上、何かの参考になれば幸いです。

Windows10 + Docker環境でRuby on Railsの環境を作る方法

どうも、りーずです。

Windows10 + Docker環境でRuby on Railsの環境を作る方法です。

DockerというのはWindowsやMacでLinuxの仮想環境をカンタンに作れるもので、いまではアプリをインストールするだけで使えるようになります。

詳しくは

Windows10 ProでDockerを使ってみる。Docker Desktop for Windows。【メモ】

こちらの記事をどうぞ。

さて、このDesktop for Windowsをインストールし、Dockerが起動できるようになってから実際にRuby on RailsをDocker経由で動かす方法です。

実際に動作した時にツイートしたものがこちら。

ツイートに書いてあるものがすべてです。

【Windows】DockerでRuby on Rails開発環境構築方法
https://omathin.com/2020/12/29/docker-ruby-on-rails/

基本的に、こちらの記事の通りに行い、
docker-compose.ymlファイルで
image: mysql:5.

となっている部分を

image: mysql:5.7

というふうに、5.7を指定してあげます。(MySQLの5の最新バージョンは5.7だからです)

環境構築には

・Dockerfile
・Gemfile
・Gemfile.lock
・docker-compose.yml

の4つのファイルを自分で作ります。


具体的なコード

・Dockerfile

FROM ruby:2.6.7
RUN apt-get update -qq && apt-get install -y build-essential nodejs
RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN bundle install
COPY . /app

・Gemfile

source 'https://rubygems.org'
gem 'rails', '5.2.5'

最初はこれだけでOK。
DockerfileにあるRUN bundle installが実行されるとGemfileが書き換えられます。
(この記事の時点で最新のRails 5.2.6でプロジェクトが作られました)

・Gemfile.lock

Gemfile.lockは空のものを用意します。
コマンドを実行することで、中身が作られます。

・docker-compose.yml

version: '3'
services:
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app
    ports:
      - 3000:3000
    depends_on:
      - db
    tty: true
    stdin_open: true
  db:
    image: mysql:5.7
    volumes:
      - db-volume:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
volumes:
  db-volume:

このようにファイルを用意したら

docker-compose run web rails new . --force --database=mysql

このコマンドを実行。
さらに

docker-compose build

を実行します。

database.ymlの中身で

password:
host: localhost

となっている部分を

password: password
host: db

このように変更します。
パスワードとホスト名を、docker-compose.ymlに記載したものと合わせるためです。

あとは
docker-compose up -d

というコマンドでRailsサーバーのコンテナとMySQLサーバのコンテナを起動させます。

そうしたら、

docker-compose run web bundle exec rake db:create

というコマンドで、データベースを作成します。

ひとまずこれでうまく動いてくれたので、メモ的に残しておきます。

mysql2というmysql接続用のGemの開発が2021年5月時点ではストップしています。

なので、Rubyのバージョンは2.6系の最新の2.6.7を選びました。

以上、簡単なメモでした。

また、こちらのYouTube動画ではMySQL8.0での環境構築方法を解説されているので貼っておきます。


その他、参考にさせていただいた記事:

・WindowsでDocker+Rails(MySQL)環境を作る+便利なツール紹介https://qiita.com/makicamel/items/af2cdbdffe65eaf5d24d

・Docker for Windows で Rails 6 + MySQL 8 の開発環境を構築する
https://qiita.com/y-kawaguchi/items/64c69967dc86efd31a57

Windows10 ProでDockerを使ってみる。Docker Desktop for Windows。【メモ】

Dockerを使ってみようと思います。

キッカケになった動画がこちら。

ちょっとやってみようかな、という気になりました。

まず、公式からDocker Desktop for Windowsを入れます。

Windows10のHyper-Vというのをオンにします。「Windowsの機能の有効化または無効化」とWindows10の検索窓で打つと、設定画面が出るはずです。そこから「Hyper-V」を探しましょう。

「Hyper-V」をオンにすると、パソコンの再起動が必要なのですが、このとき軽くエラーが出ます。

Cubaseを入れている場合は、パソコンを再起動するとSteinbergのSoft-elicenserまわりでエラーが出るので、eLicnencer Control Centerを起動して、メニューの「操作」タブから「修復」を選び、きちんと動くようにします。

そうしたら、Dockerを起動します。アプリなので、普通に起動。
Windows検索窓で「Docker」と打つと、「Docker Desktop」というのが出てきます。
それを実行。

・Dockerfileから仮想環境を作る。

Docker Desktopは実行した状態で、PowerShellを起動します。
プロジェクトの場所に行き、

docker-compose up -d

というコマンドを打つと、仮想環境が作られ、バックグラウンドでコンテナが実行されます。

参考『docker-compose run, up, build, createの違い。それぞれの役割を知る。 – Qiita』
https://qiita.com/yuta-38/items/29facbe3f236bf250651

 

以上でDockerの仮想的なLinuxによりプロジェクトが動いている状態になったので、プログラムを書いていけばOKのようです。

こちらのYouTubeの解説が分かりやすいです。

これで、Dockerで仮想環境が作成されたので、あとはその環境(コンテナと言います)を起動させて仮想環境のLinux上でコマンドを打ち、そこに何かを入れても良いでしょう。

Pythonのrequirements.txtがある場合は
pip install -r requirements.txt

でパッケージをインストールです。

ちなみにコンテナの起動や停止、コンテナ内に入るコマンドプロンプトの起動、コンテナの削除などは、Docker Desktopアプリからボタンを押すだけで可能なので、コマンドを打つ必要は無いようです。

かなり便利ですね。

・Docker環境のデータベースにWindows10のデータベース接続クライアントから接続する

Windows10のデータベース接続クライアントからDockerの仮想環境内のデータベースに接続出来ました。Heidi SQLというデータベース接続クライアントを使いましたが、特に特別な設定は不要で、仮想環境を実行中にWindows10から仮想環境のLinuxのMySQLに接続できました。
ここまで出来れば、もう何でも出来る感じがします。

こちらの記事が役に立ちました。

プログラムは通常のWindows10でコーディングをして、実行は仮想環境のLinux(Windows10で作ったdockerのフォルダがそのままLinuxのフォルダに相互反映されます。

ここが不思議なところですが、仮想Linux上でフォルダを作ったりファイルを変更してもWindows10のファイルも変更されますし、Windows10のdockerプロジェクトで同じことをしても、仮想Linux上で反映されます。

これがdockerの凄いところですね。実行だけ仮想Linuxで、編集などは既存のWindows10の環境(VS Code)などが利用できる感じです。

 

こちらの動画の、Dockerをゲームのセーブデータに例える説明がとても分かりやすかったので、参考にしてみて下さい。

ワードプレスでスマホから画像付きで記事の投稿はできるのか?

 

どうも、りーずです。

 

ワードプレスでスマホから文章と画像の投稿が出来るかのテストです。

全てスマホのブラウザから行います。

まずはこちら。画像です。

ELECOM M-DUX50

ELECOM M-DUX50

いつも使っているマウス。

普通に、ワードプレスの『メディアを追加』を押して、写真を追加する事が出来ました。

キャプションも入れられますね。

メディアのサイズは、フルか中か、などが選べます。パソコンでやるように、マウスで細かくサイズ調整は出来ませんでしたが、『カスタムサイズ』という項目もあり、そこで縦横のピクセル数が入れられるので、数字を見ながら調整も割と行けそうです。

ということで、意外にもワードプレスはスマホ投稿が出来てしまう、という記事でした。

こちらが上の写真で載せた、僕の愛用しているマウスです。
これ無しでは生きていけません。

このように、『デスクトップ用Webサイトを表示』で、パソコンサイトのAmazonを開けば、Amazonアソシエイトリンクも取得出来ます。

今はiPhone6sを使っていますが、もう少し画面サイズの大きいスマホなら余裕で出来そうです。

ちなみに投稿時の欠点も発見しました。
それは、タイトルが見えなくなった部分をスクロールして見る事が出来ないことです。Simejiのスクロールでは右にいきませんでした。

1度全選択してからカットして書き直すしかないようです。

ここから右にいけません。

以上、検証記事でした。

この記事は全部スマホで書きました。

なかなか便利ですね。

機会があったらまた使っていきたいと思います。


※リンクはAmazonアソシエイトを利用しています。