さあやってまいりました。
プログラムのノウハウをメモしていこうよ。
VB.NETだよ全員集合
就職できないよ
つっこみ歓迎!
ナレッジマネジメントしていこう。
探検
【知識】俺のためのプログラム覚え書き【共有】
■ このスレッドは過去ログ倉庫に格納されています
2013/02/03(日) 21:15:45.06
2013/02/20(水) 22:47:04.99
Visual Studio は、サーバーエクスプローラーから、コードの生成が可能だが、
Shell 関数を使うと楽な場合も多い。
Shell 関数を使うと楽な場合も多い。
2013/02/21(木) 00:30:14.56
知恵袋使えばいいのに
2013/02/24(日) 23:04:46.48
qsortよりもstd::sortの方が高速
2013/03/06(水) 16:34:46.45
//JavaScriptでクイックソート
Quicksort = function (xs) {
if (xs.length <= 1) return xs;
var pivot = xs[Math.floor(xs.length/2)];
return [].concat(
Quicksort(xs.filter( function(x){ return pivot>x;})),
xs.filter( function(x){ return pivot==x;}),
Quicksort(xs.filter( function(x){ return pivot<x;})));
};
Quicksort = function (xs) {
if (xs.length <= 1) return xs;
var pivot = xs[Math.floor(xs.length/2)];
return [].concat(
Quicksort(xs.filter( function(x){ return pivot>x;})),
xs.filter( function(x){ return pivot==x;}),
Quicksort(xs.filter( function(x){ return pivot<x;})));
};
2013/05/02(木) 18:10:11.66
Visual Studio 使ってる人、
フォームクラスを集めただけのプロジェクトを作って、
他プロジェクトと連携させることってありますか?
フォームクラスには、業務ロジックのコーディングは一切行わず、
全てを他プロジェクトで実装する、という形態。
フォーム上のコントロール類のスコープを全部 Public に変えてやれば簡単だけど、
一つ一つ、プロパティ、イベントを作って公開してます。
ここまで、問題ないかな?
フォームクラスを集めただけのプロジェクトを作って、
他プロジェクトと連携させることってありますか?
フォームクラスには、業務ロジックのコーディングは一切行わず、
全てを他プロジェクトで実装する、という形態。
フォーム上のコントロール類のスコープを全部 Public に変えてやれば簡単だけど、
一つ一つ、プロパティ、イベントを作って公開してます。
ここまで、問題ないかな?
26デフォルトの名無しさん
2013/05/03(金) 06:29:20.72 ネットで調べてもどこにも載っていないため自力で解決した内容
スプリットコンテナ SplitContainer の制御方法。
パネル2の幅の最大制限を実装する。
幅が指定した値を超える時、その分、フォームを縮める。
−−−−−−
パネル1
−−−−−− ←分割線
パネル2
−−−−−−
パネル2の幅の最大値は m_splitPanel2MaxSize
にセットしているものとする。
SplitContainer1.SplitterMoved イベントハンドラにて
前半部分(長いので2分割。)
If Not m_enableSplitterMovedEvent Then
' 当イベントが無効の場合
Exit Sub
End If
' Me.SplitContainer1 を sender を通して取得。
Dim sc As SplitContainer = CType(sender, SplitContainer)
スプリットコンテナ SplitContainer の制御方法。
パネル2の幅の最大制限を実装する。
幅が指定した値を超える時、その分、フォームを縮める。
−−−−−−
パネル1
−−−−−− ←分割線
パネル2
−−−−−−
パネル2の幅の最大値は m_splitPanel2MaxSize
にセットしているものとする。
SplitContainer1.SplitterMoved イベントハンドラにて
前半部分(長いので2分割。)
If Not m_enableSplitterMovedEvent Then
' 当イベントが無効の場合
Exit Sub
End If
' Me.SplitContainer1 を sender を通して取得。
Dim sc As SplitContainer = CType(sender, SplitContainer)
27デフォルトの名無しさん
2013/05/03(金) 06:30:47.82 SplitContainer1.SplitterMoved イベントハンドラ
中盤部分(長すぎたので3分割に変更)
If sc.Panel2.Height > m_splitPanel2MaxSize Then
' Panel2 の高さが最大値を超えた時
' 当イベントの再帰呼び出しを回避
m_enableSplitterMovedEvent = False
' どのくらい超えたか記憶
Dim dis As Integer = sc.Panel2.Height - m_splitPanel2MaxSize
' パネル2 が最大の高さを超えた分、フォームの高さを縮める。
' これにより、あたかも SplitterDistance をフォームの下の
' サイズ変更グリッドのようにして扱える。
Dim f As Form = sc.ParentForm
f.Height = f.Height - dis
' これによって、コンテナの状態は以下のようになる。
中盤部分(長すぎたので3分割に変更)
If sc.Panel2.Height > m_splitPanel2MaxSize Then
' Panel2 の高さが最大値を超えた時
' 当イベントの再帰呼び出しを回避
m_enableSplitterMovedEvent = False
' どのくらい超えたか記憶
Dim dis As Integer = sc.Panel2.Height - m_splitPanel2MaxSize
' パネル2 が最大の高さを超えた分、フォームの高さを縮める。
' これにより、あたかも SplitterDistance をフォームの下の
' サイズ変更グリッドのようにして扱える。
Dim f As Form = sc.ParentForm
f.Height = f.Height - dis
' これによって、コンテナの状態は以下のようになる。
28デフォルトの名無しさん
2013/05/03(金) 06:31:31.17 SplitContainer1.SplitterMoved イベントハンドラ
後半部分
' これによって、コンテナの状態は以下のようになる。
' コンテナのサイズ… dis の分だけ縮む。
' (∵ コンテナは、パネル pnSC 内に Dock Fill で入っていて、
' pnSC はフォーム直下に配置され、Anchor プロパティに Bottom が含まれている。)
'
' Panel2 のサイズ…
' Splitter の移動後なので、Panel2 のサイズは変更済み。
' 上記処理によって、Panel2 の高さが最大を超えている時は、
' 超えた分だけ、フォームサイズ(コンテナサイズ)が縮む。
' それに伴い、コンテナの分割位置 SplitterDistance は、
' Panel2 の高さを維持して、Panel1 の高さを縮める。
' (∵ FixedPanel プロパティ = Panel2 )
'
' Panel2 の高さは、最大を超えたまま。
' Panel2 の高さを最大にセットする
' ↓このように Panel2 の Height で高さを明示的に指定することはできない。
'Me.SplitContainer1.Panel2.Height = m_SplitPanel2MaxSize
'
' SplitterDistance を使用する。
' Panel2 が最大サイズになるように、分割位置 SplitterDistance をセット。
sc.SplitterDistance =
sc.Height - m_splitPanel2MaxSize - sc.SplitterWidth ' 分割線の太さも引く
' 当イベントを有効に戻す
m_enableSplitterMovedEvent = True
End If
後半部分
' これによって、コンテナの状態は以下のようになる。
' コンテナのサイズ… dis の分だけ縮む。
' (∵ コンテナは、パネル pnSC 内に Dock Fill で入っていて、
' pnSC はフォーム直下に配置され、Anchor プロパティに Bottom が含まれている。)
'
' Panel2 のサイズ…
' Splitter の移動後なので、Panel2 のサイズは変更済み。
' 上記処理によって、Panel2 の高さが最大を超えている時は、
' 超えた分だけ、フォームサイズ(コンテナサイズ)が縮む。
' それに伴い、コンテナの分割位置 SplitterDistance は、
' Panel2 の高さを維持して、Panel1 の高さを縮める。
' (∵ FixedPanel プロパティ = Panel2 )
'
' Panel2 の高さは、最大を超えたまま。
' Panel2 の高さを最大にセットする
' ↓このように Panel2 の Height で高さを明示的に指定することはできない。
'Me.SplitContainer1.Panel2.Height = m_SplitPanel2MaxSize
'
' SplitterDistance を使用する。
' Panel2 が最大サイズになるように、分割位置 SplitterDistance をセット。
sc.SplitterDistance =
sc.Height - m_splitPanel2MaxSize - sc.SplitterWidth ' 分割線の太さも引く
' 当イベントを有効に戻す
m_enableSplitterMovedEvent = True
End If
2013/05/03(金) 06:49:22.78
ポイントは、以下の3点
・SplitContainer は、フォームに直接配置せず、パネル内に Dock = Fill でセットする。
そして、そのパネルで、Anchor などを設定する。
・スプリットコンテナ内のパネルは、高さを直接指定できないため、
SplitterDistance でパネルの高さを調整する。
・フォーム、パネル、スプリットコンテナ、SplitterDistance 、
スプリットコンテナ内の各コントロール類の位置、サイズを
メモして、フォームの高さを変えたり、分割線の位置を変えたりしながら、
お互いのコントロールにどのような影響を及ぼしあうのか
調べることが基本。
・SplitContainer は、フォームに直接配置せず、パネル内に Dock = Fill でセットする。
そして、そのパネルで、Anchor などを設定する。
・スプリットコンテナ内のパネルは、高さを直接指定できないため、
SplitterDistance でパネルの高さを調整する。
・フォーム、パネル、スプリットコンテナ、SplitterDistance 、
スプリットコンテナ内の各コントロール類の位置、サイズを
メモして、フォームの高さを変えたり、分割線の位置を変えたりしながら、
お互いのコントロールにどのような影響を及ぼしあうのか
調べることが基本。
2013/05/04(土) 00:52:12.40
クリオネは普段は可愛いが、食事の時は怖い
2013/05/06(月) 00:29:24.89
うむ
2013/05/19(日) 23:44:05.93
502:01/25(金) 22:27 [sage]
msysでvc++へのパスを通してconfigure時にCXX=clとかするだけで複雑怪奇なcl用のmakefile作ってくれるだね。
今頃気づいたよ。
mingw64使うよりautotoolでvc++使ったほうが互換性気にする必要なくて楽じゃん。
configureマンセー
msysでvc++へのパスを通してconfigure時にCXX=clとかするだけで複雑怪奇なcl用のmakefile作ってくれるだね。
今頃気づいたよ。
mingw64使うよりautotoolでvc++使ったほうが互換性気にする必要なくて楽じゃん。
configureマンセー
2013/05/23(木) 23:53:39.58
STLのmapで、Keyによる検索ではなく、並んでいる順のインデックスで値を取ってきたいのですが、
現状では、begin()で先頭イテレータを取得し、取りたいインデックス回だけ++しています。
もっと一発で取れるようなエレガントな書き方はないでしょうか?
std::advance(i,10);
現状では、begin()で先頭イテレータを取得し、取りたいインデックス回だけ++しています。
もっと一発で取れるようなエレガントな書き方はないでしょうか?
std::advance(i,10);
2013/05/31(金) 00:12:31.61
ofs.copyfmt(std::cout);
std::cout.rdbuf(ofs.rdbuf()); とすれば
coutに書き込んだ内容がofsに出力される(リダイレクト)
std::cout.rdbuf(ofs.rdbuf()); とすれば
coutに書き込んだ内容がofsに出力される(リダイレクト)
35デフォルトの名無しさん
2013/05/31(金) 17:41:41.15 C++とC#を混ぜたプログラムの作り方
// hoge49.c 汚いお題のソース
// hoge.cpp
extern "C" int main();
public ref class Hoge { public: static int Submit() { return main(); } };
// foo.cs
class Foo { static void Main() { Hoge.Submit(); }}
cl /c /O1 /MD hoge49.c
cl /clr /LD /O1 hoge.cpp hoge49.obj
mt -manifest hoge.dll.manifest -outputresource:hoge.dll;#2
csc /o foo.cs /r:hoge.dll
// hoge49.c 汚いお題のソース
// hoge.cpp
extern "C" int main();
public ref class Hoge { public: static int Submit() { return main(); } };
// foo.cs
class Foo { static void Main() { Hoge.Submit(); }}
cl /c /O1 /MD hoge49.c
cl /clr /LD /O1 hoge.cpp hoge49.obj
mt -manifest hoge.dll.manifest -outputresource:hoge.dll;#2
csc /o foo.cs /r:hoge.dll
2013/05/31(金) 17:51:58.40
vcはmsvcrt.dll(動的リンク)と
Iibcmt.lib(静的リンク)がもともとあって
前者だけOSに取り込まれたから
Cライブラリ=ランタイムライブラリ
というややこしい図式ができた
Iibcmt.lib(静的リンク)がもともとあって
前者だけOSに取り込まれたから
Cライブラリ=ランタイムライブラリ
というややこしい図式ができた
2013/06/10(月) 22:26:13.55
・Windows Form アプリでドロップダウンリストにチェックボックスを並べる方法
次の3つのクラスを利用
1.チェックボックスを継承したクラス
…2のアイテム要素に、ToolStripControlHost として、3を追加する。
1.のチェック状態がオンに切り替わった時、2を表示させる。
1.のチェック状態がオフに切り替わった時、2を閉じる。チェック状態を文字列として取得。
2.ドロップダウンリスト ToolStripDropDown
…Framework のコンポーネントをそのまま使う。コーディング不要。
3.メニューパネル チェックボックスを並べたパネル
…現在のチェック状態を文字列に変換するメソッド、
文字列を元にしてチェック状態をセットするメソッド
を用意。
検索用ワード: スプリットボタン ドロップダウン チェックボックス
↑
一度やってみたかっただけ
次の3つのクラスを利用
1.チェックボックスを継承したクラス
…2のアイテム要素に、ToolStripControlHost として、3を追加する。
1.のチェック状態がオンに切り替わった時、2を表示させる。
1.のチェック状態がオフに切り替わった時、2を閉じる。チェック状態を文字列として取得。
2.ドロップダウンリスト ToolStripDropDown
…Framework のコンポーネントをそのまま使う。コーディング不要。
3.メニューパネル チェックボックスを並べたパネル
…現在のチェック状態を文字列に変換するメソッド、
文字列を元にしてチェック状態をセットするメソッド
を用意。
検索用ワード: スプリットボタン ドロップダウン チェックボックス
↑
一度やってみたかっただけ
2013/06/12(水) 10:14:10.22
InsertAt の意外な力
配列やコレクション内でのインデックスの指定は、
最後の要素のインデックス(要素の数 - 1 )を超えると例外が発生する。
a = array[5] ' ← array の要素数が 5 の時、例外。
ところが、InsertAt では、最後の要素のインデックス + 1 を指定しても、
例外が発生せずに機能する。
array.InsertAt( "1" , 5 )
これは、ネットで調べてもよい文献が見つからず、
仕様なのかどうか不明だった。
最後のインデックス+1 を指定した場合は、Add と同じ結果になる、
と解釈したが、使用は自己責任で。
' データグリッドビューで選択中の行の下に新しい行を挿入する
i = DataGridView1.SelectedRows(0) ' 選択中の行のインデックス
DataGridView1.Rows.Insert(i + 1, newRow) ' 最下行を選択していた場合、さらに下の行に追加される。
最下行を選択している場合を分けて、Add を呼ぶ必要がない。
配列やコレクション内でのインデックスの指定は、
最後の要素のインデックス(要素の数 - 1 )を超えると例外が発生する。
a = array[5] ' ← array の要素数が 5 の時、例外。
ところが、InsertAt では、最後の要素のインデックス + 1 を指定しても、
例外が発生せずに機能する。
array.InsertAt( "1" , 5 )
これは、ネットで調べてもよい文献が見つからず、
仕様なのかどうか不明だった。
最後のインデックス+1 を指定した場合は、Add と同じ結果になる、
と解釈したが、使用は自己責任で。
' データグリッドビューで選択中の行の下に新しい行を挿入する
i = DataGridView1.SelectedRows(0) ' 選択中の行のインデックス
DataGridView1.Rows.Insert(i + 1, newRow) ' 最下行を選択していた場合、さらに下の行に追加される。
最下行を選択している場合を分けて、Add を呼ぶ必要がない。
39デフォルトの名無しさん
2013/06/20(木) 01:43:19.78 /* 0初期化しないvectorの作り方 */
何もしないconstructのアロケーターを
vectorの第二テンプレート引数に渡す
何もしないconstructのアロケーターを
vectorの第二テンプレート引数に渡す
2013/06/20(木) 17:30:39.00
>>39は間違い
2013/06/23(日) 15:27:40.63
2013/07/02(火) NY:AN:NY.AN
//簡単なパスワードクラッカー
#include <stdio.h>
#include <string.h>
bool check(const char *s) { return strcmp(s, "pas") == 0; }
char *func(char ch1, char ch2, int len) {
static char buf[256];
for (int n = 0; n <= len; n++) {
memset(buf, ch1, n); buf[n] = 0;
char *p, *end = &buf[n];
for (;;) {
printf("%s\n", buf);
if (check(buf)) return buf;
p = end - 1;
while (buf <= p && *p == ch2) *p-- = ch1;
if (p < buf) break;
(*p)++; } }
return NULL; }
int main(void) {
char *p = func('a', 'z', 4);
printf("#%s\n", p); return 0; }
#include <stdio.h>
#include <string.h>
bool check(const char *s) { return strcmp(s, "pas") == 0; }
char *func(char ch1, char ch2, int len) {
static char buf[256];
for (int n = 0; n <= len; n++) {
memset(buf, ch1, n); buf[n] = 0;
char *p, *end = &buf[n];
for (;;) {
printf("%s\n", buf);
if (check(buf)) return buf;
p = end - 1;
while (buf <= p && *p == ch2) *p-- = ch1;
if (p < buf) break;
(*p)++; } }
return NULL; }
int main(void) {
char *p = func('a', 'z', 4);
printf("#%s\n", p); return 0; }
2013/07/05(金) NY:AN:NY.AN
.Net で TextBox を透過させる方法
TextBox は、OS による制御が介入するため、簡単に透過できない。
代わりに Label を使ってみよう。
Label はスクロールできない。
そこで、Panel を用意し、Panel の AutoScroll を True にする。
その Panel 内に、Label を追加。
Label の AutoSize を True にしておけば、
文字列内に改行が含まれている場合、自動的に高さも広がる。
TextBox は、OS による制御が介入するため、簡単に透過できない。
代わりに Label を使ってみよう。
Label はスクロールできない。
そこで、Panel を用意し、Panel の AutoScroll を True にする。
その Panel 内に、Label を追加。
Label の AutoSize を True にしておけば、
文字列内に改行が含まれている場合、自動的に高さも広がる。
2013/07/12(金) NY:AN:NY.AN
イベントファクタークラス、というのかな?
イベントの定義を一つのクラスにまとめることってある?
全てのクラス、フォームに通知したいイベント
(各クラスで処理が必要となるイベント)
を一か所にまとめて、適宜、発生させる、という形。
もし無いなら、忘れないうちにメモ。
・イベントファクタークラス
shared イベントを定義し、
またそれらのイベントの raise メソッドを用意しておく。
イベントファクタークラスの使い方は、
各実装クラスでハンドルを実装するのみ。
全てのクラス、フォームにイベントを通知することができる。
イベントを発生させる際は、アプリケーション内の各所で、
イベントファクタークラスの該当する raise メソッドを呼び出す。
これによって、全てのクラスに通知がいく。
各イベントハンドラでは、自身のクラスインスタンスが存在するかどうかを
判断して、必要に応じて、表示されているフォームだけが処理を
行う、なども可能。
一つのイベントにつき、複数のイベントハンドラが実装されている場合、
イベントハンドラの呼び出し順は、制御が難しいため、
(.NET 系言語などでは仕様が公開されていないため)
各実装クラスのイベントハンドラ内で次に起こしたいイベントを
イベントファクタークラス内で別イベントとして定義する形にする。
イベントドリブン系の言語では、常識?
イベントの定義を一つのクラスにまとめることってある?
全てのクラス、フォームに通知したいイベント
(各クラスで処理が必要となるイベント)
を一か所にまとめて、適宜、発生させる、という形。
もし無いなら、忘れないうちにメモ。
・イベントファクタークラス
shared イベントを定義し、
またそれらのイベントの raise メソッドを用意しておく。
イベントファクタークラスの使い方は、
各実装クラスでハンドルを実装するのみ。
全てのクラス、フォームにイベントを通知することができる。
イベントを発生させる際は、アプリケーション内の各所で、
イベントファクタークラスの該当する raise メソッドを呼び出す。
これによって、全てのクラスに通知がいく。
各イベントハンドラでは、自身のクラスインスタンスが存在するかどうかを
判断して、必要に応じて、表示されているフォームだけが処理を
行う、なども可能。
一つのイベントにつき、複数のイベントハンドラが実装されている場合、
イベントハンドラの呼び出し順は、制御が難しいため、
(.NET 系言語などでは仕様が公開されていないため)
各実装クラスのイベントハンドラ内で次に起こしたいイベントを
イベントファクタークラス内で別イベントとして定義する形にする。
イベントドリブン系の言語では、常識?
2013/07/12(金) NY:AN:NY.AN
古いリソースコンパイラでマニフェストを含む
リソースファイルをコンパイルするときは
#define MANIFEST 24
としておく。
リソースファイルをコンパイルするときは
#define MANIFEST 24
としておく。
46デフォルトの名無しさん
2013/08/26(月) NY:AN:NY.AN 関数型プログラミングにおけるクイックソート・アルゴリズムの実装
www.h6.dion.ne.jp/~machan/misc/qsort-in-fp.html
www.h6.dion.ne.jp/~machan/misc/qsort-in-fp.html
2013/08/26(月) NY:AN:NY.AN
>>46
宣伝してんじゃねーよ
宣伝してんじゃねーよ
2013/09/09(月) 00:59:48.47
C++コンパイル高速化と隠ぺい
// my_class.h
class my_class {
// ... all public and protected stuff goes here ...
private:
class impl; unique_ptr<impl> pimpl; // opaque type here
};
// my_class.cpp
class my_class::impl { // defined privately here
// ... all private data and functions: all of these
// can now change without recompiling callers ...
};
my_class::my_class(): pimpl( new impl )
{
// ... set impl values ...
}
// my_class.h
class my_class {
// ... all public and protected stuff goes here ...
private:
class impl; unique_ptr<impl> pimpl; // opaque type here
};
// my_class.cpp
class my_class::impl { // defined privately here
// ... all private data and functions: all of these
// can now change without recompiling callers ...
};
my_class::my_class(): pimpl( new impl )
{
// ... set impl values ...
}
49デフォルトの名無しさん
2013/09/28(土) 00:46:08.13 MSDNでこんなURLよくあるよね:
http://msdn.microsoft.com/ja-jp/library/aa384249(v=vs.85).aspx
丸カッコと等号のせいでうまくリンクされないことがあるが、実は丸カッコとその中身は消してもいい。
http://msdn.microsoft.com/ja-jp/library/aa384249(v=vs.85).aspx
丸カッコと等号のせいでうまくリンクされないことがあるが、実は丸カッコとその中身は消してもいい。
50デフォルトの名無しさん
2013/11/07(木) 01:06:27.45 gcc/g++を使う初心者に忠告:
コマンドラインに-Wall -pedanticを付けると勉強になる。
コマンドラインに-Wall -pedanticを付けると勉強になる。
2013/11/09(土) 09:44:01.98
VBAでOptionボタンの分岐
Select Case True
case Option1(0): a=1
case Option1(1): a=5
case Option1(2): a=9
End Select
Select Case True
case Option1(0): a=1
case Option1(1): a=5
case Option1(2): a=9
End Select
2013/11/09(土) 09:58:41.22
VB Select Caseは多機能
http://homepage1.nifty.com/rucio/main/technique/Select.htm
http://homepage1.nifty.com/rucio/main/technique/Select.htm
2013/12/08(日) 01:08:35.54
vb.netなんて負馬に乗りたがるアホの気が知れない
54デフォルトの名無しさん
2014/01/19(日) 11:26:20.91 受験の裏技:
教員用教科書(指導書)は生徒や保護者でも購入できる。
教員用教科書(指導書)は生徒や保護者でも購入できる。
2014/01/19(日) 11:38:54.01
塾に行く暇のない、忙しいセレブのお子さん達は、親に買ってもらった指導書で
勉強して成績上位をキープしたのであった。
勉強して成績上位をキープしたのであった。
2014/01/21(火) 18:47:28.34
赤ちゃんは強く揺さぶってはいけない。
頭の血管が切れて揺さぶられ症候群になってしまうから。
頭の血管が切れて揺さぶられ症候群になってしまうから。
57片山博文MZ無能 ◆T6xkBnTXz7B0
2014/03/01(土) 20:03:01.16 【gccやg++でアプリをプロファイルする方法】
自分のプログラムをプロファイルすることで、時間がかかっている関数などが確認できます。
gccやg++では無料でプロファイルができます。実行速度の最適化に活用しましょう。
1.gccやg++のコマンドラインに-pgを付けてコンパイル&リンクする
2.できたプログラムを実行するとgmon.outというファイルができる。
3.gprof (プログラムファイル名).exe gmon.out > gmon.logを実行するとgmon.logというファイルができる。
4.gmon.logをテキストエディタなどで開いてプロファイル結果を確認する。
自分のプログラムをプロファイルすることで、時間がかかっている関数などが確認できます。
gccやg++では無料でプロファイルができます。実行速度の最適化に活用しましょう。
1.gccやg++のコマンドラインに-pgを付けてコンパイル&リンクする
2.できたプログラムを実行するとgmon.outというファイルができる。
3.gprof (プログラムファイル名).exe gmon.out > gmon.logを実行するとgmon.logというファイルができる。
4.gmon.logをテキストエディタなどで開いてプロファイル結果を確認する。
58片山博文MZジェバンニ ◆T6xkBnTXz7B0
2014/03/19(水) 11:53:52.69ID:r4sbPf4p // スマートポインタshared_ptrの使い方:
#if (__cplusplus >= 201103L) // C++11
#include <memory>
using std::shared_ptr;
using std::static_pointer_cast;
using std::make_shared;
#else // Boost
#include <boost/shared_ptr.hpp>
#include <boost/make_shared.hpp>
using boost::shared_ptr;
using boost::static_pointer_cast;
using boost::make_shared;
#endif
後は、g++/clangの場合はコマンドラインに-std=c++11をつける。
古いコンパイラの場合は、Boostをインストールしてインクルードパスに
「C:\local\boost_1_55_0」みたいなパスを追加する。
#if (__cplusplus >= 201103L) // C++11
#include <memory>
using std::shared_ptr;
using std::static_pointer_cast;
using std::make_shared;
#else // Boost
#include <boost/shared_ptr.hpp>
#include <boost/make_shared.hpp>
using boost::shared_ptr;
using boost::static_pointer_cast;
using boost::make_shared;
#endif
後は、g++/clangの場合はコマンドラインに-std=c++11をつける。
古いコンパイラの場合は、Boostをインストールしてインクルードパスに
「C:\local\boost_1_55_0」みたいなパスを追加する。
59デフォルトの名無しさん
2014/04/03(木) 00:13:37.19ID:sk+nDb/g 一般に割り算は掛け算より遅い。可能ならば割り算を掛け算に直したりして割り算の回数を減らす方が速い。
x / 2 → x * 0.5
x / y / z → x / (y * z)
x / 2 → x * 0.5
x / y / z → x / (y * z)
2014/04/03(木) 00:43:09.47ID:sk+nDb/g
2014/04/03(木) 07:52:11.34ID:g8xJLniI
>>50みたいなのは、まずググってみて破壊的なコマンドじゃない事を確認してから実行する
62片山博文MZジェバンニ ◆T6xkBnTXz7B0
2014/04/05(土) 01:19:22.40ID:kCbCwa1D 多くのコンパイル単位から参照されるinline関数の中にstatic変数があると、
変数の実体がいくつも作成されるので注意する。
変数の実体がいくつも作成されるので注意する。
2014/04/07(月) 13:24:56.96ID:R2xTxix2
>>62
それは違ってない?
それは違ってない?
2014/04/07(月) 13:31:19.33ID:R2xTxix2
http://pic.dhe.ibm.com/infocenter/lnxpcomp/v121v141/index.jsp?topic=%2Fcom.ibm.xlcpp121.linux.doc%2Flanguage_ref%2Fcplr243.html
> インライン関数は外部リンケージを持っているものとして処理されるので、インライン関数の
> 本体で定義されるすべての静的ローカル変数またはストリング・リテラルは、変換単位を
> またがって同じオブジェクトとして処理されます。
> インライン関数は外部リンケージを持っているものとして処理されるので、インライン関数の
> 本体で定義されるすべての静的ローカル変数またはストリング・リテラルは、変換単位を
> またがって同じオブジェクトとして処理されます。
65片山博文MZジェバンニ ◆T6xkBnTXz7B0
2014/04/07(月) 14:16:30.42ID:nfj7Xkns66デフォルトの名無しさん
2014/04/07(月) 21:17:19.08ID:cPHU7Y9F 【リポジトリをローカルにコピーする】
git clone https://...
【ファイルかフォルダを次のコミット対象にする】
git add ファイルかフォルダ
【ファイルかフォルダを削除する】
git rm ファイルかフォルダ
【コミットする】
git commit -m "短いメッセージ"
【ファイルかフォルダを直前のコミット状態に戻す】
git checkout ファイルかフォルダ
【コミット状態をアップロードする】
git push origin master
git clone https://...
【ファイルかフォルダを次のコミット対象にする】
git add ファイルかフォルダ
【ファイルかフォルダを削除する】
git rm ファイルかフォルダ
【コミットする】
git commit -m "短いメッセージ"
【ファイルかフォルダを直前のコミット状態に戻す】
git checkout ファイルかフォルダ
【コミット状態をアップロードする】
git push origin master
67デフォルトの名無しさん
2014/04/23(水) 02:20:25.73ID:Be8/NqvO 【ソフトウェア開発7つ道具】
1.IDE/デバッガ
2.リファレンス
3.エディタ
4.Git/SVN
5.Wiki
6.diff/patch
7.仮想マシン
1.IDE/デバッガ
2.リファレンス
3.エディタ
4.Git/SVN
5.Wiki
6.diff/patch
7.仮想マシン
2014/04/23(水) 02:23:51.82ID:Be8/NqvO
5.Wiki/データベース
2014/04/23(水) 02:26:16.11ID:Be8/NqvO
2.リファレンス/マニュアル
70デフォルトの名無しさん
2014/04/28(月) 22:04:58.58ID:nYC6TNjH 企業の事業計画には数学とプログラミングの知識が不可欠である。
71デフォルトの名無しさん
2014/05/01(木) 19:27:41.27ID:O61PxCRM 「インターネット(Amazon)で本を買う方法」
0.自分のメルアドがなければ取得する(Gmailがオススメ)。
1.コンビニで端末を操作してAmazonギフト券を買う。分からないときは店員に訊く。
2.インターネットでAmazonを開き、ほしい本を検索してその本のページを見つける。
3.必要事項を入力して購入手続きを行う。
0.自分のメルアドがなければ取得する(Gmailがオススメ)。
1.コンビニで端末を操作してAmazonギフト券を買う。分からないときは店員に訊く。
2.インターネットでAmazonを開き、ほしい本を検索してその本のページを見つける。
3.必要事項を入力して購入手続きを行う。
2014/05/01(木) 22:51:53.92ID:6V5avLId
オペレーションリサーチって数学に含まれるのか?
73デフォルトの名無しさん
2014/05/02(金) 00:47:14.57ID:NtSo2uBW ORと言えば鳩山由紀夫が
74デフォルトの名無しさん
2014/05/12(月) 23:39:52.21ID:hIlNhllH 【C/C++デバッグ&テストにassert文を使おう】
C言語では<assert.h>を、C++では<cassert>を#includeすればassert文が使えるようになる。
使い方:assert(条件式);
デバッグ版の場合、実行時に評価された条件式がゼロ(or false)ならば、assert失敗になり、
このときプログラム状態が異常と見なされて、位置情報を含むメッセージが出てプログラムが中断する。
この機能により、デバッグ版で実行するだけで多数のテストを一気に済ませることができる。
デバッガを使えば、assertが失敗したときに詳細なデバッギングを開始でき、原因を探ることができる。
C言語では<assert.h>を、C++では<cassert>を#includeすればassert文が使えるようになる。
使い方:assert(条件式);
デバッグ版の場合、実行時に評価された条件式がゼロ(or false)ならば、assert失敗になり、
このときプログラム状態が異常と見なされて、位置情報を含むメッセージが出てプログラムが中断する。
この機能により、デバッグ版で実行するだけで多数のテストを一気に済ませることができる。
デバッガを使えば、assertが失敗したときに詳細なデバッギングを開始でき、原因を探ることができる。
75デフォルトの名無しさん
2014/05/18(日) 18:40:20.49ID:wTsBQBni ブログ=blog≒Web log=Webの記録。
logは元々は丸太という意味で(ログハウスのログ)、航海記録に丸太を使ったのが起源とされる。
logは元々は丸太という意味で(ログハウスのログ)、航海記録に丸太を使ったのが起源とされる。
2014/06/12(木) 20:44:09.98ID:HVN4f7gN
【誰でもできるサイトの作り方】
1.ドメインかサブドメインを取得(レンタルサーバーも可)。
2.HTMLや画像ファイルなどのデータファイルをFTPソフト(FFFTPなど)でアップロード。
3.Googleなどの検索エンジンに登録。
1.ドメインかサブドメインを取得(レンタルサーバーも可)。
2.HTMLや画像ファイルなどのデータファイルをFTPソフト(FFFTPなど)でアップロード。
3.Googleなどの検索エンジンに登録。
77デフォルトの名無しさん
2014/09/07(日) 00:00:03.30ID:dQrAI00B 【PC基本操作】
Alt+Tab ウィンドウ切り替え
Ctrl+C コピー
Ctrl+V 貼り付け
Ctrl+X 切り取り
Del 削除
Esc キャンセル
Enter OK
Ctrl+S 上書き保存
Alt+F4 ウィンドウを閉じる
Win スタート
Win+L ロック
Win+D ウィンドウをすべて最小化してデスクトップ表示
Alt+Tab ウィンドウ切り替え
Ctrl+C コピー
Ctrl+V 貼り付け
Ctrl+X 切り取り
Del 削除
Esc キャンセル
Enter OK
Ctrl+S 上書き保存
Alt+F4 ウィンドウを閉じる
Win スタート
Win+L ロック
Win+D ウィンドウをすべて最小化してデスクトップ表示
78デフォルトの名無しさん
2014/09/28(日) 22:54:48.44ID:uLb79luw 【ネタをニュースに載せて話題にする方法】
1.ニュース記事をホームページに書く(※新規性が大事)。
2.ニュース速報板にスレ立て依頼をする。または、記事をVIP板で話題にする。
3.スレが立ったらあらかじめ用意したシナリオと人海戦術でなるべく場を盛り上げる。
4.そのスレをまとめサイトに掲載したり、はてなブックマークに記録したりする。
1.ニュース記事をホームページに書く(※新規性が大事)。
2.ニュース速報板にスレ立て依頼をする。または、記事をVIP板で話題にする。
3.スレが立ったらあらかじめ用意したシナリオと人海戦術でなるべく場を盛り上げる。
4.そのスレをまとめサイトに掲載したり、はてなブックマークに記録したりする。
2014/09/28(日) 23:09:27.74ID:uLb79luw
間違いがあったら指摘して下さい
2014/10/18(土) 20:42:12.96ID:dP8hne6b
>>79
板
板
81片山博文MZ ◆T6xkBnTXz7B0
2014/12/10(水) 00:27:59.54ID:X4ZXIzIa 【余りの計算を高速化する】
十進法において、偶数は下一桁が必ず偶数になる。
奇数は下一桁が必ず奇数になる。これは10 mod 2≡0という合同式の性質から導かれる。
10 mod 3≡1であるから、ある自然数Xを3で割ったときの余りは、
Xの各ケタを足しあわせたものを3で割ったときの余りに等しい。
このように余りの計算は合同式の性質により高速化が可能になることがある。
十進法において、偶数は下一桁が必ず偶数になる。
奇数は下一桁が必ず奇数になる。これは10 mod 2≡0という合同式の性質から導かれる。
10 mod 3≡1であるから、ある自然数Xを3で割ったときの余りは、
Xの各ケタを足しあわせたものを3で割ったときの余りに等しい。
このように余りの計算は合同式の性質により高速化が可能になることがある。
82片山博文MZ ◆T6xkBnTXz7B0
2014/12/10(水) 00:49:44.99ID:X4ZXIzIa mod 1, mod 2, mod 3, mod 5, mod 9, mod 10, mod 11のときは明らかに高速化できるね。mod (10の倍数)も自明。
mod 4, mod 8はケタを2で掛ける計算が必要。
mod 6は、4で。mod 7は、3で。
mod 4, mod 8はケタを2で掛ける計算が必要。
mod 6は、4で。mod 7は、3で。
2014/12/10(水) 00:53:36.42ID:X4ZXIzIa
×mod (10の倍数)も自明
2014/12/10(水) 21:19:23.96ID:+onBPWUl
85片山博文MZ ◆T6xkBnTXz7B0
2014/12/27(土) 19:47:43.18ID:Cc0RXd7d 【Makefileを書いてみよう】
makeコマンドは、Makefileというファイルに書かれたルールに従って、ファイル作成やビルドを支援する。詳しくは「man make」を参照。
ルールは次のように記述する。
変数1=値1
変数2=値2
...
# ルール1
ターゲットファイル: 作成に必要なファイル
<TAB>作成するためのコマンドライン1
<TAB>作成するためのコマンドライン2
<TAB>...
# ルール2
...
ここに、$(変数1)は「値1」に展開される。また、ある行においてシャープ(#)以降は一行コメントとなる。
ターゲットファイルを更新するかどうかは、必要なファイルの更新日時と比較して決定される。
Makefileは、IDEに頼らずにビルドを行う方法として覚えておきたい。
makeコマンドは、Makefileというファイルに書かれたルールに従って、ファイル作成やビルドを支援する。詳しくは「man make」を参照。
ルールは次のように記述する。
変数1=値1
変数2=値2
...
# ルール1
ターゲットファイル: 作成に必要なファイル
<TAB>作成するためのコマンドライン1
<TAB>作成するためのコマンドライン2
<TAB>...
# ルール2
...
ここに、$(変数1)は「値1」に展開される。また、ある行においてシャープ(#)以降は一行コメントとなる。
ターゲットファイルを更新するかどうかは、必要なファイルの更新日時と比較して決定される。
Makefileは、IDEに頼らずにビルドを行う方法として覚えておきたい。
86片山博文MZ ◆T6xkBnTXz7B0
2015/02/19(木) 20:58:29.89ID:XXveEoOV 【C/C++のコンパイル時間短縮】
結合度の高いモジュールは、仕様を早いうちに決めてなるべく変更しない。
中規模以上では、モジュールの仕様が定まったら、ヘッダーとソースに分け、分割コンパイルする。
ソースファイルが三つ以上なら、プリコンパイル済みヘッダーを使う。
同じような処理は関数やクラスにまとめて再利用する。
モジュール強度の高いモジュールをまとめる。
pImplイディオムを使う。
結合度の高いモジュールは、仕様を早いうちに決めてなるべく変更しない。
中規模以上では、モジュールの仕様が定まったら、ヘッダーとソースに分け、分割コンパイルする。
ソースファイルが三つ以上なら、プリコンパイル済みヘッダーを使う。
同じような処理は関数やクラスにまとめて再利用する。
モジュール強度の高いモジュールをまとめる。
pImplイディオムを使う。
87片山博文MZ ◆T6xkBnTXz7B0
2015/06/19(金) 23:51:33.10ID:0f7L9Mo9 【差分パッチを作る】
diff -Nru (古) (新) > my.patch
※最後に冗長な/などを付けないこと。
【パッチをあてる】
cd (新)
patch -p1 < my.patch
diff -Nru (古) (新) > my.patch
※最後に冗長な/などを付けないこと。
【パッチをあてる】
cd (新)
patch -p1 < my.patch
88片山博文MZ ◆T6xkBnTXz7B0
2015/06/27(土) 20:55:56.62ID:JmAIGVSo giflibの関数EGifSpewが、成功するとgifオブジェクトは閉じられているが、
失敗すると閉じたか閉じていないか、わからない。
処理が失敗したときもメモリーリークしないように作って欲しい。
失敗すると閉じたか閉じていないか、わからない。
処理が失敗したときもメモリーリークしないように作って欲しい。
89片山博文MZ ◆T6xkBnTXz7B0
2015/07/17(金) 20:25:57.34ID:Ifv8D+/7 【C/C++】
この構文、結構便利だ。gotoを使わずに済む。
do {
if (...) break;
if (...) break;
...
} while (0);
この構文、結構便利だ。gotoを使わずに済む。
do {
if (...) break;
if (...) break;
...
} while (0);
2015/07/21(火) 14:02:22.88ID:/4VVbVfg
【日本人にとって韓国のインターネットは危険】
あなたがK-POPファンであっても、韓国のインターネットを
見るのはやめた方がいい。韓国は、名前の知られた財閥企業の
ホームページにも堂々とウイルスが仕掛けられているほど、
ウイルスが蔓延している。韓国のウェブサイトは無法地帯だから、
日本人が閲覧していると判断すると、攻撃を仕掛けてくるかもしれない。
あなたがK-POPファンであっても、韓国のインターネットを
見るのはやめた方がいい。韓国は、名前の知られた財閥企業の
ホームページにも堂々とウイルスが仕掛けられているほど、
ウイルスが蔓延している。韓国のウェブサイトは無法地帯だから、
日本人が閲覧していると判断すると、攻撃を仕掛けてくるかもしれない。
91片山博文MZ ◆T6xkBnTXz7B0
2015/08/06(木) 16:22:03.56ID:4xD13DN7 【パッケージマネージャaptまとめ】
パッケージ検索:apt-cache search (文字列)
パッケージインストール(権限が必要):apt-get install (パッケージ名)
パッケージの削除:apt-get remove (パッケージ名)
ソース入手:apt-get source (パッケージ名)
パッケージ検索:apt-cache search (文字列)
パッケージインストール(権限が必要):apt-get install (パッケージ名)
パッケージの削除:apt-get remove (パッケージ名)
ソース入手:apt-get source (パッケージ名)
92片山博文MZ ◆T6xkBnTXz7B0
2015/10/23(金) 12:27:31.45ID:/zhY2mEN 不正なデータが含まれていない世界では、データ整合性チェックが省けて処理が早くできるはず。
93片山博文MZ ◆T6xkBnTXz7B0
2015/11/02(月) 19:09:42.10ID:N6XDKRqL 【パッケージ管理について】
最近のソフトウェア開発においては、パッケージ管理の標準化と省力化が重要になってきている。
Ubuntuではapt-getが使え、Visual StudioではNuGetが、MSYS2ではpacmanが
パッケージマネージャーとして採用されている。
いちいちライブラリーのソースをダウンロードしてコンパイルするのは、
時代遅れになるかも知れない。
最近のソフトウェア開発においては、パッケージ管理の標準化と省力化が重要になってきている。
Ubuntuではapt-getが使え、Visual StudioではNuGetが、MSYS2ではpacmanが
パッケージマネージャーとして採用されている。
いちいちライブラリーのソースをダウンロードしてコンパイルするのは、
時代遅れになるかも知れない。
94片山博文MZ ◆T6xkBnTXz7B0
2015/11/02(月) 19:55:39.16ID:N6XDKRqL 他のパッケージ管理システムとしては、RubyにはRubyGemsがあり、D言語にはdubが、
Mac OS XにはMacPortsやHomeBrewが、その他のLinuxにはyumがある。
Mac OS XにはMacPortsやHomeBrewが、その他のLinuxにはyumがある。
95片山博文MZ ◆T6xkBnTXz7B0
2015/11/02(月) 20:00:28.60ID:N6XDKRqL 自作のライブラリーのシェアを高めたいと考えているなら、
それをパッケージ化してこうしたパッケージ管理システムに登録するのも良いだろう。
それをパッケージ化してこうしたパッケージ管理システムに登録するのも良いだろう。
2015/11/03(火) 09:03:30.56ID:qMKmSapR
片山ウザい
97片山博文MZ ◆T6xkBnTXz7B0
2015/11/11(水) 20:12:09.25ID:Fj5jRqmp 複数のstd::mutexを使う場合、lockの後にunlockを呼ばないといけないのは
当たり前だが、lockの順序を間違うとデッドロックになることがある。
当たり前だが、lockの順序を間違うとデッドロックになることがある。
98片山博文MZ ◆T6xkBnTXz7B0
2015/11/25(水) 21:55:37.53ID:WGqqylpJ 64ビットUbuntuは開発環境としてはイケてない。パッケージマネージャがダメ。他探せ。
99片山博文MZ ◆T6xkBnTXz7B0
2015/11/28(土) 14:15:01.67ID:7rFxET1r GCCでデバッグ情報つきでコンパイルする (-gオプション)
$ gcc -g hoge.c -o hoge
コアダンプを出力する設定 (ulimitコマンド)
$ ulimit -c unlimited
GDBでコアダンプの解析
$ gdb hoge core
おもなGDBのコマンド
backtrace : 関数の呼び出し順表示 短縮形は bt
frame n : backtraceで表示された関数のn番目に移動
info locals : ローカル変数の一覧表示
info args : 引数の一覧表示
print var : 変数varの値表示
directory : ソースのディレクトリを指定
http://d.hatena.ne.jp/licheng/
$ gcc -g hoge.c -o hoge
コアダンプを出力する設定 (ulimitコマンド)
$ ulimit -c unlimited
GDBでコアダンプの解析
$ gdb hoge core
おもなGDBのコマンド
backtrace : 関数の呼び出し順表示 短縮形は bt
frame n : backtraceで表示された関数のn番目に移動
info locals : ローカル変数の一覧表示
info args : 引数の一覧表示
print var : 変数varの値表示
directory : ソースのディレクトリを指定
http://d.hatena.ne.jp/licheng/
100片山博文MZ ◆T6xkBnTXz7B0
2016/01/17(日) 20:22:46.64ID:uhuIV1e8 価値あるデータの自動生成は、無から価値を産み出す美味しいビジネスになる。
101片山博文MZ ◆T6xkBnTXz7B0
2016/01/17(日) 20:29:38.29ID:uhuIV1e8 >>98は撤回させて下さい。
apt-getでCPUを指定する方法をしらなかった。
apt-getでCPUを指定する方法をしらなかった。
102片山博文MZ ◆T6xkBnTXz7B0
2016/02/22(月) 01:57:34.60ID:C/gFN+RL 【プロジェクト作成にCMakeを使おう】
プロジェクトやMakefileを作成するための便利なツール、CMakeを使おう。
CMakeはさまざまな環境で動作するクロスプラットフォームなツールだ。
使い方はまず、プロジェクト設定のためのCMakeList.txtファイルを作成する。
「CMakeList.txt 書き方」で検索してみてくれ。
次にcmake . && makeだ。cmakeはプロジェクトファイルやMakefileを作成する。
cmakeの実行方法がわからないときはcmake-guiを代わりに使おう。
プロジェクトやMakefileを作成するための便利なツール、CMakeを使おう。
CMakeはさまざまな環境で動作するクロスプラットフォームなツールだ。
使い方はまず、プロジェクト設定のためのCMakeList.txtファイルを作成する。
「CMakeList.txt 書き方」で検索してみてくれ。
次にcmake . && makeだ。cmakeはプロジェクトファイルやMakefileを作成する。
cmakeの実行方法がわからないときはcmake-guiを代わりに使おう。
103デフォルトの名無しさん
2016/02/22(月) 01:59:35.23ID:C/gFN+RL104片山博文MZ ◆T6xkBnTXz7B0
2016/02/22(月) 02:27:22.49ID:C/gFN+RL 【CMakeのここがスゴい!】
☆最小限の記述でOK。いちいちMakefileを書く手間を省ける。
☆ビルドはマルチスレッド対応。
☆ヘッダーの依存関係を自動的に読み取る。
☆WindowsでもLinuxでもMacでも動作。
☆さまざまなバージョンのVisual Studio、Makefileなど、多数の開発環境に対応。
☆最小限の記述でOK。いちいちMakefileを書く手間を省ける。
☆ビルドはマルチスレッド対応。
☆ヘッダーの依存関係を自動的に読み取る。
☆WindowsでもLinuxでもMacでも動作。
☆さまざまなバージョンのVisual Studio、Makefileなど、多数の開発環境に対応。
105片山博文MZ ◆T6xkBnTXz7B0
2016/02/26(金) 14:47:20.21ID:5FBVx/js MSYS2における正しいパッケージの更新方法
http://qiita.com/k-takata/items/373ec7f23d5d7541f982
>MSYS2のpacmanを使ってパッケージを更新する場合、正しい手順を踏まないとパッケージが正常に更新できない場合があります。
http://qiita.com/k-takata/items/373ec7f23d5d7541f982
>MSYS2のpacmanを使ってパッケージを更新する場合、正しい手順を踏まないとパッケージが正常に更新できない場合があります。
106片山博文MZ ◆T6xkBnTXz7B0
2016/03/05(土) 23:54:19.25ID:niBmwPNn 【Gitで不要ファイル削除】
.gitignore で無視するように指定されているファイルを削除するコマンドは
「git clean -X -f」
である。
.gitignore で無視するように指定されているファイルを削除するコマンドは
「git clean -X -f」
である。
107片山博文MZ ◆T6xkBnTXz7B0
2016/03/08(火) 21:54:18.53ID:dCW2/Xzy コマンドプロンプトで「start .」を入力すると、
現在のフォルダが開かれる。
現在のフォルダが開かれる。
109片山博文MZ ◆T6xkBnTXz7B0
2016/03/13(日) 00:01:32.06ID:u6dP9Emt Linux MintのWebサイトが改ざんされ、ウイルスを配布していたという事件が
あったらしい。何者かがフリーソフトウェア、オープンソースに対する妨害活動を
行っているらしい。どこの企業とは言わないが。
あったらしい。何者かがフリーソフトウェア、オープンソースに対する妨害活動を
行っているらしい。どこの企業とは言わないが。
110片山博文MZ ◆T6xkBnTXz7B0
2016/04/01(金) 01:39:52.05ID:cbPhNKwQ ハンバーガーアイコンは、合同記号「≡」で表示できる。
111片山博文MZ ◆T6xkBnTXz7B0
2016/04/04(月) 20:53:35.14ID:IQfIiZrc 【clang-formatでC/C++ソースを整形しよう】
自分の好みではないコーディングスタイルのソースを
clang-formatというツール(Clangパッケージに含まれている)できれいに整形できる。
ソースをGoogleスタイルにしたい場合は、
$ clang-format -i --style=google *.cpp *.h
でOK。-iを付けると上書きされる。ただし
Googleスタイルの整形は#includeの順番を入れ替えるので注意が必要だ。
整形の前に必ずコピーバックアップしておこう。
自分の好みではないコーディングスタイルのソースを
clang-formatというツール(Clangパッケージに含まれている)できれいに整形できる。
ソースをGoogleスタイルにしたい場合は、
$ clang-format -i --style=google *.cpp *.h
でOK。-iを付けると上書きされる。ただし
Googleスタイルの整形は#includeの順番を入れ替えるので注意が必要だ。
整形の前に必ずコピーバックアップしておこう。
112デフォルトの名無しさん
2016/04/04(月) 21:02:52.57ID:n+E9DRML 良スレかと思ったが微妙なネタばかりだね
113片山博文MZ ◆T6xkBnTXz7B0
2016/04/25(月) 00:19:45.17ID:9Ydy9Lbh 【C++のライブラリをヘッダーだけにする】
もう.cppファイルの付いたライブラリは要らない?
定義を何もかもヘッダーに移して.cppファイルのコンパイルを減らそう。
やり方。
☆ 短い関数定義→インライン化。
☆ 長い関数定義→テンプレート関数にする。
☆ グローバル変数→インライン関数内のstatic変数への参照で代用。
☆ 定数→static const変数かマクロ定数かenumにする。
もう.cppファイルの付いたライブラリは要らない?
定義を何もかもヘッダーに移して.cppファイルのコンパイルを減らそう。
やり方。
☆ 短い関数定義→インライン化。
☆ 長い関数定義→テンプレート関数にする。
☆ グローバル変数→インライン関数内のstatic変数への参照で代用。
☆ 定数→static const変数かマクロ定数かenumにする。
114片山博文MZ ◆T6xkBnTXz7B0
2016/05/05(木) 00:33:28.45ID:Oq7RlKiI 【C/C++のスゴいライブラリー】
C/C++の役に立つ、実際に大いに役立っている素晴らしいライブラリーの
リストがここにある。
https://github.com/fffaraz/awesome-cpp
ソフトウェア開発の参考にしてね。
C/C++の役に立つ、実際に大いに役立っている素晴らしいライブラリーの
リストがここにある。
https://github.com/fffaraz/awesome-cpp
ソフトウェア開発の参考にしてね。
115デフォルトの名無しさん
2016/05/05(木) 04:15:50.22ID:4MuIXLBx116片山博文MZ ◆T6xkBnTXz7B0
2016/07/09(土) 06:33:01.30ID:Mz5tnssE 昔は……開発環境にお金を払わないとプログラマになれなかった。
今は……開発環境・マニュアルが無料でダウンロードできて誰でもプログラマになれるようになった。
ホントに恵まれてるね。
今は……開発環境・マニュアルが無料でダウンロードできて誰でもプログラマになれるようになった。
ホントに恵まれてるね。
117片山博文MZ ◆T6xkBnTXz7B0
2016/07/09(土) 20:51:20.86ID:Mz5tnssE 配列をインデックスで逆向きに処理する?
int a[9];
for (int i = 8; i >= 0; i--) a[i]...
それはstd::rbegin, std::rendでスマートに書き換えられるよ!
auto rend = std::rend(a);
for (auto it = std::rbegin(a); it != rend; ++it) *it...
int a[9];
for (int i = 8; i >= 0; i--) a[i]...
それはstd::rbegin, std::rendでスマートに書き換えられるよ!
auto rend = std::rend(a);
for (auto it = std::rbegin(a); it != rend; ++it) *it...
118デフォルトの名無しさん
2016/07/09(土) 20:58:56.18ID:KCNMgxTc i==0で i--はエラー
119片山博文MZ ◆T6xkBnTXz7B0
2016/07/09(土) 21:03:40.18ID:Mz5tnssE Boostはもっとスマートだよ。
#include <boost/range/adaptor/reversed.hpp>
for (auto i : boost::adaptors::reverse(a))
std::cout << i << std::endl;
#include <boost/range/adaptor/reversed.hpp>
for (auto i : boost::adaptors::reverse(a))
std::cout << i << std::endl;
120片山博文MZ ◆T6xkBnTXz7B0
2016/07/09(土) 21:07:41.44ID:Mz5tnssE >>118
int型なのでセーフ。このときC++では例外や実行時エラーは発生しない。
int型なのでセーフ。このときC++では例外や実行時エラーは発生しない。
121デフォルトの名無しさん
2016/07/09(土) 21:30:51.48ID:whD12s8T #define n (10)
int a[n];
for (size_t i=n; i>0; ) {
--i;
a[i] = ...;
}
逆順ならいつもこうしてるわ負の値などそもそも要らんのだよ
ループの終わりに固定されるforの第3項の存在は忘れたほうがいい
int a[n];
for (size_t i=n; i>0; ) {
--i;
a[i] = ...;
}
逆順ならいつもこうしてるわ負の値などそもそも要らんのだよ
ループの終わりに固定されるforの第3項の存在は忘れたほうがいい
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 男女2人死亡の赤坂・個室サウナ火災、非常ボタン押された形跡…従業員は煙感知の報知機で気づく [蚤の市★]
- 中国国防省が再反論 SNSで公開した音声とは“別の通報”で日本に訓練の時間や海域を通報したと主張★3 [夜のけいちゃん★]
- 【東京】赤坂サウナ火事2人死亡 サウナ室のドアノブ外れ閉じ込められた可能性 ★7 [nita★]
- れいわ議員「母親はね、子どもを戦争に行かせるために産んだんじゃないんだよ」 高市総理に“10秒回答”迫り、残り5分は“独壇場”★2 [♪♪♪★]
- BreakingDown選手がくも膜下出血、瓜田純士、平手打ちを行った江口響は「もう格闘技も辞めます。責任取りたいです』とまで言ってきてる」 [muffin★]
- 資さんうどんが「PayPay」の取り扱いを停止 他のキャッシュレス決済は引き続き利用可能 [少考さん★]
