SHIINBLOG

メールやメッセージをまとめて管理できる Rambox

f:id:zeronosu77108:20171228085013p:plain

Twitter・Slack・メールなどまとめて管理できる Rambox が便利!

rambox.pro

別々のアプリで開いていると,ウィンドウがごちゃごちゃして作業がしづらい.

複数のデスクトップを設定して,ショートカットを設定するといくつアプリ開いていても困らないのかもしれないけど,
僕は,デスクトップは1つで,複数のディスプレイを使う派なのでそれは微妙…

ということで まとめて管理できる Rambox

17/12/27 現在 95サービス対応しているらしい!

Twitter・Slack はもちろん最近よく使う Discord も使える.

ダウンロードしてきて開いたら
すぐ管理画面で,追加したいサービスのアイコンをクリックするだけで追加できる

f:id:zeronosu77108:20171228115259p:plain

名前を付けたり,アイコンの右寄せや通知の設定をして Add すると追加されて
後はそのタブを開いてログインするだけ.

1つしか開かないサービスは,名前を空にしておくとアイコンだけになってすっきりする. 後からタブを入れ替える事もできるし,

結構便利なので,いろいろなサービスを使っている方は使ってみてはどうでしょう.

Python で ナップサック問題 を 総当たりで解く

Python3 でナップサック問題を総当たりで解くプログラムを書く機会があったので.

ナップサック問題総当たり

ナップサックに入れるか入れないかを2進数で判断している. 入れるなら 1 , 入れないなら 0 となる.

品物が15だとしたら,15ビットの2進数だと考えられる.
そこで,10進数の「0〜32767」 までを調べる.
2進数では 000000000000000 〜 111111111111111

それで,全ての組み合わせを求めることができる.

Fitbit blaze が届いて1ヵ月

9/29 に Fitbit blaze が届いた. Sony の SmartBand 2 を持っていたんだけど,なくしてしまったので 買ってみた.

f:id:zeronosu77108:20171029231419j:plain

中身はこんな感じ.

f:id:zeronosu77108:20171029231418j:plain

他にもバンドから外さずに充電できるスタンドとかも買った.

f:id:zeronosu77108:20171029231652j:plain

時計の見た目もいくつか選べるんだけど, 時間,日付・曜日が読みやすいこの見た目にしてる.

(時間に関してはもっと見やすい色が良いんだけど)


歩数に関しては, Wrist Placement を Dominant にしないと ゆるすぎる.

Dominant にしたら良い感じ.


Xperia X compact は正式に対応してないらしく, たまーに変な挙動する.


Notifications は, Xperia X compact だからか, サイレント状態だと blaze に通知してくれない.

最近は,ずっとバイブ状態.


特にダメなのは Bluetooth で接続して Music control が出来ない. 読み込み中ってずっと出てる.


Music control が出来ない以外は割りと満足している.

けものフレンズ言語 を触ってみた(BrainFuck も)

Twitter で流れてきた けものフレンズのプログラミング言語

github.com

すごーい!

書いてみた

たのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!うわー!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たのしー!すっごーい!わーい!すごーい!たーのしー!たーのしー!たーのしー!なにこれなにこれ!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!うわー!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たのしー!すっごーい!わーい!すごーい!たーのしー!なにこれなにこれ!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!うわー!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たのしー!すっごーい!わーい!すごーい!すっごーい!なにこれなにこれ!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!うわー!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たのしー!すっごーい!わーい!すごーい!たーのしー!なにこれなにこれ!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!うわー!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たのしー!すっごーい!わーい!すごーい!なにこれなにこれ!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!うわー!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たのしー!すっごーい!わーい!すごーい!たーのしー!なにこれなにこれ!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!うわー!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たのしー!すっごーい!わーい!すごーい!なにこれなにこれ!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!うわー!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たのしー!すっごーい!わーい!すごーい!すっごーい!すっごーい!なにこれなにこれ!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!うわー!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たのしー!すっごーい!わーい!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!なにこれなにこれ!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!うわー!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たのしー!すっごーい!わーい!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!なにこれなにこれ!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!うわー!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たのしー!すっごーい!わーい!すごーい!たーのしー!なにこれなにこれ!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!うわー!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たのしー!すっごーい!わーい!すごーい!なにこれなにこれ!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!うわー!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たのしー!すっごーい!わーい!すごーい!なにこれなにこれ!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!うわー!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!たのしー!すっごーい!わーい!すごーい!たーのしー!たーのしー!たーのしー!たーのしー!たーのしー!なにこれなにこれ!
$ ./kemono kemono_frind.kemono
Kemono Friends

脳がとろける たーのしー!


BrainFuck 系言語というものを初めて触ってみた.

これは+とか>で書く本家? の BrainFuck を触ってみるしか無い!

ということで触ってみた

++++++++[>+++++++++>++++++++++++>+++++++++++++>++++>+++++++++++++++>++++++++++++++<<<<<<-]>.>+++++.>++++..+++.>.>-.<<.>>>++.<<<---.<-.>>+.

これで Hello world! が出力できるけど,これじゃちょっと・・・

++++++++
[
  >+++++++++
  >++++++++++++
  >+++++++++++++
  >++++
  >+++++++++++++++
  >++++++++++++++
  <<<<<<
  -
]
>.
>+++++.
>++++..
+++.
>.
>-.
<<.
>>>++.
<<<---.
<-.
>>+.

インデントを付けるとかなり分かりやすくなった. これはこれで たーのしー!

また今度 BrainFuck 書いてみよう.

Ruby で gnuplot (簡単なグラフを楽に吐き出したい)

Rubyスクリプトで簡単なグラフを書き出せるようにしたい

とりあえずプロットしてグラフの形を見てみたいって事が良くあるので,とりあえず簡単なグラフなら書き出せるようにスクリプトを書いてみた

ruby plot.rb svg test_plot test.txt

なんてやれば test_plot.svg という名前で出力してくれる。 test.txt の部分で複数ファイル指定した場合,1枚にプロットしてくれる。

オプション

オプションで色々指定できるようにしてみた。

オプション
-t title -t の後にタイトルを与えることでグラフにタイトルを付けることができる
-x xlabel -x の後に(ry x軸のラベル
-y ylabel -y の後n(ry
-w style -w の後にグラフのスタイルを指定をすることができる。 l lp boxes など
-g グリッドをオンにする
-h ヘルプ(あんまり役に立たない)

バイト休憩に作ったスクリプトだからおかしなところがあったら教えてちょ
logscale のオプションを作ろうとしてたけど,めんどくさくて辞めたのは内緒

そして初めて gist 使った。


追記
モジュール入れないと動かないことを忘れていた。

sudo gem install gnuplot

とかやってくださいな。

3/6追記
logscale もちゃんと実装しました

mdfindのクエリ

課題でmdfindを使う必要が出てきたのでメモ

mdfindでCファイルを見つけたい。 mdfindはメタデータを使って引っ張ることができるようだ。

しかし,メタデータはどうやって調べるのか

メタデータ属性にどのようなものがあるのかを知るには,'mdls' コマンド

あの日,mdfind が見つけたもの - ばかもりだし

メタデータにはどんなデータがあるか調べるには,mdlsというコマンドを使えば良いらしい。 mdldに引数と与えるだけでメタデータが見られるようだ。

メタデータ確認用にCファイルを作って試してみる

touch test.c
mdls test.c

するとこのように表示された

_kMDItemOwnerUserID            = 501
kMDItemContentCreationDate     = 2015-12-20 09:00:55 +0000
kMDItemContentModificationDate = 2015-12-20 09:00:55 +0000
kMDItemContentType             = "public.c-source"
kMDItemContentTypeTree         = (
    "public.c-source",
    "public.source-code",
    "public.plain-text",
    "public.text",
    "public.data",
    "public.item",
    "public.content"
)
kMDItemDateAdded               = 2015-12-20 09:00:55 +0000
kMDItemDisplayName             = "test.c"
kMDItemFSContentChangeDate     = 2015-12-20 09:00:55 +0000
kMDItemFSCreationDate          = 2015-12-20 09:00:55 +0000
kMDItemFSCreatorCode           = ""
kMDItemFSFinderFlags           = 0
kMDItemFSHasCustomIcon         = (null)
kMDItemFSInvisible             = 0
kMDItemFSIsExtensionHidden     = 0
kMDItemFSIsStationery          = (null)
kMDItemFSLabel                 = 0
kMDItemFSName                  = "test.c"
kMDItemFSNodeCount             = (null)
kMDItemFSOwnerGroupID          = 20
kMDItemFSOwnerUserID           = 501
kMDItemFSSize                  = 0
kMDItemFSTypeCode              = ""
kMDItemKind                    = "C source"
kMDItemLogicalSize             = 0
kMDItemPhysicalSize            = 0

この中で使えそうなのは,kMDItemKind = "C source"あたり。

mdfind kMDItemKind = "C source"

実行! ・・・ 何も表示されない


もう一個使えそうな kMDItemContentType = "public.c-source"とか使ってみる。

mdfind kMDItemContentType = "public.c-source"

すると.cファイルがずらずらと表示された。

kMDItemKindでは表示できない理由は分からないが.cファイルを表示することができた。


2017/11/09追記

kMDItemDisplayName 使ったほうがよさそう?

mdfind kMDItemDisplayName = "*.c"

とかで.

MySQLでランダムな数値が入ったデータを用意する

ランダムな数値データが入ったDBが作りたい

課題でMySQLでランダムな数値が入ったデータが大量に必要になったので,その作り方をメモしておく


  1. 適当なテーブルを作る
  2. まずは,1つ空のデータを入れる
  3. データの数を倍にする
  4. データの成形
  5. 必要な数以上は消す
  6. ランダムな数値を入れる

適当なテーブルを作る

create table tb1(id int, num int);

まずは,1つ空のデータを入れる

insert into tb1() values();

tb1をtb1に挿入する(倍にしていく)

insert into tb1(id) select 0 from tb1;

これを好きなだけ繰り返す


管理用にIDに番号をふる

idの値を連番で値を入れる

set @i=0;
update tb1 set id=(@i := @i+1);

欲しい数で削除する

30万のレコードが欲しい場合

delete from tb1 where id > 300000;

なんてやれば良い。


ランダムな値を入れる

ランダムな1〜30000の数値を入れてみる

update tb1 set num = ceil(rand() * 30000);