20210612 今日のプログラミング修行

昨日運動したから早く起きた。

茶店もまだ空いてないので、家でやる。

ちょっと鍵盤で遊んで練習してから、Next.jsの続き。

移していく中、ちょこちょこわからないとこがあるのでメモ

content={`https://og-image.now.sh/${encodeURI(
siteTitle
)}.png?theme=light&md=0&fontSize=75px&images=https%3A%2F%2Fassets.zeit.co%2Fimage%2Fupload%2Ffront%2Fassets%2Fdesign%2Fnextjs-black-logo.svg`}

なんかどっかから画像をとってきているのはわかる。

 

<meta name="og:title"

OGPを設定しよう!SNSでシェアされやすい設定方法とは?

 

 <meta name="twitter:card" content="summary_large_image" />

Twitterでツイートした時にプレビューみたいなのを表示されるやつ。勝手にTwitterがやってくれてると思ってたけど違うねんな。

ツイートにページ情報を表示する「Twitterカード(Twitter Cards)」を設定してみた | 株式会社グランフェアズ

 

多少調べてみてもわからないタイポは無視してサンプルコードコピペすることにした。

長いコードで<div>が閉じられてないとか言われると、ちょっと面倒だしあまり得る物がない。

 

{' '}がなんの理由で使われているかわからなかったが、明示的なスペースらしい。

f:id:gnusei:20210612153339p:plain

こういう細かいのを調べて知るのは、ご褒美的にも楽しいんだけど、こういうのは飛ばして、まずは全体終わらした方がいいのかなとも考える。ただ、こういう山登りの道中を楽しむのって大事な気もするし、時と場合によって使い分けれたらよしとしよう。

 

チュートリアルでは読み飛ばすだけでいいと書いていたClassnameというライブラリ、ちょっとわかりにくかったので別の記事でなんとなくわかった。

[フロントエンド] React.jsのclassNameに、複数のクラスを簡単に指定する(Classnames利用) - YoheiM .NET

公式のGithubにあるマニュアルもチラッとみたけど、抽象思考が苦手なのかコードを読むのが下手なのかJavascriptの文法を知らないからか、あんまよくわかんなかった。

 

Macでのバックスラッシュの打ち方。

「option」キー + 「¥」キー

ググると、なんかごちゃごちゃした情報になるよな。状況とかで違うから仕方ないんだけど、なんかもっと未来は素敵な検索ができて、それに合わせてブログとかの内容も最適化されることを期待しよう。

 

夕方、また進めてチュートリアル5/7まで進んだ。

 

 

20210611 今日のプログラミング修行

Progateで久々Javascriptをやってみた。

最近ちょっとプログラミングが面倒という感じが少しあったので、ハードルを下げた練習を再開することにした。

 

framer motionでアニメーションを実装してみた。

簡単なものだったけど、外部ライブラリーをどうやって取り込むかの練習になった。

サンプルコードを見て、どのような仕組みか読み取ったり。

難しかったけど、面白かった。

 

Next.jsのチュートリアルの続きをする。

2周目だからか、わからないものを調べたり、概念を1回目よりも理解できている気がする。いい感じ。

 

exportってなんなんだろうと思ってたけど、調べてたらわかった。

他ファイルでimportするために必要な動作なんだな。

初歩的なことだけど、コードの不明点が少しでも減ると楽しい。

qiita.com

 

CSSのホバーでのアニメーションもちょっと触った。

weboook.blog22.fc2.com

20210531 今日のプログラミング修行

フロントとバックエンドをどう繋げるのかがいいのかを考えるだけども大変なのに、他人にサイトを更新してもらうことを考えると、CMSも選ばないといけない。

ブラウザのタブがどんどん増えていく。前よりバサッと消すようにはなったけども。

 

◆調べ物の適当なメモ

 

Headless CMSというのを知った。

代表的なHeadless CMS10選|メリット4つとデメリット3つをご紹介 | TECH+

 

サーバー周りをどうしたらいいのかと色々情報を調べていると、サーバーレスという単語も出てきて面白すぎる。意味わかんねえ。

 

作りたいイメージに一番近い記事を発見した。

qiita.com

 

Prismaはデータベースを触るのに便利そう。

www.prisma.io

 

WordPressだと自分でサーバーとか用意しないといけないけど、こういうサービスを使えばそこら辺がだいぶんと簡単になりそう。今っぽいな、なんとなく。

 

とりあえず、Next.jsのチュートリアルを進めるのが次の目標。その次はreactの公式以外のチュートリアル

 

目標は自分のポートフォリオサイトの作成。

 

◆Next.js

qiita.com

昨日に引き続きNext.jsのチュートリアル

3章の途中までいった。

CSSをNext.jsで使う方法をやってるんだけど、今まで仕事でCSS書いたことがないので、Next.jsのCSSの書き方のメリットはわからない。

とりあえずやっていこう。

 

 

 

20210530 今日のプログラミング修行

Railsガイドの続き。もうすぐ終わり

 

マイグレーションを実行してstatusカラムを追加した後で、Articleモデルに以下を追加します。”

さらっと書いているんだけど、やり方書いてなくてちょっと笑う。(しばらくしたら出てきた。これ完全トラップじゃん…)

検索で出てきたやり方でやってみる。

qiita.com

 

データベースクライアントというものに入ると、モデルの内容などを詳しく見れるみたい。

rails dbconsoleで入れる。

 

エラーは出ないけど、尋常に遅くなったんだが、なんか間違ってコード書いてそう。

f:id:gnusei:20210530083536p:plain

 

久々コワーキングスペースに来た。

とりあえずエラーを解決しよう。

DBのマイグレーション関係ではないかと考えた。

 

追加したカラムを削除しようとしたら、なんかエラーが出たので、

rails db:resetでリセットして再びマイグレーション。できた。

もう一度カラムをセットしてもいいけど、もう一回リセットして、マイグレーションファイルを直接いじった方がスッキリする?

 

サーバーがおかしくなったままだったので、zshのタブを消して再起動しようとすると、すでにサーバーは立ち上がってると。

起動プロセスの確認と、停止するためのコマンドを調べた。

 

①ポート番号を指定してチェック lsof -wni tcp:3000(lsof -i:3000でもいけるみたい)

②検索して出てきたプロセスを -9オプションで強制終了 kill -9 <プロセス番号>

再起動したが、記事数をカウントするクラスがおかしいのか、変だ。

無限ループになっているからか、なんだかMacbookAirがほんのり熱くなってきた。

とりあえず、サーバーを殺して、無限ループになってる部分を削除。

コードの仕組みがわかっていればもう少し探すのもありだけど、ググっても出てこないので今は深追い不必要と判断。

 

BASICユーザー認証のところは薄かったのですんなり終わった。

 

やっとRailsガイドを一周できた。

思ったよりたくさんのエラーにぶつかったな。

時間はあるので、すんなりいくよりは後々よかったかもしれない。

 

さて、次何をやろうかもう一度整理しよう。

 

qiita.com

 

何と組み合わせていくかってのが、どれがいいかわからんのよな〜

なぜかNode.jsのサーバーをExpressで立ち上げるチュートリアル的なのをやっていた。

その中で、今絶対知る必要のない、WebAPIモックサーバーというのを知った。

qiita.com

とりあえず立ち上げて、ローカルファイルの読み込みまでできたし、他のことをしてみようか。

 

色々調べていたが、ホスティングとかのことを考えるとさらにややこい。

RailsチュートリアルではHeroku使ってるし、そこら辺やりたいならRailsチュートリアルするのが良いかな。

 

Next.jsとGatsbyの比較に関していい記事があった。

ターミナルと JavaScript を少し触れるデザイナーの方等が「ポスト WordPress 」として使うのであれば Gatsby の方をおすすめします。

gotohayato.com

 とりあえずNext.jsのチュートリアルやってみよう。やったら、そろそろ実際に何か作らないと収まりがつかなくなってきそうな気がしてきた。他人に見せれるものをそろそろ作りたい。

qiita.com

20210527 今日のプログラミング修行

Railsガイドを初めからやる。

そういやRails Girlsっていうチュートリアルがあったのを思い出した。

Djangoの時にDjango Girlsってのにお世話になったから、ちょっとどんな感じか見てみよう。

 

進めていると、rails generateができなくなったので、調べるとこんな記事が

dara-blog.com

記事にある通り、Springをストップしたらいけた。

 

これは一回目もそうだったけど、Rubyのコンソールから一つ目の記事を作った後にページを更新するとMigration pendingっていうエラーが出る。

マイグレートをもう一回するといけるんだけど、理由がよくわからん。

 

routesでresourcesを使って、rails routesをチェックしようとすると、ワーニングが出て、検索してもわからんし、あとarticle以外のルーティングについてもめちゃ出てくる。謎。

無視して進めることができるか、詰まるまで試してみよう。

.rbenv/versions/2.7.3/lib/ruby/2.7.0/x86_64-darwin20/stringio.bundle: warning: already initialized constant StringIO::VERSION

 

フォームビルダーを使ってコードが展開される時に、hidden属性のinputがいくつかあって、何かよくわからんので調べたらこんな感じらしい。

<input type="hidden">を使う目的は、ユーザーは知る必要がないけど、サーバーには送りたい情報を格納する

 

Railsガイドを読んで解説を試みているqiitaの記事があった。

仮想友達みたいでちょっと心強い。

qiita.com

 

2つ目のモデルを作ろうとしたらSpringが邪魔してきたので、ググった記事を参考にしたらSpringがないとエラーが出たので、下の記事を読んで、binn/railsのファイルからspringに関する行をコメントアウトした。

qiita.com

 

とりあえず、前謎に詰まって今回やり直すことになった7のコメントモデルを作るところまではいけた。一安心。

 

明日以降は残りの部分を終わらせる。

これ終わった後の、勉強のロードマップをしっかり考える必要がそろそろ出てきた。

railsガイド、2回目は気になる部分を深追いしすぎないくらいにちょっとずつ調べながらなので、一回目のただ写しているだけの時よりは大変だが楽しい。

 

20210526 今日のプログラミング修行

 

gem nokogiriのせいでrailsサーバーが立ち上がらない問題に再チャレンジ。

これを乗り切ったら再びチュートリアルに戻れるのだが、なかなか。

 

https://qiita.com/java74717470/items/40678916e5f386e3866e

gemfileに下記の行を追加。bundleインストールで変わるのか

 

gem 'nokogiri', '~>1.11.6'

 

bundle installでエラーが出たので、エラーの言う通りにbundle updateしたらバージョンが1.11.6に5からアップされたが、サーバーは立ち上がらず。

謎。

 

 

 

違う記事を見て、Rubyのインストールし直しを試みる。

https://qiita.com/a_ishidaaa/items/8cc14453289dba1413dd

 

BUILD FAILED (macOS 11.2.3 using ruby-build 20210510)

 

検索すると、同じような問題に出会う人が多いみたいで、対処方法が載っていた。

RUBY_CFLAGS=-DUSE_FFI_CLOSURE_ALLOC

これを頭につけてbrent installすると。

今やっているがどうだろう。

ちなみに、上のコマンドの意味を知りたくてググったけど0件表示。なんでだ。

検索方法を変えると出てきた。

ビルドの処理を制御するための、特別な環境変数

らしい。

 

他の人はできているみたいだが、僕は同じエラーが出た。

なんだよ…

 

ちなみに僕のMacmacOS 11.2.3。

 

2.6.7が入れれないので、2.7.3ならどうかと試してみる。

成功しても、チュートリアル系は確か2.6系なのでまた別のところで問題が起きる可能性が高そうだからもしうまくいったとしても嬉しくはないんだけれどな。

 

 

f:id:gnusei:20210526232434p:plain

error: implicit declaration of function 'ffi_prep_closure' on M1 macOS Big Sur · Issue #869 · ffi/ffi · GitHub

 

なんかこんなことを言っている人がいるな。M1 Macをウキウキして買ったが、こういう問題もあるのと知ったのはなかなか面白い。

 

RVMという単語が出てきたので、rbenvとの違いを検索してみると下記のような説明があった。

f:id:gnusei:20210526232816p:plain

RVMを使う選択肢は今の所考えなくて良さそう。

 

やっぱりビルド失敗

ログを見にいったが、量が膨大。

なんかこんなことを言っているのがあったけど、関係あるのか

ld: warning: directory not found for option '-L/Users/kazumayasui/.rbenv/versions/2.7.3/lib'

 

なんかログの場所をよくみると、2.6.7のインストール失敗の時のログで、

コマンドラインを見直すと2.7.3はインストール成功していた。

 

素人考えだけど、2.6.7をインストールしようとしているのに2.7.3のフォルダが必要になっていたからうまくいかなくて、2.7.3ではできたんじゃないかな。

よし、とりあえず2.7.3を使ってrails newしてみるか。

 

参考にしてるqiitaの記事にrbenv rehashというコマンドがあったので調べると、とてもわかりやすい記事。ふわっと理解できた。

www.mogulla3.tech

 

Rails newしてサーバーを立ち上げたが、また同じエラー…

見ていると、なんかRuby2.6.0のフォルダを見にいっているみたいなんだけど、rbenvで2.7.3をインストールしているはずだから、おかしいよねなんか。

 

railsがどこを見に行くのか、仕組みをもう少し調べたら解決しなくも無さそう。な気もする。

 

gem install railsをしたら、rails newができるようになったが、rails serverはやっぱり同じようにだめ。

 

railsアプリ内の.ruby-versionの中身を、2.7.3に書き換えてみた。

これでBundle installをやってみる

できたので、Rails serverをすると、こんなエラーが

 

Warning: the running version of Bundler (2.2.17) is older than the version that created the lockfile (2.2.18). We suggest you to upgrade to the version that created the lockfile by running `gem install bundler:2.2.18`.

Your Ruby version is 2.6.3, but your Gemfile specified 2.7.3

 

なんでインストールされていないversion2.6.3が指定されているのだ。一回再起動でもしてみようか。

rails newについてもう一度調べる。

 

とりあえず再起動して、which gemをしたら、rbenvのものを使っていることがわかった。

もう一度rails new して、rails serverやったらいけた!ついに!!

Rubyrails、gem周りのややこしさがよくわかった。

20210522 今日のプログラミング修行

MacRailsガイドを初めからやり直そうとするが、環境を変にいじってしまっていたのか、railsサーバーが立ち上がらない。Gemの関係っぽい(nokogiri周辺)っぽいが、その他も問題ありそうで、色々1時間くらい格闘するがうまくいかず諦める。

 

Winでやればいいかと思い環境を構築するところからスタート。

sqliteのインストールがMacと違って自分でフォルダにファイル置いてPATHの設定やったりしないといけなくて面倒。

railsサーバーは立ち上がったが、generate controllerらへんの挙動がなんか変。

viewフォルダは作成されるのに、erbファイルが作成されなかったり。

チュートリアルのコマンドの頭に"ruby"をつけないといけなかったり、なかなかめんどい。

 

macクリーンインストールしたいが、homebrewとかNodeとかをもう一度入れ直したり、Garagebandの音源をまた入れ直したりするのが面倒。Docker使ったりなんとかできるようにしたい。