2018年10月14日日曜日

JavaScriptで10進数と16進数を変換する方法

JavaScriptで10進数と16進数を変換する方法を紹介します。

まず、16進数を、10進数に変換する方法です。
以下のサンプルコードでは、16進数の"DB"や"0A"を、10進数に変換しています。
    var a = parseInt("DB", 16);
    var b = parseInt("0A", 16);

次に、10進数の数値を16進数の文字列に変換します。
以下のサンプルコードでは、intの変数aを、16進数の文字列に変換しています。
    var c = a.toString(16);

結果、変数cには、16進数の文字列が格納されます。

JavaScriptでExcelファイルを読み込む方法

JavaScriptでエクセルファイルを処理して、分析したい場合があります。その方法を紹介します。

エクセルを処理するライブラリは色々と公開されていますが、以下のサイトで公開されている xlsx.full.min.js を使うことにします。
https://github.com/SheetJS/js-xlsx

以下がサンプルコードです。

// エクセルファイルを処理する関数。inputタグでファイルを受け取り、jQueryのイベントeとして受け取る想定。
function parseExcel(e) {
    var files = e.target.files;
    var file = files[0];
    var reader = new FileReader();
    reader.onload = function (e) {
        var data = e.target.result;
        var wb;
        var arr = fixdata(data);
        wb = X.read(btoa(arr), {
            type: 'base64',
            cellDates: true,
        });
        var output = to_json(wb); // 変数outputにJSON形式のデータが格納される。

        // ここから、JSON形式になったエクセルのデータを処理可能
    };
    reader.readAsArrayBuffer(file);
}

function fixdata(data) {
    var o = "",
        l = 0,
        w = 10240;
    for (; l < data.byteLength / w; ++l) {
 o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
    }
    o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
    return o;
}

function to_json(workbook) {
    var result = {};
    workbook.SheetNames.forEach(function (sheetName) {
        var roa = X.utils.sheet_to_json(
            workbook.Sheets[sheetName],
            {
                raw: true,
            });
        if (roa.length > 0) {
            result[sheetName] = roa;
        }
    });
    return result;
}
fixdataとto_jsonは、おまじないだと思ってもよいでしょう。

正常に処理できれば、変数outputに、JSON形式に変換されたエクセルデータが格納されます。

一度、console.logなどで変換されたデータを出力してみれば、どのような形でデータにアクセスすればよいかが、わかるでしょう。

これで、JavaScriptの豊富なプレゼンテーションライブラリを使い、エクセルデータを可視化することができます!

2018年10月2日火曜日

pukiwikiで、添付できるファイルのサイズを増やす方法

pukiwiki 1.5.1です。

pukiwikiは、デフォルトで、添付できるファイルの最大サイズは2MBです。いまどき2MBなんて、簡単に超えてしまいます。添付できるファイルの最大サイズを増やすためには、phpとpukiwikiの両方の設定変更が必要です。以下、Linuxにpukiwikiをインストールしたという前提で、添付できるサイズを100MBにする方法を説明します。

phpの設定

/etc/phpディレクトリ以下に、post_max_sizeというパラメータや、upload_max_filesizeというパラメータが書かれているphp.iniファイルがいくつかあります。以下、grepコマンドで、ファイルを検索してみます。
$ grep -R post_max  /etc/php/7.0/*
/etc/php/7.0/apache2/php.ini:post_max_size = 100M
/etc/php/7.0/cli/php.ini:post_max_size = 100M
/etc/php/7.0/fpm/php.ini:post_max_size = 100M
$ grep -R max_filesize  /etc/php/7.0/*
/etc/php/7.0/apache2/php.ini:upload_max_filesize = 100M
/etc/php/7.0/cli/php.ini:upload_max_filesize = 100M
/etc/php/7.0/fpm/php.ini:upload_max_filesize = 100M
上記のように、全て 100M という値に設定しましょう。

pukiwikiの設定

pukiwikiの設定は、plugin/attach.inc.phpで行います。 以下のように、upload_max_filesizeパラメータと、PLUGIN_ATTACH_MAX_FILESIZEパラメータを、100MBに設定しましょう。
ini_set('upload_max_filesize', '100M');

// Max file size for upload on script of PukiWikiX_FILESIZE
define('PLUGIN_ATTACH_MAX_FILESIZE', (1024 * 1024 * 1024)); // default: 100MB

これで、100MBのファイルを添付できるようになりました。もちろん200MBでも300MBでも大丈夫だと思います。そこはお好きなように設定してください。

2018年10月1日月曜日

Pythonで、.pycファイルや__pycache__ディレクトリを作らないようにする方法

Pythonはデフォルトで、クラスファイルをコンパイルした .pyc ファイルを作ります。Python 3系だと、__pycache__ディレクトリを自動的に作成して、その下に .pyc ファイルを作ります。

一度 .pyc ファイルを作っておけば、次回から、スクリプトの実行が少し速くなります。

ただし、スクリプトをこまめに変更する場合は、結局毎回コンパイルするので、あまり .pyc ファイルを保存しておく意味がありません。また、ディレクトリに勝手にファイルやディレクトリを作られると、ちょっとうざいです。git statusとかすると、untrackedなファイルとして表示されたりしますし。gitignoreしておけばいいのかもしれませんが、、、

ともかく、勝手にファイルやディレクトリを作ってほしくない場合は、環境変数に以下を追加しましょう。
export PYTHONDONTWRITEBYTECODE=1
これで、.pycファイルが作られなくなります。

bashを使っている場合は、.bashrcファイルの最後のあたりに、上記の設定を追加しておきましょう。これで、ログインしなおせばOKです。byobuとかscreenを使ってる場合は、一度terminateして、もう一度byobuscreenを実行しましょう。


JavaScriptで10進数と16進数を変換する方法

JavaScriptで10進数と16進数を変換する方法を紹介します。 まず、16進数を、10進数に変換する方法です。 以下のサンプルコードでは、16進数の"DB"や"0A"を、10進数に変換しています。 var a = pa...