Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Gson или «Туда и Обратно»

Блог компании NAUMENJava
Tutorial
Недавно мне пришлось поработать с библиотекой Google Gson, предназначенной для преобразования Java-объектов в текстовый формат JSON (сериализация) и обратного преобразования (десереализация). Часто при работе с Gson хватает стандартных настроек библиотеки, но бывают случаи (в том числе мой), когда необходимо кастомизировать процессы преобразований.

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

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


За синие горы, за белый туман...
Всего голосов 28: ↑27 и ↓1 +26
Просмотры135.1K
Комментарии 25

Перетягивание «Верблюда» или интеграция средствами Camel. Часть 2

Блог компании NAUMENJava

Сценарии интеграции с Apache Camel



Сколько вы знаете шаблонов интеграции приложений(EIP)? Сколько из них вы можете использовать?

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

Если вы знакомы с шаблонами, но решаете стоит ли связываться с «верблюдом», то наши примеры помогут разобраться. Если вам интересен путь от сценариев использования к реализации интеграции, то эта статья как раз об этом. Прошу под кат.
Читать дальше →
Всего голосов 17: ↑14 и ↓3 +11
Просмотры24.2K
Комментарии 9

Обзор и оценка перспектив развития мирового и российского рынков ИТ

Блог компании Московская БиржаIT-стандарты
Ранее, в своем блоге на «Хабре» мы писали о том, почему Московская Биржа – это в первую очередь ИТ-компания. Как и полагается ИТ-компании, мы постоянно отслеживаем новые тренды рынка ИТ, делаем аналитику и строим прогнозы.

Представляем свежий аналитический обзор рынка ИТ, подготовленный совместно с фондом РВК и компанией IDC.

В этом обзоре

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

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

Обзор содержит прогноз развития мирового и российского рынка ИТ по основным категориям на период 2014-2018 годы.

Читать длинный интересный пост...
Всего голосов 16: ↑13 и ↓3 +10
Просмотры146.6K
Комментарии 7

Неприлично простая реализация неприлично простого алгоритма генерации лабиринта

C++Алгоритмы
Продолжение этой статьи об очень простом алгоритме генерации прямоугольных лабиринтов. В этой статье я приведу мою реализацию алгоритма на С++, а также покажу несколько дополнительных функций, которые породил мой скучающий мозг. Если осмелитесь продолжить читать, убедитесь, что ознакомились с моей предыдущей статьей. Глянули? Молодцы, продолжаем.
Читать дальше →
Всего голосов 51: ↑39 и ↓12 +27
Просмотры31.6K
Комментарии 54

Размышления о красоте и коде

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

Disclaimer: эта статья ставит перед собой целью поделиться мыслями, возникшими в процессе попытки осмыслить понятие красивого кода. Приведенные мысли не претендуют быть истиной в последней инстанции. Надеюсь лишь на то, что эти мысли, размышления и доводы, возможно, помогут кому-то взглянуть на сам процесс написания кода немного с другой стороны. Далее не следует ни одного формального правила вида «Пишите код так, и будет вам счастье». По данной тематике уже написан большой объем литературы от гораздо более уважаемых авторов.

Всех заинтересованных в рассуждениях на тему, что такое красота кода, в чем она может выражаться, почему все известные практики не в силах закрыть раз и навсегда этот вопрос, прошу под кат.
Читать дальше →
Всего голосов 9: ↑7 и ↓2 +5
Просмотры6.2K
Комментарии 13

Об актуальных проблемах геймдизайна и путях их разрешения. Взгляд снизу

Разработка игр
Из песочницы
Итак, всем привет и добро пожаловать в мир современных игр!

Дабы заранее предупредить различные вопросы, а также обеспечить удобство чтения, далее — небольшой дисклеймер: всё что будет написано далее — основано на личном и субъективном игровом опыте, который включает в себя: более 200 пройденных игр в стиме, неизвестное количество пройденных пираток, попытки участия в разработке модификаций на различные игры на позициях дизайнера, 3d-моделлера и сценодела.


Читать дальше →
Всего голосов 27: ↑24 и ↓3 +21
Просмотры7.7K
Комментарии 49

Android preferences delegate

Разработка под AndroidKotlin
Из песочницы

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

Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Просмотры4.9K
Комментарии 9

Как мы сделали движок и игру на нем за полтора года

C++Разработка игр
Из песочницы
Всем привет, дорогие друзья! Вот сижу, смотрю на бесконечную простыню кода, провожу ревью с баночкой ред була. Прошел год. Год, блин, всего лишь год — так много и так мало одновременно. На этот год у нас были наполеоновские планы, и сейчас кажется, что мы мало что успели. С другой стороны — нам удалось сделать кое-что, что достойно войти в анналы айти с пометкой «Слабоумие и отвага». Я бы назвал эту историю «Как запилить свой движок с тулзами и рендером с нуля всего за год». Издание выйдет на несколько томов, но куда деваться, надо с чего-то начинать. Так что погнали!

Ровно год назад мы стартовали с проектом, о котором я теперь планирую писать во всех подробностях. С высоты полученного опыта могу смело заявить: это одна из самых рискованных и амбициозных штук, которую мы когда-либо затевали. Думаю, опыт нашей команды будет полезен другим гейм-разработчикам, ну а игроков он как минимум повеселит.
Читать дальше →
Всего голосов 128: ↑120 и ↓8 +112
Просмотры71.9K
Комментарии 224

DPKI: Addressing the Disadvantages of Centralized PKI by Means of Blockchain

Блог компании ENCRYДецентрализованные сетиИнформационная безопасностьКриптографияСетевые технологии


Digital certificates are one of the most commonly known auxiliary tools that help protect data across public networks. However, the key disadvantage of this technology is also commonly known: users are forced to implicitly trust certification authorities which issue digital certificates. Andrey Chmora, Technology and Innovations Director at ENCRY, suggested a new approach for building a Public Key Infrastructure (PKI) to eliminate the existing disadvantages using the distributed ledger (blockchain) technology.
Let's begin with the basics.
Read more →
Всего голосов 4: ↑3 и ↓1 +2
Просмотры1.5K
Комментарии 0

DPKI: устраняем недостатки централизованной PKI при помощи блокчейна

Блог компании ENCRYДецентрализованные сетиИнформационная безопасностьКриптографияРаспределённые системы


Ни для кого не секрет, что один из общераспространенных вспомогательных инструментов, без которого невозможна защита данных в открытых сетях, — это технология цифровых сертификатов. Впрочем, не является секретом и то, что главный недостаток это технологии — безусловное доверие к центрам, выпускающим цифровые сертификаты. Директор по технологиям и инновациям компании ENCRY Андрей Чмора предложил новый подход к организации инфраструктуры общедоступных ключей (Public Key Infrastructure, PKI), который поможет устранить существующие в настоящее время недостатки и который использует технологию распределенного реестра (блокчейна). Но обо всем по порядку.
Читать дальше →
Всего голосов 10: ↑9 и ↓1 +8
Просмотры2.2K
Комментарии 6

Об анонимности в интернете, жизни и её относительности

Информационная безопасность

Warning!


Дабы заранее предупредить различные вопросы, а также обеспечить удобство чтения, далее — небольшой дисклеймер: всё, что будет написано далее — основано на личном и субъективном опыте, выражает личное мнение автора и ни в коем случае не является призывом к каким либо противоправным или антигосударственным действиям, статья написана сухим языком и без картинок сгоряча, не является информативной или правдой.
Читать дальше →
Всего голосов 45: ↑29 и ↓16 +13
Просмотры34.7K
Комментарии 66

Как мы сделали движок и игру на нем за полтора года. Часть вторая. Инфраструктура

ПрограммированиеC++Разработка игр
Для начала несколько комментариев по следам предыдущей статьи. Мы действительно раньше работали в компании Wargaming, где разрабатывали движок, известный как dava.framework или dava.engine. Поэтому многие старые коллеги, с которыми мы по-прежнему в хороших отношениях, активно участвуют в обсуждении.

У ряда людей возникли сомнения: это та же технология или другая? Ответ: это новая технология, написанная с нуля.

Как же мы справились всего за год? Наша команда имеет огромный опыт. Многие занимаются разработкой движков и игр более 15-и лет.

Почему с нуля, если можно было взять наш старый движок, который к тому же лежит в open-source? Ему около 10 лет, и большая часть кода устарела. Даже самые лучшие части движка, которыми мы гордимся, местами содержали куски кода и какие-то рудименты 5-и, 7-и и иногда даже 10-ти летней давности. Многие архитектурные решения были рассчитаны на устройства того времени — начиная с айфона 3G. Сейчас же мы ориентируемся минимум на iPad Air 1 и аналогичные ему по мощности Android-устройства. Соответственно и подходы несколько поменялись.
Читать дальше →
Всего голосов 27: ↑25 и ↓2 +23
Просмотры11.7K
Комментарии 4

Сложность простоты

Занимательные задачкиПрограммированиеСовершенный кодHaskellGo


Как я писал в предисловии предыдущей статьи, я нахожусь в поисках языка, в котором я мог бы писать поменьше, а безопасности иметь побольше. Моим основным языком программирования всегда был C#, поэтому я решил попробовать два языка, симметрично отличающиеся от него по шкале сложности, про которые до этого момента приходилось только слышать, а вот писать не довелось: Haskell и Go. Один язык стал известен высказыванием "Avoid success at all costs"*, другой же, по моему скромному мнению, является полной его противоположенностью. В итоге, хотелось понять, что же окажется лучше: умышленная простота или умышленная строгость?


Я решил написать решение одной задачки, и посмотреть, насколько это просто на обоих языках, какая у них кривая обучения для разработчика с опытом, сколько всего надо изучить для этого и насколько идиоматичным получается "новичковый" код в одном и другом случае. Дополнительно хотелось понять, сколько в итоге мне придется заплатить за ублажание хаскеллевского компилятора и сколько времени сэкономит знаменитое удобство горутин. Я старался быть настолько непредвзятым, насколько это возможно, а субъективное мнение приведу в конце статьи. Итоговые результаты меня весьма удивили, поэтому я решил, что хабровчанам будет интересно почитать про такое сравнение.

Читать дальше →
Всего голосов 91: ↑84 и ↓7 +77
Просмотры34.4K
Комментарии 256

Blitz Engine & Battle Prime: ECS и сетевой код

ПрограммированиеC++Разработка игр


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

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

Это одна из причин, по которой мы также хотим вносить вклад в общее дело — и эта статья одна из первых, посвященная техническим деталям разработки движка Blitz Engine и игры на нем — Battle Prime.

Статья будет поделена на две части:

  • ECS: имплементация Entity-Component-System паттерна внутри Blitz Engine. Этот раздел важен для понимания примеров кода в статье, и сам по себе является отдельной интересной темой.
  • Неткод и геймплей: все, что касается высокоуровневой сетевой части и ее использования внутри игры — клиент-серверная архитектура, клиентские предсказания, репликация. Одной из важнейших вещей в шутере является стрельба, так что ей будет уделено большее количество времени.

Под катом много мегабайт гифок!
Читать дальше →
Всего голосов 30: ↑30 и ↓0 +30
Просмотры11.2K
Комментарии 8

Концепция навигации «Адаптивное поле»

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

«Интродакшн»


Как-то сидел я на диване, писал скучную бумажку, и тут в одном из посвященных ВКонтакте каналов в повозке выходит пост с QR кодом нового дизайна мобильного приложения ВК. Я, конечно, как человек интересующийся всем новым в сфере UI/UX, да и просто как активный (несколько сообществ) пользователь ВК, сразу же просканировал код, посмотрел хакерскую заставку и принялся осваивать обновлённый интерфейс, ниже его скриншоты для тех, кто внезапно не пользуется этой соцсетью.
Читать дальше →
Всего голосов 8: ↑5 и ↓3 +2
Просмотры1.8K
Комментарии 9

PKI Decentralization: Proposed Approaches to Security Improvement

Блог компании ENCRYДецентрализованные сетиИнформационная безопасностьКриптографияСетевые технологии
After introduction at the dawn of the Internet, public key infrastructure (PKI) has gone through several iterations of changes and updates, but it still remains the traditional methodology for encrypting data and securing communication. PKI supports privacy and protection of data communication between browsers and servers, but it requires implicit trust from a single entity or entities chain called a certificate authority (CA) which has led to a breakdown in confidence. Through the years, having one root entity to control the way private keys are issued to the public has showed that it can cause major complications with transparency and security.

In this article, we will once again dive deeper into the problems of the current system and consider the solutions being developed that can overcome existing shortcomings.
Read more →
Всего голосов 3: ↑3 и ↓0 +3
Просмотры1.3K
Комментарии 0

Монады как паттерн переиспользования кода

ПрограммированиеСовершенный кодC#Функциональное программированиеRust


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


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


Но ведь в интернете буквально сотни статей про ФП и монады, зачем писать еще одну?


Дело в том, что все их (по крайней мере те что я читал) можно поделить условно на две категории: с одной стороны это статьи где вам объяснят что монада это моноид в категории эндофункторов, и что если монада T над неким топосом имеет правый сопряжённый, то категория T-алгебр над этой монадой — топос. На другой стороне располагаются статьи, где вам рассказывают, что монады — это коробки, в которых живут собачки, кошечки, и вот они из одних коробок перепрыгивают в другие, размножаются, исчезают… В итоге за горой аналогий понять что-то содержательное решительно невозможно.


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


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

Читать дальше →
Всего голосов 108: ↑104 и ↓4 +100
Просмотры45.2K
Комментарии 255

Blitz.Engine: Ассетная система

ПрограммированиеC++Разработка игр


Прежде чем разбираться в том, как работает ассетная система движка Blitz.Engine, нам необходимо определиться с тем, что такое ассет и что именно мы будем понимать под ассетной системой. Согласно Википедии, игровой ассет — это цифровой объект, преимущественно состоящий из однотипных данных, неделимая сущность, которая представляет часть игрового контента и обладает некими свойствами. С точки зрения программной модели, ассет может выступать в виде объекта, созданного на некотором наборе данных. Ассет может храниться в виде отдельного файла. В свою очередь, ассетная система — это множество программного кода, отвечающего за загрузку и оперирование ассетов различных типов.

Фактически ассетная система — это большая часть игрового движка, которая может стать верным помощником для разработчиков игры или же превратить их жизни в кромешный ад. Логичным, с моей точки зрения, решением было сконцентрировать этот «ад» в одном месте, бережно оберегая от него других разработчиков команды. О том, что у нас получилось, мы и расскажем в этом цикле статей — поехали!
Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Просмотры3.1K
Комментарии 8

Кто, зачем и как связывает блокчейны

Децентрализованные сетиКриптовалюты
С каждым днём количество блокчейн-проектов увеличивается (а ещё размер инфраструктуры, на них построенной). Появляется проблема — существование множества самостоятельных блокчейнов, взаимодействие которых между собой затруднено. Становятся нужными технологии для «общения» блокчейнов между собой. Ниже рассказываю о том, какими путями пытаются решить проблему (не)совместимости блокчейнов.

image
Cхема релейной цепи Polkadot
Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Просмотры7.4K
Комментарии 2

Субъективный обзор некоторых российских бесплатных образовательных платформ

Учебный процесс в ITКарьера в IT-индустрии
Из песочницы
🔥 Технотекст 2020
     «Expose the lies that enrage me» (с) Arch Enemy

Случается, закончил человек не самый плохой ВУЗ, работает себе без особых проблем, но вокруг постоянно появляется что-то новое, неизведанное и хочется не отстать… А бывает, студент ощущает, что с его ВУЗом что-то не то, учат чему-то не тому и за свою судьбу как-то страшновато – пойдешь то ли на биржу труда, то ли в светлое IT будущее. Казалось бы, в чем проблема?! Займись самообразованием – ресурсов в сети полно. Однако хотелось бы получить все в одном месте, с какой-то гарантией качества (свободного времени и так не хватает). Поэтому я попробовал бесплатно поучиться на ряде российских обучающих платформ. Оказалось, что и там с IT темами все довольно печально – много никчёмных материалов, пустых обещаний, неудобств и откровенной халтуры. «Expose the lies…». В этой статье хочу поделиться субъективными впечатлениями о своем опыте прохождении ряда бесплатных IT курсов на российских обучающих платформах за примерно 1 год. Напишу о Skillfactory, Открытом образовании (openedu), GeekBrains и Stepik. В конце я подведу краткие итоги. Предлагаю заинтересовавшимся читателям обсудить статью и свой опыт онлайн обучения в комментариях.
Читать дальше →
Всего голосов 34: ↑31 и ↓3 +28
Просмотры26.2K
Комментарии 71
1