Задать вопрос
  • Почему header нельзя использовать после оператора вывода?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Потому что в протоколе HTTP заголовки выдаются до любого контента. Если контент уже хотя бы частично выдан, то Header'ы уже выводить нельзя (хотя это можно обойти через ob_start).
    Ответ написан
    5 комментариев
  • .htaccess ErrorDocument 404 с помощью js?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Никак. 404 выдаёт сервер, а js выполняется на клиенте.
    Ответ написан
    Комментировать
  • Почему JS решил задачу на рекурсию гораздо быстрее Python/Lua?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Когда-то давно один товарищ обнаружил, что реализация вычисления чисел Фибоначчи через рекурсию на Java работает быстрее, чем её аналог на C. Он не только поудивлялся этому, но и поизучал вопрос. Оказалось, что gcc в каждом вызове функции делал push si; push di; и по окончании pop si; pop di; хотя регистры si и di в скомпилированном коде никак не использовались. Это давало какие-то микроскопические, но всё же расходы времени.

    Любой конкретный тест специфичен, он показывает не то, как быстро работает тот или иной язык (точнее, его конкретная реализация), а какие в этой реализации получились расходы времени на конкретную задачу. В другой задаче, в другой реализации того же языка, просто даже на другом оборудовании может получиться другой результат.
    Ответ написан
    Комментировать
  • Memory_get_usage на хостинге и Денвере отличаются показатели, Почему?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Операционная система, её разрядность, загруженные расширения - всё влияет.
    Ответ написан
    Комментировать
  • Почему не заполняется база данных SQLite?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Включить autocommit или в конце скрипта либо после каждого запроса делать con.commit()
    Ответ написан
  • Насколько надёжный данный шифр?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Классические шифры полагаются на то, что никто не догадывается, как их расшифровать, а подбор вручную может быть не очень простым делом. И то, на самом деле, некоторые из них ломаются очень просто. Например, шифр простой замены ломается частотным анализом, а шифр сдвига - просто перебором разных вариантов сдвига, число которых не превышает длины алфавита.

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

    Основа современной криптографии - вычислительная сложность. Можно даже всё знать об алгоритме шифрования - но за разумное время расшифровать не получится. Но старинные методы шифрования "символ-в-символ" вычислительно очень просты и никак не годятся в современном мире.
    Ответ написан
    8 комментариев
  • Нужен ли python для системных администраторов?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Знание языка программирования - а лучше нескольких - это всегда плюс. Помогает как в написании своих скриптов, так и в отладке/переиспользованию чужих. И, конечно, качества и распространённость таких языков влияют. Но это всё равно опционально, в отличие от знания bash. Хотя, конечно, не знать совсем ни одного языка больше похоже на крайность, чем на норму.
    Ответ написан
    Комментировать
  • Почему письма не доходят в Gmail?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Для начала проверяем RDNS/DKIM/SPF и всё такое. Большинство почтовиков очень плохо отнесутся к письму с невнятного хоста.
    Ответ написан
    Комментировать
  • Как скопировать значение из ячейки, google sheets?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Копировать A1 в буфер и затем вставлять в B1 как Edit->Paste special->Paste values only.
    Ответ написан
    3 комментария
  • Почему при попытке передачи словаря как аргумента map() появляется ошибка?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Потому что map принимает list в качестве второго аргумента, а приведение dict к list - это список ключей, так что obj в lambda будет строкой.

    Можно посмотреть, что покажут эти print для понимания:

    print (list(a))
    print (list(map(lambda x: x, a)))


    Решение: вместо obj['id'] использовать в lambda-выражении a[obj]['id']
    Ответ написан
    Комментировать
  • Как залить телеграмм бота на пайтоне на сервер?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Если на хостинге нет модуля telebot, то его туда надо установить (как правило можно сделать командой pip install telebot). Вот их собственная инструкция на этот счёт https://help.pythonanywhere.com/pages/InstallingNe...
    Ответ написан
  • Почему не работает fdisk в debian 10 buster?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    dpkg -L fdisk покажет все файлы в пакете fdisk.
    which fdisk найдёт полный путь к fdisk по каталогам в $PATH.

    Скорее всего нужный будет в /sbin/fdisk. И скорее всего не файл отсутствует, а в $PATH нет каталога /sbin.
    Ответ написан
    3 комментария
  • Не получается скачать сайт через wget, почему?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Для изучения нет никакой нужды "скачивать" этот сайт. Достаточно консоли браузера.
    Ответ написан
  • Не парсится дата с сайта. Что делать?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Эти данные заполняет javascript на сайте (с включённым uMatrix у меня тоже ничего не показало). Надо разобраться, что и как скрипт делает, и воспроизвести его логику. Подозреваю, что нужные данные находятся в параметре vfa формы finanaliz-form, но дальше разбираться мне лень.
    Ответ написан
    Комментировать
  • Как быть с длинными цепочками связей между таблицами?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Вполне нормально. Главное построить все нужные индексы. Базы данных специально разрабатывают под то, чтобы они такие запросы выполняли максимально эффективно.

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

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Задача "стать гуру" в принципе неправильно поставлена. Любой мастер начинает с того, что работает подмастерье, делая несложные вещи. Но, опять же, именно делая, а не просто читая теоретические книжки. Так что можно брать те же олимпиадные задачки и пытаться их решать. Заодно осознать всю боль о необходимости самому выделять и освобождать память.
    Ответ написан
    2 комментария
  • Что лучше в плане безопасности и стабильности + по ресурсу ,Ubuntu server или Cent OS??

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В плане безопасности и стабильности всё решает квалификация админа, если у него руки кривые - никакой дистрибутив не спасёт. Плюс сложившаяся практика - чаще всего нет никакого смысла ставить один сервер на каком-то конкретном дистрибе, если уже успешно и системно обслуживаются 100 серверов на чём-то ещё.

    Со многих точек зрения я бы предпочёл debian'ообразия, например, в нём изкаропки больше софта. Но есть доводы и в сторону centos, например, в нём есть есть готовые полиси для selinux (в debian с ними давно сложности), обычно проще с поддержкой интырпрайзного софта (всяких поделий от oracle, например).
    Ответ написан
    Комментировать
  • Чем можно выгрузить целый сервис?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Не слишком сложно устроенный и не слишком сопротивляющийся подобному нецелевому использованию - с помощью wget с соответствующими ключами:

    wget -m https://natribu.org/

    Есть также более user friendly средства с графическими интерфейсами, но я ими никогда не пользовался и в их сортах не разбираюсь.

    В общем случае без программирования никуда - придётся разбираться в запутанных js, в лимитах и мерах против скачивания. Ну и ясен пень какой-нибудь вконтактик выкачать нереально просто даже в силу его объёма.
    Ответ написан
  • Возможно ли вычислить местоположение человека, вышедшего в сеть через дедик?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Можно пытаться угадывать, что пользователь выходит не из домашней сети и не из сети какой-то организации, а с сервера у какого-то хостера, используя какие-либо знания о сетях хостеров и провайдеров, но надёжно и во всех случаях это сделать всё равно не получится. Что касается определения факта "непрямого" доступа, если пользователь не использует прокси, которые сами явно и открыто "светят" реальные IP пользователя и всех промежуточных прокси в заголовке X-Forwarded-For, то и поймать его на этом нельзя.

    Цепочки разнообразных хостов используют из соображения, что давлением правоохранителей на многих разнообразных хостеров (тем более в разных странах) вряд ли можно быстро получить доступ к данным, которые бы помогли бы идентифицировать пользователя. Но это не значит, что нельзя попасться, впрочем, чаще всего и попадаются совсем не на этом. Типичный пример - когда разыскиваемому пользователю отправляют письмо, содержащее уникальную ссылку на картинку, запрос к которой попадёт в логи с реальным IP.
    Ответ написан
    3 комментария
  • Как обеспечить Отказоустойчивость web-сервиса и ipsec vpn?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    На самом деле ipsec vpn это не очень-то и vpn, это просто инкапсуляция трафика в tunnel esp режиме ipsec, которая выполняется уже после маршрутизации на основе правил в конфигурации ipsec. Я бы советовал поднять с клиентом настоящие vpn (openvpn/l2tp/итд), в том числе их можно поднять поверх ipsec (если политика безопасности клиента того требует). И дальше просто даже метриками разрулить основной и резервный VPN до одинакового IP (который будет на самом деле терминироваться в разных датацентрах). Это самый простой вариант в случае если клиент не может сам балансировать между двумя точками подключения, одна из которых может отказать.
    Ответ написан
    Комментировать