• Подскажие минималистичный движок/сервис для внутренней базы знаний компании?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Жумла 4-ая.
    Версионность, мультиязычность, права доступа, любой редактор, любые поля в материале, полностью бесплатная, есть framework и api для разработки/доработки чего угодно.
    Ответ написан
    2 комментария
  • Как сделать автозаполнение форм на другом сайта?

    deepblack
    @deepblack
    Подойдут Selenium или Puppeteer
    Естественно писать всю логику придется ручками
    Ответ написан
    2 комментария
  • Как получить объект класса stdClass у которого есть пробел в названии?

    Melkij
    @Melkij
    PostgreSQL DBA
    Часто с массивом работать удобнее. См. второй параметр json_decode.

    А так, возможно использовать синтаксис:
    $json->{'some invalid-name'}
    Ответ написан
    Комментировать
  • Как получить объект класса stdClass у которого есть пробел в названии?

    miraage
    @miraage
    Старый прогер
    <?php
    
    $rawJson = '{"response":1,"counts People":1849}';
    $jsonObj = json_decode($rawJson);
    $jsonArray = json_decode($rawJson, true);
    
    var_dump($jsonObj, $jsonArray);
    var_dump($jsonObj->{'counts People'});
    var_dump($jsonArray['counts People']);


    object(stdClass)#1 (2) {
      ["response"]=>
      int(1)
      ["counts People"]=>
      int(1849)
    }
    array(2) {
      ["response"]=>
      int(1)
      ["counts People"]=>
      int(1849)
    }
    int(1849)
    int(1849)
    Ответ написан
    Комментировать
  • Как использовать тег picture при создании адаптивных изображений?

    @IvanPsarev
    It-любитель
    Заводим тег picture внутри которого указываем дефолтную картинку:
    <picture>
        <img class="image"
          src="img/mobile.jpg"
          alt="Описание" width="260" height="260">
    <picture>

    В данном коде у нас везде просто загрузится "img/mobile.jpg".
    Как это можно улучшить? Можно использовать прогрессивные файлы изображений такие как webp (почитать про них стоит отдельно, вкратце - они меньше весят при одинаковом качестве картинки).
    Добавляем условие для показа новой картинки:
    <picture>
        <source srcset="img/mobile.webp" 
          type="image/webp">
        <img class="image"
          src="img/mobile.jpg"
          alt="Описание" width="260" height="260">
    <picture>

    Здесь, если браузер поддерживает .webp будет загружена картинка: img/mobile.webp.
    Допустим у нас есть брейкпоинт на десктоп при 768px где нам нужно показывать картинку более высокого качества (либо вообще другую). Код можно улучшить так:
    <picture>
        <source media="(min-width:768px)" 
          srcset="img/desktop.webp"
          type="image/webp">
        <source media="(min-width:768px)"
          srcset="img/picture/desktop.jpg">
        <source srcset="img/mobile.webp" 
          type="image/webp">
        <img class="image"
          src="img/mobile.jpg"
          alt="Описание" width="260" height="260">
    <picture>

    Тут мы добавили еще 2 условия: если окно шире 768px и браузер поддерживает webp - грузится desktop.webp, если не поддерживает то - desktop.jpg.
    Данную конструкцию можно еще расширить. Например мы хотим чтобы на retina-дисплеях картинки показывались в более высоком качестве. Для этого у нас должны быть копии всех наших картинок но с увеличенным в 2 раза разрешением. Например, наши картинки будут именоваться как mobile@1x.jpg (260х260рх). плюс эти же картинки, но в 2 раза большем разрешении: mobile@2x.jpg (520х520рх). Загружать их, или нет будет решать браузер, на основании данных о плотности пикселей на экрана полученных от системы (это тоже отдельная тема для обсуждения, есть статьис названием что-то вроде "Пиксель на самом деле не пиксель". Точного названия не помню, но смысл в том, что на "так называемых" Retina-дисплеях при фактическом разрешении, например, 2500х1600px браузер будет "считать", что окно шириной 1250px). Короче для "ретинизации" код нужно изменить так:
    <picture>
      <source media="(min-width:768px)" 
        srcset="img/desktop@1x.webp, img/webp/desktop@2x.webp 2x"
        type="image/webp">
      <source media="(min-width:768px)"
        srcset="img/picture/desktop@1x.jpg, img/picture/desktop@2x.jpg 2x">
      <source srcset="img/webp/mobile@1x.webp, img/webp/mobile@2x.webp 2x" 
        type="image/webp">
      <img class="image" 
        src="img/mobile@1x.jpg" 
        srcset="img/mobile@2x.jpg 2x"
        alt="Описание" width="260" height="260">
    </picture>

    Вся эта громадина читается сверху:
    - первый <source>: если ширина экрана больше 768рх, браузер поддерживает webp и плотность пикселей 2x грузится desktop@2x.webp, если плотность пикселей 1х - desktop@1x.webp
    - если webp не поддерживается, то второй <source> - все тоже самое для .jpg
    - если экран уже 768px - третий <source>
    - во всех остальных случаях и в случае если браузер не поддерживает загрузится обычный <img>.
    Нужно понимать, что для такого подхода требуется иметь для одной картинки 4 файла и это только для одной ширины экрана:
    mobile@1x.jpg, mobile@2x.jpg, mobile@1x.webp, mobile@2x.webp.
    И еще столько же для desktop.
    Вот как-то так, можно добавить еще брейкпоинт для tablet - все по примеру :)
    Ответ написан
  • Как легализовать платежи от иностранных клиентов?

    PleasantNews
    @PleasantNews
    Застрял из-за любви к острой пище в Бангкоке
    Вроде налоги платят тогда, когда не платить нельзя - т.е. видно по транзакциям на счёте в Банке. Кстати посмотрите на бурж биржи фрилансеров - там вообще никто не парится с налогами, так как ваши 500-600 в месяц погоды не сделают.
    Плюньте и работайте дальше, так как если пойти в налоговую и показать им прибыль из-за бугра, значит на их языке, что вы получаете значительно больше, но хотите прикинуться таким студентом с полуштукой баксов в месяц.
    Совет - выводите на какую нибудь карту и снимайте свои заработанные деньги. Не тот размах
    Ответ написан
    Комментировать
  • Какие есть средства мониторинга соединений nginx?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    Стандартный stub_status крайне убогий, в качестве альтернативы рекомендую https://github.com/vozlt/nginx-module-vts.
    Ответ написан
    3 комментария
  • Какие есть средства мониторинга соединений nginx?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    2 комментария
  • Разработчик недисциплинированно трекает время. Что делать?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Как на счет того чтоб выкинуть из рабочего процесса всю чепуху, которая не способствует созданию продукта?
    Но если уж так хочется, почему бы самому тогда не трекать, по факту сдачи задач. Трекайте просто перфоманс разработчика в целом (сколько тасок сдал за неделю/месяц).
    Разрабам этим трекинг объективно не нужен, он ни о чем не говорит и ни на что не влияет.
    Ответ написан
    1 комментарий
  • Разработчик недисциплинированно трекает время. Что делать?

    @zakirovdamir
    Ооооо, да у нас тут менеджер с претензиями))) нужно принимать результат, а не контролировать процесс и заниматься прочим мозголюбством а если не знаешь, сколько примерно времени нужно выделять разрабу на ту или иную задачу, чтобы не трястись с секундомером за его спиной — то это не его проблема, а твой косяк
    Ответ написан
  • Разработчик недисциплинированно трекает время. Что делать?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Вы рассмотрели возможные причины "со своей колокольни" и сами дали на них ответ. Что показывает Ваш авторитарный (директивный) стиль управления.
    Постарайтесь быть ближе к подчинённым, разговаривайте с ними, вникайте в их проблемы. Тогда они сами расскажут - почему они не трекают, а Вы поймёте как это решить.
    Сейчас у Вас нет обратной связи.
    Ответ написан
    Комментировать
  • Разработчик недисциплинированно трекает время. Что делать?

    Xuxicheta
    @Xuxicheta
    инженер
    Не выносить мозги разработчику своим трекингом и дать ему спокойно работать.
    Не справляется - увольняйте.
    Ответ написан
    9 комментариев
  • Разработчик недисциплинированно трекает время. Что делать?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    А зачем вообще трекать время? Уложился в дедлайн - молодец. Не уложился - разбор полётов. Хронически не укладывается - понижение грейда или увольнение.
    Ответ написан
    21 комментарий
  • На чем делать поиск по большой базе документов?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Эластик для поиска это почти всегда хорошее решение, но если есть деньги на algolia то как минимум на старте лучше взять ее. Готовить эластик надо уметь и там появляется много интересных процессов с трансформацией схемы данных. И да, если вы найдете такого дешевого админа, который умеет держать что-то на равне с Algolia .... успехов в общем)
    Ответ написан
    8 комментариев
  • Какой алгоритм движения курьеров для доставки из ресторанов?

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

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

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

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

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

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

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

    Короче, добро поджаловать в логистический адок.
    Ответ написан
    2 комментария
  • Стоит ли переходить на Percona server с MariaDB/MySQL?

    Для начала можно обновить до новой версии 10.4
    Версия 5.5 уже давно выпущена была.
    Если хочется оптимизировать, то это надо делать на запросах, при помощи проверки Slow Queries, EXPLAIN и мониторинга.
    Ответ написан
    Комментировать
  • Стоит ли переходить на Percona server с MariaDB/MySQL?

    neuotq
    @neuotq
    Прокрастинация
    Вопрос не тривиальный и переход должен делать специалист.
    Выбор всего движа должен происходить в том числе из реалий вашего бизнеса/проекта, команды специалистов и прочего.
    Таким образом, если сейчас всё работает и устраивает и вы сами лично не видите плюсов/минусов, и даже не сильно разбираетесь в настройках, то я бы рекомендовал сосредоточится на улучшении, развитии других частей проекта, в которых вы в теме.
    А для переезда, масштабирования БД выделить бюджет на специалиста, когда бюджет появится. А так, работает не трогай, тк переезд это всегда подводные камни, время, нервы и возможные простои. Оно вам надо? Я думаю нет.
    Поэтому не спешите.
    И в первую очередь составьте список, лёгкое ТЗ, проблем и задач администрирования БД в вашем случае. Затем его можно наложить на ваш текущий движ, и может быть всё не так уж и плохо. И скорее всего, есть много инструментов облегчающих, автоматизирующих работу и в MariaDB.
    А может вам вообще в самом sql функций не хватает, может вам нужен PostgreSQL?
    Нет, так дела не делаются, вопрос побольшому счёт вообще бессмысленный, разве что в комменты вы ждете любителей холиваров ради холиваров.
    Ответ написан
    1 комментарий
  • Какая правильная архитектура для веб приложения?

    jt3k
    @jt3k
    Фронтендер, люблю работать и получать удовольствия
    Из вопроса не понятно какую проблему с аналитикой вы решаете
    Аналитика ведь это отдельный сервис такой как Гугл аналитика, или Яндекс метрика.

    Разместите на клаудфлэре и этого должно быть достаточно.
    Ответ написан
    Комментировать