とりあえず、試してみました。
/etc/default/grubのデフォルト設定を変更して、リブート。
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvme_core.default_ps_max_latency_us=15000"
sudo update-grub sudo reboot
とりあえず、試してみました。
/etc/default/grubのデフォルト設定を変更して、リブート。
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvme_core.default_ps_max_latency_us=15000"
sudo update-grub sudo reboot
リモートワークでCitrix Workspaceを利用していますが、Ubuntu環境へのインストール方法を紹介します。
今回は、最新バーションではなく、動作確認済のicaclient_22.7.0.14_amd64をインストールします。
Debianパッケージをダウンロードして以下のコマンドを実行します。
sudo dpkg -i icaclient_22.7.0.14_amd64.deb
なお、App Protection Componentをインストールすると、Chromeが起動できなくなってしまいますので、ここではnoを選択します(Firefoxには問題ありません)。
インストールが終了したら、SSL証明書をシステムで利用しているものに変更します。
cd /opt/Citrix/ICAClient/keystore sudo ln -s /etc/ssl/certs cacerts
13インチノートPCにインストールしたのですが、Workspaceのモニター解像度の変更がうまくされませんでしたので、リモートPCの方で対応しました。
試していませんが、DPIの変更方法を検索すると色々と出てきますので、ご参考までに。 askubuntu.com
Pythonで開発する場合、コードを書いて、バッファをインタプリタに送り込んで動作確認、といった一連の作業の繰り返しをEmacs上でしています。ただ、コード内容を共有するには少々不便なので、EmacsにJupyter Notebook環境を設定してみました。
開発OSは、Ubuntu 22.04を使用していますが、デフォルトのPython環境へのpipインストールはできないため (っていうかOSから苦情がでる)、仮想環境を作成して開発しています。
Emacs IPython Notebook (EIN)に、Python仮想環境のカーネル認識させるために、以下のパッケージをインストールし、カーネルをインストールするとJupyter Notebook画面上に仮想環境が表示されます。
pip install ipykernel python -m ipykernel install --user --name=portfolio
portfolioという仮想環境が表示されました。
Emacs設定はこちら⬇
(require 'ein) (require 'ein-notebook) (setq ein:worksheet-enable-undo t) (setq ein:output-area-inlined-images t) (require 'pyvenv) (pyvenv-mode t) ;; Set correct Python interpreter (setq pyvenv-post-activate-hooks (list (lambda () (setq python-shell-interpreter (concat pyvenv-virtual-env "bin/python3"))))) (setq pyvenv-post-deactivate-hooks (list (lambda () (setq python-shell-interpreter "python3"))))
参考: github.com
「プログラミングと株式投資」ってブログタイトルにあるけど、株とは関係ないことばかりって言うか全然更新していませんでした。
株式投資自体は、2022年くらいから本格的にやり始めています。個人的には、日本株だけではなく、外国株へも同様に投資しています。例えば、今は円安なので、外国株で受け取った配当金は、日本円口座に移動し、円高に触れたら逆にポンド、米ドル口座に移動させています。基本、長期的な運用を目指しているので、高配当銘柄を中心に買い、配当金は再投資しています。
僕の場合は、資金を効率よく回転させるためInteractive Brokers (IB)一択です。日本株はもちろんのこと、米国、欧州、香港株など全世界の銘柄を一つの口座で管理することができるのでとても便利です。API取引もサポートしているのでシステムトレードに興味が持っている方には大変おすすめです。全世界に展開しているのでGitHubでIB関連のオープンソースも豊富にあります。
ちなみに、デイトレする訳ではないので、わざわざAPI取引する必要はないのでは、と思われるかもしれませんが、API経由でできることは株式の発注のみならず、ファンダメンタルズデータや時系列株価データなども取り込んで分析することができます。
システムトレードに興味がある方は、こちらのオープンソースも参考にしてみてください。 github.com
前回の基本設定編に引き続き、SublimeTextの話題です。
SublimeTextは、基本テキストエディタなので、IDE(Integrated Development Environmentの略)機能では、ちょっと見劣り感があります。というより、目的とするところが違うため一概には比較できないのですが... しかしながら、LSP-clangd(以下詳述)経由で言語サーバーと連携させることにより、IDE並みの開発ツールに変貌するのです。
今回は、SublimeText 4でのC++開発環境の構築方法を紹介したいと思います。 SublimeText歴が1ヶ月と短いので見落としているところ、もしくはもっと良い方法があるかもしれないのでそのときはコメントを頂けるとありがたいです。
ちなみに、SublimeTextの特に気に入っているところ:
などです。
※ ここでは、Linux(Ubuntu 22.04LTS)環境を想定していますので、macOSやWindows上での動作確認はしていません。
以下のパッケージをインストールします。
$ sudo apt-get update $ sudo apt install clang clang-format $ sudo apt install gcc-multilib g++-multilib
※ ちなみに、私の環境ではgcc-11の開発版がインストールされていたのですが直近のclangdでは標準ライブラリがうまく認識されませんでした。gcc/g++-multilibをインストールしたら、バージョン12が追加されうまく動作しました。
maron@minisoba:~$ ls -alrt /usr/include/x86_64-linux-gnu/c++ total 20 drwxr-xr-x 16 root root 4096 Mar 7 06:35 .. drwxr-xr-x 6 root root 4096 Apr 8 00:52 11 drwxr-xr-x 5 root root 4096 Apr 10 10:30 . drwxr-xr-x 4 root root 4096 Apr 10 10:30 12
参考: https://stackoverflow.com/questions/74785927/clangd-doesnt-recognize-standard-headers
clangd understands your C++ code and adds smart features to your editor: code completion, compile errors, go-to-definition and more. clangd is based on the Clang C++ compiler, and is part of the LLVM project.
clangdは、LLVMプロジェクトで開発されたC++コンパイラをベースしたC++コードを動的に解析することを可能にする言語サーバー(Language Server)です。言語サーバープロトコル(以下、LSP)を介してエディタと通信することで、様々なIDE機能を提供することができます。LSPは、デファクトな標準規格なので、多くのエディタ向けにプラグインが開発されています。
など
clangdの機能詳細についてはここ(英語版)を参照してください。
clangdをSublimeTextと連携させるためにはちょっとした準備が必要です。
言語サーバープラグイン(以下、LSP)とLSP-clangdのプラグインをパッケージコントロールからインストールします。
まず、clangdにコード解析をするための基本情報を教えてあげる必要があります。やり方としては、CMakeベースのプロジェクトの場合cmakeファイルからcompile_commands.jsonを自動生成する方法と、予めコンパイラフラッグを定義したcompile_flags.txtを参照する方法があります。
compile_commands.json
# -DCMAKE_EXPORT_COMPILE_COMMANDS=1を追加する $ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 ..
私の場合は、個人用リポジトリが1つしかないのでcompile_flags.txtをプロジェクトのルートディレクトリにおいています。
clagndの設定が完了したら、最後にSublimeTextの設定です。先述したとおり、LSP-clangdプラグインをインストールすることでSublimeTextをパワフルなIDEに変貌させることができます。 最近のJavaベースのGUI依存IDEよりも、テキスト(コード)編集に特化したSublimeTextに開発補助ツールを連携させるスタイルが、ちょうどいい距離感(なんのこっちゃ)があって非常に満足しています。
能書きはさておき、LSP-clangdプラグインの設定は以下のとおりです。LSP-clangdの設定は、パッケージレベルとプロジェクトレベルで設定することができます。
パッケージレベル(グローバル設定)では、 Preferences > Package Settings > LSP > Servers > LSP-clangd
プロジェクトレベルでは、プロジェクトファイルに直接書き込みます。
自前でIDE機能を実装するよりも、コンパイラをベースにした独立した解析ツール(コンパイラに勝るコード解析ツールはない訳で)を実装し、標準プロトコルを介してエディタ機能を拡張させる方法はものすごくいいデザインだと思っています。以前でしたら、高度なIDE機能を使いたいがために重たいJavaベースの開発環境一択だったのが、LSPと接続することによりプログラマの好きなエディタでIDEなみのツールを手にすることできるのはとてもありがたいですね。
巷では、ChatGPTが話題になっていますが、プログラミングの分野でもAIベースの開発補助ツールが散見されるようになりました。有名どころとして、GitHubのCopilotとTabnineがあります。Copilotは、GPT-3モデルをベースにしており、よりコンテクストベースなコードが生成できるのに対し、TabnineはGPT-2モデルをベースに学習させておりAIベースのコード補完ツールみたいです。こちらは、YouTubeから拝借したもので、CopilotはSublimeTextのプラグインはオフィシャルで提供されていないので、Tabnineを利用しています。
以下は、コード補完の例ですが、Tabnineが推奨するコードにはTabnineと右端に明記されています。ちなみに、既にあるコードをコメントしてどのようなコードが推奨されるか試したものです。コード補完としては、タイプする量がだいぶ減ったので今のところは満足しています。折を見て、AI開発ツールについても調べて見たいと思います。
参照: eremeev.ca
ずっとEmacsを使ってきたのですが、C++とPythonの開発にしか使わないし、最近どうも重いと感じていたので以前購入したSublimeText 4を自分仕様にカスタマイズしてみました。基本、今まで使ってきたEmacsの設定をできる限り再現することを目標にしています。
以下、C++とPython開発に利用しているパッケージ一覧です。
(2023年4月現在)
基本的に、Emacs Pro Eseentialsのキー設定を継承していますが、一部自分仕様に変更しています。(以下随時更新)
コマンド関連 | |
---|---|
機能 | ショートカットキー |
shift+ctrl+p | SublimeTextのコマンドパレットを表示する |
ctrl+0 | サイドバーをフォーカスする |
ctrl+x ctrl+c | 現在のファイルを保存して終了する |
ctrl+x g | コマンドのキャンセル |
ファイル関連 | |
ctrl+x ctrl+s | 現在のファイルを保存する |
ctrl+x ctrl+m | 全てのファイルを保存する |
ctrl+x ctrl+w | SublimeTextの新規ファイル保存ダイアログを表示する |
移動関連 | |
ctrl+n | 次の行へ進む |
ctrl+p | 前の行へ戻る |
ctrl+f | 1文字進む |
ctrl+b | 1文字戻る |
meta+f | 1語進む |
meta+b | 1語戻る |
ctrl+v | 1画面分進む |
meta+v | 1画面分戻る |
esc+< | ファイル先頭に移動する |
esc+> | ファイル末尾に移動する |
ctrl+a | 行頭へ移動する |
ctrl+e | 行末へ移動する |
ctrl+u | 次に入力するコマンドを4回実行する (universal argument) |
meta+0 ... meta+9 | 次に入力するコマンドを数字の回数だけ実行する (numeric argument) |
meta+- | 次に入力するコマンドを逆に実行する (negative numeric argument) |
ウインドウ関連 | |
ctrl+x 5 2 | 新しいウインドウを表示する |
ctrl+x 5 0 | 現在のウインドウを閉じる |
ctrl+x 1 | 現在のウインドウ以外の全てのウインドウを閉じる |
ctrl+x 2 | ウインドウを上下に2分割する |
ctrl+x 3 | ウインドウを左右に2分割する |
meta+shft+2 ... 5 | ウインドウを分割する(2-4: N列、5: 2行2列) |
ctrl+x d | 現在のパネルを閉じる |
ctrl+x o | 左のパネルに移動する |
ctrl+x n | 左のパネルに移動する |
ctrl+x p | 右のパネルに移動する |
ctrl+x k | 現在のタブを閉じる |
ctrl+fn+pgup | 左のタブへ移動する |
ctrl+fn+pgdn | 右のタブへ移動する |
ctrl+shift+1 ... N | パネルをグルーブNに移動する (ウインドウがN分割されている場合) |
ctrl+x ctrl+b | SublimeTextのタブ選択パレットを表示する |
ctrl+x } | 現在のパネルを広げる (universal, numeric, and negative argumentと併用可) |
ctrl+x { | 現在のパネルを狭める (universal, numeric, and negative argumentと併用可) |
ctrl+x P | 現在のタブを固定する |
ctrl+x K | 現在のタブ以外の使用されていないN個パネルを閉じる (universal, numeric, and negative argumentと併用可) |
ctrl+x ctrl+f | SublimeTextのタブ選択パレットを表示する |
検索関連 | |
ctrl+s | 前方検索を開始する |
ctrl+r | 後方検索を開始する |
ctrl+u ctrl+s | 正規表現の前方検索を開始する |
ctrl+u ctrl-r | 正規表現の後方検索を開始する |
ctrl+s ctrl+s | 最近検索した文字列を前方検索する |
ctrl+r ctrl+r | 最近検索した文字列を後方検索する |
meta+r | SublimeTextの検索置換(Find-Replace)パレットを表示する |
編集関連 | |
ctrl+x h | 現在のバッファを全選択する |
meta+c | 単語の最初の文字を大文字にする |
meta+u | 単語を大文字にする |
meta+l | 単語を小文字にする |
ctrl+x ctrl+u | 選択された領域を大文字にする |
ctrl+x ctrl+l | 選択された領域を小文字にする |
ctrl+/ | Undo |
ctrl+x u | Undo |
ctrl+shift+/ | Redo |
ctrl+k | 行末まで削除する (削除した行はキルリングに蓄積) |
ctrl+d | 右文字を削除する |
backspace | 左文字を削除する |
meta+d | 前方の単語を削除する (削除した単語はキルリングに蓄積) (universal, numeric, and negative argumentと併用可) |
meta+backspace | 後方の単語を削除する (削除した単語はキルリングに蓄積) (universal, numeric, and negative argumentと併用可) |
ctrl+meta+k | S式単位(S-Expression)を削除する (削除した部分はキルリングに蓄積) (universal, numeric, and negative argumentと併用可) |
ctrl+space | 範囲の開始位置をマークする |
ctrl+x ctrl+x | 現在位置とマーク位置を入れ替える |
ctrl+space ctrl+space | 範囲の開始位置をマークして有効にする |
ctrl+y | マークから現在位置までの範囲をキルリング(貼り付け用のバッファ)にコピーする |
ctrl+shift-a | カーソルのある文字を選択する |
マクロ関連 | |
ctrl+x ( | マクロの記録を開始する |
ctrl+x ) | マクロの記録を終了する |
ctrl+x e | 記録したマクロを実行する |
コード編集関連 | |
alt+h | インラインヘルプ表示 (C++/Python) |
ctrl+c < | インデント |
ctrl+c > | アンインデント |
その他 | |
ctrl+meta+h | スペルヒントのオン/オフ |
コマンド関連 | |
---|---|
機能 | ショートカットキー |
meta | メニューを表示する |
ctrl+meta+left/right | 仮想ウインドウを移動する |
meta+f10 | アプリケーションウインドウに最大化にする |
f11 | アプリケーションウインドウをフルスクリーンにする |
以前、Dell Precision 5530ノートブックPCにUbuntu 20.04を新規インストールした際、ファンのノイズ問題が発生しました。GPUやCPUの状態に関わらず、常時ファンはフル稼働状態になってしまう問題、今回22.04へのアップグレードで再発してしまいましたので、解決方法を紹介します。
$ sudo dpkg-query -l | grep i8kutils ii i8kutils 1.43+nmu1 amd64 Fan control for Dell laptops
$ git clone git@github.com:TomFreudenberg/dell-bios-fan-control.git $ cd dell-bios-fan-control $ make
$ ./dell-bios-fan-control 0 BIOS CONTROL DISABLED
$ i8kctl fan 1 1 2 2 $
ファン速度の設定値は以下の通り、左右違った値を設定できます。
値 | 設定内容 |
---|---|
0 | オフ |
1 | 低速 |
2 | 高速 |
- | 変更無し |