• Как определить какой город на карте 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
    Не стыдно не знать, а стыдно не интересоваться.
    Ответ написан
    Комментировать
  • Как исключить из регистрации временную почту?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Комментировать
  • Какие варианты логики сквозной информации в секции можете посоветовать?

    erniesto77
    @erniesto77
    oop, rb, py, php, js
    могу предложить использовать так называемые composers. Создаем в папке app папку View/Composers, в папке Composers создаем класс/файл допустим назовем AddStatistic.php:
    namespace App\View\Composers;
    
    use App\Comment;
    use App\Blog;
    use Illuminate\View\View;
    
    class AddStatistic
    {
        public function compose(View $view)
        {
            $statistic = [
                'last_comments' => Comment::getLast(),
                'top_rated' => Blog::topRated(),
            ];
            $view->with('statistic', $statistic);
        }
    }

    затем лучше вынести блок со статистикой в отдельную вьюшку, допустим 'partials.statistic' , потом в Providers/AppServiceProvider.php добавить use App\View\Composers и в методе boot добавить composer во вьюшку блока со статистикой, который будет туда передавать $statistic:
    namespace App\Providers;
    
    use App\View\Composers;
    use Illuminate\Support\ServiceProvider;
    
    class AppServiceProvider extends ServiceProvider
    {
        public function boot()
        {
            ...
            $this->app['view']->composer(['partials.statistic'], Composers\AddStatistic::class);
        }
        
        ...
    }
    Ответ написан
    Комментировать
  • Как написать отзыв?

    RustaMechanic
    @RustaMechanic
    Разработчик, студент, кодер
    День добрый!
    Отзыв пишется только после полной оплаты и финальной сдачи проекта. Клиент и фрилансер могут написать отзыв в течении 13 дней после завершения проекта.
    По срокам: у клиента есть 14 дней на оценку с момента последней отправки результатов вашей работы. Если в течение 14 дней клиент не отвечает, то депозит автоматически переходит к вам.

    Кстати, есть похожий вопрос по вашей теме. "Лучший ответ" может оказаться полезным.
    Ответ написан
    2 комментария
  • Запрет на join? Оптимизированная выборка из связи многие-ко-многим без join с параметрами из линкованных таблиц?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Они так говорят, потому что:
    1) Если вы везде используете JOIN то на большом проекте у вас перестаёт работать кеш встроенный в БД, т.к. insert или update хотя бы в одну из таблиц участниц join сбросит кеш всего запроса, а на больших проектах изменения данных идут постоянным потоком.
    2) JOIN делает жётские связи на уровне данных, это хоронит возможность оптимизации на уровне архитектуры приложения. Когда таблицы не связанны внешними ключами и запросами то мы можем перенести любую таблицу, в другую БД оптимизированную для нужных типов запросов, написать например на Си отдельный сервис/демон для этих данных. При этом нам надо будет переписать только одну сущность в приложении. В случае с разрешёнными JOIN может выясниться что переписать надо вообще всё.
    3) Существует популярный подход переваривания больших нагрузок/данных это шардинг, т.е. раскидывание диапазонов данных по разным серверам, это когда первые 10 миллионов записей лежат на одном сервере а вторые на другом, join в этом случае сделать нельзя.
    4) Нормализация, полностью нормализованная БД самая медленна(т.к. куча JOIN, каждый из них это умножение двух матриц), но зато самая компактная, полностью не нормализованная БД самая быстрая (так как всё берём одним простым запросом), но очень жирная и неприемлемо сложная в работе.

    Ваш пример очень абстрактен, если про него ясно только, что данных очень много и не известно кто и в каких условиях будет с этим работать, но скорость ответа важна, а количество запросов будет большими. (Например это API к которому сторонние люди будут писать приложения и потенциально рекламировать эти приложения по ТВ)
    То например так:
    1) Запросом c JOIN скормить данные этих двух таблиц в поисковый индекс на sphinxsearch
    2) Делаем запрос с параметрами book.param = 1 AND author.param = 2 поисковому индексу сфинкса, он возвращает нам PK ID нужных сущностей
    3) Делаем SELECT * FROM t WHERE id in(1,2,3..N)

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