CircleCIでcheckoutしてきたリポジトリ以外のprivateリポジトリを操作する方法

マシンユーザーを作成する

一般的なユーザーを作るときと同じように作成します。
メール通知などが来るので、開発用の共有メールアドレスなどがあればそちらを使ったほうが良いかも。

マシンユーザにPersonal access tokenを発行する

Githubにマシンユーザでログインして、下記にアクセス。
https://github.com/settings/tokens/new
(ユーザーのSettings -> Developer Settings -> Personal access token)から発行します。

f:id:harinezumistudy:20201126181251p:plain

マシンユーザに操作したいリポジトリのRead権限を与える

リポジトリのSettings -> Manage access -> invite teams or people(https://github.com/{リポジトリのURL}/settings/access)から
マシンユーザを招待し、Read権限を与えます。

CircleCIでcheckoutをするプロジェクトの環境変数にPersonal access tokenを設定する

Project Settings -> Environment Variables
https://app.circleci.com/settings/project/github/{GitHubのユーザー名}/{リポジトリ名}/environment-variables) に
任意の名前でGithubのマシンユーザのPersonal access tokenを貼り付けます。 f:id:harinezumistudy:20201127110716p:plain

yamlの中で環境変数を使う

操作したいリポジトリに関して下記のようにyamlに記載すれば、
checkoutしてきたリポジトリ以外のprivateリポジトリでも操作できます。

git clone https://${GITHUB_PERSONAL_ACCESS_TOKEN}@github.com/Hoge/fuga.git

マシンユーザーとPersonal access tokenを使う理由

  1. リポジトリとPersonal access tokenで権限を与えた範囲でしかマシンユーザーは操作できない。
  2. 万が一マシンユーザーのPersonal access tokenが漏れた可能性がある場合、
    すぐにPersonal access tokenを無効にできる。
  3. ssh key pairだと管理が手間。

参考URL

How to Authorize Your CI/CD to Checkout Additional RepositoryEnquizit Inc

GitHub と Bitbucket のインテグレーション - CircleCI

Managing deploy keys | GitHub Developer Guide

本当にそれでいい?CircleCIにおける複数のPrivateリポジトリのClone方法 | by Takuo | VELTRA Engineering | Medium

SchemaSpyでDBからER図を生成する

PostgreSQLのER図を生成する

dockerコマンド

docker run -v "${ドキュメントを生成したいディレクトリ}/schema:/output" --net="host" schemaspy/schemaspy:6.1.0 -t pgsql -host ${ホスト}:${ポート番号} -db ${DB名} -u ${ユーザー名} -p ${パスワード}

生成されたドキュメントに上書きしたい場合

schemameta.xml

<schemaMeta xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://schemaspy.org/xsd/6/schemameta.xsd" >
    <comments>Database comment</comments>
    <tables>
        <table name="staff" comments="Table comment">
            <column name="name" comments="Column comment" />
        </table>
    </tables>
</schemaMeta>

dockerコマンド

docker run -v "${ドキュメントを生成したいディレクトリ}/schema:/output" -v "${ドキュメントを生成したいディレクトリ}/schemameta.xml:/schemameta.xml" --net="host" schemaspy/schemaspy:6.1.0 -t pgsql -host ${ホスト}:${ポート番号} -db ${DB名} -u ${ユーザー名} -p ${パスワード} -meta schemameta.xml

propertiesファイルを使う場合

schemaspy.propertiesファイル

# type of database. 
schemaspy.t=pgsql
# database properties: host, db name, name user, password
schemaspy.host=${ホスト}
schemaspy.db=${DB名}
schemaspy.u=${ユーザー名}
schemaspy.p=${パスワード}

dockerコマンド

sudo docker run -v "${ドキュメントを生成したいディレクトリ}/schema:/output" -v "${プロパティファイルが置いてあるディレクトリ}/schemaspy.properties:/schemaspy.properties" --net="host" schemaspy/schemaspy:6.1.0

参考URL

まだER図の管理で消耗してるの? SchemaSpy でER図を自動生成して管理する - Qiita

SchemaMeta — SchemaSpy 6.0.0 documentation

Docker Hub

cssでデフォルトフォント以外のフォントを適用する

デフォルトフォントではなく、自分でフォントを指定したくなったときのcssへの記載方法です。

フォントファイルを任意のディレクトリに配置

まずは、使用したいフォントのファイルを任意のディレクトリ配下に置きます。

cssで指定

cssで下記のように指定します。

@font-face {
    font-family: 'フォント名';
    src:url('フォント名.woff') format('woff')
}
p {
    font-family: 'フォント名';
}

以上です!とても簡単にフォントの適用ができました。

参考サイト

www.hp-stylelink.com

Macでコマンドを自作する

シェルを書く

$vim testhello
#!/bin/sh
echo "HelloWorld!"

シェルの権限を変更する

$ chmod a+x testhello

$PATHを調べる

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

$PATHの一つへ作成したシェルをコピーする

$ cp testhello /usr/local/bin/
$ which testhello
/usr/local/bin/testhello

コマンド完成!

$ testhello
HelloWorld!

参考サイト

qiita.com

Photoshopで画像の切り抜きをしたい

クイック選択ツールを使う

クイック選択ツールで切り抜きたい画像を大まかに選択します。

クイック選択ツール
クイック選択ツール

投げ縄ツールを使う

細部を追加で選択

ツールオプションバーの「選択範囲に追加」を押下し、 クイック選択ツールで選択できなかった細かい部分を選択していきます。

選択しすぎてしまった部分を選択から削除

ツールオプションバーの「現在の選択範囲から一部削除」を押下し、 クイック選択ツールで選択しすぎてしまった部分を選択から削除していきます。

投げ縄ツール
投げ縄ツール

選択範囲を反転する

全て選択し終わったら、選択範囲から「選択範囲を反転」を選ぶ。

選択範囲を反転
選択範囲を反転

背景レイヤを標準レイヤへ変換

移動ツールで背景レイヤを選択し標準レイヤへ変換する。

標準レイヤへ変換
標準レイヤへ変換

完成

背景が透明な画像の切り抜きが完成します。

背景が透明な画像の完成
背景が透明な画像の完成

これが正しいかわからないので、どなたかもしもっと良いやり方をご存知であれば教えてほしいです!

キーボードもディスプレイもマウスもLANケーブルもないけどRaspberry Piを触りたい

Macbook ProしかないけどRaspberry Piを触りたい

家が狭いので&持ち運びが面倒なのでキーボードetc持ってません...。

でもRaspberry Piで遊びたい!

使ったもの

手順

Raspbianをダウンロードする

www.raspberrypi.org

Raspbian Buster with desktop and recommended software

Download ZIPからRaspbianをダウンロードします。

The Unarchiverを使って解凍します。

wakaba.c3.cx

SDカードのフォーマット

SD Card Formatterを使ってmicroSDを初期化します。

www.sdcard.org

今回はクイックフォーマットにしました。

RaspbianをmicroSDカードへ書き込む

www.raspberrypi.org

balenaEtcherを使ってmicroSDへRaspbianを書き込みます。

www.balena.io

ラズパイをssh接続できるようにする

microSDのルートであるbootsshという空フォルダを作ります。

microSDMacで読み込んで、ターミナルから下記を実行します。

$ touch /Volumes/boot/ssh

ラズパイでWi-Fi接続するためにwpa_supplicant.confを作成する

/Volumes/boot/ 配下へwpa_supplicant.confを作成し、下記を記載します。

country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="Wi-FiのSSID(ネットワーク名)"
    psk="Wi-Fiのパスワード"
}

Macからラズパイへ無線でssh接続する

microSDをラズパイへ挿して電源を入れます。

その後、Macから下記を叩きます。

$ ssh pi@raspberrypi.local

初期パスワード raspberry を入力すると、下記のように表示されます。

ラズパイへの接続が完了です。

pi@raspberrypi:~ $

ラズパイのIPアドレスを調べる

exitでラズパイを終了し、下記を叩いてラズパイのIPアドレスを調べます。

$ arp -a

ラズパイのMACアドレスb8:27:ebので、

b8:27:ebから始まるMACアドレスを探して、

その行頭に記載があるIPアドレスをメモしておきましょう。

www.raspberrypi.org

Macでラズパイの画面共有をする

ラズパイへVNCサーバをインストールする

Macからラズパイに再度ssh接続をします。

$ ssh pi@raspberrypi.local

下記コマンドを叩いてラズパイへVCNサーバをインストールします。

pi@raspberrypi:~ $ sudo apt-get install tightvncserver

インストールが完了したら、下記コマンドでサーバを立ち上げます。

pi@raspberrypi:~ $ sudo tightvncserver

サーバが立ち上がるとNew 'X' desktop is raspberrypi:1のように表示されます。

この末尾の1、プラス5900の、5901がMacからラズパイ画面に接続するポート番号となります。

MacのFinderからラズパイへVNC接続する

Finderの移動タブ->「サーバーへ接続」を選択します。

「サーバアドレス」の欄にvnc://IPアドレス:ポート番号(5901)と入力し、「接続」を押下します。

パスワードにVNCサーバ初回立ち上げ時に設定したパスワードを入力すると、 Raspbianの画面が表示されるはずです。

RaspberryPi_Screenshots

参考

macしかない状況でRaspberry Piに接続してみた

最近のRaspberry Piイメージ(Raspbian)をインストールするメモ

PostgreSQLでテーブル一覧とテーブル定義を表示する

テーブル一覧の表示

\dt;

            List of relations
  Schema   |  Name   | Type  |   Owner   
-----------+---------+-------+-----------
 java_user | uketuke | table | java_user
(1 row)

テーブル定義の表示

\d テーブル名;

Column    |            Type             | Collation | Nullable |                 Default                 
-------------+-----------------------------+-----------+----------+--- 
--------------------------------------
 uke_no      | integer                     |           | not null | 
nextval('uketuke_uke_no_seq'::regclass)
 sei_name    | character varying(100)      |           |          | 
 mei_name    | character varying(100)      |           |          | 
 nk_add      | character varying(13)       |           |          | 
 nm_add1     | character varying(200)      |           |          | 
 nm_add2     | character varying(200)      |           |          | 
 nm_add3     | character varying(200)      |           |          | 
 nk_tel      | character varying(15)       |           |          | 
 gender_no   | character varying(2)        |           |          | 
 birthday_dt | timestamp without time zone |           |          | 
 nk_mail     | character varying(300)      |           |          | 
 nk_pass     | character varying(50)       |           |          | 
Indexes:
    "uketuke_pkey" PRIMARY KEY, btree (uke_no)

参考URL

(PostgreSQL) テーブル情報を取得するSQL 等

PostgreSQLの基本的なコマンド