Как стать автором
Обновить
1
0
Евгений Бердников @evnik

.NET и iOS developer

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

Помогите стахановцу — увольте его сразу

Время на прочтение6 мин
Количество просмотров86K
Сидят себе люди, никого не трогают, работают потихоньку, получают деньги, выдают результат. Директор, в целом, доволен. Но чего-то не хватает – хочется больше, лучше, выше, эффективнее. Вкладываться в интенсивное развитие лень, да и знаний не хватает. Так, иногда скажет мимоходом, что надо бы лучше работать, все головой покивают, может даже составят перечень мероприятий по повышению эффективности и снижению затрат, чтобы дружно про него забыть.

Но тут приходит Он. Тот, кому Мало. Кто страстно хочет Больше. И открывает ящик Пандоры. Точнее, показывает директору, где этот ящик находится, и помогает провернуть ключ в замке.
Читать дальше →
Всего голосов 88: ↑62 и ↓26+56
Комментарии196

Flipper Zero — в шаге от финальной версии железа

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


Flipper Zero — проект карманного мультитула для хакеров в формфакторе тамагочи, который мы разрабатываем. Предыдущие посты [1],[2],[3],[4],[5],[6],[7]

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

Последние полтора месяца мы активно работали над валидацией железа, стараясь покрыть тестами все сценарии использования, и сейчас мы почти готовы залочить BOM и приступить к производству первых 50 Флипперов в формате EVT (Engineering Validation Test). Устройства из первой партии будут отправлены контрибьютерам, которые участвуют в разработке.
Всего голосов 90: ↑89 и ↓1+126
Комментарии44

Как я решил сделать игру, вдохновившись Heroes of Might and Magic, и потерял деньги (часть 1, 2)

Время на прочтение12 мин
Количество просмотров66K
Данная история будет состоять из трёх частей, т.к. я выпустил три игры:

  • Beasts Battle
  • Necromancer Returns
  • Magicians Legacy

Часть‌ ‌1


Для тех кто предпочитает смотреть, а не читать, я подготовил видео этой статьи.


В каждом выпуске будут цифры по каждой игре, какой бюджет и доход принесли игры…

Сразу скажу, я – фанат серии Heroes of Might and Magic и King's Bounty. Играл почти во все части и аддоны, за исключением седьмой части, т.к. время идет, жизнь меняется и на игры времени не осталось.
Всего голосов 106: ↑105 и ↓1+137
Комментарии108

Как я решил сделать игру, вдохновившись Heroes of Might and Magic, и потерял деньги (часть 3)

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

Данная история состоит из трёх частей, т.к. я выпустил три игры:

●     Beasts Battle

●     Necromancer Returns

●     Magicians Legacy

 

В прошлых частях я рассказал, как я пришел к разработке гексагональной пошаговой игры Beasts Battle и как не отбились мои расходы на игру Necromancer Returns.

Здесь можно почитать первую и вторую статьи. 

 

Фальстарт

В феврале 2018 года вышла игра Necromancer Returns, которая не оправдала мои ожидания по продажам, и я ушел в депрессию. Но в апреле 2018 года у меня возникла мысль сделать следующую игру на основе этого движка, только чтобы вся графика была уже нарисована в 3D и отрендерена под 2D в изометрии. Мысль была такая: “по-быстрому” придумать новый мир, нарисовать его, запихнуть новых юнитов — и готово. Я списался с художником, который подключился в конце разработки Necromancer Returns и стал для меня основным. Он полностью перерисовал весь интерфейс для мобильной версии Necromancer Returns, а потом мы обновили и версию в Steam. 

Читать далее
Всего голосов 37: ↑33 и ↓4+42
Комментарии38

Сериал «For All Mankind»: от альтернативной истории к трешу

Время на прочтение11 мин
Количество просмотров23K
Серьезная альтернативная история (а не «спецназовец Вася попал в палеолит и построил светлое будущее») хороша тем, что дает более широкую картину и позволяет понять, почему произошло именно то, что было в реальности, какие события были закономерны, а какие обязаны удаче или неудаче. Например, рассматривая альтернативную историю запуска первого спутника, становится ясно, что событие произошло закономерно, очень вовремя и в наиболее подходящей стране, а авария ракеты, стартовавшей 4 октября 1957 года, изменила бы только дату празднования. Поэтому я с большим интересом ждал выхода сериала «For All Mankind» («Для всего человечества»), обещавшего нам альтернативную историю лунной гонки. Увы, прекрасно начавшись, сериал, местами провисая, рассказывал вполне конкретную повестку и к последней серии скатился в треш.


Постер сериала

Под катом умеренные спойлеры, неизбежные при разборе технических моментов
Всего голосов 35: ↑32 и ↓3+45
Комментарии79

Взлом с помощью Юникода (на примере GitHub)

Время на прочтение3 мин
Количество просмотров25K
Юникод исключительно сложен. Мало кто знает все хитрости: от невидимых символов и контрольных знаков до суррогатных пар и комбинированных эмодзи (когда при сложении двух знаков получается третий). Стандарт включает 216 кодовых позиций в 17-ти плоскостях. По сути, изучение Юникода можно сравнить с изучением отдельного языка программирования.

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

Специалист по безопасности Джон Грейси продемонстрировал на примере GitHub баг проверки адреса электронной почты для восстановления забытого пароля. Подобные баги можно встретить и на других сайтах.
Читать дальше →
Всего голосов 53: ↑51 и ↓2+61
Комментарии59

Для тех, кто познаёт ушами: подкасты для разработчиков

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


Кто сказал, что разработчики могут учиться новому только через книги, видео и анализ чужого кода? Ведь у нас и другие каналы получения информации из окружающего мира. Конечно, речь не о том, чтобы попробовать знания на вкус, пощупать их или понюхать. А вот послушать — самое оно. Мы собрали для вас коллекцию действующих русскоязычных подкастов для разработчиков. Хороший способ дать глазам отдых или занять себя в пробках.
Читать дальше →
Всего голосов 83: ↑80 и ↓3+77
Комментарии57

«Высокий уровень самодисциплины». Джеффри Рихтер о том, как кодить, писать книги и создавать свои компании

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

Сегодня в нашей виртуальной студии один из самых известных дотнетчиков — Джеффри Рихтер.

В данный момент он — Partner Software Architect в Microsoft, работающий по направлению Distributed Cloud Apps & Storage. Иначе говоря, человек, который знает об Azure Storage всё.

F.A.Q.

Слишком много текста. О чём это всё?
Чтобы вам было веселей читать, для этой статьи мы придумали более интересную вёрстку. Слева будут говорящие головы, а справа — текст. Если вам уныло листать до интересующей части, то в оглавлении есть анкерные ссылки. В ролях:


Евгений phillennium Трифонов (нетехнические вопросы)
  • Советы разработчикам по созданию компании
  • Комбинирование разных видов деятельности
  • Что читать, что изучать, как писать


Олег olegchir Чирухин (технические вопросы)
  • Зачем Рихтер изучает JS, Golang и Python
  • Стоит ли продолжать писать на C++
  • Эволюция и будущее разработки на платформе Windows, .NET и вообще
  • Захватит ли JavaScript мир, нужна ли типобезопасность
  • Немного о пользе облачных провайдеров
  • Что лучше иметь — личный самолет или личный вертолёт
  • Как всё успевать



Почему эта статья попала в хаб JavaScript?
Только для тех, кому интересно мнение архитектора Azure относительно JS и его позиция в холиваре о типобезопасности. Этот холивар перетекает у нас из интервью в интервью, и конца ему не видно.


Почему эта статья попала в хаб С++?
Изначально Рихтер писал книги про C++. Только для тех, кому интересно мнение архитектора Azure относительно будущего и применимости C++


Джефф стал известен еще в начале 90-х, когда написал книгу о том, как программировать Windows 3.1. Его книга «Programming Applications for Microsoft Windows» стала классикой, позже выпускалась как «Windows via C/C++» и выдержала несколько изданий.

С появлением .NET он написал «CLR via C#» — тоже получилась классика, тоже несколько изданий. В то время он был одним из основателей компании Wintellect и, формально не будучи частью Microsoft, оказался более свободен в оценках. Чем и заработал репутацию крупного независимого эксперта по Windows. Это человек-легенда уровня Чарльза Петцольда и Дона Бокса.



Читать дальше →
Всего голосов 61: ↑60 и ↓1+59
Комментарии33

Парсинг и работа с Codable в Swift 4

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


Формат JSON приобрел большую популярность, именно он обычно используется для передачи данных и выполнения запросов в клиент-серверных приложениях. Для парсинга JSON требуются инструменты кодирования/декодирования данного формата, и компания Apple не так давно провела их обновление. В данной статье мы рассмотрим методы парсинга JSON с применением протокола Decodable, сравним новый протокол Codable с предшественником NSCoding, оценим преимущества и недостатки, разберем все на конкретных примерах, а также рассмотрим некоторые особенности, встречающиеся при реализации протоколов.
Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии18

Грязные трюки разработчиков видеоигр

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

Предыдущие части: раз, два, три.

Благодарим за игру!


В первой части Wing Commander при выходе из игры мы получали от нашего менеджера памяти EMM386 исключение. Экран очищался и на него выводилась единственная строка, что-то типа «Ошибка менеджера памяти EMM386. Бла-бла-бла».

Нам нужно было выпустить игру как можно быстрее, поэтому я отредактировал ошибку менеджера памяти в hex-редакторе, чтобы она выглядела как «Благодарим за то, что играли в Wing Commander».

— Кен Демарест

Читать дальше →
Всего голосов 88: ↑88 и ↓0+88
Комментарии55

«Герои Меча и Магии» в браузере: долго, сложно и невыносимо интересно

Время на прочтение22 мин
Количество просмотров104K
Как реализовать в браузере игру, на которой годы назад залипал без всякого браузера? С какими сложностями столкнёшься в процессе, и как их можно решить? И, наконец, зачем вообще это делать?

В декабре на конференции HolyJS Александр Коротаев (Tinkoff.ru) рассказал, как он сделал браузерную версию «Героев». Ранее уже появилась видеозапись доклада, а теперь для Хабра мы сделали ещё и текстовую версию. Кому удобнее видео — запускайте ролик, а кому текст — читайте его под катом:

Читать дальше →
Всего голосов 214: ↑210 и ↓4+206
Комментарии63

Почему я не подписываю соглашения о неконкуренции

Время на прочтение8 мин
Количество просмотров51K
После университета я устроился в IT-отдел компании по обработке платежей и взысканию долгов. Мой стол стоял рядом с колл-центром: я целыми днями выслушивал, как люди на пособии делают покупки не по карману и влазят в долги. Когда несколько продажников ушли и начали собственный бизнес, прихватив с собой клиентов, компания предприняла меры. Она заставила всех в офисе, от сотрудников на вводе данных до операторов поддержки, подписать соглашения о неконкуренции. Это было первое соглашение о неконкуренции, которое я отказался подписать. В течение следующих пятнадцати лет меня ещё несколько раз попросят подписать такие бумаги, всегда перед приёмом на работу. Я всегда отказывался, и до недавнего времени это никогда не становилось препятствием для приёма на должность.

Соглашение о неконкуренции обычно является частью стандартного трудового договора, предложения о работе или соглашения о неразглашении. В нём говорится, что работник в течение определённого времени (обычно один год) после увольнения обязуется не начинать бизнес, который конкурирует с бизнесом нынешней компании, или не работать на конкурента. Если это звучит незаконно, то в штате Калифорния так и есть.

В 2017 году Иллинойс принял закон, запрещающий такие соглашения для низкооплачиваемых работников, обычно со ставкой ниже $13 в час. Даже в штатах, где подобные контракты не запретили, их часто признают не имеющими законной силы. С чисто этической точки зрения они ограничивают одну из самых основных предпосылок капитализма: свободу выбора, на кого работать. Это соглашение фактически ставит работника в положение должника по отношению к нынешнему работодателю, хотя долг не финансовый.
Читать дальше →
Всего голосов 95: ↑91 и ↓4+87
Комментарии180

Swift Package Manager

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

Вместе с релизом в open source языка Swift 3 декабря 2015 года Apple представила децентрализованный менеджер зависимостей Swift Package Manager.

К публичной версии приложили руку небезызвестные Max Howell, создатель Homebrew, и Matt Thompson, написавший AFNetworking. SwiftPM призван автоматизировать процесс установки зависимостей, а также дальнейшее тестирование и сборку проекта на языке Swift на всех доступных операционных системах, однако пока его поддерживают только macOS и Linux. Если интересно, идите под кат.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии4

Как найти компанию спонсора визы в США. Tips and Tricks

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

image


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


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

Читать дальше →
Всего голосов 48: ↑39 и ↓9+30
Комментарии73

Релиз первой беты кросс-платформенного XAML UI-тулкита Avalonia

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

Состоялся релиз первой бета-версии Авалонии.


Avalonia — кроссплатформенный .NET UI-тулкит, вдохновлённый технологиями WPF и распространяемый под лицензией MIT. Он полностью поддерживает .NET Core 2.0, XAML, дата-биндинги, lookless-контролы и многое другое. Avalonia позволяет писать на C# приложения под Windows, Linux и Mac OS X. Возможность запуска на iOS и Android находится в экспериментальном состоянии.



Данная версия стабильна и имеет полное право называться бетой: тулкит не разваливается в руках и имеет приличный базовый набор контролов (см. видео). На нём создано два достаточно больших приложения с открытым исходным кодом: AvalonStudio — кроссплатформенная IDE для разработки на C# и C++ и Core2D — редактор 2D-схем и диаграмм.

Всего голосов 100: ↑97 и ↓3+94
Комментарии77

[DotNetBook] Stackalloc: забытая команда C#

Время на прочтение8 мин
Количество просмотров29K
С этой статьей я продолжаю публиковать целую серию статей, результатом которой будет книга по работе .NET CLR, и .NET в целом. Вся книга будет доступна на GitHub (ссылка в конце статьи).

В C# существует достаточно интересное и очень редко используемое ключевое слово stackalloc. Оно настолько редко встречается в коде (тут я даже со словом «редко» преуменьшил. Скорее, «никогда»), что найти подходящий пример его использования достаточно трудно а уж придумать тем более трудно: ведь если что-то редко используется, то и опыт работы с ним слишком мал. А все почему? Потому что для тех, кто наконец решается выяснить, что делает эта команда, stackalloc становится более пугающим чем полезным: темная сторона stackalloc — unsafe код. Тот результат, что он возвращает не является managed указателем: значение — обычный указатель на участок не защищенной памяти. Причем если по этому адресу сделать запись уже после того как метод завершил работу, вы начнете писать либо в локальные переменные некоторого метода или же вообще перетрете адрес возврата из метода, после чего приложение закончит работу с ошибкой. Однако наша задача — проникнуть в самые уголки и разобраться, что в них скрыто. И понять, в частности, что если нам дали этот инструмент, то не просто же так, чтобы мы смогли найти секретные грабли и наступить на них со всего маху. Наоборот: нам дали этот инструмент чтобы мы смогли им воспользоваться и делать поистине быстрый софт. Я, надеюсь, вдохновил вас? Тогда начнем.

Примечание


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





Читать дальше →
Всего голосов 55: ↑53 и ↓2+51
Комментарии16

Неслучайная случайность, или Атака на ГПСЧ в .NET

Время на прочтение5 мин
Количество просмотров17K
Random numbers should not be generated with a method chosen at random.
— Donald Knuth

Копаясь как-то в исходниках одного сервиса в поисках уязвимостей, я наткнулся на генерацию одноразового кода для аутентификации через SMS. Обработчик запросов на отправку кода упрощённо выглядел так:


class AuthenticateByPhoneHandler
{
    /* ... */

    static string GenerateCode() => rnd.Next(100000, 1000000).ToString();

    readonly static Random rnd = new Random();
}

Проблема видна невооруженным глазом: для генерации 6-тизначного кода используется класс Random — простой некриптографический генератор псевдослучайных чисел (ГПСЧ). Займёмся им вплотную: научимся предсказывать последовательность случайных чисел и прикинем возможный сценарий атаки на сервис.


Потокобезопасность


Кстати, заметим, что в приведённом фрагменте кода доступ к статическому экземпляру rnd класса Random из нескольких потоков не синхронизирован. Это может привести к неприятному казусу, который можно часто встретить в вопросах и ответах на StackOverflow:


Читать дальше →
Всего голосов 72: ↑71 и ↓1+70
Комментарии31

Как вернуть украденный домен через арбитраж WIPO. Пошаговая инструкция

Время на прочтение6 мин
Количество просмотров14K
Итак, у вас украли домен. Вы обнаружили это или утром, когда проверяли почту на смартфоне, или вечером, когда увидели на своем сайте чужую рекламу, потом зашли в админку, решив, что сайт взломали, но рекламного кода там не оказалось, и вы поняли, что DNS переписаны на другой сервер…

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


Вы сразу пишите в техпродержку регистратора и получаете ответ, что жалоба получена и будет рассмотрена в установленные сроки.
Читать дальше →
Всего голосов 56: ↑56 и ↓0+56
Комментарии52

Синглтон, локатор сервисов и тесты в iOS

Время на прочтение8 мин
Количество просмотров11K
Привет, Хабр! Я Богдан, работаю в мобильной команде Badoo iOS-разработчиком.

В этой статье мы рассмотрим использование паттернов «Синглтон» и «Локатор сервисов» (service locator) в iOS и обсудим, почему их часто называют антипаттернами. Я расскажу, как и где их стоит применять, сохраняя код пригодным для тестирования.


Читать дальше →
Всего голосов 31: ↑29 и ↓2+27
Комментарии4

RxSwift в действии — пишем реактивное приложение

Время на прочтение10 мин
Количество просмотров40K
Если верить последним тенденциям, то FRP набирает обороты и не собирается останавливаться. Не так давно я столкнулся с проектом, посвященным FRP — ReactiveX, и его реализацией для Swift — RxSwift. На Хабре уже была небольшая статья, которая будет полезна для начального понимания RxSwift. Я хотел бы развить эту тему, поэтому заинтересовавшимся — добро пожаловать под кат!

Лиха беда начало


И это действительно так. Самое сложное, с чем мне пришлось столкнуться — совершенно другое построение программного кода. С моим опытом императивного программирования было тяжело перестраиваться на новый лад. Но чутьё подсказывало мне, что в этом стоит разобраться; у меня ушло 2 недели паники на то, чтобы вникнуть в суть ReactiveX и я не жалею о потраченном времени. Поэтому сразу хотел бы предупредить — статья требует понимания терминов ReactiveX, таких как Observable, Subscriber и т.д.

Итак, начнем.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии9
1
23 ...

Информация

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