Search
Write a publication
Pull to refresh
7
0
Garrett @Garrett

User

Send message

Spring — бесплатный движок с «поддержкой» Total Annihilation

Reading time3 min
Views3K
Думаю многие помнят такую замечательную игру как Total Annihilation? Кроме того недавно выходило продолжение Supreme Commander: кому-то оно понравилось, кому-то нет. А знаете ли вы, что при этом существует еще и open-source движок для RTS Spring? Для которого есть множество модов реализующих различные «самиздат» стратегии, но кроме этого есть возможность использовать ресурсы Total Annihilation (далее TA).

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


Читать дальше →

Entity Framework Code First на практике

Reading time4 min
Views99K
Здравствуйте!

В этой публикации хочу поделиться личным опытом использования Entity Framework (EF) в реальном приложении и дать несколько полезных советов использования данного фреймворка.

Я занимаюсь разработкой enterprise приложений на платформе .NET больше 7 лет, за это время перепробовал несколько ORM библиотек, но сейчас для новых проектов использую Entity Framework Code First.
Читать дальше →

О высшем образовании

Reading time10 min
Views132K
У каждого человека есть определенный кругозор. Когда этот кругозор сужается до бесконечности малого, то он обращается в точку. Тогда человек и говорит, что это есть его точка зрения.

Давид Гилберт



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

Освобождаем свободное место на жестком диске: WIMBoot

Reading time12 min
Views74K
Сегодня стационарные компьютеры начинают медленно уходить на задний план. Их место прочно занимают ноутбуки, а затем идут и планшетные компьютеры. Сочетание мобильности, высокой производительности и высокой скорости получения информации – все это является несомненным плюсом планшетов. Однако, и своя ложка дегтя у планшетов есть: это малый размер жестких дисков. Если диск 16, 32 и даже 64 ГБ, вовсе не хочется разбрасываться ценным пространством на установочные файлы. С выходом Windows 8.1 Update появилось решение этой проблемы – WIMBoot – новый способ установки ОС, обеспечивающий большее свободное пространство для пользователя.


Читать дальше →

Начало работы с ASP.NET Identity

Reading time4 min
Views98K
Многие из вас должны знать, что выход ASP.NET MVC 5 ознаменовался переходом на новую систему авторизации под названием ASP.NET Identity. Разработчики фреймворка настоятельно рекомендуют переходить на новую систему, называя основными ее преимуществами возможность внедрения в абсолютно любой проект (ASP.NET MVC, Web Forms, Web Pages, Web API и SignalR), простую социальную интеграцию, работу на OWIN, установку и обновление посредством NuGet и другие. Присмотревшись внимательнее к ASP.NET Identity, можно без зазрения совести сказать, что это — следующий этап в развитии веб-программирования на ASP.NET. В данном посте я размещу простой туториал для начала работы с ASP.NET Identity.
Читать дальше →

Программируем микроконтроллеры stm32 при помощи QtCreator

Reading time4 min
Views68K

Как-то так незаметно получилось, что программист, который разрабатывал нам прошивку для микроконтроллера, стал банально не успевать и в некоторые моменты я начинал перехватывать инициативу и самостоятельно браться за исправление ошибок.
Разработка велась в среде IAR, и многие согласятся со мной, что по сравнению с разработкой в QtCreator'е это боль и страдание.
В какой-то момент мы решили, что быстрее нанять нового программиста и вместе с ним заново переписать прошивку контроллера stm32, так, как я к этому моменту уже немного сам смыслил в их программировании и к тому же обнаружил, что QtCreator умеет отладку на голом железе (плагин BareMetal), я решил принять в этом активное участие.
Здесь я хочу поделиться шаблоном проекта для stm32f407 от Terra Electronica и рассказать об особенностях его настройки.
Читать дальше →

Lock-free стек для Windows

Reading time9 min
Views24K

Windows принято не любить. Однако, зачастую, фраза: «Книгу писателя не читал, но осуждаю» очень хорошо описывает эту ситуацию. Несмотря на укоренившееся презрение к «Винде», отдельные вещи в ней реализованы весьма удачно, и именно об одной из них мы хотели бы написать. Отдельные фрагменты WinAPI, хотя и были реализованы достаточно давно, по разным причинам, и часто незаслуженно, выпали из поля зрения широкой аудитории.
В этой статье речь пойдёт о встроенной в ОС реализации lock-free стека и сравнении его производительности с кросс-платформенными аналогами.
Читать далее

Back-инжиниринг Caesar III

Reading time11 min
Views73K
Мне нравится играть в игры, особенно в экономические стратегии, хочу рассказать про градостроительный симулятор из детства — Caesar III, как принято говорить, тёплый и ламповый. Игра была выпущена в 1998 году, знатоками своего дела, Impressions Games. Это экономический симулятор управления древнеримским городом в реальном времени. Через много лет я решил вновь пройти её, а затем постараться продлить удовольствие от игры, посмотреть ресурсы и вникнуть в игровую логику с точки зрения программиста.

Под катом я опишу процесс извлечения текстур, поиск игровых алгоритмов и расскажу как хобби превратилось в самостоятельный проект. А еще будет палитра RGB555, IDA, HexRays и немного кода.

Посмотреть, что под капотом

Пятьдесят оттенков инфракрасного

Reading time4 min
Views133K
Не знаю как вам, а мне всегда было интересно: как выглядел бы мир, если бы цветовые каналы RGB в глазу человека были чувствительны к другому диапазону длин волн? Порывшись по сусекам, я обнаружил инфракрасные фонарики (850 и 940нм), комплект ИК фильтров (680-1050нм), черно-белую цифровую камеру (без фильтров вообще), 3 объектива (4мм, 6мм и 50мм) расчитанные на фотография в ИК свете. Что-ж, попробуем посмотреть.

На тему ИК фотографии с удалением ИК фильтра на хабре уже писали — на этот раз у нас будет больше возможностей. Также фотографии с другими длинами волн в каналах RGB (чаще всего с захватом ИК области) — можно увидеть в постах с Марса и о космосе в целом.

Читать дальше →

Реализация слоя доступа к данным на Entity Framework Code First

Reading time11 min
Views30K


Приветствую!

В данном топике я хочу поговорить о слое доступа к данным (Data Access Level) по отношению к Entity Framework-у, далее EF, о том какие задачи стояли и как я их решил. Весь представленный код из поста, а также прикрепленный демо проект публикуется под либеральной лицензией MIT, то есть вы можете использовать код как вам угодно.
Сразу хочу подчеркнуть, что весь представленный код представляет собой законченное решение и используется более 2-х лет в проекте для достаточно крупной российский компании, но тем не менее не подходит для высоконагруженных систем.

Подробности под катом.
Читать дальше →

Получение указателя на объект .Net

Reading time5 min
Views27K

Сразу отвечу на вопрос «а зачем?». Просто интересно получить указатель на объект и потом подумать, что с ним особенного можно сделать :) Ведь если получить указатель, то дальше можно сделать все что угодно. Например, становится возможным изучить поведение SyncBlockIndex, или взять MethodTable и изучив, где что находится, изменить его содержимое. Можно мастерить собственные типы данных, не прибегая к Reflection. В общем можно делать много странных вещей, которые относятся больше к спортивному программированию и к саморазвитию. Однако, приступим.


Читать дальше →

Исправляем ошибки своими руками, или баг, который «никого не колышет»

Reading time8 min
Views54K
Недавно я уже поднимал волну о баге TCP стриминга камер, но тогда я её катил исключительно на китай. А проблема куда как шире. Для себя я проблему решил, страждущим выкладываю прошивки с фиксом.

А теперь садитесь поудобнее, я поведаю вам об этом баге подробно.
Читать дальше →

Ещё один NAS своими руками, часть 3: приключения XXX в старой башне

Reading time26 min
Views72K
Интересно, мечтал ли кто-нибудь в детстве затолкать десяток шпиндельных дисков в свой домашний ПК и вообразить себя бравым Командиром Сервера? Что же, после цехов ИКМ, узлов космической связи, кабельных жгутов толщиной с баобаб, ЦОДов разных мастей и прочих весьма насыщенных железом помещений детские мечты, наконец, сбываются.
Но просто воткнуть десяток шпинделей в «башню» недостаточно, их ещё надо раскрутить, обдуть, залить файловой системой, предоставить доступ, разграничить права и потом ещё следить за здоровьем. Мы расскажем довольно подробно, как это сделать с комфортом для себя. При этом мы не станем петь молебны очередному серверному корпусу известной марки СтупорМиксер, а выступим в жанре рационального минимализма с железякой за $30 и сосредоточимся на софте и полезных мелочах. Ещё из этого поста читатель узнает о том, куда пропадает почти половина мощности у обычного блока питания, о волшебстве телеметрии, о некоторых стилях юниксового кунгфу, о кучерявом разграничении прав доступа без ACL (да, бывает и такое!) и к чему приводит использование старых дисков в новых серверах. Пасхальные яйца и обещанная история XXX рассеяны по посту;-)

Но сперва я хочу рассказать, как деталь стоимостью менее $1 может «испортить» диск за $100. Это весело, обещаю.
Читать дальше →

Кроссплатформенное приложение на Qt: Mac App Store

Reading time7 min
Views15K
После завершения разработки под OS X может остаться ощущение незавершенности — для полного счастья хотелось бы видеть свое приложение в каталоге, тем более, что это, пожалуй, лучшая площадка для продажи десктопных приложений. На эту тему есть статья времен Qt 4.8 в официальном блоге, и еще более старая на хабре. К счастью, больше нет необходимости пересобирать Qt, однако с приходом OS X 10.9 некоторые баги стали критичными, приходится выкручиваться.
Читать дальше →

Как делают печатные платы: экскурсия на завод Технотех

Reading time13 min
Views215K
Сегодня мы выступим в немного непривычном для себя амплуа, будем рассказывать не о гаджетах, а о технологиях, которые стоят за ними. Месяц назад мы были в Казани, где познакомились с ребятами из Навигатор-кампуса. Заодно побывали на расположенном близко (ну, относительно близко) заводе по производству печатных плат — Технотех. Этот пост — попытка разобраться в том, как же все-таки производят те самые печатные платы.
image
Итак, как же все-таки делают печатные платы для наших любимых гаджетов?
Читать дальше →

Откуда «мыло» в WPF и как с ним бороться

Reading time21 min
Views83K


Это руководство для WPF-разработчиков, стремящихся добиться максимально чёткой картинки в своих приложениях. Графическая система WPF до мозга костей векторная, но конечным результатом её работы по-прежнему является растр. Если не уделить этому факту должного внимания, можно столкнуться с различными сортами «мыла» — паразитными артефактами растеризации. В такой ситуации важно не терять присутствия духа, причины их возникновения вполне рациональны, а методы борьбы достаточно просты и эффективны.
Читать дальше →

Парсинг формул в 40 строк

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

5 способов сравнить два байтовых массива. Сравнительное тестирование

Reading time32 min
Views51K
секундомерВ результате профилирования моей софтины я сделал вывод о необходимости оптимизации функции сравнения буферов.
Т.к. CLR не предоставляет стандартного способа сравнить два куска памяти, то функция была написан на скорую руку самостоятельно (лишь бы работало).
Погуглив по фразе «Best Way to Compare Byte Arrays in .Net», я пришёл в замешательство: в абсолютном большинстве случаев люди предлагали использовать либо LINQ, либо Enumerable.SequenceEqual(), что практически одно и тоже. Даже на StackOverflow это был самый популярный ответ. Т.е. катастрофически популярно заблуждение вида:

«Compiler\run-time environment will optimize your loop so you don't need to worry about performance.» Отсюда.

Именно оно впервые навело меня на мысль написать этот пост.
Я провёл сравнительное тестирование пяти способов сравнения буферов, доступных из C#, и на основании результатов тестирования дал рекомендации в выборе способа.
Кроме того, я декомпилировал некоторые функции, и проанализировал код, генерируемый JIT-компилятором для конфигурации x86, а так же сравнил машинный код, генерируемый JIT-компилятором, с машинным кодом функции CRT аналогичного назначения.
Читать дальше →

Кроссплатформенное приложение на Qt: Предисловие

Reading time2 min
Views26K
Qt — по-настоящему замечательная библиотека, позволяющая перенести программу на другую операционную систему простой перекомпиляцией. И если разработчик не использовал чего-нибудь ОС-специфичного, она таки будет выглядеть и работать почти как родная. После разработки основного функционала, при которой различия минимальны, наступает стадия полировки и доводки — об этом и будет рассказывать настоящий цикл статей.


Читать дальше →

Кроссплатформенное приложение на Qt: Иконка

Reading time2 min
Views25K

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

Для начала следует подготовить исходники в разных разрешениях (Windows, OS X, Linux), которые мы будем запекать в файл иконки. Необходимо добавить, что разрешения для OS X в таблице ниже условны, и в идеале иконки одинакового размера должны быть разной степени детализации, для обычных и Retina-дисплеев.
16
32
48 64
128 256
512
1024
OS X*
* * * * * * *
Linux * * * * *
Windows * * * *
Читать дальше →

Information

Rating
Does not participate
Location
München, Bayern, Германия
Date of birth
Registered
Activity