プログラミング・IT・英語・数学とか

英検1級、TOEIC満点(990点)、セキュリティスペシャリスト、DBスペシャリスト、ネットワークスペシャリスト。英語とITとか。いろいろ試してみたことを書いていきます

bzrで間違ってuncommitしてしまったリビジョンを元に戻したいとき

DRTL

bzrtoolsをインストールし、bzr heads --all コマンドでrevidを特定し、bzr pull . -r revid:[戻したいrevid]でできる。

詳細

https://bzrinit.com/05.html#ununcommit の情報を補足した記事です。日本語での情報が見つからなかったため書きました)

以下のようにuncommitしてしまった例で話を進めます。
まず最初にリビジョンが1,2,3と3つあったとします。
概念図:「1 → 2 → 3」
コマンド結果:

[shohei@my-laptop bzrtoolstest]$ bzr log
------------------------------------------------------------
revno: 3
committer: Shohei Hagiwara <shohei@localhost>
branch nick: bzrtoolstest
timestamp: Sat 2019-03-09 12:20:01 +0900
message:
rev3
------------------------------------------------------------
revno: 2
committer: Shohei Hagiwara <shohei@localhost>
branch nick: bzrtoolstest
timestamp: Sat 2019-03-09 12:19:46 +0900
message:
rev2
------------------------------------------------------------
revno: 1
committer: Shohei Hagiwara <shohei@localhost>
branch nick: bzrtoolstest
timestamp: Sat 2019-03-09 12:19:29 +0900
message:
rev1.

ここで間違って、2,3をuncommitしてしまったとします。
概念図:1 → 2 → 3
コマンド結果: 

[shohei@my-laptop bzrtoolstest]$ bzr uncommit -r 1
    2 Shohei Hagiwara 2019-03-09      rev2
    3 Shohei Hagiwara 2019-03-09      rev3
The above revision(s) will be removed.Uncommit these revisions? ([y]es, [n]o): yesYou can restore the old tip by running:  bzr pull . -r revid:shohei@localhost-20190309032001-co5i2nh7w14r1uha
[shohei@my-laptop bzrtoolstest]$ 

 (そして、間違いに気づかずにターミナルを閉じてしまい、revidがわからなくなってしまったとします・・・。)
ここから、2,3を戻したいとします。以下、詳細な手順です。

bzzrtoolsをインストール

ubuntuであれば以下でできます。

sudo add-apt-repository ppa:bzr/ppa
sudo apt-get update
sudo apt install bzrtools

他のOSの方法や公式手順は以下のサイトを参照ください。
http://wiki.bazaar.canonical.com/Download

 

bzr heads --allコマンドでrevidを特定

bzr log だとrev1ですが、bzr heads --allとするとリビジョン3のrevidが表示されていることが確認できます。

[shohei@my-laptop bzrtoolstest]$ bzr log -r -1
------------------------------------------------------------
revno: 1
committer: Shohei Hagiwara <shohei@localhost>
branch nick: bzrtoolstest
timestamp: Sat 2019-03-09 12:19:29 +0900
message:
rev1.
[shohei@my-laptop bzrtoolstest]$ bzr heads --all
HEAD: revision-id: shohei@localhost-20190309032001-co5i2nh7w14r1uha (dead)
committer: Shohei Hagiwara <shohei@localhost>
branch nick: bzrtoolstest
timestamp: Sat 2019-03-09 12:20:01 +0900
message:
rev3

 

bzr pull . -r revid:[戻したいrevid]で戻す

さきほどわかったrevision-idを使ってpullで戻します。

[shohei@my-laptop bzrtoolstest]$ bzr pull . -r revid:shohei@localhost-20190309032001-co5i2nh7w14r1uha
All changes applied successfully.
Now on revision 3.

念の為にbzr logで確認してみると、ちゃんとbranchのリビジョンが3に戻っているのが確認できます。

[shohei@my-laptop bzrtoolstest]$ bzr log -r -1
------------------------------------------------------------
revno: 3
committer: Shohei Hagiwara <shohei@localhost>
branch nick: bzrtoolstest
timestamp: Sat 2019-03-09 12:20:01 +0900
message:
rev3
[shohei@my-laptop bzrtoolstest]$

 

【Ubuntu】 間違ってusermodでsudoを消してしまったとき

sudoをユーザーから外してしまった・・・。

usermodで新しいグループをアカウントに追加しようとしたら間違って他のグループを全部消してしまったときの直し方。

基本的に↓の翻訳です。いや、これがあって本当に助かった・・・。他にも自分のような人がいて、この記事が参考になればさいわいです。

askubuntu.com

手順

  1. 起動時にShiftキーを押しながら起動し、grub2メニューに入る。(自分はShift押し続けていたらBIOSの画面からまったく進まなかったので、一瞬離してやってみてうまく行きました)
  2. Advanced Options for Ubuntuを選択しEnter。
  3. 現在使っているカーネルリカバリーモードに入る。↓みたいな感じでrecover modeってついてるやつ。おそらく一番上のrecovery modeが現在使っているカーネルだと思う。
    Ubuntu xx.xx x.xx.xx-xx-generic (recovery mode)
  4. root - Drop to root shell を選択してEnter
  5. 「mount -o remount,rw /」を実行しファイルに書き込めるようにする。
  6. (※ ここから元記事と違う。元記事ではnanoを使ってるけど、nanoはよくわからないのでviを使うようにした)
    「vi /etc/group」して、sudoの一番後ろに自分のアカウント名を書く。shoheであれば、「sudo: shohei」みたいな感じになる。
  7. 「:wq」で保存して抜ける。
  8. exitで抜ける。
  9. resume - Resume normal boot を選択して起動する。

Variability hypothesisとは?

日本語の説明を探してもなかったので、メモ程度にここで説明。ほぼwikipediaの翻訳だけども。。。

Variability hypothesis = 女性よりも男性の方が知性とか能力とか、いろいろな部分で上下のばらつきがあるんじゃないかという仮説

Variability hypothesisは別名でgreater male variability hypothesisというらしい。このhypothsisの和訳が存在するのかわからないけど、和訳するとすれば、「男性の方がバラツキがあるよ仮説」って感じになるのかな・・・?なんかもっと学術的なのつけられそうだけど、そういうの全然わかんないからなーw

ようするに、人間全体で見たときに、女性よりも男性の方が知性とか能力に上下に幅があるということらしい。たとえば知性で言えば、女性は男性よりも平均的な人が多くて、男性はめっちゃ頭いい人が(女性よりは)多くて、また、めっちゃ頭悪い人も多い、ってことっぽい。

よくよく読むと、人間社会だけでなく他の生物でも見つかる現象なんだとか。

ただ、wikipediaを見た感じだと、ただの仮説であって本当かどうかというところまでは証明ができていないよう。

【Spring Boot】@Valueアノテーションがうまく動かないのはorg.springframework.beans.factory.annotationの@Valueじゃないからかも。

現象

@Valueを使ってもインジェクションができない。

 

原因

import文を見ると、import org.springframework.beans.factory.annotationがあるか?ない場合、他の@Valueアノテーションを使っている。

【Spring Boot】起動しない現象と原因

エラーの内容

09:38:27.875 [background-preinit] DEBUG
org.hibernate.validator.internal.engine.resolver.DefaultTraversableResolver
- Found javax.persistence.Persistence on classpath containing
'getPersistenceUtil'. Assuming JPA 2 environment. Trying to
instantiate JPA aware TraversableResolver
09:38:27.882 [background-preinit] DEBUG
org.hibernate.validator.internal.engine.resolver.DefaultTraversableResolver
- Instantiated JPA aware TraversableResolver of type
org.hibernate.validator.internal.engine.resolver.JPATraversableResolver.
09:38:27.885 [background-preinit] DEBUG
org.hibernate.validator.internal.xml.ValidationXmlParser - Trying to
load META-INF/validation.xml for XML based Validator configuration.
09:38:27.887 [background-preinit] DEBUG
org.hibernate.validator.internal.xml.ResourceLoaderHelper - Trying to
load META-INF/validation.xml via TCCL
09:38:27.888 [background-preinit] DEBUG
org.hibernate.validator.internal.xml.ResourceLoaderHelper - Trying to
load META-INF/validation.xml via Hibernate Validator's class loader
09:38:27.888 [background-preinit] DEBUG
org.hibernate.validator.internal.xml.ValidationXmlParser - No
META-INF/validation.xml found. Using annotation based configuration
only.
09:38:28.213 [main] DEBUG
com.ulisesbocchio.jasyptspringboot.configuration.EnableEncryptablePropertiesBeanFactoryPostProcessor
- Application Event Raised: ApplicationFailedEvent

エラーの原因

application.ymlのフォーマットが正しくなくて読み込めていない。自分の場合は、半角スペースでパディングするところをタブでしていたためでした。

エラーの原因をログに出してくれればいいんですが、何も出ないので少し時間がかかりました。もしかしたらデバッグログを出す方法があるのかもしれませんが、そこまで調べていないです。

bzrを使い始める前に知っておきたかったこと

bzrを使い始める前に知っておきたかったこと

バージョン管理システムにbzrを使っていて「これを始めに知っておけばもう少し楽に学べたのに・・・」と思うことを書こうと思います。

bzrはGitなどに比べて情報量も少ないですし、とくに日本語の情報は少ないので慣れるまでにかなりの時間がかかるのではないかと思います。

実際、自分は慣れるまでにかなり時間がかかりましたし、まだなれていないことも多々あります。。。これからbzrを使い始める人の手助けに少しでもなれば。

できるだけ調べて書いていますが、もし間違っていることがあればお知らせください。

その1. bzrにはtrunkとかmasterの概念はない。すべてbranch。

ここが一番他のVCSと違うところなんじゃないかなと個人的には感じます。

他のバージョン管理システムにはtrunkとかmasterというメインとなるレポジトリがあって、それから派生したbranchという概念があると思いますが。bzrにはありません。すべてがbranchです。

メインで使っているものでも、バグフィックス用に作ったものでも、機能追加用のものでも、すべてbranchです。branch間の親子関係などを設定することはできますが、branchそのものがtrunkかどうかという情報はbzrのシステム上もっていません。

これが結構厄介で、特に自分がそうなのですが、あまりGitなどの他のバージョン管理システムを使ったことがない人は、メインで使っているトランクだろうが、自分のローカルにあるブランチだろうが、すべてbranchだという意識でいます。

なのですべてを「ブランチ」と呼んでいます。そうすると、他の人と会話をするときにいちいち訂正されたりします。

自分「じゃぁ、さっきの変更をメインのブランチにプッシュしておきますね、、、」

他人「え、あれ、マージする先はブランチじゃなくてトランクでしょ?」

自分「あ、すみません、そうですね、トランクですね。自分のブランチからトランクにプッシュしておきます。。。(bzrはブランチしかないんだけどなぁ。。。だからわざわざメインのブランチって言ってるんだけど。まぁでもトランクの方が短いし言いやすいから理にかなってるか。。。)」

なんでもかんでもブランチブランチという人がいたら、あぁこの人はbzrしか使ったことがないんだろうなと、優しい目で見てあげてください。。。

え、じゃぁ、どうやってtrunkを指定するの???

ここまで読んで疑問になるかと思います。では、どうやってtrunkだとわかるのか。

bzrにはtrunk機能はありませんので、どのbranchをtrunkとして扱うかを決めるのは人間の仕事です。

どこのディレクトリにあるbranchがtrunkなのか、bzrを使う人が決めなければいけません。運用上の決まりとして共通理解として開発者/運用者みんなが認識しておく必要があります。

その2. .bzr ディレクトリと branch は1対1の関係がある(基本的には)

ここも他のバージョン管理システムと大きく違うのではと思います。

bzrの基本的な考え方としては、あるディレクトリが1つのbranchを表します。もう少し正確には、あるディレクトリの中にある.bzrディレクトリにがあれば、そこにbranchがあります。

ディレクトリとbranchが1対1で紐づくので、ディレクトリ構成を見ればブランチの構成もわかるので楽かもしれません。

以下のようにディレクトリ構造でメインブランチとその他のブランチを分けている運用にしたときには、ディレクトリとbranchが1対1で紐づくということがわかっていればすんなり理解できます。自分はディレクトリ=branchの関係が最初わかっていなかったので、この構造の意味不明で苦労しました(笑)

    shohei/test
            |-- .bzr ★ここがメインブランチ
            |
            `-- branches
                `-- test.new_feature
                    `-- .bzr  ★ここがその他のブランチの1つ
いやいや、こんなディレクトリ管理は面倒なんだけど、、、

見出しにも書いたとおり、「基本的には」ディレクトリとbranchが1対1での運用ができます。しかし、ディレクトリ管理はしたくないという方もいると思います。

そんな方には、colocated branchというのもあるようです。自分は使ったことはないのですが、colocated branchを使うことにより1つのディレクトリの中に複数のbranchを入れることができ、branch間を簡単にスイッチできるらしいです。

もし、そのような管理がしたいのであれば試してみると良いかもしれないですね。

その3. レポジトリがなくても良い

bzr explorerを使っていてbranchを作ろうとするときに聞かれるのが「レポジトリを作成しますか」という質問。

「え、だってbranch作るってことはレポジトリ作るってことでしょ??作らないことなんてできるの??」と、最初はこの質問の意味がわかりませんでしたw

bzrでの「レポジトリ」とは、「複数のbranchにまたがるファイル履歴を一箇所で管理する仕組み」で、これで何が嬉しいのかというと、レポジトリを作成するとストレージ量を抑えることができます。

たとえば、あるメインのbranchがあり、そこに同時並行で新しい機能を3つ追加する場合、機能A用branch、機能B用branch、機能C用branchを作ります。

そうすると、機能A、B、C用branchではほぼすべての履歴が同じになります。それを別々のbranchで管理すると、コピーが作成されるので単純にファイル容量が3倍とかになります。

代わりに、レポジトリを作成して、それぞれのbranchで管理するのではなくレポジトリー一箇所で管理をすれば、履歴は1つだけ管理すればよく、コピー分のファイル容量が減ります。

なので、同じ履歴をもつbranchを複数作るのであれば、レポジトリは作っておいたほうが良いです。

逆に言えば、branchを1つしか作らないのであれば、作っても作らなくても一緒だと思います。

【レビュー】【体験談】【立ち飲みバー】有楽町・新橋・銀座付近でオススメの立ち飲みバー

「銀座でリーズナブルに飲めて食べられる立ち飲みバーなんてあるのだろうか、、、」
なんて方、ご心配なく!ありますあります銀座にも、リーズナブルにご飯を食べてアルコールを飲める場所が!

個人的には銀座でクラブ行く前に立ち飲みバーでテンションを上げていきますが、クラブ前に行く以外にも、0次会、二次会、ナンパ、友達作り、一人飲み、ふつうに友達と飲みたいときにも使えるオールマイティーな場所が立ち飲みバー。

今回は、毎週自分がクラブに行く前によく行く立ち飲みバーを紹介していきたいと思います。
あ、ちなみに自分がよく行くクラブ、ジーニアスについては↓からどうぞ(笑)

shoheyhey0821.hatenablog.jp

行くところが増えてきたら追記していきたいと思います。 

 

1. 333(トリプルスリー)

bar333.jp

 

アクセス/場所

新橋駅から徒歩10分くらい、有楽町駅から徒歩5分くらいです。どちらからもアクセス良いです。地下にあり、入り口は少し奥に入ったところにあるのですこしわかりにくいかも。
個人的には、自分がよく行くGENIUS TOKYOに徒歩1分くらいなので気に入っています(笑)

客層/年齢層/男女比率

客層は若い人が多いですね。だいたい20~30代前半の人たち。男性はみんなサラリーマンっぽい人が多いですね。スーツ姿。女性はどんな人がきているか。。。渋谷とかの立ち飲みバーには多いですけど、こちらのバーには外国人はあまりいないですね。たまに1人、2人見るくらいです。
男女比率は8:2で男性が多いですね。まさに男性で溢れかえっているときもあります。男性にとってはあまりおいしくないですが、逆に出会いを求めている女性にとっては良いのかも(笑)
場所が銀座だからなのか、渋谷とかに比べると、落ち着いた人が多い気がします。なんか騒いでる人とか、強引なナンパしている人も少ない気がします。

メニュー

ドリンクは種類が豊富な感じです。フードメニューは少ない感じですね。からあげとか枝豆とかたこ焼きとかピザとか、つまみ系のものはありますがガッツリ食べたい人には向かない場所かなと。やっぱり立ち飲みでサクッと行くという場所ですね。

値段

やっぱり安いですね。お店の名前になっているようにだいたい1品333円です。ただ、中には666円のものもありますのでメニューでご確認を。

内装/雰囲気

店内はとてもキレイです。最近できたのかもしれません。ちょっと暗めで雰囲気も良い感じです。DJブースもありEDMが流れているので、洋楽好きな人にはプラスで楽しいと思います。

ナンパ

まぁ、多いですね、ナンパは。ほぼ100%の男性はナンパに来てますし(笑)女性もナンパ待ちが多いんだと思います。女性に周りにはだいたい男性がいて、その女性がフリーになるのを待ってる男性がさらに周りにいる感じで、男性で溢れていますねだいたい(笑)

混雑具合

9時くらいまでは結構空いています。自分が飲むスペースを見つけるのも9時前であれば比較的簡単です。9時以降はだんだん混んできて、10時にはカウンターのスペースを見つけるのも大変になります。

広さ

そんなに広くもなく、小さくもないといったサイズです。100人くらい入ったら、もう誰も身動きできないくらいの広さかなと。

2. TOKYO GINZA 300BAR NEXT

www.300bar-next.com

アクセス/場所

有楽町駅から徒歩5分くらいのところにあるバーです。こちらも地下にありますが、お店の外に大きな黄色い看板が出ているので見つけやすいと思います。

客層/年齢層/男女比率

若い人が多いですね。みんな20代なんじゃないかと。たまに30代くらいの男女もいましたけど、やっぱり安い値段につれられて若い人が集まるんだと思います。外国人の姿はあまりなく、ちらほらな感じでした。
男女比は7:3くらいで男性が多いです。

メニュー

ドリンクはいろいろと種類がありました。フードメニューはあまり多くないイメージですね。でも、フードは1品1品がとても美味しいです。特に、ジャークチキンとブロシェットはオススメです。これホントに300円で良いの??ってくらいクオリティ高いです。。。きっとですが、赤字ですよお店。。。量も多いし美味しいし見た目もキレイで普通にお店で食べたら倍の値段はするのではと思います。飲み物と一緒に、ぜひお試しあれ。

値段

ほぼ全品300円です。盛り合わせとかは600円だった気がしますが。

内装/雰囲気

テーブルやカウンターに木が使われていて、照明も暗めで、とても落ち着いた雰囲気です。

ナンパ

ここもナンパバーなのでナンパだらけですね(笑)

混雑具合

やっぱり21時以降には混み混みです。ゆっくりドリンクを飲みたいなら20時くらいには行ったほうが良いでしょう。逆にナンパが目的であれば、21時以降が良いでしょう。

広さ

店内は広めです。それに天井も高いので、実際よりも広く感じます。

 

まとめ

いかかでしたか?とりあえず2つ紹介してみました。
これから増えていくようであれば追加していこうと思います。

では、立ち飲みバーで楽しい夜を!