• Как сделать появление меню при наведение?

    Lara164
    @Lara164
    начинающий верстальщик html, css
    Можно добавить еще обертку, которая и будет показываться при наведении, а этой оберке задать верхний паддинг . Внутри этой обертки разместите этот блок с меню. То есть : есть невидимый див, который показывается по ховеру и внутри него меню от верха отодвинутоверхним паддингом
    Ответ написан
    Комментировать
  • Как передавать информацию с ардуино/есп на компьютер?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дружище за последние 30 лет ничего не изменилось.
    Программы взаимодействуют по TCP/IP.
    Ответ написан
    4 комментария
  • Что не так с RegExp Javascript?

    Henxed
    @Henxed
    function getTestIndex(domain, string) {
        const regex = new RegExp(`^(?:@|(?:https?://)?(?:www\\.)?${domain}/?(\\w+)?)$`);
        const result = regex.exec(string);
        return result ? result[1] : null;
    }
    
    console.log(getTestIndex('testdomain.com', 'https://testdomain.com/testindex'));

    Были лишнее скобки и нехватка слешов в регулярке. Плюс лучше иметь проверку, что если не совпадает, то выкидывало null
    Ответ написан
    1 комментарий
  • Нужно написать скрипт, который добавляет текст в предпоследнюю строку. Как это реализовать?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    if [ ... ]; then
        head -n -1 /path/to/filename >newfile
        echo "added text" >>newfile
        tail -n 1 /path/to/filename >>newfile
    fi
    Ответ написан
    Комментировать
  • Как бороться с deadlock?

    iMedved2009
    @iMedved2009
    Не люблю людей
    update "notifications"
    set "is_read"    = 1,
        "updated_at" = 2023 - 02 - 01 12:26:05
    from ( select id from "notifications" where “client_id” = 126473 and "notifications"."client_id" is not null order by id for update) as t
    where "notifications"."id" = t.id ;


    Дедлоки при пакетных апдейтах.
    Ответ написан
    9 комментариев
  • Как в vs code можно посмотреть отличия в строках кода файлов?

    Dimox
    @Dimox
    Верстаю сайты
    1. Открыть оба файла в редакторе.
    2. Нажать Ctrl + Shift + P.
    3. Набрать "compare", нажать на "File: Compare Active File With..." и выбрать второй файл.
    Ответ написан
    Комментировать
  • Ошибка: sqlite3.OperationalError: no such column: telegram_id: Как исправить?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Добавь новую колонку telegram_id.

    А этот код скорее всего не работает
    CREATE TABLE IF NOT EXISTS users
    потому что он опционален.

    Ты сам себя перехитрил :)
    Ответ написан
    Комментировать
  • Какую лучше использовать субд для интернет магазинов на python?

    Hivemaster
    @Hivemaster
    Админ, который хочет программировать
    В любой непонятной ситуации используй PostgreSQL.
    Ответ написан
    Комментировать
  • Как массово заполнить таблицу?

    Adamos
    @Adamos
    Берешь блокнот, умеющий регулярки, превращаешь (\w+) (\d+) в ('$1', $2),.
    Добавляешь первой строчкой команду INSERT - и загоняешь этот запрос в базу через то, через что с ней в принципе общаешься.
    Ответ написан
  • Как узнать курс валюты в командной строке терминала?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    у ЦБР есть официальная страничка где можно узнать как получить нужные данные

    если коротко, то будет примерно так:
    $ curl -s "http://www.cbr.ru/scripts/XML_daily.asp" | enconv -x UTF-8 | xq -r '.ValCurs.Valute[] | select(.CharCode == "USD" or .CharCode == "EUR") |.CharCode + " " + .Value'
    USD 74,7087
    EUR 79,5716


    с помощью curl качаем нужные данные в формате xml
    далее переводим с помощью утилиты enconv в обще нормальную кодировку
    затем с помощью утилиты xq разбираем полученные данные
    xq входит в пакет yq которая по сути является надстройкой над jq, то есть здесь xml транслируется в json а после обрабатывается утилитой jq

    вот пример вывода всех доступных курсов валют в отформатированном виде с помощью утилиты csview
    curl -s "http://www.cbr.ru/scripts/XML_daily.asp" | enconv -x UTF-8 | xq -r '.ValCurs.Valute[] | .CharCode + " " + .Nominal + " " + .Value' | sort | awk 'BEGIN{print "Code Nominal Value"}{print}' | csview -d' '

    вывод:
    ┌──────┬─────────┬─────────┐
    │ Code │ Nominal │ Value   │
    ├──────┼─────────┼─────────┤
    │ AED  │ 1       │ 20,3400 │
    │ AMD  │ 100     │ 19,1325 │
    │ AUD  │ 1       │ 51,0933 │
    │ AZN  │ 1       │ 43,9463 │
    │ BGN  │ 1       │ 40,7332 │
    │ BRL  │ 1       │ 14,3646 │
    │ BYN  │ 1       │ 26,6998 │
    │ CAD  │ 1       │ 55,2743 │
    │ CHF  │ 1       │ 80,5485 │
    │ CNY  │ 1       │ 10,8398 │
    │ CZK  │ 10      │ 33,5739 │
    │ DKK  │ 1       │ 10,7002 │
    │ EGP  │ 10      │ 24,4263 │
    │ EUR  │ 1       │ 79,5716 │
    │ GBP  │ 1       │ 90,6889 │
    │ GEL  │ 1       │ 28,3363 │
    │ HKD  │ 10      │ 95,3890 │
    │ HUF  │ 100     │ 20,7001 │
    │ IDR  │ 10000   │ 49,2185 │
    │ INR  │ 100     │ 90,1603 │
    │ JPY  │ 100     │ 55,4219 │
    │ KGS  │ 100     │ 85,4595 │
    │ KRW  │ 1000    │ 57,2524 │
    │ KZT  │ 100     │ 16,7640 │
    │ MDL  │ 10      │ 39,8181 │
    │ NOK  │ 10      │ 72,3823 │
    │ NZD  │ 1       │ 46,5734 │
    │ PLN  │ 1       │ 16,7565 │
    │ QAR  │ 1       │ 20,5244 │
    │ RON  │ 1       │ 16,1333 │
    │ RSD  │ 100     │ 67,8622 │
    │ SEK  │ 10      │ 72,2507 │
    │ SGD  │ 1       │ 55,7819 │
    │ THB  │ 10      │ 21,5775 │
    │ TJS  │ 10      │ 69,2908 │
    │ TMT  │ 1       │ 21,3453 │
    │ TRY  │ 10      │ 39,6051 │
    │ UAH  │ 10      │ 20,2313 │
    │ USD  │ 1       │ 74,7087 │
    │ UZS  │ 10000   │ 66,0995 │
    │ VND  │ 10000   │ 31,6013 │
    │ XDR  │ 1       │ 99,6569 │
    │ ZAR  │ 10      │ 40,6808 │
    └──────┴─────────┴─────────┘


    ну или конкретно для указанных валют
    $ curl -s "http://www.cbr.ru/scripts/XML_daily.asp" | enconv -x UTF-8 | xq -r '.ValCurs.Valute[] | select(.CharCode == "USD" or .CharCode == "EUR") |.CharCode + " " + .Nominal + " " + .Value' | awk 'BEGIN{print "Code Nominal Value"}{print}' | csview -d' '
    ┌──────┬─────────┬─────────┐
    │ Code │ Nominal │ Value   │
    ├──────┼─────────┼─────────┤
    │ EUR  │ 1       │ 79,5716 │
    │ USD  │ 1       │ 74,7087 │
    └──────┴─────────┴─────────┘
    Ответ написан
    3 комментария
  • Как достать из OpenStreetMap все населённые пункты с населением более 4000?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Яндекс выкладывал данные для некоммерческого использования
    https://yastatic.net/s3/milab/2021/toponyms/data/R...
    Ответ написан
    Комментировать
  • Есть ли бесплатное API для получения всех улиц и домов конкретного города?

    Что мешает поднять на Postgis открытые данные из Openstreetmap. И там считать все что хочется.
    Ответ написан
    Комментировать
  • Есть ли бесплатное API для получения всех улиц и домов конкретного города?

    @alexalexes
    https://fias.nalog.ru/Updates
    Тут есть полный архив адресов и разностные файлы на определенную дату.
    Ответ написан
    Комментировать
  • Как сгенерировать значение от 0001 до 9999?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    INSERT INTO `table` (`WebsiteId`)
      WITH RECURSIVE `cte` (`num`) AS (
        SELECT 1 
        UNION SELECT `num` + 1
          FROM `cte`
          WHERE `num` < 9999
      )
      SELECT `num`
        FROM `cte`
    Ответ написан
    1 комментарий
  • Как пустить часть трафика через VPN?

    Vindicar
    @Vindicar
    RTFM!
    Есть два подхода. В обоих случаях тебе нужен список заблокированных IP, его можно взять на антизапрете, например.
    Дальше вопрос, как пускать трафик.
    1. На хабре был материал про динамическую подгрузку маршрутов через BGP. Плюс - работает с любыми протоколами, и не требует дополнительной настройки со стороны проксируемого ПО. Минусы - ощутимо сложнее в понимании, на мой взгляд, да и с кроссплатформенностью могут быть проблемы. В статье приведена реализация на роутере Mikrotik.
    2. Использовать файл proxy.pac. Его можно сгенерировать скриптом типа такого:
    #!/bin/bash
    #!/bin/bash
    DNS_SERVER=8.8.8.8
    BLACKLIST_URL="http://antizapret.prostovpn.org/iplist.txt"
    #куда класть файл proxy.pac
    PACDIR=/var/www/html
    TMPLIST=/tmp/iplist.txt
    #домены, которые нужно пускать через прокси независимо от содержимого iplist.txt
    DOMAINS=(\
    rutracker.org \
    facebook.com \
    facebook.net \
    fbcdn.net \
    twitter.com \
    twitter.co \
    t.co \
    twimg.com \
    twitpic.com \
    periscope.tv \
    pscp.tv \
    )
    #качаем чёрный список
    wget -q --tries=10 -O "$TMPLIST" "$BLACKLIST_URL"
    # вытаскиваем IP наших прописанных доменов
    declare -a EXTRAIPS=()
    for domain in "${DOMAINS[@]}"
    do
            dig A "$domain" +short @$DNS_SERVER | grep -v '\.$' >>"$TMPLIST"
    done
    #в чёрном списке есть отдельные IP и есть подсети
    #также чёрный список очень длинный, поэтому кодируем его более компактно.
    IPLIST=`grep -Ex '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' "$TMPLIST" | awk '/^[0-9]+/ {split($1,b,/\./); printf("0x%02x%02x%02x%02x,", b[1],b[2],b[3],b[4]);}'`
    SUBNETLIST=`awk '/[0-9.]+\.[0-9]+\.[0-9]+\.[0-9]+\/[0-9]+/ {split($1,p,/\//); printf("[\"%s\", %s], ", p[1], p[2]);}' <"$TMPLIST"`
    #генерируем proxy.pac по шаблону
    #он проверяет домен на вхождение в фиксированные домены, а потом IP по списку.
    function templatePAC {
            NAME=$1
            shift
            DMNLIST=("$@")
            cat >"$PACDIR/$NAME" <<EOF
    function FindProxyForURL(url, host) {
      var domainblacklist = [
    EOF
            for d in "${DMNLIST[@]}"
            do
                    echo "  '$d'," >>"$PACDIR/$NAME"
            done
            cat >>"$PACDIR/$NAME" <<EOF
      ];
      var ipblacklist = [ $IPLIST ];
      var subnetblacklist = [ $SUBNETLIST ];
    
      function endsWith(str, suffix) {
        return str.indexOf(suffix, str.length - suffix.length) !== -1;
      }
      function numberToMask(n) {
        var m=[0,128,192,224,240,248,252,254,255];
        var r=[];
        for (var i=0; i<4; i++) {
          var p = (n > 8) ? 8 : n;
          r[i] = m[p];
          n -= p;
        }
        return r.join(".");
      }
      function maskMatch(ip, mask) {
        var m = numberToMask(mask[1]);
        return isInNet(ip, mask[0], m);
      }
    
      var blocked = false;
      for (var i=0; !blocked && (i<domainblacklist.length); i++)
        blocked = blocked || ((host == domainblacklist[i]) || endsWith(host, '.'+domainblacklist[i]));
      if (!blocked) {
        var ip = dnsResolve(host);
        for (var i=0; !blocked && (i<subnetblacklist.length); i++)
          blocked = blocked || maskMatch(ip, subnetblacklist[i]);
        blocked = blocked || (ipblacklist.indexOf(convert_addr(ip)) != -1);
      }
      if (blocked)
        return "PROXY ТУТ_ТВОЙ_ПРОКСИ:ПОРТ";
      else
        return "DIRECT";
    }
    EOF
    }
    # генерируем файл
    templatePAC proxy.pac "${DOMAINS[@]}"
    
    rm -f "$TMPLIST"

    Тогда можно отдавать этот proxy.pac любым веб-сервером (но лучше внутри VPN - если VPN не работает, то смысл в файле?), и настроить браузер на его использование.
    Минусы: работает только с браузерами, требует наличия вебсервера и полноценного прокси-сервера внутри VPN-сети (т.е. просто арендованный VPN не подойдёт, нужен VPS). Но мне показалось это проще в понимании, чем возня с BGP, да и требуется только наличие современного браузера и VPN клиента, без привязки к роутеру. Можно хоть на ноуте настроить, как я сделал.
    Ответ написан
    Комментировать
  • Что не так с запросом?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    С запросом все ок, а вот с тем кто составлял могу сказать что не так:
    Если не читать документацию, а ориентироваться на свою "и так понятно" логику, то ничего хорошего не выйдет.
    Хинт: Помогите Даше найти логику в строке:
    WHERE name='Nikolai' AND name='Katerina'
    Ответ написан
    4 комментария
  • Как добавить функции сортировки и поиска в таблице html?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    2 комментария
  • Насколько обременительно для кодера содержать ООО (вместо ИП или самозанятого)?

    @archelon
    Для банка будет иметь значение ваш доход, отраженный в справке 2-НДФЛ.
    Т.е. нужно будет себе платить более чем минимальную зарплату. А это значит 13% налогов + 30% страховых взносов (это помимо всех остальных налогов).

    Самозанятый / ИП платят 4-6% (взносы опциональны либо идут в налоговый вычет). Но в банке, при получении кредита, со скепсисом смотрят на доходы ипэшников.

    Если в ООО вы один, без сотрудников, то можно не нанимать бухгалтера. Контур.Эльба за 18 тыс. в год должна покрыть все потребности.
    Ответ написан
    3 комментария
  • Насколько обременительно для кодера содержать ООО (вместо ИП или самозанятого)?

    @romaro
    Стоить будет примерно 10 тысяч в год за сервис сдачи отчетности в электронном виде + налоги, если будет доход.

    Регистрируете ООО с уставным капиталом 10 тысяч рублей. Желательно сразу взять айтишные ОКВЭДы. Назначаете себя директором и сразу уходите в не оплачиваемый административный отпуск.

    Покупаете тот же КонтурЭкстерн для сдачи отчетности. Получаете бесплатный сертификат в налоговой, чтобы эти отчетности подписывать. И вырабатываете привычку хотя бы раз в неделю заходить в личный кабинет Контура, чтобы не пропустить сроки подачи всяких СЗВ-М (там все удобно подсвечивается в таблице).

    Большинство отчетов вы будете сдавать нулевые и они легко готовятся по шаблонам.

    В общем, не так страшен черт, как его малюют.
    Ответ написан
    5 комментариев