【雑記】steamでゲームをする際、コントローラーやカーソルが勝手に動く現象の解決方法
どうもてぃ。
初めてゲームに関する記事を公開します。
どうぞ、お手柔らかに。。。
経緯
6月末はsteamのサマーセール!
自分はこの期間を狙って欲しいゲームを買い散らかしました。
以下が購入ラインナップ。
- Bag Fables
- ダークソウルⅡ
- ダークソウルⅢ
- terraria
- バイオハザード4
- undertail
- Little Witch Nobeta
もともとダークソウルにModを入れてやりたいと思っていたので、そのついでに安くなってるゲームたちも一緒に買ってしまったというわけです。
そんな自分がゲーム意欲を無くす事件が起こるとは思いもしませんでした。。。
Bag Fablesを起動!
サマーセールで買い散らかしたと言ったのですが、実はサマーセールの前にちょっとしたセールでバイオ4・ダークソウルⅡ・Ⅲは安くなっていたのです。
なのでフォロワーさんにおすすめされたBag Fablesも含めて一緒に買ってしまいました。
その時、かなりフォロワーさんがBag Fablesに熱を入れていて、自分もチョットやってみようと思い起動に至りました。
ここでトラブル発生。
起動して「あたらしいぼうけん」を選択後、ファイル名を入力画面で、入力カーソルがずーーーーーーーーーーーーーーーーーーーーーっと左に移動し続けるのです。
コントローラー抜いてもなおりまへん。
— もてぃ@パパ筋肉先生 (@smo_t93) 2020年7月4日
マウスで起動してもだめです🙅♀#bugfables #steam pic.twitter.com/K1fWC2jrkR
steamのコントローラー設定、windowsのコントローラー設定、Xbox oneのコントローラーが(新品なのに)壊れていないか確認、などなどいろんなことを試してみたんですが結局ダメでした。
こんなことある??
特定のゲームだけっぽい?
ちょっとsteamのゲーム欲が減ってしまっていたのですが、試しにバイオ4を起動。こいつはうまく起動できる。
Little Witch Nobetaを起動。これはカーソルがずーーーーーーーーーーーーーーーーっと上に行って何も選択できない。
やる気の関係でこれくらいしか試していないんですが、特定のゲームでバグが発生しているっぽかったです。
steamさん、頼みますよ…。
その後ネットで、
- steam コントローラー 勝手に動く
- steam コントローラー外す 勝手に動く
- steam bag fables 勝手に動く
- steam cursor bug
- steam controller problem
などなど、検索しまくりましたが全く解決に至りませんでした。
解決策を発見?
ダメもとでbag fablesのスレッドを開いて、カーソルバグで検索をかけてみました。
すると…これが出てきた(確か「cursor bug」みたいに検索したはず)
If you have the same issue, you must uninstall your VJoy Driver and restart your PC.
これだ。
君が同じ現象になったら、Vjoy Driverをアンインストールしてパソコンを再起動しなきゃいけない。
だってさw
そんなことで直るわけないじゃん。haha
ものは試し。Everythingを開いて、vjoyと検索(Everythingは高速ファイル検索だよ。windows使うなら入れておいて絶対に損しないよ。)
uninstallのリンクファイルが出てくるので実行。
その後、PCを再起動し、bag fablesを起動。。。
・
・
・
・
・
・
・
・
うまくいったわ!
vjoy driverを削除したことで他のコントローラーがもしかしたらうまく動かなくなる可能性はありますが、都度インストールしていけばよいでしょう。
まとめ
コントローラーに不具合がないのに、勝手にゲーム上のカーソルが動く場合の対処法は
- vjoy driverの削除
- PCの再起動
です。
以上。
誕生日じゃないけど、欲しい物リスト。
↓
【Rails】RSpecでcontrollerを書く際、deviseのauthenticate_userに毎回弾かれるときの対処法
どうもてぃです。
お久しぶりです。皆さん元気にしてましたか?
私は最近新居を建てる契約しまして、家計は火の車確定、毎日趣味の時間を犠牲になんとかお仕事を頑張って稼いでる次第であります。
はたして、この生活も何年もつことやら…。
本題
題のとおりです。公式を参考にしても弾かれて、まともなresponseが返ってこなかったので、一日時間を無駄にしました。
そのため久しぶりの記事行き。積み記事たくさんあるんですけどね。
rspec実行時が以下の状態。
% docker-compose run --rm -e RAILS_ENV=test web bundle exec rspec ./spec/controllers/tests_controller_spec.rb Starting project_1 ... done F Failures: 1) TestsController GET show response status 200 Failure/Error: expect(response.status).to be 200 expected #<Integer:401> => 200 got #<Integer:803> => 401 Compared using equal?, which compares object identity, but expected and actual are not the same object. Use `expect(actual).to eq(expected)` if you don't care about object identity in this example. # ./spec/controllers/tests_controller_spec.rb:13:in `block (3 levels) in <top (required)>' Finished in 0.12308 seconds (files took 1.13 seconds to load) 1 example, 1 failure Failed examples: rspec ./spec/controllers/tests_controller_spec.rb:11 # TestsController GET show response status 200
一応sign_in等の設定を行っているんですが、このありさま。
以下、環境や設定について書いていきます。
環境
- docker-compose version 1.25.4, build unknown
- Docker version 19.03.6, build 369ce74a3c
- Ruby 2.5.0
- Rails 5.2.1
エラー時の設定
# spec/support/controller_macros.rb module ControllerMacros def login_user(user) @request.env['devise.mapping'] = Devise.mappings[:user] sign_in user end end
sign_in用のメソッドをモジュール化。
# spec/rails_helper . . require 'devise' require File.expand_path('./spec/support/controller_macros.rb') RSpec.configure do |config| . . . . config.expect_with :rspec do |c| c.syntax = :expect end config.include Devise::Test::ControllerHelpers, type: :controller config.include ControllerMacros, type: :controller config.include Warden::Test::Helpers . . end
devise用にrails_helperへの設定を追加。
実際にテストで使用してみる。
require 'rails_helper' RSpec.describe TestsController, type: :controller do let(:test) { create(:test) } let(:user) { test.test_category.user } let(:company) { create(:company) } describe 'GET show' do before { login_user user } it 'response status 200' do get :show, params: { id: test.id } expect(response.status).to eq 200 end end end
これを実行してみた結果が最初のエラーです。
login_userメソッドのタイミングを変えたりいろいろ試してみたんですが、結局ダメでした。
対処法
いろんな記事のものを試してみたんですが、全くうまくいかずstackoverflowに同じようなエラー出てる人がいたので、参考にして設定を追加。
以下のリンク
controller_macros.rb
とrails_helper.rb
を変更。
module ControllerMacros def login_user(user) @request.env['devise.mapping'] = Devise.mappings[:user] controller.stub(:current_user).and_return(user) sign_in(user, scope: :user) end end
. . . RSpec.configure do |config| . . . . # devise setting config.expect_with :rspec do |c| c.syntax = :expect end config.include Devise::Test::ControllerHelpers, type: :controller config.include Devise::Test::IntegrationHelpers, type: :request config.include ControllerMacros, type: :controller config.include Warden::Test::Helpers . . end
これでテストを実行すると、 設定しているauthenticate_user!
に引っかからず、controllerテストが動くようになりました。
終わりに
新居のローン返済が怖いので誰かお仕事ください。
【Vim】TypeScriptプラグイン周りでquickfixが重くなる
どうもてぃです。
皆さん日頃からvimvimしてますでしょうか?
今回直近で自社開発の別プロジェクトに参画することになったため、いい加減になってたvimのjsプラグインを整理することにしました。
まだまだ問題は山積みなんですが、その中でもLintが自動で効いて重くなる問題を先に解決することとしました。
現状
- インサートモードから出ると自動でチェックが入る
- チェック時に固まる
- 切り取り時(
x
)にもチェックが入るので作業効率が悪い - quickfixが常動くのでファイルが見にくくなる
原因究明
まずはどのプラグインが原因なのか確認。
jsやjsxでは特にこの問題は発生してなかったので、typescript関連かなと。僕の場合、typescript-vim
とtsuquyomi
しか入れてなかったためすぐに見つかりました。
原因はtsuquyomi
の方でした。
quickfixを出ないようにする
最初にやった対処がこれです。
let g:tsuquyomi_disable_quickfix = 1
これを設定すれば、quickfixがそもそもでなくなります。
が、毎回:TsuGeterr
するのは面倒くさい。マップしようかなともおもいましたが、保存時に自動で動くようにしたかった。
pull requestあった
有志の方が修正してました。マジ神。
vim8ならlet g:tsuquyomi_use_vimproc = 0
、そうでなければ autocmd InsertLeave,TextChanged,BufWritePost *.ts,*.tsx call tsuquyomi#asyncGeterr()
を設定すれば、非同期でチェックを行うので、画面が固まらなくなると。
ありがとうございます。感謝。
おわり
まだtsuquyomiでの補完も効かない問題が残ってます。
今回ので前よりは速くなったし固まらなくなったけど、ファイル修正途中で毎回動くと少しラグがな…と思ってますが、quickfixをdisableにするしかなくなるので一旦これで我慢です。
TypeScriptもっとがんばろうー。
【Docker】Mysql2::Error: Host '~~~~~~~' is not allowed to connect to this MySQL server
どうもてぃです。
dockerでDB周りのエラーにかなり悩まされます。
今までPostgreSQLを使っていたので対処は出来ていたのですが、今回はMySQLです。
結構大変でしたが無事解決。
構成
docker-compose.yml
で作成しています。
version: '3.7' services: db: image: mysql:5.7 ports: - '3306:3306' volumes: - mysql-data:/var/lib/mysql env_file: - .env redis: image: redis:5.0.7 ports: - '6379:6379' volumes: - redis-cache:/var/lib/redis/data web: build: context: . dockerfile: ./docker/rails/Dockerfile.rails command: bash -c "rm -rf tmp/pids/*; bundle exec unicorn -E ${RAILS_ENV} -c config/unicorn.rb" depends_on: - db - redis ports: - '3000:3000' environment: - RAILS_ENV volumes: - .:/myapp - /myapp/log - /myapp/.git - bundle:/usr/local/bundle tty: true stdin_open: true env_file: - .env worker: build: context: . dockerfile: ./docker/rails/Dockerfile.rails command: bundle exec sidekiq -C config/sidekiq.yml -e ${RAILS_ENV} depends_on: - db - redis environment: - RAILS_ENV volumes: - .:/myapp env_file: - .env nginx: build: context: ./docker/nginx dockerfile: ./Dockerfile.nginx depends_on: - web ports: - '8020:8020' volumes: mysql-data: driver: local redis-cache: driver: local bundle: driver: local
rails(unicorn) × nginx × mysql × sidekiq(redis)で構成しています。
これ作るのわりかししんどかった。
unicorn × nginxを作ったのが初めてだったので。
やったこと
環境変数がちゃんと設定されているかまず確認。
いや、dbコンテナの構成にenv_file
として設定しているのでここは特に問題無いと思う。
docker-compose run db /bin/bash
でコンテナに入って環境変数を確認したけどちゃんと入ってた。
一応以下の手順で確認できる。
$ docker-compose run db /bin/bash $ echo ${MYSQL_ROOT_PASSWORD} # => でた
打つ手なし
です。
諦めてながら最後の手段で永続化していたmysqlのvolumeを削除してしまいます。
$ docker volume ls # => ~~~~_mysql-data $ docker volume rm ~~~~_mysql-data # volume削除完了
データベース作成してみる
$ docker-compose run web bundle exec rails db:create Can't connect to MySQL server on 'db' (111 "Connection refused") Couldn't create database for {"adapter"=>"mysql2", "encoding"=>"utf8", "pool"=>5, "username"=>"root", "password"=>"password", "host"=>"db", "database"=>"docker_rails_development"} rails aborted! Mysql2::Error: Can't connect to MySQL server on 'db' (111 "Connection refused") /usr/local/bundle/ruby/2.5.0/gems/mysql2-0.4.9/lib/mysql2/client.rb:89:in `connect' /usr/local/bundle/ruby/2.5.0/gems/mysql2-0.4.9/lib/mysql2/client.rb:89:in `initialize' /usr/local/bundle/ruby/2.5.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/mysql2_adapter.rb:22:in `new' /usr/local/bundle/ruby/2.5.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/mysql2_adapter.rb:22:in `mysql2_connection' /usr/local/bundle/ruby/2.5.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:809:in `new_connection' /usr/local/bundle/ruby/2.5.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:853:in `checkout_new_connection' 以下略 $ docker-compose run web bundle exec rails db:create Starting docker-rails_db_1 ... done Starting docker-rails_redis_1 ... done (0.4ms) SET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483 ↳ bin/rails:9 (0.2ms) CREATE DATABASE `docker_rails_development` DEFAULT CHARACTER SET `utf8` ↳ bin/rails:9 Created database 'docker_rails_development' (0.2ms) SET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483 ↳ bin/rails:9 (0.2ms) CREATE DATABASE `docker_rails_test` DEFAULT CHARACTER SET `utf8` ↳ bin/rails:9 Created database 'docker_rails_test'
なぜか作成できたんやが。
いろいろと調べてみる
トップに出たきたのがstackoverflowのやつ。
やっぱり環境変数について言及してる感じだった。
qiitaもそういう記事が多数。
でも自分は環境変数設定しているので同じ現象ではない。謎すぎる。
終わり
と思ってたら、同じ現象の人いた。
この人も自分と同じで、volume削除してdb作成したらうまく行った…と。
コンテナだし、まだ構成の途中だし、困ったらvolumeもimageも全部ぶち壊して作り直しましょう。
それがdockerの醍醐味ですよ。学びましたわ。
以上。
【Docker】railsコンテナでbundle installしているのにCould not find gemと出る
どうもてぃです。
既存プロジェクトをdocker-composeで構成作るということで結構苦労してます。
いくつかトラブルがあったんですが、その中でも題にあるエラーで苦しみました。
環境
- Docker version 18.09.7, build 2d0083d
- docker-compose version 1.25.4, build unknown
- rails 5.2.0
試したこと
以前も同じようなエラーが出たのでvolume関係で怒られているんだろうなと、検討をつけて対処しようとしました。
参考にしていたのがこちらの記事。
最後の対応にあったvolumeを削除するパターンを試しました。
volumeを一回削除し再度作成することによって、volumeの中身を/usr/local/bundleと同じにする
こちらですね。
僕が作成したプロジェクトではskip bundle
は行っていなかったですし、bundle install
も試していましたので、最後の頼みの綱、すがる思いで試してみました。
が、駄目でした。
同じBundler::GemNotFound: Could not find gem
です。謎…
1から手順を見直す
手順を見直したとき、docker-composeを使ってrails newを行っていなかったことを思い出しました。
つまり、Dockerfileから先にimageを作成して、そのイメージを元にrails newしたということです。
で、 docker-compose build
した際に、先に作成したimageを指定してbuildしていなかったので、Gemfileで差が出た…と。
馬鹿じゃん自分。
解決策
めっちゃ簡単。
Gemfile.lock
を削除してビルドし直すだけ。
$ rm Gemfile.lock; touch Gemfile.lock $ docker-compose run <コンテナ名> bundle install
しょうもないことに1時間ほど費やしてしまいました。
もう二度と同じ轍を踏まないです。
ここに誓います。
追記(2021/01/27)
docker-compose.yml関連で一点ハマったので。
version: '3' services: postgres: image: postgres:10-alpine container_name: postgres volumes: - postgres-data:/var/lib/postgresql/data - ./docker/init/db:/docker-entrypoint-initdb.d ports: - '5555:5432' redis: image: redis:alpine container_name: redis ports: - '6379:6379' volumes: - redis-cache:/var/lib/redis/data web: build: . image: app command: bash -c 'rm -f tmp/pids/server.pid && bundle exec rails s -b 0.0.0.0 -p 3000' container_name: app ports: - '3000:3000' volumes: - .:/myapp:cached - /myapp/log - /myapp/.git - /myapp/tmp - /myapp/node_modules - /myapp/vendor # <- こいついらん - bundle:/usr/local/bundle tty: true stdin_open: true depends_on: - postgres - redis worker: build: . image: worker command: bundle exec sidekiq -C config/sidekiq.yml container_name: worker volumes: - .:/myapp depends_on: - postgres - redis volumes: bundle: driver: local postgres-data: driver: local redis-cache: driver: local
vendor配下に設置していると、bundle installしても更新されません。
要注意。
【Vim】Vim歴三年目に突入するので、やっと操作系を覚える
どうもてぃ。
dein.vimの.vimrc
読み込まれない問題は解決(?)したのですが、それはまたの機会に書くとして、流石にvim操作をきちんと抑えておこうと思い、この記事を書くにあたりました。
知らないもの、便利なものめっちゃあってビビりました。
今更感半端ないですが、メモ・備忘録として残して毎日見るようにしたいと思います。
中身削除系
括弧のどの位置でも適応可能。
<>
, {}
, []
, ''
, ""
も同様に削除できる。
以下同じ仕様
コマンド | 動作 |
---|---|
di( または di) | 括弧内削除 |
da( または da) | 括弧ごと削除 |
yi( または yi) | 括弧内をヤンク |
ya( または ya) | 括弧ごとヤンク |
vi( または vi) | 括弧内選択 |
va( または va) | 括弧ごと選択 |
ci( または ci) | 括弧内を削除してインサートモード |
ca( または ca) | 括弧ごと削除してインサートモード |
htmlタグ
コマンド | 動作 |
---|---|
cit | タブの中身を消去してインサートモード |
vit | タブの中身を選択 |
dit | タブの中身を削除 |
yit | タブの中身をヤンク |
カーソル単語系
コマンド | 動作 |
---|---|
viw | カーソル上の単語を選択 |
diw | カーソル上の単語を消去 |
yiw | カーソル上の単語をヤンク |
ciw | カーソル上の単語を削除してインサートモード |
カーソルから特定位置
コマンド | 動作 |
---|---|
dt) | カーソル位置から閉じ括弧まで削除 |
ct) | カーソル位置から閉じ括弧まで削除してインサートモード |
vt) | カーソル位置から閉じ括弧まで選択 |
yt) | カーソル位置から閉じ括弧までヤンク |
dT( | カーソル位置から括弧まで削除 |
cT( | カーソル位置から括弧まで削除してインサートモード |
vT( | カーソル位置から括弧まで選択 |
yT( | カーソル位置から括弧までヤンク |
終わり
随時更新
毎日見るぞい
【Vim】vimproc plugin is not installed.
どうもてぃです。
絶賛.vimrcが読み込まれず困っています。
先日vim-jpのslackの皆さんにも質問し解決に至らず、結局プラグインのクリーンインストール、およびvimの再ビルドを行った際にタイトルのエラーで躓いたので解決策をば。
環境
- Linux Mint 19.3 Cinnamon
プラグインのクリーンインストール
$ sudo rm -rf ~/.cache/dein/* $ cd ~/.cache/dein $ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh $ sh ./installer.sh ~/.cache/dein
dein.vimも再インストールします。
Unite.vimでgrep
自分の場合 <leader>g
にunite grepを割り当ててます。
更にunite grepの際、The Silver Searcher(ag)が動くようにも設定してます、爆速です。
unite grepを動かすと、 vimproc plugin is not installed
が出て、grep結果が出てこない。
本家を確認
~/.vim/bundle/vimproc.vim
配下にcloneしてmakeしろとのこと。
ただ、自分は ~/.cache/
にdein.vimでプラグインを管理しているので、 ~/.cache/dein/repos/github.com/Shougo/vimproc.vim
でmakeしてあげます。
make
~ % cd ~/.cache/dein/repos/github.com/Shougo/vimproc.vim ~/.cache/dein/repos/github.com/Shougo/vimproc.vim master* # <- 自分のpromptです % make make -f make_unix.mak make[1]: ディレクトリ '/home/motty/.cache/dein/repos/github.com/Shougo/vimproc.vim' に入ります cc -W -O2 -Wall -Wno-unused -Wno-unused-parameter -std=gnu99 -pedantic -shared -fPIC -o lib/vimproc_linux64.so src/proc.c -lutil make[1]: ディレクトリ '/home/motty/.cache/dein/repos/github.com/Shougo/vimproc.vim' から出ます
おわり
無事タイトルのエラーを解決できました。
調べても全然出てこなかったので結構困りました。
ただ、まだ.vimrcの読み込みがうまく行かない。。。
解決するまで :source ~/.vimrc
で一旦対応。