Pull to refresh
-10
0
Сергей @tac

Программист

Send message

Алгоритм «diamond-square» для построения фрактальных ландшафтов

Reading time12 min
Views118K
Карта игры Minecraft, созданная с помощью приложения CartographДумаю, многие знакомы с весьма необычной игрой Minecraft (справа — пример сгенерированной в ней карты), в которой игрок находится на (практически) бесконечной поверхности Земли и может исследовать окружающий мир с минимальными ограничениями.

Как же автору игры, Notch'у, удалось добиться подобного сходства его случайных «миров» с земными просторами? В этом топике я как раз и рассмотрю один из способов построить искусственный ландшафт такого рода (и вскользь упомяну пару других способов), а также расскажу о моем небольшом усовершенствовании этого алгоритма, позволяющем значительно увеличивать размеры ландшафта без заметных потерь в производительности.

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

Читать дальше →
Total votes 148: ↑147 and ↓1+146
Comments58

Браузерная игра «Киберсеть» — успехи и неудачи проекта

Reading time5 min
Views5.4K
Игра «Киберсеть» — это браузерная пошаговая игра с воссозданием экономики и устоев общества. Её отличительная черта в том, что сами игроки могут совершенствовать игровой мир изобретая и создавая разнообразные продукты. Эта игра в отличии от аналогов не требует постоянного присутствия в игре, но в ней и не нужно мучительно долго ждать пересчета игровой ситуации. Вы просто играете когда у вас есть время управлять агентом.


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

А играть можно здесь.

Читать дальше →
Total votes 18: ↑7 and ↓11-4
Comments24

Настройка и оптимизация MySQL сервера

Reading time9 min
Views315K
В этой статье будут описаны различные настройки MySQL, преимущественно те, которые влияют на производительность. Для удобства все переменные разделены по разделам (базовые настройки, ограничения, настройки потоки, кэширование запросов, тайминги, буферы, InnoDB). Сначала уточним имена некоторых переменных, которые изменились в версии 4 MySQL, а в сети продолжают встречаться и старые и новые варианты имен, что вызывает вопросы.
Читать дальше →
Total votes 180: ↑171 and ↓9+162
Comments19

Браузерная игра «Киберсеть» — социально-экономическая стратегия

Reading time4 min
Views6.8K
Два месяца назад я описал идею об этой игре (см. Экономическая симуляция как игра для программистов), после чего откликнулось достаточно много энтузиастов. В силу разных причин более менее постоянных участников осталось 2-3. Первое время шло у нас как-то медленно, но уйдя в отпуск я нашел для этого побольше времени. И вот встречайте первый прототип. По сути уже можно полноценно играть, но возможны баги и некоторые неудобства, но надеюсь не критичные. При улучшении игры состояние всех игроков будет сохранено.

И далее я уже даже запланировал второй этап развития игры. Но обо все по порядку…

Но можно все это не читать, а сразу играть :) — Браузерная игра «Киберсеть»

Читать дальше →
Total votes 17: ↑8 and ↓9-1
Comments123

GridView, и с чем его едят (часть вторая, большая)

Reading time11 min
Views21K
В прошлой вводной части я немного познакомил тех, кто не был знаком, с элементом GridView, предназначенным для отображения табличной информации на форме. Я рассказал о том, что GridView (для своего удобства я буду называть этот элемент далее везде как гридвью) можно связать с источником данных. Источников может быть несколько типов. В моих примерах везде будет в качестве источника использоваться ObjectDataSource.

а дальше?
Total votes 26: ↑20 and ↓6+14
Comments25

GridView, и с чем его едят

Reading time3 min
Views17K
В этом топике я расскажу об одном замечательном контроле ASP.NET GridView. Многие новички, я думаю, часто встречаются с проблемами в использовании этого контрола. Так же проблемы были и у меня. Отмечу, что в одиночку использовать данный контрол смысла почти нет. Всю свою мощь он проявляет при использовании с каким-либо из источников данных: SqlDataSource, LinqDataSource, ObjectDataSource и другие.
В своих примерах я буду использовать ObjectDataSource.
а дальше?
Total votes 21: ↑13 and ↓8+5
Comments21

Автоматизация тестирования Web-приложений

Reading time13 min
Views107K


Автоматизация тестирования – место встречи двух дисциплин: разработки и тестирования. Наверное поэтому, я отношу эту практику к сложным, но интересным.

Путем проб и ошибок мы пришли к следующему технологическому стеку:
  1. SpecFlow (опционально): DSL
  2. NUnit: тестовый фреймворк
  3. PageObject + PageElements: UI-абстракиця
  4. Контекст тестирования (информация о целевом окружении, пользователях системы)
  5. Selenium.WebDriver

Для запуска тестов по расписанию мы используем TFS 2012 и TeamCity.
В статье я опишу, как мы к этому пришли, типовые ошибки и пути их решения.
Читать дальше →
Total votes 39: ↑29 and ↓10+19
Comments21

Универсальный код C# под .NET и JavaScript

Reading time19 min
Views36K

Введение


Приветствую вас, хабравчане. В данном топике я хотел бы осветить подробности разработки на C# под разнородные целевые платформы, в первую очередь такие как .NET и браузер (JavaScript). В качестве примера желающие могут изучить веб-сервис по обработке фотографий gfranq.com, в котором реализована клиентская и серверная обработка фотографий с помощью фильтров, а также функциональность коллажей на основе материала, описанного в данной статье.

Так как я не умею подбирать картинки для привлечения внимания, то она будет по теме:


Технические подробности под катом
Total votes 57: ↑53 and ↓4+49
Comments20

Многопоточный сервер на C# за 15 минут

Reading time11 min
Views333K
C# довольно простой и гибкий язык. Вместе с .NET поставляется довольно много уже готовых классов, что делает его еще проще. Настолько, что вполне можно написать простой многопоточный HTTP-сервер для отдачи статического содержимого всего за 15 минут. Можно было бы использовать уже готовый класс HttpListener и управиться еще быстрее, но цель этой статьи — показать, как вообще можно сделать нечто подобное в C#.
Читать дальше →
Total votes 94: ↑77 and ↓17+60
Comments72

Git и публикация сайта

Reading time4 min
Views114K
При попытке отредактировать этот старый пост слетело всё форматирование. Может быть я его когда-нибудь исправлю.

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

Основные преимущества:
  • Делая push из удалённой копии мы автоматически обновляем live-копию сайта
  • Правки файлов на сервере не будут разрушать историю коммитов
  • Простота, не нужны особые правила выполнения коммитов
  • Можно применить к уже запущенному сайту, без повторного деплоя или перемещения файлов
посмотреть, что там такое
Total votes 99: ↑88 and ↓11+77
Comments49

Экономическая симуляция как игра для программистов

Reading time6 min
Views28K
Хотелось бы создать некую игру экономической симуляции и рассказать какого рода она может быть и почему она представляет интерес. Причем интерес не только игровой, но и научный в рамках искусственного интеллекта. Т.е. так чтобы программисты могли писать ботов, задачей которых было бы управлять предприятием/игровым агентом автоматически. Поэтому хотелось бы найти единомышленников.

Наибольший интерес представляет тут то, что 1000 реальных игроков играющих по сети могут создать достаточно интересную среду. Пример этого я нашел в игре «Виртономика» (о которой вкратце расскажу). Ни какой идеальный симулятор розничных продаж не будет так интересен. А игроки делают ошибки или выбирают те или иные акценты при развитии. Отсюда поведение которое потребуется от автомата управляющим таким предприятием будет не банальным в рамках известных методов, и тут есть что изучать.

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

Читать дальше →
Total votes 44: ↑29 and ↓15+14
Comments75

Навигация: вариант реализации для корпоративного приложения

Reading time19 min
Views14K
За мою карьеру от простого разработчика до архитектора приходилось работать над приложениями разного масштаба и степени сложности. Последние несколько лет я работал над системой управления школами и системой управления медицинскими препаратами. Приходилось решать различного рода проблемы, связанные с навигацией по приложению. Но в зависимости от используемых фреймворков, не всегда удавалось найти удобное решение. Всегда казалось, что чего-то не хватает.

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

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

В данной статье я бы хотел рассмотреть один из вариантов реализации навигации по приложению, шаг за шагом, описывая задачи, которые приходилось решать и к каким результатам это всё привело.
Читать дальше →
Total votes 21: ↑17 and ↓4+13
Comments5

GamePlay 3D Framework — лёгкий старт в кроссплатформенную разработку 3D игр

Reading time13 min
Views32K
Доброе время суток, уважаемые хабражители!

Прослушав курс по компьютерной графике в университете и вдоволь наигравшись с OpenGL, я решил, что пора бы уже двинуться дальше и попробовать себя в разработке игр. Писать с нуля свой движок, прямо скажем, не очень-то хотелось. Главной целью было скорее посмотреть как это делается, вынести уроки и может быть создать что-то на базе выбранного движка. Беглый поиск показал, что с открытыми кроссплатформенными движками немного туго. У одного проблемы с Linux, Windows или Mac OS, у другого со свежими версиями мобильных ОС, третий почти заброшен… Но я-таки наткнулся на один очень привлекательный экземпляр, о котором и хочу поведать в этой статье.

gameplay

Имя этому фреймворку — GamePlay 3D. Информации о нём на просторах интернета не очень много, чего уж говорить про рунет. Это open source фреймворк написанный на C++ для программирования игр на C++ со всеми вытекающими из этого достоинствами и недостатками. Авторы проекта позиционируют его как универсальный инструмент, эдакий аналог cocos2d для 3D игр. Чтобы начать писать на GamePlay 3D не нужно обладать глубокими знаниями OpenGL, GLSL или математики 3D графики, однако все мы понимаем, что для достижения хорошего результата от этого никуда не деться. Подробности и небольшой пример для старта под катом.

Читать дальше →
Total votes 31: ↑29 and ↓2+27
Comments13

Qt — трудности перевода

Reading time6 min
Views63K
Вы написали программу на Qt и хотите перевести ее на другие языки, что бы сделать ее полезной для людей в других странах. Сделать это не просто, а очень просто. Для этого нам потребуется сделать всего три простых шага.
Читать дальше →
Total votes 43: ↑39 and ↓4+35
Comments6

Анализ генома бактерий. Продолжение

Reading time3 min
Views5.1K
В предыдущей статье, обсуждение получилось слишком крикливым. Но мы открыли свой сайт и там будет более расширенная информация (где? — пишите письма). Я обещал написать продолжение о своем эксперименте, поэтому те кто заинтересовался проблематикой построения эволюционных деревьев — прошу под кат.
Читать дальше →
Total votes 10: ↑6 and ↓4+2
Comments7

Проект «Геном прокариот» — научный стартап

Reading time11 min
Views13K
Этот проект был задуман давно. Лет 5 назад я считал, что многие результаты в геномике могут быть получены людьми далекими от биологии, коим я в полной мере являюсь. Конечно за это время я немного нахватался терминологии и немного узнал как работают специалисты. Но чем больше я узнавал как работают специалисты тем большие отторжение это у меня вызывало. Я считаю, что они явно много незаслуженно усложняют в результате чего непростая область становится непроходимой. В то время как все достаточно просто и качественно можно сделать. И да я с ними пытаюсь конкурировать (конечно, только в определенной узкой области), как бы наивно это не выглядело.

Вся проблема этого проекта — это то, что я его единственный полноценный участник. Конечно, я успел со многими за это время поговорить и многие оказали реальное влияние на проект. Всем им спасибо. Понятно, что некоммерческий проект не сильно может рассчитывать на успех. Да, действительно за каждым научным проектом стоит солидные около миллионные вливания и команда серьезных ученных. У нас этого нет, а есть лишь гуманизм и энтузиазм.

Поэтому в первую очередь я нуждаюсь в советах от тех у кого есть опыт в стартапе подобных проектов на не коммерческой основе. Во вторую очередь, нужна собственно команда программистов (от знания биологии, при необходимости, я вас освобожу :) ). А сейчас я хотел бы найти таких энтузиастов, которые могли бы обеспечить работу (скажем скромно) домашней веб-страницы проекта (прошу писать мне на почту tac@inbox.lv или личными сообщениями хабра). И конечно, важен любой другой отклик и предложения.

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

Читать дальше →
Total votes 23: ↑13 and ↓10+3
Comments110

Жизнь на плоскости Лобачевского

Reading time10 min
Views87K
Различные реализации игры «Жизнь» описывались на Хабре уже неоднократно. В этой статье, в качестве продолжения этой темы, рассматривается ещё один её вариант: в качестве игрового поля используется регулярная решётка на плоскости Лобаческого. Описываются общие методы использования плоскости Лобачевского в программах и необходимые для этого математические приёмы.
Как возникла плоскость Лобачевского, достаточно известно. В позапрошлом веке господа Гаусс, Лобачевский и Бойяи, проживавшие примерно в одно время в разных странах тогдашней Европы, задумались, что будет, если отменить пятый постулат Евклида и заменить его на противоположную аксиому. Оказалось, что не случится ничего плохого, и никаких противоречий не возникнет. Заметная часть последующего изучения неевклидовой геометрии была посвящена выяснению того, кто из них у кого украл идею этой самой геометрии.
Менее известно, что несмотря на «отрицательный» способ определения неевклидовой геометрии (вместо того, чтобы сказать, что через точку проходит ровно одна прямая, не пересекающая данную, мы говорим, что таких прямых может быть сколько угодно), мы, тем не менее, получаем систему теорем и формул, не менее стройную, чем та, что есть в евклидовой геометрии. И одновременно, у нас есть гораздо большее разнообразие геометрических фигур, в том числе, разбиений плоскости на правильные многоугольники.

Осторожно, много математики!
Total votes 255: ↑253 and ↓2+251
Comments64

Проблемы обновления модулей с одинаковым ComponentId

Reading time2 min
Views1K
В моих инсталяциях есть определенный набор файлов, который повторяется в разных продуктах/версиях продукта.

Естественно я сделал его в виде подключаемого файла для сборки в wix. Получилась ситуация что часть модулей в различных инсталяциях имеет одинаковый ComponentId.
Вроде как это допускается, поскольку у продуктов разный ProductId/UpgradeCode, а отслеживание компонентов ведется по связке ProductId.ComponentId. Это специально уточнялось в свое время в одном из блогов разработчика Wix.

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

Читать дальше →
Total votes 5: ↑1 and ↓4-3
Comments3

С чего начать изучение Windows Installer?

Reading time7 min
Views54K
Installer pic Технология Windows Installer (MSI) является стандартом де-факто в мире системных администраторов, занимающихся распространением и поддержкой программного обеспечения для десктопных и серверных версий Windows. Формат MSI поддерживается всеми крупнейшими системами управления конфигурациями (Microsoft SCCM, CA Unicenter и многими другими), а для некоторых систем распространения ПО — является единственным поддерживаемым форматом.
Мой опыт работы с этой технологией — как теоретический, так и практический — приобретен за время работы в компании «Инфопульс Украина» и связан с созданием MSI-пакетов и подготовкой готовых MSI-пакетов к автоматической установке в корпоративной среде.
Читать дальше →
Total votes 79: ↑67 and ↓12+55
Comments12

Предельная производительность: C#

Reading time56 min
Views263K
performanceЯ поделюсь 30 практиками для достижения максимальной производительности приложений, которые этого требуют. Затем, я расскажу, как применил их для коммерческого продукта и добился небывалых результатов!
Приложение было написано на C# для платформы Windows, работающее с Microsoft SQL Server. Никаких профайлеров – содержание основывается на понимании работы различных технологий, поэтому многие топики пригодятся для других платформ и языков программирования.
Читать дальше →
Total votes 135: ↑90 and ↓45+45
Comments289

Information

Rating
Does not participate
Registered
Activity

Specialization

Game Developer, Software Architect
Lead
C#
OOP
ASP.Net
MSSQL
Game Development
C++
Programming microcontrollers
Software development
WPF
Unity3d