Rubyと筋肉とギターとわたし

筋トレが仕事です

【雑記】やっぱりタッチクリック機能は便利でした

f:id:rdwbocungelt5:20180709232837p:plain

というのも、ついこの前大阪出張で受けたセミナーでThinkPadを使った時からずっと考えてました。

つーか、そもそもThinkPadを買わなかったことを後悔しているんですが。。。



ThinkPadはご存知の通り、トラックパッドの範囲は小さくて手のひら当たらんし、細かい操作のできる赤乳首がある。

非常に使いやすいです。

前の会社でmacを使っていたけど、ThinkPadの使いやすさは遜色ないです。



OSが窓でなければね。

てなわけで、ThinkPadのタッチクリックに感動したので、自分のspectre x360でも復活させました。

まず一つ目の問題

spectre x360をご存知の方はわかる通り、トラックパッドの範囲が異常に広いです。

何も設定せずに使うと、手のひらでマウスカーソルが動き、イライラの絶頂に達します。

いらいらエクスタシー

まずはトラックパッドの検出範囲を変更してください。

過去記事
smot93516.hatenablog.jp

2つめの問題

感度が良すぎる

敏感すぎです。まじで。

なので、タッチ感度を変更します。

過去記事と同じファイル(/etc/X11/xorg.conf.d/50-synaptics.conf)を変更します。

OptionFingerHighというものを設定。

押下時の強さを変更します。

多分50〜設定していきながら調整していけばいいと思います。

↓僕の設定

Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"

        Option "AreaLeftEdge" "2000"
        Option "AreaRightEdge" "5000"
        Option "FingerHigh" "55"
EndSection

だいたい55くらいでいい感じの感度になりました。

おわり

ちなみにspectre x360にデュアルブートしてubuntuを入れてる状態なんですが、タッチパッドのクリック精度があまりよくないです。

それで最近悩んでたので良い機会でした。

ちなみにHPのサポートページに行くとバグってますね。

バグレットパッカード
support.hp.com

非常に困ってます、HPさん。

しっかりしてください。

Androidでgif動画を流す(Kotlin)

f:id:rdwbocungelt5:20180610170837j:plain

Glideを使えば簡単にgif動画を動かすことが出来ます。

Glideの最新はこちら。

↓謎の設計図共有サイト「ギットハブ」

github.com

導入方法はリンク先に乗ってます。

環境

Glide導入

一応やっておきます。

最新が4.7.1です。常にギットハブを確認して導入するようにしてください。

dependencies {
 ・
 ・
 ・
    implementation 'com.github.bumptech.glide:glide:4.7.1'
 ・
 ・
 ・
}

たったこれだけ。アプリケーション配下のgradleへ記述したらおk。

gifのリソースを準備する

app/res/raw配下に入れます。test.gifファイルがあると仮定して進めます。

ImageViewを準備する

gif動画を流すレイアウトファイルにImageViewを準備します。

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".CongratsActivity">

    <ImageView
        android:id="@+id/gifView"
        android:layout_width="304dp"
        android:layout_height="251dp"
        android:layout_marginBottom="56dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.125"
        app:layout_constraintStart_toStartOf="parent" />

</android.support.constraint.ConstraintLayout>

ImageViewのIDはgifViewにしてます。他の設定は適当です。

Activity側でgifをセット

package ~~~~~~~~

import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import com.bumptech.glide.Glide
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val gifMovie: Int = R.raw.test
        // gif画像のセット
        Glide.with(this).load(gifMovie).into(gifView)
    }
}

たったこれだけで動きます。素晴らしいですよね。

おわりに

細かい設定は謎の設計図共有サイトを見てやってみてください。

kotlinでgif動画を流すのがなかなかなかったので記事にしてみましたー。

では。

【備忘録】UbuntuへMuseScore2をインストール

f:id:rdwbocungelt5:20180605153558p:plain

公式を見るのが一番はやいかもしれないです。

musescore.org

ただアイコンの作成とかにほんのちょっとだけつまずいたのでメモとして。

環境

  • ubuntu 16.04.1
  • elementary OS 0.4.1 Loki(64bit)

MuseScoreのAppImageを取得

musescore.org

上記URLからAppImageをダウンロードします。

f:id:rdwbocungelt5:20180610120613p:plain

僕のUbuntuは64bitなのでNew computers (64-bit)を選択。

画面遷移し、少しするとダウンロードされます。

ディレクトリの作成から設定

現時点で特に何も設定してなければDownloadディレクトリに保存されていると思います。

Downloadsディレクトリ整理をしたときに誤ってMuseScoreのAppImageファイルを削除してしまったら大変です。

なので、MuseScore用のディレクトリをhomeディレクトリに作成し、AppImageを移動させます。

$ cd ~ && mkdir MuseScore

$ mv ~/Downloads/MuseScore-2.2.1-x86_64.AppImage ~/MuseScore

$ ls ~/MuseScore
MuseScore-2.2.1-x86_64.AppImage

これでおk

アイコンの作成

毎回ターミナルでAppImageを叩くのは面倒くさいので、デスクトップアイコンを作成します。

まずアイコンをgoogleさんから拝借します。

それをMuseScoreディレクトリに配置。
名前は適当に musescore-icon.pngとかにしときます。

次にデスクトップアイコンの設定です。

Ubuntuのデスクトップアイコンは/usr/share/applications配下に設定ファイルがあります。

ここにmusescore.desktopを作成。

$ sudo touch musescore.desktop

vimで設定を記述。

$ sudo vim musescore.desktop

[Desktop Entry] 
Encoding=UTF-8 
Version=2.2.1
Type=Application
Name=MuseScore
Icon=/home/users/MuseScore/musescore-icon.png
Path=/home/users/MuseScore
Exec=/home/users/MuseScore/MuseScore-2.2.1-x86_64.AppImage
StartupNotify=true

# usersは自分のユーザー名
# Nameはデスクトップでの表示名

これでアプリケーションにMuseScoreが表示され、ドックに追加できるようになりました。

終わりに

f:id:rdwbocungelt5:20180610123133p:plain

他のアプリでデスクトップにアイコンを作りたい場合はこれで応用できるかと。

とりあえずLinuxでもMuseScoreが使えるのはいろいろとはかどりますね。

【備忘録】ubuntuでbundle installするとmysqlでこける

なんかrails環境を作ると毎回mysqlに苦しめられる気がします。

環境

  • ubuntu 16.04.1
  • elementary OS 0.4.1 Loki

問題

自分のgithubにある既存のリポジトリをcloneしてからbundle installすると

An error occurred while installing mysql2 (0.4.10), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.4.10'` succeeds before bundling.

が出てきたので、ああ、mysqlが入ってなかったんだなとおもったけど、この現象は以前(前の会社の時?)にもあったので

$ gem install mysql2 -v '0.4.10'
Building native extensions. This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

    current directory: /home/user/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/mysql2-0.4.10/ext/mysql2
/home/user/.rbenv/versions/2.5.0/bin/ruby -r ./siteconf20180528-25364-imjoq2.rb extconf.rb
checking for rb_absint_size()... yes
checking for rb_absint_singlebit_p()... yes
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
checking for rb_big_cmp()... yes
checking for mysql_query() in -lmysqlclient... no
-----
mysql client is missing. You may need to 'apt-get install libmysqlclient-dev' or 'yum install mysql-devel', and try again.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/home/user/.rbenv/versions/2.5.0/bin/$(RUBY_BASE_NAME)
    --with-mysql-dir
    --without-mysql-dir
    --with-mysql-include
    --without-mysql-include=${mysql-dir}/include
    --with-mysql-lib
    --without-mysql-lib=${mysql-dir}/lib
    --with-mysql-config
    --without-mysql-config
    --with-mysql-dir
    --without-mysql-dir
    --with-mysql-include
    --without-mysql-include=${mysql-dir}/include
    --with-mysql-lib
    --without-mysql-lib=${mysql-dir}/lib
    --with-mysqlclientlib
    --without-mysqlclientlib

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /home/user/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/extensions/x86_64-linux/2.5.0-static/mysql2-0.4.10/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /home/user/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/mysql2-0.4.10 for inspection.
Results logged to /home/user/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/extensions/x86_64-linux/2.5.0-static/mysql2-0.4.10/gem_make.out

やっぱ一筋縄では行かない。

えらーめっせ見たら

必要なパッケージが入ってないっぽい。

$ sudo apt install libmysqlclient-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  libmysqlclient-dev
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
1,159 kB のアーカイブを取得する必要があります。
この操作後に追加で 7,021 kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libmysqlclient-dev amd64 5.7.22-0ubuntu0.16.04.1 [1,159 kB]
1,159 kB を 2秒 で取得しました (445 kB/s)     
以前に未選択のパッケージ libmysqlclient-dev を選択しています。
(データベースを読み込んでいます ... 現在 286554 個のファイルとディレクトリがインストールされています。)
.../libmysqlclient-dev_5.7.22-0ubuntu0.16.04.1_amd64.deb を展開する準備をしています ...
libmysqlclient-dev (5.7.22-0ubuntu0.16.04.1) を展開しています...
man-db (2.7.5-1) のトリガを処理しています ...
libmysqlclient-dev (5.7.22-0ubuntu0.16.04.1) を設定しています ...

$ gem install mysql2 -v '0.4.10'
Building native extensions. This could take a while...
Successfully installed mysql2-0.4.10
Parsing documentation for mysql2-0.4.10
Installing ri documentation for mysql2-0.4.10
Done installing documentation for mysql2 after 0 seconds
1 gem installed

行けた〜。

終わり

Welcome to WebsocketRails v0.7.0!

ということでうまく行きましたとさ。

【備忘録】Something went wrongでAndroidのReact Nativeが動かない

npmスタートしてAndroid端末に入れてたexpoを動かそうとしたけど、なんかうまくつながらんかった。

仮想デバイスは遅いので、実機を繋いでやってます。

環境

  • npm 5.6.0
  • node v10.2.1

something went wrong ...

とりあえずsomething went wrongで調べてみたらstackoverflowが出てきた。

以下。

stackoverflow.com

結論

wifiが同じになっていないだけだった。

実機とPCのwifiが別になっていたので上手くExpoが動いてないだけみたい。

こんだけでうまくいくとは思わなんだ。

ubuntuにwatchmanが入らない

React Nativeを入れるための環境構築をやっていましたが、まあ安定して詰まりました。

以下を参考にやった。

facebook.github.io

mae.chab.in

環境構築

  • npm 5.6.0
  • node v10.2.1

原因

$ create-react-native-app Sample

Unable to start server
See https://git.io/v5vcn for more information, either install watchman or run the following snippet:
  sudo sysctl -w kern.maxfiles=5242880
  sudo sysctl -w kern.maxfilesperproc=524288

よく調べてみるとwatchmanを入れてないからみたい。

なので、以下のwatchman公式を参考にcloneするところからやってみる。

facebook.github.io

$ cd ~

$ git clone https://github.com/facebook/watchman.git

$ cd watchman

$ git checkout v4.9.0

$ ./autogen.sh 
your system lacks libtoolize

$ ./configure
bash: ./configure: そのようなファイルやディレクトリはありません

なんかconfigureで躓く。

./autogen.shのときにうまく言ってるように見えたけど、メッセージ見てみるとエラーっぽい。

とりあえず、ubuntuの公式を見てみた。

Ubuntu – パッケージ内容検索結果 -- libtoolize

多分libtoolが入ってないからっぽいなぁ。

$ sudo apt install libtool
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  libltdl-dev
提案パッケージ:
  libtool-doc gfortran | fortran95-compiler gcj-jdk
以下のパッケージが新たにインストールされます:
  libltdl-dev libtool
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
355 kB のアーカイブを取得する必要があります。
この操作後に追加で 1,857 kB のディスク容量が消費されます。
続行しますか? [Y/n] y  
取得:1 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 libltdl-dev amd64 2.4.6-0.1 [162 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 libtool all 2.4.6-0.1 [193 kB]
355 kB を 0秒 で取得しました (390 kB/s)
以前に未選択のパッケージ libltdl-dev:amd64 を選択しています。
(データベースを読み込んでいます ... 現在 286451 個のファイルとディレクトリがインストールされています。)
.../libltdl-dev_2.4.6-0.1_amd64.deb を展開する準備をしています ...
libltdl-dev:amd64 (2.4.6-0.1) を展開しています...
以前に未選択のパッケージ libtool を選択しています。
.../libtool_2.4.6-0.1_all.deb を展開する準備をしています ...
libtool (2.4.6-0.1) を展開しています...
man-db (2.7.5-1) のトリガを処理しています ...
libltdl-dev:amd64 (2.4.6-0.1) を設定しています ...
libtool (2.4.6-0.1) を設定しています ..

お、いけた。

この状態で、

$ ./autogen.sh

$ ./configure

$ make

$ sudo make install

までいくと、上手くwatchmanが入った。

おわり

homebrewだともっと簡単だったんだけどなぁ〜。

でも、とりあえずReactNativeができるようになったのでよかった。

androidアプリを再度リリースしなおしたら「バージョン変えろカスが」と言われた

題名の通り・・・ではないですが、意味はあながち間違ってないです。

アプリを開くと落ちてしまうという、致命的なバグを残したままリリースをしてしまったため、バグ部分を改修しリリースしなおしたところ、「バージョンが同じなのでアップロードエラーですよ」とGoogle Play Consoleに言われてしまいました。

何をやらないといけなかったか

最初の手順通り、apkファイルを作成しなおしました。

Build -> Generate Signed APK...で以前作成していたkeystoreファイルを元に、パスワードを入力してapkファイルを作成しなおし。

その後、リリース画面でもう一度ファイルをアップロードしました。










「バージョン コード 1 の apk が既に存在するため、別のバージョン コードを使用する必要があります。」

バージョンを変える

先にapplication配下のbundleファイルのversionCodeを変えないといけないみたいでした。

以下を参考にした

アプリのバージョニング  |  Android Developers

やっぱり公式サイトが一番信用できますね。

f:id:rdwbocungelt5:20180521140159p:plain

(Module: app)の方の・・・

f:id:rdwbocungelt5:20180521140248p:plain

ここを変えたら良いだけ!

versionCodeを1から2へ変えて、versionNameをそれに対応した名前に変える。

書き方は公式サイトを参考にしてみてくださいー。

おわり

これで無事にアプリのアップデートが完了しました\(^o^)/

広告版をリリースしただけなので、きちんとしたものが完成したら、android for kotlinの書き方や、アプリの紹介等もしたいと思います。

では。