20200702のMacに関する記事は3件です。

爆速シリアライズSimple Binary EncodingをRustで導入

https://speice.io/2019/09/binary-format-shootout.html
このサイトによると、FlatbuffersやCap’n Protoよりも断然速いSBE(Simple Binary Encoding)というのがあるらしいので、動かしたくなった
しかし、あまりにも誰も使われなかったので、公式のRustサポートがなくなったらしい

もう少し評価されても良いコードだと思ったので、導入方法だけ書いておく
(日本で、少し流行らねえかな)

サンプルを動かす

普通にgithubからcloneして、
https://github.com/real-logic/simple-binary-encoding

git checkout 23e8c16caf03d2b073bc850f37b1fb68cecbe54a

公式のRustのサポート終了したバージョンまで戻します。
ターミナルで、rootディレクトリまで行って、

./gradlew
と入力します。
(Javaを誰でもビルドできるようにするツールらしい)

次に
./gradlew generateRustCodecs
と入力します。
これで、sbe-samples/src/resources/...のxmlが、rust/car_example/src/car_example_generated_codec.rsに変換されました。
このrsファイルを使えば、依存crateがなく純粋なRustのコードだけで、SBEにシリアライズ/デシリアライズが可能になります。

自分のスキーマを書く

build.gradleから、generateRustCodecsで実行される行動を変更できます
build.gradleのtaskに書いてあるdependsOnのアクションが実行されるようになってるみたいです

build.gradle
task generateRustTest(type: JavaExec) {
    main = 'uk.co.real_logic.sbe.SbeTool'
    classpath = project(':sbe-all').sourceSets.main.runtimeClasspath
    systemProperties(
        'sbe.output.dir': 'rust/my-proj',
        'sbe.xinclude.aware': 'true',
        'sbe.target.language': 'uk.co.real_logic.sbe.generation.rust.Rust',
        'sbe.target.namespace': 'my_codec')
    args = ['mine/my-entity.xml']
}

task generateRustCodecs {
    description = 'Generate rust test codecs'
    dependsOn 'generateRustTest' // 新しく追加
    // dependsOn 'generateRustCarExample', 'generateCarExampleDataFile' // 元々の実行関数
}

などとします。

スキーマは、
xmlの
sbe:messageSchemaの中に書きます
以下、
xi:includeで、他の読み込むxmlを書きます
typesでエイリアスタイプを定義します
sbe:messageにそのEntityの内部変数を定義します。

最後に

最近、SBEのRustのサポートは終了したのですが、現状、多言語間で通信可能な、最速に近いバイナリフォーマットっぽいので、いろいろ使い道はありそうです。Googleの、Flatbuffers, Protobufも悪くないのですが、SBEは完全に独立していて、高速に動くし、割といいのでは?と思ってます。

Rustの流行度次第では、またサポートもすぐに再開するかもなので、RustとSBEがもっと流行ればいいなと個人的に思ってます。

あと、serdeとかあるし、逆にRustのコードから、SBEのスキーマを書き出すのも普通にできそうですよね。(簡単そうならやってもいいかも)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【comandLine】 一言で コマンドライン 各種コマンド ターミナル

【ゴール】

mac terminalにおけるコマンドラインの理解

【メリット】

■ 作業効率UP

【環境】

■ Mac OS catalina
■terminal

【その前に...】

カレントディレクトリ  = 今作業しているところ

コード内「~~~~~」はユーザによって表示が異る

以下のディレクトリ構造と仮定します。

hoge.terminal
Desktop
 - work
   - practice
     -index.html  

【コード】

pwd

カレントディレクトリを確認

~~~~~~:~~~~~$ pwd
/Users/~~~~~~

ls

カレントディレクトリ内のファイルを確認

~~~~~~:~~~~~$ ls
Desktop

cd

移動

~~~~~~~:~~~~~$ cd Desktop/practice
~~~~~~~:practice ~~~~$ cd index.html 
~~~~~~~:index.html ~~~~~$

cd ..

一個前のディレクトリに移動

~~~~~~~:index.html ~~~~~$ cd ..
~~~~~~~:practice ~~~~$

mkdir

カレントディレクトリに新規フォルダを作成

~~~~~~~:practice ~~~~$ mkdir challenge

touch

カレントディレクトリに新規ファイルを作成

~~~~~~~:practice ~~~~$ cd challenge
~~~~~~~:challenge~~~~$ touch geho.html

mv

ファイルやフォルダを任意の場所に移動

~~~~~~~:challenge~~~~$ mv cahllenge practice

mv

ファイルやディレクトリの名前を変更

~~~~~~~:parctice~~~~$ cd challenge
~~~~~~~:challenge~~~~$ mv geho.html hoge.html

rm

ファイルを削除

~~~~~~~:challenge~~~~$ rm hoge.html

rm -rf 

フォルダを削除

~~~~~~~:challenge~~~~$ cd ..
~~~~~~~:challenge~~~~$ rm -rf challenge

以上、最終的に
最初と同じディレクトリ構造になっている。

【合わせて読みたい】

■ 【Javascript】 メソッド まとめ 基礎基本コード メモ
https://qiita.com/tanaka-yu3/items/2438798d159fa402b1d5

■ 【Rails new】Ruby on rails アプリケーション作成
https://qiita.com/tanaka-yu3/items/3fe1ed2852c6513d3583

■ 【メソッド集】 rails メソッド まとめ 基礎 随時追加
https://qiita.com/tanaka-yu3/items/89abad875187494bec53

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MacでMysql構築で手間取ったので備忘録

MacでMysql使いたいけどうまくログインができない

インストールしてmysql -urootしても
エラー起きるううう!!!!何でだあぁぁあぁぁぁぁぁぁぁ(z会)

となりませんか? 私はなりました。

MACでのデータベース作成について

何はともあれインストールしてない人はインストールしましょう。
初めてのインストールの場合は以下の --skip-grant-tables のオプションをつけて起動してください。

zsh.コマンド
brew install mysql
mysql.server start --skip-grant-tables

これで上手くいくはずです。

ERRORが起きる場合

もし、既にインストールされていた場合は上記のコマンドを打つと、下記のように「既に存在してるんじゃバカたれ」と怒られてしまいます


zsh.コマンド
2020-07-01T13:47:46.6NZ mysqld_safe A mysqld process already exists

と出た場合は

brew services stop mysql
mysql.server start --skip-grant-tables

を行ってください。 もしダメなら全て消して大丈夫な場合はbrew uninstall mysql を行なってから一番上のものを試してください

このようなことに陥る理由としてはおそらく

mysql.server start --skip-grant-tables

をする前に

mysql.server start

を行なっている可能性があります。

最後に

データベース使いたいと思っても何らかのエラーが出てしまって困りますよね(経験談)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む