cwnicol programming

プログラミング関連の投稿をすこしだけ

VS2015でW3C XMLスキーマを自動生成し、lintするまでの手順

1.スキーマ作成元となるxmlをVSにD&D 2.[ツールバー]-[XML]-[スキーマの生成] 3.[ツールバー]-[XML]-[スキーマ]で、2で作成したスキーマを有効化 4.チェック対象xmlを開き、プロパティウィンドウでスキーマに3を設定(既にされているかも) 5.エラー一覧ウィン…

他のリポジトリからチェリーピック

[チームエクスプローラー]-[設定]-[Git]-[リポジトリの設定] [リモート]-[追加] から、任意の名前でチェリーピックしたいコミットが入ったリポジトリを追加。(リモート追加ダイアログのチェックボックスはそのままでよい) [チームエクスプローラー]-[同期]-[…

無限ループ 場所特定手順

mugen_loop 上記ソース実行中にアタッチ後、「すべて中断(Ctrl+Alt+Break)」し、呼び出し履歴を見ればどこで無限ループになっているか分かる。

エラー対処手段

無視 復帰 プログラム終了

Visual StudioでMinGWのgccを用いてコンパイル

環境:Visual Studio Community 2015 1.MinGWインストール MinGW(gcc) の Windows へのインストールと使い方 | プログラマーズ雑記帳 上記を参考にMinGWをインストール、環境変数設定。 2.プロジェクト作成 windows - How to use GCC with Microsoft Visual S…

作業途中のチェックアウト

Git

作業ブランチで作業中に他ブランチをチェックする場合は、 仮コミットしておき、他ブランチで作業後、元ブランチに 戻ってきて、git reset --soft HEAD^ で変更状態に戻す。?? (stashも使えるが、stashしたことを忘れそうなので)

リストモジュール

C

メモリプールと併せて以下の使用感。エラー処理は未実装。 データのメモリはメモリプールで管理。リスト管理、ノードのメモリは リストモジュールで管理。 list sample2

公式Quickstartメモ

[Quickstart] https://cloud.google.com/appengine/docs/go/quickstart#top_of_page ・Test the application →環境設定前に起動したコマンドプロンプトでは、 設定したPATHが反映されていないので、新規で 立ち上げたコマンドプロンプトで実行すること。 ・D…

メモリプール

C

Cでmallocを何度も使用するとメモリ解放忘れが起きやすい。 一括でメモリを確保し、細切れで必要分使うコードがネット上にあったので クラスモジュールで作成。 memory pool · GitHub

printfデバッグ

IDEの中で見づらい、大量に連続したデータを見る際は ファイルにでも吐き出して見るとよいかもしれない

ブックマーク機能

Visual Studio でブックマーク機能が使えることを知った。 (VBEには昔からあること知ってたけど) ブックマークタブもあるし、main()とか、主要な関数を ブックマークして様子を見てみるか

マージソート

改行コードLF、CRLF対応 ファイル読み込み

VBAのLine InputステートメントはLF改行の対応していないため、 改行コードLF、CRLFの両方に対応するファイル読み込み処理を 作成したのだったと思う 改行コードLF、CRLF対応 ファイル読み込み

デバッグ実行時のコマンド引数、作業ディレクトリ設定

[プロパティ]-[デバッグ]で、コマンド引数と作業ディレクトリが設定可能。 これらを使えばアタッチしなくてもデバッグできそう。

実行時エラー箇所 確認手順

デバッグ実行開始 エラーダイアログで中断ボタン押下 呼び出し履歴でコールスタック確認

無限ループ箇所 確認手順

デバッグ実行開始 無限ループにはまる 一時停止 呼び出し履歴でコールスタック確認

キュー

C

・キュー →循環配列(リングバッファ)で実装するのが定石っぽい ・優先度付きキュー →二分ヒープで実装するのが定石っぽい

ダイクストラ法 アルゴリズム

ダイクストラ法 from ohsofty

C言語 ダイクストラ法 ライブラリ その2

C

cwnicol.hatenablog.com 上記のインターフェースで、リストを使用するように、 また、最短ルート時のコストも返すようにした。 インターフェース詳細はdijsktra.h、具体的な使用方法はtest_dijsktra.c参照。 (test_dijsktra.cで辺設定行が多いのは、テスト対…

C言語 ダイクストラ法 ライブラリ

C

使用感は改善の余地ありかも。 インターフェース詳細はdijsktra.h、具体的な使用方法はtest_dijsktra.c参照。 ライブラリ:dijsktra.h、dijsktra.c dijsktra [テスト対象グラフ] [テスト実行結果] (追記) インターフェースにリストを使用するようにしたもの…

簡易正規分布

C

簡易正規分布は一様乱数を足せばよいらしい。rand()は一様乱数を返す。 rand()%10として、0~9の乱数を得ていたのを、 rand()%5とrand()%6で、0~4の乱数と0~5の乱数を足して0~9の乱数を 得るようにする。 random こんな山でよいのなら。

C言語 ビットフラグ操作関数

C

ビットフラグは嫌いだが、操作関数があれば少しは使いやすくなるのだろうか bitFlag

進捗管理エクセルメモ

C言語 シーケンス図 自動生成

github.com [背景] C言語のソースからシーケンス図を自動作成するツールが 見当たらなかったので作成した。plantUML用入力ファイルを出力する。 できたファイルをplantUMLで読み込むことでシーケンス図が見れる。 [動作環境] Windows10で動確済み。(どのWind…

C言語 ファイル検索 再帰 ライブラリ

簡単に取り込めるファイル検索ライブラリ。(Windows用) (指定フォルダ配下の、指定拡張子の全フルパスを取得する) エラー処理は未実装。とりあえず動く。 使用者はlist.h, findFile.h内のインターフェースのみ把握しておけば使える。 まずはtest_findFile.c…

c言語 モジュール分割

cのプログラムはファイルを分けてモジュール分割可能。 ヘッダーファイルは設計図で、Cファイルは実装だ。 ヘッダーファイルには他モジュールが知る必要がことだけを書く。 公開関数のプロトタイプと、それの戻り値、引数で関係してくる マクロ、列挙体、構…

オプション処理 カプセル化

先日C言語でカプセル化できることを知ったので、それをオプション処理で応用してみた。(エラー処理は未実装) オプションクラスを使う人は、option.hのインターフェース使用方法を知っていれば、オプションについて詳しく知る必要もない。 option - object or…

Visual Studio 現在行の背景色 変更方法

現在行の背景色は以下で設定可能。 [ツール]-[オプション]-[フォントおよび色]で[表示項目]で"現在の行を強調表示する(アクティブ)"を選んで、[背景色]を変更 [確認済みver] Visual Studio 2015 Visual Studio Community 2015 googleで検索して上の方に出て…

Visual Studio Community キーバインド コードリーディング時

Visual Studio Community のキーバインドを以下のようにテスト割り当て中 No 意味 元のキー 割り当て先 使用目的 1 編集,定義に移動 F12 Ctrl+^ 定義を見たい 2 編集,検索 Ctrl+F Ctrl+[ 単語をハイライトしたい 3 編集,次を検索 無し? Ctrl+] ハイライト単…

エクセルで課題一覧

エクセルで課題一覧を作る場合には「サマリー・運用方法」シートを作成して、 以下があるといいかも。 ○運用方法 ・ステータス種別は、open, close, 保留。 open…課題を記入したらとりあえずこれにする。 close…課題が解決したらこれにする。 保留…とりあえ…

C言語で継承(オーバーロード(=多態性)なし)

↑ソース関連図 犬(dog)クラスで動物(Animal)クラスを継承している。 ポイントは以下。 ・サブクラス宣言では一番上のメンバにスーパークラスを宣言する(dog.c, 6行目) ・スーパークラスのヘッダをAnimal.h, AnimalP.hとしてカプセル性を保持する ・スーパー…

C言語でカプセル化

Cでは不完全なカプセル化になる(メンバにアクセスできてしまうという意味で)と思っていたけど、ソース側に構造体を定義すれば完全なカプセル化を実現できる模様 c capcel

大量の変更履歴がソース上にあるような資産を扱うとき

大量の変更履歴がソース上にあるような資産を扱うときには、 コメントの背景色をグレー等にしてみると、意外に見やすいかも。 (Visual Studio 2015なら[ツール]-[オプション]-[フォントおよび色]で [表示項目]で"コメント"を選んで、[背景色]を変更)

ブラウザで見る用語集をエクセルマクロで出力(その2)

VBA

cwnicol.hatenablog.com 上記で作成した用語集で、以下課題に対応した。 ・ソース汚い。要リファクタリング →適当に整理 ・ファイル文字コード問題。VBAで出力するとSHIFT-JISになってしまう。ADODBを使ってutf-8出力か →utf-8BOMありで出力するように。BOM…

ブラウザで見る用語集をエクセルマクロで出力

VBA

ブラウザで見られるキーワードリンクのある用語集がほしかった。 上記のような用語集をエクセルで作成しておいて、 マクロで作成したhtmlを下記のようにブラウザで見る。 エクセルファイル(html出力マクロあり):https://db.tt/5dTIiGXM フレームhtml:https…

pythonでwebsocketを使ったチャット

WebSocketsでチャットを作ってみる! — PythonMatrixJp ↑を参考に、自分の環境で試してみた。 自分の環境のlinuxではubuntuではなく、cent osなので、 aptitude install libevent-dev python-dev python-setuptools # for ubunutu というのは使えず、 CentOS…

HaskellでFizz Buzz書いてみた。

fizzbuzz ガード?を使えばもっときれいに書けるかもしれない。 検索して出てくるコードとは明らかに違うのでw 但し、単数は組み合わせれてるし、はじめてHaskellで動くものを 作れたので割と満足している(今は) putStrLnに文字列をひとつづつ渡して表示する…

空の要素を含むCSVファイルを読み込む

sscanf()とかstrtok()だと空の要素があると、その要素の読み込みが 飛ばされる。 そこで、元データに半角スペースを挿入した上でsscanfして、 データ読み込み後に半角スペースを削除している。 sscanf

qsortで複数キー(複数条件)でソート

qsortで複数キー(複数条件)でソートしたい時があるだろう。 例えば、↑のデータを [ソート条件] ・第1ソートキー:AAA列の昇順 ・第2ソートキー:BBB列の降順 で並び替えたいとしよう。 qsort()では一つのキーしか設定できないと思われがちだが、 qsort()の第4…

Cloud9でrake db:migrateエラー

Cloud9 - Your development environment, in the cloud で、 作ってわかるデータベース (小学生でもわかるRuby on Rails入門) | OpenBook をやっていたらハマったのでメモ。 rake db:migrateで rake aborted!StandardError: An error has occurred, this and…

仕様理解方法

※自分用メモ 構造 クラス図 関数ツリー 構造体定義+構造体実態存在場所、static →構造体名でgrep, その変数が使われている箇所をgrep シーケンス入出力デバッグ実行 ----○処理把握 ドキュメントから仕様を把握。 エントリーポイントを起点に必要な程度の関…

関数内で引数の値変更禁止

構造体を関数にポインタ渡し(参照渡し)して、関数内で 構造体の中を変更して欲しくない時は仮引数の型の前に constをつければよい。 ※構造体でなくても、整数等も同様。 #include <stdio.h>#include <stdlib.h> typedef struct _aaa { int a;}aaa; void func_a(const aaa* b) { </stdlib.h></stdio.h>…

10進数を2進数に変換するプログラム

自前で10進数→2進数変換アルゴリズムを実装しなくても、 標準ライブラリのitoa()の第3引数に2を設定すれば、 目標を達成できるのでは。 #include <stdio.h>#include <stdlib.h> int main() { int target = 255; char buf[256] = {0}; itoa(target, buf, 2); printf("%s\n", buf)</stdlib.h></stdio.h>…

ライブラリ

まとめきれていない部分もあるかもしれないが、 とりあえず現時点でライブラリについて分かったことを記す。 名称 動的ライブラリ 静的ライブラリ 方式 レイトバインディング(遅延バインディング、実行時バインディングとも) アーリーバインディング(事前バ…

実行環境のexe デバッグ実行手順

1. Visual Studioでデバッグビルドする 2. 実行環境にexe, pdbファイルを移動する 3. exeを実行する(CUIの場合、getchar()等で止めておく) 4. (Visual Studio上でブレークポイントを設定する) 5. Visual Studioからexeにアタッチする 6. exeでアクション(ボ…

プロジェクトが遅れたときにどうするか?

プロジェクトが遅れたときにどうするか? まずは原因の特定。 解決策は以下3つ。 状況により複数の解決策を実施する。 1)リカバリ クリティカルパス上のタスクにリソースを投入し、 進捗の遅れを取り戻す。具体的な手法は以下の通り。 a)既存要員追加(クラッ…

ワークフォルダ作成スクリプト

■概要 手動で一時的な作業用フォルダを作成する手間を省く。■初期設定方法 スクリプト内のベースフォルダ(baseFolder)を設定する。■使用方法 ダブルクリック等でスクリプトを実行。 Windows7で動作確認済み。以下ソース。 makeNewWorkFolder.vbs '''''''''''…

PERT図

情報処理系の資格で学習したが、まるでこの図の存在意義を 理解できていなかったので調査した。 【読み方】 パート図 【概要】 タスクを洗い出し、その所要時間、前後関係を整理し、タスク間の 前後関係に基づいてタスクフロー図に相当するネットワーク図 (…

ポインタ 説明 解説 講座

ポインタ 説明 ざっくりと基本を。 ================◆使用用途====================== 関数内での変数の書き換え。 int main(){ int b; change(○○○); //この中でbの値を書き換えたい return 0; } ================================================ ========…

memo

Private Sub CommandButton1_Click() Dim wb As Workbook 'Dim wb As Object Dim path path = Application.GetOpenFilename("Microsoft Excelブック,*.*") Set wb = Workbooks.Open(path) 'wb.Worksheets("Sheet1").text1.Value = "1" 'wb.Worksheets("Sheet…