- 投稿日:2022-01-27T22:48:48+09:00
Gtk3アプリ GtkButton処理関連
ボタンのWidthHeightの取得 Gtk.Button btn = new Button(); int width; int height; btn.GetSizeRequest(out width,out height); ボタンのWidthHeightの設定 Gtk.Button btn = new Button(); btn.SetSizeRequest(100, 35); ボタンを動的に追加する GtkLayoutをGladeに追加します。IDをつけます。ここではlayOut1 追加した後にShowAll()を実行しないと表示されないです。 public MainWindow() : this(new Builder("MainWindow.glade")) { Gtk.Button btn = new Button(); btn.Label = "テスト"; layOut1.Put(btn,100,120); btn.Clicked += delegate(object? sender, EventArgs args) { Console.WriteLine("テスト"); }; this.ShowAll(); } ボタンを動的に連続して追加する for(int i=0;i<5;i++) { Gtk.Button btn = new Button(); btn.Label = "test" + i.ToString(); btn.Name = i.ToString(); btn.Clicked += delegate(object? sender, EventArgs args) { Console.WriteLine(((Gtk.Button)sender).Name); }; int width; int height; btn.GetSizeRequest(out width,out height); int kankaku = height + i * 30; this.layOut.Put(btn,200,kankaku); } this.ShowAll(); 独自の変数を追加しイベントの中で取得する class ButtonEx : Gtk.Button { public string TestStr { get; set; } } public MainWindow() : this(new Builder("MainWindow.glade")) { ButtonEx btn = new ButtonEx(); btn.Label = "テスト"; btn.TestStr = "testtest"; layOut1.Put(btn,100,120); btn.Clicked += delegate(object? sender, EventArgs args) { Console.WriteLine(((ButtonEx)sender).TestStr); }; this.ShowAll(); } WidthHeight取得の拡張クラス static public Dictionary<int,int> _getWidthHeight(this Gtk.Button btn) { int width; int height; btn.GetSizeRequest(out width,out height); return new Dictionary<int, int>() {{ width, height} }; } static public void _setWidthHeight(this Gtk.Button btn,int width,int height) { btn.SetSizeRequest(width, height); } static public int _getWidth(this Gtk.Button btn) { int width; int height; btn.GetSizeRequest(out width,out height); return width; } static public int _getHeight(this Gtk.Button btn) { int width; int height; btn.GetSizeRequest(out width,out height); return height; } 続く
- 投稿日:2022-01-27T21:45:55+09:00
PyMC3用の環境構築
はじめに PyMC2系を利用するための環境は特に苦労なく構築できるのですが、PyMC3系の環境はすんなりいかなかったので備忘録的に残しておきます。 環境 項目名 バージョン Linux ディストリビューション Ubuntu 20.04.3 LTS Python 3.9.7 PyMC3 3.11.4 Python は pyenv で管理されていることを前提とします。 構築手順 Python のインストール theano からの要請で、共有ライブラリ libpythonX.Y.a (X.Y は Python のバージョン) が位置独立コードでなければならないため、コンパイルオプション -fPIC を指定してビルドします。 CFLAGS="-fPIC" pyenv install 3.9.7 pip を最新版にアップグレードしておきます。 pip install --upgrade pip PyMC3 のインストール pip install pymc3 NumPy のダウングレード NumPy 1.22 以降をインストールすると pymc3 インポート時に以下のようなエラーが出るため、ダウングレードをしておきます。 AttributeError: module 'numpy.distutils.__config__' has no attribute 'blas_opt_info' pip install 'numpy<1.22' 補足 Python のバージョンが古いと最新の PyMC3 がインストールされません。たとえば Python-3.6 系の場合、PyMC3 3.10.0 がインストールされます。この場合 import pymc3 as pm を実行すると以下のエラーが出ます。 ~/.anyenv/envs/pyenv/versions/3.6.15/lib/python3.6/site-packages/pymc3/stats/__init__.py in <module> 45 compare = map_args(az.compare) 46 ess = map_args(az.ess) ---> 47 geweke = map_args(az.geweke) 48 hpd = map_args(az.hpd) 49 loo = map_args(az.loo) AttributeError: module 'arviz' has no attribute 'geweke' Python のバージョンを変えたくないのであれば、arviz をダウングレードすることによって上記問題を解決することができます。 pip install 'arviz<=0.11.0'
- 投稿日:2022-01-27T20:58:36+09:00
Windows10でプログラミングをはじめる(2) ~Windows Terminalなどの導入~
はじめに 前回の記事からもう1年くらい経っていますが、気が向いたので書くことにしました。 目標 すぐ下の画像は、前回の記事の最後にも載せたUbuntuのターミナルですが、かなり見辛いです。また、色のコントラストが強くて目が疲れる人もいるかと思います。 今回の記事ではこれを、下の画像のようなターミナル(Windows Terminal)に変更する手順について述べます。 手順 やることは以下の4つになります。 Windows Terminalのインストールと設定 フォントの変更 色の変更 プロンプト("User name@Host name:~$"の箇所)の変更 Windows Terminalのインストールと設定 Microsoft StoreからWindows Terminalをインストールしてください。(こちらのリンク先をたどっても良いです。) Windows Terminalを起動すると、まず以下のような画面(PowerShell)が出ると思います。画像のようにプルダウンからUbuntuを選択すると、Ubuntuが開きます。ただ、このままだと毎回起動時にPowerShellが立ち上がってしまいます。 なので、設定を開いて「既定のプロファイル」をUbuntuに変更し、「保存」しましょう。 これでWindows Terminalの最低限の設定は終わりです。 フォントや色の変更 さて、これでWindows Terminalを起動すればUbuntuが開くようになりました。開いてみると、次のような感じになっているかと思います。 色については、Ubuntu標準のターミナルよりも見やすくなっています。これで満足だという方はお帰りください。ここからは(他の人の趣向によって形成された)僕の独断と偏見でこのターミナルをさらに改善していきます。 気になる点は以下の3つくらいでしょうか? フォントがクソ。見辛い。 色は良くなったが、もう少し目にやさしい色にしたい。 プロンプト("User name@Host name:~$"の部分)が長い。邪魔。 下2つについては次の節で話すこととして、まずはフォントを変更しましょう。 プログラミング用フォント プログラミングにおいては、コードの可読性向上などのために適切なフォントを導入すべきです。プログラミング用フォントとしてはRictyやHackGenが人気ですが、Rictyは少し導入が大変ですし、l(エル)と1(イチ)が見分けにくいので、この記事ではHackGenの導入について説明します。 HackGenフォントのインストール 以下のURLを参考に、フォント(zipファイル)のダウンロードを行ってください。 Ricty を神フォントだと崇める僕が、フリーライセンスのプログラミングフォント「白源」を作った話 - Qiita zipファイルを解凍した後、[スタート]>[設定]>[個人用設定]>[フォント]を開いてください。zipファイルの中の.ttfファイルを以下のようにドラッグ&ドロップするとフォントのインストールが完了します。 フォントの適用 では、いよいよフォントをWindows Terminalに反映させましょう。 Windows Terminalの「設定」を開き、画像のように[既定値]>[外観]>[フォント フェイス]を押してください。フォント一覧が出るので、中からHackGenを探して選択し、右下の「保存」を押してください。 これでOKです。 比較のため、変更後の画面を出しておきます。前のフォントより見やすくなっていると思います。 色の変更 この節では、Windows Terminalの背景・文字色を変えます。 Windows Terminalにはデフォルトで配色が9種類ほど用意されていて、その中の色で良いなら設定から簡単に変更することができます。 ただ、9種類しかないので他の配色が良い場合は、ネットから拾ってくる必要があります。9種類のどれかで良い人は「配色の追加」を飛ばして「配色の設定」を読んでください。 配色の追加 Windows Terminalの配色は以下のサイトにあります。 Windows Terminal Themes いろいろな配色があるので気に入ったものを選んで、「Get theme」を押してください。クリップボードに配色を表す文字列がコピーされます。 コピーできたら、Windows Terminalの設定から「JSONファイルを開く」を選んでください。どのアプリで開くかを聞かれますが、適当にメモ帳とか選べばいいです。 下の画像のように変な文字が並んでいますが、下の方にスクロールして、"schemes"という設定項目を見つけてください。カーソルを赤矢印のところに合わせて、先ほどクリップボードにコピーされた文字(配色)を貼り付けてください。このとき、クリップボードにコピーされた文字は波括弧{}で閉じられていますが、}の後ろにコンマ(,)を追加してください。 JSONファイルを保存すれば、配色の追加は完了です。 配色の設定 配色の設定は、色の変更と同様、Window Terminalの[設定]>[既定値]>[外観]からできます。 配色の追加がうまくいっていれば、[配色]から追加したものが選べるようになっているはずです。 変更後のターミナルはこんな感じ(iceberg-darkの場合)。 プロンプトの変更 これでかなり見た目がよくなったと思います。でもプロンプトが長いです。プロンプトのユーザ名やホスト名はリモート通信の際には便利ですが、ローカルで作業する人には関係ありません。だから、次はこれを消してしまいます。 いろいろなやり方がありますが、個人的にはzsh+preztoを使用するのが一番楽な気がします。 ちょっと疲れたので、zshとpreztoのインストールについては以下のリンクを参照してください。。。(そのうち書き直すつもり) zsh+prezto環境構築 preztoがインスト―ルできれば、ホームディレクトリに.zpreztorcという設定ファイルができます。 この中にプロンプトを設定する zstyle ':prezto:module:prompt' theme 'sorin' という行があるので、'sorin'の部分を好きなテーマに変更してください。pureがシンプルで使いやすいかと思います。 他のテーマについては Customizing Your Prezto Prompt など参照してください。 おわりに これで使いやすい Linux 環境が構築できたかと思います。説明が冗長・不足な部分などあるかとは思いますが、読者の一助となれば幸いです。 参考文献に大きく依った内容なので、そちらもご確認ください。 参考文献 ターミナルの整理:お前らのターミナルはダサい zsh, prezto:zsh+prezto環境構築 Windows Terminal公式ドキュメント:Windows ターミナルとは Rictyのインストール説明:ubuntu linux に プログラミング用フォント Ricty をインストールする 白源:Ricty を神フォントだと崇める僕が、フリーライセンスのプログラミングフォント「白源」を作った話 Windows Terminalの配色:Windows Terminal Themes Icebergインストール(vim移植, mac):ICEBERG
- 投稿日:2022-01-27T11:02:45+09:00
Kubernetes 便利なAlias
k8s でよく使うAlias # ALIAS alias kgp="kubectl get pods" alias kgs="kubectl get services" alias kgd="kubectl get deployments" alias kgi="kubectl get ingress" alias kgpg="kubectl get pods | grep " alias kgsg="kubectl get services | grep " alias kgdg="kubectl get deployments | grep " alias kgig="kubectl get ingress | grep " alias kdp="kubectl describe pods" alias kds="kubectl describe services" alias kdd="kubectl describe deployments" alias kdi="kubectl describe ingress" alias kex="kubectl exec -it " alias ked="kubectl edit deployments" alias kes="kubectl edit services" alias kgi="kubectl get ingress" alias kl="kubectl logs -f "