вторник, 27 декабря 2011 г.

Elogviewer

Шикарная софтинка... показывает все логи в удобноперевариваемом виде... просто шикарно.
Я-то все думал,что у меня с видео преером не то.. а оказалось:

пятница, 16 декабря 2011 г.

Как видят резюме HP и программисты.

Все, перевожу резюме в LaTeX :)

четверг, 15 декабря 2011 г.

Gentoo tmpfs script

Заценил вот эту штуку, вроде все работает.
Идея в монтировании куска оперативки как диска и использование ее для компиляции, так как доступ к оперативке всяко быстрей, чем к жесткому диску (на форуме упоминается около 10% прирост, но мне кажется, что побольше будет).

среда, 14 декабря 2011 г.

Gentoo

- Stop! Everyone, who would like to pass should prove, that he can refuse love, sex and all wishes. That can take a years...
- Gentoo linux
- You can pass.

Хранитель заметок

http://www.wunderlist.com/home
*завтра досмотрю*

суббота, 10 декабря 2011 г.

Просматриваем логи обычным пользователем в gentoo

В gentoo по-умолчанию для логов используется syslog-ng. Но, мне очень портило жизнь, что логи можно было просматривать только рутом. Наконец-то дошли руки поправить это. 

Настройки syslog-ng находятся в файле /etc/syslog-ng/syslog-ng.conf

пятница, 9 декабря 2011 г.

XML::Parser error

Проблема: всплывающая ошибка error: XML::Parser perl module is required for intltool

1) Уточняем ошибку, запустив
#/usr/bin/perl -e "require XML::Parser" 
*Подробности см по первой ссылке*

среда, 7 декабря 2011 г.

A Pragmatic Approach to Performance

Об оптимизации, продолжение

Is premature optimization the root of all evil? Or is the fix-it-later attitude to performance turning programmers from proud ”computer scientists” to despicable ”script kiddies”?

пятница, 2 декабря 2011 г.

Оптимизация

Оптимизировать надо то, что тормозит
С моей точки зрения это и есть главное правило оптимизации. Очень часто я встречаю подход, при котором оптимизируется абсолютно весь код, на это уходят часы, а иногда даже недели или месяцы работы, и при этом особого результата не заметно. Обычно это происходит от того, что начинающие программисты считают, что исходный код программы будет работать быстро, если его перелопатить сверху до низу и выжать из него каждую микросекунду. Я не могу сказать, что такой подход к разработке программ совсем уж не верный – в некоторых ситуациях так делать и нужно. Но эти ситуации встречаются редко, гораздо чаще встречаются ситуации, когда из многих тысяч строк программы достаточно переработать лишь десяток-два строк кода и получить огромный прирост производительности.

среда, 30 ноября 2011 г.

This game is awesome

*add decsripton tomorrow*

понедельник, 28 ноября 2011 г.

Windows 7 GodMode

Вобщем-то можно собрать все настройки для Windows 7 в одном месте. Шобы это чудо зафигачить надо создать на рабочем столе создать папку с названием "GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}"


Взято тут

суббота, 19 ноября 2011 г.

Сравнение систем контроля версий

1. ClearCase 

Классный такой туалет. Есть биде, писсуары, толчки, рукомойники, одноразовые полотенца, все чистенько, светло, уютно. Регулярно убирается, поддерживается в тепле и чистоте. Рассчитан на очень большое кол-во пользователей. Пользоваться таким туалетом приятно, несмотря на то, что туалет платный. Платность туалета выражается не только в использовании, но и в саппорте — требует достаточно много регулярных вложений на поддержание текущего оборудования, канализации, света и прочего в порядке.  
В новых версиях говно извлекается из задницы автоматизированно — вакуумным насосом (иногда вместе с кишкой), изменить алгоритм посещения (например, помыть руки перед кабинкой) нельзя, задержаться поболтать тоже нельзя, а перед посещением надо породить problem case "захотелось в толчок". Каждая порция вторичного продукта заворачивается в свой отдельный пакетик с timestamp'ом посещения. 
Подключается к общей канализационной системе. 

воскресенье, 30 октября 2011 г.

Gentoo and Cairo-dock

Полдня потратил на настройку, но оно того стоило:
Upd: чуть подшаманил



Пока еще не все донастроил (таскбары слева и справа, наверное, уберу и доставлю conky - до сих пор с ним воюю с переменным успехом), но большинство проблем уже решил.
Самая большая проблема была в том, что Cairo-deck не емерджится просто так, а выдает ошибку:

* ERROR: x11-misc/cairo-dock-9999 failed (prepare phase):
 *   intltoolize failed


Вычитал, что это по причине ухода автора с Генты. Благо, вот тут он оставил нам наставления :)
Но обо всем по порядку.

суббота, 29 октября 2011 г.

Error in nano: "get_key_buffer(): key_buffer_len = "

You have the debug flag at make.conf?
If yes add this line

Code:
app-editors/nano -debug
at /etc/portage/package.use 
(echo "app-editors/nano -debug" >> /etc/portage/package.use)
and emerge -Nu nano


Source: http://forums.gentoo.org

вторник, 25 октября 2011 г.

allMargins.vsix disappears

Если погуглить один из самых полезных плагинов в MSVS 2010 - allMargins, можно увидеть, что "this item is not yet published", вот тут у майкрософта.


После пятиминутных поисков,я таки нашел ссылку на арабском сайте, если спросить у гугла "allmargins.vsix" (с кавычками, дабы искал словосочетание целиком).


Пруф-фотка: 


Собственно, сам экстеншен брать тут
UPD: залил на народ.ру

понедельник, 24 октября 2011 г.

0xc000007b Error Solution


Статья очень пригодилась. Ошибка была в том, что я случайно использовал 32-битную ДЛЛку,  хотя собирал под х64.

Two days ago I was working on a C++ project using OpenCV, when suddenly my project couldn’t run anymore!

I just have changed my OpenCV dlls to parallel version and ended up with this Error: "The application was unable to start correctly (0xc000007b). Click OK to close the application." every time I tried to run my application.

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

Сегодня первый экзамен, по финскому...

... а я уже почти успел полюбить этот язык

понедельник, 17 октября 2011 г.

ai-class.com

Решил принять участие в курсах, но времени свободного почти нету. Посему боюсь, как бы не пришлось бросить на середине пути.
Судя по всему, русских у них оччень много - сломали сервер под первый дедлайн. Из-за этого, дедлайн перенесли на сутки вперед, что радует. В следующий раз буду больше времени планировать на ai-class, но где ж его взять-то? :)

вторник, 11 октября 2011 г.

воскресенье, 2 октября 2011 г.

Gentoo. My notes for everyday use.

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


четверг, 29 сентября 2011 г.

Фентинор. Первый уровень.

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


среда, 28 сентября 2011 г.

LinkedIN

Обновил инфу на LinkedIn. Кто хочет - добавляйтесь.

суббота, 24 сентября 2011 г.

Эволюция игр (со скриншотами)

История игр под катом
Кликабельно, приближабельно :)

четверг, 22 сентября 2011 г.

Разработка и итоги игры "Sieged!"

Мы – творческая артель New Art Games - недавно выпустили новую flash-игру. Играть можноздесь.
image

Игра представляет собой физическую головоломку. Цель игры – оглушить всех врагов подручными материалами. На этот раз мы использовали физическую библиотеку nape, и теперь совсем-совсем не хотим использовать box2d. Почему так, история разработки и некоторые итоги – под катом.

пятница, 16 сентября 2011 г.

Nvidia для ноутбуков

http://blog.komeil.com/2010/04/nvidia-driver-windows-7-notebook-laptop.html
Нашел крайне полезную и толковую статью по установке драйверов на лэптопы. Сохраню тут на всякий.

воскресенье, 11 сентября 2011 г.

Using Valgrind to Find Memory Leaks and Invalid Memory Use

Valgrind is a multipurpose code profiling and memory debugging tool for Linux when on the x86 and, as of version 3, AMD64, architectures. It allows you to run your program in Valgrind's own environment that monitors memory usage such as calls to malloc and free (or new and delete in C++). If you use uninitialized memory, write off the end of an array, or forget to free a pointer, Valgrind can detect it. Since these are particularly common problems, this tutorial will focus mainly on using Valgrind to find these types of simple memory problems, though Valgrind is a tool that can do a lot more.


суббота, 10 сентября 2011 г.

Solution to Power of Two Challenge

Нou can use  bitwise operators, in conjunction with a bit of math, to find out whether an integer is a power of two.

Solution to XOR Variable Swapping

So you have two variables, a and b; we'll assign a to be 5, and b to be 10. We want to store the value of a in b, and the value of b in a, but without using a temporary variable.
int a, b;
a = 5;
b = 10;

пятница, 9 сентября 2011 г.

вторник, 6 сентября 2011 г.

Финляндия

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

Фотки под катом :)
Кликабельно, снято на телефон, так что качество не очень.

суббота, 13 августа 2011 г.

Компиляция Irrlicht для 64-разрядной Win7

I would like to post my experience building the latest irrlicht svn (rev 2402) for x64 windows platform (Vista x64 SP2). 

Thanks for making the changes to irrlicht to make it more x64 friendly. 

Here's the needed steps to get irrlicht to build for x64 windows platform: 

1. Change 'WIN32' to 'WIN64' in 'C/C++->Preprocessor->Preprocessor Definitions' (VS 2008 SP1 paired with DX SDK March 2009). This step is needed to get around the following errors: 

CODE: SELECT ALL

Error   8   error C2664: 'SendMessageTimeoutA' : cannot convert parameter 7 from 'DWORD *' to 'PDWORD_PTR'   d:\SDK\irrlicht_svn\source\Irrlicht\CIrrDeviceWin32.cpp   568
Error   9   error C2664: 'SendMessageTimeoutW' : cannot convert parameter 7 from 'DWORD *' to 'PDWORD_PTR'   d:\SDK\irrlicht_svn\source\Irrlicht\CIrrDeviceWin32.cpp   578


2. Remove '/MACHINE:I386' from 'Linker->Command Line'. This step is needed to get around the following errors:


CODE: SELECT ALL

Error   1   fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'   d:\SDK\irrlicht_svn\work\debug64\CDefaultSceneNodeAnimatorFactory.obj   1


Now you're done! Well, except for the 48 warning messages :D


Taken here

среда, 3 августа 2011 г.

Если влом буст компилировать...

...необходимые библиотеки можно скачать отсюда http://www.boostpro.com/download/

VS2008: Fixing the Warning PDB ‘vc90.pdb’ not found

Project Configuration Properties -> C/C++ -> Output Files
Program Database File

ProgramDataBaseFileName=”$(TargetDir)$(TargetName).pdb”




Project Configuration Properties -> Linker -> Debugging
Generate Program Database File

ProgramDatabaseFile=”$(TargetDir)$(TargetName).pdb”


Спасибо этому блогу

Секреты гейм-девелопмента: 47 игровых механик (динамик)


Что заставляет миллионы людей ежедневно кормить несуществующих рыбок, покупать несуществующие дома и «прокачивать» пиксели в виде свиней до 9-го уровня?
Вашему вниманию предлагается перевод статьи с сайта Techcrunch о том, как компании-разработчики социгр создают Playbook’и – своеобразные сборники рецептов и схем, следуя которым можно создавать «супер-пупер-крутые» игры.
Пока Zynga шифруется, SCVNGR (разработчик социгр для мобильных платформ) натуральным образом «раскрывает карты».
Проект «Playdeck» от SCVNGR – это «колода карт, в которой описано около 50 различных игровых динамик, которые могут смешиваться, создавая фундамент для различных видов игр»

понедельник, 1 августа 2011 г.

Уравнение Бетмена

Концентрация Бетменов в крови уже измерялась, сейчас переходим к уравнениям Бетмена :)

четверг, 28 июля 2011 г.

What does it mean when a package is masked?

There are several levels of masking, with a range of severity. First, a description of keywording.

Keywords are a way of marking a package for a particular architectures.  Each architecture has a
keyword named after it (x86 for x86-class CPUs, amd64 for x86_64 class CPUs, mips, sparc, and so on).  Each version of a package has a list of the keywords that apply to that package.  There are four levels of keywording:

среда, 27 июля 2011 г.

Menu state machine

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

вторник, 26 июля 2011 г.

Седьмой день с Gentoo

Можно сказать, за неделю мое знакомство с Гентой прошло более чем удачно: ядро перекомпилировано уже раз 10, установка с нуля произведена уже 3 раза, привык чрутить, на Генте настроено и функционируют большинство драйверов, а так же удалось подружить Генту и Винду.

Время потрачено не зря :)

KDE


При установке пакета kdebase-startkde в итоге получаешь чистый desktop + Konqueror + Control Center. И всё.
После установки kde неплохо бы настроить графический вход в систему:
# emerge kdm

# nano /etc/conf.d/xdm
DISPLAYMANAGER="kdm"
# rc-update add xdm default

# /etc/init.d/xdm start

понедельник, 25 июля 2011 г.

Жизнь после установки


Здесь нет какого-то строго определённого плана действий, попробую набросать несколько советов. Неплохая идея сразу же проверить систему на бесхозные (ненужные) пакеты: # emerge -av --depclean. Также неплохая идея содержать систему в чистоте и после удаления пакетов подчищать за ними оставшиеся ненужные зависимости (всё тем же emerge -av --depclean). В конце в пункте 6 привожу листинг процесса, как он проходил у меня.

MiniHOWTO: FrameBuffer и SplashScreen в Gentoo Linux


В Ядре:
Graphics support
*Support for framebuffer devices
Enable Video Mode Handling Support
***Frame buffer hardware drivers
*VESA VGA graphics support
*EFI-based Framebuffer support
Обязательно убрать галку
[] Enable Title Blitting Support
Иначе не появится
Console display driver support
*Framebuffer console decoration.

воскресенье, 24 июля 2011 г.

Пятый день с Gentoo

Что тут могу сказать... при ошибках компиляции пакетов стоит смотреть лог и гуглить ошибку
Ставил Миднайт Коммандер, никак не мог увидеть в куске лога(который на экране остался) ошибку
Открыл лог через нано - увидел суть проблемы, загуглил, и нашел ответ тут

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

суббота, 23 июля 2011 г.

Четвертый день с Gentoo

Заметил, что команды выбраны довольно удобно: dev, sda пишутся фактически одним движением руки :)

пятница, 22 июля 2011 г.

Третий день с Gentoo

Перестал бояться пересборки ядра и чрута :)
Ужасно обрадовался, когда увидел голубые панели Миднайт Коммандера.
На четвертый раз собрал ядро с поддержкой видяхи + удачно поставил дрова и КДЕ
Да, теперь и у меня нескучные обои ^^

четверг, 21 июля 2011 г.

Второй день с Gentoo. Свои записки

Уже успел 2 раза пересобрать ядро: первый раз вообще с лоадером налажал, второй - все пошло ок (даже запустился не с бутсиди), но не стали некоторые дрова.
Повезло, что нашелся http://en.gentoo-wiki.com/wiki/Asus_P52Jc , где конфигурация подобна моей и расписано, где какие дрова подключать нужно

Upd: с третьего раза цель достигнута: инет есть и включается автоматически :)

Не забыть следующий раз потестить
http://ru.gentoo-wiki.com/wiki/%D0%A3%D1%81%D0%BA%D0%BE%D1%80%D0%B5%D0%BD%D0%B8%D0%B5_portage_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_tmpfs

Запишу-ка тут, чтоб не забыть
use: nano -w /etc/make.conf
nano /etc/portage/package.use



Как добавлять и удалять драйверы и модули ядра в ОС Linux

Вопрос: как мне добавить или удалить драйвер устройства в запущенное ядро Linux?

Ответ:
Для добавления и удаления модулей из ядра, в Linux существует команда modprobe.
В MS Windows используется термин драйвер устройства.
В Linux используется термин модули.
Ядро Linux имеет модульную архитектуру.
Во время загрузки, в память загружается только минимально необходимая часть ядра.
Если вы установили новое устройство, вам нужно установить драйвер которым является соответствующий модуль ядра.
Командой modprobe можно добавить или удалить модуль из ядра Linux.
Обычно модули находятся в специальной директории /lib/modules/$(uname -r)

Информация о железе в Linux


df -h − Информация о винтах (свободное/занятое место, куда смонтированы)

lspci -vnn − Информация о железе с драйверами
ls -lSr |more – выдаёт список файлов и директорий рекурсивно с сортировкой по возрастанию размера и позволяет осуществлять постраничный просмотр
du -sh dir1 – подсчитывает и выводит размер, занимаемый директорией ‘dir1′ (Прим.переводчика. ключ -h работает не во всех *nix системах)
du -sk * | sort -rn – отображает размер и имена файлов и директорий, с соритровкой по размеру
rpm -q -a –qf ‘%10t%n’ | sort -k1,1n – показывает размер используемого дискового пространства, занимаемое файлами rpm-пакета, с сортировкой по размеру (fedora, redhat и т.п.)
dpkg-query -W -f=’${Installed-Size;10}t$n’ | sort -k1,1n – показывает размер используемого дискового пространства, занимаемое файлами deb-пакета, с сортировкой по размеру (ubuntu, debian т.п.)



Источник вот

Sieged! - FGL trailer

Новая студийная флешка увидела мир ^^

среда, 20 июля 2011 г.

Почему объектно-ориентированное программирование провалилось?

Ричард Столлман также известен своим критическим отношением к ООП, особенно он любит шутить насчет мифа объектников что ООП "ускоряет разработку программ": "Как только ты сказал слово "объект", можешь сразу забыть о модульности". "ООП ради самой ООП уже давно превратилось в замкнутый круг. Конечно, можно считать C# в .NET 3.5 с более чем 50,000 реализованных классов "венцом эволюции". Добавить в  следующей версии .NET ещё миллион классов - что может быть более правильным и более вожделенным, с точки зрения ООП-программиста? Говорите, это и есть то самое бегство от сложности?" (на этом месте интервью Ричард демонстративно делает паузу и выкашливается от приступа смеха).

Команды Linux для работы в консоли

Памятка себе на первое время :)


В этой статье представлены многие базовые команды Linux. Для удобства команды разделены по разделам.
Цель с одной стороны чисто практическая. С другой стороны цель в том, чтобы показать мощь и красоту UNIX. Красота и лаконичность CLI. Удобство работы с консолью.

Например, любому пользователю виндовс приходилось заниматься нудной и скучной работой по переименованию файлов. В Linux всё намного проще:

# перевести все имена файлов и директорий в текущем каталоге в нижний регистр
for x in *; do mv "$x" "`echo $x | tr [A-Z] [a-z]`"; done


# удалить пробелы в именах файлов и директорий. Заменить пробелы символом подчёркивания '_':
for x in *; do mv "$x" `echo $x | sed -e 's/ /_/g'`; done

for x in *; do mv "$x" ${x// /_}; done # то же (чистый bash)

Первый день с Gentoo

Решил поставить на новый ноут Генту...
Полчаса, полет нормальный :)

вторник, 19 июля 2011 г.

Фентинор. Хроники. Второй билд системы смены дня и ночи

Добавили управление туманом и эмбиентом по 8 ключевым точкам на временной шкале.

Следующие шаги: атмосферное рассеивание, управление цветом неба и облаков + добивочные эффекты (Lens Flares и иже с ними).

четверг, 14 июля 2011 г.

Фентинор. Хроники. Система смены дня и ночи.

Система смены дня и ночи.
Сейчас это еще сырая версия с небольшим набором элементов. Система умеет динамично рисовать облака, красить само небо, исходя из данных о положении источника света (читай солнце). Так же даёт настраивать Ambient освещение по 8 ключевым позициям на временной шкале.

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


воскресенье, 3 июля 2011 г.

Релиз Final Borderline

123
Неделю назад состоялся релиз нашего нового flash-проекта - tower-defence игры Final Borderline. Качественная графика в постапокалиптическом стиле, атмосферная музыка и парочка игровых возможностей, разнообразящих тактику - всё это дало свой результат. Всего за неделю игра, расположенная только на сайте спонсора ArcadeBomb (+ на паре сайтов, которые берут себе игры без спроса) получила более 200000 геймплеев. 


Мы приглашаем и вас поиграть прямо сейчас


А в полной новости вы можете увидеть геймплейный ролик игры. Другие наши flash-игры можно найти тут.

пятница, 1 июля 2011 г.

Как компьютеры играют в шахматы

Немного о Гит

Нашел пару интересных ссылок, главное - не забыть почитать
http://habrahabr.ru/blogs/Git/123111/
http://nvie.com/posts/a-successful-git-branching-model/

Быстрое конвертирование float в string


string  help;
ostringstream os;


os << float_vatiable;


help = os.str();
   os.str(""); //clean stream


PS: нашел у себя


sprintf(buf, "FPS:%f", FPS() );
imguiValue( buf );

среда, 29 июня 2011 г.

Последствия нашей презентации

Для нас презентация была шагом довольно новым.

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

пятница, 17 июня 2011 г.

Хорошо там, где нас нет

Веб-программисты иногда думают о том, чтобы попрограммировать "по-настоящему". Не на PHP, а на C++. Лучше на С. Чтобы близко к железу. Это и есть настоящее программирование и там живут суровые системные программисты. И платят там больше. 

среда, 15 июня 2011 г.

Сегодня утром проснулся и обнаружил ЭТО...

Хорошее название для рекламы :)

А обнаружено было вот что:

понедельник, 13 июня 2011 г.

"Фентинор. Хроники" - презентация


Ура-ура-ура!
Наконец-то мы доделали большую видео-презентацию нашего большого проекта:

воскресенье, 12 июня 2011 г.

Что может Ctrl в Visual Studio


Одна простая клавиша Ctrl может значительно упростить работу в Visual Studio. Помимо типичных комбинаций, которые нам очень хорошо знакомы, существует также и большое количество других, менее известных, но от этого и более ценных.

 Далее список того, что можно делать с клавишей Ctrl.


 Редактирование и печать:

 Ctrl+C, Ctrl+V, Ctrl+X, Ctrl+S — самое очевидное
 Ctrl+P — мало ли, вдруг кому-то захочется распечатать свой код
 Ctrl+Del, Ctrl+Backspace — удаление слова справа от курсора, слева от курсора
 Ctrl+Enter, Ctrl+Shift+Enter — добавление строки над текущей, под текущей
 Ctrl+J — завершение ввода выражения
 Ctrl+U — перевод символа перед курсором в нижний регистр
 Ctrl+Shift+U — перевод символа перед курсором в верхний регистр
 Ctrl+= — выделение кода до предыдущего положения курсора
 Ctrl+Left, Ctrl+Right — переход к предыдущему слову, следующему
 Ctrl+Shift+Left, Ctrl+Shift+Right — выделение слова слева от курсора, справа от курсора
 Ctrl+K, Ctrl+C(комбинация) — закомментирование строки
 Ctrl+K, Ctrl+U(комбинация) — раскомментирование строки

суббота, 11 июня 2011 г.

Оценки времени исполнения. Cимвол O()

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

Рассмотрим алгоритм вычисления значения многочлена степени n в заданной точке x.

Pn(x) = anxn + an-1xn-1 + ... + aixi + ... + a1x1 + a0

Алгоритм 1 - для каждого слагаемого, кроме a0 возвести x в заданную степень последовательным умножением и затем домножить на коэффициент. Затем слагаемые сложить.

Вычисление i-го слагаемого(i=1..n) требует i умножений. Значит, всего 1 + 2 + 3 + ... + n = n(n+1)/2 умножений. Кроме того, требуется n+1 сложение. Всего n(n+1)/2 + n + 1= n2/2 + 3n/2 + 1 операций.


Алгоритм 2 - вынесем x-ы за скобки и перепишем многочлен в виде

Pn(x) = a0 + x(a1 + x(a2 + ... ( ai + .. x(an-1 + anx))).

Например,
P3(x) = a3x3 + a2x2 + a1x1 + a0 = a0 + x(a1 + x(a2 + a3x))

Будем вычислять выражение изнутри. Самая внутренняя скобка требует 1 умножение и 1 сложение. Ее значение используется для следующей скобки... И так, 1 умножение и 1 сложение на каждую скобку, которых.. n-1 штука. И еще после вычисления самой внешней скобки умножить на x и прибавить a0. Всего n умножений + n сложений = 2n операций.

пятница, 10 июня 2011 г.

Защитил диплом магистра :)

Наконец-то, аж не верится :)
Позже добавлю пару фоток с защиты

воскресенье, 5 июня 2011 г.

TinyEye - сервис для поиска картинок

http://www.tineye.com/
Обеспечивает поиск по картинкам, есть плагины для ИЕ, Сафари, ФФ и Хрома.

пятница, 3 июня 2011 г.

День рождения

Сегодня мне 23 и это ужасно :)
Все больше и больше я начинаю ненавидеть песню Сектора Газа "30 лет" хД

четверг, 2 июня 2011 г.

Обновил вопросы с собеседований

Раньше я записал сборник вопросов вот тут, сегодня решил дополнить.

среда, 1 июня 2011 г.

Майндмапы онлайн

Использовали сервис https://bubbl.us/ - ничего так, понравился. Боюсь, опять 9/10: анимация, дизайн и удобство работы на высшем уровне, но и есть некоторые неудобства в работе.

С полуночи до 4 утра сделали такую схемку фишек игры:

UPD: к вечеру следующего дня это дело разрослось еще больше:

понедельник, 30 мая 2011 г.

Process Monitor и Fiddler

На следующей неделе защита, времени отписываться тут особо нету...
Пока просто отмечу себе на будущее, что нужно сделать небольшой обзор Process Monitor ( http://technet.microsoft.com/ru-ru/sysinternals/bb896645 ) и Fiddler ( http://www.fiddler2.com/fiddler2/ ).

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

среда, 18 мая 2011 г.

IncrediBuild

Давно тут не отписывался - был занят дипломом. Решил сегодня потестить вышеупомянутую программу IncrediBuild - она позволяет использовать процессоры других устройств в сети для компиляции проекта. Официальный сайт проекта: http://www.xoreax.com/. Доступна 30-дневная триал-версия.

После скачивания, во время инсталляции выбираем что ставить: сервер (на этой машине будем собирать проект), или клиент (его процессор мы будем беспощадно использовать, как энергию людишек в Матрице :) ).

Сначала компилируем основной проект: он состоит из нескольких десятков классов + прекомпайлед хедер.
Rebuild all только на компьютере (2 ядра). Время: 0:50:
Rebuild all на компьютере и ноутбуке (4 ядра). Время: 0:46:
 Как видно, основное время занимает компиляция хедера. Однако, прирост слегка заметен.

 Теперь попробуем скомпилировать проект, в котором нету прекомпайлед хедера: log4cplus
 Rebuild all на компьютере (2 ядра). Время 3:00+:
 Rebuild all на компьютере и ноутбуке (4 ядра). Время 1:30:
Тут программа показала шикарный результат, хотя, в общем-то, его и следовало ожидать :)

Результат: программа работает как и ожидалось, дает вполне логичный прирост. На более крупных проектах и с большим количеством компьютеров в сети прирост ожидается просто отличный.
Единственное что не понравилось - не понятно, как программа выбирает файлы для компиляции: иногда выбор не очень удачен.
Однако, в целом, программа весьма полезна: 9/10.



среда, 4 мая 2011 г.

Решение проблемы "sdlmain.lib(SDL_windows_main.obj) : error LNK2019: unresolved external symbol _SDL_main referenced in function _main"

Сегодня около получаса бился над этим.. Решение подсказал английский форум геймдева
Оказывается, SDL перегружает функцию main() и определяет ее как
int main(int argc, char *argv[])

А у меня в проекте было
int main(int argc, char *argv)

Из-за этого и была ошибка :)
Надеюсь, кому-то еще это поможет.

Upd:
int main(int argc, char **argv)
тоже работает, спасибо nigmashumma

пятница, 22 апреля 2011 г.

Обновил информацию о Игрограде 2006 :)

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

четверг, 21 апреля 2011 г.

Углубление в С++

Последнее время, я заинтересовался работой компилятора (в частности, генерацией машинного кода из С++), и написанием оптимизированного кода в целом.

Вот довольно интересная ссылка на МСДН о оптимизации кода
Вот ссылка на старую, но довольно интересную статью Виртуальные функции - низкоуровневый взгляд
Первая ссылка в гугле, но тем не менее, все равно много интересного
Сравнение производительности работы с массивом на С++ и ассемблере.

Я планирую дополнять этот пост полезными ссылками.

Оставьте, пожалуйста, интересные ссылки по оптимизации в комментариях. Меня интересуют действительно интересные и/или редкие ссылки, не все подряд с гугла :)

вторник, 19 апреля 2011 г.

Фентинор. Хроники. Помещения цитадели WIP

А работа над сборкой все продолжается... Заканчиваю клиент- столкнулся с проблемой при подключении MyGUI (писал об этом ТУТ и ТУТ), но надеюсь закончить его на днях, так что, следующее видео будет уже не из редактора.
Кликабельно.