• Какие есть недостатки в этом php-роутере?

    @topot
    Это у Вас не роутер, а целый сайт/приложение. Монолитное. Единое целое.
    Что "не так" с этим приложением?
    Всё. Если говорить о правильности подходов.
    Что так с этим приложением?
    Оно работает. И оно является этапом Вашего роста.
    Роутер не должен ничего инклудить и, тем более, знать о каких-то там темплейт-хедерах, да ещё и запросы в базу делать.
    Он должен только обладать информацией - "с этим - туда, а с этим - сюда". А информацией этой может воспользоваться уже Диспетчер. Он у Вас тоже вмонтирован своего рода в монолит.
    Вам правильные вещи тут говорят. Попробуйте услышать.
    Ответ написан
    1 комментарий
  • Как устанавливать модули из npm?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    Вы используете browser-sync в качестве зависимости в вашем проекте, он сам по себе имеет зависимости, которые в свою очередь имеют свои зависимости, которые в свою очередь...
    Ответ написан
    1 комментарий
  • Почему свойство background "затмевает" свойство background-color?

    background: -webkit-linear-gradient(bottom, #87C03B, #98D647);


    такую запись браузер читает как

    background-image: -webkit-linear-gradient(bottom, #87C03B, #98D647);


    background-color меняетcя, но под градиентом этого не видно. Можете проверить, поставив один из цветов в transparent;
    Ответ написан
    1 комментарий
  • Как на PHP или mysql запросом изменить названия полей сопоставив им нужные id?

    Melkij
    @Melkij
    PostgreSQL DBA
    Лучше в команды добавьте новое поле для id стадиона, всё равно ведь тип поля менять, а поле названия потом удалите. Когда проверите, что id заполнены верно и для всех строк.

    update команды join стадионы on стадион=стадионы.название set стадионid = стадионы.id
    Ответ написан
    Комментировать
  • Как определить какой город на карте leafletjs?

    Для поиска города по координатам можно воспользоваться бесплатным API Yandex Geocoder https://tech.yandex.ru/maps/doc/geocoder/desc/conc...
    Ответ написан
    Комментировать
  • Как взять геолокацию в сайте http?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Если большой точности не нужно, то geo-ip на сервере и передавать на клиент.
    Ответ написан
    Комментировать
  • С точки зрения парадигмы ООП какие объекты следует выделить в программе калькулятор?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Если вкратце: единственный класс - класс-вычислитель (calculator).
    Если создавать Грамотный калькулятор с использованием ООП, тогда:
    1. Нужно уметь хранить все предыдущие операции и состояния переменных
    2. Нужно уметь перемещаться в любое место предыдущих вычислений и вносить правки в виде версии (новое "ответвление" от места правки в истории вычислений)
    3. Нужно использовать поддержку ввода выражений алгебры прямой логики и вычисление выражений с применением польской обратной записи.
    Например: 1+3*(4-cos(0))
    4. Нужно уметь работать с конечными и бесконечными множествами с заданной точностью.
    5. Нужно уметь расписывать в истории весь порядок внутренних преобразования и вычислений по требованию пользователя.
    6. Нужно создать систему работы с преобразованием и упрощением выражений.
    7. Уметь работать с вещественными числами
    и т.д.
    Ответ написан
    Комментировать
  • С точки зрения парадигмы ООП какие объекты следует выделить в программе калькулятор?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    Я бы предложил такое:
    * Лексический анализатор - читает текст, по запросу отдаёт следующую лексему(число, операция, скобка и тд), знает, где сейчас находится относительно текста;
    * Синтаксический анализатор - берёт из лексического лексемы, хранит в себе состояние относительно выражения(не текста), строит некое представление (например, полиз);
    * Возможно, собственно это представление, если стандартными контейнерами не обойтись;
    * Интерпретатор - по представлению вычисляет конечное значение (результат выражения);
    * Ну, и возможно, пресловутый калькулятор, чтобы всё это красиво объединить и вычисление выглядело так: подал на вход строку, получил на выходе результат.

    P.S. Это всё нужно, если вы не пользоваться просто eval'ом собираетесь, а хотите реально написать сами.

    P.P.S. почитал остальных отвечающих, и уточню - то, что я описал, это просто "сферический калькулятор в вакууме", не зависящий от UI, ни от чего не зависящий, фактически.
    Ответ написан
    2 комментария
  • Как добавлять данные в MongoDB на php?

    VladimirAndreev
    @VladimirAndreev
    php web dev
    insert - метод MongoCollection, а не MongoClient
    Ответ написан
    3 комментария
  • Должна ли наша компания платить налоги за пользователей нашего интернет-сервиса?

    sim3x
    @sim3x
    Думаете в какой юрисдикции собираетесь работать и идете к юристу и бухгалтеру в той юрисдикции
    Ответ написан
    Комментировать
  • Как организовать работу транзакций в микросервисной архитектуре?

    Nipheris
    @Nipheris Куратор тега C#
    Теоретический аспект: https://en.wikipedia.org/wiki/Two-phase_commit_protocol
    Реализация: https://msdn.microsoft.com/en-us/library/system.tr... , ну или свой велосипед (на базе HTTP или очередей сообщений).
    Ответ написан
    Комментировать
  • Почему CURL не возвращает контент страницы?

    XNoNAME
    @XNoNAME
    Эникейщик
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

    источник: stackoverflow.com/questions/3519939/make-curl-foll...
    Ответ написан
    Комментировать
  • Какой PHP фреймворк выбрать для ERP в сфере пищевого производства (фастфуд)?

    @AndreySvistunov
    Вам как представителю бизнеса нужно не фреймворк искать, а специалиста или организацию которая имеет опыт руководства командой разработчиков и с представлением архитектуры таких проектов. Стоимость такого проекта будет не один миллион рублей и важно делать как можно меньше ошибок даже в самом начале пути )
    Ответ написан
    Комментировать
  • Как переводится слово keybinder на русский язык?

    @vylegzhanin
    Очевидно же, что это привязка какого-либо действия к кнопке.
    Ответ написан
    Комментировать
  • Создал самоподписанный сертификат, но не получил https?

    CityCat4
    @CityCat4 Куратор тега Цифровые сертификаты
    //COPY01 EXEC PGM=IEBGENER
    Здесь не один вопрос, а целых...три
    1. Зачем мне https
    2. Почему самоподписанный сертификат небезопасен
    3. Чем отличается самоподписанный сертификат от выданного доверенной организацией
    Итак.
    1. https, нужны только для того, чтобы хром не зажигал красный флажок (последние версии уже начали маркировать такие сайты) - это что-то типа установки Windows 10 pre-alpha - круто, потому что новое. Если шифровать нечего - не шифруйте и пофиг на флажок. Если сайт продающий и пофиг быть не может - убейте жабу и купите сертификат от УЦ. Влезть на елку и не поцарапать попу не получится
    2. Самоподписанный сертификат небезопасен потому что никто не гарантирует правдивость данных, которые в нем. Это все равно что взять бумажку и написать на ней "Паспорт" - написать никто не мешает. Верить никто не будет. Чтобы такому сертификату начали верить, он должен быть добавлен в хранилище корневых сертификатов - причем на всех компьютерах, которые будут на него заходить. Вот поэтому, если сайт продающий и Вы даже о флажке так печетесь - как будете обьяснять юзеру, чтобы он скачал себе Ваш сертификат и добавил его в корневые? Тем более, что например на Windows Mobile это сделать в принципе нельзя (на нерутованной)
    3. Сертификат выданный доверенной организацией отличается тем, что сертификат самой организации уже добавлен во все хранилища всех браузеров - и все сертификаты, выданные ею, считаются доверенными. В этом и заключается опасность бесплатных раздатчиков сертификатов - из сертификата может либо не оказаться, либо он будет "подозрительным". Еще раз - если сайт продающий - убейте жабу и купите нормальный сертификат от нормального УЦ. Экономия на бесплатных сертификатах может выйти боком.
    Ответ написан
  • Как правильно организовать процесс написания и тестирования клиентского JavaScript-кода?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Нормальна ли схема с единой точкой входа

    В принципе нормально, все так и делают вобщем то.

    ведь, если количество модулей перевалит за 10

    Всегда можно вынести что-то в отдельный модуль. Руководствуйтесь здравым смыслом, снижайте связанность (вообще почитайте про low coupling и high cohesion для более адекватной организации модулей).

    вешать события на элементы


    А ваши модули с табами и т.д. что делают тогда?

    Или стоит создать отдельную страницу, на которой будут запускаться тесты mocha на основе уже собранного JS проекта?


    Это наиболее удобный вариант. Так же помимо фэнтома рассмотрите вариант с webdriver io, как самый честный вариант тестирования. Медленно... но чтож поделать если вы решили UI тестить (а точнее UI элементы).

    Пока я вижу следующую схему: mocha + jsdom


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

    если моя функция не предназначена для работы с DOM — я должен снова вернуться к unit-тестам.


    Именно так. Если вам не нужен DOM - старые добные юнит тесты.

    Имеет ли вообще смысл тестировать, скажем так, такой примитивный код?

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

    Возможно у кого-то завалялся репозиторий с похожим кейсом?

    Рекомендую вам просто отказаться от прямой работы с DOM. Мне дико нравится подход ангуляра к построению приложений. В нем мы тестируем 10% директив, которым приходится работать с DOM, а все остальное - просто подготовка состояния. Далее в дело вступают биндинги, которые и так оттестированы, и декларативное представление, которое по природе своей тестировать смысла нет.
    Ответ написан
    1 комментарий
  • Можно ли упростить асинхронный код на Promise?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Вынесите someObject в замыкание и внутреннюю цепочку промисов перенесите во внешнюю
    someObject = null //не знаю можно ли писать в cs var поэтому так
    Promise.resolve()
    .then(@getObjectDescription.bind(@))
    .then(
      (so) ->
        someObject = so
    )
    .then(@getSomeSpecialFieldValue.bind(@))
    .then(
            (value) ->
              someObject.special_field = value
              return someObject
    )
    .then(
      (someObject) ->
        data = new FormData()
    
        data.append('field', someObject.field)
        data.append('special_field', someObject.special_field)
    
        options =
          method: 'post'
          body: data
    
        return options
    )
    .then(@execute.bind(@, 'rest.api.method'))
    Ответ написан
    1 комментарий
  • Как именно плейсхолдеры (подготовленные выражения) защищают от sql-инъекций?

    Подготовленные выражения защищают от SQL-инъекций тем, что отделяют синтаксис запроса от значений параметров запроса. Суть любой SQL-инъекции - изменить синтаксис (текст, если угодно) запроса тем или иным образом. Если вы передаете текст запроса и параметры отдельно, не будет никакой возможности повлиять на синтаксис запроса из параметра запроса.

    В случае поддержки со стороны СУБД, подтоговленные выражения PHP должны использовать возможности СУБД и передавать ей сначала текст запроса для компиляции, а уже потом, отдельно - параметры запроса.

    Теоретически, проблемы могут быть только в случае, если prepared statements не поддерживаются самой СУБД и эмулируются PDO (т.е. на стороне скрипта, а не БД). Тогда косяки в реализации сборки конечного запроса могут сказаться на безопасности. В случае поддержки со стороны СУБД "реализовывать" просто напросто нечего - вы защищены от инъекций не за счет экранирования всего и вся, а за счет правильного подхода - никогда не смешивать сам запрос и его параметры.

    Насколько мне известно, mysql уже давным-давно поддерживает prepared statements, поэтому не вижу смысла бояться их использовать. А даже если б это было не так, вероятность в том, что при ручной сборке запроса накосячите ВЫ - гораздо выше.

    UPDATE: полезнейший коммент на странице php.net/manual/ru/pdo.prepare.php:
    With PDO_MYSQL you need to remember about the PDO::ATTR_EMULATE_PREPARES option.

    The default value is TRUE, like
    $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES,true);

    This means that no prepared statement is created with $dbh->prepare() call. With exec() call PDO replaces the placeholders with values itself and sends MySQL a generic query string.

    The first consequence is that the call $dbh->prepare('garbage');
    reports no error. You will get an SQL error during the $dbh->exec() call.
    The second one is the SQL injection risk in special cases, like using a placeholder for the table name.

    The reason for emulation is a poor performance of MySQL with prepared statements. Emulation works significantly faster.

    Так что да, есть доля внезапности в поведении PDO. Я думаю стоит порыть инфы о настройке PDO::ATTR_EMULATE_PREPARES. Я считаю, что включать по-дефолту именно эмуляцию - это в высшей степени недальновидное решение. Проблемы MySQL затыкаются на стороне стандартной библиотеки языка....
    Ответ написан
    2 комментария
  • Как проще всего проверить код на работу в php 5.0?

    Melkij
    @Melkij
    PostgreSQL DBA
    Для сборки 5.0 в современном окружении надо накатить пару патчей:
    Поддержка libxml2 https://github.com/hnw/phpall/blob/master/patches/...
    Поддержка openssl: https://github.com/hnw/phpall/blob/master/patches/...
    Не обращайте внимание на 5.1.6 в имени, патчи подходят для 5.0.5

    Из начального состояния "5.6 собирается", под debian 8 нужен ещё пакет flex-old. Всё, других манипуляций при сборке я не делал, в остальном php собрался штатно и вроде бы работает.

    Disclaimer: я не старый извращенец и некромант, просто как-то грустным зимним вечером захотелось погреться и собрать по последнему представителю всех веток 5.х =)
    Ответ написан
    1 комментарий
  • Зачем google и yandex делают редирект на www?

    littleguga
    @littleguga
    Не стыдно не знать, а стыдно не интересоваться.
    Ответ написан
    Комментировать