Записи с меткой «уроки»

Полезные уроки на различные темы программирования и веб-разработки

WordPress MU и битва с www

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

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

Предположим, на сайте example.com мы хотим сделать основным адресом не собственно example.com, а www.example.com. При этом блоги третьего уровня не должны обрести адрес sub.www.example.com вместо привычного sub.example.com.

Все указания даются для WordPress MU версии 2.8.6, который я использовал на своём сайте. Тестовый сайт работает на WordPress MU 2.8.6 и BuddyPress 1.1.3 без ошибок.
(далее...)

Фейерверк OpenGL

Не за горами Новый 2010 год, замечательный, любимый всеми поколениями праздник. И само собой, такой праздник никогда не обходится без красивейших салютов, озаряющих небо над городом. Год назад на новый 2009 год в Саранске на центральной площади был просто превосходный салют. Вдохновлённый этим прекрасным зрелищем, я попытался хоть как-то воспроизвести его на своём компьютере. Получилось весьма неплохо, ну а об остальном судить уже читателю ...

Фейерверк на OpenGL

Фейерверк на OpenGL

Скачать саму программу и исходники можно по ссылкам в конце статьи.
(далее...)

Искуственный интеллект

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

Искусственный интеллект (ИИ) (англ. Artificial intelligence, AI) — это наука и разработка интеллектуальных машин и систем, особенно интеллектуальных компьютерных программ, направленных на то, чтобы понять человеческий интеллект. При этом используемые методы не обязаны быть биологически правдоподобны. Но проблема состоит в том, что неизвестно какие вычислительные процедуры мы хотим называть интеллектуальными. А так как мы понимаем только некоторые механизмы интеллекта, то под интеллектом в пределах этой науки мы понимаем только вычислительную часть способности достигнуть целей в мире.

Wikipedia.

Хоть нам и неизвестно, что такое интеллект, тем более искусственный интеллект (в дальнейшем ИИ или AI), попробуем создать идею и очертить круг интеллектуальных задач для элементарной системы.

(далее...)

Физический симулятор

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

Я поставил перед собой задачу написать простой физический симулятор и реализовать его работу в реальном времени в многопоточном режиме.

Кое-что из этого даже получилось!

Скриншот - Физический симулятор

Скриншот - Физический симулятор

(далее...)

Менеджер памяти MC Heappie

В наше время при разработке мало-мальски сложных проектов просто необходимо использовать динамическую память под переменные – уместиться в рамки предопределённых массивов и переменных стало просто невозможно, а динамические структуры, будь то связанные списки или деревья, являются сейчас неотъемлемой частью любой программы. В то же время стандартные средства выделения памяти в C/C++ отличаются некоторой медлительностью. Известно, что функции malloc / free очень плохо работают на большом количестве мелких переменных, а функция realloc вообще является ужасом для более-менее опытного программиста.

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

Определим круг задач и требований, которые мы предъявляем к менеджеру памяти:

1. Интерфейс менеджера должен содержать две основных функции – выделение памяти и освобождение памяти.
2. Функция выделения памяти mc_alloc () должна получать на вход размер переменной, под которую необходимо распределить место.
3. Функция освобождения памяти mc_delete () должна освобождать память по указанному адресу.
4. Менеджер памяти должен обладать универсальностью – не должно существовать ограничений на объём выделяемой памяти.
5. Объём памяти, нужный для работы самого менеджера, должен быть минимален – желательно не более 10% от размера выделяемой памяти.
6. Необходимо достигнуть производительности минимум в два раза выше, чем контроллер памяти malloc/free в C/C++.

Существует множество подходов к распределению памяти системы. Мы не будем рассматривать их все – Интернет и так кишит информацией на эту тему. Лучше перейдём напрямую к самому алгоритму менеджера памяти MC Heappie.

(далее...)

Страница 3 из 41234