一身上の都合

プログラミングとかの話

閑話:猫のご飯

猫のご飯を変えてみた。

ニュートロ ナチュラルチョイス

成分表示を見るに、生白身魚が一番多く含まれているタイプの総合栄養食。
後述するサイトで多数のキャットフードを獣医の方が分析しており、その中でも上位なのでよほど大丈夫だろう。 軽く調べたが他サイトでも特に悪い評判は見なかった。

今までロイヤルカナンだったのだが、知人から「おすすめの猫の餌ってある?」と聞かれたのを切っ掛けに調べなおしてみたところ、 そこまで優れているというわけでもなさそうだったので変えてみた次第。

比較

試しにニュートロとロイヤルカナンを並べて置いてみたところ、ニュートロに食いついた。 動画は録画ボタンが押せておらず撮れなかった。

参考にさせて頂いた記事

my-best.com

メカニカルキーボードを使い始めた

購入したもの

英字配列の61サイズなので最小限のキーだけで、 Insert あたりは Fn あたりと組み合わせて入力するタイプですね。 あと青軸なのでめちゃくちゃカチカチいいます(クリッキーってやつ?)。

タイプ感は軽やかなので青軸でも今のところ疲れません。

ざっくり良いところと気になるところを書きます。

良いところ

  • タイプ感が軽い
  • Bluetooth 3台ペアリング可能
  • Type-Cで有線接続も可能
  • キー操作で接続先を切り替えられる
  • 値段が安い
    HHKB買うか迷っていたので尚更

気になるところ

  • 操作が説明書と違うところがある
    • ペアリングは説明書ではまずFn + P を長押しでペアリングモードに入ると書いてあるのに、そうならない。
      結局Fn + Q, W, E 長押しでペアリングモードになった。
    • 有線・無線モード切替は説明書ではFn + Tab と書いてあるが、裏のスイッチの切り替えをしないといけない模様(OFF が無線)。
  • 電池残量が判らない
    急にAltだけ効かなくなり、いろいろ調べた末直らなかったのであきらめて充電して寝たら翌朝には直っていた。バッテリーが問題?

トータルでの満足度は高いです。

Hangouts Chatの雨通知botを爆速で作る

:warning:この記事は2019/12/06 にQiita に投稿したものです

@murs313 さんのSlackの雨通知botを爆速で作る【メッ●●】を読み、 早速同じ物を作ろうと思いましたが、弊社はSlackが使えませんでした。

というわけでHangouts Chat版雨通知botを作ってみました。 GASだと真似しすぎで作っててつまらないのでPythonとcronで実装してみました。

※ なおHangouts ChatはG Suiteでのみ使用でき、個人のGoogleアカウントでは現在使用できません。

つくったもの

テストで送信してみたものがこちら。 実際は時間を合わせて17:00に送信されるように設定しています。 IMG_0068.jpg Hangouts ChatはMarkdownっぽい記法が使えるのが良いですね。 (画像では強調表示がうまいこといってませんが……)

つかったもの

Hangouts ChatへのPOST

Hangouts Chat は incoming webhook が使用できます。 @iitenkida7 さんの [超簡単]Hangouts Chat の incoming webhooks を使ってAPIから簡単にメッセージを投稿するを参考にさせて頂きました。

Pythonソースコード

import requests

weather_url = 'http://weather.livedoor.com/forecast/webservice/json/v1?city=130010' # Tokyo
resp = requests.get(weather_url)
data = resp.json()

# 一部ぼかしていますがコピペでおk
webhook_url = "https://chat.googleapis.com/v1/spaces/HOGEHOGE/messages?key={YOUR_KEY}&token={YOUR_TOKEN}" 

tomorrow_weather = data['forecasts'][1]
telop = tomorrow_weather['telop']
max_temp = tomorrow_weather['temperature']['max']
min_temp = tomorrow_weather['temperature']['min']
image = tomorrow_weather['image']['url']

text = ''
text += '明日の天気は'
text += '*' + telop + '*'
text += 'です。\n'
# なぜかmaxとminが時々取得できない
if max_temp is not None:
    text += '最高気温'
    text += max_temp.get('celsius')
    text += '℃'
if min_temp is not None:
    text += '/最低気温'
    text += min_temp.get('celsius')
    text += '℃\n'
text += image

content = {"text": text}
response = requests.post(webhook_url, json=content)

cronの設定

cronの設定はこちらが参考になると思います。

cronの設定を行うにはcrontab -eを叩きましょう。

$ crontab -e

するとVimで設定ファイルが開くので、実行する時間と実行するコマンドを入力しましょう。 今回はホームディレクトリ直下に置いたという設定です。

0 17 * * * python3 ~/weather.py

ファイルを保存してVimを閉じた時にcrontab: installing new crontabと表示されれば設定完了です。

動作確認する場合は、再度crontab -eを開き、

*/1 * * * * python3 ~/weather.py

のように記述すれば1分おきにコマンドが実行されるようになります。

感想

参考にさせていただいたリンクがわかりやすかったので特に詰まることなく設定できました。

Unubo を使ってみた

:warning:この記事は2019/09/30 にQiita に投稿したものです

先日paiza開発日誌で紹介されていたUnuboを使って簡単なサービスをデプロイしてみました。

このUnubo、まだ日本では全然広まっていないようですが、完全無料で「1 GB RAM, 1 CPU, and 500 MB storage」のサーバーを無料で複数利用できてめっちゃ便利です。 今後有料版のプランもリリースされていくようです(公式Twitterより)。

とりあえず今回はサンプルのflaskアプリケーションをデプロイしてみましょう。

構成

Unubo Apps Python Python 3.7 Flask 0.12

手順

Unubo App の作成

スクリーンショット 2019-09-30 6.46.44.png RegionはとりあえずAsiaで。

Data storeのドキュメントに

Please not that databases can only be accessed from apps within the same region.

という記述があったので、DBも使うつもりの方はRegionを合わせましょう。

デプロイ設定

Repository

スクリーンショット 2019-09-30 6.52.50.png RepositoryのCONNECTからGitHubのデプロイ用リポジトリを選択しましょう。

Deployment settings(Commands)

アプリの起動用のコマンドを記述しましょう。 後述しますが、Unuboのサンプルコード通りとするなら

python app.py

gunicornを使用するなら

gunicorn app:app

としておきましょう。

Secrets

スクリーンショット 2019-09-30 7.12.03.png

ここに環境変数をセットできます。 また、コード中で呼び出す際は os.environ.get を使用すればおkです。

SECRET = os.environ.get('SECRET') # 'SECRET_VALUE'
SECRETS = json.loads(os.environ.get('SECRETS')) # ディクショナリで取得できる

Domains と Monitor は使用していませんm(._.)m

コード

公式のドキュメントが、flaskのサンプルコードを公開してくれています。

import os
from flask import Flask, render_template

app = Flask(__name__)

# Bind to PORT if defined, otherwise default to 5000.
port = int(os.environ.get('PORT', 5000))

@app.route('/')
def hello():
    # return 'Welcome to Python on Unubo Cloud'
    return render_template('index.html')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=port)
Flask==0.12

コードをGitHubにpushして、Deployボタンを押下すれば{app名}.unubo.appにデプロイされます。

試しに作ったもの

IPAカウントダウン IPA試験までの時間をカウントダウンをしています。 デザイン手抜きです(UIKit使い方よくわかってない)。 また実装したAPIをGoogleAppsScriptから叩いて、IPAカウントダウンbotが7時台、12時台、19時台にカウントダウンツイートをするようにしています。

感想

デプロイでそんなにつまることもなかったしUIもすっきりしていて使いやすいです。 これを無料で使えるのは素晴らしい。 公式Twitterエゴサしっかりしていて、めっちゃリプライくれるのも好感もてます。

CentOS8 + tmux + zsh でVim の色がつかなかった話

自宅のCentOS の設定をしていたところ、デフォルトのターミナルにtmux を入れたときに、Vim に色がつかなった。 全部真っ白状態。

調べたところ、.tmux.conf のdefault-terminal がscreen-256color ではだめらしい。

set -g default-terminal xterm

上のように変更したところ、無事色がつきましたとさ。