• Есть ли событие createElement или как отследить динамическое добавление элемента в DOM?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Ответ написан
    Комментировать
  • Как лучше выполнить выборку, двойное условие в JOIN?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    SELECT DISTINCT CountryFrom.Name, CityFrom.Name, CountryTo.Name, CityTo.Name
      FROM Line
      INNER JOIN City AS CityFrom ON Line.CityFromID = CityFrom.ID 
      INNER JOIN Country AS CountryFrom ON CityFrom.CountryID = CountryFrom.ID 
      INNER JOIN City AS CityTo ON Line.CityToID = CityTo.ID 
      INNER JOIN Country AS CountryTo ON CityTo.CountryID = CountryTo.ID
    Ответ написан
    2 комментария
  • Starlink от SpaceX - прощай звездное небо, кошмар астронома?

    @bkosun
    Пользователи Twitter уже предложили Илону Маску модифицировать более поздние модели спутников так, чтобы они отражали меньше света. На это глава SpaceX ответил, что согласен с опасениями и в дальнейшем позаботится о том, чтобы спутники Starlink не влияли на работу астрономов и их альбедо уменьшат.


    https://news.mail.ru/society/37450258

    UPD:

    There are already 4900 satellites in orbit, which people notice ~0% of the time. Starlink won’t be seen by anyone unless looking very carefully & will have ~0% impact on advancements in astronomy. We need to move telelscopes to orbit anyway. Atmospheric attenuation is terrible.
    https://pbs.twimg.com/media/D7jcE42UYAE26ZB.jpg

    https://twitter.com/elonmusk/status/1132897322457636864

    If we need to tweak sat orientation to minimize solar reflection during critical astronomical experiments, that’s easily done. Most orbital objects are close to Earth btw, as shown by this NASA density map.
    https://t.co/83MwIZAEP6

    https://twitter.com/elonmusk/status/1132902372458418176

    Agreed, sent a note to Starlink team last week specifically regarding albedo reduction. We’ll get a better sense of value of this when satellites have raised orbits & arrays are tracking to sun.

    https://twitter.com/elonmusk/status/1132908689860415488
    Ответ написан
    2 комментария
  • Можно ли как то бороться с одинаковыми по написанию символами латиницы и кириллицы?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Нужно набрать в гугле "поиск кириллицы".
    Ваш Кэп.

    UPD
    Мда, я думал вам нужно просто в тексте увидеть визуально) Не правильно понял вопрос.

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

    Думаю, нужен хитрый алгоритм. Превосходящее число символов - верное направление. Но также, имхо, нужно учитывать процент и тип символов и порядок слов.

    Тип символов. Каждому символу ставим в соответствие число, которое означает русскость от 0 до 1. Например, Б = 1, i = 0, T = 0.5, то есть три варианта. Хотя я бы сделал исключение для пары символов Р = 0.4 и Х = 0.3. Вряд ли самолёт назовут Х320 (буква ха, хз как это звучать будет). Но это может вызвать казусы, так что решать вам. Хотя можно два массива придумать для разных случаев, но это уже сложно для понимания.

    1) Считаем средний вес символа в слове. Тут всё очевидно. Но если 0.5, то не спешим округлять, а переходим к п.2

    2) Когда вес 0.5, смотрим на предыдущее слово, если вы уверены, что это часть названия. Например, оно с большой буквы (если вы парсите цельный текст). Если у предыдущего слова вес тоже был 0.5, то тогда уже округляете текущее слово в определенную сторону.

    3) Соответственно, если три и более слова в названии, то тоже их учитываете по цепочке.

    4) Если заранее можно выделить название и быть уверенным, что все слова - его части, то можно посчитать среднюю температуру по больнице. И на её основе делать выводы о каждом слове, у которого вес 0.5.
    То есть название
    Аве Maria T100 считаем так: первое слово вес 0.66, второе слово вес 0.3, проблемы нет, а вот третье слово вес 0.5 - проблемка. Считаем среднюю по всему названию, выходит 0.44, то есть вывод, что Т - английская.

    Хотя если присмотреться, то здесь вообще хорошо бы заменить Аве на Ave, но, как писал выше, это уже другая задача. Но напишу немного про неё. Я бы на вашем месте просто делал бы русский вариант и соответствующую ему латиницу и заносил бы в базу и считал. В случае, если оба названия после приведение встречаются по 1 разу, то есть где-то привели как Аве Мария, а где-то Ave Maria, то парсер вам сигналит ошибкой, а вы уже смотрите своими глазами на название и заносите его в исключение, чтобы везде было одинаково. Также есть опечатки типа AirBus - аналогично в базу, только преобразования по регистру, и вариантов больше - все возможные комбинации, из которых для ошибки достаточно накопить два разных варианта.
    Ответ написан
    7 комментариев
  • Можно ли как то бороться с одинаковыми по написанию символами латиницы и кириллицы?

    @grinat
    Простая регулярка по диапазону символов, если код символа выше значение(по идее выше 127 идет не латиница), то менять символы по словарю.
    Ответ написан
    Комментировать
  • Почему отличаются "всего" (50350), последний id от AUTO_INCREMENT (59922) и COUNT(*) (59717)?

    d4mk0f
    @d4mk0f
    Старость - не страшно, а PHP - не смертельно.
    Дело в том, что AUTO_INCREMENT - функция используемая для генерации уникального идентификатора, который будет характеризовать новую (вставляемую строку)
    А COUNT - функция для получения количества строк в выборке.

    AUTO_INCREMENT идентификатор от последней вставленной строки будет совпадать с результатом от функции COUNT только в том случае, если из таблицы не удалялись никакие строки с данными.

    Ответ на ваш вопрос:
    Если они различаются, значит производились удаления строк из таблицы.
    Конкретно в вашем примере удалялось 59922 - 59717 = 205 записей.
    Ответ написан
    3 комментария
  • Возможно ли защитить сайт от скачивания файлов с других ресурсов?

    DVerkh
    @DVerkh
    Full Stack веб-разработчик
    Если мне не изменяет память, то это делается через .htaccess (в данном случае, пример с картинками):
    Под капот
    Options +FollowSymlinks

    #Запрещаем загрузку файлов с внешних сайтов
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www.)?site.ru/ [NC]
    RewriteRule .*.(gif|jpg|png)$ site.ru/halyavi_net.png [NC]


    Здесь site.ru - Ваш сайт.

    Можно ещё указать дружественные сайты, добавив записи:
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yandex.ru [NC]
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google. [NC]
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?друг.ru [NC]


    Прошу заметить, что можно указывать файлы любого формата:
    RewriteRule .*\.(jpe?g|bmp|gif|png|css|mov|swf|dcr|exe|rar|avi|vob|zip|pdf|txt|doc|flv|mp3|mp4)$ files/images/nohotlink.jpg [NC,L]
    Ответ написан
    Комментировать
  • Возможно ли защитить сайт от скачивания файлов с других ресурсов?

    kompi
    @kompi
    nullstack devoops
    nginx
    location ~ .(gif|png|jpe?g)$ {
         valid_referers none blocked mywebsite.com *.mywebsite.com;
         if ($invalid_referer) {
            return   403;
        }
    }
    Ответ написан
    1 комментарий
  • Как правильно сделать загрузку большой таблицы csv в MySQL средствами PHP (Request Timeout)?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    То, что Вы описали (когда в браузере "Таймаут" а скрипт продолжает работать) скорее всего связано с режимом работы PHP - [F]CGI (или подобным), в этом режиме сервер ждёт какое-то время (обычно секунд 30) ответа от CGI-сервера (PHP) и не дождавшись (точнее по истечению этого времени) выдаёт timeout (который Вы скорее всего и наблюдали).

    На мой взгляд, наиболее простое решение (которое лично я бы рассматривал в первую очередь) - удалённое подключение к БД и загрузка данных. То есть, БД на хостинге а грузите в неё данные Вы с локальной машины, из программы для администрирования БД или из того же локально запущенного PHP-скрипта, это позволит как минимум настроить любой параметр (в т.ч. таймауты, т.к. подобных настроек сделать на хостинге скорее всего нельзя), либо вообще избавиться от понятия "таймаутов" (в случае использования ПО для работы с БД).

    Альтернативный вариант - напишите скрипт, который будет загружать, например по 1000 строк из Excel'я, после чего генерировать ответ (HTML-страницу), которая будет запускать этот же скрипт, с параметром "следующие 1000 строк" и так рекурсивно, до полной загрузки данных. При особом желании можно попытаться отслеживать текущее время выполнения скрипта и при приближении к порогу - соотв. генерировать ответ (как описано выше).

    P.S. Ещё один важный момент - вставка данных в режиме "1 INSERT много VALUES" обычно работает ощутимо быстрее, чем "1 INSERT 1 строка".
    Ответ написан
    Комментировать
  • Как указать WP что такая страница существует/создать правило ЧПУ?

    Immortal_pony
    @Immortal_pony
    Вы можете управлять rewrite_rules. Примерно так:

    add_filter("query_vars", function($vars) { 
        array_push($vars, "handler");
        return $vars;
    });
    
    add_filter("rewrite_rules_array", function($rules) { 
        $newrules['custom/([0-9a-z-]{1,128})'] = 'index.php?pagename=custom&handler=$matches[1]';
        return $newrules + $rules;
    });
    
    add_action("wp_loaded", function() { 	
    	global $wp_rewrite;    
    	$wp_rewrite->flush_rules();
    });
    Ответ написан
    Комментировать
  • Как для EJS сделать обработку ошибок что бы сервер не крашился?

    kshshe
    @kshshe
    Frontend developer
    try {
        // что-то делаете
    } catch (error) {
        // обрабатываете ошибку
    }


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

    Установка:
    npm i -g forever

    Запуск сервера (вместо node server.js)
    forever start server.js
    Ответ написан
    1 комментарий
  • Почему mysqldump в cron не работает?

    BuriK666
    @BuriK666
    Компьютерный псих
    сделайте .sh файл и запускайте его.
    Ответ написан
    Комментировать