プログラミング

十二月講座のお知らせ

12月22日(土) 13時00分 - 17時30分 に、「高橋直大の『プログラマのための論理思考トレーニング〜問題を素早く把握し実装するために〜 初級編 7』」「Red Coder 高橋直大の『プログラマのための論理思考トレーニング 探索入門編 3』」を行います! Red Coder …

八月講座のお知らせ

8月25日(土) 13時30分 - 17時30分 に、「高橋直大の『プログラマのための論理思考トレーニング〜問題を素早く把握し実装するために〜 初級編 6』」「Red Coder 高橋直大の『プログラマのための論理思考トレーニング 探索入門編 2』」を行います! Red Coder …

六月講座のお知らせ

6月30日(土) 13時30分 - 17時30分 に、「高橋直大の『プログラマのための論理思考トレーニング〜問題を素早く把握し実装するために〜 初級編 5』」「Red Coder 高橋直大の『プログラマのための論理思考トレーニング 探索入門編 1』」を行います! Red Coder …

三月の講座が決まりました

3月17日(土) 14時30分 - 17時30分 に、「高橋直大の『プログラマのための論理思考トレーニング〜問題を素早く把握し実装するために〜 初級編 3』」を行います! Red Coder 高橋直大の『プログラマのための論理思考トレーニング〜問題を素早く把握し実装するた…

一月の講座が決まりました

1月29日(日) 11時30分 - 14時30分 に、「高橋直大の『プログラマのための論理思考トレーニング〜問題を素早く把握し実装するために〜 初級編 2』」を行います! Red Coder 高橋直大の『プログラマのための論理思考トレーニング〜問題を素早く把握し実装するた…

Red Coder 高橋直大からの挑戦 Red級編 1

Japan Alumni Group Summer Camp 2011 Day 2(JAGSummerCamp11Day2)で出題された難問「Attack the Moles」を、出題者が自ら教えます。Red Coder 高橋直大からの挑戦 Red級編 1講師はITmediaの『最強最速アルゴリズマー養成講座』でお馴染みの高橋直大さんです…

Red Coder 高橋直大からの挑戦 上級編 1

Japan Alumni Group Summer Camp 2011 Day 2(JAGSummerCamp11Day2)で出題された上級者向け問題を、出題者が自ら教えます。Red Coder 高橋直大からの挑戦 上級編 1講師はITmediaの『最強最速アルゴリズマー養成講座』でお馴染みの高橋直大さんです。 動画情報…

Google Code Jam Japan 2011 決勝 問題E 無限庭園

正解者が一人という超難問「無限庭園」の解説動画です。 講師はITmediaの『最強最速アルゴリズマー養成講座』でお馴染みの高橋直大さんです。Google Code Jam Japan 2011 決勝 問題E 無限庭園動画情報 時間 33分 画面 720x480 大きさ 286MB

高橋直大の『プログラマのための論理思考トレーニング〜問題を素早く把握し実装するために〜 初級編 1』

12月17日に、プログラミング初心者向けにプログラミング講座を行いました。Red Coder 高橋直大の『プログラマのための論理思考トレーニング〜問題を素早く把握し実装するために〜 初級編 1』70人ぐらいの方が見に来て下さったようで、本当にありがとうござい…

FNVハッシュ関数

FNVハッシュ関数は簡単に実装できるハッシュ関数です。 Twitterで見かけたので忘れないうちにメモ。 FNV-1 hash hash=offset_basis for each octet_of_data to be hashed hash=hash*FNV_prime hash=hash xor octet_of_data return hash octet_of_dataは変換…

CakePHPでOAuth

Twitter等で使われているOAuthをCakePHPで使うライブラリを紹介します。 OAuth consumers for CakePHP - by cakebaker 導入方法 OAuth consumer classをダウンロード CakePHPのルートディレクトリか、appディレクトリで展開する(それぞれ「vendors/OAuth」か…

安全になったRequestHandler->getClientIP()

RequestHandler->getClientIP()の事を調べていたら、RequestHandler->getClientIP()が返す結果は信用できないという記事を見つけました。 CakePHPのgetClientIPを使っていいのは小学生までだよねー 簡単に言うと、HTTP_X_FORWARDED_FORは簡単に偽装できるの…

actionにパラメータを渡す時に注意すべき文字

CakePHPでは「action名/値1/値2/...」 のような形式でアクセスすると、各値をactionの引数として渡す事ができます。しかし、文字によってはうまくいかない場合があるようなので、確認できた範囲内で書いておきます。 #、%23 #又は%23以下が捨てられる %、%25…

スリープ

プログラムの実行を一時的に休止する関数として、sleep()、usleep()、nanosleep()があります。 sleep()は秒単位、usleep()はマイクロ秒(100万分の1秒)単位、nanosleep()はナノ秒(10億分の1秒)単位で休止できます。 sleep() #include <unistd.h> unsigned int sleep(uns</unistd.h>…

twitterのfollowing、followersを得るスクリプト

twitterから簡単にfollowing、followersの一覧を得る方法として、Rがあるようです。 iGraphでTwitterのネットワークを表してみる igraphでTwitterのネットワークを描いてみる2 しかし、100人までしか取得できないし、僕自身がRに慣れていないので、自分でス…

すかすかの配列から効率良く全要素を取り出す

一番右端に立っているビットの位置を求めるアルゴリズムが載っていました。http://d.hatena.ne.jp/siokoshou/20090704#p1 http://chessprogramming.wikispaces.com/BitScan#DeBruijnMultiplationまさしく黒魔術!良くこんなの思いつくなぁ、と感心する事しき…

自動拡張する文字列用バッファ

GString #include <glib.h> typedef struct { gchar *str; gsize len; gsize allocated_len; } GString; GString* g_string_new(const gchar *init); GString* g_string_append(GString *string, const gchar *val); GString* g_string_prepend(GString *string, con</glib.h>…

ガーベージコレクタ

メモリリークの問題に悩まされている人は多いと思います。ガーベージコレクタを使うと、メモリ管理の煩わしさから解放されます。 Boehm GC #include <gc/gc.h> void GC_INIT(void); void *GC_MALLOC(size_t size); void *GC_MALLOC_ATOMIC(size_t size); void *GC_REA</gc/gc.h>…

DNS

djbdns #include <djbdns/dns.h> void dns_random_init(const char seed[128]); int dns_ip4(stralloc *out, const stralloc *fqdn); int dns_name4(stralloc *out, const char ip[4]); int dns_mx(stralloc *out, const stralloc *fqdn); djbdnsに含まれているライブラリ</djbdns/dns.h>…

自動拡張する配列

GLibには自動拡張する配列があります。要素の追加、削除が容易に行えます。 GArray #include <glib.h> typedef struct { gchar *data; guint len; } GArray; GArray* g_array_new(gboolean zero_terminated, gboolean clear_, guint element_size); #define g_array_</glib.h>…

ハッシュテーブル

glibcのハッシュテーブル #include <search.h> int hcreate(size_t nel); ENTRY *hsearch(ENTRY item, ACTION action); void hdestroy(void);nelでハッシュテーブルに格納できるデータ数の最大値を設定します。 キーには文字列しか使えません。 hdestroy()を呼ぶとハッ</search.h>…

一行入力

getline()、getdelim() #define _GNU_SOURCE #include <stdio.h> ssize_t getline(char **lineptr, size_t *n, FILE *stream); ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);Linuxで使える関数です。 getlineはstreamから一行読み込み、*li</stdio.h>…