Задать вопрос
  • Как через cmd подключится по ssh без ввода пароля?

    mobilesfinks
    @mobilesfinks
    сисадмин *nix
    Если использовать OpenSSH то у него есть параметр "-i" - указать файл ключа
    в вашем случае будет примерно так
    ssh $vash_host -i C:\Users\username\.ssh\id_rsa
    нужно указать полный путь до закрытого ключа, где id_rsa - имя файла ключа
    Ответ написан
    2 комментария
  • Как в VPS задать постоянное имя хоста?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Возможно, это не честная виртуалка, а контейнер и настройки на неё прилетают с хоста. Либо через cloudinit.
    Ответ написан
    8 комментариев
  • Как в VPS задать постоянное имя хоста?

    deepblack
    @deepblack
    За подобное поведение отвечает cloud-init опция preserve_hostname
    Исправить можно так:
    echo -e "# This file disables cloud-init's hostname update\npreserve_hostname: true" | sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg


    Затем ребутни сервер, предварительно поправив имя (если нужно)
    Ответ написан
    6 комментариев
  • Как в VPS задать постоянное имя хоста?

    Sanes
    @Sanes
    Если нет шаманства на стороне хостинг-провайдера, то
    Посмотреть
    hostnamectl
    
    Задать имя
    hostnamectl set-hostname domain.com


    2) при проверке имени хоста по ip (gethostbyaddr) показывать, что-то типа jd.fed.contact

    Это обратная запись DNS (PTR). Смотрите в панеле управления, в настройках сети, IP адреса. Или напишите в поддержку. Иногда хостер это делает сам, по запросу.
    Ответ написан
    2 комментария
  • Как в nginx создать переменную с датой в формате yyyy-mm-dd?

    karabanov
    @karabanov
    Системный администратор
    map $time_iso8601 $date {
        ~(\d+-\d+-\d+).* $1;
        default "0000-00-00";
    }
    Ответ написан
    Комментировать
  • Как безопасно и дёшево соединить монолитный провод с многожильным?

    @Drno
    Или ставьте розетку обратно и удлинитель включайте обычной вилкой. Или ВАГИ
    Ответ написан
    3 комментария
  • Как безопасно и дёшево соединить монолитный провод с многожильным?

    hint000
    @hint000
    у админа три руки
    Можно поискать (в основном на свалках - в длинных офисных светильниках под люминесцентные лампы; хотя встречаются и в продаже) советские клеммные колодки из карболита и стали со-3-2,5-220 или с-3-2,5-220 (см. фото). В них многожильный провод не перекусывается, как в современных из полиэтилена и латуни. Насчёт постоянного подкручивания - это с алюминием проблема каждый год подтягивать болты, а медь раз в 10 лет подтянуть и нормально.
    Ещё есть дедовский метод с болтами, ну уже разные металлы будут
    Медь со сталью вполне нормально десятками лет живёт, если сырости нет (в тех же дешевых розетках провод идёт под стальные болты и никто не жалуется). Это медь с алюминием - как кошка с собакой.
    _10.041.jpg
    Ответ написан
    Комментировать
  • Как безопасно и дёшево соединить монолитный провод с многожильным?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Самое дешманское и надежное - скрутить (правильно!) и спаять. Скрутить - вот так, последний способ как раз под пайку, подходит и для разного по жилистости провода. пайка делается просто, нагрели провода, намазали канифолью или жидким флюсом по меди, наплавили припой. в идеале перед скруткой надеть термоусадку, и после пайки обсадить на металле. Думаю у знакомых найдется паяльник и шмат припоя с флюсом, в крайнем случае зажигалка прокатит.
    Ответ написан
    1 комментарий
  • Стоит ли загружать разные файлы стилей для разных экранов?

    Kozack
    @Kozack Куратор тега CSS
    Thinking about a11y
    Если речь идёт именно про "Адаптивный" дизайн -- то нет, не стоит. Если речь идёт про отдельный мобильный сайт (когда общих стилей почти нет) тогда да.

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

    import и media используют там, где места не хватает для блоков. Но почему

    Идея в том, что вы изменяете не всю страницу, по каким-то заранее установленным точкам, а каждый отдельный компонент и по собственным размерам. То есть каждый компонент страницы умеет адаптироваться индивидуально и не зависимо от других. (Особенно С приходом Container Queries)

    При таком подходе, с какого-бы устрйоства не зашел пользователь он увидит наиболее оптимальную страницу.
    Ответ написан
    1 комментарий
  • Есть ли какие-то методы написания кода, когда надо смешать php и html в одной строке?

    php666
    @php666
    PHP-макака
    Излюбленная тема умников всех времен и народов, когда поднимается тема о смешении php и html - советовать на каждый чих шаблонизатор. При этом, почему-то умалчивается, что любой шаблозатор в итоге создаёт туже самую смесь из php и html.

    Шаблонизатор - это просто пхп написанный на пхп с синтаксическим сахаром. И использовать его нужно тогда, когда это необходимо. Наследование шаблонов, эскейпинг и, в целом, когда в этом есть НЕОБХОДИМОСТЬ, что бы не писать хэлперы обработки вывода данных.

    Если же речь идёт о каком-то локальном решении, то нужно использовать один шаблонизатор и имя ему - PHP.
    Для этого в языке есть такая вещь, как короткие теги вывода <?=$var?> и альтернативный синтаксис управляющих структур, который идеально ложится на html как инструмент для адекватного восприятия логики отображения. Кроме этого, можно задействовать функции буферизации вывода и получить легковесное решение.
    Ответ написан
    2 комментария
  • Как исправить данную ошибку?

    dima9595
    @dima9595
    Junior PHP
    1. Загуглить/перевести/понять что за ошибка
    2. Исправить
    Ответ написан
    Комментировать
  • Почему правильно сравниваются СТРОКИ даты?

    t-alexashka
    @t-alexashka
    Сразу пишу legacy код
    насколько я знаю строки сравниваются посимвольно (char коды). и тут чар-код "1" будет меньше чем "2".

    до первого вхождения. как только удается определить какая строка меньше - дальше проверка не производится. в вашем случае она останавливается на последнем символе дня.
    Ответ написан
  • Как отправить сообщение telegram, viber, whatsapp - без ботов? PHP?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Тут этот вопрос регулярно задают.

    Telegram - никак, вообще. Пусть нужные пользователи подпишутся на бота, а дальше им по user id можно слать.

    Viber - платно и довольно дорого через Viber Business Messages, цена одного сообщения не меньше чем смс, плюс минимальный ежемесячный платёж довольно большой. Доступ только бизнесам. Точно так же проще сделать бота и слать по id.

    WhatsApp - тут никаких бесплатных ботов легально не предусмотрено вообще, зато можно по номеру телефона тоже довольно дорого через множество посредников. Опять же, только бизнесам. В основном это продают тоже с обязательным минимальным платежом, но тут хотя бы у некоторых (у того же twilio) есть тарифы без абонентки, с оплатой за каждое сообщение. Ещё можно рисковать нелегальными методами через эмуляцию WhatsApp Web.
    Ответ написан
    7 комментариев
  • Что выбрать APCu vs Memcache?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Если разделения между N серверов гарантировано не будет - имеет смысл брать apcu.
    Ответ написан
    1 комментарий
  • Как лучше сравнить два файла изображения?

    @alexalexes
    Фишка хэширования в том, что вы считаете его ровно один раз, и при повторном сравнении уже оперируете им, а не содержимым файла.
    У вас есть 1 млн. файлов. При получении каждого файла вы подготовили для него хэш и сохранили этот хэш в отдельном массиве в оперативной памяти, в файле на диске или в таблице базы данных.
    Когда поступит следующий файл, то вы от него тоже получите хэш, но при сравнении вам уже не надо вычитывать 1 млн. файлов, чтобы сделать сравнение, достаточно обратиться к более быстрому источнику за хэшами этих файлов, сравнение которых будет короче и перебор быстрее (если эта база данных, то должны использоваться индексы, если оперативная память, то сбалансированные деревья и бинарный поиск и т.п.).
    Ответ написан
    1 комментарий
  • Где хранить сессии? SQLite? MySQL? Memcached? Redis? FS?

    Driver86
    @Driver86
    Немодератор toster.ru
    (я на shared-хостинге, так как на большее у меня нет ни денег, ни мозгов).

    Если проект мелкий, то файлов будет достаточно. Если не настроена автоочиска - настроить.
    В остальном, можно использовать Redis. Это база данных, а не кэш, как, например, memcache.

    Про скулиту ты все правильно написал. Те же файлы, вид сбоку.

    Это больше про MySQL. Sqlite - это только один файл и проблема тут может быть только с горизонтальной масштабируемостью (например, при кластеризации проекта).
    И не самая лучшая идея хранить часто удаляемые/изменяемые данные в БД - это приведёт к её дефрагментации.
    Ответ написан
    4 комментария
  • Где хранить сессии? SQLite? MySQL? Memcached? Redis? FS?

    @deliro
    SQLite и ФС — абсолютно не подходят, если приложение будет масштабироваться

    Серверы БД (MySQL/PostgreSQL/etc.) — надёжный но самый медленный вариант

    In-memory БД (Redis/memcached) — отличный вариант, из всех выше, самый производительный, но можно упереться в оперативку

    Signed Cookie Session (и его частный случай — JWT) — неописанный тобой вариант, самый экономный по памяти и диску и самый производительный. Сессия хранится прямо в куке. Сами данные сериализуются, например, JSON'ом и сжимаются, например, gzip'ом (но можно и msgpack + lzma взять, как угодно). После, чтобы пользователь (или хакер) не поменял куку по своему желанию, она подписывается, например, HMAC'ом + любой криптостойкой хэш-функцией
    Из плюсов: 0 байт занятой оперативы (кроме момента выполнения запроса), 0 байт занимаемого места на диске, нет зависимостей от баз данных
    Из минусов: нет возможности "разлогинить все остальные сессии" по запросу пользователя, небольшой сетевой оверхэд, так как сессия от браузера отправляется на каждый запрос, ограничение на размер данных в сессии, потому что данных должны влезть в куку, включая подпись и разделители. Но ради эксперимента, мне удалось засунуть в такую сессию первую главу Войны и мира сжатой, прежде чем упереться в лимит.
    Ответ написан
  • Как получить все возможные уникальные строки из определённых символов?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    Число перестановок из n элементов равно n! Считай, сколько это будет, явно не 49.
    Со знанием того, что это называется перестановкой алгоритм гуглится в два счёта. Модифицировать его для себя сможешь сам.
    Ответ написан
    4 комментария
  • Как получить все возможные уникальные строки из определённых символов?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Некорректная формулировка задачи. Из любого непустого набора символов можно сформировать бесконечное количество уникальных строк. 'V', 'VV', 'VVV', ..., продолжать можно до бесконечности.
    Если ограничить максимум одним вхождением символа в строку результата, то получится 2n строк, где n - количество уникальных символов. Каждому символу можно сопоставить один бит двоичного числа. Если символ входит в очередную строку, то бит равен 1, если не входит, то 0.
    VUCADE
    00 - 000000 - ''
    01 - 000001 - 'E'
    02 - 000010 - 'D'
    03 - 000011 - 'DE'
    04 - 000100 - 'A'
    05 - 000101 - 'AE'
    06 - 000110 - 'AD'
    07 - 000111 - 'ADE'
    08 - 001000 - 'C'
    09 - 001001 - 'CE'
    10 - 001010 - 'CD'
    11 - 001011 - 'CDE'
    12 - 001100 - 'CA'
    13 - 001101 - 'CAE'
    14 - 001110 - 'CAD'
    15 - 001111 - 'CADE'
    16 - 010000 - 'U'
    17 - 010001 - 'UE'
    18 - 010010 - 'UD'
    19 - 010011 - 'UDE'
    20 - 010100 - 'UA'
    21 - 010101 - 'UAE'
    22 - 010110 - 'UAD'
    23 - 010111 - 'UADE'
    24 - 011000 - 'UC'
    25 - 011001 - 'UCE'
    26 - 011010 - 'UCD'
    27 - 011011 - 'UCDE'
    28 - 011100 - 'UCA'
    29 - 011101 - 'UCAE'
    30 - 011110 - 'UCAD'
    31 - 011111 - 'UCADE'
    32 - 100000 - 'V'
    33 - 100001 - 'VE'
    34 - 100010 - 'VD'
    35 - 100011 - 'VDE'
    36 - 100100 - 'VA'
    37 - 100101 - 'VAE'
    38 - 100110 - 'VAD'
    39 - 100111 - 'VADE'
    40 - 101000 - 'VC'
    41 - 101001 - 'VCE'
    42 - 101010 - 'VCD'
    43 - 101011 - 'VCDE'
    44 - 101100 - 'VCA'
    45 - 101101 - 'VCAE'
    46 - 101110 - 'VCAD'
    47 - 101111 - 'VCADE'
    48 - 110000 - 'VU'
    49 - 110001 - 'VUE'
    50 - 110010 - 'VUD'
    51 - 110011 - 'VUDE'
    52 - 110100 - 'VUA'
    53 - 110101 - 'VUAE'
    54 - 110110 - 'VUAD'
    55 - 110111 - 'VUADE'
    56 - 111000 - 'VUC'
    57 - 111001 - 'VUCE'
    58 - 111010 - 'VUCD'
    59 - 111011 - 'VUCDE'
    60 - 111100 - 'VUCA'
    61 - 111101 - 'VUCAE'
    62 - 111110 - 'VUCAD'
    63 - 111111 - 'VUCADE'
    Ответ написан
    8 комментариев