понедельник, 23 июня 2008 г.

Забавная бага

Вот здесь я нашёл пример кода с забавной ошибкой. 60 секунд мне хватило для того, чтобы догадаться что же не так. =)


int ar[5];
for (unsigned int i = 4; i >= 0; i--) {
printf("%d\n", ar[i]);
}

среда, 11 июня 2008 г.

Офигеть!

Офигеть! Сегодня узнал, что в C++ можно прямо в описании класса задавать значение статических членов.


class Foo
{
static int comeData = 10;
};

вторник, 10 июня 2008 г.

Rails и XML

Любая модель(ActiveRecord) в Rails умеет сохраняться в виде xml. Это позволяет без проблем в зависимости от запроса выдавать результат в html или xml виде. А это значит, что появляется возможность прикрутить клиент отличный от браузера.
Сделать это можно следующим образом.


class TestController < ApplicationController
def get_data
res = FooObject.find(params[:id])
respond_to do |format|
format.html
format.xml { render :xml => @res}
end
end
end

По запросу http://localhost:3000/test/1 будет получена html-страница, созданная в по соответствующему шаблону, а вот по запросу http://localhost:3000/test/1.xml получится xml-представление объекта FooObject. Что именно окажется в xml-файле опредляется строчкой

format.xml { render :xml => @res}

Без проблем сериализуются как отдельные объекты, так их объекты, находящиеся в контейнере.
Программу для запроса xml-файла я написал на C#.


//создаём запрос
WebRequest request = WebRequest.Create(queryUrl);
request.ContentType = "text/xml";
WebResponse myWebResponse = request.GetResponse();
long len = myWebResponse.ContentLength;
byte[] buff = new byte[len];
//считываем результат в буффер
myWebResponse.GetResponseStream().Read(buff, 0, (int)len);
string responseXml =
new String(System.Text.Encoding.ASCII.GetString(buff).ToCharArray());

Таким образом в responseXml окажется интересующий нас xml-файл, с которым можно делать всё, что душе угодно.