Обновить
1397.39

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Dart: как правильно начать знакомство с языком?

Время на прочтение5 мин
Охват и читатели53K

image


Всем привет! На прошлой неделе мы провели вторую ежегодную встречу русскоязычного сообщества Dart (ака Dartup) и получили очень информативную и полезную обратную связь от людей, пришедших на мероприятие. В этом году нас было около 130 человек. Если вы не были и хотите посмотреть, вот ссылка на записи. Спасибо за митап всем участникам, организаторам и партнерам.


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


Про что

Давайте начнем с базового плана:


  • Где узнать про Dart больше?
  • Как и где попробовать?
  • Настройка среды разработки
  • Запуск Hello world
Читать дальше →

8 учебных проектов

Время на прочтение3 мин
Охват и читатели153K
«Мастер совершает больше ошибок, чем новичок — попыток»

Предлагаем 8 вариантов проектов, которые можно сделать «по фану», дабы получить реальный опыт разработки.

Проект 1. Клон Trello


image


Клон Trello от Indrek Lasn .

Что вы освоите:

  • Организация маршрутов обработки запросов (Routing).
  • Drag and drop.
  • Как создавать новые объекты (доски, списки, карточки).
  • Обработка и проверка входных данных.
  • Со стороны клиента: как использовать локальное хранилище, как сохранять данные в локальном хранилище, как читать данные из локального хранилища.
  • Со стороны сервера: как использовать базы данных, как сохранять данных в базе, как читать данные из базы.

Тут пример репозитория, сделанного на React+Redux.
Читать дальше →

Настройка валидации DTO в Spring Framework

Время на прочтение6 мин
Охват и читатели53K
Всем привет! Сегодня мы коснёмся валидации данных, входящих через Data Transfer Object (DTO), настроим аннотации и видимости — так, чтобы получать и отдавать только то, что нам нужно.

Итак, у нас есть DTO-класс UserDto, с соответствующими полями:

public class UserDto {

    private Long id;
    private String name;
    private String login;
    private String password;
    private String email;
}

Я опускаю конструкторы и геттеры-сеттеры — уверен, вы умеете их создавать, а увеличивать в 3-4 раза код смысла не вижу — представим, что они уже есть.

Мы будем принимать DTO через контроллер с CRUD-методами. Опять же, я не буду писать все методы CRUD — для чистоты эксперимента нам хватит пары. Пусть это будут create и updateName.
Читать дальше →

Принципы SOLID в действии: от Slack до Twilio

Время на прочтение15 мин
Охват и читатели19K


Похоже, что в наши дни RESTful API существует абсолютно для всего. От платежей до бронирования столиков, от простых уведомлений до развёртывания виртуальных машин — почти всё доступно через простое HTTP-взаимодействие.

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

В этой статье мы изучим один конкретный подход к проектированию, который называется SOLID (это акроним). Используем его на практике в написании сервиса с интеграцией Slack, а затем расширим для использования с Twilio.
Читать дальше →

Почему repository в pom.xml — плохая идея

Время на прочтение5 мин
Охват и читатели16K

Где-то полгода назад я опубликовал туториал, посвящённый добавлению в проект библиотек, которых нет в репозиториях maven. Речь шла о маленьких проектах, и я порекомендовал ставить тег repository прямо в pom.xml, чтобы можно было собирать проект без необходимости править settings.xml.



В комментариях этот подход критиковали sshikov, igor_suhorukov, jbaruch и многие другие. Там же в комментариях мне дали ссылку на статью Брайана Фокса, в которой чётко и понятно изложено, чем чреваты repository в pom.xml. Статья 2009 года, но не потеряла актуальности до сих пор. Перевода на Хабре я не нашел — поэтому предлагаю вашему вниманию свой.

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

Шаблон проектирования Entity-Component-System — реализация и пример игры

Время на прочтение22 мин
Охват и читатели89K
image


В этой статье я хочу обсудить шаблон проектирования «сущность-компонент-система» (Entity-Component-System, ECS). По этой теме можно найти много информации в Интернете, поэтому я не буду глубоко вдаваться в объяснения, а больше расскажу о моей собственной реализации.

Часть 1: Реализация шаблона Entity-Component-System на C++


Начнём сначала. Полный исходный код моей реализации ECS можно найти в репозитории на github.

Entity-Component-System, в основном используемый в играх — это шаблон проектирования, обеспечивающий огромную гибкость в проектировании общей архитектуры программного обеспечения[1]. Такие большие компании, как Unity, Epic или Crytek используют этот шаблон в своих фреймворках, чтобы предоставить разработчикам очень богатый возможностями инструмент, с помощью которого они могут разрабатывать собственное ПО. Прочитать более широкое обсуждение по этой тематике можно в этих постах [2,3,4,5].

Присвоение имён: руководство для программиста

Время на прочтение4 мин
Охват и читатели16K
Перевод Naming 101: Programmer’s Guide on How to Name Things.

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

Хорошие имена делают код лучше и чище. Они помогают интуитивно определять, за что отвечает каждая часть кода. В будущем другим разработчикам будет легче читать ваш код, да и вам самим тоже.

Ниже объясним важность хороших правил присвоения имён и поделимся полезными советами.
Читать дальше →

Как мы расписание общественного транспорта в 2ГИС добавляли

Время на прочтение7 мин
Охват и читатели25K


2ГИС помогает ориентироваться в городе. Открываешь приложение, вводишь в поиск название улицы или организации, находишь, радуешься. После того, как нужная организация найдена, возникает резонный вопрос: как же туда добраться? И если автомобильным сценариям мы в последнее время уделяли значительное внимание, то поиск проезда на общественном транспорте оказался немного подзабыт. Я расскажу про то, как создавался поиск проезда, поделюсь тонкостями сбора и обработки информации.
Поехали!

Стоит ли свое хобби развить в стартап?

Время на прочтение4 мин
Охват и читатели9.5K
image

Много лет назад я увлекся программированием и начал писать для себя приложение (плагин для AutoCAD). И вот прошли годы и встает вопрос — развить свое хобби в стартап или оставить его и дальше как хобби? Рассуждения на тему под катом
Читать дальше →

Об итогах конкурса MERC-2017: победители и комментарии

Время на прочтение7 мин
Охват и читатели1.5K
Подошел к концу и объявляется закрытым первый конкурс по машинному обучению MERC-2017 от Neurodata Lab, проведенный на собственной площадке Datacombats (вскоре мы представим обновленную, полноценную версию платформы). Время подвести некоторые итоги и прокомментировать результаты. С визуализацией статистики вы можете ознакомиться в предыдущем посте нашего блога.
image
Читать дальше →

Дебаты об Отличном Сервере Приложений Java c Tomcat, Jboss, GlassFish, Jetty и Liberty Profile

Время на прочтение12 мин
Охват и читатели31K
Всем доброго!
Что ж у нас очередной новый курс Java Enterprise, а это значит, что есть то, чем мы с радостью поделимся с вами. Просьба особо не обращать внимания на версии и даты, т.к. суть от этого особо не меняется (или, если считаете, что меняется, то ждём комментарии).

Вступление: Да начнутся дебаты…

Какой тип сервера приложений Java вам стоит выбрать для следующего проекта? Зависит от того, какое приложение вы разрабатываете, какие у вас потребности, в какой организации работаете и многих других факторов. Без дебатов не обойтись. Поэтому навострите уши и слушайте внимательно.

Что делает сервер приложений сервером приложений, мистер Лебовски?

Что представляет собой сервер приложений — вопрос, вызывающий много споров в силу неточности определения. Википедия, как неоспоримый источник знаний, говорит следующее:
Java Platform, Enterprise Edition, сокращенно Java EE (до версии 5.0 — Java 2 Enterprise Edition или J2EE) — набор спецификаций и соответствующей документации для языка Java, описывающей архитектуру серверной платформы для задач средних и крупных предприятий.
Прости, Википедия, но в целях этой статьи, нам плевать на педантичные описания и полную имплементацию Java EE. Мы больше заботимся о нуждах и желаниях разработчиков.
Большинство разработчиков работают над веб-приложениями и резко используют все навороченные особенности EE-спецификации. На самом деле, ныне доступные сервера, обладающие только базовым функционалом, являются наиболее используемыми, как показал наш Отчет Производительности Разработчиков:


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

Судьба проекта с открытым кодом после смерти программиста

Время на прочтение5 мин
Охват и читатели56K
image

Вы, наверное, никогда не слышали о недавно умершем Джиме Вайрихе [Jim Weirich] или его программах. Но вы почти наверняка пользовались приложениями, построенными на основе его работы.

Вайрих помог создать несколько ключевых инструментов для Ruby, популярного языка программирования, код на котором написан для таких сайтов, как Hulu, Kickstarter, Twitter, и огромного числа других. Исходники его кода были открытыми, что означает, что использовать и изменять их могли все желающие. «Он был плодовитым членом западного сообщества Ruby», — говорит Джастин Сёрлс [Justin Searls], разработчик Ruby и сооснователь компании, разрабатывающей ПО, Test Double.

Когда Вайрих умер в 2014-м, Сёрлс заметил, что уже никто не поддерживает один из инструментов Вайриха для проверки софта. Это означало, что никто не будет одобрять изменения, если другие разработчики пришлют в проект исправления багов, патчи для безопасности или другие улучшения. Любые тесты, основывающиеся на этом инструменте, в итоге будут проваливаться, поскольку код устареет и станет несовместимым с новыми технологиями.
Читать дальше →

Правда ли, что будущее CPaaS за «Serverless» технологиями?

Время на прочтение6 мин
Охват и читатели4.5K

Две недели назад мы провели вторую конференцию INTERCOM о голосовых и видео коммуникациях. WebRTC, звонки через браузер, machine learning, big data – вся вот эта популярная история. Одним из приглашенных спикеров был Цахи Левент-Леви, более известный как автор bloggeek.me – ультимативного источника информации о WebRTC в современных браузерах. В докладе (кстати, у меня есть видеозапись) Цахи рассказывал про состояние индустрии и что сейчас можно делать с голосом и видео в браузерах. А вернувшись в Израиль написал интересную статью про «Serverless»-технологии при работе с коммуникационными платформами. Адаптированный для Хабра перевод предлагаю под катом.
Читать дальше →

Ближайшие события

Первый в России митап по Apache Ignite, 12 декабря

Время на прочтение1 мин
Охват и читатели2K
Друзья, приглашаем всех на посвящённый Ignite митап 12 декабря в московском ImpactHub (метро Китай-Город). Такие мероприятия мы хотим регулярно проводить в Москве и Санкт-Петербурге, и надеемся, что они станут местом встреч российских пользователей и разработчиков Ignite, специалистов по In-Memory Computing, а также всех, кто интересуется распределенными системами. Здесь можно будет обсудить любые вопросы, связанные с работой или развитием экосистемы.

На первом митапе мы хотим познакомить вас российскими банком и крупным телекомом, использующими Ignite каждый день.

Программа встречи:

— 18:30: Сбор гостей;
— 19:00: Рассказ о внедрении Apache Ignite в Сбербанке (Михаил Хасин, Сбербанк);
— 19:45: «Как мы построили Complex Event Processing крупного телеком-оператора на Apache Ignite» (Виктор Ходяков, Gridfore);
— 20:30: Секретный доклад;
— 21:15: Общение в кулуарах, заключительный кофе;
— 22:00: Окончание.
Читать дальше →

Архитектура сервиса сбора и классификации объявлений жилья из Вконтакте

Время на прочтение5 мин
Охват и читатели9.6K


В этой статье я расскажу о том, как устроен и развивался сервис по поиску объявлений жилья из Вконтакте, почему была выбрана сервис-ориентированная архитектура, а также какие технологии и решения использовались при его разработке.
Читать дальше →

Метод Уэлфорда и многомерная линейная регрессия

Время на прочтение8 мин
Охват и читатели23K

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


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


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

Тестирование LLVM

Время на прочтение9 мин
Охват и читатели8.6K
Продолжение. Начало здесь.

Введение


Когда программа достигает определённого размера, можно гарантировать, что она слабо специфицирована и не может быть полностью понята одним человеком. Это подтверждается по много раз в день людьми, которые слабо осведомлены о работе друг друга. Программа имеет множество зависимостей, включая компилятор, операционную систему, библиотеки, каждая из которых содержит свои собственные баги, и всё это обновляется время от времени. Более того, ПО обычно должно работать на нескольких разных платформах, каждая из которых имеет свои особенности. Принимая во внимание большое количество возможностей для неверного поведения, почему вообще мы можем ожидать, что наша большая программа будет работать так, как ожидается? Одна из самых главных вещей, это тестирование. Таким образом, мы можем убедиться, что ПО работает так, как нужно в любой важной для нас конфигурации и платформе, и когда оно не работает, найдутся умные люди, которые смогут отследить и устранить проблему.
Читать дальше →

Программирование на телефоне используя эмулятор терминала Termux

Время на прочтение2 мин
Охват и читатели164K
Приветствую читателей! В этой статье я расскажу о том, как можно, имея android телефон, писать программы. Говорю сразу — root права не нужны.

Что нам понадобится?


Первое, что нам понадобится — андроид телефон со установленным на него приложением Termux (есть в Google Play). Для полноценной работы с терминалом, нам нужно достаточно памяти. У меня с десятками установленных пакетов приложение занимает 1.5 ГБ памяти.
Так же, для комфортного кодинга желательно, чтобы телефон был с поддержкой OTG, и у вас была клавиатура с подключением по USB, чтобы писать код на клавиатуре (куда удобнее). Если уж нет этого, то качаем клавиатуру Hacker's Keyboard. В ней есть клавиша Ctrl, что нам важно.

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

Системы ИИ научились создавать умные модели для ML: дайджест для начинающих

Время на прочтение5 мин
Охват и читатели14K
В ноябре участники исследовательского проекта Google Brain опубликовали результаты эксперимента AutoML. Им удалось создать систему, которая порождает новые ИИ-модели, используя метод обучения с подкреплением. Реализованный таким образом алгоритм уже справляется с задачей лучше решений, полностью написанных человеком.

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

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

Интегрируем смартконтракт в веб-приложение на Nodejs

Время на прочтение7 мин
Охват и читатели18K

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


UI приложения

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

Вклад авторов