pyenv install 3.11.6 などで

ImportError: No module named _ssl

とエラーがでてどのver.のpythonもインストールできないとき システムじゃない、ローカルフォルダにopensslをインストールして

./config --prefix=$HOME/.local

インストールコマンドに環境変数の設定を以下のように渡してあげればうまくいった。

CPPFLAGS=-I$HOME/.local/include/openssl/include \
LDFLAGS=-L$HOME/.local/lib64 \
SSH=$HOME/.local/ssl
pyenv install -v 3.11.6

いつやっても忘れる。 とほほ

libhttpserverメモ

C++のhttpサーバライブラリlibhttpserverをインストールする際にコケたことの備忘録

github.com

以下は特に問題なくインストールする。

The minimum versions required are:

g++ >= 5.5.0 or clang-3.6
C++17 or newer
libmicrohttpd >= 0.9.64
[Optionally]: for TLS (HTTPS) support, you'll need libgnutls.
[Optionally]: to compile the code-reference, you'll need doxygen.

以下の手順で本体のインストール

./bootstrap
mkdir build
cd build
../configure
make
make install # (optionally to install on the system)

生成されたexamplesにあるhello_worldを構築するも"C++17"の環境じゃないのでコンパイルできない。確認してください、的なメッセージを受け取る。

どこかの手順に"-std=c++17"のフラグを渡さないといけないのだけど、

./configure -CXXFLAGS="-std=c++17"

を行うも、うまく行かない。

以下のページで

www.katsuster.net

ブートストラップモードのときは configure に CFLAGS, CXXFLAGS を指定する方法は使えません。

とのことで、

./bootstrap BOOT_CFLAGS="-std=c++17"

で、うまく通った。

vimの読み込みオーダー

vim-jp.org

 c. Five places are searched for initializations.  The first that exists
        is used, the others are ignored.  The $MYVIMRC environment variable is
        set to the file that was first found, unless $MYVIMRC was already set
        and when using VIMINIT.
        I   The environment variable VIMINIT (see also compatible-default) (*)
            The value of $VIMINIT is used as an Ex command line.
        II  The user vimrc file(s):
                    "$HOME/.vimrc"         (for Unix) (*)
                    "$HOME/.vim/vimrc"     (for Unix) (*)
                    "s:.vimrc"             (for Amiga) (*)
                    "home:.vimrc"          (for Amiga) (*)
                    "home:vimfiles:vimrc"  (for Amiga) (*)
                    "$VIM/.vimrc"          (for Amiga) (*)
                    "$HOME/_vimrc"         (for Win32) (*)
                    "$HOME/vimfiles/vimrc" (for Win32) (*)
                    "$VIM/_vimrc"          (for Win32) (*)
                    "$HOME/config/settings/vim/vimrc"   (for Haiku) (*)

                Note: For Unix and Amiga, when ".vimrc" does not exist,
                "_vimrc" is also tried, in case an MS-DOS compatible file
                system is used.  For MS-Windows ".vimrc" is checked after
                "_vimrc", in case long file names are used.
                Note: For Win32, "$HOME" is checked first.  If no "_vimrc" or
                ".vimrc" is found there, "$VIM" is tried.  See $VIM for when
                $VIM is not set.
        III The environment variable EXINIT.
            The value of $EXINIT is used as an Ex command line.
        IV  The user exrc file(s).  Same as for the user vimrc file, but with
            "vimrc" replaced by "exrc".  But only one of ".exrc" and "_exrc" is
            used, depending on the system.  And without the (*)!
        V   The default vimrc file, $VIMRUNTIME/defaults.vim.  This sets up
            options values and has "syntax on" and "filetype on" commands,
            which is what most new users will want.  See defaults.vim.

以下の5か所を検索し、最初に引っかかったものが適用される。

  1. 環境変数VIMINITで定義された箇所
  2. ユーザ定義vimrcファイル(システムに応じて検索場所が異なる)
  3. 環境変数EXINITで定義された箇所
  4. ユーザ定義exrcファイル
  5. デフォルト定義ファイル defaults.vim

  6. のユーザ定義vimrcファイル位置がwindows では vimfilesを探るが unix ( linuxも含む?)は .vim/を検索するようだ。

vim ショートカット

vim のショートカットがまとまっていてよき。 vim.rtorr.com

Commandモード時のカーソル移動で、

  • ctrl-w, ctrl-b で先頭、末尾の移動
  • ctrl-u で入力の全削除

ができることは分かったが、

未だ分からないのは

  • 1文字単位でのカーソル移動方法(カーソルキーを使わないやり方)

がわからない。

[追記]

cohama.hateblo.jp

リマップするしかないようだ。

PowerToys

PowerToys Runのデフォルト設定ではWindowsターミナルが英字入力で候補に出てこない。

( 「ターミナル」だと出てくるが、日本語入力検索は面倒)

ちょっとした設定で表示できるようになる。

PowerToys Runの設定項目の「Windows ターミナル」をONにするのと アクティブコマンドを入力すると

表示できるようになる。

gibbs samplingのコード供養

ポアソン混合モデルの gibbs sampling を書いたので供養のため以下に載せておきます。

    for i in range(MAXITER):
        for n in range(N):
            # (4.37), (4.38)
            for k in range(K):
                etas[n][k] = exp(Xs[n] * ln(lambdas[k]) - lambdas[k] + ln(pis[k]))
            # normalization
            subtotal = sum(etas[n])
            for k in range(K):
                etas[n][k] /= subtotal
            #
            Ss[n] = np.random.multinomial(n=1, pvals=etas[n])
        for k in range(K):
            # (4.42)
            hat_a[k] = sum(Ss[n][k] * Xs[n] for n in range(N)) + a
            hat_b[k] = sum(Ss[n][k] for n in range(N)) + b
            # (4.41)
            lambdas[k] = np.random.gamma(shape=hat_a[k], scale=1 / hat_b[k])
        # (4.44)
        for k in range(K):
            hat_alphas[k] = sum(Ss[n][k] for n in range(N)) + alphas[k]
        pis = np.random.dirichlet(alpha=hat_alphas, size=1).reshape(K)