vagrant のゾンビを削除する

vagrant のゾンビを殺すコマンド

vagrant global-status --prune

global-statusしたときに表示されるすでに消している仮想マシン。

それちゃんとdestroyしましたか?

removeしただけじゃないですか?

原因は何にせよ、ちゃんとした手順で削除しなかった仮想マシンはglobal-statusで表示されます。

実在しない仮想マシンは--pruneオプションで消えます。

特に害はないけど見た目が嫌なのできれいにしましょう!

アニエラフェスタを終えて

あまり文章を書くのは得意ではないし、このブログは主に技術的なことの備忘録ブログなので読んでいる人のことはあまり考えずに自由に書く。

 

僕はアニエラのシステムを法人化する前から手伝っているんだけど(社長とは10年以上前からダンス関係で知り合っている)いつもアニエラのイベントにはお客さんとして参加していた。

去年は友人の結婚式と重なり参加できなかったアニエラフェスタだったけど、今年は事前に開催日も聞いていたし、予定はかなり前から抑えていたため参加しました。

ボランティアスタッフとしてフェスを支えて一緒に楽しみたい気持ちでいっぱいだった。なぜなら去年は参加すらできなかったから。

どんな仕事でも全力でこなす気持ちでいっぱいで前日の設営から参加しました。

 

話は変わるけど、去年から飲み友達になった世界的なフルーティストの友達がいるんだけど、最近彼のコンサートや仕事現場に遊びに行っていることが多く、なぜかマネージャー的な存在になっている。

色んなサービス作りたいねって話をしているうちにクラシック音楽の現場に興味を持ち始め、気付いたら彼のフルート合宿に9日間ほど参加していた。(もちろん遊びに行くという事で)

ギャラリーサイトを作成して、様子を少しアップしつつ自分の本業やっていようと言う気持ちだったけど、様々なトラブル等がありレッスンスケジュールから全体スケジュール、ホテル側との調整から旅行代理店との調整まで行って、僕が帰った後も続いていた合宿を遠隔でサポートするまでしていた。

凝らずにSEOも何もしていないから(別にSEO対策して集客するようなものじゃないし)細かいところとか見られると恥ずかしいからやめてほしい。

 

www.seiyaueno-fluteacademy.com

 

勉強も兼ねてPythoneでフレームワークはDjangoを使ってサーバはHerokuを使ってみた。

(折角だから技術的なことも少しね…w)

 

合宿の参加者から講師にまで気を遣う今までに味わったことのない日々は僕を成長させてくれた。

本当にほぼ毎日一緒にbarで飲んでいる友達の合宿に行って刺激しかなかったし新しい世界が見れて楽しかった。

 

話は戻ってアニエラフェスタ。

普段はプログラミングしかしていないので、力仕事なんて慣れていなく、終わってから体を見るとたくさんの痣があって、戦いの勲章を得た気持ちになっているけど、実際かなりキツかった。

準備は大変なのは分かっていたけど、力仕事がここまでキツイのは(自分の体がついていかなかったのは)正直予想外でした。

握力がなくなり大好きなプログラミングが出来なくなるんじゃないかと思うくらい、思考回路も精神もやられていた。

思った以上に貧弱な自分に絶望。

 

アニエラフェスタ当日はフェスを楽しむ気持ちでいっぱいだったし、少しでもみんなの役に立てればと言う気持ちでいっぱいだった。

僕はファントムステージ担当で見回り等をやるのだと思っていたが、前日にアーティストのアテンドを任された。

始まってみると、小さな仕事がたくさん舞い込んできて、優先度を付けずつこなしていたつもりだったが、全体のスケジュールを把握していない僕は選択を誤っていた。

また、楽屋の仕事を全て把握できておらず迷惑かけてしまって反省点が多すぎる。

今思い返すと、あのタスクは他の人に任せられたし、優先度はこちらの方が高かったと言うことが多かった。

確認を怠った自分が悪い。前日に聞かされていたので、その時点で想定して全体の流れを把握するべきだったのだろうし、当日のアジャストも甘かった。

また、他のスタッフの方の作業も把握できておらず、事前のコミュニケーションもちゃんと取れていなかったので、タスクを上手く振れなかったような気がする。

僕はどこの責任者でもないので誰かに何か仕事を振るとかいう言い方は良くないけど、お願いできることはできたので、そういう意味で全然自分の負担を減らせなかったのは僕の落ち度だし、キャパオーバーなタスクを抱えたのも落ち度だと思っている。

 

個人的な大きな反省はこんな感じです。

 

ファントムステージ担当だったけど、楽屋でのタスクも多く、ファントムでの仕事が十分にできなかったことは本当に元気さんには申し訳ないと思っています。

ファントムステージを担当・助けてくれた方々本当にありがとうございます。

また楽屋での仕事も中途半端な部分が出てしまい、りえさんにもアーティストさんにも迷惑をかけてしまい申し訳ありませんでした。

 

余裕がなく気遣いできなかった自分に罰ポイントを与えます。

 

ただ星矢くんのフルート合宿に参加して学んだことは多かったし、今回アニエラフェスタでそれが活かされていたと思うので良かったと思う。

 

ジャンルは違えど世界的なアーティストと毎日飲み語らい、一緒に仕事をしている経験は間違いなくこういう場所で発揮されるものだと確信できた。

 

フェス自体はお客さんもアーティストもスタッフも楽しそうでSNSの反応を見ても大成功と言ってもいいのではないかと思えるもので、本当に1年間準備してきたアニエラ運営陣の方々には尊敬の感情しかありません。

こんな素晴らしいフェスを開くまでに様々な思いをしてきたのだろうけど、当日のこの感動で全てが収まるのではないでしょうか。

 

システム担当していますので、全国からお客様が来てくださっていることは分かっていましたが、分かっていたからこそ味わえた感動もあり来年はちゃんとサイトも作り込んで、アニエラフェスタがみんなに知ってくれるものになってほしいと感じました。

 

そもそもこの記事を書くきっかけになった記事がこちらなのですが、自由ということについて最近自分が感じていることを少し書こうと思う。

 

http://‪http://naisinformation.com/archives/1300‬

 

めちゃくちゃいい記事なのでまず読んでから続き読んでください。

 

先程話していたフルーティストの友人が言っていたことなのですが、

クラシック音楽には様々なルールがあり、いえーいとか言いながら聴く人はまずいません。

ただそれは今だからそういう文化であって、バロック音楽はもっと今のロックに近いような(言い過ぎかもしれない)ノリで聴いていることもあったようです。

だからこそ未就学児だってクラシックを楽しんでいいし、そういう場所を作りたし、聞く側はもっと自由に音楽を楽しむべきだと。

 

どこかでルールが出来て自由に楽しめなくなって来ている今のご時世ですが、アニエラフェスタを自由に楽しめると言って頂けて、楽しんでいただけて本当に嬉しく思います。

有料エリアの端の方でお子さんが鬼ごっこしていたりバドミントンしていたり、普通の公園の風景とアニソンフェスが混ざった光景はきっと忘れることのない映像だと思う。

 

僕自身いろんなフェスに行っていたけど、小規模なフェスだからこそ楽しいものもあると思っている。

こういうフェスを守りつつ成長させていけたらいいなと感じました。

 

アニエラフェスタを通して僕もたくさん勉強させてもらえたし、来年はもっと役に立てるように精進します。

 

その前にアニエラのシステムもっと良いもにします。ご迷惑かけている社員の方、お客様申し訳ありません。

 

回数を重ねるごとにもしかしたらアニエラフェスタにも何かしらの制限がうまれるかもしれない。

お客さんの数が増えるほど、トラブルが生まれる確率も上がるので、お客さんがみんな素敵な人ということもなくなってきてしまうかもしれません。

そんな時にボランティアスタッフを始め、お客さん同士でトラブルを未然に防いで安全で楽しいフェスにできるようになっていければいいなぁとそんな綺麗事のような事を思う次第です。

 

いろんなイベントでたくさんの良くない噂を聞きます。

地方のフェスでも同様です。悲しい噂が絶えません。

どうかアニエラフェスタが長い間みなさんに愛されるフェスであることを願います。

 

そのひとつとして僕ももっとアニエラをシステムで支えて行って、アニエラ主催のイベントではスタッフとして力を発揮できたらなと思います。

 

僕は僕らしく、やれることをやります。

 

皆さまお疲れ様でした。

ありがとう。

感謝と尊敬を。

Herokuのアプリ名変更

heroku createで名前つけなかったときとか勝手に命名される。

あとから変えられるし困っていないから特に名前していない僕です。

名前は以下のコマンドで変更できる。

ディレクトリの外からだと別の方法あるけど、特にそんなことはしないので、メモはしません。

heroku apps:rename newname

gitも勝手に新しい名前に変わるので、このコマンドだけでいい。

名前の変更がめんどくさくないから、最初にめんどくさがって名前つけないです。決まっていないこともあるので。

多分Herokuのダッシュボードからでもできるんじゃないかな。

Heroku無停止(スリープさせない・阻止)処理

無料枠でHeroku使っていると30分で停止するので、それを阻止する方法

不要なものもあるのでdef awake():以下を追加でimportは適当なものを

wsgi.py

import os

from botocore.exceptions import ClientError
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise

import threading
import requests
import time

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings.local")
application = get_wsgi_application()
application = DjangoWhiteNoise(application)


def awake():
    while True:
        try:
            requests.get("https://appname.herokuapp.com/")
        except ClientError as e:
            print(e)
        time.sleep(300)


t = threading.Thread(target=awake)
t.start()

これで5分ごとアクセスするようになる。

5分って感覚狭すぎなので、10分とか20分でいいと思う。

Django static, mediaをs3へ

herokuでデプロイするとmediaが消えるので、s3を使うことにした

staticも同様に移した

s3の設定からDjangoの設定まで

torina.top

settingsを分けた

qiita.com

STATIC_URLとかはbaseで設定したのをproductionで上書きするようにした

herokuはダッシュボードのsettings>Config Variablesで環境変数設定した

collectstaticができない

STATICFILES_DIRSの設定を消した

whitenoiseの設定とかstaticfilesの設定はローカルでは関係ないのかな

懸念

デザイン変えたりすると毎回今までの消してからcollectstaticしないといけないのかな?

Django Herokuでcss読まれない

ローカルではcss(staticファイル)読めているのに、デプロイ先(Heroku)では読み込まれない

settings.pyにこんな感じに記述しているのにだめ

# Static asset configuration
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = 'staticfiles'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

解決方法

僕はこの方法で解決した

whitenoiseのインストール

pip install whitenoise

wsgi.pyの変更 一番最後に(importは適当な位置に)

from whitenoise.django import DjangoWhiteNoise

application = DjangoWhiteNoise(application)

Djangoのバージョン

Django==2.0.7

Go言語はじめる

今回は初期の勉強のためだったのでyumでインストールした。

yum install golang

インストール終わったらバージョンの確認

go version

最新はwgetでダウンロードしてパスの設定とかしないといけないみたい

参照 thoames.hatenadiary.jp

Hello, World!

なんか久々にHello, World!書いた気がする

ミニマムで

package main

import "fmt"

func main() {
  fmt.Println("Hello, World!")
}

とりあえずrunして動作確認OK

go run hello.go

参照 ビルド・実行する - はじめてのGo言語

Slackのbot作ったりしたいだけなんだけどdockerのパッケージ込みのテンプレート探して勉強していこうかな

PHPで複数カラムのソートが出来るarray_multisortが便利すぎる

SQLのORDER BYだけじゃ対応しきれないソートについて悩んでいたところarray_multisortを見つけたのでメモしておきます。

SELECTの結果が以下とする。

$array = [
    0 => [
       'hoge' => 'apple',
       'foo'  => 3
    ],
    1 => [
       'hoge' => 'pineapple',
       'foo'  => 1
    ],
    2 => [
       'hoge' => 'pen',
       'foo'  => 2
    ],
];

配列の中からソートしたい項目だけ別途配列として取り出して、array_multisort関数に当てる。 複数あったら複数順番に指定してあげれば良さそうです。

最後の引数に元の変数を指定すれば良いです。

$tmp_hoge_array = [];
$tmp_foo_array  = [];

foreach ( $array as $key => $row ) {
    $tmp_hoge_array[$key] = $row['hoge'];
    $tmp_foo_array[$key]  = $row['foo'];
}

array_multisort($tmp_hoge_array, SORT_ASC, SORT_STRING,
                $tmp_foo_array, SORT_DESC, SORT_NUMERIC,
                $array);
unset($tmp_hoge_array);
unset($tmp_foo_array);

結果

array(3) {
  [0] =>
  array(2) {
    'hoge' =>
    string(5) "apple"
    'foo' =>
    int(3)
  }
  [1] =>
  array(2) {
    'hoge' =>
    string(3) "pen"
    'foo' =>
    int(2)
  }
  [2] =>
  array(2) {
    'hoge' =>
    string(9) "pineapple"
    'foo' =>
    int(1)
  }
}
array_multisort($tmp_hoge_array, SORT_ASC, SORT_STRING, $array);

全部指定しなくてもいい。