• Как перехватывать информацию из консоли?

    @bbkmzzzz
    from subprocess import Popen, PIPE
    
     # запускаем команду, вывод перенаправляем в PIPE
    proc = Popen('cmd /c ping 8.8.8.8', stdout=PIPE)
    
    #  по завершении работы proc, прочитать данные из
    # stdout (и отправить ввод, если надо), результат не декодирован (bytes)
    res = proc.communicate()[0]  # <- communicate возвращает кортеж (stdout_data, stderr_data)
    
    print(res.decode('cp866')) # выводим на печать декодированные данные
    Ответ написан
    Комментировать
  • Какие книги начать читать для веб хакинга?

    CityCat4
    @CityCat4 Куратор тега Информационная безопасность
    Внимание! Изменился адрес почты!
    Очень понадобится вот это
    Также не менее понадобится это
    (хотя читать лучше наоборот - сначала вторую ссылку, потом первую - так будет больше впечатлений :) )
    Ответ написан
    Комментировать
  • Как Submit`уть форму по нажатию клавиши Enter?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    Формы это умеют "из коробки".
    Ответ написан
    Комментировать
  • Нужно ли закрывать индексацию файла sitemap в robots.txt?

    DevMan
    @DevMan
    sitemap делается именно для роботов, а не людей.
    закрывать его от индексации – это бинго идиотизма.
    Ответ написан
    Комментировать
  • Кто такой кодер? и чем он отличается от программиста?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Кодер пишет код программы. Программист чинит микроволновки, настраивает телефоны, ремонтирует офисную мебель и, в исключительных случаях, пишет программы.
    Ответ написан
    Комментировать
  • Как в Django сделать извлечение данных из POST-запроса в json?

    maximkv25
    @maximkv25
    web-developer
    def example(request):
        try:
            data = json.loads(request.body.decode())
        except ValueError:
            return JsonResponse({
                'error': 'bla bla bla',
            })
    Ответ написан
    Комментировать
  • Как сделать dict из list?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    key = ['a', 'b', 'c']
    # есть три list данных:
    data = [
        [1],
        [4,5],
        [2, 6, 8],
    ]
    print(dict(zip(key, data)))
    #{'a': [1], 'b': [4,5], 'c': [2,6,8]}
    Ответ написан
    1 комментарий
  • Как указать зависимость между полями?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    @admin.register(SomeModel)
    SomeModelAdmin(admin.ModelAdmin):
        def get_fields(self, request, obj=None):
            fileds = super().get_fields(request, obj)
            if obj and not obj.first_field:
                fields.remove('second_field_name')
            return fields
    Ответ написан
    3 комментария
  • Как шифровать личные данные пользователей?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Давайте различать. Шифрование пароля - это не то же самое, что шифрование других данных. Пароль следует не шифровать, а хешировать. Это такое шифрование, которое нельзя расшифровать обратно. То есть имея хеш нельзя получить пароль, а имея пароль можно получить точно такой же хеш. Существуют для этого специальные хеш функции. Но хешировать пароли мало, их нужно сперва солить. Соль - это произвольный текст, присоединённый к паролю перед хешированием и размещаемый рядом с хешем в открытом виде. Нужна соль для того, чтобы нельзя было подбирать простые пароли по значению их хешей.
    Проверка пароля будет такой:
    1. Запрашиваем у пользователя логин и пароль.
    2. Достаём из БД по логину хеш солёного пароля.
    3. С этой солью хешируем введённый пользователем при авторизации пароль и сличаем хеши. Совпали -- значит пускаем.

    Шифрование других данных, очевидно, нужно уже обратимое, чтобы можно было расшифровать. И теперь есть два варианта: серверное и клиентское шифрование.

    Серверное не имеет смысла, поскольку скомпрометированный сервер означает утечку всего необходимого для расшифровки данных. Не скомпрометированный сервер означает, что данные и так вроде бы в безопасности. Значит шифровать не нужно (ну кроме некоторых специальных случаев).

    Клиентское шифрование - это когда сервер не имеет возможности расшифровать данные. Они шифруются на клиенте перед отправкой ключом, который не покидает пользовательского компьютера. Потом клиент снова запросит шифрованные данные с сервера и расшифрует его тоже сам. Это иногда имеет смысл. Например если вы храните keychain с паролями на сервере, но не хотите их утечки в случае взлома сервера.

    Есть ещё p2p шифрование, где с помощью специального алгоритма пользователи обмениваются ключами через сервер так, чтобы эти ключи не мог узнать ни сервер, ни кто иной. Далее от пользователя к пользователю ходит через сервер шифрованная информация, которую кроме оконечных пользователей никто не может расшифровать. Это так называемое оконечное шифрование.

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

    О, чуть не забыл. Есть опасность утечки незашифрованных данных из датацентров при наличии физического доступа к жестким дискам. Чтобы обезопасить себя в этом смысле, можно применить прозрачное шифрование файловой системы. Работающая операционная система будет знать ключ для расшифровки данных, но отсоединённый диск становится без ключа бесполезным. Однако это малоэффективно, если украдут весь сервер вместе с дисками. Зато эффективно против восстановления жуликами данных, если диск сгорел, а его сисадмин выбросил не просверлив.

    Ещё один аспект - это канал передачи. Нет смысла опасаться перехвата незашифрованных данных в канале передачи даже на последней миле провайдера клиента. Об этом заботится SSL когда правильно настроен HTTPS и сертификаты не скомпрометированы, а пользователь не подмахнул левый сертификат.

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

    @moozooh
    Chief Technical Grammar Nazi
    Система в целом очень слабая, но её можно улучшить почти забесплатно, если подойти к этому с умом и не полениться написать нескольким людям.

    В «проектах» подобного толка ставится единственная задача — разгрузить основное бутылочное горлышко. В случае с системой вроде вашей таких горлышек два: дисковая подсистема и, в чуть меньшей степени, процессор. С процессором всё более-менее просто: нужно переложить максимум нагрузки на видеокарту, где это возможно, и избегать софт с тяжёлым, неоптимизированным интерфейсом. С диском чуть сложнее, потому что сейчас у вас во время, скажем, работы в Фотошопе происходит примерно следующее: файл переносится с диска в оперативную память, и через файл подкачки переносится обратно на диск (1), одновременно с этим ФШ создаёт собственный временный файл кеша (scratch file), в который записывает изменения — историю и всё прочее (2), при этом антивирус сканирует изменения на диске на предмет чего-то нежелательного (3), периодически что-нибудь шевелит система с её фоновыми процессами (4) — вот у нас уже до четырёх одновременных обращений к диску, который в принципе не приспособлен обрабатывать более одного за раз. Поэтому действовать надо следующим образом.
    • Поищите у знакомых память DDR. Купить её уже нельзя, но многие ещё не выбросили старые планки, которые смогут отдать вам просто так или за что-нибудь символическое. Оптимально нужно 4 ГБ, больше смысла нет (у вас система, очевидно, 32-битная, поэтому увидит лишь немногим меньше 4 ГБ). Особенно тщательно опрашивайте админов — они зачастую любят складировать списанное железо на всякий случай. Это как раз один из таких случаев.
    • Поищите у этих же знакомых/админов бесхозный жёсткий диск на 120–200 ГБ (чем больше, тем лучше; лишь бы работал). Многие будут готовы расстаться с ним за пару кило фруктов, бутылку хорошего вина или любой подобный эквивалент, потому что сейчас такие диски всё равно мёртвый груз. Перенесите на него все временные файлы/папки — кеш браузера, scratch-файл ФШ, файл подкачки и пр. Чем больше диск, тем быстрее скорость записи и чтения; чем свободнее диск, тем больше важных данных попадает туда, где скорость обращения выше.
    • Хорошо прочистите системник от пыли, особенно все вентиляторы и радиаторы, и попробуйте аккуратно поднять частоты процессора. Семпроны не очень хорошо гонятся, но 8–10% обычно можно отвоевать без перегрева и на штатном охлаждении. В вашей ситуации каждая мелочь внесёт свою лепту.
    • Обязательно обновите ФШ до CS4 — в нём интерфейс ускоряется видеокартой и поэтому будет меньше тормозить. Судя по тому, что вы работаете с софтом такого рода на настолько убитом железе, вы всё равно скорее всего не лицензией пользуетесь. По меньшей мере стоит обновиться до CS3, т. к. он всё равно намного быстрее, чем CS2. CS2 — самый тормозной ФШ!
    • Файлу подкачки задайте фиксированный размер (4 ГБ хватит, если стоит 4 ГБ ОЗУ) и положите на пустой диск, чтобы избежать фрагментации и параллельных потоков записи/чтения. В самом крайнем случае можно вовсе его отключить — это сильно ускорит многие процессы, но будьте готовы к тому, что программы, случайно «вылезшие» за пределы доступной памяти, будут вылетать с потерей несохранённых данных.
    • Оптимизируйте набор софта. Резидентный антивирус лучше всего выключить и заменить его связкой из DEP (я не помню, была ли она в XP SP3, но, по идее, должна), еженедельных проверок активным сканером и хорошего браузера. С браузерами в смысле прожорливости сейчас, к сожалению, не всё безоблачно; попробуйте что-нибудь относительно легковесное типа Otter или Vivaldi; что бы вы ни выбрали — включите аппаратное ускорение, поставьте самый мощный адблокер из доступных; если не помешает, можно попробовать и более радикальную меру — отключить флэш (функционально он сейчас, по сути, только в некоторых веб-плеерах используется, остальное — сплошь реклама и красивости). Сотрите или уберите из автозагрузки всё, что не строго необходимо. Отключите или переведите на ручной режим все службы, которые выполняют какие-либо некритичные процессы записи/чтения в фоне (тут Гугл в помощь). Музыку лучше слушать с диска через foobar2000 или другой легковесный плеер, т. к. веб-плееры типа вконтактовского жрут больше ресурсов, но при этом всё равно пропускают поток через диск. Word можно заменить версией из Office 2003 — она менее прожорлива, чем последующие, и не имеет уродского ленточного интерфейса.

    Удачи!

    EDIT: Добавил абзац с пояснениями.
    Ответ написан
    Комментировать
  • GIT-хостинг - удобный, простой, тупой - есть ли?

    @ivanushka8845
    Проектик, папочки и файлики и чтобы буковки на руссеньком язычочке? Есть такой сайтичик, называется github-чик. Открываешь консолечку на твоей компушечке или ноутбучеке и пишешь туда коммандочки. И они -- папочки и файлики -- улетают на сайтик. Потом приходят программерчики в твою репочку на этом сайтике и пользуются твоим кодиком. Всешечки.
    Ответ написан
    2 комментария
  • Как спрятать scrollbar в div и отставить возможность скроллинга?

    standy
    @standy
    Если делать как посоветовали выше, то пострадают мобильные браузеры. У них скролл не занимает место, как на десктопах, поэтому текст будет уходить за правую границу.

    Есть еще одно решение:
    /* хром, сафари */
    .element::-webkit-scrollbar { width: 0; }
    
    /* ie 10+ */
    .element { -ms-overflow-style: none; }
    
    /* фф (свойство больше не работает, других способов тоже нет)*/
    .element { overflow: -moz-scrollbars-none; }

    Отсюда: hiding-vertical-scrollbars-with-pure-css-in-chrome...
    Ответ написан
    5 комментариев
  • Откуда появился логотип Хабр Q&A?

    glaphire
    @glaphire
    PHP developer
    "Хабр Q&A" как название не отображает сути сервиса, звучит как раздел "F.A.Q". "Toster.ru" закрепился как бренд и теперь потеряет большую долю своей репутации
    Ответ написан
    9 комментариев
  • Нужен ли диплом программисту?

    @Allan11
    Фронтенд
    Ответ написан
    Комментировать
  • Что лучше: long-polling или опрос Ajax раз в секунду?

    tv_dakota
    @tv_dakota
    Backend developer
    Ни то ни другое. Лучше WebSocket
    Ответ написан
    Комментировать