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

Робопрактика для backend-разработчиков

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

Привет! Приглашаем разработчиков начального уровня на бесплатную backend-практику. На шаблоне реального проекта расскажем основные подходы, которые применяем при разработке — в частности, в микросервисах. Попрактикуемся в реализации новых фич и рефакторинге на Golang и не обойдем стороной вопросы эффективной работы в команде. Каждый практикант получит представление о современной backend-разработке на актуальном стеке технологий, а лучших мы пригласим работать в red_mad_robot.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 2.1K
Комментарии 0

Практикум Zend Framework. Часть первая: Аутентификация и Acl

Zend Framework *

В последнее время я все сильнее и сильнее убеждаюсь в универсальности Zend Framework, как платформы для создания web-приложений. Сегодня я расскажу о процессе создания каркаса сайта на Zend Framework, который предоставит необходимую основу для реализации сайтов средней сложности
Читать дальше →
Всего голосов 54: ↑40 и ↓14 +26
Просмотры 11K
Комментарии 58

Job Safety Driven Development

Разработка веб-сайтов *Программирование *
В то время как сторонники современных гибких методологий разработки выдумывают все новые и новые практики, их оппоненты также не стоят на месте. На фоне разнообразных XDD (FDD — Feature Driven Development, TDD — Test Driven Development, BDD — Behavior Driven Development, ATDD — Acceptance Test Driven Development) они сформулировали свою методологию — JSDD (Job Safety Driven Development). Кому интересны детали, добро пожаловать под кат.

Читать дальше →
Всего голосов 51: ↑42 и ↓9 +33
Просмотры 16K
Комментарии 73

Студенческий JPoint — счастливый билет в будущее

Блог компании JUG Ru Group Разработка веб-сайтов *Программирование *Java *
Кто ещё не знает, 24 апреля 2016 года в Москве пройдёт JPoint Student Day — конференция для студентов, изучающих Java-технологии и JVM-языки. На ней выступят гуру Java-мира с докладами, которые совсем не похожи на то, что читают на лекциях и рассказывают на практике. Это будет полное погружение в мир настоящей, боевой разработки — для кого-то первое, а для кого-то более тесное знакомство с профессией. Причём это не будет игра в одни ворота — можно будет задавать вопросы докладчикам, общаться с ними в перерывах и любое свободное время, рассказывать о своих проектах и заводить полезные знакомства. Которые, поверьте, вам пригодятся совсем скоро. Но обо всём по порядку.


Читать дальше →
Всего голосов 25: ↑22 и ↓3 +19
Просмотры 7.1K
Комментарии 0

DRY и цена неправильных абстракций

Программирование *Проектирование и рефакторинг *Промышленное программирование *
Перевод


Эта статья давно висела у меня в списке задач. Но кажется, только сегодня у меня появились силы и время, чтобы материализовать её. Совпадение или нет, но я в том же кафе, где опубликовал недавно свою первую статью. Наверное, в напитки, которые тут подают, что-то подмешивают...


Так что? Бородатый, хороший совет — следовать лучшим практикам? Мы постоянно слышим о них. Мы даже дали им краткие прозвища, типа DRY или KISS, и используем на автомате в технических разговорах. Мы фанатично следуем концепции, и если кто-то случайно захочет или просто по незнанию не станет их соблюдать, мы выливаем на них вёдра грязной критики. Мы пленники этих убеждений и отказываемся отвернуться от них в нужный момент.


Конечно, я не намекаю, что такие принципы, как DRY — плохие. Это определенно не так. Просто я считаю, что всё зависит от ситуации. Сильно. Что касается именно DRY, это ведёт к логическому выводу: «На самом деле я тот, кто иногда склоняет других к дублированию, а не абстракции».


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

Читать дальше →
Всего голосов 39: ↑32 и ↓7 +25
Просмотры 13K
Комментарии 21

Чем на самом деле занимаются стажеры в ABBYY

Блог компании ABBYY Программирование *Учебный процесс в IT Карьера в IT-индустрии
ABBYY уделяет большое внимание подготовке квалифицированных IT-специалистов и развитию их способностей. Мы считаем, что уже с первых курсов института очень важно привлекать ребят к решению реальных задач в областях OCR, машинного обучения, NLP и к участию в существующих проектах, потому что теория не возможна без практики. Поэтому мы приглашаем талантливых студентов МФТИ, МГУ, ВШЭ и других ВУЗов к нам на стажировки. Это может быть практика не только на лето, но на более длительное время. В любом случае у студента в ABBYY есть хорошая возможность проявить себя, поучаствовать в работе над реальными продуктами, получить новые знания, полезные навыки и присоединиться к нашей команде. Ребята всегда могут договориться со своими наставниками и совмещать практику с учебой. В этом посте мы расскажем, как проходят стажировки в ABBYY и чем на самом деле занимаются здесь студенты ;)
Читать дальше →
Всего голосов 20: ↑20 и ↓0 +20
Просмотры 4.8K
Комментарии 2

Форкни это: 8 проектов на Go, в исходном коде которых интересно покопаться

Блог компании Binary District Open source *Go *
Мы в Binary District проводим интенсивы по Go. За два дня можно научиться понимать идеологию и внутренности Go, писать чистый тестируемый код. Но это первый шаг, а дальше — практика, практика, практика: читать чужой код, писать и править свой.

Для этого идеально подходит open source:

  • Open source повышает насмотренность. Можно невозбранно изучать исходники.
  • Open source дает стимул писать максимально чистый код и документировать логику.
  • Вклад в open source движение улучшает карму.



Вместе с выпускником нашего Go-курса Сергеем Tolsi мы составили список открытых проектов разного уровня и направленности, которые подходят, чтобы учиться писать хороший код и заодно делать мир лучше.
Читать дальше →
Всего голосов 24: ↑21 и ↓3 +18
Просмотры 15K
Комментарии 0

RxVMS — практичная архитектура для Flutter-приложений

Dart *Flutter *
Перевод

Это первый пост из серии публикаций, в которых объясняется мое понимание архитектуры приложений для Flutter. Предупреждаю — это будет весьма самоуверенным.


Пока запланированы:



Предисловие


Я в программировании уже около 20 лет. Начал мобильную разработку 4 года назад с Xamarin.Forms, ибо кроссплатформенность была единственной побудительной причиной для меня в качестве инди-разработчика. Xamarin.Forms буквально толкают тебя к использованию паттерна MVVM, так как определение UI ведется в XAML, и тебе необходим какой-то слой, чтобы склеивать UI с Моделью. В процессе работы с Xamarin я познакомился с ReactiveUI и был буквально покорен потоками и реактивными расширениями (Rx), сделавшими мои приложения более надежными.


В то время, как в Xamarin.Forms MVVM были "из-коробки", при переходе к Flutter я был удивлен, что в нем не было никаких похожих шаблонов проектирования. Я начал исследовать различные предлагаемые подходы, но ничего из имеющегося не удовлетворило меня в полной мере:

Читать дальше →
Всего голосов 9: ↑7 и ↓2 +5
Просмотры 9.8K
Комментарии 5

Основы RxVMS: RxCommand и GetIt

Dart *Flutter *
Перевод

Это четвертая часть моей серии про архитектуру Flutter:



Хотя 2 предыдущие части явно не относились к паттерну RxVMS, они были необходимы для ясного понимания этого подхода. Теперь мы обратимся к самом важным пакетам, которые понадобятся, чтобы использовать RxVMS в вашем приложении.

Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 5.8K
Комментарии 0

Основы Dart Streams

Dart *Flutter *
Перевод

Это вторая часть моей серии по поводу Flutter Architecture:



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


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


Пусть течет


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


Мне бы хотелось, чтобы вы знали, что я не считаю себя гуру Rx. Освоить всю мощь его нелегко, и я признаю, что продолжаю учиться. Но позвольте мне с самого начала исправить одно заблуждение: вам не нужно быть волшебником Rx, чтобы начать получать массу преимуществ от использования потоков и этой технологии. Я приложу максимум усилий, чтобы объяснить вам потоки наиболее доступным образом.

Читать дальше →
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 30K
Комментарии 6

RxDart: магические трансформации потоков

Dart *Flutter *
Перевод

Добро пожаловать — это третья часть моей серии статей об архитектуре Flutter.



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


RxDart — это реализация концепции Rx для языка Dart, за что следует сказать спасибо Frank Pepermans и Brian Egan. Если ранее вы использовали Rx в других языках, то наверняка заметите разницу в именовании ряда функций, но это вряд ли вызовет у вас затруднения.


Код для тестирования находится здесь.


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

Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 18K
Комментарии 2

Flutter: локализация приложений средствами Android Studio

Dart *Flutter *
Tutorial


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


Эта статья не претендует на полноту охвата вопроса, а является описанием практики, на мой взгляд, очень эффективно уменьшающей ручной ввод.


Речь идет о локализации при помощи flutter_i18n — плагина Android Studio, используя который удается избавиться от рутинной работы и шаблонного кода.

Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 7.2K
Комментарии 10

RxDart для самых маленьких… проектов

Dart *Flutter *
Tutorial


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


Ниже буквально в 50 строк я на известном примере покажу, что реактивность


а) это не про оффлайн/онлайн
б) это очень просто
в) очень хороша для упрощения практически любого кода

Читать дальше →
Всего голосов 15: ↑13 и ↓2 +11
Просмотры 12K
Комментарии 30

Имитация Сложности — Антиномия Простого и Сложного

Программирование *Анализ и проектирование систем *Проектирование и рефакторинг *Промышленное программирование *

Программисты много говорят про сложность решений. Мы можем часами размышлять о правильных шаблонах, красивых абстракциях и цепочках зависимостей. Однако, давайте поговорим открыто, всегда ли сложность обусловлена решаемой проблемой? Не оказываемся ли мы в плену наших стереотипов и убеждений?


Читать дальше →
Всего голосов 21: ↑20 и ↓1 +19
Просмотры 7.7K
Комментарии 26

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

Python *Программирование *
Из песочницы
Привет, Хабр! представляю вашему вниманию перевод статьи «Stop Using Square Bracket Notation to Get a Dictionary’s Value in Python» автора Jonathan Hsu.

Выходим за рамки традиционного метода и защищаем свой код


Словарь — это несортированный набор ключей и значений. Это значит, что:

  • Каждый элемент словаря состоит из термина (ключ) и его определения (значение).
  • Ключи должны быть уникальными для данного словаря — никаких повторений.
  • Ключи в словаре не имеют такого явного порядка расположения, который есть у элементов списка.
Читать дальше →
Всего голосов 25: ↑6 и ↓19 -13
Просмотры 9.3K
Комментарии 34

Что есть что в CMake 3.10+ и как это использовать

Open source *Программирование *C++ *C *Системы сборки *

Популярность CMake растёт. Многие крупные проекты переходят с собственных инструментов для сборки на CMake. Проект Conan предлагает интеграцию с CMake для управления зависимостями.

Разработчики CMake активно развивают инструмент и добавляю новые функции, решающие общие проблемы, возникающие при сборке проектов. Переход с CMake 2 на CMake 3 был достаточно болезнен. Документация не покрывает все аспекты использования. Функционал крайне обширен, а возникающие трудности различаются от проекта к проекту. В статье я расскажу о инструментах, которые предлагает CMake 3.10 и выше. В каждой новой версии появляются новые детали или улучшаются старые. Об актуальном состоянии лучше проанализировать Changelog, так как многие улучшения последних версий весьма специфичны для отдельных проектов, как например улучшение поддержки Cuda компиляторов. Я же сфокусируюсь на общих понятиях, которые помогут организовать проект на С++ оптимальным образом с точки зрения использования CMake как основной системы сборки.

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

Читать далее
Всего голосов 10: ↑7 и ↓3 +4
Просмотры 6.2K
Комментарии 3

Стажировка в ABBYY-2021: гибридный формат, больше машинного обучения и планы на будущее

Блог компании ABBYY Программирование *Учебный процесс в IT Карьера в IT-индустрии

Мы в ABBYY понимаем, как важно начинать строить карьеру в интересном для себя направлении еще в студенческие годы. Поэтому помогаем талантливым ребятам пробовать свои силы и развиваться уже на третьем курсе университета. Мы проводим летние стажировки, где даем ребятам настоящие «боевые» задачи. По итогам лучшие студенты получают предложения о работе.

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

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

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 2.4K
Комментарии 0

Code Review. 80 lvl

Программирование *Java *Совершенный код *Управление разработкой *

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

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

Читать далее
Всего голосов 18: ↑17 и ↓1 +16
Просмотры 15K
Комментарии 13