かぴぱらの日記

かぴぱらの雑貨置き場です。バイク(Honda Hornet250)や一眼(Nikon D5600)でいろいろしたものを載せていきます。晴れ時々電子工作… 某田舎の高専生だったりします。

奥日光湯元温泉まで行ってきた話

こんにちは!
なんとかカレンダー3日目のかぴぱらです。
プロコンゼミ(SPC同好会) その1 Advent Calendar 2018 - Adventar
プロコンゼミ(SPC同好会) その2 Advent Calendar 2018 - Adventar

今日は、なんとなく硫黄泉に入りたくなったので奥日光までドライブに行ってきた話です。
ルートはこちら。

200kmも離れているので、温泉に行くだけなのも何だと思い、途中に東照宮華厳の滝へ寄り道しました。
土曜日の圏央道は相当に混雑しているかと思いましたが、(高速代がやたら高いせいか)割と空いていて日光まですいすい行けました。
途中、東北自動車道の佐野SAに寄り道して、トイレ休憩がてらSA内を歩いてみましたが、中央道の談合坂や諏訪に比べると随分と小ぢんまりとしていましたね。
良い子のフォレスター君と一緒に一枚……。
f:id:kapiparar:20181204094624j:plain

その後、賢いアイサイト君で高速を流しながら気づいたら日光東照宮へ。
紅葉も散りかけてきたので、観光客も少ないかと思いましたが、流石は人気観光地です。わんさか人がいました。
f:id:kapiparar:20181206200814j:plainf:id:kapiparar:20181206200831j:plainf:id:kapiparar:20181206200842j:plainf:id:kapiparar:20181206200853j:plain

ねこちゃん。
f:id:kapiparar:20181206200925j:plain
おさるさん。
f:id:kapiparar:20181206200948j:plainf:id:kapiparar:20181206201000j:plainf:id:kapiparar:20181206201013j:plainf:id:kapiparar:20181206201027j:plainf:id:kapiparar:20181206201042j:plain

せっかくなので御朱印帳と御朱印をいただきました。
f:id:kapiparar:20181206202029j:plainf:id:kapiparar:20181206202033j:plainf:id:kapiparar:20181206202038j:plainf:id:kapiparar:20181206202044j:plain

お腹が空いたので華厳の滝まで登ってお昼ご飯!
いろは坂ですが、外気が3℃なのに途中から楽しくなってきて、オーバーステア気味に回すと4駆のフォレスター君も後輪がスルスルと。
気持ちよかったですが、怖いので2回くらいしかやってません。

お昼ご飯は華厳の滝近くの つるや 中禅寺店 さんでご馳走になりました。

観光地なのに900円と良心的な価格で、美味しいうどんでした。
f:id:kapiparar:20181206202341j:plain

それでは華厳の滝へ。
山の天気は何とやらと言いますが、風がとても強く小雪も降ってきて相当に寒かったです。
f:id:kapiparar:20181206202414j:plain

それでは本命、奥日光湯元温泉へ。
温泉と宿は、奥日光高原ホテル さんでお世話になりました。
ちょっとお値段が張りますが、綺麗なお部屋(改装したばかりらしい)に、硫黄がぷんぷん香る温泉、美味しい夕食と朝食と、とても満足度が高かったです。
温泉はこんな感じです。(夕食後、ちょうど人が誰もいなかったので撮ることができました)
男性用は竜頭の湯と高原の湯の2箇所があり、それぞれこんな感じです。ノイジーなのは暗い上にスマホなので許してください……。
竜頭の湯
f:id:kapiparar:20181206202538j:plainf:id:kapiparar:20181206202543j:plain
高原の湯
f:id:kapiparar:20181206202635j:plainf:id:kapiparar:20181206202639j:plain
高原の湯の露天には,目隠しなのか防風なのか,外に垂れ幕が置いてありました。
高原の湯の方が広めですが,竜頭の湯の方が露天の眺めは良いので私は竜頭の湯推しですね。
女性用は……まあ流石に入れないので中はわかりませんが、横にあったので男湯と対称的な作りにでもなっているのでしょうか。

緑がかって白く濁ったTHE・硫黄泉、堪能しました。
加水・加温なしであるいて5分くらいのところから源泉を引いてるだけあって、とても良い温泉でした。(欲を言えばもう少し熱くても良かったですが)

夕食はこんな感じです。美味しい。
f:id:kapiparar:20181206202828j:plain

温泉も夕食も満足で、部屋に帰って寝ようと思いましたが、ベランダがちょっとあったのでそこから星空を撮ってみました。
赤道儀がないので星は流れ、ピントはズレ気味……。戦場ヶ原まで行って真面目に撮ろうかと思いましたが、外気は-8℃。流石に断念しました。

朝になり、朝食……と思いましたが朝食バイキングは7時半からなので、湯元まで少し散歩……。極寒の中でしたが、湿原からポコポコと沸く温泉は面白かったです。
f:id:kapiparar:20181206202850j:plainf:id:kapiparar:20181206202901j:plain

それでは早速朝食!
私はマグロが大好きなので、朝からネギトロが出ていてちょっと嬉しかったです。
f:id:kapiparar:20181206202921j:plain

帰りに宇都宮に寄り、餃子の名店 正嗣 の本店さんで冷凍餃子を買って帰りました。
f:id:kapiparar:20181206202952j:plain

圏央鶴ヶ島IC付近で事故車の工事のせいで,相当混雑しましたが,車線維持クルコン君は偉大でした。
帰宅後,冷凍餃子を早速焼いてみました!1000円なのに結構な量が入っていてとても満足度が高いですね!自宅の24cmテフロンフライパンにはかなりギリギリで押し込みました。(そのせいで焼きムラができているのですが……)
素人が焼いた冷凍でもこの美味しさ!店舗で食べたら相当に美味しいと思います。店内で食べる方には開店30分前なのに大行列ができていました。持ち帰り(冷凍・焼き)は行列に並ばなくても帰るので,嬉しいですね。
f:id:kapiparar:20181206203311j:plain

というわけで今回はここまでです!
なんとかカレンダーの私の枠はこれで最後ですが,他の部員達も面白い記事を書いているので良かったら見てみてください。
ではでは!

榛名山と草津温泉までツーリングに行った話

こんにちは!
なんとかカレンダー2日目です。
遅い気がしますが,弊部のなんとかカレンダーはハワイ標準時基準なので全く問題ありません。ありませんよ?
プロコンゼミ(SPC同好会) その1 Advent Calendar 2018 - Adventar
プロコンゼミ(SPC同好会) その2 Advent Calendar 2018 - Adventar

今日は,11月の半ばくらいに榛名山草津温泉温泉までツーリングに行った話です。

ルートはこんな感じ……。

圏央道はちょっとお高いので,自宅から鶴ヶ島ICまでは下道です。横田基地横を走っていくだけなのでそんなに所要時間も変わらないですしね。
そのまま関越自動車道を北上して,駒寄PAへ入ります。
f:id:kapiparar:20181204215905j:plain
快晴なので,ホーネットの写りも良くて最高です!
スマートICを利用して,関越自動車道から下道へおります。

SONYのアクションカムで車載動画を撮っていたりするんですが,今から編集するのはちょっと悲しい時間なので,いずれまた……。
そんなこんなで峠道を上り,榛名富士前です!
f:id:kapiparar:20181204221459j:plain
f:id:kapiparar:20181204221127j:plain
f:id:kapiparar:20181204221139j:plain

綺麗ですね,榛名富士。ホーネットとの写り合いも良くて最高です。(2枚目砂利でアマリングが目立っているのが恥ずかしい……)
生茶のCMにありそうだなあとか,こんな写真も撮ってみたり……w
f:id:kapiparar:20181204221611j:plain

元ライダーのおじさん(夫婦で旅行に来ていらっしゃった)ともお話できて楽しかったです!
写真も撮って頂いて,ありがとうございました!(悲しいオタクライダーの写真がここでは割愛させて下さい……^^;)

そのままグイグイ山奥へ!目指すは万座温泉
…………勘の良い方はタイトルと見比べておかしいと思ったはずです。
f:id:kapiparar:20181204222124j:plain
デデドン!(絶望)
そういえば草津白根山の噴火もありましたね……。まだ通行止めとはびっくりです。
突破して行くわけにも行かず,かと言って迂回路は片道40km。凍死しそうなので早く温泉に入りたい時期でした。
諦めて草津温泉で妥協しました………。

それでは気を取り直して1軒目!
草津と言えばここ!と思い浮かぶ湯もみ場のすぐ近くにある 御座之湯 さんに入らせて頂きました!
f:id:kapiparar:20181204222614j:plain
f:id:kapiparar:20181204222701j:plain

館内は流石に人が多く,浴室は撮れませんでしたが綺麗な浴槽に湯畑源泉と万代源泉が引いてありました。
自分は熱めが好きなので,万代の湯が丁度良く冷気で冷えた体には温かい温泉が染みました!
入場料も600円と良心価格でとても良いです。草津の中では割と推していきたいところです。休憩所も広く,畳の上で1時間ほどのんびりとさせて頂きました。

と,あまり休んでいると寝てしまうのでとりあえず昼食へ。
ネットやパンフレットで調べつつ,うどんと蕎麦の あおやま さんにお邪魔させて頂きました。
f:id:kapiparar:20181204223240j:plain

20分ほど並びました。13時過ぎでこれだったので,お昼時はもうちょっと覚悟したほうがいいかもしれません。
待ち行列にやたらカップルが多くてぶっこr……いえ,少々悲しくなりましたが,ご飯を食べましょう。
f:id:kapiparar:20181204223306j:plain
入り口のお花も綺麗ですね。
f:id:kapiparar:20181204223300j:plain
メニューです。観光地で1000円でこれは凄いなと,迷わず舞茸天丼セットを注文しました。
f:id:kapiparar:20181204223301j:plain
美味しいです。蕎麦はまあ普通ですが,舞茸天丼は美味しかったので良いですねこれ。

お腹もふくれたところで,温泉2軒目!
主は貧乏人なので,2軒目からは共用温泉へお邪魔しました。白旗の湯です。
先程の御座之湯の真横にあります。真横だったので写真を取りそびれてしまいました……。すみません……。

こちらの温泉,とにかくクソ熱いです。御座之湯の万代の湯が熱い人は浸かるなんてとてもじゃないけどできないくらい熱いです。
地元のお爺ちゃん方は何故かゆっくり浸かっていましたが,ちょっとよくわからないです。
私も1分ほど浸かったところで熱くて耐えられずに出てしまいました。足の指が若干火傷したんじゃないかってくらい熱かったです。
まあ,温泉の真ん前に源泉がありますので,それはそうなんですけども……。体感では47℃くらいあるんじゃないか,って感じです。

続いて地蔵の湯。
f:id:kapiparar:20181204224217j:plain
こちらの温泉はまともな温かさです。ゆっくり浸かって気持ち良いくらいですね。
ただ,湯船がとても狭いので男性3人も入るとちょっと入る気がおきないくらいです。
地元の方の温泉を無料で使わせて頂いてるので,特に何も言いませんが団体で行くにはちょっと狭いところでした!

と,榛名山草津ツーリングの話でした。
本当は万座温泉さるのこしかけ湯に入りに行くのが目的だったんですが,通行止めは残念でしたね。
皆さんも草津経由で万座温泉へ向かうときには気をつけて下さい。県道292号線,一見通れますが殺生より奥へ行けなくなっています。
鬼押出し園経由なら行けるらしいので,もし行くときはしばらくそちらからですね。

それでは,今回はここまでです!ではでは!

Manjaro 18.0 環境構築の備忘録

こんにちは!
かぴぱらです。

今回は,数日前に再インストールかけたManjaro 18.0 (xfce Edition)の環境構築について自己流の備忘録を置いておこうと思います。
自分的にはまともに使える環境になりましたが,いざ読み返してみるとちょっと抜けてる気が……。
色んな人の受け売りなので,コピーも実行も改変も煮るなり焼くなりしてください。

# とりあえず最新にアップロード
sudo pacman -Syu

# 日本語ディレクトリ気持ち悪いので浄化
sudo pacman -S xdg-user-dirs-gtk
LANG=C xdg-user-dirs-gtk-update

# 日本語入力環境セットアップ
sudo pacman -S --needed qt5-translations
sudo pacman -S fcitx-mozc fcitx-gtk2 fcitx-gtk3 fcitx-qt5 kcm-fcitx fcitx-configtool fcitx-config-gtk fcitx-config-gtk3
sudo pacman -S vim
sudo vim .bashrc
# 以下を最下行に追記
	export GTK_IM_MODULE=fcitx
	export XMODIFIERS=@im=fcitx
	export QT_IM_MODULE=fcitx
sudo vim .profile
# 以下を最下行に追記
	export LANG="ja_JP.UTF-8"
	export XMODIFIERS="@im=fcitx"
	export XMODIFIER="@im=fcitx"
	export GTK_IM_MODULE=fcitx
	export QT_IM_MODULE=fcitx
	export DefaultIMModule=fcitx

# 基本的人権ができたので再起動
sudo reboot

# 以下,yaourtでいろいろ入れてくので持ってくる
sudo pacman -S yaourt

# VSCodeインストール(多分1番がまともなやつ)
yaourt vscode

# GoogleChromeインストール(2番がstable ver.になってるはず)
yaourt google-chrome

# エロゲ用のWineインストール
sudo pacman -S wine
sudo pacman -S winetricks

# i3wm(タイル型wmのいいやつ)インストール(なんか聞かれるけど全てOKする)
sudo pacman -S i3

# おさかなさん好き
sudo pacman -S zsh fish

# 全部最新へ
sudo pacman -Syu

# いろいろ追加したのでとりあえず再起動
sudo reboot

# Slackインストール
yaourt slack-desktop

# Discordインストール(公開鍵の追加が必要)
gpg --recv-keys 0FC3042E345AD05D
# 鍵を検証しないのでセキュリティリスクがあるらしい
# libc++のインストールに必要なので,とりあえずインポート
# 10番がまともなやつだったはず(libc++のビルドが20分くらいかかるので,AC電源必要)
yaourt discord

# Gitの設定
git config --global user.email "メールアドレス"
git config --global user.name "ユーザー名"
git config --global credential.helper 'cache --timeout=86400'    # Https認証を24時間記憶

今まで書いた記事で一番需要無い気がしますが,今回はここまでです。
明日のなんとかカレンダーに入ってるので,また明日!それでは!

SONY の 最新ヘッドホン WH-1000XM3 を 買った ので レビュー してみる

こんにちは!
書き溜めネタがたくさんあるのでぽんぽん投げているかぴぱらです。

今回は SONY WH-1000XM3 買ったので,そちらのレビューをしてみたいと思います。
買ったのはこちら。

f:id:kapiparar:20181104143928j:plain

私はヨドバシで直接買いましたが,ヨドバシをあまり使わない方はAmazonで買った方がお得ですね。(執筆現在 2018/11/04 14:30)
どの商品も大体,ヨドバシのポイントを引いた値段がAmazonの値段になるくらいですので……。

それでは開封の儀。
f:id:kapiparar:20181104144028j:plainf:id:kapiparar:20181104144140j:plain

美しいですね。流石に高級ヘッドホンなだけあります……!

まず,ケース。機能美。しゅごい。
f:id:kapiparar:20181104150223j:plain

続いて有線ケーブル。自宅でゲームしたりするときは有線で遅延を気にせずに使うこともできます。
f:id:kapiparar:20181104150340j:plain

航空機用プラグも嬉しいですね。といっても私は大体SKYMARKなので,プラグを刺すところはありませんが……。
f:id:kapiparar:20181104150505j:plain

充電はType-Cケーブル。驚くほどの急速充電で,朝充電を忘れていたときに重宝しています。
10分で5時間持つとかなんとか。割とそんな気はします。フル充電で30時間なので,そうそう充電には困りません。
f:id:kapiparar:20181104150541j:plain

………なんかステマみたいになってきましたが,それほど魅力があったということで!

それでは本命のノイズキャンセリング機能。
コアが,QN-1?だか乗っけて凄いそうです。(適当) 開発者の方々のインタビューがあるので,気になる方はそちらをご覧ください。( WH-1000XM3 開発者インタビュー PART1 | ヘッドホン | ソニー )

試聴機はこちら。数年前に買ったWALKMANのA-25です。
なんか色々とアニソンを流しました。
落としたり踏まれたり,押しつぶされたり,果ては放り投げられたり散々な扱いを受けていますが,まだまだ現役です!
LDAC対応だと無線とは思えない高音質で送れるので良いですね。
f:id:kapiparar:20181104150618j:plain

秋葉原で何度か試聴してはいましたが,改めて聴いてもものすごいノイズキャンセリングです。
そして無線なのに,音質も十分!LDAC,すごいですね。

高速道路走行中の車内や,中央線,京王線車内でも聴いてみましたが,はっきり言って化け物です。音は聞こえないのに揺れるので,酔いそうになるくらいです。
WALKMAN A-25付属のNCイヤホンとも聴き比べてみました。
同じノイズキャンセリングとは到底思えないレベルです。

と,音響初心者の拙い表現力で話してもこれ以上表現できないので,是非お近くのヨドバシカメラビックカメラ,eイヤホンとかとかに試聴しに行ってみてください。
私は衝動買いしてしまいました。カードの請求額が怖いですね………。

なんか他にも色々アプリとかアンビエントなんとやらとか機能があるらしいですが,そちらはSONYさんの公式サイトが詳しく書かれています。
右手でヘッドホンの面を触ると外音が聞こえるクイックなんとかモードは割と便利でした。

f:id:kapiparar:20181104143855j:plain

それでは今回はこの辺で。
ステマ記事になってしまいましたが,また次回お会いしましょう。それでは~

ホーネット250 に Realize Aria スリップオンマフラー をつけた話

こんにちは!
3ヶ月ぶりくらいに書くブログです。
夏は暑さでヘバッていたので,ようやく涼しくなってきて嬉しいけふこの頃です。
と思って下書きを置いていたら寒いくらいになって凍えているオタクです。

もう2ヶ月前くらいの話ですが,愛車のホーネット250のマフラーを変えてみたので,今日はその話です。
備忘録も兼ねて細々書いて行きますので,良かったら参考にどうぞ。

変えたマフラーはこちら。
realize-racing.co.jp
一番上の「Aria(アリア) スリップオン | ステンレスマフラー Type-C (カールエンド)」ってやつですね。

開封の儀……。
f:id:kapiparar:20181104131623j:plain
f:id:kapiparar:20181104131834j:plain
見た目に反して,相当に軽いです。パーツと工具をどっさり持ってとりあえず駐車場へ。

早速取付け作業。
まずはカウルやらなんやらをぽんぽん外していきます。
シートをパカっと取ったら,4箇所ボルトを引っこ抜きます。(配線が汚いのは見なかったことにしてください……)
f:id:kapiparar:20181104132321j:plainf:id:kapiparar:20181104132420j:plainf:id:kapiparar:20181104132534j:plain

続いて,後ろのこれ。
キャップをマイナスドライバーで抜き取ります。
f:id:kapiparar:20181104133003j:plain

外すとこんな感じ。ボルトが長いので結構疲れます。
f:id:kapiparar:20181104133622j:plainf:id:kapiparar:20181104133515j:plain

それでは御開帳……,と行きたいですが,後ろから覗き込むとこんな部品でカウルが止まっています。
私はこれに気づかずに左側を吹っ飛ばして割ってしまいました……。皆さんはお気をつけて……。
f:id:kapiparar:20181104133858j:plain
f:id:kapiparar:20181104134800j:plain


マフラーの固定ボルトも外しちゃいましょう。
f:id:kapiparar:20181104134859j:plain

それでは純正マフラーを引っこ抜きます。………引っこ抜きます……………。引っこ!!抜きます!!!
f:id:kapiparar:20181104134647j:plainf:id:kapiparar:20181104135656j:plain

外れるわけねーだろ!!!!
と思いますが,556を吹きかけたり,マイナスドライバーを突っ込んでトンカチでぶっ叩いたり……。
相当な荒業をやってようやく抜けました。プレイ時間30分。対戦ありがとうございました。
f:id:kapiparar:20181104135807j:plain

うげぇ……。シールとグラスウールでとんでもないことになってます。こりゃ取れない訳だ……。
f:id:kapiparar:20181104135752j:plainf:id:kapiparar:20181104141542j:plain

というか純正マフラー重っ!新しいマフラーは片手でぽんぽんできる程軽いですが,純正は片手だとずっしりくる重さです。
それはさておき,新しいマフラーをキュポン。固定は締め付けバンドとボルトっぽいですね。
f:id:kapiparar:20181104141704j:plain

上の固定はこんな感じ。ここは相当に締め付けないとボルト長が足りません。ペンチで挟み込んでぐりぐりすること10分。
ようやく取付けました。(ボケてるのは疲労が限界なので許してください…)
f:id:kapiparar:20181104141554j:plainf:id:kapiparar:20181104141603j:plain

かれこれ2時間近くかかった気がしますが,整備初心者なりに頑張りました……。
取付けるとこんな見栄え。やっぱりホーネットは後ろから見ると,物凄く美しいですね……!
f:id:kapiparar:20181104142010j:plain

アレをキュポンするとこんな感じです。走ってませんよ?このまま走ってなんかいませんからね!!
f:id:kapiparar:20181104142124j:plain

音も合わせて紹介したかったのですが,録画データを部室に忘れてきてしまったので,今回はこの辺で。
そのうちツーリング日記が何かでご紹介できればと思います。

書き溜めのネタがたくさんあるのでこの記事はここまで!また次回お会いしましょう。それでは~

NFCで認証するプリペイド型決済システムを作ってみる③ -Ver2.00リリースと Python で データベース 接続 のお話-

②→NFCで認証するプリペイド型決済システムを作ってみる② - かぴぱらの日記
①→NFCで認証するプリペイド型決済システムを作ってみる - かぴぱらの日記

こんちには。
長らく更新していなかったこの企画,田舎高専が夏休みに入ったので,一段落するまで開発しちゃいました!

とりあえずまずは,今回実装できたところと次回の予定を紹介していきます。
今回実装できたところ
CUIで一通りの操作ができるように実装しました。
・リモートデータベースを使いました。

今後作りたいところ
GUIの実装
・SlackAPIとの連携
・筐体もつくってみたい
・ユーザー削除/カード削除とかの面倒くさそうな機能

コードはこちらに置いてあります。
POSっぽいので,POS-System(possys)と名付けました。
github.com
基本的にMITライセンスしてますが,もし万が一何かの間違いで商用利用したいという方がおられましたら,一言ご連絡ください。
possys ver2.00を運用するのに必要なものは,以下の3つです。

  • Raspberry Pi 3b
  • SONY NFCリーダー(②で紹介したものです)
  • MySQLサーバー(後述の設定を変えればローカル/リモートは問いません)

ローカルデータベースを使うのは面倒くさかったので,最初からリモートデータベースにしてます。現行バージョンはVer.2.00です。Ver.1.00はあってないようなものです。

また,このプログラムは製作者がゼミ室で活用することを前提として開発しているので,かなり性善説に頼っているところがあります。SQLがちょっとできる人なら簡単に攻撃できちゃいます。

それでは,データベース周りの開発日記を連々と書いていきます。
当初は,DjangoのORMラップ機能を使ってラッピングして実装する予定でしたが,学習コストが高そうだったので,生SQLに甘えてしまいました。
使ったライブラリはこちら。
MySQL :: MySQL Connector/Python Developer Guide :: 10 Connector/Python API Reference

pip3 install mysql-connector-python

でインストールできます。
possysからコピーしてきただけですが,単純にデータベースを使いたいだけなら次のコードでできます。

import mysql.connector

db = mysql.connector.connect(host = 'hostname',
                                              user = 'username',
                                              password = 'password',
                                              database = 'database'
                                             )
cursor = db.cursor()
cursor.execute("hogeeeeeee")    # hogeの部分はSQL文
tmp = cursor.fetchall()    # SQL文に一致したものを全件取得
# db.commit()    # 返り血がないSQL文にはこっちを使う

cursor.close()
db.close()

hostnameのところに,データベースのホストネーム,ユーザーのところに……とやっていくことで任意のデータベースに接続できます。possysでは,データベースは1個しか用いてないので,データベース名も指定していますが,複数のデータベースを用いる際にはなくても大丈夫です。(それくらい複雑になるならORMラッパーを使った方が良いですが……)
また,fetchallした際の値はlist型で帰ってくるため,単純に1足したいとかの時には,2次元配列のような扱いをする必要があります。
これを前回のと組み合わせて,IDmがデータベースにあるか確認するプログラムを作るとこのようになります。

#! /usr/bin/python
#! -*- coding:utf-8 -*-
# Python3で動くよ!

# configファイル
import configparser
# 時間取得用
import time
# データベースアクセス
import mysql.connector
# IDm取得用のライブラリ(Python2をサブプロセスで実行)
import subprocess
import os
import sys

# データベース操作クラス
class Database:
    def __init__(self):
        # configファイルを参照
        config = configparser.SafeConfigParser()
        config.read('setting.ini')

        # データベースを参照
        # 各値はconfigファイルのDATABASEセクションから取得
        self.db = mysql.connector.connect(host     = config.get('DATABASE','hostname'),
                                          user     = config.get('DATABASE','username'),
                                          password = config.get('DATABASE','password'),
                                          database = config.get('DATABASE','databaseName')
                                         )
        # データベースとの,対話クラスのインスタンスを作成
        self.cursor = self.db.cursor()
        print("[  OK  ]: Establish database connection")

    # IDm照合処理
    def checkIDm(self, userIDm):
        try:
            print("[START ]: check NFC IDm...")
            # NFCIDテーブルから条件付き全件取得
            # executeで実行コマンドを指定,fetchallで一致データすべてを取得
            self.cursor.execute("SELECT IDm  FROM NFCID WHERE IDm='%s'"%str(userIDm))   # 関数内はSQL文
            serverData = self.cursor.fetchall()  # 取得データ代入
            print("[  OK  ]: Got server side IDm data")
            # 重複データがあっても,[0][0]にはとりあえず取得データがある
            # ない場合,list型の範囲外参照エラーが起きるのでexceptで拾ってあげる
            try:
                if str(serverData[0][0]) == str(userIDm):
                    return True
            except:
                return False

        except:
            self.cursor.close()
            self.db.close()
            print("[ERROR ]: Database Connection ERROR!")
            return False
            
    # ユーザ追加
    def addUser(self):
        try:
            cond = True
            print("[START ]: add User...")
            while cond:
                print("\n新規ユーザー登録を行います。")
                print("UserName:")
                name = input(">> ")
                print("EmailAddress:")
                mail = input(">> ")
                print("\nYour input data:")
                print("UserName:" + name)
                print("EmailAddress:" + mail)
                print("\nConfirm? [y/n]\n(nothing default, only [y/n])")
                confirm = None
                confirm = input(">> ")
                cond = False
                if(confirm == 'n'):
                    cond = True
                elif(confirm == 'y'):
                    break
                else:
                    print("Plz only input y/n or Nothing!!!\n")
                    cond = True
                
            # MemberListテーブルからMemberNum最大値取得
            # SQL文の意味は,「MemberNumのデータが欲しい,MemberListから,次の条件に一致するもの → (MemberNumが,MemberNumカラムの中で最大値のとき,そのカラムはMemberListにあるよ)」
            self.cursor.execute("SELECT MemberNum FROM MemberList WHERE MemberNum=(SELECT MAX(MemberNum) FROM MemberList)")  # 関数内はSQL文
            newMemberNum = self.cursor.fetchall()  # 取得データ代入
            newMemberNum = newMemberNum[0][0] + 1
            print(newMemberNum)
            print("[  OK  ]: Got most new MemberNum")
            # 新規ユーザデータをデータベースへ入力
            self.cursor.execute("INSERT INTO MemberList (MemberNum, Name, Email, wallet) VALUES ('%d','%s','%s',0)"%(newMemberNum, name, mail)) # 関数内はSQL文 変数はタブタプ
            self.db.commit()    # SQL文をデータベースへ送信(返り血はないのでcommitメソッド)
            print("[  OK  ]: Add new user")

        except:
            self.cursor.close()
            self.db.close()
            print("[ERROR ]: Database Connection ERROR!")
            return False

class idmRead:
    def __init__(self):
        pass
    
    def getMain(self):
        print("[START ]: Getting NFC card IDm...")
        command = "python2 idmRead.py"      # 同一ディレクトリ内のidm取得プログラムをpython2で実行
        # サブシステムでcommandを実行,stringに変換してスペースでスプリット
        output = str(subprocess.check_output(command.split()))
        temp = output.split()
        flag = 0
        for tag in temp:
            if flag == 1:
                # 「hogehoge\n'」と取得できるので,後ろから3字消去
                tag = tag[:-3]
                flag = 0
                print("[  OK  ]: Got your cards IDm")
                return(tag)
            # 「IDm」の後にスペースを置いてIDmが来るようにしてあるので,フラグ付けて次ループで回収
            if tag.find("IDm=") is not -1:
                flag = 1

temp = Database()
temp2 = idmRead()
test = temp2.getMain()
print(temp.checkIDm(test))

残念ながら,nfcpyはPython2でしか動作しないので,IDm取得はサブプロセスからPython2でidmRead.pyを呼んでいます。IDmを取得する処理は前回紹介したので割愛させて頂きますが,コードはこちらに置いてあります。
github.com
masterブランチには既にないですが,各ブランチのtestCode/内には迷走具合が記されています……。
idmRead.pyとsetting.iniはそちらに置いてあるので,もし動かしたい方がいたら使ってくださいね!

コーディングで疲弊したので今日はこの辺で締めます。
ここまで読んで頂いてありがとうございました!

Manjaro LinuxでWineを使ったエロゲ環境構築!(ゆずソフトで試してみた)

こんにちは!
猛暑が続いてヘバり気味のオタクです。

今回は,Arch系LinuxのManjaro LinuxでWineを使ってエロゲ環境を作ってみた話を書きます。

オタクなせいで文量が多くなっていますが,面倒くさい方はコマンドのとこだけ実行していけば,動くようになります。

実行環境はこちらです。

[kapipara@kapiManjaro ~]$ uname -a
Linux kapiManjaro 4.14.52-1-MANJARO #1 SMP PREEMPT Tue Jun 26 15:24:31 UTC 2018 x86_64 GNU/Linux

Get Manjaro | Manjaro Linux
Manjaroはこちらから。xfceプログラマ色が強くて合わなかったので,kdeエディションを使っています。

KDEエディションなら初期でyakuakeが入っているのでF12らへんを押すとターミナルが表示できます。
yaourtは初期で入ってたっけな……。AUR(Arch系のすごーいリポジトリ)にはたくさん情報が転がっているので,yaourtが入ってなければ,sudo pacman -S yaourtとかで入ると思います。(今回はpacmanで済みますけどね…)

それでは肝心のエロゲ環境作成へ!
もしやっていなければ,"sudo pacman -Syu" をやっておいてくださいね!(パッケージのアップデート・アップグレードをします)
手順は以下の通りです。

  1. Wineをインストール
  2. Winetricksをインストール
  3. Windows Media Playerを用意,インストール
  4. 設定して起動
  5. 自前コマンドを用意
[kapipara@kapiManjaro ~]$ sudo pacman -S wine
[sudo] kapipara のパスワード:
警告: wine-3.11-1 は最新です -- 再インストール
依存関係を解決しています...
衝突するパッケージがないか確認しています...

パッケージ (1) wine-3.11-1

合計インストール容量:  413.18 MiB
最終的なアップグレード容量:    0.00 MiB

:: インストールを行いますか? [Y/n] n

私はすでにインストールしているので,最後にnを押していますが,これからwineを入れる方はそのままEnterを押してください。wine ver3.00以上なら快適に使えますが,もし2.~~のものがサジェストされたら,wine系の記事を調べて3.~~を入れてください。2.~~のものは,エロゲをやる上で快適に動作できません。
データ量が結構あるので,快適な有線LAN環境でやることをおすすめします。
確か,初期環境で特にエラーなく入った気がしますが,もし詰まった方は下のコメント欄にでも書いといてくれたら,多分返信します。
あとは,必要なのを良い感じに集めてくれるwinetricksをインストール!

[kapipara@kapiManjaro ~]$ sudo pacman -S winetricks
警告: winetricks-20180603-1 は最新です -- 再インストール
依存関係を解決しています...
衝突するパッケージがないか確認しています...

パッケージ (1) winetricks-20180603-1

合計インストール容量:  0.73 MiB
最終的なアップグレード容量:  0.00 MiB

:: インストールを行いますか? [Y/n] n

こちらも,私はインストールしているので最後にnを押していますが,これから入れる方はそのままEnterを押してください。

この2つが入れば,とりあえず起動はできるようになります。
本来なら光学ドライブのインストールから試したいところですが,今回は手間を省くためにwindowsにインストールしたものをコピーして用意しました。(個人使用の範囲なので,ギリギリセーフだと思いますがコピーしたデータをモニョモニョしてしまうと神奈川県警サイバー対策(笑)科がお越しになるので,特に気をつけてください。)
私の環境では,データを "~\games\Riddle Joker\" に置いて実行しています

もしかしたらこの先,ulimit周りでエラーを吐くかもしれませんのでこちらの方のサイトを参考にulimitの数値を増やしておくと良いかもです。
qiita.com

この状態で,
wine "~/games/RIDDLE JOKER/RiddleJoker.exe"
をしても確かに動きますが,恐らくムービー再生時にwineが落ちるか,再生されません。
これは,ムービーの再生にWindows Movie Player(以下,WMP)を使用している関係で起きる問題です。prefixを指定せずにwineを起動すると,デフォルトで64bit版が起動しますが,その状態ではWMPがまともに動作しません。(もしかしたら,現行verのwineにはデフォルトで入ってない?)
ので,WMP10をwgetで取得,winetricksでインストールした上でprefixで32bitを明示して起動します。

cd ~/
wget -q https://github.com/Winetricks/winetricks/raw/master/src/winetricks -O /home/$USER/winetricks
WINEPREFIX="/home/$USER/.wine32" WINEARCH=win32 wineboot
WINEPREFIX="/home/$USER/.wine32" sh ~/winetricks -q wmp10

ここまでで,WMP10を32bitWineにインストールできました。起動するには,

WINEPREFIX="/home/$USER/.wine32" wine "~/games/RIDDLE JOKER/RiddleJoker.exe"

です。ここまでで,普通の環境ならWindowsと同等の動作ができるようになっているはずです。
私の環境ではレジストリを弄らないと駄目でしたが,もしかしたら雑な環境依存かもしれませんので,他にも動かない方がいらっしゃったら後ほど追記いたします。

ここから先は,実行する上では余談ですが,いちいちprefix指定するのも酷なので自前でエロゲ実行コマンドを用意していきます。
それでは,自前コマンドを置く場所を用意。

mkdir /usr/local/custom_command
sudo vim /etc/profile

ここで,ファイル末尾に

export PATH=$PATH:/usr/local/custom_command

を追記します。
sudoで起動して":w!"で保存しないと,権限高めのReadOnlyだった気がするので,書き込みできません。
ここで,profileを更新するために再ログインもしくは,再起動してください。
し終わったら,

cd /usr/local/custom_command
vim riddle

そこに,先程の起動コマンドを書きます。

WINEPREFIX="/home/$USER/.wine32" wine "~/games/RIDDLE JOKER/RiddleJoker.exe"

書いたら":wq"でvimを抜けます。このままでは実行権限がないので,与えます。

sudo chmod +x riddle

これで通ったら,ターミナル上で"riddle"と打つだけでリドルジョーカーが起動できるようになるはずです。
f:id:kapiparar:20180705151529p:plain

というわけで,ここまでお疲れ様でした!
やたら文章が多い記事となってしまいましたが,ご丁寧に読んでくださった方は本当にありがとうございます。

参考にさせて頂いたサイトはこちらです。
qiita.com
askubuntu.com
qiita.com


次回は,今作っている部室ライトコントロールシステムの記事をあげたいと思います。
それではまた!