もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

The process "'composer ***" exceeded the timeout of 300 seconds. のエラー対応

はじめに

こんにちは。

珍しいエラーが出たので、備忘録です。

本題

以下のエラーが出ました。

The process "'composer ***" exceeded the timeout of 300 seconds.  

初めて出たのですがまぁタイムアウト的なエラーだと思いました。

実際に見に行くとたしかにありました。

getcomposer.org

対応策としては、以下

1. 環境変数 COMPOSER_PROCESS_TIMEOUT を設定する

以下のように実行することでタイムアウトを気にすることなく実行できます。

$ COMPOSER_PROCESS_TIMEOUT=0 composer xxx

2. "process-timeout": 0 を設定する

composer.json の config部分に以下を設定すると、タイムアウトを気にせず実行できます。

  "config": {
    "process-timeout": 0
  },

終わりに

かんたんな備忘録でしたが、以上です。

NuxtとGoではじめるWebアプリ開発を読んで勉強 vol.5(終)

はじめに

こんばんは。

前回の続きです。

kojirooooocks.hatenablog.com

今回は10, 11章をやりまして、今回ですべて終わりました。

本題

各バージョン

go

$ go version
go version go1.18 darwin/amd64

echo

$ go get github.com/labstack/echo/v4
go: added github.com/labstack/echo/v4 v4.7.2

nuxt

"nuxt": "^2.15.8"

成果

Image from Gyazo

所感

この章も前回同様バージョン違いによるコードのブレはなく終わりました。

api_keyとかを privateRuntimeConfig とかを使いましたが、それくらいです。

終わりに

なんとか今月中に出来ました。

全体的な感想としては、自分の知識がないため、golangもnuxtもどちらも謎なところが多かったですね...

本見ながらやって、まだわかってない部分とかもあるので、継続的にいろんな本読んで写経してたらまた変わりそうです。

次回はこちらの本を写経予定。

現場からは以上です。

おまけ

以下の本読んでいます。

ちょっと案件が忙しいので、第一章読んで時間立ってしまっているので、もっかい最初から読む予定です。

NuxtとGoではじめるWebアプリ開発を読んで勉強 vol.4

はじめに

こんばんは。

前回の続きです。

kojirooooocks.hatenablog.com

今回は9章メイン

本題

各バージョン

go

$ go version
go version go1.18 darwin/amd64

echo

$ go get github.com/labstack/echo/v4
go: added github.com/labstack/echo/v4 v4.7.2

nuxt

"nuxt": "^2.15.8"

とりあえず成果

Image from Gyazo

所感

9章はバージョンの違いがあっても問題なく本通りのコードで再現できました。

go, nuxtで本章で追加したライブラリもバージョン違いがありますが、同じもので問題なかったです!

goのmodelを作ったのですが、phpとかでなれていると、若干違和感があり戸惑いました。

package models

import "time"

type Favorite struct {
    ID        uint      `gorm:"primary_key"`
    UserId    uint      `json:"user_id"`
    VideoId   string    `json:"video_id"`
    CreatedAt time.Time `json:"-"`
    UpdatedAt time.Time `json:"-"`

    User User
}

終わりに

次は10, 11章です。 次で終わりそうです。

今月中にはいけそうかな?

現場からは以上です。

おまけ

以下の本読みはじめました。

まだ1章だけですが、サンプルコードがjavascriptなので、理解しやすく説明もわかりやすいです。

分厚い本なので時間かかりそうですが、頑張って読んでいきます。

NuxtとGoではじめるWebアプリ開発を読んで勉強 vol.3

はじめに

こんばんは。

前回の続きです。

kojirooooocks.hatenablog.com

今回は7章〜8章まで

本題

各バージョン

go

$ go version
go version go1.18 darwin/amd64

echo

$ go get github.com/labstack/echo/v4
go: added github.com/labstack/echo/v4 v4.7.2

nuxt

"nuxt": "^2.15.8"

とりあえず成果

Image from Gyazo

所感

今回は1点、farebase周りで本のままだとよろしくない箇所がありました。

本のままだと version8の状態での使用方法になっており、現在はversion9になっており本のままだと動きませんでした。

plugins/firebases.js

import { initializeApp } from 'firebase/app'
import { getAuth } from 'firebase/auth'

const firebaseApp = initializeApp({
  apiKey: 'xxxxxxx',
  authDomain: 'xxxxxxx.firebaseapp.com',
  projectId: 'xxxxxxx',
  storageBucket: 'xxxxxxx.appspot.com',
  messagingSenderId: 'zzzzzzzzzzzz',
  appId: 'yyyyyyyyyyyyyyyyy'
})

const auth = getAuth(firebaseApp)
export default auth

使用方法は以下のようになりました。

store/index.js

import { createUserWithEmailAndPassword, signInWithEmailAndPassword, signOut } from 'firebase/auth'
import auth from '~/plugins/firebases'

export const actions = {
  // signup
  async signUp ({ commit }, payload) {
    await createUserWithEmailAndPassword(auth, payload.email, payload.password)
      .then((userCredential) => {
        const user = userCredential.user
        const token = user.getIdToken()
        this.$cookies.set('jwt_token', token)
        commit('mutateToken', token)
        this.app.router.push('/')
      })
      .catch((error) => {
        console.log(error)
        alert('登録できませんでした。')
      })
  },

  // login
  async login ({ commit }, payload) {
    await signInWithEmailAndPassword(auth, payload.email, payload.password)
      .then((userCredential) => {
        const user = userCredential.user
        const token = user.getIdToken()
        this.$cookies.set('jwt_token', token)
        commit('mutateToken', token)
        this.app.router.push('/')
      })
      .catch((error) => {
        console.log(error)
        alert('ログインできませんでした。')
      })
  },

  // logout
  async logout ({ commit }) {
    await signOut(auth)
      .then(() => {
        commit('mutateToken', null)
        this.$cookies.remove('jwt_token')
        this.app.router.push('/login')
      })
      .catch((error) => {
        console.log(error)
        alert('ログアウトできませんでした。')
      })
  }
}

8章はmysqlのセットアップです。 一応やったのですが、できればfirestoreとかで保存してみたいものでs。

次回は9章からです。

現場からは以上です。

おまけ

以下の本読み終わりました。

最近お仕事でテストの議論をすることがありまして、それもあってか以下の部分が印象に残りました。

実装から距離をとってテストを書くことでテストの独立性を保つ

わざと実装言語と別言語でテストコードを書くことで、テストと実装の距離をとり結合度を弱めるというのはすごく良いと思いました。

次はこちらを見る予定です。

NuxtとGoではじめるWebアプリ開発を読んで勉強 vol.2

はじめに

こんばんは。

前回の続きです。

kojirooooocks.hatenablog.com

今回は4章の続きから6章終わりまで

本題

各バージョン

go

$ go version
go version go1.18 darwin/amd64

echo

$ go get github.com/labstack/echo/v4
go: added github.com/labstack/echo/v4 v4.7.2

nuxt

"nuxt": "^2.15.8"

とりあえず成果

Image from Gyazo

所感

6章までは go, nuxt含めとくに詰まるところはなかったです。

本のバージョンが最新とは違う問題も特に発生せずスムーズに行きました。

ただ1点、youtubeAPIでデータを取得する際に、 id,snippet という感じでデータを指定して取得するのですが、本では特に なんの問題もなく 取れる前提のコードで進んでいくのですが、僕が書いたものでは、 id,snippet と指定していても、 snippet があったりなかったりするデータがありました。

なので、本の通りにやると、snippet が取れない場合にエラーで落ちるという現象が発生しました。

v-if="Object.keys(item).indexOf('snippet') !== -1" とかで逃げられるのでそこまで問題はありませんでしたが、そこだけが現在のバージョンとの乖離かもしれません。

あ、あと最初は cssを tailwindを選んでて、css全くあたってなかったのですが、そろそろちゃんとしようと思って、ホント同様の bluma をあてましたw

後から変えたので、めんどくさかったですが、以下のような感じで当て終わりました。

コマンド

$ npm install bulma
$ npm install --save-dev sass sass-loader@10

// build時の警告を消すためにインストール
$ npm install --save-dev @nuxt/postcss8  

ファイル修正 (nuxt-config.js)

  buildModules: [
    '@nuxt/postcss8'  ← 追加
  ],

  css: [
    'bulma'  ← 追加
  ],

終わりに

という感じで、そこまでつまらず出来ました。

てゆか知らなかったんですが、vscodeってターミナル分割できるんですね。

f:id:kojirooooocks:20220402113729p:plain

phpstormとかも出来ないのかな?

やり方誰か知ってたら教えて下さい。

あと、 air って停止したら see you again~ って出るの可愛いですね。

次回は7章からです。

現場からは以上です。

おまけ

最近以下の本を読んでいます。

長期で運用されているサービスや業界後発サービスの辛いお話や負債の返却の仕方とかがインタビュー形式で進んでいくので面白いです。

2つ以上前のコミットに修正を混ぜる

はじめに

こんばんは。

久々に gitで rebase を使ったので、ちょっとした備忘録として残しておきます。

gitのバージョンは以下

$ git --version
git version 2.32.0

本番

今まで自分は rebase 使う際は 無駄なコミットをまとめる際に使ったりしていました。

$ git rebase -i HEAD~3

hint: Waiting for your editor to close the file... 
pick 8edxxxxxx aaaaa
s 2a8xxxxxx bbbbb
s 60cxxxxxx ccccc
s 532xxxxxx dddd

$ git push origin head -f 

みたいな感じで。

今回はコミット漏れした修正ファイルを以前のコミットに混ぜたいということやりたい感じでした。

直前のコミットであれば --amend で出来ます。

$ git commit -a --amend

ただ、今回は2つ前のコミットに混ぜたかったんです。。。

色々調べてこんな感じでできました。

# 修正物をまず退避
$ git stash save

# reabseインタラクションモード実行
$ git rebase -i HEAD~3

hint: Waiting for your editor to close the file... 
pick 8edxxxxxx aaaaa
edit 2a8xxxxxx bbbbb   ← 二個目のコミットを edit にする
pick 60cxxxxxx ccccc
pick 532xxxxxx dddd

# 修正物をもってくる
$ git stash pop 

# 修正物をコミット(amendが必要)
$ git commit -a --amend

# コミットを反映
$ git rebase --continue

上記のコマンドの順番で狙ったコミットに修正物を混ぜることが出来ました。

終わり

rebase 便利ですね。

ぶっちゃけ変になったら git rebase --abort で全部巻き戻せばいいので。

そろそろ今年の目標の資格の勉強しようっと。

現場からは以上です。

NuxtとGoではじめるWebアプリ開発を読んで勉強 vol.1

はじめに

こんばんは。

今回はこの本を読み始めました。

なんとなんと2019年12月の本です。

出てすぐ買ったので、まる2年寝かした本です。 発酵しています。

GoもNuxtも興味あるので、早速やっていきます。

今回は1〜4章まで

4章はGo部分のみやっています。 環境構築にかなりつまずいたので...

本題

各バージョン

とりあえず、本で紹介されている各ツールのバージョンは軒並み古いですので、全部最新版でやっていきます。

go

$ go version
go version go1.18 darwin/amd64

echo

$ go get github.com/labstack/echo/v4
go: added github.com/labstack/echo/v4 v4.7.2

nuxt

"nuxt": "^2.15.8"

dep

本で紹介されている dep は使っておらず gomod を使っています。

(入れるの大変だったから代替品ないかなと調べてたらすでに古いということだったので...)

www.threenext.com

realize

こちらも本で紹介されている realize は使わず air を使いました。

(こちらも同じく入れるの大変だったので調べたら、以下同文)

qiita.com

実行してみる

$ go run server.go 

   ____    __
  / __/___/ /  ___
 / _// __/ _ \/ _ \
/___/\__/_//_/\___/ v4.7.2
High performance, minimalist Go web framework
https://echo.labstack.com
____________________________________O/_______
                                    O\
⇨ http server started on [::]:8080

f:id:kojirooooocks:20220324002516p:plain

おけです。

echoフレームワークのメジャーバージョンやGoのバージョンもだいぶ上がっていたので、全く動かないかなと心配していましたが、Goのコードに関してはほぼ問題なく動きました。

1点、 google.golang.org/api/youtube/v3 で取得するデータを指定するところで本では

call := yts.Videos.List("id,snippet").Chart("mostPopular").MaxResults(3)

と記載されていたのですが、これではエラーになりました。 解決策としては配列で指定すれば良いみたいでした。

call := yts.Videos.List([]string{"id", "snippet"}).Chart("mostPopular").MaxResults(3)

仮にidのみ指定すると以下みたいな感じで取れます。

[
  {
    "id": "jjXZJZ4F8Ak",
    "kind": "youtube#video"
  },
  {
    "id": "r8Eypb1xYPM",
    "kind": "youtube#video"
  },
  {
    "id": "p0vxVY2HMEs",
    "kind": "youtube#video"
  }
]

終わりに

go久々にやってみましたが、全くわかりませんね。 それ以上に nuxtもですが。。。

次はnuxtの部分からやっていきます。