shonen.hateblo.jp

やったこと,しらべたことを書く.

0桁埋めした文字列を返す関数

/**
 * 0埋めしたdigit桁の文字列を返す。
 * @param {number} n 非負整数
 * @param {number} digit 正整数
 */
function zeroPadding(n, digit) {
    return "0".repeat(digit).concat(n).slice(-digit);
}

他に無いらしい。時刻を指定したフォーマットで文字列に変換するメソッドが欲しかっただけなのに。

function dateToFormat(date, format = "y/m/d H:M:S") {
    let txt = "";
    for (let chr of format) {
        if (chr === 'y')
            txt = txt.concat(zeroPadding(date.getFullYear(), 4));
        else if (chr === 'm')
            txt = txt.concat(zeroPadding(date.getMonth(), 2));
        else if (chr === 'd')
            txt = txt.concat(zeroPadding(date.getDate(), 2));
        else if (chr === 'H')
            txt = txt.concat(zeroPadding(date.getHours(), 2));
        else if (chr === 'M')
            txt = txt.concat(zeroPadding(date.getMinutes(), 2));
        else if (chr === 'S')
            txt = txt.concat(zeroPadding(date.getSeconds(), 2));
        else
            txt = txt.concat(chr);
    }
    return txt;
}

N 秒間だけ処理を実行する c++ のコード

処理を実行するのは、メインスレッドでない別のスレッド。

メインスレッドは、sleep_forで待機して、時間になったら atomic_bool で通知する。

#include "bits/stdc++.h"

using namespace std;


int main(){
    atomic_bool halt(false);
    long long counter = 0;
    
    thread t([&halt, &counter](){
        while (!halt){
            ++counter;
        }
    });
    this_thread::sleep_for(chrono::seconds(1));
    halt = true;
    t.join();
    cout << "counter: " << counter << endl;
    return 0;
}

若干遠回りの方法だけれども、むしろこっちの方が有利な点もあるかと思う。

std::chrono::system_clockボトルネックになる場合は使えるかも。

CUDA で HelloWorld

環境

やる

CUDA Toolkit のインストール

developer.nvidia.com

上のリンクから、ツールキットがインストール出来る。

容量が気になる場合は、カスタムインストールにして、Sample等を除外する。

Visual Studio 2017 の起動

プロジェクトの新規作成。すると、CUDA 10.1のカテゴリがある。

CUDA 10.1 Runtime をクリックして、プロジェクトを作る。

Build・Run

サンプルコードが既に実装されているので、デバッグなしで開始をクリック。

続きを読む

自作PCを組み立てました

動機

普段メインで使っていたノートPCが7年目ぐらいになったので、PCを買い換えることに。

BTOも検討しましたが、3万ぐらいの開きがある・ゲームより開発がしたいなどなど。せっかくなので作ってみた。

経験

自作PC1度目

続きを読む