読書メモ: やさしく学べる離散数学

離散数学に書かれているように組み合わせ論と、グラフ理論が中心だった。章立ては以下のようになる。

  1. 集合と論理
  2. 関係と写像
  3. 代数系
  4. 順序集合と束
  5. グラフ

ここでは、集合について基本的な記号∈∉⊆⊂∪∅の紹介とA={n|1≧..}要素を書く方法等が書かれている。後はN=自然数全体の集合、Z=整数全体の集合、Q=有理数全体の集合、R=実数全体の集合、C=複素数全体の集合などの特別な記号も書かれていました。全体集合U、空集合∅、全称記号∀、存在記号∃などの紹介。その後に、集合の演算が書かれている。和集合A∪B={x|x∈A or x∈B}、積集合A∩B={x|x∈A and x∈B}、補集合。あと、定理があって、ベキ等律、交換率、結合率、分配率、吸収率。 次が論理で、最初に命題が出てきます。真か偽かどちらか一方に明確に定まる主張のことを命題という。命題の真偽を真理値とい真T偽Fで表す。次に命題関数の話がでてきて、変数にある特定の要素を代入すると真偽が定まる主張のこと。トートロジーという構成の命題の真偽にかかわらず常に真であるもの、コントラディクションは常に偽であるもの。常にトートロジーであるものに三段論法、対偶法、背理法。 関係と写像に関しては、直積集合、順序対(並んでいる順番に意味がある組)、関係の定義、合成の定義があった。そして、関係を表す関係グラフ、有向グラフ、関係行列の説明が続く。次に同値関係が出てきて、集合A上の関係Rの特別な性質につけられている名前が出てくる。反射律、対称律、推移率、反対称律。これらは図を使って説明されているので非常にわかりやすかった。この後も続くのだが、後日追記します。

RSS読んだ記録 2018-01-13(土)

gRPC を使ったファイル転送ツール作った。

Win->Linuxで転送を行うときに簡単に行える便利ツール。基盤としてgRPCが使用されているようだ。gRPC自体はgRPCって何? この辺を見ると簡単に分かる。.protoを使用してクライアントとサーバー側に必要なコードのひな形を作成できるようだ。楽ですね。ftを見る限り、こちらのライブラリを使用しているようだ。手元にWindowsがないので試せないが参考にしてMacで同様のことが出来ないか調べたい。

With Linux, You Don't Get One Kernel of Truth... You Get Many

カーネルのバージョンの調べ方を共有する物らしい。各ディストリの方法とかが書かれている。

React で Octicon を使うためのコンポーネントライブラリ書いた

GitHubが配布しているOcticonsというアイコンセットが最近SVGになったのでそれに対応した話。こちらのreact-component-octiconsモジュールを使えばSVGになったアイコンセットをReactから簡単に使えるようです。TypeScriptで記述されている例がある。TypeScriptは結局手を出してないのでこれを機会にちょっとだけやってみるかな。

ptraceを使ってみよう!

Linuxで簡易的なDebuggerを作成する話。ptraceを使用すると割合簡単にいけるようだ。ptrace自体がそもそもそういう目的のツールらしい。

ptrace() システムコールは、親プロセスが、別のプロセスの実行の監視/制御を 行ったり、コアイメージ (core image) やレジスタの調査/変更を 行ったりする手段を提供する。 ptrace() は、主にブレークポイントによるデバッグやシステムコールのトレースを 実装するのに用いられる。

楽しいバイナリの歩き方という本でWindows版の紹介されていたのでその補足のようだ。

Go’s hidden #pragmas

格言のpragmaを紹介した上で、Goのpragmaの紹介をしています。ソースコードここに記述されているようです。つまり、以下がgoのpragmaとして使用することが出来ます。

   case "go:nointerface":
        if objabi.Fieldtrack_enabled != 0 {
            return Nointerface
        }
    case "go:noescape":
        return Noescape
    case "go:norace":
        return Norace
    case "go:nosplit":
        return Nosplit
    case "go:noinline":
        return Noinline
    case "go:systemstack":
        return Systemstack
    case "go:nowritebarrier":
        return Nowritebarrier
    case "go:nowritebarrierrec":
        return Nowritebarrierrec | Nowritebarrier // implies Nowritebarrier
    case "go:yeswritebarrierrec":
        return Yeswritebarrierrec
    case "go:cgo_unsafe_args":
        return CgoUnsafeArgs
    case "go:uintptrescapes":
        // For the next function declared in the file
        // any uintptr arguments may be pointer values
        // converted to uintptr. This directive
        // ensures that the referenced allocated
        // object, if any, is retained and not moved
        // until the call completes, even though from
        // the types alone it would appear that the
        // object is no longer needed during the
        // call. The conversion to uintptr must appear
        // in the argument list.
        // Used in syscall/dll_windows.go.
        return UintptrEscapes
    case "go:notinheap":