2018-01-01から1年間の記事一覧
ここ最近、自宅サーバーに中国からの不正アクセスが多いため、アクセス制限を行いました。本当はL3スイッチレベルで対応したいのですがルーターが非対応のため、ufwでアクセス制限を行います。 以下、自分用の備忘録。環境:Ubuntu 18.04 LTS 1. ufwを有効に…
最近 Vue.jsを始めたのですが、一度データ駆動な実装を味わうと従来のイベント駆動な実装は面倒に感じますね。 さて、Vue.jsの他の特徴としてhtml要素とそれに対する振る舞いをカプセル化して再利用可能にするコンポーネントという機能があります。ここでは…
Pythonでの画像処理はOpenCVやPIL(Pillow)等のライブラリが揃っており主要なロジックに困る事はありませんが、オリジナルな画像処理を自前実装する機会はあるかと思います。画像の全画素を舐める様なアクセスでは、僅かな非効率が積み重なり処理時間が爆増す…
以前、順伝搬型ニューラルネットワーク (FFNN)による手書き数字認識を試しましたが、畳み込み型 (CNN)の威力を試したかったため、TensorFlowのチュートリアル(CNNによる数字認識)を試したところ、99.17%の認識率となりました。 自分の手書き画像をネットワー…
前回の記事↓では内部処理について簡単に記載しましたが、今回は手書き数字認識を実際に試してみます。 kuranabe.hatenablog.com Windowsタブレットで実行するとMFCアプリでも少し先進的に見えます(笑) それでは、各数字の認識結果を見ていきます。 ・0 斜め…
ここ最近のAI・機械学習ブームは飛ぶ鳥を落とす勢いですね。この分野におけるHello Worldは手書き数字認識らしいですので、作ってみました↓ 概要 3層の順伝播型ニューラルネットワーク(FFNN)・入力層…784次元 (28画素x28画素)・隠れ層…100次元・出力層…10次…
WindowsAPIのボタンを無効化すると灰色にグレーアウトしますが、リストビューを無効化してもグレーアウトしません。この記事ではグレーアウトさせる一つの方法を紹介します↓
機械学習で定番の数字認識では、サンプルデータとしてMNISTの手書き数字画像を使用する事が多いですね。PythonではMNIST画像を読み書きするライブラリがあるため手間いらずですが、C/C++では自力で読み書きする必要があるため、サンプルを紹介します。 なお…
Visual Studio 2017でダイアログベースのMFCアプリを新規作成し、ダイアログの編集を行うと、以下の様なエラーが発生する場合があります。 >エラー RC2135 file not found: 17 >エラー RC2146 missing comma in LANGUAGE statement これはリソースファイル内…
ファイルパスの拡張子を単一の拡張子と比較する処理はネット上で散見されますが、ここではカンマ区切りの複数拡張子を安全に比較する処理を紹介します。 #include <stdio.h>#include <string.h>bool CheckExtension(const char *pszPath, const char *pszCmpExts){ // ファイル</string.h></stdio.h>…
MacOSではLeopard以降、ASLRによりメモリ空間がランダム化されているため、gdbでスタックトレースする際に、実行毎にスタックのアドレスが変わり内容を追いにくい場合があります。 ここではASLRを無効にしてコンパイルする方法を記載します。 【確認環境】・…
ビットフラグの基本的な操作についてまとめました。各種機能をビットフラグで管理する処理では、次の3パターンを抑えればOKです。 特定のビット有無を確認する 確認したいビットとANDを取ります if (bitflag & 0x10){ // bitflagに0x10のビットが立っている}…
前回の記事ではChrome Extensionを用いたリダイレクト処理を実装しましたが、本記事ではリダイレクト処理をブラウザのアドオンとして実行する方法を紹介します。 manifest.jsonの作成 Chromeでアドオンを読み込む Firefoxでアドオンを読み込む アドオンの動…
Twitterにアップロードした画像を表示するとリサイズされて表示されますが、画像のURL末尾に「:orig」を追記すると、オリジナルサイズの画像を取得できます。 【縮小サイズ画像】https://pbs.twimg.com/media/XXXX.jpg【オリジナル画像】https://pbs.twimg.c…
PHPではerror_logやsyslog等の汎用ログ出力関数が用意されており、logrotate等と組み合わせることでログローテートを実現可能ですが、ここでは自前でログローテート対応のログ出力関数を実装してみます。 処理の概要は下記のように非常にシンプルなもの。・…
LinuxやMacで自機のIPアドレスを取得する場合、curlコマンドでinet-ip.infoを叩くとグローバルIPアドレスを取得できます。 $ curl inet-ip.info 123.456.234.321 Cのプログラムからはsystem関数でcurlコマンドを実行可能ですが、phpのexecの様に関数の戻り値…