2023/06/01

なんかキショい

Rustを見始めた。ふんふん、for文ってforeachなのね。

C++

for(auto i = 0; i < 11; ++i)

Python

for i in [0, 1, 2, ・・・ 10]

Rust

for i in 0..11

多分、"0..11"ってリスト生成でPythonのrangeと一緒か(range最近のrangeはイテレータだけど、Rustはどっちだろ)。まぁ、これは普通。 

let mut a = 100;

なんじゃ、このブサイクな"mut"とかいうキーワードは。。しかも、変数宣言が"let"って、、VBか!

変数なのに、デフォルトがイミュータブルってどういうことよ? 値が変わるから「変数」って呼ばれるんじゃないの?

こっちはエラー

fn main() {
   let a = 200;
   println!("{}", a);
   a = 100;
   println!("{}", a);
}

$ rustc sample.rs
error[E0384]: cannot assign twice to immutable variable `a`
--> sample.rs:4:5
|
2 | let a = 200;
| -
| |
| first assignment to `a`
| help: consider making this binding mutable: `mut a`
3 | println!("{}", a);
4 | a = 100;
| ^^^^^^^ cannot assign twice to immutable variable

error: aborting due to previous error

For more information about this error, try `rustc --explain E0384`.

こっちはOK

fn main() {
   let mut a = 200;
   println!("{}", a);
   a = 100;
   println!("{}", a);
}

$ rustc sample.rs
$ ./sample
200
100

シャドーイングすれば出来るとか、まったくもってな仕様だよな。

fn main() {
 
fn main() {
   let a = 200;
   println!("{} ・・・(1)", a);
   {
      let mut a = a;
      a += 100;
      println!("{} ・・・(2)", a);
   }
   println!("{} ・・・(3)", a);
}

$ ./sample
200 ・・・(1)
300 ・・・(2)
200 ・・・(3)

イミュータブルと定数との差は? 多分、これ↓? うっわ、気持ち悪!

fn main() {
   const a: i32 = 200;
   println!("{} ・・・(1)", a);
   {
      let mut a = a;
      a += 100;
      println!("{} ・・・(2)", a);
   }
   println!("{} ・・・(3)", a);
}



$ rustc sample.rs
error[E0530]: let bindings cannot shadow constants
--> sample.rs:5:17
|
2 | const a: i32 = 200;
| ------------------- the constant `a` is defined here
...
5 | let mut a = a;
| ^ cannot be named the same as a constant

error: aborting due to previous error

For more information about this error, try `rustc --explain E0530`.

 

 

| | コメント (0)

Ubuntu 22.04 にRust入れたときのメモ

あまり、気乗りがしない。どうもRustには「ボクの考えた最強の言語」臭がするからだ。また、既に「村」もできているようなので、拒否反応が出てしまう。更に、Mozilla?、FireFox?、あぁ、気乗りしない。。。

「ボクの考えた最強の言語」は、いろんなものを取り込むのは良いが、変なところで「好み」が入ってしまうため、中途半端で使えないものが増える割には、言語仕様を複雑化する可能性がある。

例えばOOPが使えますと謳っても継承が使えないのでは、OOPの一番の良さを消していると思うし、「何のために取り込んだの?」という気分になる。

「村」の存在は、「〇〇は最高だ!」、「〇〇があれば何もいらない!」、「〇〇を批判するものは敵だ!」、「〇〇は神聖にして侵すべからず!」、「〇〇以外はクズだ!」といった排他的な反応を見せることがあるので、好きではない。

私は、言語の優劣は不毛と考えている。なんでも出来るというならアセンブリ言語/機械語でも十分だが、WEBアプリをサーバも含めて、一からアセンブリで書くやつはいない。逆にデバイスドライバをPHPで書こうという人もいないわけで、結局、「適材適所」なのだ。

前置きが長くなった。時間がないので作業しよう。

作業メモ

どうやら、aptで入れられるらしい。

$ sudo apt install rust-all

ふむ、インストール後の最新版への更新は専用コマンドか・・・

$ rustup update stable
コマンド 'rustup' が見つかりません。次の方法でインストールできます:
sudo snap install rustup

んんん? rustupなど知らないだと!

$ sudo snap install rustup
error: This revision of snap "rustup" was published using classic confinement and thus may perform
      arbitrary system changes outside of the security sandbox that snaps are usually confined to,
      which may put your system at risk.

      If you understand and want to proceed repeat the command including --classic.

ああもう! ほんとsnapは使えない。リスクってなんだよ!

$ sudo snap install rustup --classic

やっとこさ、rustupをインストール

$ rustup update stable

とりあえずは、システムをアップデート。

今度は、rustc(コンパイラ)が動かない!

$ bash: /usr/bin/rustc: そのようなファイルやディレクトリはありません

だぁかぁらぁ、snapって使いたくないんだよね。

$ whereis rustc
rustc: /snap/bin/rustc

もう一回、aptでインストール

$ sudo apt install rust-all

バージョン比較

$ /snap/bin/rustc --version
rustc 1.69.0 (84c898d65 2023-04-16)
$ rustc --version
rustc 1.65.0

古っる! \(>o<#)

$ sudo snap remove rustup

ここで、shell(端末)を抜けて再立ち上げするのが肝要だった。😖

$ rustup update stable
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'

 stable-x86_64-unknown-linux-gnu unchanged - rustc 1.69.0 (84c898d65 2023-04-16)

info: checking for self-update
$ rustc --version
rustc 1.69.0 (84c898d65 2023-04-16)

やっと、動いた。。。

| | コメント (0)

2021/08/21

激熱! clamdscan

clamdscanは、マルチスレッドが使える。だからといって以下のようなことをすると、見事に全コア100%で実行されてしまった。。。

 $ sudo clamdscan -v -z -m ~

ファンがうなり始め、プロセッサ温度が限界100℃に近づいたので停止させました。熱すぎです。

 

| | コメント (0)

2020/12/19

環境の再育成(2)

とにかく、早いところgnomeをやめたいので、

$ sudo apt-get install kubuntu-desktop

インストール時に、sddmを使う旨の説明が出ます。gdmとsddmのデフォルト選択はsddmにしてみました。lightdmは、今回入れていません。
インストール後、再起動すれば、KDE環境になります。

この後、KDEデスクトップを自分好みにセッチングし直します。

さて、内蔵HDDは、この時点ではマウントされていません。そこで、/etc/fstabに追加しておきます。

/dev/sda2 /mnt/hdd defaults 0 2

これで、再起動するれば、内蔵HDDもアクセス可能になります。

ここからが永いんですが。。。

mpv導入

$ sudo apt update
$ sudo apt install mpv

動画サブネイル

KDE Plasma 5だと、サブネイルは問題なく出るので、設定の必要はないようだ。

No Minecraft No Life.

ランチャーの扱いが変わってましたな。

まず、Minecraftのダウンロードサイトから、ランチャー(Minecraft.deb)を落としてくる。Debianパッケージなので、そのままインストールできる。(ファイルマネージャー上でダブルクリックすればインストーラが立ち上がる)

後は、~/.minecraftをバックアップから引き戻す。(実際は、外付けSSDにあるディレクトリを.minecraftにシンボルリンクするだけ)

これで、メニューにMinecraftが出てくるので、ランチャーを起動できるようになる。しかし、Javaは入っていない。。。
常用はMinecraft 12.02なので、java8を入れる。

$ sudo apt update
$ sudo apt-get install openjdk-8-jre

で、Minecraftは無事に起動した。

Atom

以下のサイトから、debファイルを持ってきてインストール。インストールしたら、とりあえずJapanese-menuパッケージをインストールして日本語化する。

https://atom.io/

Graphvizをインストールしておく。

$ sudo apt update
$ sudo apt install --no-install-recommends graphviz graphviz-dev

あとは、plantuml.jarをダウンロードしておく。

https://plantuml.com/ja/download

最後にAtomでPlantuml-previewパッケージをインストールし、設定で、plantuml.jarのパスを入力すれば使えるようになる。

Markdownについては、markdown-preview-enhancedとmarkdown-to-pdfパッケージを入れてる。
なお、markdown-preview-enhancedはpandocを使う。pandocは、結構、いろいろな場合に使われるのでインストールしておく。

$ sudo apt update
$ sudo apt install pandoc

| | コメント (0)

また、再育成

最近、Cinnamonが重いと感じ始めたので、KDE Plasmaに乗り換えた。

「なぜ、より重たい環境に?」

と思われたかもしれないが、KDE Plasma 5は、なんとCinnamonより軽くなっており、起動してしまえば快適に動く。しかし、メインで使っているHPのPCはHDD仕様なので、起動が、とても遅い。。。

使っている、HP Slim Desktop 290には、M.2のスロットが1つ空いているので、SSDを付けようかと思い、内蔵HDDの使用量を調べてみると、内蔵のHDDは200GB弱しか使用していなかった。これは、何代もPCを乗り換えてきた結果、外付けのHDDやSSDに、ほとんどのデータを逃しているためなのだが、このサイズなら、SSDは512GBで十分そうだった。(内蔵HDDは1TB)

さて、購入前に、ちょっとググってみると、HP Slim Desktop 290にM.2 SSDを取り付ける場合、以下の問題があるようだった。

  1. SSDのインターフェースはPCleでないと認識しない(SATAは認識すらできないという報告あり)
  2. SSD固定用のネジがないので、別途、用意する必要がある(自社で買わせたいための、HPの嫌がらせ?)

なので、Amazonで探して、SSDと、ねじセット(M2ネジが含まれているもの)を購入した。

SSDを装着し、PCの電源を入れて認識したのをBIOSで確認したので、外付けや内蔵HDDを一旦外して、予めDVDに焼いておいたUbuntu 20.04LTS 日本語リミックスのLiveCDでSSDに新規インストールを行った。このとき、別のDVDも試したので、UEFIからレガシーにBIOSを切り替えたが、もしかすると必要はなかったかもしれない。

とりあえず、インストールが終わったので、BIOSで、レガシーモードをOFFしてUEFIに戻し、起動順序でSSDを優先するように切り替えた上で、内蔵HDDと外付けドライブをすべて接続して、再起動すると、問題なくSSD起動した。

「うわっ、起動早っ!」

しかぁし! 立ち上がってきたのは当然ながらGnomeなのよね。。。。

で、アップデート後の最初の作業。

sudo apt install fcitx-mozc

で、「設定」→「地域と言語」→「インストールされている言語の管理」ボタン押下すると、インストールが足りないよというメッセージダイアログが出るので、「インストール」ボタンを押してインストールする。すると言語サポートのダイアログが表示されるので、IMシステムを、iBusからfcitxに切り替える。

最後に

sudo apt purge ibus

を行い、再起動すれば、バイバイiBusできる。

さて、環境をやりなおしますかねぇ。。。

| | コメント (0)

2020/04/19

ああ、またも毎糞ソフトかぁ - LinuxランチャーでのMinecraft 1.12.2の起動方法-

流石に、1.7.10当時のランチャーが古くなったので、サイトから新しいのを落とそうと思って、Minecraftのサイトに行ったのだが、ダウンロードボタンが出ないなぁ。。。

色々と試行錯誤して(Mojangのサイト側で設定しては、ページに入り直す等)、突然、既にJavaエディション持っているのでアップデートしてくれみたいなメッセージが出てきた。。。なんで?

Microsoftって、なんで、こんなにWebサイトの作り方が下手くそなんだ? 無駄な認証やチェックをかけまくって、しかも裏で動かそうとするから、何が問題なのか利用者にわからない。問題点のサジェスチョンが無いから、結局、総当りする羽目になる。総当りしまくって、最後に、IEでアクセスしろとか言われ、涙目になった方も少なくないのでは?

さて、とりあえず、ダウンロードにたどり着き、別ダウンロードを叩いて、debファイルを落としてきて、セットアップする。ランチャーを立ち上げると、プロファイルを引き継いでいたので、1.12.2+Forgeのプロファイルで起動すると、エラーが出て動かない。

Kuzumicrosoft1

もうね、予想に違わないよね、毎糞ソフトって。。。しかも、これじゃ、何をどう対処したら動くかわからない。。。

そこで、ちょっと確認してみた。

  1. Minecraft 最新版(Lastest)を起動してみる(1.15.2)→成功
  2. Minecraft 1.12.2のみ(Forgeなし)を起動してみる→失敗!

この時、古いランチャーを起動してみようとしたのですが、リセットしろと言われてリセットすると、プロファイルが全滅してしまいました。あーあ、、、

さて、Profileは作り直すとして、原因は何なんでしょうか?

ごちゃごちゃ、いじって、犯人確定です。

Kuzumicrosoft2

「JAVAのパスの指定」が、「ランチャー付属のJavaランタイムを使用」ってなってます。

え?システムのデフォでも、Profileに前に設定しておいたパスでもなくて??
いや、確かに、お前ん所の糞OS(Windows)は、デフォルトでJavaが入ってないけどさぁ、元の指定を無視すんなや、ボケが。

で、当然ながら、「ランチャー付属のJavaランタイム」って、Java 8ではないので、1.15は動くけど、1.12は動かない。

互換性を考えれば、バージョン毎に「ランチャー付属のJavaランタイム」を切り替えるところだけど、「互換性? 何それ美味しいの?」な毎糞ソフトに、

それを求めるのは不可能です。(糞ですから。。)

という、訳で、「JAVAのパスの指定」には、Java 8のパスを入れて下さい。これで、起動できます。

Kuzumicrosoft3

まぁ、昔からLinuxでMinecraftやってる人も少ないだろうから、引っかかる人も少ないんだろうけど。。。

| | コメント (0)

2020/01/03

いやぁ、熱いぜ!

ラズパイ4の続編です。

ラズパイのケースは、店で最安値だった、白とピンク(「マジェンダだ」by ディケイド)のものなのですが、このケースやたら厚く、通風口がない。このため、熱が溜まりやすく、CPU温度が70℃近くになってしまいます。

解決案は、ケースの上蓋を外して基盤むき出しで使うでした。現在、温度は56〜63℃前後で推移位しています。これでも、基盤裏面が冷えないので、ちょっと考えものです。

現在、ラズパイ4はmp3再生マシン、兼、インターネット・アクセスマシンになってます。

 

| | コメント (0)

2020/01/02

お正月、ラズパイ4に翻弄される

あけましておめでとうございます。

で、ラズパイ4です。

帰省するので、足を失くした古いモニタを持って帰ってラズパイ4を動かそうとしたのですが。。。

おおっと、HDMIがマイクロになってる。。。ケーブルがぁ! 元旦から営業のジョーシンへ行く。。。

ラズパイ3に入れてあったMicroSDを入れてみる。。。立ち上がった!ケースに入れるために電源切って、再度動かそうとすると、あれ?動かない。MicroSDが凄い熱を持っている。。。Windows PCに入れても、認識できない。。。

幸い、ラズパイ3Bは、素晴らしく安定して動いていたので、そちらで、正常に動いているMicroSDをラズパイ4に入れてみる。結果は同じ。一度電源を切ったら、お釈迦でした。

結局、MicroSD(32GB)を2枚食われました。。。

手持ちで残った、64GBにNOOBS入れて差し込んだのですが、今度は、何も動きませんでした。NOOBSは、exFatに対応していないようです。Windows 10では、Fat32を選択できません。

で、ネット調べてみました。結論としては、exFatでFormatしておき、公式ホームページで、「Fat32 Format」からプログラムをダウンロードして実行する必要がありました。詳しくは、この ページを参照してください。

さて、Fat32フォーマットされたMicroSDにNOOBSを入れて、起動してみましたが、途中でラズパイがリセットしてしまう現象が多発しました。よく考えると、ハードの負荷でSDが飛んだ可能性があったので、最大出力の小さなUSB電源(コンセントからUSBに電源を供給する、コンビニに、よく売ってるやつ)を使ってました。これ、1.8A前後の出力でした。

はい、電力不足です(笑)。でもその時点では気づかず、ラズパイ3Bでセットアップし、ラズパイ4に戻し、やはり、時々、リセットされて、ようやく気が付きました。

電源を、大電流のものに交換し、ケースに、きちんと収めて立ち上げると、正常動作します。SDを壊した原因は、電源を切る際に、本体側のコネクタから、ケーブルを引き抜いていたため、その際に基板に触れてしまったか、抜き方が悪く、サージがかかったのかもしれません。
この辺りを、改善してからは、うまく動いているようです。

でも、MicroSDの予備が亡くなったので、また買いに、また、ジョーシンへ行く羽目になりましたが。。。

さて、使用感ですが、やはりメモリが大きいのは、良いことです。CPUも、それないりに速いかなと思います。Youtubeの1080のミュージックビデオをフルスクリーンモードで再生しても、カクつきもほとんどなく、快適に再生できるようです。とはいえ、ダンスシーンは、カクつきます。これは描画側の問題かなぁ。

そして、USBのポートには青色が2つ、黒色が2つになっています。青の2つはUSB 3で、これで、外部のHDDとかが便利になりそうです。

とりあえず、サーバー用途には使えそうですが、一つ問題があります。今回、本体んとケースだけなので、あっという間に高温になります。

ヒートシンクを付けていないので、PyCharmあたりを動かしていると、熱の警告が表示されました。基本的にヒートシンクと、できればファン付きのケースが必要かもしれません。

以上、ファーストインプレッションでした。

 

 

| | コメント (0)

2019/12/22

おおっと!

せっかく、環境を戻して、楽しくやっていたのですが、

今度はPCが動かなくなった。。。

配電盤工事があったので、PCの電源を落とし、念の為に再立ち上げしたら、BIOSのスプラッシュ画面で固まってしまい、BIOSにすら行けなくなった。

 

ああ、もう!!!

 

壊れたのが、ドスパラのデスクトップで、机に置くにはデカかったので、小さいのにするかと、ヨドバシ直行。。。
陳列してたので、良さそうなのを探して、hpの小さめのマシンを買ってきました。

帰宅後、ubuntuを入れようとしたら、画面解像度がデフォの800x600しか選べない。。。。

結果、インストーラのボタン部分が見えん!

「この俺を、一体誰だと思っているんだ!」

と叫んで、ブラインドタッチ(笑)で、インストールを成功させました。プレインストールの窓は即削除で寿命30分でした。

ホントは、プレインストールされていないマシンが欲しかったんだけど、イマドキ、店頭にはないしなぁ。。。

 

て、またも、データの引き戻しにかかっています。

ちなみに、壊れたPCからは、HDDを抜き取り、裸族に挿して確認したところ、問題なく読めたので、マザーか、周辺の何かが壊れて起動時チェックが終わらないかの、どちらかだと思われます。まぁ、HDDが読めれば、引き戻しは楽ですが。。。

さてと、もどすかぁ・・・

 

| | コメント (0)

2019/06/09

着々と復旧中

Ubuntu 18.04 LTSで環境整備を続けている。

1. mpv導入

まずは、これを入れないと動画再生が始まらない。(笑)

 $ sudo apt install mpv

 

2. 動画サブネイルが出ねぇ!

ypaaaaaaaaaaaaaaaa!! (錯乱)

$ sudo apt install ffmpegthumbnailer

あれ?まだ出ねぇ??

おまけだ、持ってけ!!

$ sudo apt install gstreamer
$ sudo apt install ffmpeg
$ sudo apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio

ffmpegthumbnailer外したり入れたりを繰り返してるうちに、表示された。

 

3. No Minecraft No Life.

.minecraftはバックアップしてるから引き戻す。(というか、外付けSSDにあるディレクトリを.minecraftにシンボルリンクしているので、リンクを張るだけ)

起動したら、落ちた。。。

おう! JAVAが入っていない。

おのれ! オラクル!!(再び、錯乱)

$ sudo apt install openjdk-11-jdk

 しかぁし!、実行で失敗する。。。

ああ、MinecraftはJava8でした(笑)

$ sudo apt remove openjdk-11-jdk
$ sudo apt-get install openjdk-8-jre

よし、動き出した!

守銭奴オラクルJavaは入れたくないですが。Javaは入れざるを得ないんですよね。

 

4. 変態Gnomeをやめる

元々、UbuntuはUnityだったがGnome3に変わった。どちらもMac大好きな皆さんが作ったので似てようだが、GnomeでUnityぽいインターフェースにしたりして、Gnomeの使い難さとUnityの使い難さの相乗効果になっているように思う。

そんなにMacが使いたかったら、Mac買えばいいじゃん!

私はWindowsが嫌いですが、それでも「全てにおいてMacはWindowsより優れている。」という考えには賛同できません。特に、UIは好みや、それまでの経験で、個人差が大きいものです。何でも「Macに倣え。」とはいきません。

で、Cinammonに切り替えることにした。もちろんGDMもLightDMに切り替え。

「なんで、Mintにしなかったの?」という点には、ROSがありますので(笑)

$ sudo add-apt-repository ppa:gwendal-lebihan-dev/cinnamon-nightly
$ sudo apt install cinnamon

再起動して、ログインでシナモン選択して。。。おし、動いてるようだ 

で、LightDMに切り替え 

$ sudo apt install lightdm

ほい、再起動。。よし!ログイン画面が変わった!! 

 

5. そしてiBusを排除!

Cinnamonインストール直後は、日本語変換が使えない。デフォルトがiBusになっていないので、IMEを起動できないようだ。

いままでiBusを使ってきたが、印象が悪い。正直、使いたくない。

で、Cinnamonはデフォルトで、Fcitxを使用するようなので、そちらに切り替える。

$ sudo apt install fcitx-mozc

この後、

  1. メニュー→「設定」→「言語サポート」でダイアログを開いて、「キーボード入力に使うIMシステム」をfcitxに切り替える。
  2. メニュー→「設定」→「Fcitx設定」でMozcを選択する。

で、無事に日本語が打てるようになった。

バイバイiBus!!

 

| | コメント (0)

«引き戻しが大変