C言語のマクロの引数の最後に ... を指定することで任意個の引数を取り、 __VA_ARGS__ で参照できる:
こういう DebugPrint 1関数ずつ入れなくてOK。 素敵ポイント: 大元のソースには手を入れない。 gcc 使用。 ソース #include<stdio.h> /* Proto Type */ void hello_world( void ); void hello_world(void) { printf( "hello!\n" ); } int main(void) { hello_world(); return 0; } #define _GNU_SOURCE #include <dlfcn.h> #include <iostream> extern "C" { void __cyg_profile_func_enter(void* func_address, void* call_site); void __cyg_profile_func_exit(void* func_
C/C++プログラム実行時の関数をトレースする方法を紹介します。 1.はじめに C/C++プログラムで実行時の関数をトレースする場合、printf()などを埋め込んでログに出力することが少なくないと思います。 が、その方法ではログ出力するためにプログラムに手を入れなくてはならなず、非効率です。 また規模の大きなプログラムでは現実的な解決方法ではありません。 printf()を埋め込まずにトレースできないか、方法を探していたところ、標準でそのような機能があることをみつけました。 仕組みは、gccでトレースしたいプログラムファイルのコンパイル時に、コンパイルオプション"-finstrument-functions"を付与することで、関数の実行開始時および復帰時に下記のフック関数を呼び出せるようになります。 void __cyg_profile_func_enter(void* func, vo
ちょっとZeroMQを調べてみようと。 ZeroMQ ZeroMQとは、組み込みで動くメッセージングミドルウェア…というか、ライブラリのようですね。 ZeroMQを使うことで、様々な通信パターンを実現できるとか。 ØMQ(ZeroMQ, 0MQ, zmq などとも呼ばれます) は組み込みネットワークライブラリと言うことも出来ますが、並行フレームワークの様にも機能します。 ØMQ はプロセス内通信、プロセス間通信、TCP やマルチキャストの様な幅広い通信手段を用いてアトミックにメッセージを転送する通信ソケットを提供します。 ソケットをファンアウト、Pub-Sub、タスク分散、リクエスト・応答の様なパターンで N 対 N で接続できます。非同期 I/O モデルにより、マルチコア環境でスケーラブルな非同期メッセージ処理を行うアプリケーションを構築可能で、製品クラスタを構成する上で十分高速です。
様々ある。 参考 https://rcmdnk.com/blog/2013/11/13/computer-bash 方法 ((count++)) let count++ count=\expr $count + 1`` ((count++)) OK count=0 while [ $count -lt 3 ]; do ((count++)) done count=$((++count))の部分は、以下のように置き換えることができる。 : $((count++)) count=$((++count)) count=$((count+1)) ((count++)) (事前に数値として初期化(count=0等)した場合のみ) 実行速度が速い。表記も短い。ただし、以下のようにわずかな表記の違いでバグる罠が多数ある。 NG 1 count=0 while [ $count -lt 3 ]; do c
以前 jQuery の繰り返し処理について書きましたが(【jQuery】複数の要素に対して繰り返し処理をする(each・for) - TASK NOTES)、もうひとつ map というメソッドがあります。これは単純な繰り返し処理用ではないので前回のエントリからは外しましたが、使い慣れると非常に便利なのでまとめておきたいと思います。 今回使うサンプルのHTMLはこんな感じです。 <div class="hoge">ほげ1</div> <div class="hoge">ほげ2</div> <div class="hoge">ほげ3</div> ... jQueryのmapとは map とはマッチした要素数分を繰り返して指定した関数を実行し、その結果をまとめた新しいjQueryオブジェクトを返してくれます。簡単に言うと配列から別の配列を作るという事です。 .map( )メソッド var arr
昨年買っていたんですが、年末年始の時間を使って少し読めました。 著者はRustコンパイラにコントリビューションをしたことがあれば誰でも知っているかもしれない、Mara Bos氏です。 ちなみにですが、原著は下記サイトで無料でも読むことができます。 marabos.nl 書籍は下記です。 詳解 Rustアトミック操作とロック ―並行処理実装のための低レイヤプログラミング 作者:Mara Bosオーム社Amazon なおこの記事内で「本書」と明記する場合、それは『詳解Rustアトミック操作とロック』を指します。また、「筆者」は私自身のことであり、「著者」はMara Bos氏のことです。 内容のメモ 1章 2章 3章 4章、5章 6章 Miri Loom 7章 8章 9章 10章 感想 日本語での別の資料 内容のメモ 読んだ内容のうち、印象に残ったり初見だったものをメモしておきます。 1章 1章
弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。 また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。 はじめに 本記事は2023年のエンジニア向け生産性向上ツールの紹介記事です。 2022年11月のChatGPTの登場を機に生成AIは急激な進化をみせ、生成AIに関連したツールが次々と登場しています。ソフトバンクグループの社長である孫正義氏が 「ChatGPTを使ってない人は『人生を悔い改めた方がいい』」と発言 するほど、これからは"どのようにAI等のツールを活用するか"が重要となります。強気の発言ではありますが、活用するのか・取り残されるのかという危機感を強く持つべきとの意図であるといえます。 実際、現代ではITツールを使いこなしてるか否かで生産性に明確な違いが現れるように
Rust の GUI クレートは全体的にまだまだ発展途上で決定版がない状況ではあるものの、 egui が良い感じに進歩しているので、基本的な使い方を書いてみる。 egui の概要と特徴 egui は書き方も見た目も使い勝手も独特なGUIライブラリ。名前の読み方は「エグーイ」だと思う。Emil氏がやっているので。 特徴を知るためにはとりあえずWebブラウザで動くサンプルを触ってみるのが良い。 とにかくクセがすごい。ウィンドウ内のウィンドウなんて今日日見かけないものが普通に存在している。 でも豊富なウィジェットがあるので、それなりに使えそうな感触もあるかとも思う。 egui の特徴をざっくりと列挙してみると、以下のような感じ。 動作もビルドも速い。 色々な環境で動く。上記サンプルみたいにWASMでも動く。 即時モードを採用している。(詳細は後述) ネイティブのような見た目や、複雑なレイアウトは
はじめに 最近、若手のコードレビューをしていて例外の使い方を教える機会があったので、ブログの方にもまとめたいと思います。今回はバッチ編。オンラインだとまた少し違う観点があると思います。また、言語はJavaを前提していますが考え方は例外機構をもつ言語ならあまり変わりません。 TL;DR 例外は原則キャッチしない。バッチは速やかに殺せ 個別箇所でログを出さずに必要な業務情報はExceptionを入れ子にして乗せる 長いバッチのためにはスキップもやむなし 原則、例外はキャッチしない JavaにはErrorとExceptionが存在し、OutOfMemoryErrorとかプログラム上ではどうしようもないものがエラー、ファイルが存在しない(FileNotFoundException)とかプログラム側でハンドリングするもの、と教科書では習うと思います。なのでException系はキャッチするものと、と
この記事はPowerShellアドベントカレンダー2019に参加しています。 Excel開いて勤怠表入力するのすごく面倒 私のアルバイト先では、アルバイト学生の勤怠は各自が既定のExcelシートに毎日出勤時間、休憩入り、休憩終了時刻、退勤時間を記入し、それを月末に提出するという形をとっています。しかし、朝出勤してエクセルを開いて記入し、休憩の前にエクセルを開いて記入し、退勤前にエクセルを開いて記入するという作業は非常に面倒です。そこでこの面倒な作業を効率化し、さらにGUIアプリを作ったことがなかったので何か一つ小さなものを作ってみようと思い立ちました。それもPowerShellで... なぜPowerShellなのか 実は当初は自分だけで使うつもりだったので、Pythonとかで書けばいいかな~と考えていました。しかし学生バイトも多くいて、そういった人たちにも使ってもらいたいことを考えると、
はじめてのプログラミングHSP3.6+3Dish入門 (電子書籍版)(amazon) 最新のHSP3.6オフィシャル入門書です。この1冊で、初心者から上級者まで役立つ情報満載で、コンピューターの仕組み、プログラミングの考え方を学べます。手軽にゲームを作ってみたい、アプリを製作してみたいというユーザーに応える内容となっています。 これからHSP3を始める人も、すでに使っている人にもおすすめの1冊です。(ISBN9784798065991) はじめてのHSP3 (amazon) お手ごろなサイズと価格で、HSP3の入門編を簡潔にまとめている解説書です。ゲームやスクリーンセーバー、ツールなどを実際に作成しながら、HSPの使い方を解説しています。HSP2との違いなどのFAQ(よくある質問)も充実しています。 (ISBN9784777513390)
bashなどの shell では "~/*" "$HOME/*" はホームディレクトリ以下のファイル名に展開されます. これをC/C++で実装する方法です 実装 wordexp(3) を使います #include <wordexp.h> #include <stdio.h> int main(int argc, char *argv[]) { wordexp_t exp; int flags = 0; int ret; ret = wordexp("~/*", &exp, flags); if (0 == ret){ int i; for (i=0; i<exp.we_wordc; i++){ printf("%s\n", exp.we_wordv[i]); } } wordfree(&exp); return 0; } なお wordexp は POSIX.1‐2001, POSIX.1
Tweet Linux カーネルの中には、カーネル内でのデッドロックやメモリリークなど、カーネル自身のデバッグを行うための様々な機能が含まれています。しかし、 kernel パッケージに含まれている普通のカーネルでは大部分が無効化されているため、実際に運用を開始してトラブルに遭遇するまで、カーネル自身のバグに気が付かないケースが多くあります。 RHEL の場合、多くのデバッグ機能を有効にした kernel-debug というパッケージも提供されています。 kernel-debug パッケージに含まれているデバッグ用カーネルを用いてシステムの構築時に試験を行うことで、運用開始後に遭遇する可能性のあるバグの一部を事前に見つけて対処を行うことができます。また、運用開始後でも、原因の究明に役立つことがあります。 kernel-debug パッケージのインストールは、以下に示すように yum コマン
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く