C++テンプレートテクニック / メタヒューリスティクスの数理

今処理中の本すら読み進めているのが追いついていないのに、また買ってしまった。まあなんていうか大丈夫なのかね。本ばっかり買って身に付いてないとか一番痛いからそこだけは注意しないとなあ、とは思うんだけど。 C++テンプレートテクニック作者: επιστημ…

有向グラフの標準データ構造

C++

@sotarok Rubyでちゃかちゃかやった後にC++で実装してみる予定なのでboostのgraphのやつ「使わない」で実装したのをBlogに上げてもらえると助かりま(ry Yasuhisa Yoshida on Twitter: "@sotarok Rubyでちゃかちゃかやった後にC++で実装してみる予定なのでboo…

演算新のオーバーロードとかテンプレートとか

C++

まあ適当に練習がてら。 #include <iostream> #include <string> template <typename _First, typename _Second> class foo_pair { private: _First _first; _Second _second; public: foo_pair(const _First& f, const _Second& s) { _first = f; _second = s;} foo_pair(const foo_pair<_First, _Second>& p) { _first = p.first();</_first,></typename></string></iostream>…

STLは省エネ

C++

前自分の作った queue クラスと、STLコンテナの queue を比較してみたらとんでもない違いがでて、STLすげえなあ、と思いつつ。あ、時間もメモリも1/3くらいだった。 1000万のデータのpush->pop。 % time ./queue_test_1000 after initialize: queue data : 0…

Boost Graph

Boost のグラフ構造を扱うライブラリ.てことで少しさわり中.確かに,頂点リスト,接続辺リスト,走査処理とか自前で実装するのもなんかな,とは思っていたのでちょいちょい使い方を見てる. キモは, graph_traits と adjacency_list によって適度に抽象化…

Gitの使い方メモ

Git

Web+DB Press 50号に載ってるGitの特集がすごくわかりやすかった. で,まあ,ただ読んでると頭に入ってこないから頭に入れたいところだけメモ. git add インデックスに追加する系. インデックスは,次のコミットでコミットする変更を記録したもの. git a…

Django x Python 勉強中 #3 @Django Hackathon Disc.8

モデルの変更をしたら,data.db(sqlite3のデータベースファイル)をいったん削除してから,syncdbをしないとだめだった. データを保持したままmigrationする方法とかはないのかな?

Django x Python 勉強中 #1 @Django Hackathon Disc.8

http://twisted-mind.appspot.com/django-ja-hack-a-thon-disc-8/ adminにログインしたらエラーでた. Exception Type: TemplateSyntaxError Exception Value: Caught an exception while rendering: no such table: django_admin_logもっかいsyncdbしたら直…

Django x Python 勉強中 #2 @Django Hackathon Disc.8

やったー3章おわったよー.4章内容が濃い.読み進め中.

Django x Python 勉強中 #4 @Django Hackathon Disc.8

(昨日かくべきだった!)ユーザ登録以外の機能の大まかなところはできた. キモになるのは,urls.pyだな. モデルつくって,urls.pyでビュー関数指定して,ビュー関数でテンプレートに流す.おおまかな流れがわかったからHackathonは結構収穫だったかな.ま…

コピーコンストラクタとコピー代入演算子の自動生成を抑制する

C++

通常コンパイラが自動生成するコピーコンストラクタと代入演算子を生成させないようにする.Effective C++ 6項. // copyable.cpp #include <iostream> using namespace std; class User { public: User(){} User(const string n, const int a): name(n), age(a) {} ~U</iostream>…

const

C++

const なポインタはどっちがどっちだか混乱するなあ. * の左側に const があるとポインタが指し示すものが const になり,*の右側に const があるとポインタが const になるわけですよね. // const.cpp #include <iostream> int main() { int one = 1; int two = 2; </iostream>…

fork

C

forkさせると、プログラムの流れがどうなるのかいまいちわからん。 // fork.c #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> int main() { pid_t pid[10]; int count = 0; for (; count < 10; count++) { pid[count] = fork(); if (pid[count] < 0) { </unistd.h></sys/wait.h></sys/types.h></stdlib.h></stdio.h>…

exec

execl と execv の違いは引数の渡し方。 // exec.c #include <stdio.h> #include <sys/types.h> #include <unistd.h> int main() { printf("execl:\n"); execl("/bin/cat", "cat", "exec.c", NULL); printf("execv:\n"); char *argv[3] = {"cat", "exec.c", NULL}; execv("/bin/cat", argv); </unistd.h></sys/types.h></stdio.h>…

読了

ふつうのLinuxプログラミング読了した.読了とはいえ,コードあとで書いて確認しよーみたいなところはあったのでそこは後から戻りながら確認する. とりあえずあとでやる: forkとか socket サーバのほう(socket, bind, listen, accept) ふつうのLinuxプログ…

socket クライアント

daytimeに接続. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <sys/types.h> #include <netdb.h> int main() { struct addrinfo info, *res; int sock; FILE *f; char buf[1024]; int err; // ゼロリセット memset(&info, 0, sizeof(struct addrinfo)); // ip…</netdb.h></sys/types.h></sys/socket.h></unistd.h></string.h></stdlib.h></stdio.h>

関数ポインタ

C

#include <stdio.h> void call(void (*f)(const char *), const char *); void print(const char *); void greeting(const char *); int main() { call(print, "sotarok"); call(greeting, "sotarok"); return 0; } void call(void (*f)(), const char *msg) { f(msg)</stdio.h>…

可変長引数

C

printfとかで使われてるあれ。 「...」ってかわいいですね。 #include <stdio.h> #include <stdarg.h> void print_args(int nnum, ...); int main() { print_args(5, 1, 2, 3, 4, 5); return 0; } void print_args(int nnum, ...) { int i = 0, tmp; va_list arg; va_start(arg,</stdarg.h></stdio.h>…

買ってきた。 ひとつはなんか網羅的にUnixプログラミング系の知識をつけたいなーと思ったから。Amazonの評価もよかったし。ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道作者: 青木峰郎出版社/メーカー: ソフトバンククリエ…

FizzBuzz かいてみた (Erlang)

なんかださい。 が、なんかとりあえず覚えたこと使ってみようかと思ったのでヨシとしよう。 -module(fizzbuzz). -export([fizzbuzz/1]). -export([fizzbuzz/2]). fizzbuzz(L) -> fizzbuzz(L, []). fizzbuzz([], R) -> lists:reverse(R); fizzbuzz([X|T], R) …

array_filter と create_function でクイックソート

まーPHP 5.2.x 系以前でこういうことやろうとすると当然create_functionなどというひどいものを使わないといけなかったり。つーか、配列の結合が、+ と array_merge のどっちつかうかは何年PHPつかってても身に付かんな。添字配列と連想配列が一緒くたに扱わ…

クラステンプレート

C++

#include <iostream> using namespace std; struct point { int x; int y; }; template<typename T>class base { private: T data; public: base(T); void set_data(T); T get_data(); }; template<typename T> base<T>::base(T d) { data = d; } template<typename T> void base<T>::set_data(T d) { data = d; }</t></typename></t></typename></typename></iostream>…

filter と lambda をつかったクイックソート

リスト内包を使わない場合以下のようなかんじか? #!/usr/bin/env python # -*- coding: utf-8 -*- def qsort(list): if len(list) == 0: return [] pivot = list.pop() return qsort(filter(lambda x: x < pivot, list)) + [pivot] + qsort(filter(lambda x…

リスト内包をつかったクイックソート Python編

#!/usr/bin/env python # -*- coding: utf-8 -*- def qsort(list): if len(list) == 0: return [] pivot = list.pop() return qsort([x for x in list if x < pivot]) + [pivot] + qsort([x for x in list if x >= pivot]) def main(): test_list = [2, 5, 3…

リスト内包をつかったクイックソート Erlang編

-module(qsort). -export([qsort/1]). qsort([]) -> []; qsort([Pivot|T]) -> qsort([X || X <- T, X < Pivot]) ++ [Pivot] ++ qsort([X || X <- T, X >= Pivot]). リスト内包をつかったときに、どういった処理を内部的におこなっているのかがきになる。

コンパイルとリンク

C C++

http://docs.sun.com/app/docs/doc/805-7886/6j7drf0sr?l=ja&a=view

マージソート

分割した要素を結合するときにはすでにミクロな集合内ではソートされていることが保証されているため線形時間で結合できる。というかんじ。 // merge_sort.c #include "merge_sort.h" void merge_sort(int *array, size_t size) { int div = (int)size/2, *l…

size_t

C

環境依存だとは思うけど、Mac OSX だと、 typedef unsigned long __darwin_size_t; /* sizeof() */ って定義されてた。@ppc/_types.h

クイックソート

クイックソートをC言語で書いてみたら思いのほか書けなくてびっくりした。。そしてへんこんだ。でもまあ、リハビリだと思いつつがんばる。あとあれ、マージソートとの違いは、分割前に並び替えちゃうのか、統治時に並び替えるのか、そこなのよね。 // qsort.…

配列とポインタ

C

そうそう、ものすごく基本的なところではあるけど。配列を関数の仮引数に指定したときってどうなるんだっけーってそんなネタあったよなーと思って。 #include <stdio.h> void print_size(int *size) { printf("--sizeof--\n"); printf("%d\n", sizeof(size)); printf(</stdio.h>…