Как стать автором
Обновить
Дмитрий Адодин @ad1Dimaread⁠-⁠only

Пользователь

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

Квантовые вычисления и язык Q# для начинающих

Время на прочтение13 мин
Количество просмотров77K
Возможно, вы узнали о выпуске пакета средств квантовой разработки Quantum Development Kit и подумали, что это звучит безумно круто… а потом вспомнили, что про квантовую механику почти ничего не знаете. Но ничего страшного. Через 30 минут вы будете знать о кубитах, суперпозиции и квантовой запутанности достаточно, чтобы написать свою первую программу и, что более важно, неплохо понимать, что она делает.

Читать дальше →
Всего голосов 50: ↑48 и ↓2+46
Комментарии21

Постмортем Shadow Tactics: Blades of the Shogun

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


В прошлом году немецкий разработчик Mimimi Productions привлёк большое внимание к своей игре в жанре тактического стелса реального времени Shadow Tactics: Blades of the Shogun, вдохновлённой такими старыми проектами, как Desperados и Commandos.

Shadow Tactics имеет интригующий дизайн (см. эту статью о механике динамического распознавания). Она стала огромным успехом для Mimimi — несмотря на то, что в процессе выпуска компания едва не развалилась. Подробнее о том, как это произошло (и о том, какие уроки извлекли разработчики) можно прочитать в этом честном постмортеме игры, написанном коллегами-основателями Mimimi Иоганнесом Ротом и Домиником Абе.

Около года назад Mimimi была ещё мало кому известна. Наша предыдущая трёхмерная экшн-адвенчура The Last Tinker: City of Colors показала себя хорошо, но не собрала большой аудитории.

К декабрю 2016 года наши самые большие мечты осуществились: Shadow Tactics: Blades of the Shogun, наше признание в любви к Commandos и Desperados, наконец вышла и завоевала признание игроков и прессы.

В то же самое время мы были почти банкротами и уже уволили бо́льшую часть команды. У нас уже не было денег, чтобы пережить ещё один месяц.

В этом постмортеме два основателя Mimimi Доминик Абе (креативный директор) и Иоганнес Рот (управляющий директор) подробно расскажут о том, в чём они были правы, а в чём (ужасно) ошиблись.
Всего голосов 39: ↑38 и ↓1+37
Комментарии14

Ключевые анонсы Connect(); 2017

Время на прочтение5 мин
Количество просмотров8.5K
Привет, Хабр! В Нью-Йорке в эти дни проходит ежегодная конференция Microsoft Connect 2017. На ней уже анонсировали множество обновлений существующих продуктов и большое количество новых инструментов. Под катом читайте о самых интересных из них.


Всего голосов 23: ↑23 и ↓0+23
Комментарии2

[DotNetBook] Реализация IDisposable: правильное использование

Время на прочтение22 мин
Количество просмотров37K
С этой статьей я начинаю публиковать целую серию статей, результатом которой будет книга по работе .NET CLR, и .NET в целом. Тема IDisposable была выбрана в качестве разгона, пробы пера. Вся книга будет доступна на GitHub: DotNetBook. Так что Issues и Pull Requests приветствуются :)

Disposing (Disposable Design Principle)



Сейчас, наверное, практически любой программист, который разрабатывает на платформе .NET, скажет, что ничего проще этого паттерна нет. Что это известный из известнейших шаблонов, которые применяются на платформе. Однако даже в самой простой и известнейшей проблемной области всегда найдется второе дно, а за ним еще ряд скрытых кармашков, в которые вы никогда не заглядывали. Однако, как для тех, кто смотрит тему впервые, так и для всех прочих (просто для того, чтобы каждый из вас вспомнил основы (не пропускайте эти абзацы (я слежу!))) — опишем все от самого начала и до самого конца.

IDisposable



Если спросить, что такое IDisposable, вы наверняка ответите что это

public interface IDisposable 
{
	void Dispose();
} 


Для чего же создан интерфейс? Ведь если у нас есть умный Garbage Collector, который за нас чистит всю память, делает так, чтобы мы вообще не задумывались о том, как чистить память, то становится не совсем понятно, зачем ее вообще чистить. Однако есть нюансы.

Примечание


Глава, опубликованная на Хабре не обновляется и возможно, уже несколько устарела. А потому, прошу обратиться за более свежим текстом к оригиналу:




Читать дальше →
Всего голосов 45: ↑40 и ↓5+35
Комментарии66

Как стать тимлидом и не взорваться

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


Два года назад я начал негласно исполнять роль iOS-lead в компании Touch Instinct и формированием стабильной работы iOS-отдела. Спустя полгода это трансформировалось в официальную должность. Из-за отсутствия опыта у меня возникало огромное количество проблем, которые вызывали жжение в области верхней части кресла. Это происходило из-за ряда факторов:


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

Если вы стали лидом и первоначальная эйфория сменилась небольшим горением и унынием, то пара советов не будет лишней.

Читать дальше →
Всего голосов 92: ↑89 и ↓3+86
Комментарии24

Сибирь? Медведи? Код! Или как мы посетили CodeFest

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


В эти выходные с блеском прошла крупнейшая конференция за Уралом — CodeFest! Было очень познавательно, весело и зажигательно, и за это нужно поблагодарить прекрасных организаторов, волонтеров и спикеров! Ну, и конечно же, спонсоров, в число которых второй год подряд входит и DevExpress.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии3

Видеозаписи докладов конференции мобильных разработчиков MBLTdev 16

Время на прочтение3 мин
Количество просмотров9.1K
Привет, Хабр! Мы открыли для всех-всех-всех доступ к видеозаписям докладов Международной конференции мобильных разработчиков MBLTdev 16:

  • доклады по iOS- и Android-разработке,
  • воркшоп по Firebase от Google,
  • трек по UX/UI от преподавателей Британской высшей школы дизайна.


Всего голосов 14: ↑13 и ↓1+12
Комментарии1

Малоизвестные Git-команды

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


У Git есть строгие обязательства по обратной совместимости: многие продвинутые возможности скрыты за разнообразными опциями, а не применяются как поведение по умолчанию. К счастью, Git также поддерживает и алиасы, так что вы можете создавать свои собственные команды, которые делают всю характерную для Git магию. Под катом — подборка полезных (или как минимум забавных) алиасов, определённых в моём .gitconfig.
Читать дальше →
Всего голосов 188: ↑162 и ↓26+136
Комментарии43

WPF — Floppy Pages

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

Реализация нового Frame в стиле IOS


Или проще говоря — Frame в стиле Modern UI.

Здравствуйте, очень устал пользоваться стандартным VK на Windows 10. Его горизонтальная навигация меня утомила и как то она не вписывается в общий дизайн. Ещё очень давно хотел реализовать такое дело, а именно: плавная навигация как на iPhone. Для чего? Для того, что я хочу сделать свой VK клиент на WPF. Для начала покажу общую картину:
image

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

Начну с namespace UFC.UI. Так как на каждой странице может находиться несколько кнопок, то мне пришлось создать интерфейс:

Читать дальше →
Всего голосов 17: ↑13 и ↓4+9
Комментарии13

Разгоняем сборку Swift проекта в Xcode

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

image
Статья о том как починить инкрементальную компиляцию в Xcode для Swift проектов и ускорить build phases для Cocoapods и Carthage, ничего не поломав.


Небольшой спойлер: на трех разных проектах получилось сократить время инкрементальной сборки в 9 раз!


Туториал несет сугубо практический характер с минимумом воды. Обязательно к прочтению для действующих iOS разработчиков.


Читать дальше →
Всего голосов 18: ↑15 и ↓3+12
Комментарии21

Иммиграция вместе с Крымом в Россию

Время на прочтение4 мин
Количество просмотров31K
Увлекшись чтением иммиграций на Хабре, решил рассказать историю одного весьма неординарного переезда из одной страны в другую.

Откуда — куда


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

image
Читать дальше →
Всего голосов 117: ↑68 и ↓49+19
Комментарии93

Тюнинг Swift компилятора. Часть 2

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

image


Продолжение исследования способов ускорить компиляцию Swift. Издевательство над семантическим анализатором и неожиданные настройки проекта.


Ссылка на первую часть для тех, кто пропустил.


Всего голосов 23: ↑20 и ↓3+17
Комментарии4

Тюнинг Swift компилятора. Часть 1

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

image


Обзор Swift 3 компилятора и способы его ускорить. Часть 1.
Развенчание существующих мифов. Мнение о проблемах autocompletion в Xcode.


Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии44

Разгоняем производительность iOS-приложений

Время на прочтение10 мин
Количество просмотров11K
image
Тормоз для броненосца USS Indiana BB-1, 1910 год. Эта штуковина должна тормозить корабль водоизмещением 10453 тонны.

Оригинал: iOS App Performance: Instruments & beyond
Автор: Igor M

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

Как разработчики, мы также хотим, гордиться своими приложениями.

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

Для того, чтобы иметь возможность оптимизировать производительность вашего приложения, вы должны принимать решения, основанные на данных. В этой части я покажу, как получить эти данные путем измерения производительности различных частей вашего приложения.
Всего голосов 20: ↑19 и ↓1+18
Комментарии0

Вводим текст красиво

Время на прочтение8 мин
Количество просмотров53K
Сырые, но важные данные вроде номеров телефонов или кредиток — это именно то, что пользователи чаще всего вводят в наших приложениях. И с этим есть огромная проблема. Перепроверять 16 цифр своего Мастеркарда или 11 цифр номера телефона — это сущий ад для любого юзера. Решать эту проблему, естественно, приходится разработчикам, от лица которых я и пишу этот пост.

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

Для начала хотелось следующего:

  1. Указал маску вроде +7 (___) ___-__-__
  2. Повесил её на EditText
  3. ...
  4. PROFIT

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

Начав работать над этим направлением, мы осознали, что создание полноценного языка описания формата — это сродни написанию своего RegEx-движка, что, честно говоря, в наши планы не входило. В итоге мы пришли к варианту, когда такой язык при необходимости можно добавить в любой момент (даже в клиентском коде) или пользоваться простеньким DSL, доступным из коробки (что в нашей практике решило 90% задач).

Посмотрев на то, что получилось, мы решили, что это круто, и надо бы поделиться с сообществом. Так у нас и родилась библиотека для Android-разработки Decoro. И сейчас я покажу пару фокусов из её арсенала.
Читать дальше →
Всего голосов 45: ↑44 и ↓1+43
Комментарии27

Enums + Associated Values = Swift

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

Swift — значит быстрый. Быстрый — значит понятный, простой. Но достичь простоты и понятности непросто: сейчас в Swift скорость компиляции так себе, да и некоторые моменты языка вызывают вопросы. Тем не менее возможность перечислений (enum'ов), про которую я расскажу (associated values — присоединяемые значения) — одна из самых крутых. Она позволяет сократить код, сделать его понятнее и надёжнее.



Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии17

Парсинг JSON — это минное поле

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

JSON — это стандарт де-факто, когда заходит речь о (де)сериализации, обмене данными в сети и мобильной разработке. Но насколько хорошо вы знакомы с JSON? Все мы читаем спецификации и пишем тесты, испытываем популярные JSON-библиотеки для своих нужд. Я покажу вам, что JSON — это идеализированный формат, а не идеальный, каким его многие считают. Я не нашёл и двух библиотек, ведущих себя одинаково. Более того, я обнаружил, что крайние случаи и зловредная полезная нагрузка могут привести к багам, падениями и DoS, в основном потому, что JSON-библиотеки основаны на спецификациях, которые со временем развиваются, что оставляет многие вещи плохо или вообще не задокументированными.

Читать дальше →
Всего голосов 170: ↑164 и ↓6+158
Комментарии60

Как объяснить бабушке, что такое Agile за 15 минут с картинками

Время на прочтение7 мин
Количество просмотров1.2M
«Любое дело всегда длится дольше, чем ожидается, даже если учесть закон Хофштадтера.»
— закон Хофштадтера

image

Самый просматриваемый ролик на YouTube по теме agile. 744 625 просмотров на момент публикации данной статьи. Легкий стиль изложения, картинки и всего 15 минут — лучшее что я видел. TED отдыхает.
Всего голосов 72: ↑63 и ↓9+54
Комментарии36

iOS 10: Notification Content Extension

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

В этой статье речь пойдет о новой возможности в iOS 10 — Notification Content Extension. Это разновидность расширения, которая позволяет отображать пользователю собственный интерфейс при взаимодействии с уведомлением (remote или local). И отдельно коснемся того, что можно, а что нельзя делать в этом новом расширении — в том числе насколько оно гибко настраивается и конфигурируется.
Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии2

Повышаем эффективность работы в Xamarin.Forms

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


Друзья! Очередная статья на тему разработки мобильных приложений на Xamarin. Мы не прекращаем рассматривать особенности использования Xamarin.Forms при разработке бизнес-приложений для iOS и Android. Все статьи из колонки можно найти и прочитать по ссылке #xamarincolumn
В прошлой статье мы рассмотрели, как можно повысить продуктивность при разработке мобильных приложений с использованием Xamarin, а также отметили базовые механизмы повышения производительности бизнес-приложений на базе Xamarin.Forms.

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

Что такое бизнес-приложения?


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


Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии15
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность