ラベル プログラム の投稿を表示しています。 すべての投稿を表示
ラベル プログラム の投稿を表示しています。 すべての投稿を表示

2009年12月16日水曜日

別ドメインのサーバーにあるRSSを取得してみた。


JavaScriptを使ってサーバーと通信することは可能です。
サーバー側とクライアント側の処理を非同期通信させながら別々処理をする、いわゆるAjaxという手法が話題になった時期もありましたね。

ただし、この通信は無制限ではありません。通信できるのは同一ドメインのサーバーだけです。
別なドメインのサーバーとはセキュリティの関係上、通信することはできません。

もし、どうしても別なドメインのサーバーと通信したいときは、CGIなどのサーバー側で動くプログラム作成し、それを経由して別なドメインのサーバーと通信する必要があります。

今回、Google の提供するWeb APIを使って「岐阜大学ロボコンサークル」の本屋サイトからこのブログのRSSを取得するということをやってみました。取得したRSSは”最近のブログ記事”という形で利用されています。

つまり、本屋サイトからGoogleを経由してこのブログのRSSを取得するという作業をするプログラムを作ってみました。

複雑そうな作業かと思いましたが、便利なAPIをGoogleが提供してくれていたので簡単にできました。

皆さんも、自分のサイトをお持ちであればたとえば天気予報などを動的に表示することに挑戦してみてはいかがですか??


2009年6月24日水曜日

ビット単位でアクセス

C言語でビット単位で変数を操作する方法を考えてみました。マイコンのレジスタを操作するときに使うことを想定しています。

下のプログラムは、コマンドライン引数で指定した数字を2進数と16進数で表示するものです。

#include <stdio.h>
#include <string.h>

typedef union BitAccess {
unsigned int byte : 8;
struct {
unsigned int bit0 : 1;
unsigned int bit1 : 1;
unsigned int bit2 : 1;
unsigned int bit3 : 1;
unsigned int bit4 : 1;
unsigned int bit5 : 1;
unsigned int bit6 : 1;
unsigned int bit7 : 1;
};
} BitAccess;

void printBinary(int number) {
BitAccess port = { number };

puts("+------+---+---+---+---+---+---+---+---+");
puts("| No. | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |");
puts("+------+---+---+---+---+---+---+---+---+");
printf("| Bit | %d | %d | %d | %d | %d | %d | %d | %d |\n",
port.bit7,
port.bit6,
port.bit5,
port.bit4,
port.bit3,
port.bit2,
port.bit1,
port.bit0);
puts("+------+---+---+---+---+---+---+---+---+");
printf("| Byte | 0x%02x |\n", port.byte);
puts("+------+---+---+---+---+---+---+---+---+");
}

int main(int argv, char **argc) {
printBinary(atoi(argc[1]));
return 0;
}