Обновить
3
0
Михаил Богатырев @ksupipr

Марковевед

Отправить сообщение

Юнит-тестирование для чайников

Время на прочтение15 мин
Количество просмотров1.1M
Даже если вы никогда в жизни не думали, что занимаетесь тестированием, вы это делаете. Вы собираете свое приложение, нажимаете кнопку и проверяете, соответствует ли полученный результат вашим ожиданиям. Достаточно часто в приложении можно встретить формочки с кнопкой “Test it” или классы с названием TestController или MyServiceTestClient.



То что вы делаете, называется интеграционным тестированием. Современные приложения достаточно сложны и содержат множество зависимостей. Интеграционное тестирование проверяет, что несколько компонентов системы работают вместе правильно.

Оно выполняет свою задачу, но сложно для автоматизации. Как правило, тесты требуют, чтобы вся или почти вся система была развернута и сконфигурирована на машине, на которой они выполняются. Предположим, что вы разрабатываете web-приложение с UI и веб-сервисами. Минимальная комплектация, которая вам потребуется: браузер, веб-сервер, правильно настроенные веб-сервисы и база данных. На практике все еще сложнее. Разворачивать всё это на билд-сервере и всех машинах разработчиков?

We need to go deeper

Случайное распределение урона в RPG

Время на прочтение9 мин
Количество просмотров30K
image

Для вычисления урона от атаки в таких настольных ролевых играх, как Dungeons & Dragons, используются броски урона. Это логично для игры, чей процесс основан на бросках кубиков. Во многих компьютерных RPG урон и другие атрибуты (сила, очки магии, ловкость и т.д.) вычисляются по похожей системе.

Обычно сначала пишется код вызова random(), а затем результаты корректируются и подстраиваются под нужное игре поведение. В этой статье будут рассмотрены три темы:

  1. Простые корректировки — среднее значение и дисперсия
  2. Добавление асимметрии — отбрасывание результатов или добавление критических попаданий
  3. Полная свобода в настройке случайных чисел, неограниченная возможностями кубиков
Читать дальше →

Создание 3D-шахмат в Unity

Время на прочтение16 мин
Количество просмотров36K
image

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

В этом туториале мы создадим 3D-игру в шахматы на Unity. В процессе вы узнаете. как реализовать следующее:

  • Как выбирать перемещаемую фигуру
  • Как определять разрешённые ходы
  • Как менять игроков
  • Как распознавать состояние победы

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

40 «глупых» вопросов о CRM

Время на прочтение21 мин
Количество просмотров35K
Все, кто работают с клиентами, жаждущими купить ПО, хоть раз да слышали фразу «А можно глупый вопрос?». Как правило далее следует вполне адекватная речь, просто человек стесняется простых вопросов. А стесняться не нужно — ведь каждый из нас не может знать абсолютно всё. На то и есть профессионалы в разных сферах, чтобы разъяснять даже то, что им самим кажется очевидным.

Мы собрали 40 самых распространённых вопросов о CRM-системах и решили разом на них ответить. Конечно, мы не безумные оптимисты, чтобы полагать, что после этого поток иссякнет. Да и нет такой цели. Но если вы не знали и боялись спросить — читайте, сохраняйте, пользуйтесь. Только вопрос-ответ, никакой лирики.


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

11 лучших шрифтов для программирования

Время на прочтение3 мин
Количество просмотров292K
Много статей и сайтов сравнивают шрифты для программирования — всё это отличные ресурсы. Так зачем я опять поднимаю эту тему? Потому что сам всегда терялся в десятках шрифтов и не мог понять, какой лучше. Так что я опробовал много шрифтов и выбрал следующие для вас. Они довольно популярны и их легко получить. И самое главное, все эти шрифты бесплатны!

Я ранжировал шрифты по следующим показателям:

  • Насколько различимы схожие символы, такие как 0O, 1lI.
  • Легко ли читается шрифт (ширина строк, ширина/высота символов).
  • И мои личные предпочтения!

Все скриншоты сделаны в VSCode на одном фрагменте кода. Если не обозначено иное, то везде установлен размер "editor.fontSize": 14.
Читать дальше →

Глупые часы не такие уж глупые

Время на прочтение3 мин
Количество просмотров55K

ДО и ПОСЛЕ — почувствуй разницу

Почти год назад я писал про придуманные мной часы.
Закончилась та статья такой фразой: “Теперь в моих планах, когда ничто меня не торопит, сделать устройство более технологичным и решить пару вопросов, всплывших во время создания первой модели”. Как говорится — не прошло и года.

Самые первые часы, в итоге, перекочевали в комнату сына, т.к. они создают мягкое, уютное освещение и ему не страшно спать. А мне как раз этот свет мешал. И сейчас в моей спальне стоят часы версии 2.0 под кодовым названием LUMO. И они уже чуть поумнее.

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

Исследуем вопрос наказаний 2.0

Время на прочтение11 мин
Количество просмотров60K
Этот материал будет полезен в первую очередь тем, кто много занимался программированием и вдруг внезапно стал вынужден заниматься управлением проектами и людьми. С год назад я рассказал про наказания на конференции, а солнышки из Битрикса сделали текстовую версию для #habr. К сожалению, потеряв в точности, четкости и правильности акцентов. За год материала добавилось. В конце — чеклист для ленивых :)

Итак. Если вы не садист или моральный урод, а ваши сотрудники — не мазохисты, то сомневаюсь, что кому-то из вас наказания доставляют удовольствие. Мне — нет.
image
Читать дальше →

Как работает реляционная БД

Время на прочтение51 мин
Количество просмотров563K
Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.

На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
Читать дальше →

PostgreSQL: аналитика для DBA

Время на прочтение4 мин
Количество просмотров36K
Многие пользователи СУБД PostgreSQL знают, что сервер во время своей работы собирает разнообразную статистику, но не все знают, что ее полезно анализировать и как ее извлекать для этого. В этом небольшом тулките собраны несколько полезных запросов, дающих некоторое представление о том, как использовать это «скрытое знание», которое постоянно копится. Эти запросы можно использовать для мониторинга состояния PostgreSQL (ручного или с помощью плагинов для систем мониторинга вроде Nagios, Cacti или Zabbix), для поиска узких мест в работе сервера и многих других подобных задач. Помните, что это лишь верхушка айсберга; в документации можно найти описания нескольких десятков системных представлений, которые также могут быть полезны администратору PostgreSQL.
Читать дальше →

HighLoad++ — это блюдо, которое подают высоконагруженным

Время на прочтение6 мин
Количество просмотров21K


Пожалуй главным отличием конференции разработчиков высоконагруженных систем HighLoad++ от многих других является отсутствие скрытых целей. За нами не стоит ни одного лица или организации, которая бы навязывала правила игры или занималась хантингом на мероприятии, типа:
  • Крупной компании
  • Толстосума-спонсора
  • Государственных структур

Уже долгие годы HighLoad++ остается событием, которое одни разработчики организуют для других разработчиков.

Девять лет назад мы приняли для себя несколько строгих правил, которым стараемся неукоснительно следовать. Не будем перечислять их все — для этого еще придёт время, назовем лишь основные.
Читать дальше →

Правильный дизайн API: что такое «один», «много», «нуль» и «ничто»

Время на прочтение9 мин
Количество просмотров20K
Здравствуйте, наши постоянные и эпизодические читатели.

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

Приятного чтения
Читать дальше →

Сборщик почты (делаем простые вещи сложно)

Время на прочтение21 мин
Количество просмотров27K

В качестве предисловия


Наверное, многие из вас в своей практике сталкивались с задачей сбора почты с ряда ящиков. Зачем это может быть нужно? Наверное, потому что это универсальный механизм обмена данными между системами. Множество библиотек под любые языки, реализующих SMTP, POP3, IMAP, готовые решения по реализации стэка сообщений (как я сложно назвал почтовый ящик...) и т.д.

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

Кому достаточно приведенного ниже кода — дальше могут не читать:

         foreach (var mailbox in mailboxes)
                using (var client = new Pop3Client())
                {
                    client.Connect(Hostname, Port, false);
                    client.Authenticate(User, Password);

                    var count = client.GetMessageCount();
                    for (var i = 0; i < count; i++)
                    {
                        Mail = client.GetMessage(i + 1);
                        var cat = SortMail(Mail);
                        DoSomething(Mail, cat);
                    }
                }

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

Готовим Sublime Text 2 для front-end

Время на прочтение7 мин
Количество просмотров268K
Ни для одного опытного программиста или верстальщика не секрет, что настроенная под себя среда разработки (не в смысле IDE, а в более общем) — жизненная необходимость. Было время, когда я делал очередную верстку в практически голом Notepad++ на единственном мониторе, поочередно открывая Photoshop, браузер и редактор. Сегодня, в эпоху «автоматизации всего», мне сложно представить, как вообще можно было так работать.

Sublime Text 2 — популярный расширяемый кроссплатформенный текстовый редактор, для которого написано множество плагинов если и не на все случаи жизни, то на многие. В этом посте я попытаюсь рассказать как из этого конструктора сложить удобный инструмент front-end разработчика для работы с HTML, CSS и JavaScript.
Читать дальше →

Как найти работу в Германии

Время на прочтение4 мин
Количество просмотров146K

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

Вам календарик 2012

Время на прочтение1 мин
Количество просмотров2.9K


И вот опять вам календарик!

По сложившейся традиции канун 31 декабря я провожу поедая мандарины и обновляя календарик для Хабра.

В карман (100×70мм):
pdf, eps, svg или png (1185×836, 300dpi)

На стенку (A4):
pdf, eps, svg или png (3512×2487, 300dpi)

Сделай сам:
Генератор календариков (Python, CC-BY)

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

Постинг данных из скрипта во Вконтакт на публичную страницу

Время на прочтение3 мин
Количество просмотров9.5K

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

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

Dingoo A320 vs Gemei A330 — unboxing

Время на прочтение2 мин
Количество просмотров8.5K
И вот наконец-то мне пришли долгожданные Dingoo A320 и Gemei A330, которые бурно обсуждаются в комментариях к предыдущему посту. Как и обещал всем, выкладываю много фотографий (все они кликабельны) и свои первые впечатления.

Коробка посылки слегка помята, а наш доблестный DHL постарался и выбил из меня еще денег «за таможенное оформление», но все же они здесь:



Что же внутри?

Dingoo A320 за $49.50

Время на прочтение1 мин
Количество просмотров16K
Такое себе маленькое уведомление — сейчас можно купить известную хабра-людям портативную игровую консоль Dingoo A320 (wikipedia) всего за $49.50 (это уже с почтовым трекинговым номером). Почитать хабра-статьи про нее можно тут и тут.



Как это сделать?

40 механик для социальных игр

Время на прочтение4 мин
Количество просмотров30K
Разработчик игр Раф Костер (Raph Koster) составил всеобъемлющий список базовых правил, на которых основаны социальные отношения в играх (мультиплеер, параллельная игра и т.д.). Эти правила для разработчиков игры заменяют азбуку. Во многом они пересекаются с принципами игровой механики, которые уже обсуждались на Хабре.

Раф Костер приобрёл известность как создатель дизайна Ultima Online и креативный директор проекта Star Wars Galaxies, после чего основал собственную студию.
Читать дальше →

Коллаборационный подход в машинном творчестве

Время на прочтение5 мин
Количество просмотров3.8K

Введение


Природа человеческого творчества изучена ещё меньше, чем природа интеллекта. Тем не менее, машинное творчество, как направление в искусственном интеллекте, существует. Здесь поставлены проблемы написания компьютером музыки, литературных и живописных произведений, а создание реалистичных образов уже широко используется в кино и индустрии игр. Созданные системы позволяют производить конкретные образы, легко воспринимаемые человеком, что особенно полезно для интуитивных знаний, проверка которых в формальном виде требует значительных умственных усилий [1].
Под катом вас ждет краткий обзор предметной области, предлагаемый мной подход к написанию музыки компьютером и немного математики.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Уфа, Башкортостан(Башкирия), Россия
Работает в
Дата рождения
Зарегистрирован
Активность