Задать вопрос
  • Чем чревато использование модификатора public?

    php666
    @php666
    PHP-макака
    чем же всё-таки на реальном примере чревато использование public
    Ну смотри.
    Представь себе, что ты - объект, а все твои свойства (сердце, печень, желудок) - публичные. Я могу к тебе подойти, тыкнуть пальцем в сердце и ты помрешь. Так же и в объектах - те свойства, которые ответственны за работоспособность объекта класса, которые не должны быть доступны извне, делают private/protected.

    Как в закрытое свойств (желудок) поместить еду? Сделаем публичный метод ЕСТЬ(), который поместит туда еду. На вход подаем пищу.
    Зачем нужен метод, если, теоретически, желудок можно было бы сделать public и класть в него пищу напрямую, с помощью лопаты? Очевидно, метод ЕСТЬ() имеет кое-какую проверку входящих данных. Например, если ты засунешь себе в рот тухлятину, то эта "еда" просто не пойдет дальше - сработает рвотный рефлекс.
    Такая же аналогия с программированием - хорошая практика - делать т.н. сеттеры/геттеры методы, которые принимают и возвращают свойства объектов. На эти методы можно повесть некую логику. Например, при установки свойства проверять его корректность, а при возвращении - отдавать в определенном формате.

    Когда нужны public-свойства? В очень редких случаях, например когда объект выполняет роль некого хранилища, например это \stdClass -объект верхнего уровня PHP. Но в реальной разработке это очень редкие явления.
    Все классы должны иметь закрытые свойства, а для манипуляции с ними - геттеры/сеттеры. Это хорошая практика.

    Ну и пример банальный:

    // класс для работы с mysql
    class Database
    {
        /**
         * Ресурс соединения с mysql 
         * @var mysqli
         */
        public $connection;
    
        public function __construct()
        {
            $this->connection = mysqli_connect(/**/);
        }
    }
    
    $db = new Database();
    
    // какой-то петя в коде написал случайно:
    $db->connection = 123; // все сломалось
    Ответ написан
    1 комментарий
  • Как теория графов применяется в программировании?

    @unabl4
    ruby on rails web dev
    Ну, например, чтобы правильно ответить на собеседовании. :)
    Многие компании спрашивают это хотя бы на каком-то базовом уровне.
    Вообще, иногда спрашивают классические задачки из Computer Science.
    Ну или чтобы успешно выступать на олимпиадах - там это сплошь и рядом.

    Пример, который был бы наиболее близок к большенству разработчиков, с чем они сталкиваются каждый день - сборщик зависимостей (package manager, bundler или как угодно называйте) перед компиляцией/запуском.
    Идёт построение т.н DAG - https://en.wikipedia.org/wiki/Directed_acyclic_graph , чтобы не было петель.
    Ответ написан
    Комментировать
  • Разработчик недисциплинированно трекает время. Что делать?

    php666
    @php666
    PHP-макака
    Упаси бог работать в столь токсичной среде.
    Сидеть и отчитываться за каждую минуту/час.
    Идеальный информационный концлагерь.
    Ответ написан
    7 комментариев
  • Медленно решаю поставленные задачи, как исправить?

    Zoominger
    @Zoominger
    System Integrator
    Было такое. Это "рука не набита", приём не на какую-то технологию, а на сам принцип разбирания ошибок и поиск решения. Придёт с опытом.
    Ответ написан
    Комментировать
  • Что творится на рынке труда сегодня?

    php666
    @php666
    PHP-макака
    Вангую, скоро будет плохо у всех.
    Айтишники не получают деньги из неоткуда.
    Что бы заплатить айтишнику, надо иметь доход.
    Что бы нанять айтишника, надо иметь доход.

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

    Кстати, вот тут и потерпят неудачу в первую очередь те ораторы, которые всем советовали не идти работать в банки, госструктуры и прочие "бюрократические" компании, выбирая работу по принципу "офис как в гугле" с печенками и настольным теннисом.
    Ответ написан
    7 комментариев
  • Как бывшему C++ разработчику сделать портфолио backend разработчика?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Релокация - это конечно круто, но вы должны были понимать риски, особенно учитывая визу, если я правильно понимаю - она учебная. Но думать о резюме как бы раньше надо было.

    Вы сейчас кстати делаете еще одну ошибку: у вас нет времени учить новое. Даунгрейд без страховки - это очень мягко говоря сложно. Веду к тому, что:
    1. Вам придется перекроить мозг, что бы работать бэкендщиком.
    2. Даже если на пыхе напишите несколько сайтиков - первое на что вам следуют надеяться - это fullstack разработка. Угадайте на какой CMS больше всего заказов? Но у вас по прежнему не будет строчки про backend, будет про wp например.
    3. Основной профиль вы начнете забывать, а нового еще не получите.

    ---

    Что это может быть? Блог? Магазин?

    Ответ на этот вопрос вы найдете на фриланс бирже. Если же хотите просто написать псевдо сайтики - нужно будет быть идиотом, что бы вас принять на работу. Это только оттолкнет потенциальных работодателей.

    В начале 2000х можно было сделать форум или гостевуху, а что котируется сейчас?

    Чатики, Социальные медиа, Стриминг, Эл.Магазины, всякие webosckets, мобильные приложения и т.д.

    Что делать с фронтендом?

    Где брать дизайн?

    Покупаем на той же бирже фриланса.

    На какие примеры ориентироваться?

    Это вопрос к заказчику и ТЗ.

    ---

    В общем ситуация у вас конечно полное уг, но я бы на вашем месте делал следующее:
    1. Взял язык с самым низким стартом - да, тот самый богомерзкий php и за счет него фрилансил. Цель - проживание.
    2. Мне тоже нравится Golang, но проекты на нем сейчас в основном внутренние во многих компаниях. Что бы получить работу по удаленке нужен реально крутой опыт, если он есть - круто надо размещать резюме, если нет - оставить эту затею. В крайнем случае, если будет время - делал бы открытые проекты на github для получения опыта и для строчек в резюме.
    3. Активно искал бы работу по основному профилю.

    Этот план не эффективен то точки зрения карьерного роста (он очень медленный), но с точки зрения стабилизации жизнеобеспечения - годится.
    Ответ написан
    4 комментария
  • Какой хостинг брать, для telegram бота?

    Kozack
    @Kozack
    Thinking about a11y
    Я на heroku.com запускал
    Ответ написан
    Комментировать
  • Какой хостинг брать, для telegram бота?

    dmitriy337
    @dmitriy337
    Python Dev from Ukraine
    Самый простой вариант - pythonanyware. Сам активно пользуюсь,если есть вопросы - можешь отписать мне в ТГ,по мелочи помогу
    Ответ написан
    2 комментария
  • Возможна ли прокачка алгоритмов без хорошего знания синтаксиса?

    @dmshar
    Представьте себе вам и вашей команде надо сделать какую-то работу, ну предположим - построить стену. Вы начальник. У вас в голове должен быть алгоритм решения этой задачи - изготовить раствор, заместить раствор, поднести кирпичи, уложить слой раствора, уложить слой кирпичей, если высота стены меньше заданной - повторять описанные выше действия. Разложив задачу на шаги и увязав их воедино вы получили алгоритм решения, который передаете исполнителем для выполнения.
    Аналогично в программировании. Вам ставят задачу, первым делом вы должны ее разбить на некоторые более простые действия и увязать их между собой. Теперь вы можете этот алгоритм описать - на русском языке, на английском, на китайском.... А можете на языке программирования С++ или Java Script. Вот тут алгоритмы сортировки вообще языком танца демонстрируют. Прикольненько так и вполне понятненько :-).
    https://habr.com/ru/post/117200/
    Конечно, когда мы говорим о программирования некие вещи надо знать - что такое память компьютера, как там данные можно сохранить и как их оттуда извлечь, и пр.
    Но цикл - это понятие не из программирования, но в разных языках оно просто реализовано немножко по разному. И сравнение и выбор - тоже проистекают из обычной жизни и только специальным образом воплощаются в языках.
    Так что язык, который вы используете - это только средство описания алгоритмов, а никак не необходимый инструмент.
    Ответ написан
    Комментировать
  • Какой алгоритм движения курьеров для доставки из ресторанов?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Интересная задачка у вас: NP-полная, но при ограничениях реального мира вполне разрешимая.
    Коммивояжер ваш имеет ограниченный ресурс по числу пунктов доставки. Доставку, наверно, нужно делать в заданных временнЫх рамках (пока горячая).
    Итого ваша задача разбивается на две:
    1. Распределить заказы между курьерами. Причем какие-то курьеры еще в пути, какие-то в резерве. Скажем, курьеров у вас 7: один в пути далеко, еще один на подходе и трое стоят под загрузкой (плюс двое в резерве на подхвате на случай аврала). Есть поток задач на доставку и нужно распределить их между курьерами максимально эффективно.
    2. Расставить задачи одного курьера в очередь так, чтобы при обходе точек назначения минимизировать какой-то параметр. Обычно это время, поскольку бензин, расстояние и стоимость проезда вторичны и коррелируют со временем.

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

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

    Для начала я бы провёл кластеризацию адресного пространства. Построил бы матрицу "цены" перемещения между узлами. Вынес бы роутинг на отдельный изолированный слой, чтобы не быть сильно зависимым от конкретного построителя маршрутов.
    Можно глянуть, например, в сторону OSRM.

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

    Вообще технически можно ещё круче сделать, чтобы один курьер второго мог перехватить по пути и перераспределить с ним часть заказов так, чтобы совокупный расход на перемещение был меньше.
    Здесь курьер, получается, может доставлять товар еще и в произвольную точку рандеву другому курьеру.
    Если у вас мультимодальная система доставки с пешими и "конными" курьерами, то часть товаров, возможно, будет проще выпускать и развозить по магистрали автомобилем, а пешие гонцы перехватывают грузовик по пути и разносят локально.
    Можно попробовать глубже копнуть роевые алгоритмы.
    Каждый акт перемещения курьера, приёма/передачи товара (от ресторана курьеру, от курьера курьеру), подготовки заказа в конкретном пункте выдачи - это ветвоение в дереве решений.
    Такие ветвления могут быть реальными и потенциальными:
    • Реальные необратимы и по своему факту отсекают потенциальные ветки связанные зависимостями.
    • Потенциальные ветки имеют свою цену и динамически характеризуются числом зависимостей. Зависимости бывают мягкие и критические: чем большим приростом потенциально цены обернётся отсечение ветки, тем более она критична.

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

    Короче, добро поджаловать в логистический адок.
    Ответ написан
    2 комментария
  • Почему убунту и винда загружают ЦП по-разному?

    Zoominger
    @Zoominger Куратор тега Windows
    System Integrator
    В системном мониторе смотрю: на простое 70% стабильно.

    А что именно систему нагружает?

    В Linux исключительно убогая подсистема управления электропитанием, тут либо агрессивное энергосбережение включать (гугл: cpufreq) либо возвращаться на полноценную ОС для десктопа, которая будет поддерживать ноутбук нормально.
    Ответ написан
    5 комментариев
  • Как создавать многоступенчатые запросы?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый вечер.
    Во-первых, можно использовать andFilterWhere().
    C условиями можно разбить запрос на части.
    $request = Model::find();
    if(...){
      $request->andWhere(...);
    }
    $query = $request->all(); // or one()
    Ответ написан
    2 комментария
  • Куда идти, что делать, какой язык выбрать?

    php666
    @php666
    PHP-макака
    Мечтаю создать свой собственный проект
    Забудь, ты опоздал лет на 20, время одиночных проектов ушло в историю. Сейчас любые проекты делаются командами, у которых есть инвесторы и четкий бизнес-план.

    Когда я был студентом, в начале 2000-х, в интернете были веб-сайты, которые делали люди-одиночки и эти сайты были весьма популярны, это был восход одиночных проектов на хтмл4 и пхп4. Сейчас добиться с такими же трудозатратами хотя бы доли той аудитории нереально.

    чтобы этот проект был направлен на общество, ну что-то вроде социальных-сетей, т.е. чтобы с этим непосредственно работал человек, это было трендом и тп
    в любом трендовом проекте, если ты туда когда-либо попадешь (что не факт) ты будешь простым исполнителем, винтиком. Поэтому
    не очень хочу программировать станки на заводе
    звучит очень высокомерно. Как раз на программирование столь серьезных вещей и стоит попасть, ибо это, в отличие от бесчисленных соцсетей, стартапов и пр мусора, приносит реальную пользу.

    Есть идея по создании социальной сети

    1. ты ее не сделаешь в одиночку
    2. если сделаешь, то не скоро и очень криво
    3. она не нужна никому, людей уже тошнит от соцсетей

    можете посоветовать, что делать
    перестать рассматривать эту сферу с инфантильной позиции, что ты какой-то уникальный человек, который сейчас выучится, придёт в профессию и перевернет мир, а работа твоя будет пестрить яркими красками.
    Нет.
    Реалии работы разработчика другие.
    Совсем.
    Тебя ожидает трекер с задачами, какой-нибудь проект с кучей кода (дай бог, что бы не древний как авно мамонта), в котором ты будешь копаться, пока не сломаешь мозги.
    И так несколько лет.
    Ответ написан
    Комментировать
  • Бесплатный или почти бесплатный облачный хостинг для ботов?

    deepblack
    @deepblack
    https://www.hetzner.com/cloud
    Минимальный инстанс от 2,49 Евро

    по событиям

    это к Heroku
    Ответ написан
    Комментировать
  • Бесплатный или почти бесплатный облачный хостинг для ботов?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    5. IBM Bluemix вроде позволяет без карты, но надо тестить
    6. Alibaba кажется тоже в это играет
    Ответ написан
    Комментировать
  • Как начать работать без "фонового шума"?

    delphinpro
    @delphinpro
    frontend developer
    Вы пишете какую-то х.ню. Выдумали себе проблему. Если вы хотите избавиться от фонового шума, — вы от него избавляетесь. Если избавиться не получается, — значит вы не хотите от него избавляться. Всё остальное — это отмазки перед самим собой.
    Ответ написан
    9 комментариев
  • Какую специальность выбрать при поступлении?

    php666
    @php666
    PHP-макака
    Уже 28 лет
    Только начал кодить
    Есть мнение, что выдающимся программистом ты уже не станешь, плюсуем сюда 2-3 года обучения и тебе за 30.
    В этом возрасте многие уже руководят отделами или, по меньшей мере, имеют стаж в 5-10 лет.
    Плюс время на вышку, которая непонятно зачем тебе нужна - программированию учатся самостоятельно и без каких-либо корочек, примеров масса.
    В итоге типичный программист-исполнитель в районе 35 лет

    Совсем не ясно, зачем тебе вышка и что ты хочешь
    Ответ написан
    Комментировать
  • Какую стратегию обучения выбрать, когда в запасе есть 1.5 года и смартфон?

    php666
    @php666
    PHP-макака
    Был бы я начальником, я бы обязательно взял бывшего зк, отсидевшие люди - это закаленные и сильные, не то, что типичные программистишки, которые передвигаются перебежками с работы до дома и трясутся от дуновения ветра.

    Сам сидел 7 суток за сопротивление сотруднику милиции 10 лет назад. Когда принимали - удар в грудь, заставили из ботинок ступинаторы вытаскивать. Пока вытащил - все пальцы в кровь изодрал. У меня армейские берцы были, голыми руками фактически драл цельную резину подошвы... жесть, как вспомню.. Потом полностью раздеваешься и приседаешь перед ментом... весело..

    Помню, прямо в камере диарея случилась, ибо кормили гадостью. Т.е. тебя пучит, ты в ИВС, 2х1.5 метра камера, а рядом зек в наколках, и даже бумаги туалетной не было. Пришлось носовой платок рвать.
    Ответ написан
    3 комментария