レス遅くてゴメンね!いただいたメッセージはキチンと読んでます(´・ω・`)

Rust言語の構造体と列挙体がすごく便利で面白い

Rust言語を実務で使うため、しばらくLinux Mintで構築した環境でいろんなcrateを試していた。

で、大体のcrateで出てくるのが、『構造体』と『列挙体』でのmatchと値の取り出し。

『構造体』は他言語で言うところのClassみたいに扱える定義。

『列挙体』についてはenumと呼ばれており、あるデータが取りうる状態を登録しておく定義。

概念的にはこんな感じ。

 

C言語などのコンパイル型言語ではメジャーな話であるだろうに、前者はともかく後者はスクリプト型言語が主流であるWeb系の界隈ではほとんど聞かない。

コンパイル型言語でWeb APIなどをガシガシ作っている方々はともかくとして、一般的なWebエンジニアに「列挙体ってなぁに?」って聞いても「え?なにそれ?」と質問を質問で返すことだろう。

恥ずかしながら自分もRust言語(と、それに伴って半ば強制的にコンバートしなければならないC言語の熟読)をやるまで、列挙体というものに触れた機会なんかほぼない。

スクリプト型言語では列挙体なんてまず出てこないし、ましてや大雑把にでも紐解くなんてやろうと思わなかっただろう。

というか、そもそも無いものはやる必要がない。

自分にとっての未知には手を出さず、クサいものにはフタ。Web系の誰もが例外なく持ってる暗黙のルール。

 

と言いつつもコンパイル型言語に手を出して結構経っている以上、今回は構造体と列挙体について紐解いて、理解に変えていくというお話になる。

これらを使って、単にデータを引数として取り込んで戻り値にするという処理を作成してみる。

Rust SDL2の環境をLinux Mintで構築してみた

Rust言語を本格的に仕事に使えるように自分の端末での開発環境や実用できそうなcrateを選定して展開していたあ

る日のこと。

 

「Linux Mintを入れたPCあるんだけど使ってみない?」

 

と、ツテで唐突にLinux Mintの入ったPCをいただいたので、WindowsでのRust環境構築の箸休めにでも、OS変えてLinux系OSの中にOpenGLの開発環境というものを構築してみたいと思った。

 

使用したのは、Rust SDL2というもの。

恐らくRust言語のOpenGLの開発ライブラリとしては最メジャーだろう。(C++とかを使ってゲーム作ってる人とかにとっては馴染みがあるものではないだろうか?)

 

あわよくば、Windows側も・・・ってことで、Linux Mintの中にRust SDL2の環境を構築してみることにした。

 

トラブルとして、

  • CMake Error: your CXX compiler: “CMAKE_CXX_COMPILER-NOTFOUND” was not found.
  • cargo-vcpkg: failed
  • error: fail to run custom build command for `sdl2-sys v0.34.5`

とかが発生したのでこちらも合わせて書いておこうと思う。

国道157号線の温見峠へバイクでツーリングしたら予想以上の酷道だった

実に突然だが、まずはこの写真を見ていただきたい。

 

 

場所はマニアにはたまらないであろう、言わずと知れた国道157号線。またの名を温見峠

 

これを撮影したのはかれこれ3年前の2018年5月末。

記憶を遡ること、福井から岐阜を抜けようとしていたときだったように思う。

 

いやさ、通行止めの看板の脇をすり抜けて行ってみたら、道が半分崩れてたとか、土砂崩れで道が埋まっていたとかはよくあることだったし、大して気にも留めずに自己責任で進むことはよくあることだったのよ。

 

けど、そもそも橋の崩落から道が寸断されて進むに進めず呆然と立ち尽くしたというのは、このときが初めての経験だった。

Ajax遷移の際にContact Form 7のイベントを再登録する

直近の話でWordPressでちょっとしたサイトを組み上げているとき、サイト全体のページ遷移をAjaxで行わせることがあった。

そのとき、フォームの設置には毎度おなじみのContact Form 7を使ったのだが、メインコンテンツ部分のノードを書き換えた際に、ショートコードで設置したフォームが正常に動作しない(同期モードで実行される)という事象に遭遇したのでそこで少しハマった。

 

要はAjaxによる非同期通信でコンテンツのノードを書き換えた際に、読み込み後のフォームにContact Form 7のJavaScriptのイベントが登録されていないって話ではあるが、今回はそいつを再登録するようにしたかったので投稿。

Windows7/8/10でRustを別ドライブに展開する際のTIPS

Windows7/8/10でRustを別ドライブに展開して使用したかったのだが、公式サイトや他サイトさんの手順通りにやってもうまく行かなかったので、メモがてら実に 半 年 以 上 ぶ り の投稿。

使用したバージョンは「Rust 1.48.0」「Visual Studio Build Tools 2019」。これらをメインのドライブではなく、別ドライブに展開する。

 

仕事にかまけて展開したのが結構前のことなので、展開時の詳しいエラーコードなどはほとんど覚えていない状態だが、同じようなことをしようとしてる人(・・・いるんだろうか?)のためにTIPSとしてブログに掲載。

PHP+SQLでMySQLのInnoDBのテーブルに複合キーかつ連番のINSERTを実装する

Webアプリケーションのシステム開発を行っている際に、検証したことと気づいたこととコーディングしたこと。

 

MySQLのデフォルトエンジンは通常はMyISAMとなっているが、自分はトランザクション発行の関係でInnoDBを使用してシステムを構築した。

このとき、「複合キーを持たせたInnoDBのテーブルにMyISAM的なINSERTを行うならどうするんやろか?」とか「基本的なところで複数のセッションでそれを同時に実行したらどうなるんやろか?」とかで頭を捻らせたことが多々あった。

もちろん最終的にきちんと実装にこぎつけたし、開発もある程度は落ち着いてきているので、とてつもなく久しぶりの更新となるが、今のうちに行ったことの記録を記しておくことにする。