• Что думаете о Яндекс.Практикум?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Нет, как и любые другие.
    Ответ написан
    8 комментариев
  • Как реализуются интерфеинтерфесы в Java?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Видимо не достаточно понимаете =)
    Когда вы имплементируете интерфейс, к примеру Runnable, то вы реализуете метод run(). Вы его не переопределяете а реализуете, это не одно и тоже с переопределением. В JAVA есть класс Thread в котором объявлено что он знает интерфейс Runnable(вполне конкретный) и что в нем совершенно точно есть реализация метода run(), других методов которые не объявлены в интерфейсе не знает.
    Например если вы создатите свой интерфейс:
    interface MyRunnable{
          void run(); 
    }

    То класс Thread никак не будет знать что это и что с ним делать и пошлет вас в веселую пешую прогулку.
    Даже если вы создатите "однофамильца":
    interface Runnable{
          void run(); 
    }

    То класс Thread никак не будет знать что это и что с ним делать и пошлет вас в веселую пешую прогулку. Потому что это не реализация java.lang.runnable.
    Зато такой момент сработает:
    interface MyRunnable extends Runnable{
          void some(); //Обратите внимание что тут уже run нельзя объявить т.к. он объявлен в  Runnable
    }

    и при реализации этого интерфейса вас заставят реализовывать уже 2 метода
    class CoolRunnable implements MyRunnable{
          void some(){System.out.print("some from MyRunnable")} 
          void run(){System.out.print("run from Runnable")} 
    }

    И в этом случае класс Thread увидит что класс CoolRunnable реализует интерфейс Runnable в котором есть метод run() о котором он знает и который ему нужен. Метод some() он не увидит. При запуске соответственно он выведет только "run from Runnable".

    Если попробовать на пальцах объяснить так сказать по аналогии с чемто. Скажем вы класс который может нажимать на левую кнопку мыши. Ничего другого вам не объясняли. Т.е. вам дали описание что это называется мышь и на котором есть кнопка слева и которую нужно нажать. Теперь любой производитель берет это описание и реализует мышь с левой кнопкой. Каждый свою, из разного материала, с разными механизмами кнопки и принципами работы, разной формы, и даже с кучей других кнопок. Все они попадают к вам, вы смотрите что конкретный экземпляр мыши реализован по описание которое вы знаете, кроме того это именно то описание что у вас а не одноименное. На основе этого вы признаете что эта вещь вам подходит и начинаете нажимать левую кнопку мыши на любой такой мышке которую вам дадут. Если же приходит другой предмет то вы ломаете палец, потом руку и умираете от потери крови с криками что это не по описанию что у вас есть.
    Ответ написан
    Комментировать
  • Какую книгу по алгоритмам посоветуете?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Очень рекомендую эту книгу.
    Большая, толстая. очень наглядные структуры с алгоритмами и разборами. На Java. Куча заданий
    5ed4d44738e32888903594.jpeg

    И вот эту серию. Простая и легкая, но хорошая:
    5ed4d4c55de8b750006156.png
    Ответ написан
    7 комментариев
  • Какой стек выбрать для начала карьеры?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Выбирайте то, что нравится. Если всё равно, выбирайте то, на что спрос выше на локальном ранке труда.
    Ответ написан
    Комментировать
  • Java - Полное руководство, Герберт Шилд 10 издание, годится для новичков в программировании?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Зависит от того, на сколько вы новичок, и ваших личных особенностей восприятия. Конкретно я всегда считал, что Шилдт хоть и хорошо пишет, но очень сухо. Возьмите лучше "Изучаем Java" Сьерры и Бэйтса, она простая, доходчивая и ориентирована на полностью нулёвого читателя. А потом углубьте с помощью "Философия Java" Эккеля.
    Ответ написан
    2 комментария
  • Что учить программисту, идущему в вуз?

    IonDen
    @IonDen Куратор тега IT-образование
    JavaScript developer. IonDen.com
    Не нужно учить другие языки для количества. В общем итоге суть одна.
    Главное научиться ими пользоваться, понять основы программирования, computer science.
    Изучайте современные паттерны проектирования, system design.
    Смотрите современные тренды, вроде ML, думайте как применить знания языков там.
    Ответ написан
    Комментировать
  • Когда применяем паттерн Стратегия, а когда Декоратор?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Стратегия = полиморфизм, то есть мы завязаны на некий интерфейс, а какая реализация — нам не важно. Это история про зависимости. Ну например почтальон отдает пенсию бабушкам (любым, какой бабушке именно — зависит от стратегии, КОТОРАЯ НЕ СВЯЗАНА с модификацией конкретной бабушки:)

    Декоратор, это про добавить функционал в рамках одного интерфейса, тут вообще не рассматривается вопрос каких-либо отношений (к примеру бабушки и почтальона), тут рассматривается — бабушка в шубе или бабушка с загаром или бабушка на коляске, все та же бабушка, но "обернутая" неким поведением :) Главное что бабушка всегда остается быть той самой для всех бабушкой. То есть это не противопоставление — ни в начале ни в середине мы не завязываемся на дополнительное поведение бабушки у почтальона. Бабушка и все, а какая именно — зависит от стратегии разноса (например по названию улицы). Если выйдет к нему "декорированная" бабушка-качок — пенсию он даст ей также, как и не качку, тк она для него всего лишь некий субъект/абстракция, главное чтобы возраст и ФИО сошлись.

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

    Кое-где не корректные аналогии, и в аналогии стратегия есть бабушка, но в целом для понимания норм и не критично :)
    Ответ написан
    Комментировать
  • Ускорят ли курсы мое обучение?

    Zoominger
    @Zoominger Куратор тега IT-образование
    System Integrator
    Единственная польза, которую приносят курсы - это доход их создателям. Никаких толковых знаний, никакой хорошей базы они не дают.
    Ответ написан
    5 комментариев
  • Как правильно добавить слушателя в андроид на котлин?

    TranE91
    @TranE91
    Senior Android Engineer
    У Вас не объявлен анонимный класс.
    val itemClickListener: AdapterView.OnItemClickListener = object : AdapterView.OnItemClickListener {
        override fun onItemClick(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
            TODO("not implemented") 
        }       
    }


    либо через лямбду

    val itemClickListener: AdapterView.OnItemClickListener = AdapterView.OnItemClickListener { p0, p1, p2, p3 ->
        TODO("not implemented") 
    }


    https://kotlinlang.ru/docs/reference/nested-classe...
    Ответ написан
    2 комментария
  • Как передать this в handler.postDelayed kotlin?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    ошибка у тебя в определении Runnable
    Runnable {
                    @Override
                    fun run() {

    В котлине так не пишут. Здесь ты объявил лямбду, а внутри неё - функцию run. Override просто игнорируется. this будет объемлющим классом.
    Правильно будет так
    object: Runnable {
        override fun run() {
            handler.postDelayed(this)
        }
    }


    То, что ты хотел сделать, это лямбда, реализующая джавовый SAM-интерфейс. Так делать можно, если тебе внутри не нужен this. Выглядеть будет так:
    Runnable {
       //тут код, который должен быть в run()
    }
    Ответ написан
    1 комментарий
  • Ребят выбираю курс java, где лучше?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Нигде. Курсы - это налог на тупость.
    Ответ написан
    3 комментария
  • Как стать разработчиком приложений Android язык Kotlin?

    profesor08
    @profesor08
    Для быстрого старта, вот все что тебе нужно - https://play.kotlinlang.org/byExample/overview
    Ответ написан
    Комментировать
  • В чем написать программу?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    "Человеку который не шарит ничего в написании какого то ни было софта" ни в чём. Надо нанять человека, который шарит, он сможет в чём угодно.
    Ответ написан
    7 комментариев
  • Как регуляркой найти первую точку в строке?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Зачем нагружать CPU компиляцией и обработкой регулярок, когда все прекрасно работает без них?
    function insertAfter(source, search, insert) {
      const p = source.indexOf(search);
      return (p === -1
        ? source.slice()
        : source.slice(0, p + 1).concat(insert, source.slice(p + 1))
      );
    }
    console.log(insertAfter('Ivanov I.Petrov P. Sidorov S.', '.', '<br>'));
    // а еще кроме строк можно и массивы той же функцией обрабатывать
    console.log(insertAfter(['Ivanov I', '.', 'Petrov P.', ' Sidorov S.'], '.', '<br>'));
    Ответ написан
    2 комментария
  • Где бесплатно захостить Python Telegram бота?

    @addison-cochran
    Если на webhook-ах, то PythonAnywhere, Heroku
    Если long polling - Heroku. Но я бы все равно использовал webhook (перейти не так сложно)
    Ответ написан
    3 комментария
  • Почему функция не возвращает булевую переменную?

    npanuhin
    @npanuhin
    Ошибка "variable result might not have been initialized" означает, что при возвращении переменной из функции, она может быть ещё не определена. То есть если не случится result = true, то переменная не будет иметь значения (потому что в начале вы её просто создали - boolean result, но не присвоили никакого значения), на это компилятор и ругается. В вашем случае нужно просто сделать:
    boolean result = false;
    Тогда переменная точно будет иметь какое-либо значение в момент возвращения.
    Ответ написан
    1 комментарий
  • Стоит ли писать собственное IDE на Python?

    @towin
    Если программированием занимаетесь только месяц, то нужно писать свою операционную систему.
    Своя IDE - это для тех, кто уже 2 месяца программирует.
    Ответ написан
    Комментировать
  • Это нормально, если примеры тем выпускных работ вызывают у меня непонимание и ужас?

    @mt_max
    Название темы придумывают совместно с преподавателем и специально добавляют в нее сложные термины и страшные слова. Этот как красивая упаковка. Сами работы в основном низкого качества, и довольно примитивны. У нас например в универе по специальности "информационная безопасность", большая часть дипломов начинается со слов "Разработка защищенного программного обеспечения для...", а по факту из защиты там хеширование пароля в базе и настройка https.
    Ответ написан
    Комментировать
  • Это нормально, если примеры тем выпускных работ вызывают у меня непонимание и ужас?

    AngryYumy
    @AngryYumy
    Заплати фрилансеру чеканой монетой
    Это просто значит, что вы не понимаете значение данных слов/предложений. И не более лол.
    В шарагу и идут, чтобы все это понимать и знать.
    Ответ написан
    Комментировать
  • Какой из двух языков лучше выбрать для приложения типа помощник: Python или C++?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Для разработки под Андроид: Java, Kotlin, Dart (Flutter), в тренде сейчас Kotlin
    Можно часть логики вынести в NDK (C++) но без Java или Kotlin всё равно не обойдется. И для этой задачи оно явно не нужно.
    Для слежения за временем и озвучки, нужно знать соответствующее Android API (пара тройка часов изучения документации).
    Ответ написан
    1 комментарий