手軽に gitignore をいい感じにする。

twitter でgitignore についてちょっと話題に上がってたので、自分のgitignore の管理方法についてドヤしたい。

正直、.gitignore を書くはが面倒なのはすごくわかる。 とはいえ、.gitignore を書かなくて .DS_Store とか あげるのもだるい。

そこで紹介したいのは、gitignore.io を利用した .gitignore のテンプレート生成 コマンドを使う方法です。

前提として、curl コマンドを使うので、事前にインストールしておいてください。

作り方

git のサブコマンドとして git ignore を使える様にします。

以下のコマンドをターミナルから実行します。

// サブコマンドを作る
% echo 'curl -L -s https://www.gitignore.io/api/$@' | tee /usr/local/bin/git-ignore

// 実行権限追加
% chmod +x /usr/local/bin/git-ignore

これで git ignore サブコマンドが使える様になったはずです。

使い方: mac のgitignore を作る

たとえば、mac についての gitignore を作りたい時は、次の様に実行します。

% git ignore macos

# Created by https://www.toptal.com/developers/gitignore/api/macos
# Edit at https://www.toptal.com/developers/gitignore?templates=macos

### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon

# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

# End of https://www.toptal.com/developers/gitignore/api/macos

こういう風に、mac で頻出するであろうファイルについてのgitignore が生成されるので、.gitignore にリダイレクトすればよかろう。

% git ignore macos >> .gitignore

使い方: 複数のgitignore を同時に作る。

maclinuxvim に関してのgitignore を同時に作りたい時、ありませんか? そういう時は、コンマ区切りで指定することで、同時にgitignore を作ることができます。

% git ignore macos,linux,vim
(アウトプットは各自確認してみてください)

注意点

このコマンドは、gitignore.io http://gitignore.ioapi に完全に依存しています。

OSS で開発されていますので、アクセスログなどを取得するのを気にする方は、自前でビルドして使うこともできます。 https://github.com/toptal/gitignore.io

参照

docs.gitignore.io

ユダヤ人の教え

人格について

  • 自分のことだけ考えている人間は、自分である資格すらない。
  • 幼い子供は厳しくしつけるべきだが、子供が怯えるようなことがあってはならない。
  • 豊かな人とは自分の持っているもので、満足できる人のことである。
  • 人を賞賛できる人こそ、本当に誉れ高き人である。
  • 嫉妬は1000の目を持っている。しかし、何一つ正しく見えていない。
  • 神の前で泣き、人の前で笑え。
  • 自分の肩書きを人に教えようとする人間は、すでに自分の人格を傷つけている
  • 何も打つ手がないときにも、ひとつだけ必ず打つ手がある。それは、勇気を持つことである
  • 失敗を恐れる方が、失敗を犯すよりも悪い
  • 自分より賢い者に負ける方が、自分より愚かな者に勝つよりも得だ
  • 最も大切な事は、学習ではなく、実行である
  • 相手の立場に立たないで、人を判断するな
  • もしあなたの周囲に傑出した人がいないなら、あなたがならなければならない
  • 不幸を悲しむのは、不幸が起こってからでも遅くはない
  • 子供は、両親が家で話すことを街でしゃべる。
  • 人生では、時には愚か者を演じなければならない時がある。
  • 自分の力ではどうにもならないことは、心配するな。
  • 貧乏人と病人の忠告にはいつも真意がある
  • みずからを高きにおく者は、神によりて低きに堕とされ、みずからを低きにおく者は、神によりて高きに上げられる。
  • 美徳と証するものは、他人の嫉妬を刺激するものだが、 控えめであることだけは例外だ。

お金について

  • 金をなくしても、何も失わない。誇りをなくせば、多くを失う。 勇気をなくせば、すべてを失う。
  • 金は道具である、道具に支配される者などいない。 だから、道具はできるだけ多く持っている方がいい
  • 金は、本質以外のモノなら何でも買える
  • 金のために結婚する者には不良の子が育つ

勉学について

  • 一日勉強しなければ、それを取り戻すのに二日かかる。
  • 耳と耳の間に、最大の資産がある。
  • 本のない家は,魂を欠いた体のようなものだ
  • もし、本と服を汚したら、まず本から拭きなさい
  • もし生活が貧しくて物を売らなければならないとしたら、まず金、宝石、家、土地を売りなさい 最後まで売ってはいけないのは本である
  • 旅の途中で故郷の町の人々が知らないような本に出会ったら、必ずその本を買い求め、故郷に持ち帰りなさい
  • 知識は水に似ている。高いところから低いところへ流れる
  • 人が生きている限り、奪うことが出来ないものがある。それは知識である
  • 恥ずかしがる人は、よい生徒にはなれない。人はどん欲に学ばなければならない
  • 学んだことを復習するのは、覚えるためではない。何回も復習するうちに、新しい発見があるからだ
  • 出逢った人すべてから、何かを学べる人が最も賢い
  • 自分より賢い人がいるときは沈黙
  • 人の話の腰を折らない
  • 答えるときにあわてない
  • 常に的を射た質問をし、筋道だった答えをする
  • 自分が知らないときはそれを認める
  • 真実を認める
  • 偉人を過大に評価してはならない。同じように、小人を過小に評価してはならない
  • 私たちは権威ある先人たちの教えから多くのことを学ぶべきだが、といって背に大量の本を積んだロバになってはならない
  • 真に貧しい者としてとどまっているのは、知性のない者だけ
  • 知者が間違うときは、恐ろしいほど根本的に間違う
  • 善と悪を区別できるだけでは、まだ賢者とは言えない。二つの悪の中から小さい方の悪を選ぶことができる者が賢者である
  • ヤギには前から近づかない。馬には後から近づかない。愚か者にはどの角度からも近づかない事だ。
  • どんな質問でも、必ずしも答える価値があるとは限らない

仕事について

  • 人は仕事がないと政治に関わり始める
  • 一文もとらずに治療する医者は、一文の値打ちもない医者

商売について

  • 商人は出来る限り口を閉じていよ。人々に賢いと思われるよりも、愚かだと思われるべきだ
  • 1つの庭を手入れするほうが、多くの庭を持ってほったらかしにするよりはよい。1つの庭を持つ人は鳥を食べることができるが、多くの庭を持つ人は鳥に食べられてしまう
  • 商人は安く買えるあらゆる商品を仕入れ、できるだけ早く小さなマージンで売れ
  • あなたの手にあり、他人が欲している商品を安く売るのは、ビジネスではない。あなたの手になく、しかも他人が欲していないものを売るのがビジネスだ
  • まずしなければならないことから手を付け、後回しにできるものは最後にする
  • 医者に尋ねるより病人に尋ねよ
  • 貧乏人と病人の忠告にはいつも真意がある
  • 小さな穴は、大きな船を沈めてしまう。

  • 汝の友人の一部は汝を非難し、他は称讃す。汝を非難する人々に近づき、称讃する人々より遠ざかれ。
  • すべての人に対して一様に親切な者は、たいていはまた、すべての人に対して一様に不親切である
  • 利害関係ができたときにはじめて、友人かどうかが分かる

  • 自分が相手と同じ立場に立ったことがないのなら、その相手を批判する資格はあなたにはない。

  • 罠を仕掛ける者は、罠に落ちるであろう。

  • 捕まえた鳥を逃がしても、また捕まえられるかもしれない。だが、一度発した言葉を取り返すことはできない。

  • 神は超えられない試練を人には与えない。

  • 病んでいる人が病んでいる人のために祈るときは、祈りの力は倍になる

ユダヤの教え・格言

【django,vuejs】スーパーノード報酬の仕組み応用した、小規模な報酬システムを作る

はじめに

https://www.masternodebank.com/ という、仮想通貨をレンディングして共同でPoSのノードを立てて報酬をもらうサービスを提供しています。
売買予定のないXEM, 他社にレンディングしているけど全然貸し付けてもらえないXEMなどありましたら、最大年利2% でお預かり致します (露骨な宣伝)。

また、このサイトのロゴのコンペを絶賛開催中です。(2017年12月25日迄)
優勝賞金 1500xem の他に、参加賞 10xem もありますので、奮ってご応募頂ければと思います。

prtimes.jp

作るもの

今回は、NEM のノード報酬である スーパーノード報酬の仕組みを応用して、小規模な報酬システム( マイクロ報酬 )を作ります。
対象は NEM を利用したWEBサービス(アプリ含む) です。 

作るもの: PicoReward

使い方

1. メッセージ送信

宛先アドレス: ncns5e-oyh2vx-7dnzyf-kcwaq4-dpoxvv-t3r26h-kjnw
メッセージ: enroll ドメイン

で送信します(実例

2.サービス管理者であることの表示

対象ドメインの/meta.json に ドメインと送信アドレスを記載して送信者が管理しているサービスであることを明記します。

{ 
    "meta": 
        {
            "domain": "www.masternodebank.com",
            "twitter": "@masternodebank"
        },
    "currency":
        { 
            "nem": "NCVKXMEI4UAN3UYXU5EBYKAXR3TB2T3JALMUNH6T"
        }
}

実例

3. サービスの監視と報酬付与

定期的にチェックが行われ、チェックにパスすると報酬がもらえます。

ちなみに、現状1までしかできてません。
2018年1月から稼働予定ですが、サービスをご登録頂ければ幸いです。

なぜ作るのか

このツールを作るモチベーションはこんな感じです。

  • NEMを使ったツール・アプリ・店舗がまだまだ少なく、トランザクション数も微々たるものなので活性化させたい
  • 作った人に一時的に報酬が入ることがあるが、継続するためのプラスのインセンティブが少ない
  • 一定の品質以下(セキュリティ対策されてないとか、レスポンスが激重とか)のものを無くしたい
  • 沢山の人に寄付するのは面倒なため、寄付を受ける人が偏ってしまいがち

スーパーノード報酬の仕組み

そもそもスーパーノード報酬とは何なのか、説明したほうが良いかもしれません。
スーパーノード報酬とは、安定して提供しているNEMのノードに対して、NEM 財団のプールからノードに対して支払われる報酬です。
ハーベスティングとは別に、多くても1日1回支払われます。

スーパーノード報酬は次のようなフローで構成されています。

  1. NEMノードを立てる
  2. NEM のメッセージを利用してスーパーノード報酬の申請をする
  3. スーパーノードとしての1日4回のテストに合格する
    • テスト内容は 残高, ブロック長, 応答速度, ネットワーク帯域,パッケージのバージョン
    • テストに1度でも失敗すると翌日の報酬は無し。
  4. 翌日にノード報酬が財源から送信される
    • 報酬総額は1日あたり全体で 140,000xem .
    • テストに合格したスーパーノードに平等にに支払われる.
  5. 3 から繰り返し
  6. もしSNを辞める時は, NEM のメッセージを利用して辞める旨を申請をする
  7. あるいは, 定期的にスーパーノードの棚卸しが行われる。

平たくいうと、ちゃんとサーバ管理やってたら、報酬あげるよ、ということですね。
こうしたスーパーノード報酬はノード運営者が適正なスペックのサーバで遅延のないネットワークを維持するための動機付けになっています。

マイクロ報酬の仕組み

マイクロ報酬のフローを考えてみます。

  1. サービスを作る
  2. NEM のメッセージを利用して,マイクロ報酬の申請をする.
  3. マイクロ報酬としてのテストに合格する.
    • 所有者と報酬先が一致しているか
    • 応答速度
    • セキュリティ対策
    • パッケージのバージョン
  4. 翌日にノード報酬が財源から送信される
  5. から繰り返し
  6. もしマイクロ報酬を辞める時は, NEM のメッセージを利用して辞める旨を申請をする
  7. あるいは, 定期的にスーパーノードの棚卸しが行われる。

作ってみて

  • 送金部分は秘密鍵を触るので、サーバ有りきで構築するほうがシンプル。
  • python の nem パッケージがない(古い)ので、作り直さねばならない。
  • ドメインの状態が変わるようなサービスなのでステートをもってくれたら、個別のDBを用意しなくて良い。
  • websocket を使って即時に登録確認したかったが、5分に一度の定期処理で済ませています。
  • js 力がたりなかった。
  • ソースコード公開はしばしお待ち下さい。。。

mkdir・cd とまじめに向き合う

まとめ

  1. 深い階層にディレクトリを作成する alias mkdir="mkdir -p"
  2. 複数ディレクトリを1行で作成する: mkdir {a,b,c}
  3. 特定のパーミッションでディレクトリを作成する: mkdir -m 700 ~/.ssh
  4. さっき作ったディレクトリに移動する: cd !$
  5. さっきいたディレクトリに移動する: cd -

番外編

ひとつ前のコマンドを実行する: !?(いわゆる、特攻の拓コマンド)

【仮想通貨まとめ】NEM

仮想通貨 NEM の情報まとめです。随時更新していきます。

【mac】SSH鍵認証でサーバに接続する(初級編)

サーバにSSH鍵認証でアクセスする方法です。

秘密鍵は大事なものなので、決して第三者に漏らさないように厳重に管理してください。

SSH鍵生成準備

Finderを起動し、「アプリケーション」→「ユーティリティ」にアクセスし、「ターミナル」を起動します。

ターミナルを起動するとプロンプト($)が表示され、コマンド入力待ち状態になります。

以下のコマンド(mkdir -m 700 ~/.ssh)で、SSH鍵保存場所のディレクトリを作成します。

$ mkdir -m 700 ~/.ssh

ssh鍵を生成する

mac にて以下のコマンド( ssh-keygen -t rsa ) を実行します。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/username/.ssh/id_rsa):  ← 作成される場所。問題なければEnter。
Enter passphrase (empty for no passphrase):  ← パスフレーズの入力。省略する場合はそのままEnter。
Enter same passphrase again:  ← パスフレーズの再入力。省略した場合はそのままEnter。

秘密鍵 (id_rsa) と公開鍵 (id_rsa.pub)が~/.ssh/ディレクトリ以下に作成されました。

$ ls ~/.ssh/
id_rsa      id_rsa.pub

おまじないを掛けます。

$ chmod 600 ~/.ssh/id_rsa

このうち、公開鍵をサーバにコピペします。(秘密鍵はmac にて使います。詳細はあとで)

サーバに公開鍵を設置する準備

以下のコマンド (cat ~/.ssh/id_rsa.pub | pbcopy) で公開鍵がコピーされます。

$ cat ~/.ssh/id_rsa.pub | pbcopy

サーバにログインする

サーバにログインしてください。

サーバに公開鍵を設置する

サーバにログイン後、公開鍵を設置します。

( 公開鍵のディレクトリを作成します)
$ mkdir -m 700 ~/.ssh

( ~/.ssh/authorized_keys に公開鍵をペーストします)
$ vi ~/.ssh/authorized_keys
(公開鍵の内容をペーストする)

おまじない。

$ chmod 600 ~/.ssh/authorized_keys

mac からサーバにssh できることを確認します。

サーバのIPを 123.45.67.89、ログインユーザを server_user とします。(ご自身のIPに変更してください)

$ ssh 123.45.67.89 -l server_user -i ~/.ssh/id_rsa

無事にログインできればOKです。

簡単にログインできるようにする。

簡単にログインできるようにします。

~/.ssh/config に以下の内容を記載します。

$ vi ~/.ssh/config
host server-001
  hostname 123.45.67.89
  user server_user
  IdentityFile ~/.ssh/id_rsa

おまじない。

$ chmod 600 ~/.ssh/config

これで ssh server-001 でSSH鍵でログインできるようになります。

鍵ログイン成功後は、サーバ側でパスワードログインを無効化してください。

【参考サイト】

www.task-notes.com

webkaru.net

NEM beta 0.6.83 リリースノート和訳

本記事は NEM beta 0.6.83 のリリースノートの和訳・意訳です。

掲載に問題がある場合は速やかに取り下げますので、ご連絡ください。

また、訳に関する修正・誤りなどありましたらご指摘いただけると幸いです。

forum.nem.io

NEM 0.6.83 リリースノート

変更点

  • NIS のバグ修正
    • ネームスペースが期限切れの場合に保有しているネームスペース・モザイクがナノウォレットで正しく表示されないバグ

注意点

  • インストーラーを用いる際には、NCCとNISが停止していることを確認してから、インストールを開始してください。
  • NEM には Java8 が必要です。
  • 下記リンクにあるインストーラーを使ってNCCとNIS をダウンロードすることができます。