未分類

表題のとおりの小ネタです。

テキストファイルの解析をしていると、次の塊の先頭が前の塊の終端を表すことがあり、よく先読みをしたくなったりします。そんなときに「1つだけ」先を読めるiteratorを書いてみました。

未分類

今回は、900円ほどで購入したUSBドングルタイプのWi-FiアダプタのTL-WN725Nを、UbuntuからWi-Fiアクセスポイントにしてみます。この機種は箱には無線LAN子機と明記されているのですが、親機としての機能も併せ持ち、APとして利用可能なようです。

未分類

Linux(今回はUbuntu20.04)でTUIする方法を紹介します。LinuxでGUIでなく端末操作する場合、CLIと言ったりしますが、今回はTUIです。

  • GUI: Graphical User Interface
  • CLI: Command Line Interface(和製英語だとCUIと呼ばれる)
  • TUI: Text-based User Interface

ニュアンス的にはテキストでグラフィカルなウィジェットを模したインターフェースを表現し、キーボードだけで操作していく、簡易GUI的なテキストベースのUIをTUIと呼ぶ感じです。作り的にはncursesなどを利用したアプリケーションになります。

未分類

GUIなLinuxからsshを使って別のGUIなLinuxに入って作業するとき、たまにXの画面が欲しいときがあります。そういうときssh -Xで繋ぐと手元の画面にリモートのGUIアプリを表示して操作することができます。便利な小技ですよね。

$ ssh -X user-name@remote-host
$ gedit

しかし、こうして繋いだ場合も、管理者権限が必要とかでsudoでGUIアプリを起動すると使えないというケースがよくあります。Xの認証の仕組みから使えないのですが、今回はsudoした先でGUIアプリを起動する方法を説明します。

ただし、本番運用の公開サーバーでX関係のライブラリなど必要のないパッケージを入れるのは個人的にはやめた方がいいと思います。あくまで複数のGUIを持つLinux開発マシンを渡り歩くときの小技です。また使い終わったらゴミを残さないようにしましょう。

未分類

今更ながら620円でRaspberry Pi Picoを買いました!PCのUSBに繋ぐと…

  • LED光ります!
  • (ボードの)温度測れます!

(電子工作をしない場合)それしか出来ない小さな基板です。

今回はこの基板のLED光らせて、電子工作なしにデバッグしてみたりします。

未分類

ブラウザにソースコードを貼り付けて、各種言語をオンラインで実行する環境は多くあります。古くはJavaScriptのJSFiddleとかですが、最近だと(言語名)-playgroundみたいな名前で、公式に運用されてるケースも多いです。

今回のターゲット言語であるC++もご多分に漏れず、いくつかの環境があります。

上の2つの環境はC++のソースファイル編集がブラウザ上で出来るものの、コンパイルと実行はサーバー上で実施されます。今回はコンパイルと実行もブラウザ上で実施してみようという試みです。

未分類

本日なんかおかしな挙動をしてたXセッションを裏から操作するために、Ctrl+Alt+F3とかでコンソール操作を試みていたところ、

ubuntu login: xxx
password:
 
Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.13.0-39-generic x86_64)
 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

0のアップデートはすぐに適用されます。

Your Hardware Enablement Stack (HWE) is supported until April 2025.
最終ログイン: 2022/04/01 (金) 00:00:00 JST 日時 pts/0
xxx@ubuntu:~$

ここで「Your Hardware Enablement Stack (HWE) is supported until April 2025.」というメッセージに気付きました。今まで見過ごしていたのか、今日初めて出てきたのか知りませんが、これの意味が分からずにモヤっとします。今回はこれを調べてみました。

未分類

今回は流行り物のRustをやってみました。Web Assembly(以下wasm)を使うとweb上でも出来る!JavaScriptより速い!と巷で噂なのですが、実際のところどうなんだろうと言う話です。

お題はバブルソートで、JavaScriptで実施した場合と、wasmにしたRustで実施した場合の両方で時間を比較してみました。結果はこんな感じです(以下は画像ですが、動かしたい人はこちら。JavaScript+wasmなのでクライアント側で動きます)。

かかった時間が縦軸なので、あれあれ?JavaScriptの方が速い!というのが結論になってしまいました。原因は最後まで分からず、chromeのJavaScriptエンジンが速いだけなのかなぁと予想しています。以下では、調べた結果などを載せておきます。

未分類

C++では関数を呼び出す際の引数指定で、引数名指定ができません。例えばpythonなどは、

def func(a=1,b=2,c=3):
	print(f'{a},{b},{c}')

func(3,2,1) # 3,2,1
func() # 1,2,3
func(b=1) # 1,1,3
func(c=1,a=3) # 3,2,1

のように、いろいろな指定が出来て、3番目の例のように引数名で指定することができます。

今回はC++でなんとか近い実装を無理矢理できないか、調べてみました。なんとかそれっぽいのが部分的に出来てます(?)が、実際使うか?と言われると難しい感じの代物です。アイデアだけ役に立つこともあるかも程度の話です。

未分類

前回までに、Linuxでシステムトレイにgtk&(C++/python)とqt&C++を使ってアイコン表示をしてみました。

今回はqt&pythonで同じことをしてみます。