CoffeeScript + RaspberryPiでRedisを使ってみる

mongoDB入れようと思ったらラズパイでインストールできるバージョン古すぎて使えなかったので
CoffeeScriptからRedisを使う覚書

環境

  • Server
    • Raspberry Pi Zero(Raspberry Pi 3に置き換え予定)
    • OS: Raspbian(debian系)
  • Client
    • G-GEAR(ゲーミングノート)
    • OS: Windows10 Home
  • CoffeeScript
    • v2.5.1
  • Node.js
    • v12.13.1
  • Yarn
    • v1.21.1

前提

  • CoffeeScript導入済み
  • Node.js導入済み
  • Yarn(or npm)導入済み
  • Raspberry PiとはSSH通信可能

Redisのインストール

インストール

まずはsudo apt updateでアップデート

その後にsudo apt install redis-serverでRedisをインストールします。

ps aux | grep redisでredisが動いているのを確認できます。

redis-cliで対話的に操作することもできます。
quitで終了できます。

外部からの接続を許可

sudo nano /etc/redis/redis.confでコンフィグファイルを開いて編集します。

1
2
- bind 127.0.0.1 ::1
+ # bind 127.0.0.1 ::1

また、パスワードも設定します。

1
2
- # requirepass ...
+ requirepass ...

sudo service redis-server restartで再起動します。

接続する

まずは接続のためにCoffeeScriptを書きます。
接続にはredisパッケージを使います。

yarn add redisでインストールします。

そして、redis.coffee(名前なんてどうでもいいですけど)を作って認証情報諸々書きます

1
2
3
4
5
6
7
8
9
10
11
12
redis = require 'redis'

config =
host: '192.168.x.x',
port: '6379',
password: 'xxxx'

client = redis.createClient config

client.on 'ready', (err) ->
console.log 'connected.'

hostにはラズパイのローカルIPアドレスを入れます。
passwordにはさっきファイルに書き込んだパスワードを入れます。

正常に接続できればconnected.と表示されるはずです。

おわり

結構簡単でびっくりしました。
まだセキュリティのかけらもないので、諸々やっていきたいと思います。

CoffeeScript書きやすいわ。いいね。

クソ今更だけどCoffeeScript入門してみた

コミュニティ死んでてマジで終わりそうなCoffeeScriptを書きます。
覚書がてら環境構築をしていく。

なぜ今更?

  • Pythonっぽかったから
  • JavaScript書くの飽きたから
  • 単純に面白そうだったから

やっていこう

前提

  • Node.jsがインストールされている
    • 今回のバージョンはv12.13.1
  • npmがインストールされている
    • 今回のバージョンはv6.12.1

CoffeeScriptのインストール

WindowsならコマンドプロンプトとかPowershell、その他ならTerminalで以下のコマンドを実行するだけ

npm install --global coffeescript

一発で入ってしまう。

ちなみにそのプロジェクトだけで使いたい場合は--global--save-devに読み替えてください。

coffee -vと打ってバージョン情報が出たらOK

出なかったらシェルを再起動してください。

やってみる

1
2
3
hello = "hello"

console.log hello

これでhelloができる(変数作る必要なかったろというツッコミはなしで)

これをindex.coffeeで保存、coffee index.coffeeで実行できます。

やってみる②

APIにリクエストして結果を得るやつやってみます。

1
2
3
4
5
6
7
8
cat_api = 'https://aws.random.cat/meow'

request.get {
uri: cat_api,
headers: {'Content-type': 'application/json'},
json: true
}, (err, req, data) ->
console.log data.file

明らかに書きやすい。

やってみる③

DiscordBot作成に使ってみた。

コマンドリストにprefixつけるやつ

1
2
3
4
5
command_list = ['cat', 'help']

command_list_withprefix = []
for i in command_list
command_list_withprefix.push prefix+i

Pythonみたいですごく書きやすい

// 追記 2020-03-13

1
command_list_withprefix = command_list.map (element) -> prefix+element

こっちのほうが賢そう

Botは弾くやつ

1
2
if message.author.bot and message.author is not client.user
return

これもPythonみたいな書き方ができるので、コードがとても読みやすい

(カッコとかカギカッコだらけだとやっぱり読みづらい)

開発モードをコマンドライン引数から判断する

1
devmode = if process.argv[2]? and process.argv[2] is 'true' then true else false

nullとかundefinedを?って書くだけで判断してくれる神仕様

開発モードと通常モードでトークンを分ける

1
2
3
4
token_dev = 'dev token here'
token_default = 'default token here'

token = if devmode then token_dev else token_default

こんな簡単に書けちゃうのか・・・・
最高すぎ

感想

ここまで使いやすい言語とは思わなかったです。
めちゃ使いやすかったので(正直今後の保証はないけど)これからはCoffeeScriptで書いてみようと思います。

また何かCoffeeScriptに関する知見があればここに書いていきます。

Lubuntu 19.10 LXQtでカバーを閉じるとWi-Fiが切断される問題

ノートPCにて、Lubuntu 19.10でカバーを閉じるとWi-Fiが勝手に切断される問題が発生したので解決法を共有します。

確認

  • 電源管理から、カバーが閉じても何も起こらない設定にする
  • /etc/systemd/logind.confHandleLidSwitchがignoreになっている
    • コレやってない場合はここを参考に設定

システムログを見る

私の場合は上記方法でも解決できなかったので、他の方法を模索しました。
まずはシステムログを見ます。

/var/log/dmesgを見ます。

すると、ログの中に

Started Load/Save RF Kill Switch Status.というログを見つけました。

どうやらRF Killというものが働いて問題が起こっているようです。

RF Killは消せない

これ、どういう仕組かは知りませんが、aptから削除しても作動します。
おそらくシステムの一部なのかな~と思います。

Linuxでwlanを使えるように頑張ってみた - Folioscope http://folioscope.hatenablog.jp/entry/2013/03/26/232921#

Raspbian Stretch Lite で突然無線LANに接続不能になったとき - 今日も微速転進 https://a244.hateblo.jp/entry/2017/12/28/024238

上記サイトでは、コレに関する解決法を掲載していました。
しかし私はこれでは治りませんでした。

物理的な原因だった

原因は、本体のワイヤレススイッチがONになっていたでした。

OFFならわかるけど、ONって・・・・

わかるわけないだろ!!!!!!!!!!!!!!!!!!!

と、いうわけで、どういうことかは知りませんが、あっさりと治ってしまいました。
コレのせいで2日潰れたけどね

lubuntu 19.10 LXQtにVNCで接続する

Lubuntu 19.10をインストールしたのですが、そこでVNCを使う際つまずいたので覚書。

いつもはtigervnc-standalone-serverというパッケージを利用しているのですが、LXQtに対応していないのかは知りませんがバグりまくって使い物にならなかったので、今回は別の手段でやっていきます。

X11VNC Serverを使う

まずはインストールです。

sudo apt install x11vncでx11vncをインストールします。
その後、x11vnc -storepasswdと入力するとpasswordを聞かれるので、好きなものを指定してください。

最後にx11vncと打って実行すると、vncサーバーが立ち上がります。

あとは簡単、他のPCからローカルIPを使って接続すればおkです。

ただ、terminal閉じるとサーバーも閉じちゃうので、screenとかで実行したほうがいいと思います。

Raspbianで起動時処理を簡単に実装する

私、めんどくさいのが大嫌いなので、超簡単に起動時処理を実装します。

ほとんどの記事ではlocal.rcで実装してたんですが、rootで実行されるのとうまくいかなかったので今回はcronで実装します。

raspi-configの設定

まずは、ネットが接続されるまで処理を待つ設定をします。

(これをしないと正常に動作しないときがあるみたい)

Image from Gyazo

sudo raspi-configを入力

Image from Gyazo

Boot Optionsを選択

Image from Gyazo

Wait for Network at Bootを選択

Image from Gyazo

はいを選択

Image from Gyazo

了解を選択

これでOK

crontabのログ設定

実行されているか確認するために、ログが残るよう設定しましょう。

sudo nano /etc/rsyslog.conf

でファイルを開き

#cron.* /var/log/cron.log

と書いてある行を見つけて、#を外します(コメントアウト)

cron.* /var/log/cron.log

あとはCtrl+Xを押して、保存するか聞かれるのでyを押す。
終わったらログの設定は完了です。

crontabの設定

crontabには@rebootという、起動時に処理されるトリガがあり、今回はこれを利用していきます。
raspbianには標準で備わっているので、利用していきましょう。

crontab -eで編集します。

初回はどのエディタを使うか確認されます。nanoでよければEnterを、他がよければ数字で選択してください。
(私はnano使いなのでそのままEnter)

そしたら、nanoが起動して編集可能になるので、一番下に@reboot [実行したいコマンド]を追記してください。
今回はVNCサーバーが起動時に立ち上がるようにしたかったので、@reboot vncserver -localhost noを追記しました。

そしたら保存して、crontab -lで今入力した内容があるかを確認してください。

再起動

再起動して実行されていればOK。

実行されていなかった場合

しっかりcrontabが動いているかはログで確認できます。

sudo cat /var/log/cron.logを確認して、エラーだったり、入力したコマンドがないようでしたら検索してみてください。

こんな感じで簡単に実装できました。やったぜ。

ウチのWifiが異様の遅いのでどうにかしてみる

私の家には3つのSSIDがあって

SSID 周波数
pr500m-*-3 5GHz
pr500m-*-1 2.4GHz
MyPlace_* 2.4GHz

という3つのWi-FiのSSIDがあります。

上のpr500mから始まる2つは、NTTから貸し出しされている「PR500MI」というルーター(ONUの機能も持っている)から出ているWi-Fiです。

下のMyPlaceは、Fonというルーター(ちょっと特殊なやつ)の電波です。
(まぁ今回はFonはあんまり関係ないです。)

そして、PR500MIの2.4GHzが異様に遅い。

記憶では、使い始めは結構早かったと思うんですよ。
でも異様に遅い。

速度を測定すると

Image from Gyazo

こんな感じ。

「家のネットが遅いんじゃないの?」とお思いのアナタ。

Image from Gyazo

5GHzはこんな感じ。

「流石に差がありすぎじゃない?」

と思ったので、なんとかしてみようと思います。

チャンネルの設定

Image from Gyazo

とりあえずチャンネルがこのように設定されているので、競合していないチャンネルを探します。

それに使用するのは、WiFi AnalyzerというWindowsアプリケーションです。

Image from Gyazo

現在はこのようになっています。

Image from Gyazo

現在はCH1ですが、これは他のWiFiと干渉しているようです。

Image from Gyazo

ですので、CH3に変更してみました。

さらに、pr500mには2というアクセスポイントもありますが、通常使用しないので無効にしてみます。

Image from Gyazo

結果、通信速度が2ケタになるようになりました。

これでまぁ実用的に使えるようになってしまったので、とりあえず大丈夫としましょう。

チャンネル変更、結構効果ありました。お試しあれ。

IRIAM使ってみて気づいたこと

IRIAMとは

VTuberが気軽に雑談配信できるプラットフォーム。
スマホ対応のみ。

運営会社はミライアカリプロジェクトなどを運営する株式会社ZIZAI(旧株式会社DUO)。

どうして使ったのか?

私の知り合いの絵師さんにジョウタって人がいるんですけど、なんとその人がVTuberの親になったそうで、その人の初配信を見るために入れました。

VTuberは三日月ルナちゃんって子。https://twitter.com/3kaduki_runa

クソ重い

マジで重い。

というか登録すらできませんでしたね、最初。

Image from Gyazo

5分くらいしたら登録できるようになったんですが、そこからもひどかった。

配信落ちまくり、音声途切れまくり、モーションデータがぷつぷつなのでライバーさんがガッタガタ。

う~ん、ひどい。

バグ多い

マジでバグが多い。

すぐエラー出るし、キャラが荒ぶることもあるし、何度タップしても反応しないときもある。

そして一番ひどかったバグが「課金したのにポイント入ってない」というバグ。

今まだ運営からの返事待ちなんですが、う~ん、ひどいね。

コンテンツ的にはとても良いものだと思います。

また、映像を配信せず、モーションデータと初回ロード時に立ち絵を送るという方法はなかなか良いと思いました。

ですが、荒削りな部分も多いです。とりあえずサーバー強化してください。重いだけならまぁマシなんですが、実用に耐えないレベルで重いです。

それから、バグをもう少しなくす努力をしてほしいです。

今後のアップデートに期待します。

はじめての海外でハワイにいったぞ

なんと私の高校は、修学旅行がハワイということでして、今回はじめて海外に行ってきたのでそのレポートをつらつらと書いていきたいと思います。

初めての海外

なにせ人生で海の外に出た経験が無いわけですから、海外に行くというのはとても貴重な体験だったわけです。
とりあえず海外に行くには必要なものがあります。そう、パスポート。

というわけで、大都会所沢にあるパスポートセンターみたいなところに行って申請してきました。
最近の(?)パスポートはICチップが入っているらしくハイテクですごかったです。

しかしパスポートは外装が革かなにかの素材でできていると思っていたのですが、普通に紙でした。濡れたら終わりやん。

他にも準備しなければならないものはたくさんあります。

パスポートケースとか大量のマスクとかマスクとか…………………………….

この時期(コロナウイルス)の海外渡航はマジで危険です。

旅行前の悲劇

足腫れた。なんか僕持病でめっちゃ免疫力低いんですけど、そのせいでvirus入ってめちゃ腫れました。
これが発覚したのが海外渡航前日です。オイ

特にどうしようもなかったので抗生物質食べてました。結果治ったけど

成田空港でかい

今まで羽田しか利用したことなかったんですが、マジででかかったです。

Image from Gyazo

アルファベットが上に書かれた結構よく見る景色が見れてよかったです。

この時に、「ここ、何台モニターあるんだろうね!」って友達に言ったら「知らない」って言われました。そりゃそうだ。

Image from Gyazo

展望デッキもあり、柵の間から飛行機を盗撮することができました。

一眼レフとかで撮影する人向けに、それっぽい穴がちゃんと作られてて、優しいなぁと思いました。

Image from Gyazo

↑中国行のほとんどの飛行機が欠航になっていた

セキュリティクソ怖い

なんかめっちゃ怖い人が怖い目つきしてこっち見とる。めっちゃ怖い。(いやそういうお仕事なのは知っているけども)

成田空港のセキュリティチェックはめちゃくちゃ優秀で、かばんの中に全てブチ込んでても全部機械が勝手に検査して、弾くやつは弾いてくれるみたいです。優秀すぎる。

ちなみに友達は小学校から7年間連れ添ったハサミ没収されてました。ウケる。

僕は抗生物質とか常備薬とか入ってたんですが、普通にスルーされてました。違法じゃなくてよかったです。

出国審査

出国審査、何があるんだろうと思ったら、パスポートスキャンして顔撮影されるだけでした。
今の時代は出国も無人なんですね。すげえ。

出国審査抜けた先で友達とマック食べてたんですけど、なんかそこに

Image from Gyazo

Dust MEって書いてあって面白かったです。

出国・離陸

いよいよ出国です。

ちなみに私が乗った飛行機はANAのやつでした。モロチンエコノミー

Image from Gyazo

間隔が狭く、これで6時間過ごすのか~と思いました。
しかもF席だったので真ん中です。ゴミカス

Image from Gyazo

一番に機内に入ったら、誰もいなくてすごかった

さて、その後無事に離陸しまして、1.5時間くらいしたら機内食が出てきました

Image from Gyazo

タンドリーチキンみたいなやつです。
エビアレルギーです!!!!って事前に言ったらこうなりました。

隣の人はとんかつみたいなの食べてたのでそっちのほうがよかったな~と思いました。

あと、ぶどうジュースがめちゃくちゃ濃くてびっくりしました。

Image from Gyazo

機内のモニターでは、飛行機からの景色がカメラで見えましたが、肝心の離陸・着陸シーンではカメラがOFFになってて悲しくなりました。そこ見せてよ。

ハワイに到達

ついに海外に来ました。全然実感がありませんでしたが、誘導のおっちゃんがめちゃ英語だったので「ここハワイだわ」となりました。

Image from Gyazo

はじめてハワイで見た景色です。
ハワイっぽい木がありました。

空港のスポットから到着口をつなぐバスの名前が「Wiki Wiki Shuttle」だったので、「Wikipediaの語源じゃん!!!!!」と一人で騒いでいました。

この木なんの木

Image from Gyazo

通称日立の木というらしいです。
この木なんの木という曲と共に、長年日立のコマーシャルで愛されている木です。

そして現在、この木たちを整備するための費用を日立が出資しているそうです。

とても良い関係ですね~。すばらしい

ホテル

プリンスワイキキというところに泊まりました(クソ高いとこです)

Image from Gyazo

テレビがでかい

ネットフリックス見れるやん!!と思ったら契約必須でした。なんでよ。

Image from Gyazo

夕飯です。
極端に甘いor極端にしょっぱいの味付けで、とてもアメリカっぽいと思いました。
そもそもアメリカをしらんけど

Image from Gyazo

ロビーです。
上に付け爪みたいなやつがたくさんあってすごかったです。

Image from Gyazo

これは帰りに撮影した外見

ちなみにこのホテルは日本の西武グループが所有しているらしいです。
だから西武ライオンズの選手がけっこう泊まってるらしいですよ(ライオンズファンのやつが言ってた)。

他行ったところ

田中オブ東京

とても日本的な(名前の)鉄板焼屋

Image from Gyazo

ワイキキビーチ

Image from Gyazo

青くてとても綺麗だった

おっさんが違法薬物吸っててすごかった(現地の大学生が「違法薬物だから近づくなよ~」って言ってた)。

なんちゃら水族館

Image from Gyazo

とくに見どころがなかった

ダイヤモンドヘッド

Image from Gyazo

Image from Gyazo

死ぬほどキツかったけどいい景色が見れたのでよかったです。

ポリネシアン文化センター

Image from Gyazo

なんかいろいろ展示されてました

体調崩した

そんなこんなで観光してたら、体調崩しました….orz

たぶん足腫れてるのに無理してダイヤモンドヘッド登ったり、慣れない食事を食べたり、推しのVTuberの配信をホノルル現地時間3時(日本時間22時)で見たりしたからだと思います。

朝飯にオレンジジュースを飲んだんですが、オレンジジュースすら吐いちゃって、熱出て、何も食えなくてヤバかったです。解熱剤飲んで寝たら数時間でなおったけど。

帰国

Image from Gyazo

ハワイ仕様の嵐ジェットがいてすごかった。

Image from Gyazo

情報を表示するモニターが死ぬほどダサかった。
やっぱり日本のデザインセンスはすげぇと思いましたね。

Image from Gyazo

お腹が空いたので、ワッパージュニアを食べましたが、このあとめちゃくちゃ機内食が出て死んでしまったので、皆様はお気をつけください。

Image from Gyazo

というわけでサイナラ。

感想・まとめ

というわけで初めての海外はこんな感じでした。

  • 飯でかい
  • 観光地もでかい
  • どこも陽気
  • いろいろ大雑把
  • スーパー(ウォルマートに行ったよ)の規模がエグい

こんな感じです。

「海外に行くと日本のありがたみがわかる」ということを聞いたのですが、たしかにそうでした。
日本清潔だし、飯うまいし、何より安心感が違う。(日本人だからネ)

海外の空港は日本よりバカでかくて進んでると思っていたのですが、ハワイ空港(ダニエル・K・イノウエ空港)は少なくとも、日本よりも遅れているなぁと感じました。

日本のほうが清潔だし、設備も新しいです。

設備といえば、最初に乗ったwiki wiki Shuttleは二台が連結したバスだったんですが、連結部分がマジで引きちぎれそうになってて、大雑把だなぁ~~と思いました。

これも設備なんですが、ハワイの帰りにセキュリティチェック受けたとき、日本のセキュリティチェックは機械が自動でやってたんですが、ハワイのやつは、機械でスキャンされたやつを職員が目視で判断しててクソ遅かったです。

しかも、張り紙に「Please remove all electrics lager than cell phone」みたいなことが書いてあって、これ、「スマホ(携帯?)よりでけぇ電子機器全部出せよ」っていう意味なんですが、PC持ってたのでめんどくさかったです。

とりあえずそのくらいだったかな。

自然が綺麗で、人も優しかったのでとても楽しかった。
ありがとうハワイ。

いつかはアメリカ本土に行きたいですね。

IPFSを使ってみる

IPFSって何?

インターネット上の情報も同様です。同一の内容であればどのサーバ上から取得したか?どの名前のファイルから取得したかなどという入手先はほとんどの場合で重要ではありません。そのためその情報の「場所」ではなく、「こういう内容の情報」というコンテンツの内容自体を直接指定して情報にアクセスする仕組みを考えることができます。これが「コンテンツ指向」になります。

引用: https://ipfs-book.decentralized-web.jp/what_is_ipfs/

要するに、トレントみたいに世界に大量のサーバー置いてウェブサイトとかアプリケーションとか公開しようぜ!って感じですかね。

→つまりIPFS入れてる人みんながサーバーになるということ

「セキュリティは?」って思うかもしれませんが、そこはハッシュ値で厳重に管理されているので改ざんの心配はなさそうです。

使ってみよう

Image from Gyazo

公式のGithubページから実行ファイルを落としましょう
ちなみにこの他にもLinuxようにtar, debなどのファイルがあります。

Image from Gyazo

インストールは全部日本語です。
基本次へでおk

Image from Gyazo

初期状態ではIPFSのファイルPINに入っていました。

Image from Gyazo

こんな感じで接続状態も確認できました。

Image from Gyazo

2分ほどでアクセスがここまで増えました。
大きいファイルをホストするとより多くの帯域を使いそうですが、今の所は許容範囲ですかね…

Image from Gyazo

残念ながら日本語対応はしてませんでした。

ウェブサイトを公開する

Image from Gyazo

こんな感じのカスみたいなサイトを作りました

Image from Gyazo

ローカルで表示するとこうです。
これを今から公開しましょう。

Image from Gyazo

さっきのクソサイトはこのtestフォルダに入っています。

ipfs add -r test/を実行しすると、フォルダ内部のすべてのファイルをアップロードします。

この際、前まで必要だったpinする動作が不要になっているようです。

Image from Gyazo

このように、勝手にpinされていました。

Image from Gyazo

右クリックしてリンクを取得しましょう

Image from Gyazo

ipfs.ioのドメインでホストされていることが確認できました。

独自ドメインを使ってみる

このクソサイトに独自ドメインを付けてみましょう。
今回はtest.m86.workを付けたいと思います。

ドメインの設定ですが、オススメはCloudFlareです。
理由はSSL通信ができるから。

ネームサーバーを変更していない人はCloudFlareに変更してもいいかも

Image from Gyazo

まずはCNAME。Nameに設定したいドメインを、Targetにはipfs.ioを指定。
SSL通信を利用したい人はProxiedにしておきましょう。

img
https://gyazo.com/0a6d0340d09e89e5df0cc561557f392d

次にTXTですが、こちらのipfs.io以下をコピーしてください。

Image from Gyazo

次にNameを好きなドメイン、Contantにdnslink=[さっきコピーしたやつ]を貼ります。

これで

Image from Gyazo

test.m86.workでクソサイトに接続できるようになりました。

SSLもやりましょう。

Image from Gyazo

といってもここをflexibleにするだけです。

まとめ

なんとなく使ってみましたが、普通に楽しかったです。
いろいろできそうなのでまたいじっていきたいと思ってます。