• Как Jit Компиляторы обнаружат недостижимой код и лишние проверки?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Если я правильно понял вопрос, то наличие JIT-компилятора не отменяет обычный. Т.е. код сначала "предкомпилируется" к некий кроссплатформенный код, который уже потом исполняется на виртуальной машине (JVM).
    Вот на этапе предварительной компиляции и происходит проверка "статики": скобку не поставил, задал индекс явно не в границах массива, оставил какой-то код после return, забыл вернуть значение из метода, напутал с типами и т.п.
    Но это не спасает от ошибок в рантайме: если индекс для массива вычисляется, а потом ты пытаешься достать элемент по этому индексу, то проверка на границы - на твоей совести, а железка, если что, просто упадёт с исключением :)
    Ответ написан
    Комментировать
  • С чего начать учить Kotlin?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Я встречал много учебных материалов по Котлин где говорилось: "В Java это сделано так, а мы реализовали вот так". Т.е. часто идёт сравнение/противопоставление с Java.
    Зная Java, Kotlin учить будет проще. Но сказать чтобы обязательно - нет. Есть много материалов где Котлин разбирают с нуля и для новичков.
    Ответ написан
    Комментировать
  • Почему некоторые провода стоят под миллионы?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Почему некоторые провода стоят под миллионы?

    Вероятно потому что их покупают :) Есть спрос (искусственно созданный, но это неважно) - есть и предложение.
    Ответ написан
    Комментировать
  • Светодиод 3вольта, питание 10 вольт, сумеет ли ограничитель тока не спалить светодиод?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Этот драйвер выдерживает напряжение до 60В, поэтому ничего не сгорит. А как будет светить диод при 100 мА должно быть указано в доке на диод.
    Ответ написан
    4 комментария
  • В каком репозиторией должна быть логика?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Между слоями Repository и Controller у тебя д.б. слой Service.
    Repository абстрагирует базу данных, т.е. занимается преобразованием объект_языка  <--> запись_БД. Благодаря этому, все остальные классы оперируют привычными им объектами, не заботясь об из происхождении: база данных, очередь, аппарат Луна-25 :)
    Controller обслуживает HTTP-точки - принимает запросы и выдаёт готовые ответы.
    А Service как раз занимается "бизнес-логикой", получая запросы от контроллера, запрашивая данные у репозитория, преобразуя их в готовый ответ и отправляя его обратно контроллеру. Сервис может подключить себе несколько репозиториев если ему требуются данные из нескольких источников, таблиц и пр.
    Ответ написан
    2 комментария
  • Как посчитать потребление argb подсветки?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Обычно подобные светодиоды потребляют не более 60 мА каждый, по 20 мА на канал (R, G, B). Т.е. если подсветка светит белым на максимальной яркости, она потребляет 60 мА * кол-во_диодов.
    Ответ написан
    Комментировать
  • Как постичь искусство программирования?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Если ты работаешь в поддержке значит всё у тебя нормально с абстрактным мышлением. Тебе прилетает кое-как сформулированная проблема, ты её декомпозируешь до стандартных абстракций и решаешь. Абстрактное мышление это умение размышлять о предмете, не видя его и не держа в руках. У всех современных людей оно плюс-минус развито. Есть люди, которые говорят что механика это просто, а электрика - сложно потому что "электричества не видно". Типа, движок Лады перебрать легко, а проводку в квартире - сложно. Но вот для меня движок это пипец как сложно: что там за что цепляется, да всё в динамике, да впрыск, да зажигание... да ну нафиг :)
    Что касается "логического мышления", то у меня с ним тоже крайне плохо. Те задачи, которые дети 5-10 лет щёлкают как орешки, я не могу решить - я просто не понимаю сути задачи. Или что-то там про круглые люки. Я забил, не моё. Просто работаю программистом :)
    Как учиться? Кому как удобно, тот так и учится. У кого память хорошая - тот по книгам. У меня плохая, поэтому я учился на практических задачах. Чуть-чуть теории и задачи, много-много задач с автоматической проверкой. Так организм "пропитывается" проблематикой и какие-то вещи, которые по книгам понять не мог, стали некоей "естественной средой", перестали возникать вопросы "почему так" - просто так и всё.
    В ИТ много задач, работы хватит всем. Я, к примеру, никогда не изобрету новый алгоритм или фреймворк - не хватит ни ума, ни знаний, ни способностей эти знания получить. Меня не примут в Яндекс - им нужны алгоритмисты-олимпиадники. Ну Ок, значит я просто буду решать т.н. "бизнес-задачи", т.е. понимать что нужно заказчику, пытаться представить как это должно выглядеть для него, переводить задание в абстакции моего ЯП и решать теми высокоуровневыми инструментами, которые для меня разработали умницы-олимпиадники. Буду ремесленником-халтурщиком, чо :)
    Ответ написан
    6 комментариев
  • Где лучше учиться на программиста, если тебе за 35?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Где и как лучше - это вопрос личных предпочтений.Кому как лучше инфа залетает - тот так и учится. Книги, видео, курсы, менторы. Если колледж действительно такой модный и прогрессивный - можно и туда.
    НО! По моему глубокому убеждению (и опыту), не получится совмещать учёбу с работой. Разве что ты мега-мозг с зашкалом по работоспособности. Ну или работа такая, на которой можно не работать, а учиться :)
    Ответ написан
    Комментировать
  • Как в пустые ячейки добавить последнее существующее значение?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Ввести дополнительную колонку с формулой и по ней делать аналитику
    64d87b1f67125820653885.png
    Ответ написан
    1 комментарий
  • Как лучше организовать очередь сообщений для их разбора по графику?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Вроде как, такое кол-во запросов вполне по силам современным реактивным серверам. Для тех кто знает Java, пара полезных лекций по реактивщине: раз, два. К сожалению, не нашёл видео с замерами производительности.
    Вопрос можно ли обрабатывать запросы по мере их поступления это не вопрос производительности web-сервера, это вопрос как долго ты будет готовить данные для ответа. Если там нет долгих вычислений или запросов к другим сервисам - обрабатывай в реальном времени.
    Если есть - используй очередь. Какую именно - вопрос о количестве данных. Если одновременно обрабатываемые данные не помещаются в память - используй Kafka, Rabbit и т.п. Если помещаются - организуй FIFO буфер в памяти, коллекция Queue есть во всех нормальных языках (ну, или её можно сделать на основе связного списка).
    Присоединюсь к предыдущим ораторам: надо разбираться с дублями. Ты говоришь что для снижения нагрузки можно отвечать не на все запросы, а только на последний в серии. А как определить что только что прилетевший запрос - последний?
    На чём писать - на том что знаешь. А если не получится - искать программиста на Java :)
    Ответ написан
    Комментировать
  • Куда припаяться на плате с LED с контроллером, что бы работала функция диммера для другой LED?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    На микросхеме затёрт номинал, поэтому определить какой ток она может выдать невозможно. Скорее всего, на твоей ленте светодиодов больше чем на "кругляше", а значит потребляет она больше. Значит, чтобы не спалить контроллер, надо буферизировать его выходы, например, мощными транзисторами. Тебе надо поставить три повторителя на каналы R, G, B.
    Как подключать мощную нагрузку можно почитать здесь.
    Ответ написан
    Комментировать
  • Как в Reactor запускать параллельные запросы?

    @Wan-Derer Автор вопроса
    Зобанели на Хабре, волки́ ;((
    Нашёл аналогичный вопрос :)

    Кому интересно, решение:

    public class Test {
    
      static Mono<String> getFromHttp() {
        return Mono.just("from HTTP").delayElement(Duration.ofSeconds(2));
      }
    
      static Mono<String> getFromDb() {
        return Mono.just("from DB").delayElement(Duration.ofSeconds(1));
      }
    
      public static void main(String[] args) {
    
        String fromHttp = "---";
        String fromDb = "===";
    
        long start = System.currentTimeMillis();
    
        Mono<String> httpReq = getFromHttp();
        Mono<String> dbReq = getFromDb();
    
        Tuple2<String, String> values = Mono.zip(httpReq, dbReq).block();
        fromHttp = values.getT1();
        fromDb = values.getT2();
    
        System.out.println(System.currentTimeMillis() - start);
        System.out.println(fromHttp);
        System.out.println(fromDb);
      }
      
    }
    Ответ написан
    Комментировать
  • Какое место БД в Чистой Архитектуре?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    На второй схеме в БД хранятся записи, которые напрямую соотносятся с сущностями предметной области: пользователи, товары и пр. Эти сущности ты описываешь классами, а при создании объектов (экземпляров классов) ты наполняешь их конкретными данными из БД через интерфейс доступа (репозиторий).
    Когда программа запрашивает объект, репозиторий:
    - берёт класс (описание будущего объекта);
    - берёт из БД строку с данными;
    - сопоставляет имена полей класса с именами полей таблицы БД (мапит БД на класс);
    - создаёт экземпляр класса;
    - заполняет его поля данными из строки;
    - выдаёт готовый объект запрашивающему методу.
    Таким образом, классы + БД + репозиторий образуют модель (или домен) - это то что находится в центре первой схемы. Они представляют собой единое целое. Вся остальная программа не знает откуда взят объект - он просто получен через предоставленный интерфейс.
    А та БД, которая показана на периферии - это внешние данные, которые не являются частью твоей модели и которые ты запрашиваешь для отработки своих сервисов. Например, цена твоего товара - это его свойство и ты хранишь её у себя, это часть твоей модели. А когда тебе надо представить цену в другой валюте, тебе нужен курс для пересчёта, который не является частью твоей модели и который ты получаешь от внешнего сервиса. Во внешнем сервисе он хранится в БД (поэтому на схеме показана БД), а получаешь ты его через предоставленный тебе интерфейс: REST API, RPC, SOAP, нарочным на конях и т.п.
    Ответ написан
    Комментировать
  • Как запрограммировать датчик?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Начать можно отсюда.
    Ответ написан
    2 комментария
  • Квадраты в мониторе порта?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Возможно, дело в softwareserial, м.б. у него не всё хорошо с таймингами. Кстати, его скорость тоже лучше задать явно.
    М.б. плохой контакт с SIM, может сам SIM глючит (они очень капризные по отношению к питанию, например). Может это какие-то остатки в буфере (его стоит очищать перед приёмом сообщения).
    Попробуй вместо startsWith() использовать indexOf(), тогда мусор в начале сообщения не будет влиять.
    Ответ написан
  • Компактная электронная схема для питания светодиодов от батарейки с регулировкой яркости и длительности?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Самым компактным по схемотехнике будет решение на микроконтроллере:
    - МК (например AtTiny, 6- или 8-ногая);
    - светодиод;
    - резистор;
    - выключатель;
    - (кнопка для смены режимов, можно совместить в выключателем);
    - батарейка.

    Плюсы:
    - самая простая схема;
    - возможна реализация самых разных режимов/эффектов (плавное переливание и пр.);
    - если надо сделать цветную подсветку, достаточно заменить СД на RGB и добавить ещё два резистора;

    Минусы:
    - требуется написание программы для МК;
    - требуется программатор для загрузки программы в МК.

    По питанию: не знаю сколько такая система проживёт от "таблетки", но самого маленького литиевого "пальчика" ей хватит надолго.
    Ответ написан
  • Почему НЕ vim? Vim для серьезной разработки?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Ты неправильные вопросы задаёшь. Если ты только начал изучать программирование и тебе "безумно нравится" редактор - то продолжай изучать и пользоваться редактором. В программировании есть много вещей, которые придётся изучать и инструмент среди них не самый важный.
    Со временем ты попробуешь IDE, и не одну и примешь решение что использовать в работе. А навык работы с VIM не пропадёт... или пропадёт что будет означать что он оказался невостребованным.
    Ответ написан
    Комментировать
  • Можно ли джуну тратить рабочее время на обучение?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Это не только можно, но и нужно. В том смысле что у тебя просто нет другой возможности работать (не то чтобы расти). Если у вас в лавке нет внутренних курсов - значит ты должен расти самостоятельно. Я слышал такую оценку что джун поначалу должен тратить половину времени на (само)обучение, считаю её даже заниженной. Так что твои 2 часа в день или целый день в неделю - это мало, надо больше. Другое дело что это должно быть согласовано с твоим руководителем, возможно, даже с ним надо составить некий план, включающий те вещи, которые лавке нужны в первую очередь. Ну и вопросов надо побольше задавать - чтобы меньше тыкаться вслепую.

    Несколько дней назад ..... ещё не до конца разобрался

    Да ты просто реактивный джун! Несколько дней и уже делаешь таски :) У меня до "первого прода" прошло больше года, правда по пути случилась пара проектов, на которые ушло по несколько месяцев и которые в итоге "положили в стол" - надобность временно отпала. Но у меня не было "очень простых задач", мне как-то сразу стали наваливать не по-деццки :)
    Ответ написан
    Комментировать
  • Возможно ли получить белый IP бесплатно?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Совсем бесплатно нет, но можно взять самый дешёвый VPS и пробросить на нём запросы на домашнюю машину.
    Ответ написан
    Комментировать
  • Что посоветуете изучать дальше?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Зависит от того в какой области ты планируешь практиковаться. Если "под винду", то да Win API. Если бизнес-задачи, то скорее всего это будет Web, а значит C# (или Java, или Python) + Web-фреймворки. Если наука, анализ данных, то Python + соответствующие фреймворки.
    И обязательно SQL - он нужен везде и всегда.
    Ответ написан
    4 комментария