無題の備忘録

IT技術について調べたことや学んだこと、試したこと記録するブログです。Erlang、ネットワーク、 セキュリティ、Linux関係のものが多いです。

PostgreSQLの認証とアクセス権限の制御

PostgreSQL で SQL 文を実行する際に、理解が必要な主な各種の認証とアクセス権限の制御方法について学びます。 ここで、OS は Ubuntu 20.04 LTS、PostgreSQL は 11 を想定しています。 PostgreSQL の認証やアクセス権限の制御には下記のようないくつかの層…

Nginx のリバースプロキシでポート変換する

数カ月前に ASUS X200LA (11.6インチ、Core i3 4010U/1.7GHz/2コア メモリ4GB)を人から譲ってもらったのだが、Ubuntu 20.04 LTS をインストールした後、特に使い道がなかった。 が、ふと思い立って gitlab をインストールして運用することにした。リモート…

Ubuntu 18.04 LTS で Logicool マーブルマウス TM-150r をスクロールできるようにする ver.2

以前、下記の記事を書いたが、最近つらくなってきた。何がつらいかというと、スクロールだ。 stacktrace.hatenablog.jp 原因は、小さい右のボタンを押し続けていないとスクロールができないのだが、このボタンを押し続けるのに結構力が必要で、指が痛くなっ…

Erlang の gen_server モジュールを学ぶ

以前の記事で (2年も前くらいの記事...)、gen_server ビヘイビアの概要を学びました。 今回は、gen_server モジュールに用意されている各関数と gen_server モジュールのコールバック関数を学びたいと思います。というか書きかけだったのに気がついて、今書…

Erlang の監視ツリーで gen_server を停止する

Erlang -- gen_server Behaviour にある監視ツリーに含まれている gen_server の停止を試してみたいと思います。 スーパーバイザーとそれによって監視されるワーカーのサンプルコードは、前回の記事( Erlang の supervisor ビヘイビアを学ぶ - 無題の備忘録 …

Erlang の supervisor ビヘイビアを学ぶ

Erlang/OTP の supervisor ビヘイビアについて学びたいと思います。 スーパーバイザーの原則 スーパーバイザーは、子プロセスの起動、停止、子プロセスの監視に対して責任を持ちます。スーパーバイザーの基本的な考え方は、必要に応じて子プロセスを再起動す…

Erlang のスタンドアローンの gen_server を停止する

Erlang -- gen_server Behaviour にあるスタンドアローンでの gen_server の停止を試してみたいと思います。 gen_server のサンプルコードとして sample_queue.erl というファイル名で下記のコードを作成します。 このコードは、gen_server のビヘイビアを使…

Erlang の gen_server ビヘイビアを学ぶ

Erlang/OTP の gen_server ビヘイビアについて学びたいと思います。 クライアント・サーバの原則 クライアントサーバーモデルは、複数の異なるクライアントで共有するリソース管理に使用されます。サーバーは、このリソースの管理を担当します。 図の実線はQ…

Erlang/OTP の設計原則を学ぶ - 監視ツリーとビヘイビア

監視ツリー (Supervision Trees) Erlang/OTPの基本概念は、下記の図に示す監視ツリーです。これはワーカーとスーパーバイザーのアイデアに基づいたプロセス構造です。 ワーカーは、計算を実行するプロセスで、実際の作業をします。 スーパーバイザーはワーカ…

Erlang の queue モジュールを一通り試す - Okasaki API

cons/2 関数 cons(Item, Q1 :: queue(Item)) -> Q2 :: queue(Item) キューQ1の先頭にアイテムを挿入した結果であるキューQ2を返す。 > L = [b,c]. [b,c] > Q1 = queue:from_list(L). {[c],[b]} > Q2 = queue:cons(a, Q1). {[c],[a,b]} > queue:get(Q2). a da…

Erlang の queue モジュールを一通り試す - 拡張API

drop/1 関数 drop(Q1 :: queue(Item)) -> Q2 :: queue(Item) Q1から前方のアイテムを削除した結果であるキューQ2を返す。 Q1が空の場合、理由はemptyで失敗する。 > L1 = [a,b,c,d,e]. [a,b,c,d,e] > Q1 = queue:from_list(L1). {[e,d],[a,b,c]} > Q2 = queu…

Docker で byobu を起動しようとしたら locale で怒られた

Docker 内でいろいろいじって遊んでいると複数のターミナルウィンドウが欲しくなりますが、ターミナルウィンドウを得るために docker exec を実行するのは面倒なので byobu をインストールしました。 # apt update && apt install -y byobu byobu をインスト…

Erlang の queue モジュールを一通り試す - オリジナルAPI

new/0 関数 new() -> queue() 空のキューを返す。 > queue:new(). {[],[]} in/2 関数 in(Item, Q1 :: queue(Item)) -> Q2 :: queue(Item) キューQ1の後ろにアイテムを挿入した結果のキューQ2を返す。 > Q = queue:new(). {[],[]} > queue:in(a, Q). {[a],[]}…

Erlang の queue モジュールを一通り試す - 準備

キューを扱いたかったので queue モジュールを学ぶ。 引数が間違った型の場合、たとえば、キュー引数がキューではなく、インデックスが整数ではなく、リスト引数がリストではない場合、すべての関数はbadargで失敗する。 不適切なリストは内部クラッシュを引…

Erlang の maps モジュールを一通り試す - その4

OTP 17.0 から maps モジュールが追加された。一通り試す。 公式URL:http://erlang.org/doc/man/maps.html update/3 関数 update(Key, Value, Map1) -> Map2 Types Map1 = #{Key := term(), term() => term()} Map2 = #{Key := Value, term() => term()} Ma…

Erlang の maps モジュールを一通り試す - その3

OTP 17.0 から maps モジュールが追加された。一通り試す。 公式URL:http://erlang.org/doc/man/maps.html next/1 関数 next(Iterator) -> {Key, Value, NextIterator} | none Types Iterator = NextIterator = iterator(Key, Value) イテレータの次のキー…

Erlang の maps モジュールを一通り試す - その2

OTP 17.0 から maps モジュールが追加された。一通り試す。 公式URL:http://erlang.org/doc/man/maps.html is_key/2 関数 is_key(Key, Map) -> boolean() Types Key = term() Map = map() マップMapにキーKeyが含まれている場合はtrueを返し、キーが含まれ…

Erlang の maps モジュールを一通り試す - その1

OTP 17.0 から maps モジュールが追加された。一通り試す。 公式URL:http://erlang.org/doc/man/maps.html filter/2 関数 filter(Pred, MapOrIter) -> Map Types Pred = fun((Key, Value) -> boolean()) MapOrIter = #{Key => Value} | iterator(Key, Value…

Erlang の maps モジュールを一通り試す - 準備

OTP 17.0 から maps モジュールが追加された。一通り試す。 今回は、その準備として、公式ドキュメントバージョン10.5 : http://erlang.org/documentation/doc-10.5/doc/reference_manual/expressions.html#map-expressions のマップの式について学ぶ。 マッ…

Erlang の string モジュールの古い非推奨の関数から代わりの関数へ移行する - 後編

OTP 20.0 で string モジュールに多くの関数が追加されていたのに、最近気がついた。 string モジュールのおさらいをしたい人は下記の記事へ stacktrace.hatenablog.jp 下記のリストに記載した関数は古いAPIで非推奨になっている。それぞれ代わりになる新し…

Erlang の string モジュールの古い非推奨の関数から代わりの関数へ移行する - 前編

OTP 20.0 で string モジュールに多くの関数が追加されていたのに、最近気がついた。 string モジュールのおさらいをしたい人は下記の記事へ stacktrace.hatenablog.jp 下記のリストに記載した関数は古いAPIで非推奨になっている。それぞれ代わりになる新し…

Erlang の string モジュールを一通り試す - その3

OTP 20.0 で string モジュールに多くの関数が追加されていたのに、最近気がついた。一通り試そうと思う。 string モジュールのおさらいをしたい人は下記の記事へ stacktrace.hatenablog.jp split/2, split/3 関数 split(String, SearchPattern) -> [unicode…

Erlang の string モジュールを一通り試す - その2

OTP 20.0 で string モジュールに多くの関数が追加されていたのに、最近気がついた。一通り試そうと思う。 string モジュールのおさらいをしたい人は下記の記事へ stacktrace.hatenablog.jp next_codepoint/1 関数 next_codepoint(String :: unicode:chardat…

Erlang の string モジュールを一通り試す - その1

OTP 20.0 で string モジュールに多くの関数が追加されていたのに、最近気がついた。一通り試そうと思う。 string モジュールのおさらいをしたい人は下記の記事へ stacktrace.hatenablog.jp casefold/1 関数 casefold(String :: unicode:chardata()) -> unic…

Erlang の string モジュールを一通り試す - 準備

OTP 20.0 で string モジュールに多くの関数が追加されていたのに、最近気がついた。一通り試そうと思う。 その前に、string モジュールの基本をおさらいする。すべて、公式ドキュメントに記載されている内容だ。 string モジュールは、文字列処理用の関数を…

Erlang の lists モジュールを一通り試す - その7

最近、Erlang のコードを読んでいて、lists:any という関数が出てきたのだが、知らなかったので調べた。ついでに、他の関数も一通り眺めておく。 公式URL: http://erlang.org/doc/man/lists.html ukeymerge/3 関数 ukeymerge(N, TupleList1, TupleList2) -> …

Erlang の lists モジュールを一通り試す - その6

最近、Erlang のコードを読んでいて、lists:any という関数が出てきたのだが、知らなかったので調べた。ついでに、他の関数も一通り眺めておく。 公式URL: http://erlang.org/doc/man/lists.html sort/1 関数 sort(List1) -> List2 Types List1 = List2 = [T…

Erlang の lists モジュールを一通り試す - その5

最近、Erlang のコードを読んでいて、lists:any という関数が出てきたのだが、知らなかったので調べた。ついでに、他の関数も一通り眺めておく。 公式URL: http://erlang.org/doc/man/lists.html min/1 関数 min(List) -> Min Types List = [T, ...] Min = T…

Erlang の lists モジュールを一通り試す - その4

最近、Erlang のコードを読んでいて、lists:any という関数が出てきたのだが、知らなかったので調べた。ついでに、他の関数も一通り眺めておく。 公式URL: http://erlang.org/doc/man/lists.html map/2 関数 map(Fun, List1) -> List2 Types Fun = fun((A) -…

Erlang の lists モジュールを一通り試す - その3

最近、Erlang のコードを読んでいて、lists:any という関数が出てきたのだが、知らなかったので調べた。ついでに、他の関数も一通り眺めておく。 公式URL: http://erlang.org/doc/man/lists.html keydelete/3 関数 keydelete(Key, N, TupleList1) -> TupleLi…