江添亮
江添亮
ドワンゴ社員
人体ハック中(減量)
JavaはOracleによって所有されている
Oracleの認定を受けないとJavaと名乗れない
ある程度目立つと叩かれる(Dalvik VM)
規格がないと実装がすべてとなる
ClangとGCC
もうひとつぐらいほしいところ。
C99以降の言語機能には対応していない
C89との互換性は型システムを強化する際に結構なくなった
実用上は、CからC++への一方的なABI互換さえあればいい。
次のC++規格
2017年に正式に発行される予定
それなりにいろいろと入る
コア言語には大きな変更はない
ライブラリはいろいろと入る。
紹介できるわかりやすい機能がない
callerに戻り値を無視させない
// ディスクにデータを書き込む
// 失敗するとfalseを返す
// 戻り値を無視するとデータ消失に気が付かない
bool commit_to_disk() ;
// スレッドを作って処理
// joinable()なスレッドを返す
// 戻り値を無視するとterminate()
thread spawn_work() ;
無視してはいけない戻り値がある
でもユーザーは無視する
無視されるのは言語が寛容だから
そこで[[nodiscard]]
関数に指定すると
戻り値が使われなかった場合、警告を発する
[[nodiscard]] bool f() ;
int main()
{
f() ; // 警告
bool b = f() ; // 無警告
if ( f() ) // 無警告
do_something() ;
else
do_error() ;
}
<algorithm>の並列実行版
<filesystem>, <optional>, <any>, <string_view>などなど
ご家庭のコンピューターはAMラジオ用の微弱無線局になる。
コンピューターが電力を消費するとき
一部は漏れて電磁波として放送される
電磁波ならばラジオで受信できるはず
ノイズは面白くない
音楽を鳴らそう
音階の表現方法
特定の周波数の矩形波を出す
矩形波の出し方
以下の計算式で求めた秒数だけ
\[\frac{1秒}{周波数 \times 2}\]
ビジーループを回す
複数のスレッドで回す
x86-64では、キャッシュを無視してメモリアクセスする命令が最も消費電力が高い
3000Hzの矩形波を出すためには
150マイクロ秒の処理が必要
あまりに処理時間が掛かり過ぎると
望みの周波数が出せない
sleep
分解能が重要
3000Hzの矩形波を出すためには
150マイクロ秒だけsleepする必要がある
高分解能なタイマーとsleepが必要
高分解能タイマー
Linux - clock_gettime
XNU - mach_absolute_time
Windows NT - QueryPerformanceCounter
Linux - nanosleep
Mac OS X - clock_sleep_trap
Windows - 存在しない
C++に書き直してやれ
LinuxとMac OS Xで動くようになった
Windowsでの動作は未報告
コンパイルは通るらしい
高精度sleepがないので動作は絶望的
人体ハック(減量)
体重が増えてしまった
減量しなければならない
人体はハックできる
(人間は減量できる)
脂肪を減らしたい
筋肉は減らしたくない
脂肪
酸素と結合することにより、
1kgあたり7200k calのエネルギーを取り出せる
エネルギーを取り出すと残りは水と二酸化炭素
\[1脂肪 + 2.9酸素 = エネルギー + 2.8二酸化炭素 + 1.1水 \]
多くのハッカーではないトレーナーが信じる妄想
痩せる重量の計算方法
\[\frac{摂取キロカロリー - 消費キロカロリー}{7200kcal} = 脂肪(kg)\]
摂取カロリーとは食事
消費カロリーとは運動
一ヶ月で1kg痩せるには
一ヶ月7200kcalを食事か運動で減らす
一日あたり240kcal
ジョギングの消費カロリー
\[ 体重(kg) \times 距離(km) = 消費キロカロリー\]
体重70kgの人間が
1km走ると70kcal
4km走ると280kcal
8km走ると560kcal
ご飯茶碗一杯(140kg)が235kcal
羊羹(155g)が434kcal
きのこの山一箱417kcal
たけのこの里一箱391kcal
SaaSなスライド資料ホストサービス