Home

Предыдущие 20

23 Июн, 2008

Умань

Теорвер

Originally published at Блог FX'а. Please leave any comments there.

Через 2 часа 50 минут состоится экзамен, по которому я вполне могу получить двойку… Страшно, блин…

Метки:

16 Апр, 2008

Умань

Задачка по моделированию

Originally published at Блог FX'а. Please leave any comments there.

Только что 2 часа убил на “простенькую задачку по комбинаторике”, как сказала наша преподаватель по моделированию. Если кто хочет поломать немного мозги, то вот сама задачка (исходного задания у меня нет, так что это моя интерпретация задания):

Бросаем симметричную монетку n раз. Она может упать либо орлом, либо решкой вверх. Найти вероятность выпадения двух решек (ну, или орлов, не суть важно) подряд.

Если перефразировать в более удобный вид, получаем:

Есть массив, состоящий из нулей и единиц, размером в n элементов. Какова вероятность того, что в массиве есть два нуля, стоящие рядом.

Задача просто бешенная, как бы проста она не казалась. У меня ответ получился только через рекурсию, а в конце в нём всплыл еще и дополнительный ряд Фибоначчи:

q(n) = p(n) / (2 ^ n)
p(n)  = 2 * p(n - 1) + f(n - 1)
p(1)  = 0
f(1) = 1, f(2)  = 1, f(3) = 2, ...
f(n) - ряд Фибоначчи
q(n) - конечная вероятность, которую нужно найти

Это просто пипец… Мне вот интересно, что такое “сложненькая” задача, если эта - “простенькая”.

Метки:

28 Янв, 2008

Умань

Сессия закончилась

Originally published at Блог FX'а. Please leave any comments there.

… можно опять работать в полную силу. :)

Кстати, я, впервые за эти два с половиной года, буду получать повышенную стипендию. :)

Метки:

15 Янв, 2008

Умань

Экзамен по вышке

Originally published at Блог FX'а. Please leave any comments there.

… сегодня был успешно сдан. Очередная пятерка в зачетке. :)

Метки:

10 Янв, 2008

Умань

Экзамен по БД

Originally published at Блог FX'а. Please leave any comments there.

Эх, млин. Список вопросов на выдали, но, судя по тому, что было на консультации (я не был, работал), вопросы будут не эти…  Ладно, посмотрим.

PS. А потом верстать, верстать, верстать, верстать…

PPS. Обьясните мне, бедному и непонимающему студенту, нахрена было делать это! Кто скажет “ну, типа чтобы генерить JS на серверной части” очень советую глянуть в сторону Symfony, а точнее - её JS-helper’ов. Вот в таком есть смысл, а в JQuery-PHP я его не вижу пока что…

29 Дек, 2007

Умань

Отчет по БД

Originally published at Блог FX'а. Please leave any comments there.

Достало меня уже всё… Остался последний отчет, который я пишу из последних сил в последний день учебы в этом году…

Вот такое у меня сейчас в отчете родилось:

Отчет по БД

28 Дек, 2007

Умань

Учеба

Originally published at Блог FX'а. Please leave any comments there.

Вот такая у нас учеба:

Кароче слушай, всё заебись как херово знаешь я только что заметил, что сёдня я матерился уже больше чем за последние 3 месяца, а вчера походу почти стока же.
Мне <предмет> завтра здавать на зачёт, а я ещё не садился, плюс сцуко <препод> со своим сцуко дегроидным проектом, плюс я вышу вчера написал и не знаю что она мне там влепит и эт меня напрегает. и <препода> на завтра я никак не успеваю сделать и бля у меня ща взорвётся бошка и плюс:
приехал в 6-6:30
вечера домой и час убил на <друга> - помогал с вышкой
потом поужинал и попытался поспать\нихера не вышло плюс меня вовреммя не подняли
и я не погрелся в ванной, теперь очень злой невыспавшийся и неготовый к зачёту студент пишет тебе сообщение и мысленно посылает этот долбанный универ нах, за то чот в таком состоянии через часов 7 будет сдавать всякую хрень вот

Орфография сохранена. Подчеркнутые слова были мной заменены, на всякий пожарный.

Метки:

1 Ноя, 2007

Умань

ООП: Сетевая БД

Originally published at Блог FX'а. Please leave any comments there.

Что-то я затянул немного выполнение лабораторных работ некоторых по универу, нужно исправляться. Сегодня решил вернуться ко второй лабе по ООП. Задание таково:

“Разработать объектно-ориентированную библиотеку для работы со структурами данных по одной из нижеперечисленных тем в соответствии с нижеуказанными требованиями. Свойства и методы для классов разработать в соответствии с известными определениями соответствующих структур данных. Составить тесты для проверки работоспособности библиотеки. Составить программу, демонстрирующую возможности разработанной библиотеки.”

Требования - хрен с ними, а вот тема мне попалась интересная: “Сетевые базы данных (ввод/вывод, навигация)”. Когда я это задание читал в первый раз - я впал в ступор. Потом оклемался, но когда видишь такое задание как-то не по себе становится…

Сетевая бд - это бд, в которой для связи записей используются графы (граф, по курсу структур данных, - это сеть). Т.е. здесь, в отличии от иерархических бд, связи получаются “много к многим” (а там - “один ко многим”).

Поговорил немного с преподами о задании, итог получился такой - “нам не нужна универсальная бд, сделай несколько таблиц статических и связывай их”. Говорил действительно немного - минуты полторы, так что кроме фразы выше я ничего особо не услышал. Сегодня решил хоть чего-нибудь напроектировать, чтобы в пятницу показать преподам и убедится, правильно ли я делаю, или нет. Мысля сейчас такая: есть отдельные таблицы (неважно, как представленные) и есть какой-нибудь класс Relation, который их связывает. Собственно, это очень напоминает обычную иерархическую бд (таблица - связующая таблица - таблица), но как это оформлять по другому я пока что не представляю.

Сел за комп, закодил… Получилось такая фигня:

class Masseur : public Record {
public:
    Masseur();
    virtual ~Masseur();
private:
    char* _name;
    char* _surname;
    char* _fathername;
    char* _qualification;
    Date _birthday;
};

class Service : public Record {
public:
    Service();
    virtual ~Service();
private:
    char* _name;
    char* _part;
    int _duration;
    double _price;
};

class MasseurServiceRelation : public Relation {
public:
    MasseurServiceRelation();
    virtual ~MasseurServiceRelation();
private:
    void add(Masseur*, Service*);
    void remove(Masseur*, Service*);
    void remove(Service* service);
    void remove(Masseur* masseur);
};

Сейчас сижу и думаю, правильным ли путем я иду…

PS. А первые две таблицы очень напоминают паттерн ActiveRecord, на правда ли? :)

25 Окт, 2007

Умань

Visual FoxPro

Originally published at Блог FX'а. Please leave any comments there.

Ну вот нахера, скажите мне, мне, знающему очень даже неплохо SQL учить этот галимый Visual FoxPro?  Нет, я все понимаю - он несложный, его выучить можно быстрее чем тот же MySQL, с его помощью можно быстро писать законченные desktop-приложения, но… Просто когда сидишь над этим FoxPro по 8 часов подряд, пытаясь сделать хоть что-то по лабораторной работе, а в итоге нихера не получается… И так у всего потока практически. по-моему это уже немного не мои проблемы, а самого FoxPro и препода, который нам его читает.

Ну это так… Накипело.

На самом деле я против FoxPro в рамках учебной программы ничего не имею (если рассмартивать его просто как “еще одну СУБД”), в отличии от тотального большинства моих одногрупников. Ну поставили нам его в программу - фиг с ним, лабы сдадим и забудем. Я также вполне нормально отношусь к тому, что нам запрещают использовать SQL, хотя СУБД его нормально поддерживает, - преподаватель всегда прав. :) Да, и еще - я не пытаюсь сравнивать, в отличии от все того-же большинства одногрупников, FoxPro с тем же MySQL - они сделаны для разных задач и… в принципе я считаю, что каждая из этих СУБД имеет место быть (хотя иногда мой мозг выступает категорически против FoxPro).

Мне не нравятся совершенно другие вещи:

  1. FoxPro пришел к нам из доса, и в нем до сих пор есть куча комманд, которые сейчас уже особого смысла не имеют. Например, работа со связями или с окошками. То есть, многие действия можно выполнить как минимум двумя разными способами, причем способы, которые пришли из доса явно функциональнее. Самая главная проблема, что способы вообще несовместимы. Хотите построить меню define’ами (препод сказал, что типа за это больше всего баллов) - стройте также и все остальное (формочки всякие и прочее), а вот построить удобным построителем форму и добавить туда define’ами меню не получится никак.
  2. Я не любитель работать с формами. Вообще. А здесь еще, к тому же, сама работа с формами несколько “кривоватая”. :)
  3. Индексирование и связывание глючит. И, похоже, не только у меня. Правда отдельные личности сумели вроде как с этим ужиться. А сегодня препод вообще выдал “если у вас связывание много-ко-многим - фильтрация данных может глючить” - я был очень рад после этих слов! Тем не менее, лабу сдать все равно нужно. :(

Раздражает глючность и несбалансированность самого FoxPro. Причем раздражение начинается только тогда, когда посидишь над ним часиков 5, и за это время решишь две простенькие задачи. Да, потом эти задачи ты будешь решать быстро, но пока вьедешь, как и что…

Одно радует - в MSDN все-таки можно найти хорошие примеры кода, которые быстро все обьясняют. :)

Метки:

23 Окт, 2007

Умань

Немного об ошибках в C++

Originally published at Блог FX'а. Please leave any comments there.

Начнем издалека… Есть в C++ встроенный тип size_t, который является “целым типом без знака, используемым реализацией для индексирования массивов” © Страуструп. То есть, если вы работаете с индексами в массивах и их длинами, то в общем-то “правильнее” использовать не int, что в большинстве случаев и делается, а именно size_t (для длин можно еще использовать ptrdiff_t - тип, который возвращает операция вычитания двух указателей). Вчера эта “правильность” для меня вышла боком…

size_t length;
...
for(size_t i = 0; i < length; ++i) {
    double x = 2 * (i - length / 2) / length;
    ...
}

Вот такой был изначальный код. Через несколько минут после написания я вспомнил, что неплохо бы сделать так:

size_t length;
...
for(size_t i = 0; i < length; ++i) {
    double x = 2 * static_cast<double>(i - length / 2) / length;
    ...
}

потому что при делении двух целых чисел у нас тоже целое будет, а мне нужно было как раз вещественное.

Но это еще ладно. После этого я отдал свой кусок лабораторной (мы ее пишем парами) своей девушке (а я как раз с ней пишу). Когда она добралась до этого кода и стала тестить его - у нее стали получаться какие-то странные, неправильные числа. Долгое время я копался в коде и не мог понять, в чем проблема, а потом до меня наконец-то дошло - разность двух беззнаковых чисел также будет беззнаковая (т.е. число -1 будет на самом деле 0xFFFFFFFF), после чего код превратился в такой:

size_t length;
...
for(size_t i = 0; i < length; ++i) {
    double x = 2 * static_cast<double>(static_cast<int>(i) - static_cast<int>(length) / 2) / length;
    ...
}

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

Выводы: или пишите не особо заморачиваясь на правильности употребления типов (везде используйте int и double, например), или пишите семантически правильно, но не делайте таких ошибок, как я… Может, конечно, это только я такой, но мне лично сложно было именно по коду определить, что результат будет получаться не такой как я хочу.

PS. Я теперь немного понимаю, почему в Java нет unsigned типов. :) 

1 Сент, 2007

Умань

Очередной учебный год

Originally published at Блог FX'а. Please leave any comments there.

Всех учеников и студентов поздравляю с началом нового учебного года! Хороших вам преподов и классных оценок!

PS. А я уже на 3-м курсе.

Метки:

14 Июл, 2007

Умань

Конец 2-го курса

Originally published at Блог FX'а. Please leave any comments there.

Ну вот теперь я полноценный третьекурсник, вчера сдал летнюю практику и получил (может и не)заслуженную пятерку. :)

Сдал я практику просто офигительно - за день сделал “змейку”, написал по ней отчет. Принес, показал - препод сказал - “А где help? Делай help!”. Ну ладно - принес сдаваться в последний день, вместе с отпечатанным отчетом. Препод на игрушку даже не посмотрел, полистал отчет и начал “шутить”:

Он: “Ну что, Паша, трояк?”

Я: “Не, ну какой трояк, там почти все, что вы просили в задании, реализовано!”

Он: думает минуту… “Ну ладно, ставлю 75 баллов.” (это четверка)

Я: “А больше никак?”

Он: “Никак”

Я: “Ну ладно…”

Отдал, значит, ему зачетку. Он там поставил что-то. Я забрал ее и не глядя положил в рюкзак.

Где-то минут через 10, когда я уже собирался уходить, я решил глянуть - сколько он мне все-таки поставил. Смотрю - 90 баллов (пятерка). Я поофигевал секунд 30 и свалил домой. :)

Метки:

1 Июл, 2007

Умань

Летняя практика и МОРЕ

Originally published at Блог FX'а. Please leave any comments there.

Ну вот и закончился последний экзамен. Как и ожидалось - по всем экзаменам у меня пятерки. Можете меня с этим поздравить. :) Огорчает одна вещь - еще 2 недели у нас будет летняя практика, на которой мы должны сделать какую-нибудь программу (препод явно так настаивает на игрушке) и подготовить по ней полную документацию. Вообще, если не кривить душой - эту практику можно было спокойно сделать во время всего 2-го семестра, сдать ее и забыть. Но в силу некоторых обстоятельств (а точнее - моей природной лени) - у меня пока что ничего не готово, если не считать того, что я могу попробовать сдать свои две игрушки (арканоид и змейку), которые я писал в далеком 10-м классе (т.е. ни много, ни мало, а больше 3-х лет назад) на Visual Basic 6.0. Доделывать эти игрушки сейчас уже особо возможным не представляется по нескольким причинам:

  1. Разбираться в том, что я писал 3 года назад особо не хочется, хотя это и поправимо
  2. Вспоминать 6-й VB мне как-то тоже не хочется

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

И наконец самое главное - через 3 часа я уезжаю на неделю на море! Поздравления принимаются. :)

PS. Половину летней практики я прогуливаю. Препод меня убьет. :)

10 Июн, 2007

Умань

Учебный год is over

Originally published at Блог FX'а. Please leave any comments there.

Уррра!!! Осталось сдать экзамены (3 из 5, по остальным - автоматом 5-ки будут) и буду полностью свободен!

PS. На выходных был у бабушки с дедушкой в луганской области - покушал шашлычков, чего и всем желаю :) 

Метки:

7 Июн, 2007

Умань

C++: substring search

Originally published at Блог FX'а. Please leave any comments there.

Последняя лабораторная, которую я делал достаточно долго и до сих пор не уверен в 100%-й правильности ее работы, потому прошу всех протестировать эту лабу.

Как я раньше писал, по Компьютерным Информационным Технологиям у нас 3 лабораторные работы + экзамен, но те, кто сделал эти 3 работы раньше чем нужно, могут попросить препода дать им 4-ую лабу, сделав которую можно не идти на экзамен. Моя 4-ая лаба - реализация одного из алгоритмов поиска всех вхождений подстроки в строке, а именно - реализация алгоритма Бойера-Мура (Boyer-Moore). В этом алгоритме поиск в лучшем случае (при удачной реализации) выполняется за сублинейное время (т.е., за O(k*n), где k = const, k < 1). Проблема реализации заключалась в том, что:

  • алгоритм нам объясняли с использованием строк с символами [1…n] (т.е. первый символ строки находится на [1]-й позиции), а мне пришлось делать с обычными c’шными строками [0…n-1]; на первый взгляд кажется - ну и в чем тут проблема… проблема в сложности алгоритма… его и просто по книжке нелегко реализовать, а тут еще и добавляются всякие проблемы - там единицу не добавил, там - не отнял и т.д.
  • алгоритм нам объяснили не полностью, а где-то на 2/3… оставшуюся часть пришлось выводить самому… над алгоритмом, который в итоге был реализован функцией в 20 строчек, я сидел часа 4… вроде заработало…
  • ну и все остальное по мелочи :)

Сейчас я выложу чисто исходники самого алгоритма (а также еще одного алгоритма, который было легко реализовать на основе уже сделанных функций), а завтра - сделаю какую-нибудь консольную программу для того, чтобы сам алгоритм можно было удобно тестировать.

Файлы: source (string.h + string.cpp).

6 Июн, 2007

Умань

C++ Classes: Keyboard

Originally published at Блог FX'а. Please leave any comments there.

Последняя лабораторная по “Архитектуре ЭВМ” - это был отжиг. Один из преподов (которому мы эту работу должны были сдать) долго болел и на наших занятих был всего пару раз. После того, как он “отболел”, он появился у нас на уроке, начал наезжать, что мы всей группой нифига не сдаем (офигенно просто, особенно если учитывать, что сдавать некому было), пугал тем, что нас расформируют как группу и все мы перейдем под его кураторство (он куратор в параллельной группе).

После наездов препод огласил наконец - что именно он от нас хочет на лабораторной, а именно - низкоуровневого программирования (работа с каким-нибудь устройством), и желательно на ассемблере. Попытки доказать ему, что ни одна современная ОС не даст нам напрямую соединится с устройством, он мне выдал замечательнейшую фразу - “загружайтесь с дискеты под дос и программируйте”. Это была жесть.

Сейчас он немного успокоился и без проблем принимает лабораторные на WinAPI (которого, как мне показалось, он вообще не знает).

Так как выбор был небольшой (особо парится не хотелось) - сделал программу для “работы” с клавиатурой. Смотрите сами. :) В файлах - класс работы с клавиатурой (обертка для некоторых функций из WinAPI), builder’овский проект (мне влом разбираться, что здесь нужно, а что нет - выкладываю весь проект, ну и exe’шник.

Файлы: source (keyboard.h), source (builder project), exe.

PS. Ближе к вечеру сегодня появится еще одна лаба. :) 

Умань

C++ Classes: Graph

Originally published at Блог FX'а. Please leave any comments there.

После долгого отдыха от универа (как-то странно получилось, я на полтора месяца забил на домашние задания), возвращаюсь к программированию. Последняя лабораторная работа по “Абстрактным Типам Данных” (предмет на самом деле называется не так, но по сути на нем преподают как раз АТД) - класс графа.

Описание и вся документация по графу - в исходниках. Если нужно - могу выложить HTML’ные странички, сгенерированные cpp-doc’ом, хотя вы и сами можете сделать их. ;)

Так как это лаба модульная (к ней нужно делать отчет и прочее) - пришлось соорудить на скорую руку простенький GUI (делал в Borland C++ Builder), показывающий некоторые возможности графа. Его исходники я не выкладываю, они вряд ли будут кому-то интересны.

Файлы: source, gui (exe).

30 Май, 2007

Умань

Планы на неделю

Originally published at Блог FX'а. Please leave any comments there.

Такс… Много чего обещал. Буду исправлятся.

Планы на эту и следующую неделю таковы:

  1. CSS, если найду дизайнера
  2. C++
    1. Класс графа (если честно, сделанный так сяк, сил уже нет моих лабы делать)
    2. Класс-обертка для работы клавиатурой
    3. Поиск подстроки в строке за сублинейное время - поглядим, как получится

Отложенные:

  1. PHP
    1. Zend Framework ModelDb-класс, боюсь просто не осилю продолжение
    2. Краткий обзор CodeIgniter, тоже будет, но не в ближайшие 2 недели

Пока что все. Что будет дальше - как жизнь покажет.

6 Май, 2007

Умань

GIF ↔ BMP

Originally published at Блог FX'а. Please leave any comments there.

Как я и обещал - продолжение рассказа о сдаче лабораторных по “Методам и средствам компьютерных информационных технологий”. Сегодня будет рассказ о [почти] последней лабораторной.

Для начала - сдавал я эту лабу полторы недели назад, просто все не было времени и/или желания писать об этом.  Пришел я на пару к параллельной группе, т.к. ждать своего урока у этого препода мне было влом. Пришел и офигел. Целая куча народу стоит над ним и ждет, пока он примет у кого-нибудь лабу и перейдет к следующему. А препод особо не спешил, сидел с каждым минут по 15-20 (это мне потом рассказали)… Ну я влез вместо кого-то и в итоге показал лабу 3-м из всего списка желающих. Показывал сначала на своих файлах (которые благополучно захватил из дома). Он посмотрел, посмотрел и говорит “а можешь поменять кое-что в проге и заново скомпилировать”… Я ему - “ну, если уж очень сильно нужно - то да, но мне тут долго настраивать нужно и т.д.”. В итоге препод сдался, но заставил меня создавать в Paint’е файлы и потом кодировать их туда-сюда. Моя программа благополучно все обработала и я со спокойной душой ушел домой. Правда перед этим препод пообещал дать еще одно задание, “вместо того, чтобы сдавать экзамен” - потому я и написал, что это была “почти последняя” лаба.

Теперь о самой лабе - кодирование в GIF я написал намного быстрее, чем раскодирование. Но самое главное - конвертация форматов сейчас реализуется через мой “графический формат”. Т.е. я сделал формат. который просто хранит нужные мне данные так, как мне удобно. Т. е. на самом деле GIF → BMP - это GIF → raw image (мой формат) → BMP. Raw-данные хранятся в оперативной памяти, и, хоть это и достаточно затратно по памяти, но дает дополнительные возможности. Например, можно подключить любой другой формат - нужно только дописать раскодирование этого формата в raw и кодирование из raw’а в этот формат. Собственно, таким образом я и добавил в программу формат BMP.

По просьбе читателей - я выложу все исходники GIF ↔ BMP, только предупреждаю - если вы захотите из этого сделать норм. конвертер - то все, написанное мной прийдется пересматривать и дорабатывать, причем достаточно сильно. Если действительно соберетесь делать что-то подобное - напишите мне - я помогу, и учавствовать в проекте буду, но только после того, как закончится семестр (а это будет после 10-го июня + экзамены).

Файлы: source, exe.

25 Апр, 2007

Умань

“Забивание” на универ

Originally published at Блог FX'а. Please leave any comments there.

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

Сегодня вот в очередной раз не пошел… Было 3 ленты (пары) , половину первой я проспал. Когда проснулся и понял, что на 1-ую уже никак не успеваю - решил забить и на вторую (там был один предмет, сначала практика потом лекция). К тому же выходить из дома не хотелось вообще - накануне на физкультуре потянул ногу, до сих пор болит жутко (к вечеру уже проходить стала). Но идти нужно было - намечалась “конференция” (а на самом деле просто собрание тех, кто более-менее говорит по англ., все из нашего факультета), на которую меня заставляла идти наша преподша. В итоге я встал и… В общем - я не пошел в итоге в универ по семейным обстоятельствам (нужно было кое-где появится)…

Сам на себя уже злой за такое… Раньше особо не прогуливал, а тут… Радует одно - оценки у меня все равно самые классные из всей группы.

Метки:

Предыдущие 20