среда, 12 сентября 2007 г.

Поехали!..

Пожалуй начнем.
Меня зовут Дмитрий Степанов. Этот блог я создал для общения людей имеющих два общих признака: они живут или учатся в Харькове и занимаются 
программированием. 
Это место встречи для тех у кого есть интересные идеи по созданию интернет проектов. Здесь Вы можете обсудить их с другими специалистами в этой области. Но не надо ограничиваться только интернет проектами. Мы с удовольствием обсудим любые идеи и постараемся затем воплотить в жизнь наиболее удачные их них!

24 комментария:

lugal комментирует...

Ага, разом нас багато, нас не подолати :) злобным конкурентам из других контор.

Предлагаю пойти классическим путем:
1 - Создать свою ось.
2 - Разработать новый язык программирования и написать под него компилер.
3 - Переписать ось и компилер на новом языке, используя старый компилер.
4 - Написать свою игрушку.

Romeo комментирует...

Поздравляю с открытием блога, ув. Stepsus :)
Я думаю дело полезное, и найдет много своих почитателей.
Кстати, не маловажен тот факт, что блог открылся в преддверии дня программера! [13 сентября] :)

Stepsus комментирует...

Товарищи, с наступающим!
Надо бы это дело отметить ;)

strelok комментирует...

хмм... Посмотрим-с что из этого получитсяю

Stepsus комментирует...

Ну для начала можете немного рассказать о себе. Кто на чем пишет, где работает, как проводит свободное время (хе-хе ни у кого ж его нету).

SiRex комментирует...

2 lugal,
ты забыл "Напишем свою CMS" :-D

seth комментирует...

преведко :)

Mara комментирует...

Он сказал "Поехали!" и махнул рукой )))

Вообще-то дело чрезвычайной полезности, я бы сказал. Поздравляю всех не безразличных к программистским деяниям с появлением сего сообщества.

Думаю бложег имеет право быть, развиваться и прочьто и прочьто (Copyright (c) Харченко).

Всех с наступающем...

KuZma комментирует...

Ух ты, не знал что 13 число день программера:)

ЗЫ
лугал... ну зачем же с таким скептицизмом то относиться к этому...

Mara комментирует...

2 kuzma

Небольшое уточнение...

День программиста - 256 день в году. Высокосный год - 14 сентября, обычный 13.

KuZma комментирует...

хммм... я чет считал это днем админа :)

Mara комментирует...

2 kuzma

День сисадмина - последняя пятница июля.

Продуманные черти ))) нет чтоб среди недели нажраться и как нормальные люди с больной головой на работу, так ишь что выдумали пятницу им подавай ))))

KuZma комментирует...

ну так правильно... а нам вот что... завтра - четверг... в пятницу - разбираться с джава-аплетом, не зная джавы :-D

PS эх... нада была идти на одмина :)

seth комментирует...

одмін то зле - нічого не робити цілий день дуже важко :))

KuZma комментирует...

Высокосный год - 14 сентября, обычный 13.

одного кстати не пойму - почему так... наоборот же, в высокосном году должно быть раньше чем в обычном...

Mara комментирует...
Этот комментарий был удален автором.
Mara комментирует...

удалил первый раз потому что с форматированием напорол... )))

А второй потому что опечток много, сонный... )))

2 kuzma

цитата:

одного кстати не пойму - почему так... наоборот же, в высокосном году должно быть раньше чем в обычном...

Возможно я напорол с 14, но то что 256 день эт точно, век воли...)))

Кста вот и перый прожект - написать софтину чтоб считала число на которое попадает проф пати в высокосно году...ЫЫЫЫ

P.S Все... с 3 раза родил )))

Mara комментирует...

Достоверный источник ;)

KuZma комментирует...

Всех с праздником! :)

lugal комментирует...

Compiled by gcc.
Версия 1.0.0 для ламеров, в скором будушем ждите появления версии 2.0.0 для хакеров :)


#include <stdio.h>
#include <stdint.h>


// ///////////////////////////////////////////////

namespace
{
const size_t FIRST_YEAR = 2000;
};


// ///////////////////////////////////////////////

inline bool isBisSextus(size_t year);


// ///////////////////////////////////////////////

int main()
{
size_t currentYear;
int64_t val = 0;;

do
{
printf("Please, input curent year (greater then 2000): ");
scanf("%u", ¤tYear);
printf("\n");
}while (currentYear < FIRST_YEAR);

if (isBisSextus(currentYear))
printf("The progremmers day is september, 12 - ");
else
printf("The progremmers day is september, 13 - ");

for (size_t year = FIRST_YEAR; year < currentYear ; year++)
val += isBisSextus(year) ? 366 : 365;

//Add 256 days of the last year
val += 256;

//First day of 2000 is Saturdau (1 % 7 = 1)
switch (val % 7)
{
case 0: printf("Friday.\n");break;
case 1: printf("Saturday.\n");break;
case 2: printf("Sunday.\n");break;
case 3: printf("Monday.\n");break;
case 4: printf("Tuesday.\n");break;
case 5: printf("Wednesday.\n");break;
case 6: printf("Thursday.\n");break;
}

return 0;
}


// ///////////////////////////

inline bool isBisSextus(size_t year)
{
return ( (year % 4 == 0)
&& ((year % 100 != 0) || (year % 400 == 0)));
}


// ///////////////////////////////////////////////

seth комментирует...

lugal - пекельний чортяко :))

Stepsus комментирует...

ООО, я смотрю уже коды пошли...
Надо было снабдить блог компилятором. Kuzma как тебе такая идея? Ничего не напоминает? ;)

lugal комментирует...

Compiled by gcc
И вот он! Долгожданыый релиз программы дня Программера, версия 2.0.0 для Хакеров!

#include <stdio.h>
#include <stdint.h>
#include <getopt.h>
#include <time.h>
#include <stdlib.h>

// ///////////////////////////////////////////////

struct Startup
{
size_t year1_;
size_t year2_;
size_t mode_;
};

// ///////////////////////////////////////////////

namespace
{
const size_t FIRST_YEAR = 2000;

const size_t M_LIST = 1;
const size_t M_DATE = 2;
};


// ///////////////////////////////////////////////

inline bool isBisSextus(size_t year);

bool startup(int argc, char *argv[], Startup *pStartup);
void usage(const char* pAplName);

void print(size_t currentYear);

// ///////////////////////////////////////////////

int main(int argc, char *argv[])
{
Startup startupStr;

if (!startup(argc, argv, &startupStr))
return 1;

if (startupStr.mode_ == M_LIST)
for (size_t year = startupStr.year1_; year <= startupStr.year2_; year++)
print(year);
else
print(startupStr.year1_);


return 0;
}


// ///////////////////////////

inline bool isBisSextus(size_t year)
{
return ( (year % 4 == 0)
&& ((year % 100 != 0) || (year % 400 == 0)));
}


bool startup(int argc, char *argv[], Startup *pStartup)
{
int nextOpt;

const char *shortOpt = "hnls:e:";

const option longOpt[] =
{
{"help", 0, NULL, 'h'},
{"now", 0, NULL, 'n'},
{"list", 0, NULL, 'l'},
{"startyear", 1, NULL, 's'},
{"endyear", 1, NULL, 'e'},
{NULL, 0, NULL, 0}
};

pStartup->year1_ = 0;
pStartup->year2_ = 0;
pStartup->mode_ = 0;

if (argc == 1)
{
usage(argv[0]);
return false;
}

while((nextOpt = getopt_long(argc, argv, shortOpt, longOpt, NULL)) != -1)
{
switch(nextOpt)
{
case 'h':
usage(argv[0]);
return false;
break;

case 'n':
time_t timer;
struct tm *tblock;

if (pStartup->mode_ & M_LIST)
{
fprintf(stderr, "Error: Options -n, --now is uncompactible "
"with options -l, --list.\n\n");
usage(argv[0]);
return false;
}

timer = time(NULL);
tblock = localtime(&timer);

pStartup->mode_ |= M_DATE;
pStartup->year1_ = tblock->tm_year + 1900;
break;

case 'l':
if (pStartup->mode_ & M_DATE)
{
fprintf(stderr, "Error: Options -n, --now is uncompactible "
"with options -l, --list.\n\n");
usage(argv[0]);
return false;
}

pStartup->mode_ |= M_LIST;
break;

case 's':
if (pStartup->mode_ & M_DATE)
{
fprintf(stderr, "Error: Options -n, --now is uncompactible "
"with options -s, --startyear.\n\n");
usage(argv[0]);
return false;
}

pStartup->year1_ = atoi(optarg);
pStartup->mode_ |= M_LIST;
break;

case 'e':
if (pStartup->mode_ & M_DATE)
{
fprintf(stderr, "Error: Options -n, --now is uncompactible "
"with options -у, --enddate.\n\n");
usage(argv[0]);
return false;
}
pStartup->year2_ = atoi(optarg);
pStartup->mode_ |= M_LIST;

break;

case '?':
usage(argv[0]);
return false;
break;

default:
abort();
}
}

if ( (pStartup->mode_ & M_LIST)
&& (pStartup->year1_ == 0 || pStartup->year2_ == 0) )
{
fprintf(stderr, "Invalid parameters: Start year or End year is not passed.\n\n");
usage(argv[0]);
return false;
}

if ( pStartup->mode_ & M_LIST && pStartup->year1_ > pStartup->year2_)
{
fprintf(stderr, "Invalid parameters: Start year must be less then End year.\n\n");
usage(argv[0]);
return false;
}

if ( pStartup->mode_ == 0)
{
pStartup->mode_ |= M_DATE;
pStartup->year1_ = atoi(argv[optind]);
}

if ( pStartup->year1_ < 2000
|| ((pStartup->year2_ < 2000) && (pStartup->mode_ != M_DATE)))
{
fprintf(stderr, "Invalid parameters: All years must be great or equal 2000\n\n");
usage(argv[0]);
return false;
}

return true;
}


void usage(const char* pAplName)
{
printf("Usage: %s [OPTIONS] [YEAR]\n\n", pAplName);

printf("Valid OPTIONS:\n");

printf("\t-h, --help \t\tPrint help (this message)\n");

printf("\t-l, --list \t\tPrint list of years (This mode is uncompactible\n");
printf("\t \t\twith parameter YEAR and options -n, --now).\n");
printf("\t \t\tFor use this options you must set start and end\n");
printf("\t \t\tyears use -s, --startyear and -e, --endyear \n");
printf("\t \t\toptions.\n");

printf("\t-s, --startyear VALUE Start year in the list (This options use with\n");
printf("\t \t\t-l, --list options. Valid VALUE must be greater\n");
printf("\t \t\tthen 2000 and less then -e, --endyear.\n");

printf("\t-e, --endyear VALUE End year in the list (This options use with\n");
printf("\t \t\t-l, --list options. Valid VALUE must be greater\n");
printf("\t \t\tthen 2000 and greater then -s, --startyear.\n");

printf("\t-n, --now \t\tPrint information about Programmer days in the\n");
printf("\t \t\tcurent year. This options is uncompactible with\n");
printf("\t \t\t-l, --list options. If you use this option \n");
printf("\t \t\tParameter YEAR is ignored. If Value YEAR is\n");
printf("\t \t\tempty, then this option use by default.\n\n");

printf("YEAR: Print information about Programmers day for year YEAR. PARAMETER YEAR is\n");
printf(" uncompactible with -l, --list options and ignored with -n, --now options.\n");
printf(" If parameter YEAR is empty, then use options -n, --now by default.\n\n");

}


void print(size_t currentYear)
{
uint64_t val;

if (isBisSextus(currentYear))
printf("The progremmers day in %d year is september, 12 - ", currentYear);
else
printf("The progremmers day in %d year is september, 13 - ", currentYear);

for (size_t year = FIRST_YEAR; year < currentYear ; year++)
val += isBisSextus(year) ? 366 : 365;

//Add 256 days of the last year
val += 256;

//First day of 2000 is Saturdau (1 % 7 = 1)
switch (val % 7)
{
case 0: printf("Friday.\n\n");break;
case 1: printf("Saturday.\n\n");break;
case 2: printf("Sunday.\n\n");break;
case 3: printf("Monday.\n\n");break;
case 4: printf("Tuesday.\n\n");break;
case 5: printf("Wednesday.\n\n");break;
case 6: printf("Thursday.\n\n");break;
}
}

// ///////////////////////////////////////////////

KuZma комментирует...

идея снабдить блог компилятором - у меня вызывает нервную дрожь и истерический смех... ты думаю поймешь почему... :)