Обновить
1122.23

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

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

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

Spring MVC — основные принципы

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


Фреймворк Spring MVC обеспечивает архитектуру паттерна Model — View — Controller (Модель — Отображение (далее — Вид) — Контроллер) при помощи слабо связанных готовых компонентов. Паттерн MVC разделяет аспекты приложения (логику ввода, бизнес-логику и логику UI), обеспечивая при этом свободную связь между ними.

  • Model (Модель) инкапсулирует (объединяет) данные приложения, в целом они будут состоять из POJO («Старых добрых Java-объектов», или бинов).
  • View (Отображение, Вид) отвечает за отображение данных Модели, — как правило, генерируя HTML, которые мы видим в своём браузере.
  • Controller (Контроллер) обрабатывает запрос пользователя, создаёт соответствующую Модель и передаёт её для отображения в Вид.
Читать дальше →
Придумайте и воплотите в прототипе идею высокотехнологичного сервиса для действующих или потенциальных клиентов банка на базе стека In-Memory. В рамках сервиса предложите, как использовать Internet Of Things или Artificial Intelligence в мире финансов. Команда, реализовавшая самый перспективный проект получит приз в 400 000 рублей. Конкурс проводится в преддверии конференции «Сбербанк In-Memory Day».
Участвовать

Прототип проекта стоимостью $86 миллионов в 57 строках кода

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


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


Представлюсь: меня зовут Иван Греков, я из фронтенд-команды Badoo. Мне очень понравился этот пост, я просто не смог пройти мимо и не перевести его. Этот пост – отличный источник вдохновения для любителей прототипирования устройств и open-source-решений. Перевод публикуется с сохранением авторской точки зрения и, надеюсь, будет интересен вам.

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

Погружение в разработку на Ethereum. Часть 2: Web3.js и газ

Время на прочтение12 мин
Охват и читатели60K
В предыдущей статье мы описали деплой контрактов и взаимодействие с ними через пользовательский интерфейс кошелька Mist, но это не подходит для реальной разработки. Нужна библиотека, которая позволит работать с блокчейном из кода пользовательского приложения. В этой статье мы кратко рассмотрим что представляет собой библиотека Web3.js, пощупав ее из консоли Geth. И еще одна важная тема, которая наверняка интересует не только разработчиков, но и потенциальных заказчиков — сколько стоят транзакции на блокчейне, ведь каждая из них требует газа, который покупается за эфир.

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

Потрошитель исходников и AST дерево Spring Boot

Время на прочтение11 мин
Охват и читатели5.5K
Недавно мне попалась необычная задача получить доступ к комментариям кода в рантайм.



Это поможет поймать сразу 3х зайцев — кроме документации в коде проекта из тестов проекта легко будет сгенерировать sequence diagram, которые смогут читать аналитики, а QA сможет сравнить свои тест планы с автотестами проекта и дополнить их при необходимости. Появляется общий язык в команде между теми кто пишет код и теми кто не может его читать. Как результат — лучшее понимание проекта всеми в процессе разработки ну и с точки зрения разработчика не нужно рисовать ничего вручную — код и тесты первичны. Больше шансов что такая документация будет самой актуальной на проекте, так как генерируется из работающего кода. Заодно дисциплинирует разработчика документировать классы и методы, которые участвуют в диаграммах.

В этой публикации я расскажу как же извлечь javadoc из исходного кода проекта.
И в финале распотрошим документацию Spring Boot

RailsClub 2017: Интервью с Nick Sutterer. Rails умирает (а Ruby нет)

Время на прочтение6 мин
Охват и читатели12K
Привет! Сегодня публикуем интервью с Ником Сатерером. Ник создатель Trailblazer, автор нескольких гемов и новых слоев абстракции в Rails, Rails contributor. Накануне RailsClub 2017, где Ник будет делать доклад, Дмитрий Матвеев пообщался с ним о его работе и взглядах на развитие Rails.

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

Чемпионат #PGHACK. Платформа

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

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


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

Об операторах Publish, Connect, RefCount и Share в RxSwift

Время на прочтение4 мин
Охват и читатели15K
Привет, Хабр. Представляю вашему вниманию перевод статьи Understanding Publish, Connect, RefCount and Share in RxSwift.

В оригинале статьи используется Swift второй версии и соответствующая версия RxSwift. Я имел смелость переписать приведенные ниже куски кода под Swift 3.
Так же хочется отметить, что такие понятия, как Observable и Sequence, можно считать одним и тем же. То же касается Observer и Subscriber.

Так же рекомендую почитать про share(), share Replay(), shareReplayLatestWhileConnected() в RxSwift.


В этой статье я постараюсь объяснить такие операторы для работы с Connectable Observable в RxSwift, как publish, connect, refCount и share. Они используются вместе в различных комбинациях. Очень важно понимать разницу между:

  • publish().connect()
  • и publish().refcount() (или просто share())

Активные и пассивные Observables


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

Давайте горячий Observable мы будем называть Active Sequence, а холодный Passive Sequence.

  • Active Sequence эмитит элементы постоянно, независимо от того, подписан на нее кто-нибудь или нет
  • Passive Sequence начинает эмитить элементы по запросу

Примером Passive Sequence может служить запрос в сеть, который начинается только тогда, когда мы подписались на последовательность. Примерами Active Sequence могут служить web-socket соединение, события таймера или текст, производимый UITextField'ом.

И это все. Думайте об активных и пассивных последовательностях. Понятия горячих/холодных/теплых/прохладных Observables слишком запутанны и могут сбить с толку.
Читать дальше →

Как новичок в Go контрибьютил

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


Rocky Runs Up The Stairs


Привет, Хабр. Вы, наверно, меня помните: я – Марко Кевац, системный программист в Badoo. Недавно я наткнулся на небольшой рассказ о том, как новичок сделал изменение в рантайме языка Go. Несмотря на то, что этот пост, наверное, довольно неожиданно встретить в хабраблоге Badoo, и многие могут сказать, что он банален и переполнен наивной радостью, я считаю, что такие истории демонстрируют, насколько сообщество Go доброжелательно и внимательно по отношению ко всем его участникам. Поэтому и перевел его.


А ещё в посте есть два интересных факта, связанных с внутренностями языка. Приятного чтения!

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

Дайджест докладов с митапов в офисе Mail.Ru Group

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

За лето в офисе Mail.Ru Group прошли пять митапов, выступлениями с которых мы с вами сегодня поделимся. Каждое видео — доклад, рассказывающий о последних новостях и технологиях в различных областях. Просмотр позволит вам идти в ногу с профессиональными сообществами.


Ниже мы публикуем подборку видео с митапов лета 2017-го:


  • Moscow Data Science Junior, 10.06
  • QA Meetup в Нижнем Новгороде, 06.07
  • MySQL Meetup, 11.07
  • IT-HR Meetup, 19.07
  • Moscow Python Meetup 47, 27.07

Разработка на скорости 450 слов в минуту

Время на прочтение6 мин
Охват и читатели94K
«Чего-то здесь не хватает». Спорим, такая мысль первой придёт в вашу голову, если увидите моё рабочее место в офисе. Здесь нет монитора и мыши. Есть только парень, который молотит по клавиатуре, глядя словно в пустоту.



Это всего лишь я, и мои коллеги гарантируют вам, что я обычно не опасен. Я программист в офисе компании Vincit в Тампере (Финляндия). И ещё я слепой. В этой статье хочу немного рассказать, как я работаю.
Читать дальше →

Нестандартный подход к построению современного языка программирования

Время на прочтение10 мин
Охват и читатели7.9K
Со времён университета я переодически нахожу время для тестирования качества существующих продуктов и проведения исследований в разработке. Так случилось, что одним из моих исследований явилось создание современного языка программирования. К сожалению, я не преуспел в этом вопросе, но открыл для себя некоторые дверцы, которыми буду делиться в статьях.

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

В современных языках программирования что-то не так


Чтобы не было скучно, речь пойдёт именно о недостающих тонкостях языков, а не о недостатках существующих инструментов (зачастую язык сильно связан с конкретной средой разработки). Итак, ниже я отобрал 5 самых «ненужных и бесполезных» пунктов, о которых «никто не говорит», а я расскажу.
Читать дальше →

Метаслой: идеи о применении предсказания для оптимизации программирования и распределения ресурсов в ОС

Время на прочтение4 мин
Охват и читатели2.6K
Здравствуйте, уважаемые читатели.

Сейчас много говорят о «больших данных», обработка которых должна дать нам множество новых возможностей в самых различных сферах. В этой публикации я хотел бы немного рассказать об одной своей уже давней работе, которая, вообще говоря, предполагает полезную обработку некоторых «больших данных», естественным образом возникающих в процессе работы конечной программы или даже операционной системы. Если кратко, то речь идет, по меньшей мере, о временных профилях выполнения кода и о его различных внутренних характеристиках/переменных — это могут быть универсальные (например, размеры запрашиваемых у ОС блоков памяти) или локальные (внутренние переменные программы) значения. Я думаю, что несомненный интерес представляют:

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

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

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

Декларативное программирование в web-е

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

image


Что же такое декларативное программирование? Википедия подскажет нам:


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

Далее в статье пойдет речь о том, как использовать данную парадигму в современном web-программировании. В частности, я хотел бы затронуть вопрос о валидации/верификации входных данных для веб сервисов. Примеры будут на php, так как это язык мне наиболее близок в профессиональном плане.

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

Смена платежного сервиса с помощью A/B теста через HAProxy

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

Мы в Avito внимательно следим за развитием других классифайдов по всему миру. И конечно, нам интересны лучшие практики работы с такой непростой системой, как биллинг. Сегодня я публикую перевод поста моего коллеги по группе Naspers (Avito входит в её состав), М. Рафай Алема, инженера-программиста из Dubizzle. Это ведущий сайт объявлений в ОАЭ, входит в OLX Group — сеть крупнейших онлайн-рынков в 45 странах мира с более чем 1,9 млрд. посещений, 37 млрд. просмотров страниц и 54 млн. объявлений ежемесячно. Тема заинтересует всех, кто занимается созданием и развитием собственного платежного сервиса.


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

Почему с NDFLka.ru вы полюбите очередь

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

Сталкиваясь с налоговыми декларациями, не подкованный в бумажных делах человек часто нуждается в помощи специалиста. И когда он, потерянный и жаждущий налогового вычета, звонит, важно его не потерять — и дать ему ответы немедленно. Ради этого в сервисе NDFLka.ru готовы работать 24/7. Но с организацией телефонии в рабочие часы компания придумала пару полезных хитростей. Читайте о них под катом.

Текстонезависимая идентификация по голосу

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

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


Однако, я не умею строить летающие тарелки или синтезировать вирусы, а потому речь пойдет про терминаторов, а точнее о том как этим трудягам помочь отыскать Джона Коннора.


image


Мой рукодельный терминатор будет несколько упрощён — он не сможет ходить, стрелять, говорить "I'll be back". Единственное на что он будет способен — распознать голос Коннора, ежели он его услышит (ну или, например, Черчилля, если его тоже надо будет найти).

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

Pygest #16. Релизы, статьи, интересные проекты из мира Python [15 августа 2017 — 28 августа 2017]

Время на прочтение2 мин
Охват и читатели9.6K
image Всем привет! Это уже шестнадцатый выпуск дайджеста на Хабрахабр о новостях из мира Python.

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

А теперь к делу!
Перейти к дайджесту

Язык Terra — низкоуровневый партнёр Lua

Время на прочтение12 мин
Охват и читатели18K
Terra — низкоуровневый язык системного программмирования, встраиваемый и имеющий возможность метапрограммирования с помощью языка Lua.

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

Знай свой инструмент: Event Loop в libuv

Время на прочтение6 мин
Охват и читатели70K
image
Юдель Пэн. Часовщик. 1924

«Компьютер — это конечный автомат. Потоковое программирование нужно тем, кто не умеет программировать конечные автоматы» 
Алан Кокс, прим. Википедия


“Знай свой инструмент” — твердят все вокруг и все равно доверяют. Доверяют модулю, доверяют фреймворку, доверяют чужому примеру.

Излюбленный вопрос на собеседованиях по Node.js — это устройство Event Loop. И при всем том, очевидном факте, что прикладному разработчику эти знания будут полезны, мало кто пытается самостоятельно погрузиться в устройство событийного цикла. В основном, всех устраивает картинка сверху. Хоть это и похоже на пересказ фильма, который ты не смотрел, а о котором тебе рассказал друг.
Читать дальше →