プログラミング

Visual Studioでプロジェクトのフォルダ名を変える

右クリック→「名前の変更」で、ソリューション名、プロジェクト名、名前空間名などは変更できるが、プロジェクト名を変更してもプロジェクトのフォルダ名は元のままで、実害は無いけどもカッコ悪い。そこで手動で変更する方法をメモ。 Visual Studioを閉じる…

apkパッケージの作り方

もうEclipseで開発なんて古いだろうけど、いちおうメモ。 [File]>[Export]>[Android]>[Export Android Application] [Project Checks] で、出力するプロジェクトを選択 [Keystor selection] で、初回は電子署名を新規生成 [Create new keystor]で、保存先、…

C#のToString()のフォーマット指定

すぐ忘れるので、メモ 実数は"F". "F4"としたら小数第4位まで. 整数(10進数表示)は"D". "D8"としたらゼロ埋め8桁 (負号も桁に含む) 整数(16進数表示)は"X". "X8"としたらゼロ埋め8桁 【追記】 string.Format()のほうがsprintf()感覚で使えて便利? str = Str…

セグフォとコアダンプ

C/C++のコードがセグメンテーションフォールト(セグフォ)で落ちる場合、突然プロセスが死ぬのでどこで問題が発生したのか分かりにくいです。そんなときに有効な手がかりとなるのがコアダンプです。 GCCでデバッグ情報つきでコンパイルする (-gオプション) $ …

OpenSSLのビルド(ARM9用)

組込みのARM9用にOpenSSLをビルドする手順メモ。(じゃっかん古い内容を含んでいます…) ソースのダウンロード https://www.openssl.org/source/ からソースをダウンロード]する。 (執筆時点で最新版は openssl-1.0.1l.tar.gz) ビルド ホスト環境は、Ubuntu10.…

Kansai.mrb 2014 Dec でのLT

昨日、Kansai.mrb 2014 Decに参加してきました。LTでしゃべった内容をうpしておきます。

mruby導入メモ

組込みでスクリプト言語を使うことには消極的だったのですが、このところC++でWebAPIサーバを実装する苦行の日々で、少々C++に倦んできました。ここらでmrubyなどやってみようかと思い立ちました。まずはPCのUbuntu上で使って感じを掴んでみようと思います。…

UNIX/Linuxのパイプ

20年くらい日々使っていながら、UNIX/Linuxのパイプの振る舞いをよく分かってませんでした。『易経』に「日に用いて知らず」というのはこれです。ちょっと簡単なコードで実験してみました。 リスト1 test1.c #include <stdio.h> int main(void) { int i; for(i=0;i<5;</stdio.h>…

組込みLinux用ネットワーク設定クラス(C++)

組込みLinuxのC++でネットワークインターフェース(有線LAN/無線LAN)の設定を行なうクラスを作成しました。といっても、ほとんど ifup/ifdown/ifconfig/iwconfigなどのコマンドをC++から叩いてるだけの超テキトーなラッパーです。 ソース NetIf.h NetIf.cc te…

Linuxのシグナルの番号

1 SIGHUP 端末との接続が切断された(Hangup) 2 SIGINT キーボードからの割り込み(Interrrupt) 3 SIGQUIT キーボードからのプロセスの中止(Quit) 4 SIGILL 不正な命令(Illegal instruction) 5 SIGTRAP Trace / breakpoint trap 6 SIGABRT abort関数 8…

GLib使ってINIファイル読み書き

INIファイルって古くさいものですが、単純なフォーマットゆえに手で簡単に編集できるので、今でも使いたい場合があります。 LinuxでC言語だと、GlibライブラリにINIファイル(Key-Valueファイル)を扱うAPI関数が用意されているのですが、微妙に扱いが面倒くさ…

接続詞としてのandとor

&&と||によるifを使わない条件分岐、シェルスクリプトではよく見るけど、C言語でやられるとちょっと戸惑う。でも英語だと、"and"と"or"を「ならば」「さもなくば」の意味で使うし、あんがい自然な表現なのかもしれない。(いや、C言語ではこんなトリッキーな…

UUID生成ツール

BLEの開発では、独自定義のサービスやキャラクタリスティックにUUIDを定めないといけません。そこで、UUID生成ツールについてメモ。 (2023/5/27加筆修正) Linux コマンドラインツールのuuidgenを使います。 $ uuidgen -r # 乱数ベースのUUID生成 $ uuidgen -…

GitHub使い方メモ

リポジトリの作成 ブラウザでGitHubにログインして、自分のページの[Repositories]タブで[New]ボタンを押す。必要事項を記入して、[Create repository]ボタンを押す。 Gitクライアントでリポジトリをチェックアウト GitクライアントとしてはSource Treeなど…

Androidアプリ開発メモ(4)

ActivityにViewを配置する Javaのみで protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... // Viewのインスタンスを生成 (アプリのコンテキストを参照して ) HogeView myView = new HogeView( getApplication()…

Androidアプリ開発メモ(3)

起動したActivityから結果を返してもらう 【要点】 startActivityForResult()で起動したActivityは、終了時に起動元にIntentを送り、起動元のonActivityResult()が呼ばれる。 /* 起動元 */ // なんかボタンが押されたら public void onClick(View v) { // こ…

Androidアプリ開発メモ(2)

タイトルバーとステータスバーの非表示 (AndroidManifest.xmlで) AndroidManifest.xml の かに下記の属性を記述する。 ・タイトルバー非表示 android:theme="@android:style/Theme.NoTitleBar"・タイトルバーとステータスバー非表示 android:theme="@android…

Androidアプリ開発メモ

APIレベルとAndoidのバージョン Android 4.4.2 API 19 KitKat Android 4.3 API 18 Jelly Bean Android 4.2.2 API 17 Jelly Bean Android 4.1.2 API 16 Jelly Bean Android 4.0.3 API 15 Ice Cream Sandwich Android 4.0 API 14 Ice Cream Sandwich Android 3…

【要検討】だれが通信を持つか?

Andoidアプリで、通信(USB,Bluetooth,WiFi)を誰が持つかという問題について。 ※ アプリ苦手なのでいろいろ間違ってるかも。ご意見いただけると幸いです。 Activity 簡単なサンプルソースだとだいたいActivityで持ってます。しかし、画面遷移のあるアプリで、…

シリアル通信のバッファのフラッシュ

バッファのフラッシュは大事ですね。通信相手の挙動が怪しいときは特に。 // Linuxのシリアル通信プログラムの一部 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <termios.h> #include <unistd.h> ... // シリアルポートのハンドラ int handle; if((handle = open("/dev/tty0", O_RDWR</unistd.h></termios.h></fcntl.h></sys/stat.h></sys/types.h>…

termios構造体のc_cflagについて

LinuxのC言語でシリアル通信に使うtermios構造体のc_cflag変数についてメモ。 数値はもしかしたら環境依存です。後に示すプログラムを実行して確認しました。 名前 値 説明 CBAUD 0x0000100F ボーレートのマスク。値は※1 CSIZE 0x00000030 データ長のマスク…

JavaとC#のコンソール/ファイル入出力のチートシート

自分は組込み屋なのでC/C++は年中使ってて文法や標準関数忘れることはあんまりないけど、めったに使わないJavaやC#なんかはすぐ忘れてしまう。なので、ちょっとメモ。 Java // #include <stdio.h> import java.io.*; // putc, puts, pfintf System.out.println("Hello</stdio.h>…

CRC計算

符号の乗算が排他的論理和なのは信号処理屋にとっては言ふも更なりだし、ちょっと考えれば当たり前なんだけど、まぁ一見さんは戸惑うかもね。 /** * CRCを計算する(バッファされたデータを一気に計算) * * CRC-16-CCITT計算 * 生成多項式=x^16+x^12+x^5+1 (…

BASE64

BASE64のエンコード/デコードをC言語で書いた。 /** * BASE64変換プログラム(マイコン用) * * マイコン用なのでメモリの動的確保(malloc)はあえてしません。 * また実行時の計算とRAM使用を極力減らしています。 */ //! BASE64エンコードテーブル static con…

文字列のポインタ

C言語のポインタにまつわる文法は、べつに難しくはないけどいろいろ紛らわしいです。const char* と char* const なんかも紛らわしいと思います。(char* const なんてあまり使いませんけど。) 「宣言では * は左側にかかる」と覚えておけばいいですね。 型 …

MMLの方言差

はてなのMML記法とPC-8801のN88-BASICのMMLと、いろいろ違いますね。MMLに方言差があるということは聞いていたし、ハードウェアの性能差がある以上それは当然だと思ってけど、まさかオクターブの上げ下げの記号が逆とは思わなかった! (はてなでは あと、ゲ…

キーイベントを他アプリに送る

PC-8801エミュレータ*1のウィンドウにキーイベントを送って、テキストファイルに書かれたN88-BASICプログラムをPC-8801に入力するという無理矢理なプログラム。しょーもないプログラムだけど、何かに応用できることもあるかもしれないので挙げておきます。 …

RGB⇔YCbCr換算と色見本

やっつけ仕事ですが、RGB⇔YCbCrの換算と色見本のツールをHTML5で書いてみました。 RGB⇔YCbCr換算と色見本

キャリーフラグとオーバーフローフラグ

恥ずかしながら、電気電子系で組込み屋のくせにキャリーフラグとオーバーフローフラグについての理解があやふやでした。ちょっとまとめます。 符号なしならCF、符号つきならOF まず第一に、キャリーフラグは符号なし加算で意味を持ち、オーバーフローフラグ…

直角三角形の斜辺を計算するアルゴリズム

もちろん、三平方の定理により平方根を求めれば良いだけなのですが、次のようなアルゴリズムにより四則演算のみで計算できます。Moler-Morrisonアルゴリズムというらしいですが、結果をみるとかなり収束が速いですね。 #include <stdio.h> #include <stdlib.h> /** * 直角三角形</stdlib.h></stdio.h>…