• Как отследить блокировку бота пользователями в телеграмме?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Приходит update со следующими ключевыми полями:
    {
         "my_chat_member": {
             "chat": {
                 "id": 5181600575,
             },
             "old_chat_member": {
                 "status": "member"
             },
             "new_chat_member": {
                 "status": "kicked",
             }
         }
     }
    Ответ написан
    2 комментария
  • Удобный инструментарий для работы с сервером на Linux?

    @Drno
    mc - как Far
    если чисто текс редактор - nano
    Ответ написан
    Комментировать
  • Пропали настройки системы в Ubuntu, как вернуть?

    @Sergey799
    sudo apt-get install gnome-control-center

    sudo apt-get install unity-control-center
    Ответ написан
    Комментировать
  • Call to undefined function mb_orig_strpos?

    @sanshung
    1С-Битрикс программист
    1. посмотрите в сторону php.ini или .htaccess
    mbstring.func_overload = 2
    2. Отключите проактивный фильтр
    3. mbstring.func_overload = 0
    4. обновите битрикс
    Ответ написан
    Комментировать
  • Почему Front end разработчику платят так же, а то и больше, чем Full-stack разработчику?

    @HellWalk
    Потому что на рынке ценятся крутые специалисты. А крутым специалистом можно быть только в узкой области.

    Фулл-стек - это путь вечного "немного во всем"

    Говорю это, как человек, который входил в web-разработку "веб-мастером" - это еще шире, чем фулл-стек - где ты и дизайном занимаешься, и наполнением, и SEO - лютый список обязанностей, с нулевой ценностью на рынке труда по итогу.

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

    Написал довольно много различных парсеров и автоматизаций веб разной сложности, и могу сказать, что единственный вариант - это не публиковать информацию вообще. Думаю следующее поможет отбить желание парсить сайт или как минимум повысит стоимость разработки\поддержки парсера:
    1. Система мониторинга поведения пользователя (движение мышки, координаты нажатия на кнопки и т.п.) для того чтобы вычислять ботов.
    2. Не использовать Id и name или другие атрибуты, по которым можно вычислить контент.
    3. Обфусцировать СSS и делать имена классов динамическими.
    4. Динамически добавлять различный мусор в разметку.
    5. Использовать веб-фреймворк, и не светить методы наружу.
    6. Использовать капчу, от разных вендоров и с динамически генерируемым url, причём загружать её так, чтобы её нельзя было вытащить из кэша браузера (от перехвата запроса это не спасёт, но жизнь автоматизаторам подпортит).
    7. Переодически менять вёрстку.

    Загружать контент через Ajax я бы не рекомендовал: перехватить реквест от браузера не такая уж большая проблема, зато сразу сужается область поиска контента.
    Ответ написан
    Комментировать
  • Как организовать защиту от парсинга сайта?

    @starosta6123
    1. Сайт изначально предназначен для публикации, то есть он открыт.
    2. Если вы не хотите чтобы информация была открыта, не публикуйте.

    Из 1 пункта следует, что нет достаточных средств для защиты от парсеров.
    Вопрос только в том, на сколько вы готовы и можете усложнить жизнь для парсеров.
    А нужно ли это? Может вы - "неуловимый Джо"?
    Все что может прочитать и распознать человек (а ведь именно для людей и делается сайт?) может быть воспроизведено. В части, где парсинг может быть автоматизирован, он будет автоматизирован.
    Сейчас существуют мощные парсеры Яндекса и Гугла. Если они ваш сайт не смогут разобрать, то и в индексе его не будет, значит полезная информация не дойдет до конечного пользователя.
    А тот, кто захочет, ее скопирует, если информация очень нужна. Если даже вы представите в виде мозаики из картинок и кусков, даже если зашифруете, но информация на экране должна все равно быть читабельной, а значит простой принтскрин и распознавание в FineReader будет быстрее, чем вы напишите защиту от него...

    Бросьте это занятие!

    Не существует защиты созданной человеком, которую не возможно сломать, вопрос времени...
    Единственный путь, это шифрование с выдачей ключа клиенту. Но клиент - человек не надежен, и информация уплывет, вопрос цены!

    И еще раз бросьте это!

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

    Последний совет: бросьте это!

    Единственное что может вам помочь, это не раскрывать полностью всю информацию о предмете, или разделить на несколько частей, но при этом не должно быть неудобства для посетителя. К примеру, скройте "количество зубцов в шестеренке", любую ключевую информацию, без которой "самолет не взлетит".

    А если хотите поиграться, то пришла в голову идея: перемешивание по определенному алгоритму текста, который потом восстанавливается, применение стилей для скрытия "фальшивых" слов или фраз. Например, задать стиль, который скрывает каждое второе предложение или слово. Но к сожалению, это ломается на ура! Но доставит радости для взломщиков :-)

    Извините, за столь большой сумбур!

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

    2. Верстка. Не знаю про бан от поисковиков, но это тоже ломается. Просто убираете теги и все. Просто в парсер добавляется "умный" фильтр. Можно конечно где-то картинку заменить фоном, или часть текста картинкой, но и на это можно сделать разборщик.

    3. Блокировка по IP не прокатит, так как могут пострадать реальные люди, достаточно применять динамический IP.

    А вообще, если хотите спастись от простых парсеров, то комплекс мер может помочь. Так же могу натолкнуть на идею, того, что парсеры обычно очень активны, и по количеству запросов с одного IP, по USER_AGENT, и другим меткам, а так же по отсутствию javascript, по обработке тега <МЕТА> redirekt.info/article/redirekt-na-html-s-zaderzhko... (отложенный редирект) и другим признакам. Можно запихнуть скрытую картинку (style="display: none"), большинство парсеров ее могут дернуть (зависит от настроек).

    В общем, можно поставить задачу в другом ключе: "Расстановка ловушек для парсеров". То есть ловить на том, чего обычные люди и браузеры делать не будут. Например, заполнять "скрытое поле пароль". Удачные ловушки дадут вам возможность выявить подставных, но лучше делать несколько проверок, а то можно и реального пользователя забанить. А я бы не стал банить, а сливал бы немного или частично измененную инфу. Эта инфа может стать маркером для выявления того, кто действительно желает с вас "слить".

    Все, удачи!
    Ответ написан
    4 комментария
  • Почему не работает autoplay в html5 video в хроме?

    Get-Web
    @Get-Web Куратор тега HTML
    Front-End Developer
    Можно запустить только без звука

    <video id="video_background" preload="auto" no-controls autoplay loop playsinline muted >
          <source src="video/bt-1400.mp4" type='video/mp4' />
        </video>
    Ответ написан
    3 комментария
  • Bootstrap-Vue - В чём фишка данного симбиоза?

    copist
    @copist
    Empower people to give
    Расскажите плиз о технологии, и чем развёрнутей, тем лучше.

    Вот захотел ты сделать сайт SPA или PWA с любимой тебе вёрсткой на базе Twitter Bootstrap и любимой библиотеки Vue. Сверстал. Поповеры не появляются, дропдауны не выпадают, модалки не открыватся, формы не валидируются, клики не работают.

    Оригинальный Twitter Bootstrap имеет поддержку интерактивных элементов на Javascript. Реализовано это на библиотеке jQuery. Если делаешь на Vue, придётся подключать ещё и jQuery, что лишняя библиотека на 100+ килобайт, что, конечно, не катастрофа (пока ты не на мобилке).

    Vue работает с состояниями привязывает данные к отображению, а jQuery работает с DOM и событиями. Это вопрос производительности. Работа JQuery начитается когда загружен и распарсен JS и HTML. Работа Vue начинается в тот момент, когда загружен и распарсен JS, то есть чуть раньше. jQuery модифицирует DOM на лету, перестраивая текущий документ. Vue работает с shadow DOM, а затем подсовывает уже готовую интерактивную страницу в пустой документ, что быстрее (разница в секунды на десктопе, десятки секунд на м...).

    Vue реализует компонентную парадигму. Куски страницы являются изолированными кусочками кода (HTML CSS JS), которые цепляются между собой динамически, а обмениваются данными через аттрибуты и события. Предположим, что вы решили следовать компонентной парадигме, тогда согласно вот такому примеру нужно будет увязать самостоятельно все интерактивные компоненты. Компонента-кнопка. Компонента-поле ввода. Компонента-форма. Компонента-контейнер. Получается около 50 компонент. Для некоторых надо будет написать логику на jQuery. Если посмотреть на код jQuery этих микрокомпонент, то он окажется несложный, его вполне можно переписать на Vue. Ну там класс заменить или клик отработать. Когда от кода jQuery не останется следа, его можно будет из проекта удалить.

    И вот получается Bootstrap-Vue

    На компоненты побили. От Jquery избавились. Написано в единой парадигме. Работает быстрее.

    Добавляем тот факт, что в Vue можно не импортировать компоненты, которые не нужны (например, я не работаю с дропдаунами и модальным окнами) и код становится меньше, грузится быстрее, работает быстрее.

    Так же будет Не лишним оценить технологию: плюсы, минусы, стоит ли вообще с этим работать ...

    Это сам изучай и сравнивай. Навыки и опыт воздушно-капельным и через Internet не передаётся
    Ответ написан
    4 комментария
  • Геокодер Yandex. Как получить ближайшее метро от адреса на php?

    youmixx
    @youmixx Автор вопроса
    PHP Developer
    Нашёл решение. Касаемо Ирана, координаты на карте просто не правильно воспринимались (там было 37.611347,55.760241, а надо было 55.760241,37.611347 то-есть поменять местами, а так всё хорошо).

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

    $address = 'Самара,улица+22+Партсъезда,+15';
    		$parameters = array(
    		  'apikey' => 'token',
    		  'geocode' => $address, # Самара,улица+22+Партсъезда,+15
    		  'format' => 'json'
    		);
    
    		$response = file_get_contents('https://geocode-maps.yandex.ru/1.x/?'. http_build_query($parameters));
    		$obj = json_decode($response, true);
    
    		$cord = str_replace(" ", ",", $obj['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['Point']['pos']);
    		$parameters = array(
    		  'apikey' => 'token',
    		  'geocode' => $cord,
    		  'kind' => 'metro',
    		  'format' => 'json'
    		);
    
    		$response = file_get_contents('https://geocode-maps.yandex.ru/1.x/?'. http_build_query($parameters));
    		$obj = json_decode($response, true);
    
    		$metro = $obj['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['name'];
    		echo $metro;
    Ответ написан
    Комментировать
  • Как записать файл в свойство элемента инфоблока битрикс?

    babarun
    @babarun Куратор тега 1С-Битрикс
    Безумный план моих идей в руках больных людей
    a. В св-во передаёте массив
    CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/image.gif")


    или

    b.1. Сохраняете файл:
    $ID = CFile::SaveFile()
    dev.1c-bitrix.ru/api_help/main/reference/cfile/sav...

    b.2. Полученный ID файла сохраняете в св-ве ИБ

    или

    с. Самый простой вариант, затрагивающие только св-во.
    $arFile = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/image.gif");
    CIBlockElement::SetPropertyValueCode($ELEMENT_ID, "picture", $arFile);
    Ответ написан
    2 комментария
  • Как русифировать сообщения валидации и др. на Yii2?

    @PapaStifflera
    Родился, вырос...
    В конфиге приложения пропишите русский язык.
    Ответ написан
    Комментировать
  • Почему сама регулируется яркость экрана?

    @positronium
    Lenovo Z50 - зайти в параметры графики Intel -> Электропитание -> Выбрать "Работает от батареи" -> пункт "Технология энергосбережения дисплеев".
    Ответ написан
    2 комментария