Search
Write a publication
Pull to refresh
13
0

Software Developer

Send message

Переезд из Java в Kotlin: как забрать коллекции с собой

Reading time12 min
Views18K
Меня зовут Борис Николаев, и в первой статье на Хабре хочу сравнить Java и Kotlin при работе с коллекциями. Она будет полезна всем, кто планирует перебираться в Kotlin и не хочет долго осваиваться.

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

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

Продвинутые дженерики в TypeScript. Доклад Яндекса

Reading time14 min
Views18K
Дженерики, или параметризованные типы, позволяют писать более гибкие функции и интерфейсы. Чтобы зайти дальше, чем параметризация одним типом, нужно понять лишь несколько общих принципов составления дженериков — и TypeScript раскроется перед вами, как шкатулка с секретом. AlexandrNikolaichev объяснил, как не бояться вкладывать дженерики друг в друга и использовать автоматический вывод типов в ваших проектах.

— Всем привет, меня зовут Александр Николаичев. Я работаю в Yandex.Cloud фронтенд-разработчиком, занимаюсь внутренней инфраструктурой Яндекса. Сегодня расскажу об очень полезной вещи, без которой сложно представить современное приложение, особенно большого масштаба.
Читать дальше →

Финальные классы в PHP, Java и других языках

Reading time3 min
Views8.7K
Использовать финальные классы или не использовать финальные классы? Вот в чём вопрос. А ещё в том, когда и как это делать правильно.


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

«Почему Kotlin хуже, чем Java?»

Reading time6 min
Views77K

Такой провокационный вопрос задал реддитор nenemen в сабреддите Java:

«Я думаю о том, чтобы свой следующий проект сделать на Kotlin + Spring Boot, но мощь всенародной любви к Kotlin и одновременно ненависти к Java заставляют всё это походить на какой-то культ. Поэтому хотел бы услышать аргументы «против».

Мы в FunCorp в своё время сделали именно такой выбор в пользу Kotlin. И сегодня соотношение Java/Kotlin у нас составляет примерно 20 на 80, продолжая уменьшаться при каждом удобном случае. Поэтому ответы на этот вопрос меня заинтересовали, и я стал листать секцию комментариев. Там наткнулся на реплику реддитора rzwitserloot, которая мне показалась настолько взвешенной, многосторонней и рациональной, что я захотел поделиться ей с нашей командой, а заодно и читателями Хабра.

Далее перевод его аргументов.

Читать далее

Тесты должна писать разработка (?)

Reading time4 min
Views14K
Привет! Есть старый холивар на тему, кто же должен писать тесты: разработчики или тестировщики. Вроде как если в команде есть тестировщики, то логично, что тесты пишут они, правда? С другой стороны, ребята из разработки (помимо самой разработки) точно знают, как работает их код и как будет вести себя в тех или иных ситуациях. Как минимум предполагают.


Дисклеймер: меня зовут Эрик Бурыгин, я давно работаю тестировщиком, веду студентов на курсе «Инженер по тестированию», поэтому может показаться, что тестировщик просто хочет перекинуть кусок работы на разработчиков. На самом деле у описываемого подхода есть как плюсы, так и минусы, поэтому статья носит в том числе и дискуссионный характер. Буду рад увидеть в комментах мнения как разработчиков, так и тестировщиков.

Если тесты пишет разработка, можно решить сразу несколько проблем, например:

  • Ощутимо ускорить релизный цикл.
  • Снять нагрузку с тестирования.

В большинстве команд процесс выглядит примерно так:

  1. Разработчик создаёт новые фичи и допиливает существующие.
  2. Тестировщик всё это тестирует и пишет различные тест-кейсы.
  3. Автоматизатор, оправдывая название должности, автоматизирует всё по написанным тест-кейсам из п.2.

Вроде бы всё выглядит просто.

Но в этой парадигме есть слабые места.
Читать дальше →

Как составить резюме на английском для иностранной компании

Reading time6 min
Views40K
Привет! Меня зовут Лео Скляр, я методист направления английского языка в Яндекс.Практикуме. Сейчас занимаюсь подготовкой курса английского для работы. Он может быть полезен как программистам, так и другим специалистам из digital-сферы. Я решил обобщить актуальную и самую ценную информацию из этого курса в гайд по грамотному составлению резюме на английском.

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



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

1. Специфика англоязычного резюме


В отличие от принятого в России резюме, которое больше похоже на CV (Curriculum vitae — описание профессионального пути на две–три страницы в хронологическом порядке) — резюме для американских и европейских компаний — это одностраничный документ, составленный по чёткой структуре. Такая лаконичность может казаться удивительной, но одна страница — это общепринятый стандарт резюме за рубежом. Даже если опыт большой, в резюме стоит сохранить упоминание только трёх–пяти последних мест работы, вашу позицию и ключевые достижения. Как правило, работодателя интересует актуальный опыт. Если ему потребуется узнать о вас больше, он может запросить расширенную версию резюме.
Читать дальше →

Боль в спине — понимание с позиции современной медицины

Reading time8 min
Views184K
Плохое понимание людьми причин болей в спине подтолкнуло меня к тому, чтобы адаптировать мой недавно опубликованный обзор по болям внизу спины для более массового читателя.

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


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

Доступные «напольники» — три избранные пары акустических систем базового ценового сегмента

Reading time4 min
Views29K

Ранее мы разобрали целый спектр компактной активной и пассивной акустики: от мониторов для мультимедиа до «студийников» для домашней студии и заметных систем полочного типа с близким к оптимальному соотношением «цена/качество» — раздватри, четыре.

Читать далее

Вопросы, которые вам следует задать рекрутеру, чтобы успешно пройти телефонное собеседование

Reading time4 min
Views33K

Как вы себя ощущаете, когда у вас на носу телефонное собеседование: измотаны переподготовкой или четко знаете, на чем нужно сосредоточиться?

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

Читать далее

Пишем unit тесты так, чтобы не было мучительно больно

Reading time6 min
Views12K


Любую задачу в программировании можно выполнить массой разных способов, и не все они одинаково полезны. Хочу рассказать о том, как можно накосячить при написании модульных тестов. Я пишу мобильные приложения уже 6 лет, и в моем «багаже» много разных кейсов. Уверен, что кому-то будет полезно.
Читать дальше →

5 слов английского языка, которые невозможно произнести правильно с первого раза

Reading time5 min
Views197K

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

Многие из таких слов невозможно произнести правильно, если заранее не знаешь, как это делать.

Отличный пример уровня Intermediate — слово «queue» (очередь). Потому что произносится оно как [kjuː]. Наши преподаватели часто шутят, что можно отбросить четыре из пяти букв слова и все равно прочитать его правильно. 

Но в английском есть и такие слова, в которых ошибаются и сами носители. Их вообще нереально произнести правильно, если заранее не подсмотреть в транскрипцию. О них сегодня и поговорим.

Читать далее

Async/await в C#: концепция, внутреннее устройство, полезные приемы

Reading time24 min
Views250K
Доброго времени суток. В этот раз поговорим на тему, в которой начинал разбираться каждый уважающий себя адепт языка C# — асинхронное программирование с использованием Task или, в простонародье, async/await. Microsoft проделали хорошую работу — ведь для того, чтобы использовать асинхронность в большинстве случаев нужно лишь знание синтаксиса и никаких других подробностей. Но если лезть вглубь, тема довольно объемная и сложная. Ее излагали многие, каждый в своем стиле. Есть очень много классных статей по этой теме, но все равно существует масса заблуждений вокруг нее. Постараемся исправить положение и разжевать материал настолько, насколько это возможно, не жертвуя ни глубиной, ни пониманием.


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

Имя не гарантирует безопасность. Haskell и типобезопасность

Reading time12 min
Views2.4K
Разработчики на Haskell много говорят о типобезопасности (type safety). Сообщество Haskell-разработчиков отстаивает идеи «описания инвариант на уровне системы типов» и «исключения недопустимых состояний». Звучит как вдохновляющая цель! Однако не совсем понятно, как ее достичь. Почти год назад я опубликовала статью «Parse, don’t validate» — первый шаг к восполнению этого пробела.

За статьей последовали продуктивные обсуждения, но нам так и не удалось прийти к консенсусу относительно правильного использования конструкции newtype в Haskell. Идея достаточно проста: ключевое слово newtype объявляет wrapper type (тип-обертка), который отличается по имени, но репрезентативно эквивалентен типу, который он обертывает. На первый взгляд, это понятный путь к достижению типобезопасности. Например, рассмотрим, как использовать объявление newtype для определения типа адреса электронной почты:

newtype EmailAddress = EmailAddress Text

Этот прием предоставляет нам определенное значение, а в сочетании с умным конструктором и границей инкапсуляции даже может обеспечить безопасность. Но это совсем другой вид типобезопасности. Он намного слабее и отличается от того, который я выделила год назад. Сам по себе newtype — это просто псевдоним.

Names are not type safety ©
Читать дальше →

Как избавиться от if-else при помощи команд и обработчиков

Reading time6 min
Views32K


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

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

Рассматриваемый в статье способ — просто один из многих.

Сама по себе конструкция if-else не так уж плоха. Мы просто попали в ситуацию «когда в руках молоток, всё вокруг кажется гвоздями». В основах программирования мы изучаем условные операторы и многим разработчикам не удаётся перерасти их использование.

Однако if-else и switch зачастую неидеальны. Программисты обычно пренебрегают более качественными решениями, например, полиморфическим исполнением и словарями.
Читать дальше →

Трюк с XOR для собеседований и не только

Reading time8 min
Views137K


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

Хоть и непривычно ожидать решения с XOR на собеседованиях, довольно забавно разбираться, как они работают. Оказывается, все они основаны на одном фундаментальном трюке, который я постепенно раскрою в этом посте. Далее мы рассмотрим множество способов применения этого трюка с XOR, например, при решении популярной задачи с собеседований:

Дан массив из n — 1 целых чисел, находящихся в интервале от 1 до n. Все числа встречаются только один раз, за исключением одного числа, которого нет. Найдите отсутствующее число.

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

Java Optional не такой уж очевидный

Reading time9 min
Views20K

NullPointerException - одна из самых раздражающих вещей в Java мире, которую был призван решить Optional. Нельзя сказать, что проблема полностью ушла, но мы сделали большие шаги. Множество популярных библиотек и фреймворков внедрили Optional в свою экосистему. Например, JPA Specification возвращает Optional вместо null.

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

Читать далее

FizzBuzz по-сениорски

Reading time7 min
Views119K

- Добрый день, я на интервью на позицию старшего разработчика.

- Здравствуйте, давайте начнем с небольшого теста, пока я ваше CV смотрю. Напишите программу, которая выводила бы числа от 1 до, скажем, миллиарда, притом если число кратно трем, то вместо числа выводится Fizz, если кратно пяти, то Buzz, а если и трем, и пяти, то FizzBuzz.

Серьезно, FizzBuzz? Задачка для начальной школы, на сениорскую позицию? Ну ладно.

Читать далее

Как я готовился к собеседованию в Google

Reading time9 min
Views51K
Каждый инженер-программист стремится впечатлить людей своим техническим мастерством. Технологические гиганты этого мира — прекрасное место для работы технарей, которые могут предоставить услуги миллиардам пользователей. На моём недавнем собеседовании было несколько раундов, я получил предложения от Google и Amazon. В последние несколько лет онлайн-сообщество очень помогло мне в подготовке к собеседованиям. В этом посте я поделюсь всем о моём пути к собеседованию и верну вклад общества в моё обучение.


Приятного чтения!

Если бы плотников нанимали так же, как программистов

Reading time3 min
Views297K

Интервьюер: Итак, вы считаете себя плотником?
Плотник: Всё верно. Это именно то, чем я занимаюсь.

Интервьюер: Как долго вы занимаетесь этим?
Плотник: Десять лет.

Интервьюер: Очень хорошо. А теперь я бы хотел задать вам несколько технических вопросов, чтобы оценить, насколько вы впишетесь в нашу команду. Договорились?
Плотник: Конечно, было бы неплохо.

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

Интервьюер: Да, я понимаю, но не могли бы вы подсказать мне, сколько у вас опыта именно с коричневыми? Ну, плюс-минус.
Плотник: Я действительно понятия не имею. С того момента, как дом построен, меня не волнует, в какой цвет его покрасят. Может, шесть месяцев?
Читать дальше →

Flyway: управление миграциями баз данных

Reading time6 min
Views76K
В этой статье я расскажу об одном из средств обеспечения версионности схем и управления миграциями БД — библиотеке Flyway. С поблемой версионности схемы базы данных рано или поздно приходится сталкиваться разработчикам любого приложения, опирающегося на СУБД. Увы, иногда эта проблема принимается в рассмотрение слишком поздно — например, если вопрос о внесении изменений в структуру базы встаёт, когда приложение уже находится в эксплуатации. Но и на этапе разработки контроль схемы базы данных причиняет не меньше проблем, чем все прочие аспекты версионности приложения: в отсутствие чёткой системы управления миграциями локальная, стендовая и эксплуатационная базы могут быстро «разъехаться», не предоставляя при этом никакой информации относительно своего текущего состояния.

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

Information

Rating
Does not participate
Location
Россия
Registered
Activity