めぐろLT #15 「みんなのしくじり大賞」 https://meguro-lt.connpass.com/event/314473/

C言語にはbitfieldという機能がありますが、この機能にはさまざまな落とし穴があり、注意深く利用しても予期せぬバグや移植性の問題を引き起こす可能性があるとよく言われています。 実際、jpcertを確認すると複数の勧告が出ています。 EXP11-C. ビットフィールド構造体のレイアウトについて勝手な想定をしない INT12-C. 式中で使用される単なるintのビットフィールドの型について勝手な想定をしない CON32-C. 複数スレッドによる隣接データへのアクセスが必要な場合データ競合を防止する DCL39-C. 信頼境界を越えて構造体を渡すとき情報漏えいしない 私は先輩技術者から「とくに組み込みの分野においてC言語のbitfieldは使うべきではない」と教わって生きてきました。 本記事ではbitfieldの仕様や問題点、なぜ仕様を避けるべきか、緩和策や代替案について検討します。 目次
はじめに Zバッファ、カリング、バッチング、インスタンシングの概要と利用方法 Unityは3Dおよび2Dシーンのレンダリングにおいて、複数の最適化技術を提供しています。 各技術の基本概念と、Unityでどのように利用できるかまとめました。 Zバッファ (Depth Buffer) 概要 Zバッファは、各ピクセルごとにカメラからの深度情報を保持するバッファです。これにより、レンダリング時に各ピクセルの深度値を比較し、カメラに最も近いピクセルのみを表示することで、正しい隠面処理が実現されます。 Unityでの利用方法 カメラ設定 Unityでは、各カメラコンポーネントの「Near Clip Plane」と「Far Clip Plane」でZバッファの有効範囲を定義しています シェーダー内の設定 透明なオブジェクトでは「ZWrite Off」を指定することで、描画順序をカメラの透明度ソートに依存
using System; using System.Collections.Generic; using System.Diagnostics; using System.Threading; using System.Threading.Tasks; #nullable enable public static class Program { // TODO: new WhenEachEnumerator(tasks) で型推論が働かない? なぜ?? // NOTE: struct にするとエラー。MoveNextAsync を readonly に出来ないから呼び出し毎にコピーが起きるのが原因 class WhenEachEnumerator<T> : IAsyncEnumerator<T> , IAsyncEnumerable<T> // await foreach はダックタイピ
概要 Unity 2021から導入されたObjectPool機能について解説します。本記事では、既存の実装にObjectPoolを適用するケースを想定し、C#のコレクションに対応するObjectPoolクラスを紹介します。 ObjectPoolを使う理由 通常、新しくコレクションを作成するとヒープアロケーションが発生し、後にガベージコレクション(GC)によって開放されます。この処理負荷を抑えるためにObjectPoolパターンが活用されます。特に頻繁に同じコレクション要素を使用する場合、新規アロケーションを減らすことで効率化できます。 例えばバッチ処理で大量のオブジェクトを繰り返し作成するケースだったり、ゲーム内で同じゲームオブジェクトを大量に生成・破棄をするような場合にObjectPoolパターンを使ってみましょう。 コレクション用のObjectPoolクラス CollectionPoo
私は最近、Haskell処理系であるGHCのx86 NCG (native code generator) にSIMDプリミティブを実装する作業をやっています。LLVMなんかはSIMDに対するいい感じの抽象化を提供しているのですが、それを自前でやろうというわけです。 この記事は、x86のSSE等の命令を使ってSIMDプリミティブを実装する際に使う命令などに関するメモです。「SIMD命令比較」も参考になるかもしれません。 この記事では基本的に128ビット幅のベクトルを想定します。shuffle以外は256ビット幅や512ビット幅に応用するのは難しくないと思います。というか、256ビットとかだとAVXを仮定できるので色々楽だと思います。 基本:GCCやClangの出力を確認する 基本的な方針として、既存のコンパイラーの出力するアセンブリコードを参考にすると良いでしょう。 GCCでは型に __a
きっかけ ラズパイたくさん持ってるお友達からRaspberry Pi 4もらったのをきっかけに、環境を整えていきました。 環境構築してる時、プログラム作ってる時とはまた違った面白さがあってこれがインフラエンジニアの気持ちかってなりました。 サーバー周りの環境 配線は汚いです ; w ; パナソニックのFA-ML24TCPoE+からPoEでラズパイを起動してます。 ELECOMのセールで買ったAPを動かすために、PoE給電できるスイッチングハブを用意していたのでちょうどよかったです。 スイッチングハブの初期設定をする際に、コンソール接続する必要があって、シリアルポートで接続だるいなーって思ってたら まさかのTera Termくんが対応してて、めちゃ助かりました。 手元に、windows serverの環境がなかったのでまじで神です。 環境設定 Wireguard (PiVPN) VPNサーバ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? LILYGO T5-4.7インチ E-Paper ディスプレイを使い、天気予報を表示する方法を紹介します。本製品には無線マイコンであるESP32-S3が搭載されているため、パソコンから直接プログラムを書き込むことができます。 960×540のタッチ対応電子ペーパーには、microSDスロットやRaspberry Piと同じ配置の40ピンコネクターを搭載しています。ただし、使用方法に関する情報が少なく、すべての機能を使いこなすのはハードルが高そうです。 また、裏面には技適のシールが貼られています。 本記事では公式のサンプルコードである X
タイトルだけ見ると球技の玉拾いの技術に見えるがそうではない。"落ちてるボール"とは、 誰かがやらないといけないが、誰も手を付けていない状態のタスク "誰かがやらないといけない"ことを他の関係者も認識している状態 のことを指すものとする。 この定義が普遍的かは知らないがニュアンスとしては伝わると思う。そしてこれはソフトウェアエンジニアリングに限った概念ではない。自分の経験上は他人と仕事をしていれば自然発生するものだ。"仕事"というほど厳密でなくてもよいと思う。例えば学生の頃の"文化祭の準備"とかでも観測できそうな概念だ。 この「"落ちてるボール"を誰が拾うか?」はしばしば見聞きする問題だ。そしてこの問題は自然発生する以上、発生したものに対症療法することになる*1。すると、この問題に対するスタンスは基本的に二つしかないと思っている。 自分が拾う 他人に拾ってもらう この二つのうち、このエントリ
こんにちは!高橋 玲央奈です。 もともとは日本国内で「ウルトラマン」「クレヨンしんちゃん」「マッピー」などIPを利用したスマホ向けゲーム開発やパブリッシングを行なっていましたが、2017年に中国南部の廈門市に移住し、中華圏向けのゲーム開発・配信を始めました。 コロナ禍の4年間も日本に戻らずずっと中国にいたら日中の仲間達が頼ってきてくれるようになり、ここ数年は日本のゲームの中華圏展開や中国ゲームの日本展開をしています。 本連載では数回にわたって中国ゲーム市場を紐解いていきます。読み終わった頃には、日本のゲームクリエイターにとって「中国ゲーム市場は北米ゲーム市場など他の市場に比べて進出しやすい!」と思ってもらえるはずです! 2024年の年末。私は「中国ゲーム産業年次総会2024(China Game Industry Annual Conference 2024)」に参加するため、北京市郊外の
はじめに こんにちは、JAXA認定の宇宙ベンチャー企業、株式会社 天地人 (てんちじん) でエンジニアリングマネージャーをしている白井と申します。普段は天地人コンパス (Tenchijin COMPASS) のフロントエンドまわりの開発を行っています。 推し人工衛星はだいち4号です(昨年7月に種子島まで打ち上げを見にいきました) レビューを依頼したときにありがちなこと チーム開発を行う上で、Pull Request(以下PRと略します)ベースのコードレビューは当たり前になってきていると思います。 コードレビューは、他のメンバーにあなたのコードを見てもらい、フィードバックをもらうための重要なステップです。 しかし、レビューを依頼した際に以下のような状況に直面したことはないでしょうか? 😇 レビュー依頼してしばらく経っても返信がなく、状況を質問してようやく 「あ、今から見ます」 と言われてし
Google Workspaceを利用していると、「自社のドメインのGoogleアカウントを持っている ≒ 自社の社員」とみなすことが出来ます。これを利用し、ステージング環境へのアクセスを自社内に制限したいときに、ALBでGoogleアカウント認証するといった手段が取れます。 ※クラスメソッドさんのAmazon CognitoユーザープールLambdaトリガーでALB認証のメールアドレスを制限する の記事が大変有用です。 しかし、運用しているとそのうちに、臨時メンバーなどで「ステージング環境へのアクセス権は付与したいが、Gmail等の機能は不要で、Google Workspaceの月額費用を払うのももったいない」というケースも出てくるでしょう。そんなときに、Cloud Identity Freeを使うと、Google Workspaceライセンス無しで「自社ドメインのGoogleアカウント
まれに時々CPUモデルをC#からほしくなることがあります。Zxなどを使ってlscpu的な情報をとるのもいいのですが、C#でマネージドに取得するメモです。 CPUモデルをコマンドで取得する C#でCPUモデルを取得する x86_64でCPUモデル取得 OS固有処理をプリプロセッサで判別する 参考 まとめ CPUモデルをコマンドで取得する 先にCPUモデルを取得するとどんな値になるのかをデファクトなコマンドで試しましょう。いずれのOS、コマンドでもモデル名の値はAMD Ryzen 9 7950X3D 16-Core Processorで共通とわかります。 Linux lscpuを使って、Vendor IDセクションでModel nameを取得できます。/proc/cpuinfoを読むのも軽量でいいでしょう。 $ lscpu Architecture: x86_64 CPU op-mode(s)
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く