Windowsにはダブルクリックでスクリプトを実行できるバッチファイルという便利な仕組みがあります。Macにはバッチファイルというものはありませんが、拡張子を.commandにしたシェルスクリプトを用意することでバッチファイルと同じようにダブルクリックでス…
通常、ブラウザ上から任意のプログラムを起動することはできないようになっています。これはおそらく安全性のためなので、ブラウザ上から任意のプログラムを起動することは不可能だと諦めていたのですが、最近ついにその方法を発見したので紹介したいと思い…
久しぶりにiOSプログラミングをしてみたところ、GCDについてさっぱり忘れていたので、次からはすぐに思い出せるようにメモ。 Blocksとは Blocksメモ GCD(Grand Central Dispatch)とは Dispatch Queue Dispatch Queueの種類 Dispatch Queueの入手 逆引き リン…
個人的な覚書としての逆引きリファレンスです 今のところ OpenGL ES 2.0 のみを対象としています 思いついたら追加していきます 現在のフレームバッファ(カラーバッファ)のサイズを取得する iOSでデフォルトのフレームバッファをバインドする(GLKViewControl…
久しぶりにMacでビルドしたプロジェクトが以下のようなエラー出力とともに実行時に落ちるようになっていました。 dyld: Symbol not found: __cg_jpeg_resync_to_restart Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO …
ドキュメント : macrosモジュール Nim Tutorial (Part III) 定数 型の種類一覧 NimTypeKind = enum ntyNone, ntyBool, ntyChar, ntyEmpty, ntyAlias, ntyNil, ntyExpr, ntyStmt, ntyTypeDesc, ntyGenericInvocation, ntyGenericBody, ntyGenericInst, ntyGen…
ファイル トークン種類(tk) ASTノード種類(nk) シンボル種類(sk) シンボルフラグ(sf) 内部型種類(ty) 内部型フラグ(tf) コンパイラマジック定数(m) ファイル compiler main.nim : コンパイラ起点 lexer.nim : レキサー parser.nim : パーサー ast.nim : AST …
新年明けて何か新しいことをしようと思い、前々からやりたかったMac miniのLinuxマシン化をやってみました。 今回、Linuxマシン化したのは2007年製のMac miniです。つまり10年前のパソコンということです。このMac miniは性能的にはまだまだ使えるはずなので…
Nimにはクラスという概念がありません。しかし、オブジェクト指向プログラミング自体はサポートされており、object型を使えばクラスとほぼ同じことが可能になっています。ただし、object型の定義が微妙に面倒なことに加え、やはりクラスが欲しいということで…
[追記] Nimバージョン 0.19.0 で、seq型とstring型のデフォルト値が nil ではなく @[] と "" になりました。この仕様変更により、ここで指摘していた"罠"は根本的に解決されたことになります。一応この記事は残しておきますが、もう気にする必要がないことで…
Nimでの文字列操作関連をまとめてみました。 Nimのバージョンは 0.17.2 を想定しています。( 執筆時の最新バージョン ) 文字列の基本 文字、文字列リテラル 文字、文字列型 文字列関連モジュール 標準モジュール(system,strutils)の文字列関連プロシージャ …
この記事は「Nim Advent Calendar 2017」の記事として登録させてもらっています。 NimはNimソースコードをC言語ソースへ変換するトランスコンパイラ言語です。これは普段C++を使っている人にとって非常に重要なことです。なぜなら、C++(C言語)が使える環境な…
Nimの勉強を兼ねて逆引きリファレンスとしてまとめてみようと思います。随時更新。(最終更新日:2022/4/10) この記事は「Nim Advent Calendar 2017」の記事として登録させてもらっています。 注意: 使用しているNimのバージョンは1.6.0です 間違っているかも…
基本情報 リンク 標準ライブラリ 言語仕様メモ 諸条件の違いによるマクロ仮引数のNimNode構造の違い テンプレートでのシンボル束縛(bind)について テンプレート仮引数の参照ルール テンプレートの衛生 逆引きリファレンス未作成項目 基本情報 作者 : Andreas…
ブール値変換 ブール値変換 偽になるもの None False 数値ゼロ : 0 空シーケンス : '', (), [] 空マッピング : {} __nonzero__()メソッドがFalseを返すオブジェクト __len__()メソッドが0を返すオブジェクト 真になるもの 偽に当てはまらないもの ドキュメン…
数年前、「Flan」というプログラミング言語を作っていました。このプログラミング言語は長い間C++でプログラミングをしてきて感じた不満をもとに、自分好みの最高のプログラミング言語を作ろうと、そういう考えで作っていました。「Flan」は言語機能的にはだ…
先日「センメツコースター」の開発が完了しました。そこで開発に使ったものを紹介したいと思います。 制作ツール IDE : QtCreator テキストエディタ : Visual Studio Code ドット絵作成 : Aseprite スプライトアニメーション作成 : DarkFunctionEditor 絵素…
先日、iOS用ゲームアプリ「センメツコースター」をリリースしました。このゲームの開発にはゲームエンジンは使っておらず、C++とOpenGLとOpenALなどで実装されています。最近はゲームエンジンを使うことが当たり前になっており、ゲームエンジンを使わないゲ…
長い間作っていたゲームがようやく完成しました。 センメツコースターはiOS用2Dアクションゲームです。広告無しの有料アプリ(240円)です。 レールの上をコースター(乗り物)で移動して敵を倒す(センメツ)するのが目的です。 こんな人におすすめです。 iPhone…
------------------------------- Lua ------------------------------- /****************************************************************************** * Copyright (C) 1994-2012 Lua.org, PUC-Rio. * * Permission is hereby granted, free of charg…
C++では名前空間に別名を与えることができます。 namespace HogeCore {} namespace Hoge = HogeCore; しかし、複数の名前空間に同じ別名を与えることはできません。 namespace HogeCore {} namespace HogeGraphics {} namespace HogeAudio {} namespace Hoge…
プログラミングをしていてソースコードの行数が一体どれくらいになっているのか気になることがよくあるのですが、Gitリポジトリを解析して統計情報を生成してくれるGitStatsというツールがあることを知りました。ソースコード行数はもちろん、ファイル数、コ…
Xcode7.3へアップデート後、QtCreatorのC++プロジェクトのビルド時のリンク時間がやたら遅いなと思っていましたが解決法が書かれたページを見つけ、試してみたところ治ったので共有したいと思います。 ※Xcode自体でのビルドではなく、Xcode付属のClangを使っ…
2016年4月から「センメツコースター(仮)」というiOS用のゲームを作っています。 2016:08:18 20-37 from shinya on Vimeo. ジェットコースター+アクションゲームな感じです。 最初は1ヶ月で完成させることを目標にしていましたが、4ヶ月も経ってしまいました…
普段、MacでのGif動画用の画面キャプチャはLICEcapというソフトを使っていますが、このソフトで画面キャプチャを行うとフレームレートが30fpsくらいになってしまいます。たいていは30fpsもあれば十分なのですが、ゲームの動画など60fpsにしたい場合もありま…
ゲームプログラミングキャラクターを点滅させたいとき、以下のような実装にするかもしれません。 // C++ class Player { int m_DrawCount; public: Player() : m_DrawCount( 0 ){} void Draw( void ) { // 2フレームに1回描画 if ( m_DrawCount % 2 == 0 ) {…
メンバ関数の中でメンバ変数の定義ができたら便利だろうなと思ったので、方法を模索してみました。半分ネタです。 やりたいのはこういう感じのことです。 class A { int m_Value; // こっちは普通のメンバ変数 public: void Func( void ) { local int m_Stat…
そのうち試してみたいツールなどを忘れないようにメモ。 プログラム系 プログラミング言語 JavaScript : Webサイトだけでなくいろいろな場面で使われてるので覚えておいて損はなさそう。 Nim : インデント構文、静的型、強力なマクロ、そしてC言語コードを生…
require関数やdofile関数のファイルロード処理はカスタマイズできない Luaスクリプトを書いていてファイル分割をしたくなった場合、Lua標準のrequire関数やdofile関数を使うと思います。 dofile( 'common.lua' ) dofile( 'util.lua' ) -- いろんな処理 問題…
Macで作業をしていて、ふとフォルダアイコンの色を変えたくなりました。調べてみたところ、Mac標準の機能だけでできることがわかったので紹介したいと思います。また、この方法はGitでちょっと問題がでるのでその対処法も紹介します。 フォルダアイコン色の…