お気に入りのChrome系ブラウザ拡張機能
cistLTサークルのアドベントカレンダー、21日目の記事です。
なんだか1日ずれている気がしないでもないですが、
24時間以内なら誤差ですよね!
この記事では、Chromium向けの拡張機能について
簡単にまとめていきたいと思います。
技術系からずれましたが、おもしろそうなものがあったので。
具体的な内容は、以下のとおりです。
uBlock Origin
あらゆる広告やコンテンツから、私たちの時間と目を守ってくれる、
ネットサーフィンには欠かせない拡張機能の一つです。
起動すればデフォルトでも相当数の広告がブロックできますが、
この他にも要素ブロック機能も利用できるため、
「このサイトのこの部分苦手なんだよな……」
「重宝しているニュースサイトだけどコメント欄が……」
といった状況に対しても、大いに活躍してくれます。
ただ、欠点として、そのサイトの重要な機能までも
ブロックしてしまう可能性があるという点が挙げられます。
そういう場合には uBlock Origin のアイコンをクリックして、
一旦機能をオフにしましょう。
ありがたいことにオンオフは一瞬でできるので、
この拡張機能は入れておいて損はないと思います。
というか煩わしい広告がなくなるだけだし、実質爆アド。
Video Speed Controller
如何に画面の向こうの世界が鈍重でも、これを使えば大丈夫。
そんな感じの安心感ある拡張機能です。
もっと具体的にいえば、
「動画の再生速度を最小0.07倍/最大16倍にできる」ツールです。
元々、速度変更機能が備わっていない動画に対しても
利用できるので、思わぬところで役立ったりします。
特に、授業動画や解説動画などを見る人には絶大な効果を発揮しそうです。
Weblioポップアップ英和辞典
リンク先を見てもらったほうが早いと思います。
とにかく、英語記事を読む機会の多い人や、
英語の学習に専念している人たちにとっては
かなり便利な拡張機能だと思います。
というか、わざわざ単語を検索する手間が省けるので気が楽です。
あと、Twitterで唐突に流れてきた英文ツイートを読むのにも便利です。
自動翻訳が役立たないこともあるので……
Decreased Productivity
これを適用したサイトからは画像が消失する系の拡張機能です。
画像情報に煩わされなくて済むので、調べものの種類によっては
非常にありがたいものになる かもしれません。
試しに Twitter に適用してみると、こんな感じになります。
下のDark Readerと併用すると、また違った感覚になります。
Dark Reader
そのままの意味です。
コンソール画面を見ているときと似たような感覚になります。
上のDecreased Productivityを併用すると、よりそれっぽくなります。
これもTwitterに適用してみましょう。
今回はこんなところです。
追記:
もっと良い組み合わせがあった!!!
Decreased Productivityじゃなくて、
これをDark Readerの静的モードと併用するのが一番快適かも。
C言語(Linux環境)でキーボード入力をリアタイでやりたい!!!
タイトル通りです(学習が進むたびに随時追記)。
というわけで、
今日からスーパーハカー : [C]キーボードの入力を取得する - getch(),getchar() (livedoor.jp)
【C言語】kbhit・_kbhit関数について (hotnews8.net)
を見てみる。
kbhit関数!conio.h!!Windows!!!
無理ですね。
ということなので、
【C言語】Linuxでのkbhit関数(キーイベントの取得) (hotnews8.net)
を読んでみる。
termios, tcgetattr, STDIN_FILENO, c_lflag, ICANON, tcsetattr, etc...
ち、知識がなさすぎてわけわからん……。
ので、様々な文書を参考に脳みそを作っていこう。
疑問1:termiosって何さ?
参考文献:Linux のシリアル通信において termios 構造体で設定可能なパラメータをまとめる (C/C++) - siar (hatenablog.com)
termiosの姿が見えました。
システムコールを理解する | UNIX world (weblike.jp)
を読んだ。
疑問2:tcgetattrとは何ぞや
参考文献:if0604_60.pdf (cqpub.co.jp)、tcgetattr() - 端末の属性の取得 (ibm.com)
謎が謎を呼ぶ状態になってしまったのでここちょっと長いです。
私と同じく基礎知識0からダンジョン攻略する人間へ、1プロトン程度でも役立てば幸いです。(まあ、検索で引っかからなさそうな感じもしますな)
まず、参考文献1個目。
リスト 1 に示すように,押下した文字が表示されないように,処理の前後で端末属性を変え,非カノニカル・モードにするため,termios 構造体を tcgetattr,tcsetattr 関数で操作
まあ、端末属性って単語は一旦置いておいて、
なんにもわからん「非カノニカル・モード」をやっつけます。
Linuxで同期・カノニカルデータ受信 (fc2web.com)を見よ。
次に、参考文献2個目。
int tcgetattr(int fildes, struct termios *termptr);
なるほどね、わからん。
とりあえず、Operating Systems. Exercises. (u-aizu.ac.jp)によると、
fildesは「ファイルディスクリプタ」なるものだそうです。
→ファイルディスクリプタ(ファイル記述子)とは - IT用語辞典 e-Words (e-words.jp)
*termptr は参考文献2-2にも書かれていたように、メモリ位置を指すらしい。
5 アドレス演算子(&)と間接演算子(*) (nagoya-u.ac.jp)によると、
& は変数が割り当てられているメモリのアドレスを得る演算子
とのこと。
だから &oldt って書いてあったのか。
編集に使うURL先置き
tcsetattr() - 端末の属性の設定 (ibm.com)
アストロノーカ ── 宇宙と農業とマシンとAI
cistLTサークルのアドベントカレンダー、14日目の記事です。
先日、PSアーカイブスのゲームを一つ購入しました。
タイトルとカテゴリだけでもう大体全部これから書く内容を物語っている気がしないでもないけど、まあ、アストロノーカの話です。
アストロノーカの話をしつつ、遺伝的アルゴリズムに関することを雑多にメモ書きしていきます。
アストロノーカとは:宇宙一の野菜を作るために情熱を注ぐプレイヤーが、我らの野菜を狙う不届きもの「バブー」を蹴散らすため、トラップ攻防戦を繰り広げるゲーム。だと思います。たぶん。
そこで、実はこのバブーなる生物。プレイヤーのトラップに対抗するために、遺伝的アルゴリズムを取り入れているらしいのです。
バブーのリンク先の画像を見ましたか?かわいいのはこの外見だけ。
爆速で世代交代と学習を繰り返しやがって、我々が丹精込めて育てた野菜を根こそぎ喰らおうとする憎らしいヤツらですよ……!!!ちなみにアストロノーカは最短3日で野菜が完全に成長しきります。
常にトラップを購入して万全の状態にしようとすると、すぐ進化してトラップが効かなくなるし、すぐ自分の財布が軽くなる。次第に常勝不敗ならぬ常敗不勝に陥る可能性がドンと色濃くなってしまうのが何とも恐ろしい。AIってすごいのよ!
ちなみに当時のアストロノーカの製作者さんが、以下の記事(PDF)にてゲームへのAI技術の利用について述べています。昔のゲームなので当然記事自体も随分と古いのですが、こうして身近なものに対して応用されているのを知ると、俄然AIに対する興味がわいてきますね。
https://www.ai-gakkai.or.jp/whatsai/PDF/article-iapp-7.pdf
あと、先程の静岡理工科大学のページに、「遺伝的アルゴリズムのソース・コード(プログラム)の一例」ということで、遺伝的アルゴリズムによるナップザック問題解決プログラムなるものがC言語で記述されたものが載せられていました。
https://www.sist.ac.jp/~kanakubo/research/evolutionary_computing/ga_program.txt
ただ、このシンプルなタイプの遺伝的アルゴリズムはいくつか問題点が存在ということで、これを改良したものがいろいろと研究・開発されているそうですね。ほへー。
<ガチめの余談>
そういえば大学図書室の学科選書だかなんだかのコーナーに、"The Art of Computer Programming(原著じゃなくて日本語訳)"というタイトルの、様々なアルゴリズムに関する解説書があったのを思い出した。
書く題材なんも考えてなかったのでいろいろ検索しながら勢いで書き上げたけど、ちょっとアルゴリズムとかAIとかについて学ぶのも楽しそうだなーと感じてきました。
7 《C言語:AAを動かす練習》
(しまった……昨日のぶんの更新を忘れていた……。1行でも1文字でも毎日更新することを心がけています)
さて、先日の記事に載せたとおり、今回はC言語でアスキーアートを動かしてみた。
……といっても初心者オブ初心者なので、本当に単純なことしかやっていないのだが、メモ代わり(そして復習)としてここに書いておこう。
・system() → stdlib.h
・printf() → stdio.h
・usleep() → unistd.h
以上の関数を使用した。
Linux(WSL)上での実行なので、systemで呼び出すのはclsではなくclean。
次回メモ:
放置中だったバス時刻表プログラムを一先ず完成させる。
5 《第二種電気工事士:スイッチ編》
1-1
スイッチのまとめ。来年の上期試験受けたいんだけどいけるかな……?その前に受験することを忘れそうで怖い。
・単極スイッチ
埋込型、露出型が存在する。
でも露出型は見かけたことないかも。
・3路スイッチ
2箇所でオンオフするときに使う。
家の二階と一階を繋げる通路にある。
・4路スイッチ
3箇所以上でオンオフ時。
例)3→3路×2、4路×1
4→3路×2、4路×2 etc…
・位置表示灯内蔵スイッチ
スイッチがオフだと光る。
・確認表示灯内蔵スイッチ
スイッチがオンだと光る。
・リモコンスイッチ
リモコンリレーを操作する。
オン→赤、オフ→緑。
・リモコンセレクタスイッチ
複数のリモコンの集合体。
・電磁開閉器用押しボタン
・確認表示灯付電磁開閉器用押しボタン
・ペンダントスイッチ
コードの端に取り付けられる。
・コードスイッチ
コードの中間に取り付けられる。
別名:中間スイッチ、コタツにも有。
・プルスイッチ
引き紐を引いてオンオフ。
・調光器
照明の明るさを調節できるスイッチ。
スライド式やダイヤル式が存在する。
・フロートスイッチ
液面に浮かべた浮きの上下により、
液面の高さを検知するセンサー。
・フロートレススイッチ
液体に浸かった電極感に流れた電極で、
液面の高さを検知するセンサー。
・タイムスイッチ
オンオフの時間を設定できるスイッチ。
・自動点滅機
暗くなると自動的に電灯オンにする。
街路灯などに使われている。