Git の教科書 このサイトでは、Git のコマンドとその裏で起きていることを概念図つきで解説します。説明はコマンドライン(CLI)ベースですが、VS Code や Sourcetree などの GUI ツールもボタンの裏で同じコマンドを実行しているにすぎません。仕組みを理解しておけば、どのツールを使っても迷わず操作できるようになります。
Once in a while I encounter a question whether C++ is suitable for embedded development and bare metal development in particular. There are multiple articles of how C++ is superior to C, that everything you can do in C you can do in C++ with a lot of extras, and that it should be used even with bare metal development. However, I haven’t found many practical guides or tutorials of how to use C++ su
はじめに プロジェクトの前提 プロジェクト初期に負債を産まないということ 情報へのアクセス経路を最適化する ブルックスの法則とアウトゲーム設計 ビジネスロジックのテストとシフトレフトの重要性 ビューのテストを諦めない インゲームは柔軟な初期設計に 作り直しを防ぐLookDev Unityエディタのパフォーマンスチューニングに向き合う 工数見積りに工数をかけすぎない エンジニア以外も使うツールだからこそ直感的に効率的に まとめと宣伝 はじめに こんにちは、株式会社サイバーエージェント SGEコア技術本部(コアテク)のエンジニアの矢野です。 私はこの一年ほど、あるモバイルゲームの新規開発に携わっていました。 このプロジェクトは、開発期間が約1年という、弊社の中では短期間でのリリースを行ったプロジェクトでした。 短期間での開発において、「最初は高速だったのに、人が増えるにつれてどんどん開発が遅く
C# (.NET 9) のswitch文と課題 C#の列挙型 (enum) のswitch文では対応するcaseがあれば実行されますが、対応するcaseがない場合は何も実行されません。 そのため、enumの列挙値が増えた際、switch文でハンドリングされずに意図しない挙動になる恐れがあります。また、その挙動の検知は実行時にしか確認できないため、実行頻度が低いコードにおいては検知困難なケースがあります。 enum E { A, B, C } // case E.B: にマッチするのでログが出力される // B Do(E.B); // E.C に対応するcaseがないので何も出力されない // Do(E.C); void Do(E e) { switch (e) { case E.A: Console.WriteLine("A"); break; case E.B: Console.Writ
Table of Contents Game Programming Patterns Acknowledgements Introduction Architecture, Performance, and Games Design Patterns Revisited Command Flyweight Observer Prototype Singleton State Sequencing Patterns Double Buffer Game Loop Update Method Behavioral Patterns Bytecode Subclass Sandbox Type Object Decoupling Patterns Component Event Queue Service Locator Optimization Patterns Data Locality
本書は以下の書籍を掲載したものになります。 書名:JavaプログラマのためのC作法 虎の巻 著者:Lepton(れぷとん) 発行:株式会社翔泳社 2009年3/10初版 株式会社翔泳社と著者(Lepton)との出版契約が終了し、掲載が可能となりました。 なお、本記事は元書籍の発行時点における内容となっており、修正は加えずそのまま掲載します(気が向いたら今後改訂するかも知れません)。 本書の対象読者層としては、次のような方を想定しています。 - 実務でJava を使っているなど、Java でプログラミング経験のあるプログラマ - Cはまったくやったことが無いか、大学・専門学校等でかじった程度 - 実務でC を使うことは今後ともあまり考えられないかも知れないが、趣味・一般教養として知的好奇心からCを知りたいと思ってる - オープンソースソフトウェアなどでよくCが使われているので、それらのコード
はじめに Unityでのゲーム開発では、ゲームが始まる前に様々な初期化処理(データの読み込み、外部SDKのセットアップなど)を行う必要があります。これらの処理は、プロジェクトが大きくなるにつれて複雑になりがちです。この記事では、RuntimeInitializeOnLoadMethod と リフレクション を活用して、初期化処理を自動的に、かつ柔軟に管理するエントリーポイントシステムの構築方法を解説します。 RuntimeInitializeOnLoadMethod とは? [RuntimeInitializeOnLoadMethod] は、Unityが提供する強力なアトリビュート(属性)です。これを static メソッドに付けることで、シーンがロードされる前や、ゲームが開始される前に、そのメソッドを自動的に実行させることができます。 using UnityEngine; public
皆さんは『配列から欠けている数字を見つけろ』と言われたら、どう答えますか? 多くの方は「HashSetで解けばいい」と考えるでしょう。しかし、1000万個の要素で実測したところ、Pythonのsetは945MBもの追加メモリを消費し、処理に2.3秒かかりました。一方、XORを使った解法は追加メモリゼロ、C言語なら1ミリ秒で完了します。 なぜこれほどの差が生まれるのか? XORには単なるトリック以上の深い理論があり、配列の欠損値検出だけでなく、RAID 5のデータ復元やネットワークのエラー検出など、実務で幅広く応用されているのです。 追記: ネットワーク転送時のパケットロスやノイズによるデータ欠損、さらには宇宙線がメモリに衝突してビットが反転する「ソフトエラー」により、配列から要素が失われることがあります。 本記事では、Florian Hartmannの「That XOR Trick」1を基
テキストの改行や何かのコマンドを実行するためのキーとしてEnterとReturnがありますが、日本ではそれを「Enterキー」と呼ぶことが慣例化しています。広く普及しているWindows PCがそのキーにEnterを採用しているためか、主にReturnを採用しているMacを使っているユーザーでさえもそれを「Enterキー」と呼ぶ人が多くいらっしゃいます。 現代においてReturnキーとEnterキーの機能的差異はほとんど見られないため、仮にMac環境でそれを「Enterキー」と呼んだとしても、現実的には何かの支障が生じることはほとんどありません。しかし、これら2つのキーを厳密に区別するソフトウェアや機能が存在する場合があることや、MacではReturnキーとEnterキーの両方を別々に備えている場合があること、そもそも刻印されているキーの名称を間違った呼び方をすることはよろしくない姿勢であ
GCC, the GNU Compiler Collection The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, Go, D, Modula-2, and COBOL as well as libraries for these languages (libstdc++,...). GCC was originally written as the compiler for the GNU operating system. The GNU system was developed to be 100% free software, free in the sense that it respects the user's freedom. We strive to
All Microsoft Global Microsoft Security Azure Dynamics 365 Microsoft 365 Microsoft Teams Windows 365 Tech & innovation AI Azure Space Mixed reality Microsoft HoloLens Microsoft Viva Quantum computing Sustainability Industries Education Automotive Financial services Government Healthcare Manufacturing Retail All industries Partners Find a partner Become a partner Partner Network Microsoft Marketpla
The C programming language C is a general-purpose high-level programming language suitable for low-level programming, in other words: a system programming language. It stands out in terms of portability, interoperability, efficiency, and stability. Revisions of the C standard
初めに C++ではグローバルな静的変数が宣言されているとmainの前に初期化されます。 GCCには__attribute__((constructor))という拡張があり、この属性を関数の前に付けるとその関数がmainの前に呼ばれます。 それでは両方使うとどういう順序でなるのか? C++的には未定義ですが実験してみました。 単一ファイルにおける順序 #include <stdio.h> static struct X1 { X1() { puts("X1 cstr"); } } x1; static void __attribute__((constructor)) initMain() { puts("initMain"); } static struct X2 { X2() { puts("X2 cstr"); } } x2; int main() { puts("main"); }
C言語にはbitfieldという機能がありますが、この機能にはさまざまな落とし穴があり、注意深く利用しても予期せぬバグや移植性の問題を引き起こす可能性があるとよく言われています。 実際、jpcertを確認すると複数の勧告が出ています。 EXP11-C. ビットフィールド構造体のレイアウトについて勝手な想定をしない INT12-C. 式中で使用される単なるintのビットフィールドの型について勝手な想定をしない CON32-C. 複数スレッドによる隣接データへのアクセスが必要な場合データ競合を防止する DCL39-C. 信頼境界を越えて構造体を渡すとき情報漏えいしない 私は先輩技術者から「とくに組み込みの分野においてC言語のbitfieldは使うべきではない」と教わって生きてきました。 本記事ではbitfieldの仕様や問題点、なぜ仕様を避けるべきか、緩和策や代替案について検討します。 目次
C/C++ の「ポインタ」は、難しいとか、実は簡単だとか、色々言われます。 ポインタについては規格に書かれています。この記事は、ポインタをより正確にイメージするため、規格に私の解釈を追加したものです。区別のため、C++23 草案 (N4950) の内容には節番号を付け、私の解釈は 斜体 で書きます。 私の解釈は以下の記事の影響を受けています。 ポインタとは、IDとオフセットの組 まず、ヌル以外のポインタは、以下の ID とオフセットの組 です。 ID:新しいオブジェクトが作られるたびに振られる、ユニークな値。 オフセット:オブジェクト先頭からのバイト数。 詳しく話していきます。 ID の割り振り 変数を定義するとオブジェクトが作られ (6.7.2)、各オブジェクトに固有の ID が割り振られます。たとえば、 と書くと整数 x と配列 arr が作られるので、x と arr にそれぞれ ID
ユーザー激増中のPC環境へゲームを対応させるにはどうすればいいのか?[CEDEC 2024] ライター:津雲回転 2024年8月22日,ゲーム開発者向けのカンファレンス「CEDEC 2024」で,セッション「PCリリースでグローバル展開! PC対応における技術課題と開発サポート体制構築」が行われた。 この講演では,グローバルで“ユーザー激増中”のPC環境へゲームを移植するときに,どういった問題が起きるのか? そしてどう解決したらいいのか? といった“PC対応”へのさまざまな知見が共有された。 昨今では,ゲームの対応プラットフォームにPCが含まれることも多くなったが,その結果,どんなトラブルが発生するようになったのか興味がある関係者も少なくないはず。本稿では,それらの知識がまとめて紹介されたので,まとめてお伝えする。 講演者はセガの技術本部 テクニカルディレクターの矢儀篤樹氏と,技術本部 開
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く