投稿

C++ 継承の使い方

一部だけ処理が異なるような複数のクラスを用意する際、継承を利用することで楽になる。 // Base.h class Base { public:     int a_, b_;     int ans_;     Base(int a, int b) {         a_ = a;         b_ = b;     }     virtual void Calc() = 0;     int Ans() {         return ans_;     } } // Add.h #include "Base.h" class Add : public Base { public:     Add(int a, int b) : Base(a, b) {     }     virtual void Calc() {         ans_ = a_ + b_;     } } // Sub.h #include "Base.h" class Sub : public Base { public:     Sub(int a, int b) : Base(a, b) {     }     virtual void Calc() {         ans_ = a_ - b_;     } } 上記のように、基底クラスを作成し、変更したい関数を仮想関数にする。そのクラスを継承した派生クラスを作成、仮想関数を上書きすることで新しいクラスを作成することができる。 以下のように普通のクラスと同様にインスタンス生成が可能。 Add * add = new Add(2,...

C++ int型の範囲

int8_t : -128 ~ 127 uint8_t : 0 ~ 255 int16_t : -32768 ~ 32767 uint16_t : 0 ~ 65535 int32_t : -2147483648 ~ 2147483647 uint32_t : 0 ~ 4294967295 int63_t : –9223372036854775808 ~ 9223372036854775807 uint64_t : 0 ~ 18446744073709551615

MGO2R OFW版が公開された

MGO2RのOFW版が公開されました。MGO2Rは、MGO2の非公式サーバ(エミュ鯖)のことで、これまでCFWでしかできなかったものがOFWでもできるようになりました。 MGO2をMGO2Rのサーバに接続するためには、追加データをPS3に入れる必要になりますが、OFWではそのままではインストールできませんでした。 今回、追加データが入ったバックアップデータが公開されたため、このデータからリストアすることでOFWでもMGO2Rへの接続が可能になりました。 リストアする際には本体データが初期化されるため、あらかじめセーブデータ等のバックアップを取っておく必要があります。 手順 まず SaveMGO のアカウントを作成しておきます。MGO2Rへはこのアカウントで接続することになります。 以下のリンクからリストアデータをダウンロードします。 https://savemgo.com/forums/viewtopic.php?f=22&p=4423#p4423 MGS4ディスクならMGS4 Japanから、MGOディスクならMGO Japanからダウンロード、解凍してPS3ディレクトリをUSBメモリにコピーします。 PS3を起動し、USBメモリにコピーしたデータからリストアすると完了です。 MGO2を起動し、SaveMGOのID/パスワードを入力するとプレイが可能になります。

ちょうどいいLinuxデスクトップ環境がない

以前までLinuxのデスクトップ環境といえばGNOME一択という状況でしたが、GNOME 3で大幅に仕様変更され、ディストリビューションによってデスクトップ環境がばらばらになっています。 ディストリビューションごとのデフォルトのデスクトップ環境を利用すれば悩みなどないのですが、Arch Linuxにはそんなものはありません。 様々なデスクトップ環境を試してみたのですが、しっくりくるものが無かったので記しておきます。 GNOME 3 良い:Waylandに移行している。凄まじく安定している。 悪い:拡張機能入れなきゃほぼ使えない。Systemd環境でしか動作しないため、Linux以外のOSでは動作しない。設定項目が少なすぎる。 Plasma 良い:綺麗、かっこいい。Wayland版が開発中。 悪い: アプリケーション一覧が独自で見づらい。標準のデスクトップマネージャがしょぼい。 LXDE 良い:軽い。 悪い:GTK+2(GTK+3版は開発中)。統一されたテーマがない。LXDE自体の機能がほぼ無いため、GNOMEなどのアプリケーションを利用しなければならない。 LXQt 良い:LXDEのQt版。 悪い:動かない。 Xfce 良い:軽い。 悪い:GTK+2ベース。 Unity Ubuntu標準のデスクトップ環境。開発終了。 悪い:Ubuntu専用。使いづらい。広告だらけ。ほぼGnome。 MATE GNOME 2のフォーク。 悪い:GTK+2。 Cinnamon GNOME 3のフォーク。 悪い:GNOMEを使いたくないからCinnamonを使おうとしているのにGNOMEのアプリケーションを使わなきゃいけない。

GNOME 3でFcitxが動かない

Arch Linuxに久しぶりにGNOME 3をインストールしてみたのですが、Fcitxが正常に動作しませんでした。 その原因はGNOME 3のデフォルトウインドウシステムがXorgからWaylandに移行したためでした。 WaylandにはXWaylandというXorg互換環境があり、FirefoxなどのXorgアプリケーションはそれで動いています。 GNOME 3標準のアプリケーションはほとんどWaylandに移行しているのですが、ほとんどのGUIアプリケーションは未だにXorgで動作している状況です。 FcitxもXWayland上で動作しているため、XorgアプリケーションではFcitxが使えるのですが、WaylandアプリケーションではFcitxが利用できません。 Todo-List Fcitx によると、add wayland supportはIn Progressになっています。 対応策としては、デスクトップセッションをGNOME 3 on Xorgとして起動するか、Fcitxの代わりにIbusを利用するしかないようです。

Bash on Windowsに関して

Bashの起動(カレントディレクトリを引き継ぐ) C:\Users\foo> bash /mnt/c/Users/foo$ Bashの起動(WSLのデフォルトユーザのホームディレクトリで起動) C:\Users\foo> bash ~ /home/foo$ Bashを起動せずにLinuxコマンドを実行 > bash -c "コマンド" Windows側のドライブはBoW上では /mnt/ドライブレター としてマウントされています。 C:\ -> /mnt/c/ 逆に、Windows側から見たBoWの/ディレクトリは、 %USERPROFILE%\AppData\Local\lxss\rootfs です。 このフォルダを直接いじるとパーミッションやシンボリックリンクが壊れそうなのでやめておいたほうがよさそうです。 https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/ C:\tesy.pyをBoWのPythonで実行するには > bash -c "python /mnt/c/test.py" とすることができます。 BoWのインストール > lxrun /install     引数に /y で許可を求めません     既にインストールされている場合は再インストールされます。 BoWのアンインストール > lxrun /uninstall     引数に /full でユーザディレクトリも含めて完全に削除、 /y で許可を求めません デフォルトユーザの設定・作成 > lxrun /setdefaultuser ユーザ名 アップデート >lxrun /update     $ sudo apt update と一緒です LinuxのシステムコールをWinNTのシステムコールに変換して実行しているので、LinuxカーネルはWindowsの自前、その他はUbuntuそのもののようです。 ...

Ubuntu 16.04で指紋認証ログインしようとした

イメージ
Ubuntuで指紋認証を利用する場合、PPAを追加してFingerPrint GUIを利用するという情報がほとんどです。 ですが、できるだけクリーンな状態を維持したいのであまりPPAは追加したくなく、外部のフロントエンドも利用したくありません。 Arch Linux + Gnome 3の場合にはfprintdをインストールするだけでGnomeと統合してくれましたが、Ubuntuの標準レポジトリにもfprintdがありました。 ぽぬぽぬ: Arch Linuxで指紋認証: 試しにインストールしてみると、設定内の"ユーザアカウント"に「指紋認証ログイン」が追加され、指紋の追加もできました。 これで使えるかと思ったのですがだめでした。