• Наемная работа или Фриланс?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Я уже много раз писал и повторю: Шансов на фрилансе нет, пока не дорос в офисе до мидла. Пара пользователей Тостера писали, что смогли стартануть с фриланса, но даже если это правда, то они - примеры чрезвычайно редкого сочетания выдающихся личных качеств и сказочной удачи.
    Ответ написан
    Комментировать
  • Ruby on Rails, Django (Python), PHP-фреймворки - какая из технологий позволяет создавать проекты с наилучшей СКОРОСТЬЮ РАЗРАБОТКИ?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Да без разницы. Рельсы, джанга и ларавель похожи друг на друга на столько, словно из одной мамки выпали.
    Ответ написан
    1 комментарий
  • Как получить максимальный и минимальный ключ массива в php?

    toxa82
    @toxa82
    Делаем сначала ksort(). Потом получаем первый элемент reset(), и получаем последний end()
    Ответ написан
  • Есть ли в программировании ниши, где нет митингов, огромнейших опенспейсов, бюрократии?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Есть ли в программировании ниши, где нет митингов, огромнейших опенспейсов

    Есть. В моём личном проекте, например.
    Ответ написан
    Комментировать
  • В чем разница между 'фабричным методом' и 'простой фабрикой'?

    Adamos
    @Adamos
    В вашем же примере единственное назначение класса фабрики - создание подклассов в одном методе.
    А классы с фабричным методом умеют свой функционал ПЛЮС могут вернуть себя единообразным для всех них образом. Причем этот самый метод getMobile может заодно участвовать и в других методах того же класса, когда ему понадобилось создать клона, например.

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

    Паттерны - это же не о классах, а о взаимодействии между ними и уменьшении связности.
    Ответ написан
    Комментировать
  • Как поступить с корзиной пользователя?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Сохранить текущую корзину, потому что именно это пользователь точно сейчас хочет купить.
    Молча ничего не добавлять.
    Вежливо показать сообщение "У вас с прошлого раза остались такие-то товары, добавить? Добавить к текущему заказу?".
    Если пользователь согласился - добавить отсутствующие ,пропустить сущестующие.
    Ответ написан
    Комментировать
  • Какие существуют паттерны использования git?

    DevMan
    @DevMan
    делать ветку каждые N минут/часов – это бред.
    ветка должна быть логичной: пилите новую фичу – делаете новую ветку, пилите новую версию – делаете новую ветку, надо что–то проверить/поэкспериментировать –делаете новую ветку.

    комиты – чем чаще, тем лучше, особенное если над кодом работает много людей. но тоже не по секундомеру.

    нет четких правил, просто пользуйтесь здравым смыслом. со временем сами придете к тому, что удобно и что не очень.
    ну и почитайте про git flow.
    Ответ написан
    Комментировать
  • Не могу найти ошибку в коде java core, спасибо?

    myjcom
    @myjcom
    Извините за сленг RTFM
    https://www.internet-technologies.ru/articles/srav...
    Оператор == проверяет ссылки, а не значения

    В Java сравнение строк equals проверяет исходное содержимое строки. Он возвращает true, если параметр — это объект String, который представляет собой ту же строку символов, что и объект...
    Ответ написан
    Комментировать
  • Как избавится от потери сообщений в RabbitMq?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    - Тюнить конфиг кролика
    - Тюнить конфиг сервера
    - Мониторить логи
    - мониторить параметры сервера (диск, проц, память, одновременное число сообщений)
    Перестать пользоваться принципом fire and forget и контролировать в скрипте факт успешной доставки сообщения в очередь с exponential retry
    Ответ написан
    1 комментарий
  • Зачем учить jvm языки кроме Java?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Это очень странный вопрос. Почему под .NET существует множество языков, если можно писать всё на C#? Почему вообще существует множество языков, если можно писать всё на C? Почему так много разновидностей мобильников? Почему автомобили бывают разных марок? И т.д. и т.п. Потому что не бывает единственно правильного всегда и для всего решения.

    Как понять, что вот проект А пишется на Java, а вот проект B ужеее неее, на Scala или Groovy лучше будет.

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

    Тогда если он такой крутой, почему я за 6 лет в айти(не коммерческого, но всетаки был рядом) не слышал почти про него

    В пещере может жили?

    И где тогда куча вакансий на него?

    Между "крутостью" языка и количеством вакансий на него нет прямой связи. Дворников сильно больше, чем нейрохирургов, но вы же не будете утверждать, что дворником быть круче?
    Ответ написан
    7 комментариев
  • Что такое сервлет?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Ну пойдем.
    1) Сервлет - не аналог CGI, и не аналог PHP
    Если уж говорить про аналоги, то ближе всего это FastCGI, но тоже очень далеко.
    В отличии от CGI/FastCGI - это ресурс, который:
    - имеет четко заданный жизненный цикл с сохранением состояний на приложение, сессию, запрос
    - имеет ресурсы, передаваемые ему сервером приложения (авторизация, внешние ресурсы, ресурсы приложения, ресурсы запроса, ресурсы сессии)
    - может включать в себя так называемые фильтры пре/пост обработки
    - может взаимодействовать с ресурсами приложения и контейнера

    В рамках сравнения с PHP, сервлет не имеет встроенного языка шаблонов. И прямой аналог этомы - JSP, которые компилируются перед исполнением в тот же сервлет.

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

    3) Напрямую на сервлетах сейчас достаточно редко пишут, хотя по быстрому набросать websocket очень даже можно. Обычно используют фреймфорки типа spring, javalin, jooby, vaadin, wicklets, tapesty и т.д. (их сотни под разные нужды и задачи!). Все эти фреймворки (библиотеки и обертки) делают удобным работу с API сервлетов, языками шаблонов (их тоже - десятки) и взаимедействием с ресурсами.

    4) Кроме сервлетов, есть еще куча всего, что можно сделать без создания сервлета, но получить полноценный web (хотя внутри это все будет обернуто в сервлет скорее всего).

    5) кроме сервлетов появились и новые фреймворки, расчитанные на микросервисы, и не обеспечивающие спецификацию сервлетов, например jooby, javalin и т.д.
    Вот код простого, боевого, приложения, в котором уже есть web-сервер, держащий нагрузку в несколько тысяч RPS.
    import io.javalin.Javalin;
    
    public class HelloWorld {
        public static void main(String[] args) {
            Javalin app = Javalin.create().start(7000);
            app.get("/", ctx -> ctx.result("Hello World"));
        }
    }
    Ответ написан
    9 комментариев
  • Можно ли как-нибудь в PHPStorm сделать поиск по нескольким каталогам?

    delphinpro
    @delphinpro Куратор тега PhpStorm
    frontend developer
    File | Settings | Appearance & Behavior | Scopes
    Определите нужный скоуп, включите в него необходимые директории

    Потом в поиске задайте место поиска по этому скоупу
    5dab716be922b073022164.png

    Конечно это не имеет смысла для разового поиска.
    Ответ написан
    Комментировать
  • Как выглядит и работает фильтрация PHP POST & GET?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Как выглядит и работает фильтрация PHP POST & GET?

    Никак.
    Я понимаю, что это утверждение не укладывается голове у человека, изучавшего пхп по видеокурсам, но это факт.
    Сами по себе НТТР запросы POST & GET никакой угрозы не несут и как-то заранее фильтровать их не надо.

    Фильтровать вообще надо не по принципу "откуда", а по принципу "куда".
    Данные надо форматировать в зависимости от того, куда они пойдут, а не откуда они пришли. SQL запросу абсолтно фиолетово, откуда взялась кавычка в данных - из GET, файла на диске, или из другой базы данных. Данные для SQL надо правильно форматировать не потому что они пришли из GET, а потому что они идут в SQL.
    (При этом надо также понимать, что SQL запрос и база данных - это не одно и тоже. Базе тоже по барабану, что в ней лежит. Любое форматирование мы делаем только для SQL запроса, а в базе данные снова должны быть как есть).

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

    Если бы все думали, как ты, то ты бы не смог задать свой вопрос на Тостере. Потому что без кавычек и тегов он превратился бы в бессмыслицу. Как и куча любых других вопросов.
    Разумеется, "мусор" надо не удалять, а форматировать. Потому что это "мусор" только для SQL, а для человека это нужная информация, которая помогает читать текст.

    Не использовать же для этого регулярки?

    Нет, разумеется.
    Использовать регулярки будет так же глупо, как и твою функцию.

    Для того, чтобы поместить переменную в SQL запрос, надо использовать подстановки в подготовленных выражениях. Запомни это предложение. Оно важнее всего, что ты до сих пор успел узнать про пхп. Хорошоенько запомни, ты должен это знать лучше, чем зовут маму с папой. И никогда не отступать от этого правила. Не важно - нужна тебе защита от SQL инъекций или не нужна, из POST-а ли пришли данные, или Господь бог тебе их надиктовал на горе Синайской - все равно всегда и везде только через подстановки.

    Поэтому.
    1. Выкидываешь свою функцию на помойку. Единственное слово, которое там имеет там хоть какой-то смысл - это trim(). Ну так ты можешь вызывать её напрямую.
    2. Судя по уровню кода и вопроса, для работы с бд ты используешь убогую mysqli. Поэтому забудь вообще про mysqli_query(), а все запросы, в которых используется хотя бы одна переменная, выполняешь только так
    $stmt = $conn->prepare("INSERT INTO tablitsa (login_name,email) VALUES (?,?)");
    $stmt->bind_param("ss", $login, $email);
    $stmt->execute();

    Подробнее можешь почитать в интернете.
    3. При выводе пользовательских данных в HTML, используешь функцию htmlspecialchars(). Надеюсь, к этому моменту ты уже понял главную мысль - важно не откуда пришли данные, а куда. Идут в хтмл? Отлично, форматируем их для хтмл.
    Ответ написан
    6 комментариев
  • Асинхронный генератор и обещание массив?

    @StockholmSyndrome
    обратите внимание, что в setTimeout нужно передавать resolve, а не результат её вызова
    const promiseList = [
      new Promise(resolve => setTimeout(resolve, 200, 15)),
      new Promise(resolve => setTimeout(resolve, 600, 17)),
      new Promise(resolve => setTimeout(resolve, 500, 42))
    ];


    async function* promiseGenerator(arrPromise) {
      const result = []; 
      const push = (val) => result.push(val);
    
      const promises = arrPromise.map((promise) => promise.then(push));
      await Promise.all(promises); 
    
      for (let i = result.length - 1; i >= 0; --i) {
        yield result[i];
      }
    }
    Ответ написан
    1 комментарий
  • Почему цикл while выводит числа от 1 до 5?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    let i = 0;         // i = 0
    while (i++ < 5) {  // i = 0 сравнивают с 5. Меньше. Ок. 
                       // После этого i стало = 1
      alert( i );      // вывели 1
    }
    
                       // следующая итерация
    while (i++ < 5) {  // i = 1 сравнивают с 5. Меньше. Ок. 
                       // После этого i стало = 2
      alert( i );      // вывели 2
    
                       // следующие итерации
                       // i = 2 -> 3
                       // i = 3 -> 4
                       // i = 4 -> 5
    
                       // следующая итерация
    while (i++ < 5) {  // i = 5 сравнивают с 5. Не меньше. Равно. Не ок!
                       // вышли из цикла
    Ответ написан
    Комментировать
  • Как убрать все символы между цифрами PHP?

    @ar2rsoft
    PHP-developer
    preg_replace('~(.+\d+)[^\d]+(\d+)~', '$1x$2', $str);
    Ответ написан
    2 комментария
  • Функция stream_context_create - зачем нужна?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    stream_context_create - это про потоки данных, не обязательно соответствующие протоколам, поддерживаемым в curl.
    Ответ написан
    3 комментария
  • Где можно найти ментора по Java?

    sim3x
    @sim3x
    Для такого и существуют QA ресурсы
    Ответ написан
    Комментировать
  • Зачем оставлять сайт доступным по http?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Вариантов много. Например, если нужно сохранить совместимость с совсем старыми устройствами, которые не умеют в актуальные шифры, а делать шифрование криво-косо не хочется. Или, например, если сервис завязан на какие-то кастомные заголовки, приезжающие от мобильных операторов (номер телефона, например).

    Но основная причина, имхо - вкусовщина или лень админов. При прочих равных лично я выбрал бы безусловный редирект.
    Ответ написан
    Комментировать
  • Идейка для стартапа, какой стек подойдет?

    Sanasol
    @Sanasol Куратор тега Веб-разработка
    нельзя просто так взять и загуглить ошибку
    хозяину ничего не нужно делать, он открывает приложение и фоткает прилавок с ценниками

    Так ничего или всё таки нужно)
    проблема-то здесь как раз таки в этой самой "цифровизации" которой нет в голове у людей, а не в том что никто такой сервис еще не придумал.

    Во всех картах добавить точку это дело одного дня. В гугл картах в том числе есть целый раздел с меню(читай как прайслист), в яндекс картах тоже есть раздел заполнения прайса.
    Только всем хозяинам насрать, они кроме вотцапа/вконтакте и одноклассников интернет не видели.
    И зачем им ваше приложение если к ним и так все будут ходить из близлежащих домов, а все кто дальше не их аудитория по определению.

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

    Дальше идёт собственно проблема "открываются новые бизнеса каждый месяц" в одном и том же месте. Кто это будет актуализировать? Опять же либо люди которых надо заставить как-то отметить что точка уже закрылась, либо новый хозяин точки должен подтвердить что он теперь тут и получить доступ к управлению данными чтобы заполнить новые. А если нового хозяина еще нет, а если новый про ваше приложение не в курсе и т.д.
    На выходе куча мертвых точек которые никто кроме вас не собирается актуализировать.

    В общем все проблемы от людей так или иначе. И либо вы сами будете все это заполнять(2ГИС например сам всё собирает), либо будет архив местячковых закрытых точек.

    ап
    всё что упомянуто так или иначе есть в гугле/яндексе. И там не обязательно быть хозяином даже чтобы добавить новую точку на карту, вот только кому это надо?
    У гугла так вообще глобальная программа контрибуторов/"местных экспертов" где их всячески пинают и заставляют заполнять карты за ачивки. И работает это у гугла только потому что аудитория у гугла можете себе представить какая. Опять же там где оно никому не надо гугл карты тоже пустые.
    Ответ написан
    8 комментариев