Search
Write a publication
Pull to refresh
27
0
Валерий Северин @Selmaril

Разработка ПО

Send message

Направленное освещение и затенение в 2D-пространстве

Reading time8 min
Views49K

Добрый день, Хабравчане!
Хотелось бы рассказать об одном из способов отрисовки освещения и затенения в 2D-пространстве с учетом геометрии сцены. Мне очень нравится реализация освещения в Gish и Super MeatBoy, хотя в митбое его можно разглядеть только на динамичных уровнях с разрушающимися или перемещающимися платформами, а в Гише оно повсеместно. Освещение в таких играх мне кажется таким «тёплым», ламповым, что непременно хотелось нечто подобное реализовать самому. И вот, что из этого вышло.
Читать дальше →

Разработка Windows 8.1 приложений на XAML/С#. Часть 2. Работа с плитками

Reading time8 min
Views14K
image

Продолжаем модернизировать приложение, которое мы создали в прошлой статье.

Сегодня мы разберем как создавать плитки (Tile) для Windows 8.1 приложений и каким образом можно реализовать динамическое изменение контента на них.
Читать дальше →

DIY-диммер: путеводитель по компонентам

Reading time4 min
Views91K


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

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

Не стреляйте себе в ногу, используя LINQ

Reading time5 min
Views32K
В статье я описал несколько примеров неочевидных моментов при использовании LINQ to SQL. Если вы гуру .NET, вам, возможно, покажется это скучным, остальным — добро пожаловать!
Начнем с такого примера. Допустим, у нас есть сущность «тип действия». У типа действия есть human-readable имя и системное имя — некий уникальный идентификатор, по которому с объектами этой сущности мы сможем работать из кода. Вот такая структура в виде объектов в коде:

class ActionType
{
	public int id;
	public string systemname;
	public string name;
}

var ActionTypes = new ActionType[] {
	new ActionType {
		id = 1,
		systemname = "Registration",
		name = "Регистрация"
	},
	new ActionType {
		id = 2,
		systemname = "LogOn",
		name = "Вход на сайт"
	},
	new ActionType {
		id = 3,
		systemname = null,
		name = "Некоторый тип действия без системного имени"
	}
};

Для такой же структуры с аналогичными данными создана таблица в БД и вспомогательные объекты для использования LINQ to SQL. Допустим, нам необходимо выяснить, существует ли у нас тип действия с системным именем NotExistingActionType. Вопрос в том, что будет выведено на экран после выполнения этих инструкций:

var resultForObjects = ActionTypes.All(actionType => actionType.systemname != "NotExistingActionType");
var context = new LinqForHabr.DataClasses1DataContext();
var resultForLTS = context.ActionTypes.All(actionType => actionType.SystemName != "NotExistingActionType");

Console.WriteLine("Result for objects: " + resultForObjects + "\nResult for Linq to sql: " + resultForLTS);
Console.ReadLine();
Читать дальше →

Выпущены Яндекс.Навигатор и SpeechKit для Windows Phone

Reading time1 min
Views17K
Сегодня снова хорошие новости для Windows Phone: Яндекс выпустил свой Навигатор для Windows Phone:



Приложение умеет всё, что необходимо водителю за рулём: строит быстрый маршрут с учётом пробок, голосом рассказывает, куда ехать, и предупреждает о дорожных событиях. Навигатор будет полезен в поездках по России, Украине, Беларуси и Турции. Для всех территорий доступны подробные векторные карты.


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

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

Объектно-ориентированный бизнес: как работает франшиза

Reading time8 min
Views54K
Если сравнивать свой бизнес и франшизу — разница будет примерно как между использованием сторонней библиотеки или написанием собственной. Своя приносит глубокое моральное удовлетворение, сторонняя – работает.

Пример: По данным президента Российской Ассоциации развития франчайзинга из новых бизнесов течение первых 5 лет работы только 14% компаний, открытых по франшизам, закрываются по различным причинам — против 85% закрытых самостоятельных компаний. UPD: тут был пример из детального исследования в США, но в комментариях мы ковыряем источник, не всё так радужно. В России нормальной независимой статистики пока нет, но, как говорят профильные издания, ситуация близка к тому, что франчайзинг переживает второй год в восемь раз чаще. И это, кстати, отлично понимают банки: например, предлагают специальные льготные кредиты для бизнеса, открытого по франшизе.

image
Кусочки из нашего франчбука: полностью готовый «код», который просто надо воплотить.

Но вернёмся к этой объектно-ориентированной модели бизнеса и трём её главным качествам: наследовании, инкапсуляции и полиморфизму. Ну и заодно рассмотрим грабли, по которым мы ходили. В целом, франчайзинг для бизнеса — это примерно то же, что WEB 2.0 для Интернета. Ниже ликбез, почему.
Читать дальше →

Microsoft выпустила программу для бесшовной циклической анимации

Reading time2 min
Views67K
При просмотре GIF-анимации или других зацикленных роликов всегда заметен переход от конца видеоролика к началу, как бы скачок на исходную позицию. Специалисты из Microsoft Research выпустили программу автоматической обработки видео, которая элегантно решает эту проблему.



Алгоритмы работы описаны в научной работе. Если вкратце, то программа изолирует все движущиеся объекты в кадре, определяет скорость их движения. После этого осуществляется оптимизация движения элементов таким образом, чтобы первый и последний кадр видеоролика совпадали. Грубо говоря, некоторые объекты нужно чуть замедлить, а другие — чуть ускорить. Оптимизация практически незаметна на глаз и выглядит очень естественно (см видео под катом).
Читать дальше →

Ущербно-ориентированное программирование

Reading time6 min
Views89K
Ущербно-ориентированное программирование — это набор подходов, поощряющий повторное использование кода и гарантирующий долгосрочное использование производимого программистами кода в боевых системах. Количество строк кода является повсеместно применяемым показателем значимости приложения, а количество строк, которые программист пишет за рабочий день — полезная метрика, применяемая при планировании проектов и распределении ресурсов. Ущербно-ориентированное программирование — это один из наиболее эффективных способов получить наиболее объемный исходник в кратчайшие сроки.

Ущербный — имеющий изъян, неполноценный. Вредный, недостаточный.

Наследование


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

Как инвестировать $100 000 в собственную карму (часть 3, финальная)

Reading time4 min
Views6.2K


Окончание первого (и надеемся не последнего) рассказа о создании и жизни проекта Patrolife.

Часть 1 (рождение идеи и мучение с GPS трекерами)
Часть 2 (приложение для iphone)

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

Эффективное обучение C# разработчиков или Правильное программирование на C# с нуля

Reading time6 min
Views268K

Эффективное обучение C# разработчиков или Правильное программирование на C# с нуля (Фишки для новичков в программировании организационного характера)



Добрый день тебе, Читатель.

Причиной написания этой статьи стало моё увлечение C# и некотоые наблюдения, изложенные ниже.
Я и помогавшие мне тренеры по избранной мной дисциплине, применяли свой опыт и наблюдательность, преследуя простую цель: Хоть кому-то облегчить жизнь программиста, сделать обучение лучше и удобней. К тому же это такое, своего рода, инсайдерство — Чистой воды GNU философия, приложенная к Майкрософтовскому продукту.

Как и многие другие, я столкнулся с отсутствием систематических и позволяющих получить понимание предмета материалов, рассчитанных на людей, к программированию ранее отношения не имевших. Говоря иначе, стало ясно, что — Нету в Укрнете такого ресурса или библиотеки с online консультантом профи, которые давали бы возможность взять и понять основы программирования. Вы скажете, минуточку, а как же Сертификационные центры Майкрософт. Есть ещё мощный и системный «Кибер Бионик Систематикс». Есть академия «ШАГ», прости Господи, ставшая притчей во языцех. Но все же обучающая. Все же…
Конечно, всё это есть. Платно, но ладно — «Бог с ними». Лишь бы доступно. Лишь бы с пользой для людей…
Здесь речь пойдёт не совсем об этом. Здесь статья о Старте. Той ситуации, когда человек хочет научиться и ищет информацию. Ищет. Ищет. Хочет. Очень хочет. И, всё-же, находит (Речь же всё таки идёт о наших студентах:) и, конечно-же, делает ошибки (Речь же всё таки идёт о наших студентах:).
Вот на их (ошибок) базе и базе здравого чувства юмора, мы и построили данный материал.
Надеемся, он понравится Вам.
Читать дальше →

История одного провала

Reading time5 min
Views33K
У нас на заборе бумаге написано очень много букавок о том, как управлять проектами. Столько же, если не больше закорючек посвящено тому, какие истории успеха из этого выходили. Тошнотно, неинтересно, задолбало. Рассмотрим историю одного провала, это ведь всегда интересней и притягательней (видимо, в силу натуры человечьей больше злорадствовать, чем радоваться). Приступим.
Читать дальше →

ScienceHub #07: Нейроинтеллект и нейроморфные системы

Reading time8 min
Views13K
Не так давно мы съездили к нейрофизиологу Михаилу Бурцеву, заведующему лаборатории нейроинтеллекта и нейроморфных систем в Курчатовском Институте. Он рассказал нам, чем его сотрудники занимаются, что такое нейрональные культуры и для чего вообще-то нужно изучать мозг.

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

Что такое «проектная эффективность» для ИТ-шника

Reading time3 min
Views8K
Это небольшое исследование посвящено тому, как люди понимают слово «эффективность» в рамках ИТ-проектов. В заключении данной заметки вы найдете 4 простых вывода из этого исследования.

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

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

Целью данного обзора является освещение следующего вопроса: как понимают фразу «проектная эффективность» различные специалисты в сфере ИТ. Мы искренне надеемся, что данное небольшое исследование поможет найти общий язык в понимании термина «эффективность», что и будет первым шагом к достижению высокой эффективности в вашем проекте.
Читать дальше →

Что так с ООП и ФП, и что не так с программированием

Reading time4 min
Views26K
Так уж завелось на хабре, что на каждую холиварную статью «Pro» всегда найдётся статья «Contra».
Я тоже решил не оставлять в одиночестве пост «Что не так с ООП и ФП».



Прямо противоречить написанному смысла не имеет, там ведь описан «вкус», а, как известно, на вкус и цвет… каждый любит свой ЯП.
Нет никакой проблемы с ООП и ФП. Чистота функций — это всего лишь инструмент, равно как и «всё является объектом».
Критика права лишь в одном — в борьбе за миллиметры хорошо видны яркие прорехи, а в любых вырожденных методах недостатки ярко проявляются.
Другое дело, что любые невырожденные методы так же имеют недостатки, только их больше, зато они не так легко заметны.
Любители С++ гнобят полное ООП, Javа гнобит Си++ за неполное ООП, Haskell гнобит другие ФП за грязные функции, остальные ФП гнобят Haskell за излишне чистые функции.
Всё имеет свою оборотную сторону медали.
Тогда почему досталось всё объектам и функциям, а не массивам и указателям?!
Читать дальше →

Sprite Lamp: динамическое освещение 2D-объектов

Reading time2 min
Views67K
Австралийский разработчик indie-игр Финн Морган (Finn Morgan) разработал очень интересную и полезную технологию для динамической подсветки 2D-спрайтов Sprite Lamp. Изюминкой этой программы является то, что для подсветки объекта с произвольной точки не требуется построение 3D-модели.



Скоро каждый сможет использовать Sprite Lamp в своих играх.
Читать дальше →

Почему будущее за удалённой работой (часть 1)

Reading time4 min
Views76K
image

В последнее время тема удалённой работы стала особенно актуальной — достаточно вспомнить этот недавний пост на хабре, выход книги Remote от Джейсона Фрайда и приуроченный к запуску книги старт биржи поиска удалённых сотрудников от 37 Signals.
Сторонников у неё более чем достаточно, особенно среди работников, уставших изо дня в день добираться до офиса по сумасшедшим городским пробкам. Противников также немало и в первую очередь среди работодателей. Здесь я постараюсь объяснить, почему, несмотря на все минусы (многие из которых, к слову, либо временные, либо вымышленные), удалённая работа — это наше будущее, и будущее весьма близкое. Как человек из IT-индустрии, я конечно имею в виду в первую очередь её, но значительная часть этих наблюдений носит универсальный характер.
Сразу оговорюсь, я не хочу сказать, что работа в офисе уйдёт в небытие, она лишь превратится из единственного возможного способа в инструмент, решающий определённый спектр задач. Под катом список основных плюсов удалёнки для работника и работодателя, а в следующей части я постараюсь опровергнуть основные мифы, к которым часто апеллируют её противники.
Читать дальше →

Ввод периода: хватит терроризировать пользователей

Reading time3 min
Views8.2K
Двадцать лет назад, когда начал работать с корпоративными системами, был немало раздосадован тем, что при получении отчетов постоянно приходится вводить полную дату начала и полную же дату окончания периода. С тех пор сменились поколения процессоров, операционных систем, и т.д., а большинство программ по-прежнему требуют от пользователя лишних пальцедвижений для ввода даты начала и даты конца периода.
Читать дальше →

Делаем детектор движения, или OpenCV — это просто

Reading time11 min
Views115K
Надо оправдывать название компании — заняться хоть чем-то, что связано с видео. По предыдущему топику можно понять, что мы не только чайник делаем, но и пилим «умное освещение» для умного дома. На этой недели я был занят тем, что ковырял OpenCV — это набор алгоритмов и библиотек для работы с компьютерным зрением. Поиск обьектов на изображениях, распознание символов и все такое прочее.

На самом деле что-то в ней сделать — не такая сложная задача, даже для не-программиста. Вот я и расскажу, как.
Читать дальше →

Библиотека X.Scaffolding

Reading time4 min
Views13K


Внимание! Обновил пакет в NuGet. Подробности в конце статьи.

С выходом Visual Studio 2013, ASP.NET MVC 5 и Entity Framework 6 возможности скаффолдинга встроенные в Visual Studio стали еще лучше. Однако до сих пор создавая новое веб-приложение приходится делать много действий, которые можно было бы автоматизировать.
Поэтому для себя и разработчиков с которыми я работаю был создан пакет X.Scaffolding позволяющий более продуктивно создавать веб-приложения. Именно на основе этого пакета у нас сейчас разрабатывается большинство новых веб-приложений для работы с данными.

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

Warp9 — еще одна реактивная js библиотека. На этот раз компонуемая и без утечек

Reading time12 min
Views18K
Статья устарела, актуальную информацию ищите на сайте Warp9'а



Существует множество реактивных и около-реактивных библиотек для создания графического интерфейса на js: Angular, Knockout, React, RxJS… Спрашивается, зачем писать еще одну. Оказывается, во всех них, помимо фатального недостатка, есть еще несколько.

Под катом анализ существующих библиотек и краткое описание warp9.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity