• Почему habr запрещает комментировать, если у него проблемы с доставкой писем?

    DevMan
    @DevMan
    ничего менять не нужно - прост кликнуть по ссылке, прилетит письмо для подтверждения.
    сам утром на это наткнулся.
    Ответ написан
    2 комментария
  • Как узнать разницу между датами в днях?

    DevMan
    @DevMan
    $time1 = new \DateTime('2018-01-01');
    $time2 = new \DateTime('2019-01-01');
    echo $time1->diff($time2)->days;
    Ответ написан
    Комментировать
  • Безопасно ли сотрудничать с таким работодателем?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    700 зеленых на мидла/синьора - в глубинке, или на ширпотребных сайтиках возможно и норм. ИС 3 месяца - какая-то хрень. Хотя... есть у меня знакомый, у которого ИС был 9 месяцев, правда у него все через одно место.

    В любом случае вы в праве указывать на то, что вас не устраивает.
    Не нравится ЗП - ищите дальше.
    Слишком длинный ИС - договоривайтесь на по короче, или ищите дальше.
    Отзывы о компании не нравятся - ищите дальше.
    Нашли статью о компании на ebanoe.it - напишите смешной каммент к статье и ищите дальше.
    Ответ написан
    Комментировать
  • Как называется такой класс ПО?

    glaphire
    @glaphire
    PHP developer
    Больше всего похоже на ERP систему
    Ответ написан
    Комментировать
  • Почему у LinkedList нет метода iterator?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Как это его нет в доках? https://docs.oracle.com/javase/7/docs/api/java/uti...
    Ответ написан
    Комментировать
  • Путь в программировании. Правилен ли мой план?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Если перевести "computer science" на русский язык, вся магия рассеивается. "Информатика" так красиво уже не звучит. Это расстраивает снобов, нагнетающих собственную важность, рассуждая про необходимость CS. А по факту бизнесу нужно быстро решать унылые задачи. Поэтому потратив время на получение "фундаментальных знаний" вы выйдете на рынок, где они нужны пяти компаниям в РФ и пятидесяти в мире (причём в куда более объёмном и качественном виде, чем вы могли получить самостоятельно), а вашими конкурентами будут люди, которые потратили своё время на умение программировать, востребованное вообще всеми. Ну, и наконец, дети сначала алфавит изучают, а уж сильно потом некоторые из них берутся за освоение принципов написания поэм высоким стилем. Надеюсь, понятна аналогия.
    Ответ написан
    Комментировать
  • Объясните как работает php-fpm?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Для начала почитайте что такое SAPI. Затем представьте что apache + mod_php разделили на web-сервер, который проксирует запросы на php-fpm и отдает статику, и собственно отдельный web-сервер который имплементит SAPI и выполняет запросы связанные только с php. То есть статику отдавать мы можем только через php. Суть примерно та же что и у apache2 + prefork + mod_php но оптимизированный только для работы с php. Так же можно поставить на фронт более быстрый и легковесный сервер который умеет проксировать запросы.

    То есть php-fpm это эдакий fast-cgi сервер который постоянно держит готовые для работы пул-процессов (сколько в пуле процессов настраивается, так же как и от какого пользователя их запускать и все такое прочее). Каждый новый запрос уходит в какой-либо процесс из пула, запрос отрабатывает, возвращаем результат тому кто попросил (web-серверу обычно). Если процесс падает (fatal допустим) - поднимаем новый.

    Принципиальной разницы между apache2+mod_php нету, просто упрощается инфраструктура. Наш web-сервер должен только уметь проксировать запросы и отдавать статику, а php-frpm вообще может быть на разных машинах (балансировщиком можно раскидывать запросы). Ну и сами понимаете, nginx + php-fpm будет быстрее обрабатывать запросы чем apache2+mod_php какой бы мы менеджер процессов не использовали в апаче. Минусов по сравнению с apache+mod_php я даже не могу предложить.

    А php-runtime не зависит от этого. Он один на всех, CLI, FPM, mod_php...
    Ответ написан
    7 комментариев
  • Как решить проблему с php.ini?

    @4iloveg
    Full-Stack HTML Developer
    Ошибки ведь читаемые и всё понятно
    . >=7.1.3 <7.3 -> your PHP version (7.3.12) установленная версия не входит в указанный диапазон
    the requested PHP extension mbstring is missing from your system. - нужно подключить модуль. Как подключать инфы уйма.
    Ответ написан
    Комментировать
  • Как должно быть организовано тестирование?

    Как чаще всего устроен процесс тестирование в маленьких / средних продуктовых компаниях:

    1. Пилится фича разработчиками.
    2. Отправляется на ревью коллег.
    3. После ревью приходит тестировщик и по своим тест-кейсам прогоняет ветку с фичей. Чаще всего это смоук-тест и соответствие фичи необходимым требованиям. Если это какая-то большая / глобальная фича, то здесь уже идёт в бой регрессионное тестирование.

    Вообще, во всех компаниях процессы разные, это действительно может быть разработка TDD, который вы описали, а может быть тестировщик сидит и в своей голове придумывает тест-кейсы и лежат они у него где-то в блокноте.

    Поэтому отчасти ощущение непонимания своей задачи даже уместно в этом случае на начальном этапе.
    Ответ написан
    9 комментариев
  • Можно ли в репозиторий использовать для сохранения обьектов?

    @EvgeniiR
    https://github.com/EvgeniiR
    Save your repository from save

    Можно ли понимать репозиторий как это по сути промежуточное звено между приложением и внешним хранилищем

    Это будет уже не репозиторий а гейтвей к хранилищу.
    Репозиторий - коллекция доменных объектов.

    Denis ,
    можно ли заменить CRUD репозиторием? Нет

    CRUD можно заменить готовыми решениями(postgrest etc.).
    Ответ написан
    2 комментария
  • Выбор коммуникации между сервисами?

    2ord
    @2ord
    По окончанию регистрации необходимо отправить уведомление, поэтому логично сделать это через брокер сообщений (RabbitMQ и др.).
    Служба Уведомления представляет из себя потребителя очереди и рассылает письма асинхронно относительно регистрации.
    Сам транспорт менее важен чем то когда событие будет обработано.
    Транспортом может быть и HTTP, и WebSocket.
    Ответ написан
    Комментировать
  • Как проверить с каких ip перешли по ссылке в go?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    Проще всего сделать одну ссылку, повесить handler на этот URL и уже в handler'e в зависимости от IP делать перенаправление. Вот рабочий пример:
    package main
    
    import (
        "fmt"
        "net"
        "net/http"
    )
    
    func main() {
        http.HandleFunc("/redirect_by_ip", RedirectByIPHandler)
        http.ListenAndServe(":8080", nil)
    }
    
    func RedirectByIPHandler(w http.ResponseWriter, r *http.Request) {
        ip, _, err := net.SplitHostPort(r.RemoteAddr)
        if err != nil {
            fmt.Fprintf(w, "ip: %q is not IP:port", r.RemoteAddr)
            return
        }
    
        if ip == `IP который вам нуежен` {
            http.Redirect(w, r, `URL 1`, http.StatusFound)
        } else {
            http.Redirect(w, r, `URL 2`, http.StatusFound)
        }
    }
    Ответ написан
  • Как научиться при помощи поисковика решать ошибки?

    kgb_zor
    @kgb_zor
    I need your traceback.
    Этот вопрос нужно решать при помощи поисковика.
    Ответ написан
    Комментировать
  • Как организовать структуру Symfony проекта для взаимодействия со сторонним API?

    @EvgeniiR
    https://github.com/EvgeniiR
    Вопрос написан сумбурно и не понятно. Какая решается задача - не ясно совсем.

    1. Можно ли каждую сущность представить сервисом?

    Нужно разобраться с терминологией "сущность представить сервисом" - каша какая-то. Сущность это сущность, сервис это сервис.

    Как получать данные для таких сущностей?

    "Получать данные для сущностей" это, опять же, каша какая-то. Пишите гейтвей к апишке и грузите данные.

    Service/PostService.php

    И нормально именовать тоже нужно учиться. PostService - ни о чём, что делает класс - не ясно.

    Создал отдельный сервис ApiService.php

    Снова название ни о чём.

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

    Наследование - выпилить и забыть как страшный сон. Экземпляры API - клиента через DI поставлять в те классы, где он нужен.
    Ответ написан
    Комментировать
  • Зачем нужен return вообще кроме окончания функцыи?

    potapchino
    @potapchino
    функция всегда что-то возвращает. чтобы указать, что именно функция должна возвратить, используется ключевое слово return. это и есть его суть. даже если его(return) нет в теле функции, функция все равно вернет undefined по умолчанию.

    spoiler
    эта функция вернет undefined, т.к. ключевого слова return нет.
    function func() {
      var a = 5;
      var b = 10;
      var sum = a + b;
    }
    var result = func()
    console.log(result) // undefined


    эта функция вернет строку 'i love js', т.к. вы явно на это указали с помощью ключевого слова return.
    function func() {
      var a = 5;
      var b = 10;
      var sum = a + b;
      return 'I love js';
    }
    var result = func()
    console.log(result) // 'I love js'


    вернет сумму двух чисел
    function func() {
      var a = 5;
      var b = 10;
      var sum = a + b;
      return sum;
    }
    var result = func()
    console.log(result) // 15


    вернет сумму двух чисел
    function func(a, b) {
      var sum = a + b;
      return sum;
    }
    var result = func(3, 7)
    console.log(result) // 10


    тоже самое
    function func(a, b) {
      return a + b;
    }
    var result = func(2, 2)
    console.log(result) // 4


    следующие две функции возвращают undefined. первая явно, вторая неявно
    function func1() {
      return undefined;
    }
    var result = func1()
    console.log(result) // undefined
    
    
    function func2() {
      
    }
    var result = func2()
    console.log(result) // undefined


    вернет другую функцию
    function func() {
      return function () {
        return 'ааа сложнааа'
      };
    }
    var result = func()
    var result2 = result()
    console.log(result) // function func()
    console.log(result2) // 'ааа сложнааа'
    console.log(func()()) // 'ааа сложнааа'


    как только в функции встречается это ключевое слово, интерпретатор немедленно останваливает выполненние функции(выходит из нее) и возвращает то что написано после этого ключевого слова. именно поэтому этот цикл выполнит всего лишь одну итерацаю, а не 100, как и должно, и вернет 1.
    function func() {
      for (var i = 1;  i < 100; i = i + 1) {
        return i
      }
    }
    var result = func()
    console.log(result) // 1


    а вот так вернет 100
    function func() {
      for (var i = 1;  i < 100; i = i + 1) {
        
      }
      return i
    }
    var result = func()
    console.log(result) // 100


    а вот так вернет undefined
    function func() {
      for (var i = 1;  i < 100; i = i + 1) {
        
      }
      return 
    }
    var result = func()
    console.log(result) // undefined
    Ответ написан
    2 комментария
  • Где задать что бы favicon отображался на всех страницах?

    Sanasol
    @Sanasol Куратор тега Laravel
    нельзя просто так взять и загуглить ошибку
    использовать шаблонизацию, а не стопицот абсолютно отдельных шаблонов.

    layoutы и @extends если говорить про Laravel Blade
    Ответ написан
    Комментировать
  • Правильная структура таблицы заказов интернет-магазина?

    @NinjaNickName
    Web разработчик
    • Зачем нужна таблица для корзины? В какой CMS вообще такое есть? оО
    • После оформления заказа, корзина очищается, на что ссылаться заказ будет? Или планируется хранить историю корзины? А в этом какой смысл?
    Ответ написан
    Комментировать
  • Типы объектов в java определяются во-время выполнения?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Нет, в джаве статическая типизация. Типы известны во время компиляции. В твоём примере типы объекта и переменной известны и не совпадают(и тип объекта не может быть приведён к типу переменной).
    Ответ написан
    5 комментариев
  • Почему советуют не выбирать yii2 для разработки?

    @EvgeniiR
    https://github.com/EvgeniiR
    1. Yii мёртв. Устарел лет на 10 по подходам и кодовой базе, и не развивается.
    2. Плохой дизайн. Глобальное состояние для всего, наследование от базового класса модели, валидация через массивы там же, наследование для расширения всего и вся и прочая чушь. Отсутствие многих удобных фич типа нормального DI/аргумент резолверов, чего только стоит гибкость конфигурации сервисов в Симфе.
    3. Свои велосипеды вместо чего-нибудь готового
    4. Все компоненты прибиты гвоздями и не заменяются своими. Это делает код на нём нерасширяемым и нетестируемым(Ну то есть в теории переписав пол фреймворка и 100500 своих адаптеров можно писать нормально, но те кто хочет писать нормально просто уходят с Yii).
    5. Слабое комьюнити которое сидит на нём потому что не осилило ничего другого / генерирует CRUD`ы через Gii(Заменить бы их уже не postgrest и прочие обёртки над базой) / инертные кодеры которым без разницы чего делать лишь бы на хлеб хватало.
    6. Все фреймворки далеки(очень) от идеала, но Yii сильно отстаёт от прочих.
    Ответ написан
    Комментировать