• Есть ли разница для поисковой системы как написан номер запчасти?

    @Refguser
    Делаю ИМ и другие решения
    Имеет ли смысл нормализовать номер или добавлять и нормализованный и исходный варианты номеров ?

    Всего-то и нужно, что подумать о целевой аудитории. Вот как она будет искать - так и надо писать.
    А ПСам абсолютно по барабану на написание. Они мог лишь "догадываться" и подставлять в выдачу документы с разными вариантами написания.
    Ответ написан
    Комментировать
  • Есть ли разница для поисковой системы как написан номер запчасти?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    А что мешает самом посмотреть поисковую выдачу и определить наиболее популярный морфологический вариант ключа?
    https://www.yandex.ru/search/?text=%D0%B7%D0%B0%D0...
    https://www.yandex.ru/search/?text=%D0%B7%D0%B0%D0...
    Яндекс в приоритете показывает форму ключа запчасть F3A212, а не запчасти F3-A212.
    Если в поиске будут искать номер с включением символов то какой из номеров будет найден а какой нет.

    Оба.
    Имеет ли смысл нормализовать номер или добавлять и нормализованный и исходный варианты номеров ?

    Имеет смысл делать как у конкурентов из топа.
    Ответ написан
    Комментировать
  • Как найти бекдор на сервере Линукс?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    1) Переустановите сервер;
    2) Разрешите доступ к серверу по ssh только по ключу.

    Как найти бекдор на сервере Линукс?
    100 %-го варика нет. Можно конечно еще один точно такой сервер создать. Взять с него список файлов (вместе с его хешем) и сравнить со списком зараженного. Но оно того не стоит, лучше переустановите.
    Ответ написан
    7 комментариев
  • Вывод из двух таблиц sql?

    iResource
    @iResource
    Разработчик IR XML2Ozon
    Как вариант:
    SELECT m.id_sms, u.name as id_sender, m.message, m.id_recipient
    FROM messages m
    LEFT JOIN users u ON m.id_sender = u.id
    ORDER BY m.id_sms DESC
    LIMIT 100
    Ответ написан
    6 комментариев
  • Как проверить нахождение юзера на определённом url с помощью php?

    iResource
    @iResource
    Разработчик IR XML2Ozon
    Вообще - зависит от CMS.
    Но есть универсальные варианты.
    Например, заглянуть в супер-глобальный массив $_SERVER
    echo '<pre>'; print_r($_SERVER); echo '</pre>';

    И обратить внимание на нечто вроде $_SERVER['REQUEST_URI']
    Ответ написан
  • Почему не устанавливается YAML в Perl?

    @s1dney
    Can't exec "make": No such file or directory at /usr/share/perl/5.14/CPAN/Distribution.pm line 2078.

    Я чисто поиском нашел про make
    Вы правда думаете, что эту простыню кто-то будет читать?
    Ответ написан
    Комментировать
  • Как прокачать регулярное выражение?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    ну ты чОткий пацан, а через DOM дерево никак? или там strip_tags ?

    такое делается в два действия - сначала между тегами, потом чек на валидность

    попытка запихнуть в регулярку приводит к неизбежному БУМЦ рано или поздно
    Ответ написан
    2 комментария
  • Откуда появился логотип Хабр Q&A?

    glaphire
    @glaphire
    PHP developer
    "Хабр Q&A" как название не отображает сути сервиса, звучит как раздел "F.A.Q". "Toster.ru" закрепился как бренд и теперь потеряет большую долю своей репутации
    Ответ написан
    9 комментариев
  • Несколько условия в onclick?

    @dasauser
    Пишу на PHP
    element.addEventListener('click', function() {
        //code
    });
    Ответ написан
    Комментировать
  • Deep linking в Telegram?

    @Mysterion
    $command = '/start 123456 dsad';
    $regex = '/(\/start\s)(\d+)/';
    if(preg_match($regex, $command, $match)) {
        $num = $match[2];
        echo $num; // 123456
    }
    Ответ написан
    Комментировать
  • Как правильно делать deploy с помощью docker registry?

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

    Давайте разберемся с инструментами и их предназначением, которые Вы используете:
    • Комманда docker - это консольный интерфейс (CLI) для работы с Docker
    • docker build создает по заданному Dockerfile образ контейнера
    • docker tag присваивает указанному образу указанный тег (опция -t для build делает то же самое)
    • docker pull скачивает указанный образ из удаленного регистра на текущую машину
    • docker push заливает указанный образ в удаленный регистр
    • docker run запускает новый контейнер из указанного образа
    • docker ps выводит список текущих "бегущих" контейнеров

    Команда docker не жонглирует файлами, она жонглирует образами и контейнерами, а они от нас абстрагированы Docker'ом, как что-то эфемерное. То есть выполняя комманду docker pull Вы не скачиваете образ в ту папку, где выполняете команду, и уж точно не скачиваете какие-либо файлы. Все что Вы делаете этой командой - это скачиваете образ в локальное хранилище Docker'а, дабы Docker daemon мог запустить контейнер на основании этого образа.

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

    У Вас в манифесте указана директива build:. Таким образом docker-compose пытается сначала собрать контейнер, вместо того, чтобы просто запустить его из образа.

    Касательно совета docker-compose.yml под каждый env, все правильно советовали. Именно так это и задумывалось. Вы в манифесте указываете отнюдь не разные окружения (development, production), а набор контейнеров, которые должны бежать в одной связке одной логической единицей (концепция POD'ов). Ничего не запрещает делать и так, как сделали Вы, но это сродни использованию дуршлага в роли миски для еды: сегодня Вы нормально из него наворачиваете пельмени, а завтра супчик в нем уже куда-то не туда утекает.

    Воркфлоу в Вашем случае можно организовать следующим образом:
    1. На dev-машине у Вас один docker-compose.yml, согласно которому контейнер перед запуском собирается из сорцов.
    2. Когда у Вас готова новая версия приложения, Вы его собираете через docker build, присваиваете ему номер версии через docker tag и отправляете в удаленный регистр образов через docker push.
    3. На prod-машине у Вас отдельный docker-compose.ymlв котором указано запускать конкретную версию образа (и никаких build). Новая версия приложения - меняем тег образа в манифесте и перезапускаем контейнеры. При выполнении docker-compose образ автоматически скачается перед запуском, если его нет локально. Если же Вы обновили образ конкретной версии, которая уже была скачана ранее, то да, нужно выполнить docker pull перед стартом, дабы скачать новый образ.


    Дополнительный совет:
    Сборку образа и его заливку в удаленный регистр часто удобно автоматизировать с помощь Makefile'ов.
    Ответ написан
    3 комментария
  • Почему не так часто используют JS фреймворки?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    очему так мало сайтов в рунете используют данные фреймворки?


    потому что это сайты. Потому что поисковики должны индексировать контент. Потому что это рунет. Потому что 90% разработчиков не достаточно квалифицированы что бы эффективно делать Single page Application-ы. Потому что 80% рунета сделано на wordpress/joomla/dle/etc. Ну как-то так.

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

    Для всего этого есть решение - серверсайд пререндеринг. Делают его обычно либо при помощи сторонних решений в клауде (что обходится обычному блогеру/интернет магазинчику не дешево или тупо много рисков), которые так же не всегда безболезненно юзаются, так и на сервере средствами node.js. Причем популярность этот подход начал набирать в 2013-ом году с появлением react и концепцией виртуального дома (использовали и раньше, тот же твиттер). Причем в том же react это все еще не самая тривиальная задача сделать все так что бы небыло боли. Пока лидером в плане безболезненной реализации является Angular2, которому помогает dependency injection и километры абстракций. Но только он еще не вышел даже в релиз (хотя все уже фигачат на бете). Ну и опять же на "шаред хостинге" это не взлетит (с оговорками опять же, я встречал те где это можно провернуть без боли).

    С каждым же годом количество SPA увеличивается. Со временем большая часть людей перейдут на похожие подходы. Опять же есть еще здравый смысл. Например пилить лэндинг на всяких там реактах или ангулярах или vue - это оверхэд. Тут и ванильного джаваскрипта хватит.
    Ответ написан
    2 комментария
  • Как дождаться ответа функции?

    @vesulebiv
    Нельзя вернуть из функции результат асинхронной операции, т.к. она происходит в отдельном потоке.
    Передаввайте callback или используйте промисы.
    Ответ написан
    2 комментария
  • Как правильно объединить таблицу саму с собой?

    BuriK666
    @BuriK666
    Компьютерный псих
    SELECT status, COUNT(id) FROM table GROUP BY status;
    Ответ написан
    3 комментария
  • Как правильно работать с JSON в JAVA?

    Модули из драйвера монги хороши.
    Ответ написан
    Комментировать
  • Как правильно работать с JSON в JAVA?

    EugeneP2
    @EugeneP2
    Java Dev
    gson от google, проще не бывает )
    google-gson

    Gson gson = new GsonBuilder().create();
    
    String json = gson.toJson(someObject);
    
    SomeObject newso = gson.fromJson(json, SomeObject.class);
    Ответ написан
    3 комментария
  • Как правильно работать с JSON в JAVA?

    DigitalSmile
    @DigitalSmile
    http://brainstorage.me/digitalsmile
    М.б. подойдет Jackson?
    Ответ написан
    Комментировать
  • Выбор средств для разработки высоконагруженного веб приложения?

    viktorvsk
    @viktorvsk
    системы (веб сервис), которая должна выдерживать высокие нагрузки и быть масштабируемой.

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

    Насколько такой вариант будет выдерживать высокие нагрузки?

    насколько будет быстро работать, учитывая динамическую типизацию


    Это называется преждевременной оптимизацией

    Вам не могут ставить требования "сделать производительную и масштабируемую систему". Вам могут сказать соотношение чтения\записи в базу, ожидаемый RPS (стабильный и пиковый), максимальное время ответа на запрос...

    Узнать, что будет производительным, а что нет - нужно с помощью профайлера, в крайнем случае - по бенчмаркам. Но никак не задавая вопросы на форумах - просто никто не имеет физической возможности дать объективный ответ на абстрактный вопрос.

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

    Если у вас есть опыт с джавой в вебе - делайте на джаве.

    Есть опыт с джаваскриптом - делайте на основе веб-сервисов.

    У каждого подхода есть плюсы и минусы и обычно они субъективны.

    Лучше потратить 2 месяца на прототип и потом - месяц на переписывание, чем сначала 3 месяца думать и делать - а потом понять, что нужно было двигаться в другую сторону.

    Описаны ~80% случаев и ваш с вероятностью > 90% попадает именно в эту область.
    Ответ написан
    1 комментарий
  • Возможно-ли изменить файл задним числом в linux?

    svfat
    @svfat
    ☺Нужен VPS? Два месяца бесплатно. Смотри профиль☺
    $ man touch
    ...
           -d, --date=STRING
                  parse STRING and use it instead of current time
    ...

    Короче: touch -d 20140731 /path/to/file делает то, что вы описали
    Ответ написан
    Комментировать