Свалка мыслей и идей...

воскресенье, 21 марта 2010 г.

Параметры командной строки и KolibriOS

Вот уже длительное время занимаюсь адаптацией параметров формата колибри, к формату С\С++, хотя прогресс и есть, но он слишком малый, и сегодня я попрошу на форуме помощи, тк пытаться понять по исходникам программ надоело((

воскресенье, 14 февраля 2010 г.

Подарок девушке на ДР

Завтра у моей любимой день варения и одновременно завтра день всех влюблённых, хочу сделать оригинальный подарок, домен "iloveann.net" и хостинг оплаченные на год :) . Надеюсь ей понравиться , очень надеюсь...


вторник, 9 февраля 2010 г.

KCC - Kolibri C Compiler

Возможно название очень громкое, но оно означает не совсем то, что некоторые могли подумать. Это не компилятор Си для KolibriOS, а надстройка к gcc и fasm для linux написанная на перле, которая позволяет писать на Си из linux для колибри. А "kcc" это передразнивание "gcc" .

Вступление (под капотом)

Я не особо великолепно разбираюсь в опциях gcc и линковщика, поэтому пошёл не стандартным путём обучения gcc компилировать код для колибри, а сделал программку на перле которая программу созданную gcc для linux в асме AT&T синтаксиса, преобразует к Intel синтаксису и в вид программы для колибри. Звучит запутанно, но описав с комментариями  весь процесс будет понятнее. (В след версии весь этот процесс будет автоматизирован, как и установка)

  1. gcc test.c -S    //   gcc создаёт ассемблерный файл в AT&T  синтаксисе с именем test.s
  2. perl kcc.pl test.s   //   kcc транслирует AT&T листинг в FASM Intel для колибри в файл test.asm
  3. fasm(./fasm) test.asm test    // fasm создаёт бинарный файл для колибри test

Hello, world!

Пример "hello , world". Хочу, заметить, что kcc пока работает не очень хорошо и в качестве полноценной среды лучше его пока не применять. И да, размещаю его под 'New' BSD лицензией.

Пример

kcc


суббота, 2 января 2010 г.

Linux класс сокетов.

Недавно себе для удобства написал небольшой класс, легко и быстро реализующий tcp сокет. Возможно кому-то (например мне) пригодиться, поэтому вывешиваю тут.
#include iostream //тут не хватает кавычек, подставьте сами и тд
#include sys/types.h
#include sys/socket.h
#include netinet/in.h
#include stdlib.h

using namespace std;

class Server {
public:
Server(int port, int waiters) {
listener = socket(AF_INET, SOCK_STREAM, 0);
if( listener <>
cout<<"SERVER Error creating socket"<
exit(0);
} else {
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = INADDR_ANY;
if( bind(listener, (struct sockaddr *)&addr, sizeof(addr) ) <>
cout<<"SERVER Error binding port"<
exit(0);
} else {
listen(listener, waiters);
}
}
}
~Server() {
close(listener);
close(user);
}
bool Accept() {
user = accept(listener, NULL, NULL);
if( user <>
return true;
}
string Read() {
string socket_data;
do {
bytes_read = recv(user, buff, 5000, 0);
} while( bytes_read <= 0 );
socket_data=buff;
return socket_data;
}
void CloseUser() {
close(user);
}
void CloseListener() {
close(listener);
}
void Send(string send_data) {
send(user, send_data.c_str(), send_data.size(), 0);
}
void operator >>(string* line) {
*line=Read();
}
void operator <<(string* line) {
Send(*line);
}
private:
int listener;
int user;
int bytes_read;
char buff[5000];
struct sockaddr_in addr;
};

Пример эхо сервера (с много поточностью через fork() с порождением независимых дочерних процессов):
int main() {
Server MainServer(30000, 5);
while( true ) {
if( !MainServer.Accept() ) {
cout<<"Error accepting"<
exit(0);
}
if( fork() == 0 ) {
MainServer.CloseListener();
string data;
MainServer>>&data;
cout<<
MainServer<<&data;
MainServer.CloseUser();
_exit(0);
} else {
MainServer.CloseUser();
}
}
MainServer.CloseListener();
return 0;
}

суббота, 19 декабря 2009 г.

О цикличности вселенной и возможны ли путешествия во времени.

Итак господа меня снова пробило на науку (или псевдо-науку если хотите). Эти мысли-теории вырисовывали долго и по отдельности и вот мне захотелось их объединить и записать. Будет очень интересно послушать ваше мнение и критику.
Обозначения:
  • БВ - Большой Взрыв
Утверждения:
  1. Количество энергии (вещество рассматривается как форма энергии) во вселенной, это константа (как до БВ, так и после). Обоснование: Вселенная это система не подвергающаяся внешним воздействиям, по закону сохранения энергии , энергия просто так ни откуда не появляется и никуда не исчезает.
  2. После большого взрыва, материя-энергия постепенно расширялась, впоследствии медленно начинает сжиматься, пока не сожмется в 1 объект в своеобразном центре вселенной (предположительно гигантская черная дыра), после этого произойдет новый большой взрыв. Обоснование: сходится с существующими теориями о БВ.
  3. Таким образом назовем последний БВ, БВ(0). До него соответственно была бесконечность БВов и еще будет бесконечность БВов. Графически это можно выразить так:
  4. Таким образом БВ это регулярное событие во вселенной, а не нечто экстраординарное и необычное.
  5. Вселенная - система не подверженная никаким внешним воздействия. А следовательно она не затухает из цикла в цикл абсолютно идентична. То есть и циклы этой системы идентичны 1ин другому. (Из этого вытекает что каждый из нас, и земля и солнечная система существовали и будут существовать еще бесконечное число раз).===Ну вот с часть про цикличность закончили, дальше вступаем на шаткую почву путешествий во времени===
  6. Путешествие в будущее. Способы: а) Поместить объект в точку, где он сможет дождаться необходимого момента(побочные явления вроде старения решить должны уже медики) б) Воспользоваться теорией относительности. Сделать корабль и отправить его над или под диском галактики(для уменьшения вероятности встречи с другими кораблями в будущем) по параболической траектории. При постоянном ускорении 3g которое может выдержать и к которому может адаптироваться человек корабль будет медленно приближаться к скорости света. Чем ближе он будет к ней подходить, тем быстрее будет происходить путешествие в будущее.
  7. Путешествие в прошлое. Особенности: Если вы хотите изменить прошлое, то знайте наверняка, у вас это не получится. Причина объяснена в конце блока. Путешествие в прошлое, это путешествие в будущее просто в следующий цикл. Для путешествующего разницы не будет, тк он не заметит смены цикла. При этом необходимо учитывать, что если вы перешли в следующий цикл(1), то и ваш двойник из цикла(-1) переходил в ваш цикл(0) и в нем делал все то что будете делать вы, соответственно ваше время есть результат вашего путешествия и вы можете являться причиной тех событий которые хотели исправить.
Последний 6ой пункт я считаю самым надуманным и самым шатким, тк неизвестно, возможно ли пережить большой взрыв. Для тех кто задаст вопрос про то хватит ли материи для большого взрыва при вашем отсутствии, напомню, что это отсутствие было скомпенсировано предыдущим вами.

среда, 16 декабря 2009 г.

Инвайты в Google Wave

Есть инвайты в google wave 22 штуки, 20 готов раздать всем желающим. Пишите в коментариях кому надо.
Благодаря моей любимой девушке, на новый год получил замечательный подарок: беспроводной набор, клавиатура и мышь Defender davos s775. Очень удобно Debian Linux подхватил и мышь и клаву сразу, а вот когда попытался это устроить в винде (XP sp2) она воспротивилась и ни мышь ни клава не заработали даже после установки драйверов с диска. Но для меня это не критично тк 99,9% времени я сижу под Linux, а у винды функция как и игровой платформы и инструмента для закидывания данных на Ipod Touch

P.S. Надо будет кстати посмотреть может появился новый инструмент для работы с тач под линукс.

Постоянные читатели