Как стать автором
Обновить
3
0

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

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

Создаем свой собственный язык программирования с использованием LLVM. Часть 1: Лексический и синтаксический анализ

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

Это первая статья из цикла о том, как создать свой собственный ООП язык программирования с использованием LLVM.

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

Читать далее
Всего голосов 39: ↑37 и ↓2+48
Комментарии16

Как я СКАДу писал

Время на прочтение20 мин
Количество просмотров94K
Введение

Данная история началась примерно год назад. Сам я по специальности автоматчик, занимаюсь разработкой и внедрением систем автоматического управления технологическими процессами (АСУТП). В основном работа состоит в разработке прикладного программного обеспечения в специализированном ПО, так называемом SCADA-пакете. Для тех, кто не знаком с понятием SCADA и с чем его едят — подробно можно ознакомиться здесь. Достаточно долго проработал в компании отечественного разработчика подобной системы, начав с тестировщика, прошел через техподдержку, дорос до уровня руководителя отделом системной интеграции, выполнял разработку проектов автоматизации под ключ на базе ПО, которое разрабатывала компания. В процессе разработки проектов, очутившись в шкуре конечного пользователя продуктом, часто приходилось дорабатывать инструментарий под конкретные задачи напильником, потому как функционал или глючил, или не дотягивал до должного уровня. А все прения с разработкой и маркетингом по развитию продукта либо упирались в нежелание что-либо делать со стороны разработки, либо все списывалось на то, что у меня руки кривые и я ничего не понимаю в колбасных обрезках. Долго так продолжаться не могло, и вот в один прекрасный момент наши пути с этой компанией разошлись, я ушел к одному из своих крупных заказчиков продолжать делать то, что делал им же на заказ, но уже в штате этого заказчика.
Читать дальше →
Всего голосов 76: ↑72 и ↓4+68
Комментарии61

Императив предметной области при разработке информационных систем

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

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

Прекрасно! Но почему мы до сих пор этого не делаем? Почему так много времени уделяем той части программной составляющей, которая не имеет отношения к предметной области – интерфейсу пользователя, вспомогательным слоям, работе с базой данных и постоянному связыванию этих частей с кодом предметной области в различных фреймворках? Неужели это настолько важно? Почему мы часто начинаем разработку с продумывания интерфейса между компонентами вместо того, чтобы просто писать логику предметной области? Из раза в раз. Уже много лет. Несмотря на технические возможности делать всё правильно.

Читать далее
Всего голосов 6: ↑3 и ↓3+5
Комментарии23

Как писать на HTML Canvas удобно, или как изобрести очередной renderer на Angular

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

Разработка на canvas с контекстом 2D обычно не предполагает никаких сложностей. Для начала необходимо изучить пару десятков встроенных методов WEB API CanvasRenderingContext2D, прочитать рекомендации по оптимизации, вспомнить школьный курс геометрии. И на этих базовых вещах можно уже строить неплохие приложения на canvas.

Как один из вариантов начала разработки на canvas: из примитивов фигур строят элементы, затем их объединяют в функцию, эти функции складывают в готовый элемент, объединяют их в слой, ну и в конце уже отдают в функцию рендера. Все еще звучит довольно неплохо и с этим можно даже жить, если использовать чистые функции, и придерживаться везде этого подхода. Но не всегда этого удается, всегда есть соблазн выхватить что-либо из контекста. Для примера приведу код из source-map-vizualization замечательный инструмент, сделанный на canvas. Только чтобы понять весь код и привнести какие либо исправления, я думаю придется посидеть не один час.

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии3

Анализ половозрастной пирамиды России с 1946 по 2036 гг

Время на прочтение3 мин
Количество просмотров61K
Как изменилась структура российского (постсоветского) общества с середины XX века. Спойлер: она изменилась кардинально.

Поделиться моими исследованиями половозрастной пирамиды России с общественностью посоветовали мои знакомые и друзья. Некоторые из них утверждают, что в исследованиях есть научная ценность. Хотя я не демограф, а просто любопытный программист.
Читать дальше →
Всего голосов 73: ↑70 и ↓3+93
Комментарии350

«Красная» корпоративная культура — главная проблема российского бизнеса (Часть 3)

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

«Попробуйте изменить себя и вы поймете, насколько ничтожны ваши шансы изменить других» (С) Вольтер

Может ли «красный» лидер быть эффективным? (Спойлер: Да, если он не красный).

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

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

«Только у оранжевого «успех» является высшей ценностью, у «красного» высшей ценностью является власть, успех для него не важен и тем более он не стремится к истории успеха.
С «синим» у «красного» еще больше отличий, поскольку власть это индивидуальная ценность, а правила и порядок — коллективная.

Лидер идеального «красного» государства может смело сказать — «государство это я», а в идеальном «синем» государстве совсем нет лидера — жизнь там течет как известном романе Франца Кафки «Процесс». (с) KonkovVladimir

Именно эти законы системы становятся преградой на пути внедрения любых проектов повышения эффективности бизнеса и вовлечённости персонала.

Однако не всё безнадёжно в «красной» организации. Сегодня мы поговорим о тех руководителях, которые, находясь в «красной» системе, всё же умеют добиваться высоких результатов.
Читать дальше →
Всего голосов 41: ↑33 и ↓8+34
Комментарии112

Как сделать космолёт горизонтального взлёта и посадки без чудо-технологий

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

Ещё на заре космонавтики человечество мечтало о простом и дешёвом доступе к орбите на космических самолётах. Под космическим самолётом я подразумеваю крылатый аппарат горизонтально взлёта и посадки, без воздушных стартов, вертикальных посадок и т.п. Причина проста — космолёты по умолчанию многоразовые и в теории требуют недорогого, по сравнению с ракетами, обслуживания. Также весомым аргументом в их пользу является наличие гигантских взлётно-посадочных полос по всему миру, в то время как для ракет нужно строить инфраструктуру с нуля. Но как только конструкторы пытались спроектировать космолёт на практике у них сразу же возникало множество трудноразрешимых проблем, сильно затрудняющих выполнение задачи.
Читать дальше →
Всего голосов 35: ↑29 и ↓6+23
Комментарии339

Ад своими руками

Время на прочтение19 мин
Количество просмотров173K
Многие говорят – рассказывать надо не только об успехах, но и о неудачах. Полностью с этим согласен — понимание своих неудач, их причин и последствий, иногда ценнее любых успехов.

Был у меня в жизни такой опыт автоматизации, за который долгое время было стыдно. Не потому, что система плохо работала, или метаданные кривые были, или ТЗ не соответствовала — ровно наоборот. Все красиво, быстро, с полным внедрением во всей компании. С точки зрения формальных критериев это был полный успех.

Но компанию, ее культуру это внедрение превратило в ад — бюрократический, системный и бессмысленный.

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

Обо всем по порядку.
Читать дальше →
Всего голосов 294: ↑285 и ↓9+276
Комментарии313

Игровые фичи с помощью ECS: добавляем в шутер аптечки

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


От ковров перейдем к серьезным вещам. Мы уже рассказали про ECS, какие есть фреймворки для Unity и почему написали свой (со списком можно ознакомиться в конце статьи). А сейчас остановимся на конкретных примерах, как используем ECS в нашем новом мобильном PvP-шутере и как реализуем игровые фичи. Отмечу, что применяем эту архитектуру мы только для симуляции мира на сервере и системы предсказания на клиенте. Визуализация и рендер объектов реализованы с помощью MVP-паттерна — но сегодня не об этом.
Читать дальше →
Всего голосов 41: ↑40 и ↓1+39
Комментарии9

Губительная ошибка новичков в геймдеве

Время на прочтение6 мин
Количество просмотров36K
Перед началом любого дела необходимо составить план, сделать «пробы пера», одним словом — черновик. Именно это помогает определить стартовую точку и понять направление движения.
Хотите делать быстрее и качественней остальных? Не хотите тратить тонны усилий впустую?


Сделайте прототип игровой механики. 90% начинающих разработчиков этого не делают (!)
Что это? Зачем? И с чем его едят?
Игровой прототип нужен для теста механики и геймплея игры, на его основе можно строить всю дальнейшую работу и иметь хорошую опорную точку для всего проекта.

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

Главная проблема — как понять насколько интересно играть в мою игру?
Очень важно сделать это максимально быстро.Как?
Сделать игровой прототип и сделать правильно.

С чем «есть» игровой прототип я не скажу, но чай при прочтении определенно не повредит.

Советы по созданию правильного(на мой скромный взгляд) прототипа вы узнаете из этой статьи, это может вам здорово помочь.
Читать дальше →
Всего голосов 39: ↑35 и ↓4+31
Комментарии71

Оцениваем процессы в команде разработки на основе объективных данных

Время на прочтение24 мин
Количество просмотров25K
Разработка софта считается плохо измеримым процессом, и кажется что, чтобы ей эффективно управлять, нужно особое чутье. А если интуиция с эмоциональным интеллектом развиты не очень, то неизбежно будут сдвигаться сроки, проседать качество продукта и падать скорость поставки.

Сергей Семёнов считает, что это происходит в основном по двум причинам.

  • Нет инструментов и стандартов для оценки работы программистов. Менеджерам приходится прибегать к субъективной оценке, что в свою очередь приводит к ошибкам.
  • Не используются средства автоматического контроля за процессами в команде. Без должного контроля процессы в командах разработки перестают выполнять свои функции, так как начинают исполняться частично или попросту игнорироваться.

И предлагает подход к оценке и контролю процессов на основе объективных данных.

Ниже видео и текстовая версия доклада Сергея, который по результатам зрительского голосования занял второе место на Saint TeamLead Conf.
Всего голосов 44: ↑41 и ↓3+38
Комментарии30

Как создать Roguelike

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

Я всегда хотел написать подробное руководство для начинающих о том, как создать roguelike, содержащее как общие, так и более специфические советы. Проведённый в этом году очередной праздник Roguelike Celebration показался мне отличной возможностью наконец-то заставить себя это сделать, поэтому я подготовил получасовой доклад по этой теме.

У меня есть довольно большой опыт — в течение последних семи лет я работал только в этом жанре (Cogmind, Cogmind 7DRL, POLYBOT-7, REXPaint, X@COM), и в течение последних пяти эта работа была моей основной. К тому же, все эти годы я помогал превращению r/RoguelikeDev в крупнейшее сетевое сообщество разработчиков roguelike.
Всего голосов 58: ↑58 и ↓0+58
Комментарии24

Лучший Способ Программирования (Better way To Code)

Время на прочтение16 мин
Количество просмотров35K
От переводчика:
Я не являюсь ни профессиональным программистом ни профессиональным переводчиком, но появление описанного в статье инструмента от создателя популярной библиотеки D3.js произвело на меня сильное впечатление.

С удивлением обнаружил, что на Хабре, да и вообще в русскоязычном интернете, более года несправедливо игнорируют данный инструмент. Поэтому решил, что просто обязан внести свой вклад в развитие искусства программирования, в JavaScript в частности.

Знакомьтесь, d3.express, интегрированная исследовательская среда.
(с 31 января 2018г d3.express зовется Observable и живет на beta.observablehq.com)

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

Последние лет восемь я разрабатывал инструменты для визуализации информации. Самым удачным результатом моих усилий стала js-библиотека D3. Однако опасность столь долгой разработки инструментария в том, что ты забываешь зачем ты это делаешь: инструмент становится самоцелью, польза от его применения уходит на второй план.

Предназначение инструмента визуализации — построение визуализаций. Но в чем же цель визуализации? Слово Бену Шнейдерману(Per Ben Shneiderman):
«Результат визуализации — это
Читать дальше →
Всего голосов 50: ↑46 и ↓4+42
Комментарии20

Бэкенд для фронтенда, или Как в Яндекс.Маркете создают API без костылей

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

Почему некоторыми API удобнее пользоваться, чем другими? Что мы как фронтендеры можем сделать на своей стороне, чтобы работать с API приемлемого качества? Сегодня я расскажу читателям Хабра как о технических вариантах, так и об организационных мерах, которые помогут фронтендерам и бэкендерам найти общий язык и наладить эффективную работу.



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


Читать дальше →
Всего голосов 69: ↑61 и ↓8+53
Комментарии40

Применение принципов SOLID при разработке React-приложений

Время на прочтение8 мин
Количество просмотров41K
Недавно мы публиковали материал о методологии SOLID. Сегодня мы представляем вашему вниманию перевод статьи, которая посвящена применению принципов SOLID при разработке приложений с использованием популярной библиотеки React.

image

Автор статьи говорит, что здесь, ради краткости, он не показывает полную реализацию некоторых компонентов.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии6

Подход к реализации RBAC в ReactJS

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

Вступление


Привет, дорогой читатель!

Некоторое время (около года) назад столкнулся с необходимостью условной отрисовки компонентов в ReactJS в зависимости от текущих прав пользователя. Первым делом начал искать готовые решения и «лучшие практики». Статья "Role based authorization in React" произвела больше всего впечатления своим использованием Higher-Order Components (HOC). Но, к сожалению, решения, которое меня удовлетворяет, не нашел.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии6

Как выжить Инди разработчику. Часть 1

Время на прочтение11 мин
Количество просмотров30K
Прим. перев.: Здравствуйте, уважаемые хабровчане!

Хочу с вами поделиться историей инди-разработчика Jake Birkett, рассказанной им на конференции Independent Games в 2016. Выступление Джейка — это глубоко личная, полная деталей повесть о длинном и сложном пути в игровой индустрии. Перевод сделан с видеозаписи выступления. По всем ошибкам и неточностям, пожалуйста, пишите в личку. Спасибо!




Часть первая


Ты никакой не избранный, твоя игра не хит и ты его никогда не сделаешь


К сожалению, это пугающая реальность для большинства из нас. И чем скорее вы признаете этот факт, тем быстрее начнете думать как выжить будучи Инди-разработчиком. И чем дольше вы будете на рынке, тем больше шансов сделать стоящую игру и возможно, когда-нибудь, выпустить хит.
Читать дальше →
Всего голосов 40: ↑38 и ↓2+36
Комментарии36

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность