Pull to refresh
31
Karma
79.3
Rating
Сергей Цыпанов @tsypanov

Разработчик

Про оптимизацию кода

Lumber room
Кодер Один мой знакомый получил работу в очень престижной конторе по разработке устройств связи уоки-токи, мобильные и так далее. Контора надо сказать очень большая и входит в ТОП-50 по этой сфере индустрии.

И из-за такого размера в конторе было очень много бюрократических моментов — согласований, совещаний и уходило на общение очень много времени. Программисты там были в большей части индусы и делали они свою работу очень неторопливо, медитируя так сказать в рабочее время.
Что было дальше
Total votes 86: ↑49 and ↓37 +12
Views 463
Comments 18

Достаточно ли вы умны для того, чтобы работать на Илона Маска?

Entertaining tasks
Translation
image

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

Вы стоите на поверхности Земли. Затем вы начинаете идти: проходите один километр на юг, один на запад и один на север. В итоге вы оказываетесь в начальной точке. Где вы стоите?

Чаще всего кандидаты отвечают «на Северном полюсе», и это правильный ответ. Эта задачка очень старая – самое раннее её упоминание датируется аж 1821 годом. Однако, как утверждает Эшли Вэнс, биограф Маска, тот, получив такой ответ, задавал следующий вопрос: «Хорошо, а есть ли ещё такие точки?»
Читать дальше →
Total votes 60: ↑46 and ↓14 +32
Views 47K
Comments 173

Правила шахмат. Что в них не так?

Game development *Game design *Games promotion *Popular science Logic games
Sandbox

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

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

Читать далее
Total votes 122: ↑73 and ↓49 +24
Views 30K
Comments 318

Есть ли в вашей IT команде саботажник?

Community management *Product Management *Personnel Management *
Sandbox

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

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

Читать далее
Total votes 94: ↑80 and ↓14 +66
Views 61K
Comments 90

«Спроси почему, %&@$#?», или как саботажники захватывают власть в коллективе

Community management *Personnel Management *

Предыдущая статья про саботажников набрала более 55 тысяч читателей, став одной из самых читаемых на «Хабре». И понятно, почему. Саботажники есть везде – как дырки в сыре, они пронизывают практически любой профессиональный коллектив. Сегодня мы разберём, как саботажники захватывают власть.

Читать далее
Total votes 118: ↑102 and ↓16 +86
Views 28K
Comments 210

Сюрпризы конкатенации

Java *
✏️ Technotext 2021

Вопрос в стиле головоломок с offline-конференций: Что выведет этот код при запуске?


import java.util.concurrent.atomic.AtomicInteger;

public class Disturbed {

    public static void main(String... args) {
        AtomicInteger counter = new AtomicInteger(1);
        System.out.println(
            "First two positive numbers: " +
            counter + 
            ", " +
            counter.incrementAndGet()
        );
    }

}

Помедитируйте немного над кодом и приходите за ответом под кат.

Читать дальше →
Total votes 26: ↑26 and ↓0 +26
Views 5K
Comments 6

Процессор Эльбрус — почему статья о тупике несостоятельна

CPU
Sandbox

На протяжении почти двух десятилетий рунет пестрит различными негативными статьями об Эльбрусах. В течении последних десяти лет я наблюдал развитие риторики с «существует только в виде .jpeg» до «дорогой и медленный». В основном вся эта риторика исходит от людей, которые машину в глаза не видели, и тратить время на ответы таким людям смысла не имеет. Но недавно на хабре вышла довольно резонансная статья про тупиковость развития Эльбруса. В целом она не отличается от общей массы таких статей (состоит из манипуляций и ошибок), но кое-что в ней заставило меня написать ответ.

Читать далее
Total votes 282: ↑206 and ↓76 +130
Views 64K
Comments 455

Пишем тысячи лог файлов одновременно

Abnormal programming *Java *Groovy & Grails *
Tutorial

Привет, Товарищи!


Что будет, если в приложении Spring Boot выставить logging.level.root=TRACE?


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

Total votes 14: ↑11 and ↓3 +8
Views 5.4K
Comments 8

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

Open source *PostgreSQL *Java *Database Administration *

Привет.


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


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



Disclaimer


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


Предыстория


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

Читать дальше →
Total votes 25: ↑25 and ↓0 +25
Views 14K
Comments 21

Как восстановить светодиодную лампу за 2 минуты при минимальных навыках работы с паяльником и знаниях об электронике

DIY

image


Исторически так сложилось, что в моем загородном доме все освещение сделано с помощью светодиодных ламп мощностью 10-11, а в последнее время и 12-13 вт с цоколем Е27. Лампы накаливания на площадь 200 м2 тратили бы слишком много электроэнергии, что не вписывалось бы в концепцию моего энергоэффективного дома с приличным утеплением, твердотопливным дровяным котлом, бесперебойником на автомобильных аккумуляторах и рекуператором. Люминесцентные "энергосберегайки" я невзлюбил с первого взгляда — они часто перегорают, не имеют той энергоэффективности что светодиодные, хрупкие, токсичные при случайном разбивании, мерцают и имеют неприятный спектр.

Читать дальше →
Total votes 63: ↑46 and ↓17 +29
Views 299K
Comments 312

Ускоренная разработка с помощью Spring Boot DevTools

Java *
Translation
Как ускорить разработку на Spring Boot с DevTools и сделать этот процесс более приятным и продуктивным?

Настройка


Как обычно при разработке на Spring Boot, настройка достаточно проста. Все, что вам нужно сделать, это добавить правильную зависимость, и готово. Spring Boot находит ее и автоматически настраивает DevTools соответственно.
Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Views 22K
Comments 1

Сергей Зонов: «Первый „Спектрум“ я сделал потому, что мне было интересно»

DataArt corporate blog Manufacture and development of electronics *History of IT Old hardware Interview


Музей DataArt существует 10 лет, некоторые экспонаты мы уже представляли в виде постеров. Коллекция продолжает расширяться, но теперь мы решили дополнить ее интервью с людьми, повлиявшими на историю ИТ. Это первый из серии исторических материалов, которые будут выходить в нашем блоге регулярно.

В первой половине 1980-х популярным компьютером в Европе был ZX Spectrum. Когда он пришел в СССР, местные умельцы начали его копировать, перерабатывать и улучшать. Одним из тех, кто сделал свой вариант «Спектрума», был Сергей Зонов. По его схемам собраны десятки тысяч компьютеров.
Читать дальше →
Total votes 121: ↑121 and ↓0 +121
Views 45K
Comments 239

Интервью с Владимиром Лихачевым, отцом Николая Лихачева, более известного как Крис Касперски

Interview
Sandbox
Привет, Хабравчане!

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

Отец Николая Лихачева, более известного как Крис Касперски, рассказывает о том, каким был его неординарный и знаменитый сын

– Планируете ли вы написать книгу о сыне? Если да, то о чем она будет и какие годы жизни сына вы бы хотели описать?

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

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

– Правда. Отношение в школе к Николаю было неоднозначное: кто-то относился к нему ревниво, с завистью. Одноклассники его часто не понимали, старшеклассники стеснялись признавать, что он в чем-то умнее их. Будучи девятиклассником, сын объяснял некоторым десятиклассникам сложные вопросы по химии, причем проще и понятнее, чем написано в учебнике и чем объясняли учителя.

Со многими учителями у него также были непростые отношения. С большим уважением сын относился к учителю физики, который вел еще и программирование, к учителю труда и к физруку. Однако из-за конфликта с некоторыми учителями в аттестате Николая появилось два прочерка – по физкультуре и ОБЖ. Поэтому он не пошел на выпускной вечер, объяснив так матери свой отказ: «Мама, я школу ненавижу».
Читать дальше →
Total votes 118: ↑107 and ↓11 +96
Views 35K
Comments 169

Spring AOP. Маленький вопросик с собеседования

Programming *Java *
Sandbox
Довелось мне тут на днях побывать на очередном собеседовании. И задали мне там вот такой вот вопрос. Что на самом деле выполнится (с точки зрения транзакций), если вызвать method1()?

public class MyServiceImpl {
  
  @Transactional
  public void method1() {
    //do something
    method2();
  }

  @Transactional (propagation=Propagation.REQUIRES_NEW)
  public void method2() {
    //do something
  }
}

Ну, мы же все умные, документацию читаем или, по крайней мере, видео выступлений Евгения Борисова смотрим. Соответственно и правильный* ответ знаем (правильный* — это такой, который от нас ожидает услышать тот, кто спрашивает). И звучать он должен примерно так.

«В связи с тем, что для поддержки транзакций через аннотации используется Spring AOP, в момент вызова method1() на самом деле вызывается метод прокси объекта. Создается новая транзакция и далее происходит вызов method1() класса MyServiceImpl. А когда из method1() вызовем method2(), обращения к прокси нет, вызывается уже сразу метод нашего класса и, соответственно, никаких новых транзакций создаваться не будет».

Но знаете, как это бывает, вроде и ответ правильный уже давно знаешь. И применяешь это знание регулярно. А вдруг раз… и неожиданно задумаешься: «Подождите-ка, ведь если мы используем Spring AOP, то там могут создаваться прокси и через JDK, а могут и с CGLIB; а еще возможно, что CTW или LTW подключили. И что такой ответ всегда будет верен?».

Ну что ж: интересно? Надо проверить.
Читать дальше →
Total votes 24: ↑23 and ↓1 +22
Views 86K
Comments 14

Как мы в IntelliJ IDEA ищем лямбда-выражения

JetBrains corporate blog Programming *Java *

Type Hierarchy в IntelliJ IDEAВажной возможностью любой IDE является поиск и навигация по коду. Один из часто используемых вариантов поиска на языке Java — поиск всех реализаций данного интерфейса. Часто такая функция называется иерархией типов (Type Hierarchy) и выглядит как на картинке справа.


Перебирать все классы проекта при вызове этой функции — неэффективно. Можно сохранить в индекс полную иерархию классов во время компиляции, так как компилятор все равно ее строит. Мы это делаем, если компиляция запускается самой IDE, а не делегируется, например, в Gradle. Но это работает, только если после компиляции в модуле ничего не менялось. А в общем случае исходники — самый актуальный источник информации, и индексы строятся по исходникам.


Поиск непосредственных наследников — несложная задача, если мы не имеем дело с функциональным интерфейсом. При поиске реализаций интерфейса Foo надо найти все классы, где есть implements Foo, и интерфейсы, где есть extends Foo, а также анонимные классы вида new Foo(...) {...}. Для этого достаточно заранее построить синтаксическое дерево каждого файла проекта, найти соответствующие конструкции и добавить их в индекс.

Читать дальше →
Total votes 62: ↑59 and ↓3 +56
Views 12K
Comments 9

Information

Rating
47-th
Registered
Activity