【C++】Dropbox謹製のjsonパーサー「json11」が直感的で扱いやすい

json11は、ヘッダとソースの2ファイルから成るMITライセンスの軽量ライブラリです。 github.com パーサーオブジェクトに対して、obj["key1"]["key2"]と添え字にキーを指定した読み込みが可能で、直感的に記載できます。 読み込むjson { "id": 1001, "name": …

Docker上に構築したUbuntuデスクトップ環境でFirefoxがクラッシュする現象の対処

Ubuntu + LXDE + XRDPの環境をDocker上に構築し別マシンからRDPで接続したところ、コンテナ上のFirefoxが頻繁にクラッシュする現象が発生したため、備忘録として対処法を記載します。 使用したDockerイメージyama07/docker-ubuntu-lxde https://hub.docker.c…

【ufw】特定のIPアドレスからのアクセスを拒否する

ここ最近、自宅サーバーに中国からの不正アクセスが多いため、アクセス制限を行いました。本当はL3スイッチレベルで対応したいのですがルーターが非対応のため、ufwでアクセス制限を行います。 以下、自分用の備忘録。環境:Ubuntu 18.04 LTS 1. ufwを有効に…

【Vue.js】<video>タグによる動画再生をコンポーネント化

最近 Vue.jsを始めたのですが、一度データ駆動な実装を味わうと従来のイベント駆動な実装は面倒に感じますね。 さて、Vue.jsの他の特徴としてhtml要素とそれに対する振る舞いをカプセル化して再利用可能にするコンポーネントという機能があります。ここでは…

【Python】PILで高速に全画素アクセスを行う

Pythonでの画像処理はOpenCVやPIL(Pillow)等のライブラリが揃っており主要なロジックに困る事はありませんが、オリジナルな画像処理を自前実装する機会はあるかと思います。画像の全画素を舐める様なアクセスでは、僅かな非効率が積み重なり処理時間が爆増す…

TensorFlowのCNNチュートリアルで自筆の数字を認識させたら位置ズレに弱かったので対処した話

以前、順伝搬型ニューラルネットワーク (FFNN)による手書き数字認識を試しましたが、畳み込み型 (CNN)の威力を試したかったため、TensorFlowのチュートリアル(CNNによる数字認識)を試したところ、99.17%の認識率となりました。 自分の手書き画像をネットワー…

【機械学習】VC++で手書き数字認識のWindowsアプリを作ってみた 2/2

前回の記事↓では内部処理について簡単に記載しましたが、今回は手書き数字認識を実際に試してみます。 kuranabe.hatenablog.com Windowsタブレットで実行するとMFCアプリでも少し先進的に見えます(笑) それでは、各数字の認識結果を見ていきます。 ・0 斜め…

【機械学習】VC++で手書き数字認識のWindowsアプリを作ってみた 1/2

ここ最近のAI・機械学習ブームは飛ぶ鳥を落とす勢いですね。この分野におけるHello Worldは手書き数字認識らしいですので、作ってみました↓ 概要 3層の順伝播型ニューラルネットワーク(FFNN)・入力層…784次元 (28画素x28画素)・隠れ層…100次元・出力層…10次…

【MFC】リストビューをグレーアウトして無効表示させる

WindowsAPIのボタンを無効化すると灰色にグレーアウトしますが、リストビューを無効化してもグレーアウトしません。この記事ではグレーアウトさせる一つの方法を紹介します↓

【C/C++】MNISTの手書き数字の画像/ラベルデータをサクっと読み込む

機械学習で定番の数字認識では、サンプルデータとしてMNISTの手書き数字画像を使用する事が多いですね。PythonではMNIST画像を読み書きするライブラリがあるため手間いらずですが、C/C++では自力で読み書きする必要があるため、サンプルを紹介します。 なお…

【VS2017】MFCアプリのビルドエラー "RC2135 file not found:" の対処

Visual Studio 2017でダイアログベースのMFCアプリを新規作成し、ダイアログの編集を行うと、以下の様なエラーが発生する場合があります。 >エラー RC2135 file not found: 17 >エラー RC2146 missing comma in LANGUAGE statement これはリソースファイル内…

【C/C++】ファイルパスに指定の拡張子(複数)が含まれるか安全にチェックする

ファイルパスの拡張子を単一の拡張子と比較する処理はネット上で散見されますが、ここではカンマ区切りの複数拡張子を安全に比較する処理を紹介します。 #include <stdio.h>#include <string.h>bool CheckExtension(const char *pszPath, const char *pszCmpExts){ // ファイル</string.h></stdio.h>…

【C/C++】macOS + Clang 環境でASLRを無効にしてコンパイルする

MacOSではLeopard以降、ASLRによりメモリ空間がランダム化されているため、gdbでスタックトレースする際に、実行毎にスタックのアドレスが変わり内容を追いにくい場合があります。 ここではASLRを無効にしてコンパイルする方法を記載します。 【確認環境】・…

ビットフラグの基本的な操作

ビットフラグの基本的な操作についてまとめました。各種機能をビットフラグで管理する処理では、次の3パターンを抑えればOKです。 特定のビット有無を確認する 確認したいビットとANDを取ります if (bitflag & 0x10){ // bitflagに0x10のビットが立っている}…

【Chrome Extension】Twitterの画像を開く際にオリジナルサイズ版(:orig)にリダイレクトする(続)

前回の記事ではChrome Extensionを用いたリダイレクト処理を実装しましたが、本記事ではリダイレクト処理をブラウザのアドオンとして実行する方法を紹介します。 manifest.jsonの作成 Chromeでアドオンを読み込む Firefoxでアドオンを読み込む アドオンの動…

【Chrome Extension】Twitterの画像を開く際にオリジナルサイズ版(:orig)にリダイレクトする

Twitterにアップロードした画像を表示するとリサイズされて表示されますが、画像のURL末尾に「:orig」を追記すると、オリジナルサイズの画像を取得できます。 【縮小サイズ画像】https://pbs.twimg.com/media/XXXX.jpg【オリジナル画像】https://pbs.twimg.c…

【PHP】ログローテート対応のログ出力関数を実装する

PHP

PHPではerror_logやsyslog等の汎用ログ出力関数が用意されており、logrotate等と組み合わせることでログローテートを実現可能ですが、ここでは自前でログローテート対応のログ出力関数を実装してみます。 処理の概要は下記のように非常にシンプルなもの。・…

【C/C++】system関数とCurlでグローバルIPを取得する

LinuxやMacで自機のIPアドレスを取得する場合、curlコマンドでinet-ip.infoを叩くとグローバルIPアドレスを取得できます。 $ curl inet-ip.info 123.456.234.321 Cのプログラムからはsystem関数でcurlコマンドを実行可能ですが、phpのexecの様に関数の戻り値…