慶安のWIN-70Bのジャンクをもらったので修理してみる

こんばんは。

インターネットフレンドの铃宫くんから、慶安のWIN-70Bをもらったので、治してみたいと思います。

状態

  • 通常起動可
  • タッチパネル操作不可

こんな感じ。
つまりタッチパネル不良のジャンク、というわけですね。

外傷はなく、特別壊れている感じはありません。

推測

中華タブレットをたくさんいじってる人ならまぁわかると思うんですが、中華タブレットのタッチパネルが効かなくなる原因のほとんどが、ドライバの不足なんですよね。

特に、DoubleDriverなどを使ってもバックアップできない(個別にする必要がある)SileadTouch.fwというドライバ、これがないとタッチパネルが反応しません。

状態を聞いた時、まずこれが浮かびました。

準備

とりあえずドライバを揃えます。

慶安のこのタブレットは、いろんな型番で販売されているらしく、「KEM-70B」と「KVI-70B」のドライバと互換性があるみたいです。

そこでまずは、 KEM-70B KVI-70B ドライバーはここにある! さんのリンクから、ドライバとSileadTouch.fwをダウンロードしました。

開封

届いたので開封します(開封済みだけど)。

Image from Gyazo

こんな感じの普通のタブレットですね。

Image from Gyazo

中には保証書とマニュアルがありました。

まぁ読まなくてもどうにかなるでしょ

Image from Gyazo

外見は聞いていた通りめっちゃ綺麗でした。

とりあえず充電せずに起動してみると

Image from Gyazo

あっさり起動しちゃいました。

そして…………やっぱりタッチは効きませんでした。そりゃそう。

Image from Gyazo

パソコンの情報を見てみると、タッチパネルは認識されています。

ということは、タッチパネル・ドライバは存在するようです。

修理編

それではやっていきましょう。

まずは環境を整えます

Image from Gyazo

充電可能なMicroUSBハブにマウスとキーボードを接続します。

全部つなげるとこんな感じになりました。
カオスですね。

Image from Gyazo

まずはUSBメモリにSileadTouch.fwを入れ、差し込みます。

Image from Gyazo

それを、C:\Windows\System32\driversに入れます。
この際管理者権限を求められるので許可します。

その後、再起動しましょう。

私の場合、この方法では治りませんでした。

タップは反応するようになりましたが、思い通りのところにタップされません。

そんなときは、まずコントロールパネルにアクセスして

Image from Gyazo

ハードウェアとサウンドのタブレットPC設定を開きます。

Image from Gyazo

そしてディスプレイオプションに「リセット」があるので選択します。

すると、使えるようになりました。
タッチ修理成功です!

こんな感じです。

参考になりましたかね?
最後に参照したサイトを貼っておきます。

KEM-70B KVI-70B ドライバーはここにある!

WinTab7(Win-70B)のWindows10 大型アップデート苦戦 No.1 | 青猫の道草日記 - 楽天ブログ

Ployer MOMO7(or MOMO8) SileadTouch.fw を失いタッチパネル使用不可 - Windows10 1909 をクリーンインストールして失敗 | ふるた技工所(てっこうしょ) - 楽天ブログ

KEIAN KVI-70B ドライバ保管庫 | Windows 高速化,EeePC,ネットブック カスタマイズ・改造・便利なオプション紹介

価格.com - KEIAN KEM-70B のクチコミ掲示板

Hexoでテーマの設定ファイルをGithubで保持する方法

こんにちは、巳波みなとです。

このブログ、Hexoという静的サイトジェネレーターで生成、GithubPagesでホストしているのですが、これらのテーマ設定が少し厄介だったので紹介します。

テーマのインストールの仕組み

テーマがインストールされるとき、サイトファイルのthemesの中にファイルが保存されるんですが、それは「Git submodules」という仕組みで管理されています。

この中で行われた変更は、なんと自分のリポジトリにコミットすることができません。

これはどういうことかというと、テーマに関して設定したことが、他の環境でgit cloneしたときには消えているということです。

テーマのconfigの上書き

実は、これへの対策として、テーマの_config.ymlファイルを上書きする仕組みが用意されています。

Configuration | Hexo

その方法は、ルートディレクトリ(db.jsonやpackage.json、_config.ymlがあるディレクトリ)に、_config.[テーマ名].jsonファイルを作るというやり方です。

これによって、_confit.[theme].jsonが、テーマの_configファイルよりも優先して読み込まれるように設定できます。

そんだけ

Go言語ことはじめ

環境

  • Windows10
  • Chocolatey導入済み

Go言語の導入

choco install golang を実行すると、Go言語をインストールできます。
更新するときは choco upgrade golang でできます。

VSCodeに拡張機能を導入

Image from Gyazo

拡張機能検索にGoと入力すると、一番上に公式の拡張機能が出てくるのでインストールします。

インストールが終わったら、コマンドパレット(Ctrl+Shift+P)を開き、Go: Install/Update Toolsを検索して、実行します。

すると、拡張機能の動作に必要なツール一式がダウンロードされます。

これで拡張機能の導入は完了です。

書いてみる

hello.goを作成します。
内容を以下のように作成します。

1
2
3
4
5
6
7
8
9
package main

import (
"fmt"
)

func main() {
fmt.Println("Hello, world.")
}

そして保存、go run hello.goを実行するとHello, world.が実行されます。

解説

package

感覚的にはJavaやC#などの名前空間に近いですが、厳密には違うものみたいです。

これは、importするときに指定される名前です。

基本的にはディレクトリ名を付けることが推奨されていて、例えばappというディレクトリにmain.goを作ったとすると、最初をpackage appとすることが推奨されているということです。

Go Modulesの仕様上、外部からダウンロードしたパッケージと被っても問題ありません。

そこらへんはここに書いてます Goで独自パッケージがimportできない - MinatoNote

そしてこれが最も重要ですが、ルートディレクトリに配置されているプログラムはpackage mainとする必要がります。

そうしないとgo run: cannot run non-main packageというエラーで実行できません。

import

パッケージをimportします。

今回は、fmtというgolangの入出力を司るパッケージをimportしました。

golangには、github上に無数のパッケージが存在していて、go get [repos]というコマンドで簡単にダウンロード、importすることができます。

これによって、開発を高速化することが可能です。

func main()

funcと聞けば関数ということはまぁわかると思うんですが、golangでは、main()という関数が一番最初に実行されます。

なので、func main()としています。

mainパッケージ内では、かならずmain関数を書かなければなりません。

mainパッケージにmain関数が存在しない場合は function main is undeclared in the main package エラーが発生します。

おわり

以上がGo言語ことはじめです。

正直今回は、Goを使う上での目玉機能には全く触れていません。

  • めっっちゃ楽な並列処理
  • ビルドして高速実行できる機能

など、Goには素晴らしい機能が何個かあります。
これはもしかしたら続きの記事を作るかもしれないです。

Goで独自パッケージがimportできない

現在、以下の構成

1
2
3
4
5
warbot-go
├ test
│ └ test.go
├ go.mod
└ hello.go

この状態でhello.goからtest.goをimportできない。
まず、保存しようとするとコードが消える

これはVSCodeに入れているGolintが消してるっぽい
ログには
Not able to determine import path of current package by using cwd: c:\Users\Minato86\repos\MyRepository\warbot-go and Go workspace:
と記録されていた。

まずは今の状況を振り返っておくと

  • go mod init warbot-goでmodを初期化済み
  • go envGO111MODULEはonになっている

というわけで、今はGo Modulesが使える環境が整っているはずです。

main.gotest.goは以下のようになっています

main.go

1
2
3
4
5
6
7
8
9
10
11
package main

import (
"fmt"
//ここに"warbot-go/test"をimportしたい
)

func main() {
fmt.Println("Hello, world.")
}

test.go

1
2
3
4
5
6
7
8
9
package test

import (
"fmt"
)

func Test() {
fmt.Println("test module ready.")
}

linterを無効にしてみる

2fd55a2ce3bace7661665a70d5dd51c9.png

VSCodeのワークスペース設定から、Lint On Saveをoffにしてみる。

結論からいうと、offにしたのに普通に実行された。
なんでや。と思ったら、どうやらこの動作はlinterの仕業ではなく、formatterの仕業みたい。

formatterを変えてみる

b373f1c941646a7873dc5913665eb082.png

デフォルトのgoreturnsではなく、gofmtに変えてみた。
結論から言えば、うまくいった。

1
2
3
4
5
6
7
8
9
10
11
package main

import (
"fmt"
"warbot-go/test"
)

func main() {
test.Test()
fmt.Println("Hello, world.")
}

消されずにこのように書くことができた。
また、普通に実行できた。

そういえば

Githubでリポジトリを公開する場合、こっちのほうが正しいっぽい

go mod init github.com/chipsnet/warbot-go

あとはimportもgithub.com/chipsnet/warbot-go/testに書き換える。

↓GoなんもわからんからDiscordBotを作っている
GitHub - Chipsnet/warbot-go: WARbot written in golang

Material UIのTabsのindicatorのCSSをいじる

1
2
3
4
5
6
7
8
9
10
11
const StyledTabs = withStyles({
indicator: {
display: "flex",
justifyContent: "center",
backgroundColor: "transparent",
"& > span": {
maxWidth: 0,
width: "100%",
},
},
})((props) => <Tabs {...props} TabIndicatorProps={{ children: <span /> }} />);

こんな感じ
上記はindicatorのmaxWidthを0にして消してます

あとは通常<tabs></tabs>なところを<StyledTabs></StyledTabs>に変える
これでおk

基本的にはリファレンスとかに書いてあります
以下参考ページ

Tabs React component - Material-UI
Tabs API - Material-UI

Google Cloud Platformの請求先アカウントとはなにか

結論からいうと、請求情報が入った箱みたいなやつ

請求先アカウント、必要ある?

  • プロジェクトごとの請求先(クレジットカードとか)が分けられるので管理が楽になるぞ
  • 請求先アカウントごとに費用のレポートや概要が出るので、プロジェクトごとの費用がわかりやすいぞ
  • 請求先アカウントごとに予算が決定できるので、柔軟な予算設定ができるぞ

といった感じでした。

Azureで言うところのサブスクリプションですね。

結論

料金設定や管理を柔軟にするための仕組みでした

WindowsでNode.jsのバージョン管理をしよう

前提

  • Chocolaty導入済み
  • Node.js導入済み
  • Windows10

選択肢

WindowsのNode.jsバージョン管理ツールには2種類ある

  • nodist
  • nvm-windows

nvm-windowsとnodist、どちらも人気があるように思える
とりあえず今回は頻繁にメンテナンスされている(ように見える)nvm-windowsを使う

Node.jsのアンインストール

Node.jsがあるとnvm的に問題がある(nvm側に切り替わらない)らしく、まずはNode.jsをアンインストールしておく。

これは各自やってください。

インストール

choco install nvm -y

これで勝手にインストールされます。
やったぜ

バージョン切り替え

nvm list available で、インストールできるNodeバージョン(一部)がリストで出ます。

nvm install [version] で指定したバージョンのNode.js(とnpm)がインストールされます。

nvm list で、インストール済みのNode.js一覧が見れます。

nvm use [version] で、インストールしたNode.jsに切り替わります。

nvm use を実行しないと切り替わらないので注意

おわり

めちゃ簡単でしたね。これでいろいろ楽になりそうです。

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に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とかで実行したほうがいいと思います。