git-new-workdir の有効化手順

「git-new-workdir の有効化」とは

git-new-workdir の有効化とは、パスの通ったディレクトリにgit-new-workdirコマンドへのシンボリックリンクを貼ること。

有効化手順

実際に「パスの通ったディレクトリ」に「git-new-workdirコマンド」への「シンボリックリンクを貼」っていきます。

「パスの通ったディレクトリ」

「パスの通ったディレクトリ」として適当なのは /usr/local/bin です。

「git-new-workdirコマンド」

次に「git-new-workdirコマンド」のあるディレクトリを特定していきます。

gitインストールディレクトリの中の share/git-core/contrib/workdir の中に git-new-workdir があります。

homebrewでgitをインストールしているので、gitのインストールディレクトリを特定するには、brew info git を実行するとわかります。

私の場合は /usr/local/Cellar/git/2.27.0 でした。

したがって git-new-workdirのフルパスは /usr/local/Cellar/git/2.27.0/share/git-core/contrib/workdir/git-new-workdir と判明しました。

「シンボリックリンクを貼る」

ということで、以下のコマンドを実行すればOKです。

 ln -s /usr/local/Cellar/git/2.27.0/share/git-core/contrib/workdir/git-new-workdir /usr/local/bin/git-new-workdir

うまくできたか確認

$ which git-new-workdir
/usr/local/bin/git-new-workdir

のように返ってくればOK。何も返ってこないとなると失敗です。

参考


Gitで同時に複数ブランチを利用する場合は、やっぱり git-new-workdir だね! - 都内SEのプログラミング勉強と雑記


/bin, /usr/bin, /usr/sbin, /usr/local/bin の違いとは? - Qiita

JavaとScalaのStringBuilder/StringBuffer事情

2020年7月30日 追記:こちらで詳しく解説しています



上級(歴史的経緯についての理解が必要)

scala.collection.mutable.StringBuilder, java.lang.StringBuilder, java.lang.StringBuffer の使い分けについて
  • java.lang.StringBuilderはsynchronizedされてない。その分速い。Java 5から追加。
  • java.lang.StringBufferはsynchronizedされてる。その分遅い。最初からある。
  • Javaであれば、内容を変更可能な文字列を扱う際、基本的にはjava.lang.StringBuilderクラスを使う。
    • 文字列の変更を繰り返す場合はStringよりもStringBuilerの方が効率的
  • スレッドセーフを確保したい場面であれば、java.lang.StringBufferを使うとAPI Docsには書かれている。
  • ただし、同期化の問題はStringBufferにすればたちまち解決するというものではないので、結局のところはStringBuilderを使いつつも同期化は手ずから愚直に実装すべきである。
  • したがってStringBufferは基本的に使用すべきではなく、現在存在しているのは専ら後方互換の目的である。
  • これを踏まえ、Scalaでは内容を変更可能な文字列を扱うにはscala.collection.mutable.StringBuilderクラスを使えばよい
    • scala.collection.mutable.StringBuilderは内部実装がStringBuilderである
    • scala.collection.mutable.StringBuilderはjava.lang.StringBuilderと機能的に互換性がある。
    • さらにScalaっぽい使い方ができるようになっている(要出典)
    • 長い文字列

参考




追記

まだ読んでいないがこちらの記事も参考になりそう



How to run shell in the Docker container

You can run bash without SSH connection to the Docker container.

TODO

  • fetch the container ID
    • docker ps -qf "name=[the name of container]"
  • run bash on the docker instance
    • docker exec -it [container ID] bash

e.g.,

docker exec -it $(docker ps -qf "name=[the container name]") bash

"Permission denied" in "brew install python"

When executed brew install python, I got "Error: Permission denied @ dir_s_mkdir" below.


$ brew install python

...
==> Installing python

==> Downloading 
https://homebrew.bintray.com/bottles/python-3.7.1.mojave.bottle.8.tar.gz

######################################################################## 100.0%
==> Pouring python-3.7.1.mojave.bottle.8.tar.gz
Error: An unexpected error occurred during the `brew link` step
The formula built, but is not symlinked into /usr/local
Permission denied @ dir_s_mkdir - /usr/local/Frameworks
Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks

Cause

https://qiita.com/Jung0/items/d4012814e6fb1b694208

There was no directory named "/usr/local/Frameworks".

Solution

The solution was the same to the article above.
I created a directory "/usr/local/Frameworks", and gave permissions.

sudo mkdir /usr/local/Frameworks
sudo chown $(whoami):admin /usr/local/Frameworks

Show database list at Redshift

If you want to show the list of databases, you can use pg_database or pg_database_info table, which are included the standard PostgreSQL catalog tables.

SELECT * FROM pg_database;

select datname, datdba, datconnlimit from pg_database_info where datdba > 1;

pg_database_extended


References
System Catalog Table / Amazon Redshift Docs
https://docs.aws.amazon.com/redshift/latest/dg/c_intro_catalog_views.html
https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/c_intro_catalog_views.html

System Catalogs

https://www.postgresql.org/docs/8/catalogs.html

https://www.postgresql.org/docs/8/catalog-pg-database.html