pythonを頑張るブログ

突然pythonに目覚めました。何でもっと早くプログラムをやらなかったのか…後悔しています。適当に綴ります。

何故だ

立ちはだかるデザインの壁を超えられそうにない…
もちろん難しいデザインじゃなくて、よくある2カラムのサイトなんだけど出来ない。
意味わからん。
思った通りの場所に配置されない。

もう無理かもしれん。

デザインの知識が全く役立たない

困ったなぁ…
ProgateでHTML・CSSコースやったけど、いざ自分で作ろうとすると何も分からない…
あくまで私が覚えたのはProgate用のもので、他に応用が効かない。

なんでこんなにHTMLだけ身につかないのかなぁ…
不思議だわ。
プログラミングの勉強中、”なるほど、そしたらこんな場合にも使えそう”みたいな発想が絶対ある。
覚えながら応用を頭の中で考えてるんだよなぁ。
しかしHTMLだけは思考停止してる。
きっとこの差なのかな。

もう少し実践を意識しながら勉強しないとダメかな。
DIVとかぶっちゃけ何なのかよく分かってないし…
もう一回基本からやるかな。

ブログの機能は大丈夫なんだけど、デザインが一番大変そう。
完成する気がしない…

いやいや、諦めなければ絶対に出来る。
諦めない諦めない諦めない。

エラーメッセージも日本語化しないとダメなのね…

バリデショーンのエラーメッセージが英語だったので驚きました。
まさかこんな部分までも自分で設定しないとダメだったとは…
自分で作るとほんと次から次へと問題起きますなー。

でもこれは簡単に設定出来ました。
まず、下記をGemfileに追記します。

gem 'rails-i18n'

bundle installでインストールをしましょう。
んで、configの中にあるapplication.rbファイルに下記を追記します。

config.i18n.default_locale = :ja

これでエラーメッセージが日本語になっているはずです。
さらに細かい設定をすればカラム名も日本語に出来るみたいですね。
これは後でやってみようかな。
まぁブログだから投稿時のエラーって自分にしか影響ないからそこまでする必要ないんだけど。

いやー、一筋縄じゃないですなー。
根気よくやってこ。

参考サイト
qiita.com

【ブログ開発】日本語がデータベースに入らない【mysql】

いやはや、いざ開発するとなると本当に色々起きるから大変。
なんかもう逆に楽しくなってきた。

投稿画面を作って、タイトルと本文がDBに保存出来るかテストをしてみました。
test、testと入力して保存をすると成功します。
しかし!
テスト あああああああああああああああああ
とすると、Mysql2::Error: Incorrect string value:なんちゃらかんちゃらとエラーを吐きます。

いやいや、そんなバカな。
そんなわけないっしょ。
何かの間違いだと思い色んなパターンで試したところ、やっぱり日本語ではじかれます。
日本語というより2バイト文字ですかね。

Progateではこんな事おきなかったやん…としょぼくてれいても誰も助けてくれません。
そう、ここは開発という名の大海原!
自分で調べて解決しなければ前に進めないのです!

てことで、グーグル先生にいっぱい教えてもらいました。

まず、どうやらmysqlの初期の文字コードがutf8になっていないのが原因のようでした。
rails dbコマンドでmysqlにログインします。
statusコマンドを入力すると、下記のような部分があります。

# 略
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
# 略

私の場合は最初、こんな感じでした。
このlatin1ってヤツが今回の敵です。

で、解決方法なのですがmysqlのmy.iniファイルを編集する事で解決出来ます。
macだとmy.confなのかな?私は現在windows環境なのでmacは分からないです。
ちなみに、私の環境下ではC:\ProgramData\MySQL\MySQL Server 5.7の中にいました。
ProgramDataは隠しフォルダです。

んで、この中の[mysql]と[mysqld]という項目にcharacter-set-server=utf8の一文を追記しました。
これを追記したらmysqlを再起動します。
statusで確認をしてみると…

# 略
Server characterset:    utf8
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
# 略

serverはutf8になったようなのですが、DBがlatin1のままでやっぱり2バイト文字が入りません。
なんでやー、とさらに調べてみたところ、どうやら最初にlatin1で作ったDBはそのまま引き継がれてしまうようです。
途中で変更する方法があるのかもしれませんが、テストデータしか入っていないので私はDBを削除して作りなおしました。

DB作り直してハッとしたのですが、カラムも全部消えちゃってるんですよね。
でもmigrateファイルあるしそのままmigrateしたらいけるのかな?と思い、テストがてらやってみたらちゃんとDBにカラムが反映されました。
おーすげー便利ー、ってちょっと一人で感動してました。

新規に作り直したDBはちゃんとcharactersetがutf8になっていて、2バイト文字もばっちり受け付けてくれました!
いやー、ちょっとした事でもわざわざこうやって設定しないといけないんですねー。
ビックリしました。

でも今回はいい勉強になった!
備忘録して残しておきます。

参考サイト

qiita.com

qiita.com

はー、マジくそ

mysqlの設定でマジでどはまりした。
何度も怒り爆発してマウス投げそうになった。
でも絶対に私は諦めない!!
そして絶対に許さないmysql
私はお前が嫌いだ。

mysqlの最新版をインストールしたのですが、何だか認証方式が変わったとかなんとかで、railsサーバーを起動しようとするとエラーを吐きました。
原因は定かではないのですが、右も左も分からないSQL文と格闘して新規アカウント作ってみたり、
そのアカウントに権限を付与しようと思って色々試したけど、何故か失敗するし、 散々でした。
エラーログをコピペしておいたテキストを間違えて消してしまったので貼れないのがツライ。

んで、怒った私はmysqlを一つ前のバージョンに戻してみました。
これでダメだなら寝ようと思って、railsサーバーを起動してみると、 今までとは違うエラーで、”こんなデータベースないよ”的なエラーに変わりました。
configの中にあるdatabase.ymlを開くと、下記のような記述があります。

# 略
development:
  <<: *default
  database:"プロジェクト名"_development

プロジェクト名の部分はrails newコマンドで作成した時の名前です。
どうやらこれがないよと嘆いてるようでした。
mysqlに入って同名のDBを作成してみると、無事railsのウェルカムページが表示されました!

このymlファイルは自動で生成してくれるんですが、これに付随するDBをどう操作してるのかまでは謎ですね。
sqlite3の時はnewコマンドの時に一緒に作ってくれていたんですかね?
それとも、予め用意してあったのかな。
エラー出ちゃったからおかしくなったけど、本来はちゃんとmysqlでもDBを作成してくれるんだろうか。
この辺は要検証かな。

パっとしないまま解決しちゃったけど、あまりこうゆうの身にならないから嫌なんだよなぁ。
mysqlとはなんぞやってのはもう少し調べておいた方が良さそう。

とりあえず前進した。
てかブログなら割とすぐ出来ちゃいそうな気がする。
頑張ろう。

【はじめてのウェブアプリ】いきなり躓いた^q^

さて、ブログ開発計画ですが、railsでプロジェクトを作成し、
ブログ王に俺はなる!(ドンッ (違
と、大海原を小さな船で出発したルフィの如く、やる気に満ちていたのですが、DBで躓きました。

railsはデフォルトでsqlite3がDBとして使われているのですが、やっぱり本番環境にするならmysqlとかがいいよね。
と、素人のクセに通ぶってmysqlなんぞにしたのが運の尽きだったのかもしれません。
gemでインストールすればええんやろ、と、bundle installをし、無事rails側にはインスールが出来ました。

ですがこれ、OS側にも必要なんですかね?
これだけだと動かないっぽいのですが…
私は一体gemで何をインストールしたのでしょうか?
sqlite3ってOS側にいれてないけど動いてるじゃないですか?
それと同じじゃないの?
msqlはちょっと違うの?

さて、さっそく私の船は"msql島"へと迷いこんでしまったようです...
てことで、msqlを勉強する。
ヤレヤレだぜ。

よし、そろそろブログ作る

まだまだ分からない事だらけだし、デザイン全然出来ないけどブログ作ってみようと思う。
基本的な事は大体理解出来てると思うから、その辺の知識の確認も含めて挑戦してみよう。
たぶんデプロイするのが一番キツイと思う。
でもgit使って管理しておけば、サーバー側で環境さえ整えれば簡単に実装出来るはず。
まぁこの辺もやって苦しめばいい勉強になるでしょう。

とにかくしょぼくても、まずは公開するのを目標に頑張ろう。
ドメインの設定とか出来るかなー。
まぁ何とかなるか。

今月中に完成出来たらいいなー。
なんかすっかりrubyばかりになってしまったなぁ…
ブログタイトル変えようかな。