Search
Write a publication
Pull to refresh
4
1

Пользователь

Send message

Собеседую программистов на Java. Единый набор вопросов для любого уровня

Reading time4 min
Views28K
В своей карьере мне приходилось быть и разработчиком, и менеджером, и даже один раз «CTO» в небольшом стартапе. И, разумеется, приходилось проводить большое количество собеседований кадидатов. Поэтому для себя я выработал такие правила проведения технических собеседований:

  • всем кандидатам задавать одинаковые вопросы,
  • вопросы должны быть такие, чтобы на них ответил и junior, и senior, но по разному,
  • после трёх вопросов должен быть понятен уровень кандидата.

И вот такие три вопроса для Java-разработчиков у меня получились.
Читать дальше →

Принципы SOLID в картинках

Reading time4 min
Views534K


Если вы знакомы с объектно-ориентированным программированием, то наверняка слышали и о принципах SOLID. Эти пять правил разработки ПО задают траекторию, по которой нужно следовать, когда пишешь программы, чтобы их проще было масштабировать и поддерживать. Они получили известность благодаря программисту Роберту Мартину.

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

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

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

Ну, приступим.
Читать дальше →

Подтверждение входа с помощью Telegram на Spring Boot

Reading time19 min
Views16K

Недавно столкнулся с проблемой: все приложения используют Telegram-бота в качестве подтверждения входа в аккаунт, а мое — нет. Я был настроен серьезно и провёл уйму времени в интернете в поиске туториала, но меня ждало разочарование. Задача сложная и имеет много подводных камней, а туториалов — ноль.


Следующую неделю я потратил на написание своей имплементации данной фичи и готов поделиться успехом.


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


Самомотивация технаря: уравнение прокрастинации, эффект шредера и трюки с едой

Reading time14 min
Views32K
Привет! Меня зовут Игорь, я занимаюсь машинным обучением в Lamoda. До этого я несколько лет работал в науке, что сильно сформировало мое мышление в технарскую сторону.

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

Этими находками я решил поделиться в этой статье.

  • Поговорим про мотивацию самого себя, а не кого-то другого;
  • Узнаем, что такое мотивационное уравнение и как его использовать;
  • Разберём, как влиять на факторы мотивации;
  • И какие есть сервисы и инструменты для этого.

Это статья не про мотивацию сотрудников Lamoda, а про мотивацию, которую я нашел для себя.

image

htop и многое другое на пальцах

Reading time26 min
Views328K


На протяжении долгого времени я не до конца понимал htop. Я думал, что средняя загрузка [load average] в 1.0 означает, что процессор загружен на 50%, но это не совсем так. Да и потом, почему именно 1.0?

Затем я решил во всём разобраться и написать об этом. Говорят, что лучший способ научиться новому — попытаться это объяснить.
Читать дальше →

Топ-10 книг для разработчика

Reading time6 min
Views140K

Совершенствоваться в сфере разработки — это не только писать хороший код, но и читать о том, как его писать.




Привет, хабр! Продолжаю делиться полезными подборками. Совсем недавно я опубликовал 2 поста с перечнем Github репозиториев: Часть1 и Часть2. На этот раз предлагаю вашему вниманию подборку полезных книг для разработчиков. Кому интересно — добро пожаловать под кат.
Читать дальше →

Когда самое лучшее время для инвестиций?

Reading time3 min
Views22K
Всем привет. Недавно прочитал пост на Хабре ״Как стать долларовым миллионером за 30 лет, лежа на диване״. Судя по активности в комментариях — тема инвестирования актуальна. Многих интересует вопрос, когда же лучше всего инвестировать? Что будет, если сегодня я куплю акций, а завтра они упадут? Ждать падения, а только потом инвестировать? Или же просто каждый месяц покупать акции?
Читать дальше →

450 бесплатных курсов от Лиги Плюща

Reading time19 min
Views74K
image


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

Я сейчас решаю задачу, как из огромной массы жизненно важного контента выбрать тот, который стоит попробовать в первую очередь, как «разметить данные», чтобы нейросеточка у подрастающего поколения обучилась более эффективно. (ontol.org, «Выгорание», «Удаленка», телеграм-канал).

Предлагаю вашему вниманию полную подборку всех бесплатных курсов от Лиги Плюща.

Лига плюща (The Ivy League) — ассоциация восьми частных американских университетов, расположенных в семи штатах на северо-востоке США. В состав лиги входят: Брауновский университет (Brown University), Гарвардский университет (Harvard University), Дартмутский колледж (Dartmouth College), Йельский университет (Yale University), Колумбийский университет (Columbia University), Корнеллский университет (Cornell University), Пенсильванский университет (University of Pennsylvania), Принстонский университет (Princeton University).

Эти университеты выпустили около 500 онлайн-курсов, 450 из которых сейчас доступны.

Оглавление


Computer Science (37)
Data Science (18)
Программирование (8)
Гуманитарные науки (80)
Бизнес (72)
Art & Design (20)
Наука (32)
Социальные науки (74)
Здоровье и медицина (32)
Инженерия (15)
Образование и преподавание (21)
Математика (14)
Личностное развитие (7)

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

Поиск работы за границей и иммиграция в Канаду

Reading time12 min
Views90K

Всем привет!


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


TL;DR: Сейчас я живу в городе Виктория, на острове Ванкувер. Это Канада, Британская Колумбия. Свою мечту жить у океана я реализовал, но это заняло 5 лет, и сначала были совершенно другие планы. Более подробно ниже. Ниже картинка моих рабочих мест за последние 10 лет.



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


В студенческие годы мой отец, подсунул мне ссылку на world4u — это волонтерская организация по обмену. В 2007, 2008, 2009 я посетил Германию, Францию и Италию. В среднем программа была по 1-2 месяца и нужно было оплатить только за перелет. Именно эти европейские проекты оказали на меня влияние, я увидел мир, и понял, что это скучно прожить жизнь в одном месте, даже с комфортом. Картинка ниже очень хорошо передает мой основной мотив:



Это из детского рассказа про Улитку и Кита:


Начинаем рассказ (занимайте места!)
Про малютку улитку и великана кита.
Вот скала,
Где над морем улитка жила,
И вздыхала она то и дело:
-Как мне все надоело!
Мир огромен, а я тут сижу на скале,
А могла бы уплыть на большом корабле…
Читать дальше →

Очень много YouTube-каналов для прокачки английского языка для программистов

Reading time4 min
Views61K
Привет, Хабр!

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

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

Поучить английский


AJ Hoge. На его канале есть всё: от базовых слов до размышлений о важности языка тела в общении. Чувак пилит видосы уже много лет, материальчик накопился.

EngVid. Если бы можно было выбрать что-то одно для улучшения английского, то это оно. Разные преподы и тематики, постоянное обновление, бездонный ресурс. Ещё сайт одноимённый крутой, с удобной навигацией — можно найти очень узкую тему по интересам.
Читать дальше →

О хранении JWT токенов в браузерах

Reading time3 min
Views68K

Открытый стандарт JWT официально появился в 2015 (rfc7519) обещая интересные особенности и широкие перспективы. Правильное хранение Access токена является жизненно важным вопросов при построении системы авторизации и аутентификации в современном Web, где становятся все популярнее сайты, построенные по технологии SPA.

Неправильное хранение токенов ведет к их краже и переиспользованию злоумышленниками.
Читать дальше →

10 отличных Github репозиториев для разработчиков (часть 2)

Reading time4 min
Views17K

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



Как и в прошлом случае, перевод будет довольно вольным: я опустил предисловие и эмоциональные похвалы автора оригинала, чтобы оставить только суть. Еще, обновил цифры, чтобы информация была более актуальной к моменту публикации этого перевода. Итак, поехали.
Читать дальше →

О доверии

Reading time8 min
Views29K
Волнует в последнее время эта тема, решил порассуждать. Буду признателен за комментарии и замечания.

1. Микроуровень


Большинство людей реально компетентны в 1-2 областях. По поводу всех остальных вынуждены полагаться на мнения знакомых и признанных (реальных или мнимых) специалистов и opinion-maker’ов (известных людей, формирующих своими публичными действиями или высказываниями общественное мнение). Иначе никак – ты не можешь проверять каждый факт и тем более быть профессионалом во всех областях.

И вот тут начинается интересное. А кому верить?

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

Каждый день с утра до вечера мы посылаем в общество сигналы: манера двигаться, одеваться, формулировать и произносить фразы, выбор лексикона – всё это способы заявить, кто мы есть. И притягивать себе подобных. «Мне пофиг, что обо мне думают» – детский сад. И прекратите уже исправлять тех, кто говорит «звОнит». Всё они знают, не мешайте людям самоидентифицироваться.
Читать дальше →

Варим байткод на кухне JVM

Reading time8 min
Views16K
Меня зовут Александр Коцюруба, я руковожу разработкой внутренних сервисов в компании ДомКлик. Многим разработчикам, пишущим на Java, с опытом приходит понимание внутреннего устройства JVM. Чтобы облегчить этот путь Java-самурая, я решил простым языком изложить основы виртуальной машины Java (JVM) и работы с байткодом.

Что такое таинственный байткод и где он обитает?

Постараюсь ответить на этот вопрос на примере приготовления солений.


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

Стоимость денег, типы процентов, дисконтирование и форвардные ставки. Ликбез для гика, ч.1

Reading time9 min
Views66K
Представьте себе ситуацию – вы покупаете машину, и вам предлагают два варианта: заплатить с рассрочкой в несколько месяцев или погасить всю сумму сразу и с небольшой скидкой. Какой окажется выгоднее?

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



Все ответы под катом. И добро пожаловать в мир, где время — всегда деньги. До этого вы знали об этом, но теперь — в деталях и с примерами.
Читать дальше →

Про фразовые глаголы-5 (up/down)

Reading time4 min
Views15K
Сначала рекомендуется прочитать предыдущие части:

1. habr.com/ru/post/495794
2. habr.com/ru/post/496190
4. habr.com/en/post/499368

Значение up «до конца, полностью» выражается (помимо приведённых в первой статье) русскими приставками:

из-/ис-: beat – «бить», beat up – «из-бить»; use – «пользовать», use up – ис-пользовать (какой-то ресурс до конца): Masha used up all of my shampoo.

от-: build – «строить», build up – «отстроить»; polish – «полировать», polish up – «от-полировать».

по-: hang – «вешать», hang up – «по-весить» (трубку). Show – «казать/являться», show up – «по-явиться». Vasya showed up on time – Вася пришёл/появился вовремя.

при- в значении приближения [к стандартам]: dress – «одеть», dress up – «при-одеть» (одеть подчёркнуто стильно или ярко). Masha was dressed up – Маша была приодета.

Dress out – «разодеть», только устаревшее. В данном случае up ≈ out, как в русском «при-» ≈ «раз-»: приоделась ≈ разоделась. Up акцентирует завершённость гардероба (наряда), out – содержит ещё лёгкую эмоциональную составляющую «преувеличенности» действия – «раз-одеть».

Dress up/dress out имеют бесчисленные синонимы: tog up = tog out, deck up = deck out, rig up = rig out, fig up = fig out, trick up = trick out. Есть даже fancy up и gussy up, но с out эти глаголы не употребляются.*
Читать дальше →

Пакетная обработка в JDBC и HIBERNATE

Reading time9 min
Views24K

Здравствуйте!


В этой статье, я кратко расскажу о пакетной обработке SQL (DML) операторов: INSERT, UPDATE, DELETE, как одной из возможностей достижения увеличения производительности.




Преимущества


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


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

Основные linux-команды для новичка

Reading time14 min
Views1M
Linux — это операционная система. Как винда (windows), только более защищенная. В винде легко подхватить вирус, в линуксе это практически невозможно. А еще линукс бесплатный, и ты сам себе хозяин: никаких тебе неотключаемых автообновлений системы!

Правда, разобраться в нем немного посложнее… Потому что большинство операций выполняется в командной строке. И если вы видите в вакансии «знание linux» — от вас ожидают как раз умение выполнять простейшие операции — перейти в другую директорию, скопировать файл, создать папочку… В этой статье я расскажу про типовые операции, которые стоит уметь делать новичку. Ну и плюс пара полезняшек для тестировщиков.

Я дам кратенькое описание основных команд с примерами (примеры я все проверяла на cent os, red hat based системе) + ссылки на статьи, где можно почитать подробнее. Если же хочется копнуть еще глубже, то см раздел «Книги и видео по теме». А еще комментарии к статье, там много полезного написали)
Читать дальше →

Здоровье индексов в PostgreSQL глазами Java-разработчика

Level of difficultyMedium
Reading time5 min
Views22K

Привет.


Меня зовут Ваня, и я Java-разработчик. Так получилось, что я много работаю с PostgreSQL – занимаюсь настройкой БД, оптимизацией структуры, производительностью и немного играю в DBA по выходным.


За последнее время я привёл в порядок несколько баз данных в наших микросервисах и написал java-библиотеку pg-index-health, которая облегчает эту работу, экономит моё время и помогает избежать некоторых типовых ошибок, допускаемых разработчиками. Именно об этой библиотеке сегодня и пойдёт речь.



Disclaimer


Основная версия PostgreSQL, с которой я работаю, это 10-ка. Все используемые мною SQL-запросы также проверены на 11-й версии. Минимальная поддерживаемая версия — это 9.6.


Предыстория


Началось всё почти год назад со странной для меня ситуации: конкурентное создание индекса на ровном месте завершилось с ошибкой. Сам индекс, как водится, в невалидном состоянии остался в базе. Анализ логов показал нехватку temp_file_limit. И понеслось… Копнув поглубже, я обнаружил целый ворох проблем в конфигурации БД и, засучив рукава, с блеском в глазах принялся их чинить.

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

Шесть советов об использовании PostgreSQL в функциональных тестах

Reading time5 min
Views19K

В 2018-м году, работая в Akvelon Inc., я собеседовал одного человека. Перед интервью мне дали на проверку его тестовое задание: небольшое web-приложение по типу записной книжки или todo-списка – React\TypeScript, C# на бэке и MS SQL Server в качестве персистентного хранилища. Приложение было модное: с обилием unit-тестов на mock’ах, упакованное в docker-образ – видно, что человек старался. И у этого решения был всего один недостаток – оно не работало. Совсем. Падало при попытке сохранить новую строку в базу данных.



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


Первая из них – ложная уверенность от модульных тестов. Даже 100% покрытие кода тестами не гарантирует, что в нём нет ошибок.


И вторая – отсутствие функциональных тестов. Если ваше приложение работает с СУБД, то вы обязательно должны покрыть эту часть кода реальными тестами с реальной базой данных. И здесь есть очень важное условие: проверять нужно именно на той версии СУБД, которая работает у вас в production’е. Думаю, очень многие разработчики под Oracle, прогоняющие свои тесты на H2\HSQLDB, сталкивались с ситуацией, когда тесты проходят, а production не работает (boolean, group by и другие чудеса).


Сейчас я работаю в основном с PostgreSQL и мигрирую наши микросервисы с 10-й версии на 11-ую. В процессе миграции (и разработки вообще) я столкнулся с несколькими нюансами, о которых хотелось бы рассказать.

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

Information

Rating
2,760-th
Location
Ижевск, Удмуртия, Россия
Works in
Date of birth
Registered
Activity