iPhone ライトニングケーブル
よく断線するライトニングケーブル。
今までは300~400円のものをまとめて5本とか買って、
その中で使えるものが1,2本あればラッキー的なやり方をしていました。
そうすると、充電状況が劣悪な気がして、バッテリーに負荷をかけちゃってるんじゃないかなーとか考えたり。実際どうなのか知らないですが・・・
ちょうど去年の今頃、適当にAmazonで買ってみて、コスパが良さそうなものを探してました。
1年使ってみて一番良かったのがコレですかね〜。
まず届いた時にちゃんと箱に入ってて少し感動。良い物感!みたいな。
1年経って、USB側の根元のゴムに若干のたるみがある程度で、断線するのはまだまだ先かな。
ふむ。1000円弱でちゃんとしてるの見つけれた。
5〜6本くらい開けて使ってみた感じ、1つ1つがハズレなしっぽいし。安心できます。
900円か。
てか、今レビュー見たけど、まぁ高いな笑
間違ってなかった。
vertx で EventBusによる通信をやってみた
event loop threadで動くWebsocketVerticleはできている。
それをどうMysqlVerticleに繋ぐかというところ。
マニュアルからイベントバスの構造理解をしないと話は進まない。
初心者なので、わからない単語を調べるところから。英語の勉強みたい。
・ピア・トゥー・ピア(P2P):サーバ同士が互いを対等として呼び合うことができるアーキテクチャ(対義:クラ-サーバ通信)
・ハンドラ:何らかの処理要求が発生したときに起動されるプログラムなど。本筋とは独立しており、普段は待機。
・ラウンドロビンアルゴリズム:優先度を決めない決定方法(完全ランダムな抽出に近いのか?)
・トランジェント:一時的な
<イベントバスAPIの作り方>
1.呼ばれて動くハンドラの作成
2.アドレスにハンドラの登録 及び アドレスからハンドラの登録解除
4.アドレスへメッセージのsend(対1の送信) or publish(対多の送信)
□メッセージとハンドラとアドレスの関係について
メッセージをアドレスに対して送信→アドレスに登録されたハンドラがメッセージを受信して処理を実行
□アドレスについて
・どんな文字列でもよいが、わかりやすさのために「名前空間をピリオドで区切る」などのルールがあると良い。
・一つのアドレスに複数のハンドラを登録することができる(Verticleの種類は問わず)
(一つのハンドラは複数のアドレスに登録することもできる)
□送信・配信時
リプライハンドラの指定により、キャッチボールのような交互の通信が可能になる
□メッセージで送れる型
Boolean, Buffer, byte[], Byte, Character, Double, Float, Integer, JsonObject, JsonArray, Long, Short, String
オススメ:JSONデータ(Vert.xがサポートする言語全てで簡単に作成・パースできる)
ふむ。とりあえずイベントバスで通信してみよう。
MysqlVerticle.java
import io.vertx.core.eventbus.EventBus;
public class MysqlVerticle extends AbstractVerticle {public void start() {
// ハンドラの登録
EventBus eb = vertx.eventBus();
eb.send("test.address", "hello test world");
}
}
TestVerticle.java
import io.vertx.core.Handler;
import io.vertx.core.DeploymentOptions;
import io.vertx.core.eventbus.EventBus;
import io.vertx.core.eventbus.Message;
import io.vertx.core.AbstractVerticle;
public class WebSocketVerticle extends AbstractVerticle {public void start() {
// ハンドラの登録
EventBus eb = vertx.eventBus();
Handler<Message<String>> myHandler = new Handler<Message<String>>() {
public void handle(Message<String> message) {
System.out.println("I received a message " + message.body());
}
};
eb.consumer("test.address", myHandler);
// MysqlVerticleデプロイ
DeploymentOptions options = new DeploymentOptions().setWorker(true);
vertx.deployVerticle("MysqlVerticle", options, res -> {
if (res.succeeded()) {
System.out.println("Deploy SUCCESS.");
} else {
throw new RuntimeException(res.cause());
}
});
}
(追加した箇所の切り抜きだから、これだけを作っても動かないかもしれないけど)
2箇所困った点
・message.bodyじゃダメで、message.body()に修正が必要だった
・vertx.eventBus().registerHandler("hoge", handler);は
vertx3だとvertx.eventBus().consumer("hoge", handler);に代わったぽい。
エラー: シンボルを見つけられません
eb.registerHandler("test.address", myHandler);
^
これで引っかかり。メソッドが代わってることに気づき・consumerを見つけるまでに時間かかった。。。
とりあえず動いたー。
あれ、、、Worker threadでのデプロイにしてないかも・・・?
vertx で mysql を扱いたい、その準備1
プログラマーの基本は効率化!その2
プログラミング初心者の皆さん、
こんにちは、優雅な休日を過ごすユーシーです。
タイトルの通り、
前回に引き続き、効率化の第2弾。
今回は、linux&gitのalias機能について。
「git」の説明については、また後日。
例えば頻繁にとある操作をする方、
例:「$ git push origin master」
「$ git po master」とかに省略したくないですか。
で、あればgitconfig(ギットコンフィグ)に登録ですね。
手順
1. $ vim /etc/gitconfig
2. 適当なところに下記を追加
[alias]
po = push origin
3.保存するだけ。
早速、$ git po master を実行してみると、、、
push originできちゃう!
<解説>
・[alias]
┗この下に書いたXX = YYを、git XX = git YYとして実行しますよー。という呪文
・さらに下記のようなものを入れてます。便利なものはどんどん入れちゃいましょう。
st = status
co = checkout
br = branch
ba = branch --all
cm = commit -m
dw = diff --color-words
loga = log --graph --decorate --oneline
お決まりのコマンドがある方は登録しないと損しますよ〜
次回はgitの素晴らしさについて説くかな〜
最初は面倒に感じるかもですが、その威力は絶大!
では、引き続き頑張りましょ〜
プログラマーの基本は効率化!その1
プログラミング初心者の皆さん、
こんばんは、夜中からお部屋の掃除をしました、ユーシーです。
タイトルの通り、
プログラマーの基本は、如何にして効率化をしまくるか。
基本というか、醍醐味というか。
というわけで、便利ツールとか便利コマンドを見つけたらどんどん共有します。
今回は、linuxのalias機能について。
「linux」の説明については割愛させていただきます。
例えば頻繁にとあるディレクトリ(フォルダ)に移動して作業する方、
例:「$ cd /data/user/hoge/」
「$ cdhoge」とか「$cdho」とかで移動したくないですか。
で、あればalias(エイリアス)の登場ですね。
手順
1. $ vim ~/.bash_profile
2. 適当なところに下記を追加
alias cdho='cd /data/user/hoge/'
3.保存して、 $ source ~/.bash_profile(またはターミナルなど開き直す)
早速、$ cdho を実行してみると、、、
移動できちゃう!
<解説>
・alias xxx='yyy'
┗xxxをyyyとして実行しますよー。という呪文
・.bash_profileに入れると、起動時に必ず読み込まれるので、楽チン。
お決まりのコマンドがある方は登録しないと損しますよ〜
次回はgitコマンドのalias登録方法も紹介します〜
.gitconfigに書くだけなんですが・・・。
では、引き続き頑張りましょ〜
gradle、インストールしてみた
プログラミング初心者の皆さん、
こんばんは、ユーシーです。
- Groovyで書く、便利なbuildツール
めちゃくちゃざっくり言ってみるとこんな感じでしょうか。
ま、とりあえずどこが便利かは使ってみて考察考察〜
手順
1.sdkmanをインストール
$ curl -s "https://get.sdkman.io" | bash
2.gradleをインストール
一旦、ターミナルを再起動
$ sdk install gradle
3.build.gradleの生成(初期化)
$ gradle init
4.build.gradleの編集
$ vim build.gradle
dependencies {
compile 'com.google.android.gms:play-services:7.8.0'
}
こんな感じでdependenciesの中に記述
5.IDEA用にインポートファイルを作る
$ ./gradlew idea
ふむ、今日はステップ4の途中で時間切れ。
続きはまた次回!
ではでは〜