はじめに スタンドアロンのマイコン環境を想定 タイトルにC言語と書いてますが想定はマイコンボード、特にArduinoです。 マイコンで乱数を使用する処理を含む場合、疑似乱数の生成方法の影響により同じプログラムを複数のマイコンに書き込んでも同じ値を生成してしまい、結果的に乱数として望ましい動作をしないという課題があります。 未接続のADコンバータをシード値にするなどの方法もありますが、今回はパソコンでコンパイルした時刻をプログラム内に取り入れる方法を紹介し、それをシード値として使用しすることでコンパイルごとに乱数値がばらつくようにします。 なお、コンパイル時刻が異なるプログラム同士では異なる乱数値を生成しますが、秒単位で同時刻にコンパイルしたり、書き込み済みのマイコンをリセットした場合は同じ値を生成します。 また、コンパイル後のファイルを複数のマイコンに書き込む場合もコンパイル時刻に依存する
Wasmはなぜセキュアなのか? 前回Wasmのバイナリを読んでみたが、実行時にどのようにセキュアに実行しているのか気になったので調べてみた。 とりあえず今回も公式ドキュメントを見ながら整理しつつ、実際のコードも無理なく辿れそうなところはwasmerの実装を参考に見ていきたいと思う。 Wasmの目指すセキュリティ とりあえず公式の記載を脳死で読解していく。 The security model of WebAssembly has two important goals: (1) protect users from buggy or malicious modules, and (2) provide developers with useful primitives and mitigations for developing safe applications, within the
The Rust vs. Go comparison has two key differences:- The Rust example uses 8 bit unsigned ints vs. Go example uses 32 bit signed ints - Rust's sort is stable by default whereas Go's is not. If you tweak the Rust benchmark to use `i32` instead of `u8` and `sort_unstable` instead of `sort`, you should see ~3-4x faster performance. Made a PR with the fixes, Rust is now 3 times faster than tinygo, and
こんにちは!ラクス入社1年目のkoki_matsuraです。 本日は、Recoilの基本的な状態管理や仕組みをTodoアプリ作成を通して、ご紹介させていただきます。 こちらの記事は「Reactの状態管理ライブラリ基礎学習」の3部目です。 「Redux編」「Redux-Toolkit編」もあるので、下記のリンクから読んでいただけると嬉しいです。 tech-blog.rakus.co.jp tech-blog.rakus.co.jp Reactの状態管理ライブラリを勉強している方、状態管理ライブラリについて簡単に知りたい方などのお役に立てればなと書かせていただきました。 アジェンダは以下の通りです。 Recoilとは 概要 構成図 Todoアプリ作成 仕様説明 プロジェクト作成 初期設定 ディレクトリ構成 Todo型の定義 Keyの定義 Atomの定義 TodoContainer.tsxの定義
書いた www.npmjs.com notion-sdk-jsとは Notion APIを叩くためのTypeScriptのライブラリ。多分公式。 github.com 何を解決したいのか Pageを作成するAPIを叩く際にJSONを組み立てるのがめんどくさいのが一番だった。 型定義で守られてはいるものの、ドキュメントを見ないとまず書けないし後は書く分量がどうしても多い。 例えばHeading 1, Paragraphの2つだけで構成した下記のページを作る こんなページをAPIで作りたい この場合、こんなコードを書く必要がある。 import { Client } from '@notionhq/client'; const client = new Client({ auth: 'YOUR_NOTION_API_TOKEN', }); await client.pages.create({
はじめに こんにちは、カミナシ社でソフトウェアエンジニアをやっている浦岡です。 我々は「ノーコードでユーザー独自の現場アプリを作成できる」サービスを開発しています。 そのサービスのフロントエンドの開発にはReact×Reduxを使っているのですが、 サービス特性のため「Reduxのstateがファットになりがち」であったり「コンポーネント間のデータの依存関係が多くなりがち」といった状態に陥ります。 その結果、アプリの反応速度が遅くなりがちです... この記事では、上のような状態に陥った「React×Redux」アプリの高速化の一例をサンプルアプリを用いて説明します。 サンプルアプリについて 今回、Reduxのチュートリアルにあるカウンターアプリを改良し、下のような「モンスターの捕獲記録」アプリを作ります。 サンプルアプリについて Version1(コンポーネントをブルブルさせてみる) まず
Introduction 最近Rustを使い始めているのですが、 要所要所で既存のプログラミング言語との違いに遭遇して躓いてます。 エラー処理についても、 Java/JavaScriptなどの例外を使ったエラー処理とは違い、 Rustでは基本的にResult型を用いてエラー処理を行います。 これに慣れないと、あまり良くないと知りつつも とりあえずunwrapしたり、 fn hoge() -> Result<String,Error> { ・・・ } let result = hoge.unwrap(); とりあえずErrがmatchしたらpanicしてました。 fn hoge() -> Result<String,Error> { ・・・ } match hoge { Ok(result) => ・・・ Err(err) => panic!("for now panic!!"); } プロ
初めまして。弁護士ドットコム株式会社でエンジニアをやっている井出です。 弊社は 2022 年 2 月から Creator's Blog を始めております。 その記念すべき最初の記事として 弁護士ドットコムサービスのビジネスと共にみるマイクロサービスの進化 を投稿いたしました。 こちらの記事で弊社がマイクロサービス化に挑戦したこと、その後の課題をどう解決していったかについて分かりやすくまとめられておりますので、ぜひ一読してから今回の記事を読んでみていただければと思います。 さて、上記記事内でも触れられているとおりマイクロサービス化プロジェクトである Gavel プロジェクトでは様々な課題が出てきました。 今回はその中の 1 つである、 ビジネス分析が不十分で一部のサービス境界が想定と異なり、開発速度が低下 について、何をどう間違え、なぜ開発速度が低下したのかについて振り返ります。 もしこれか
要点 下の gif 画像の圧縮性流体計算をするコードを Fortran, C++, Rust, Python, Julia で組み、実行速度を比較した。 計算で必要になる巨大配列を、それぞれメモリの静的領域、スタック、ヒープに格納するような 3 バージョンのコードを組んだ。 ヒープを使わないならば、Fortran, C++, Rust 間の速度差はそこまで無いことが分かった。 ヒープに配列を割り付けるような外部ライブラリを用いるならば、実行速度はもっと速くならないのか、一考の余地があると思った。 ↓ グリッド数 $400\times 400$ の場合の計算結果 オーバーヘッドが発生する余地もそれほどない単純なコードなので、言語比較の観点では面白くないかもしれないが、これから同様のコードを作ろうとしている方の判断材料になればと思い、公開した。 本記事は、再現性のある公平なベンチマークではなく
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く