• Как в Python скачать файл, не зная его названия и расширение?

    vabka
    @vabka
    Токсичный шарпист
    Вообще-то в заголовке content-disposition указано, какое имя и расширение у файла: inline;filename="unnamed.jpg"
    Но вообще да - просто при сохранении генериш случайное имя.
    import requests
    response = requests.get("https://lh4.ggpht.com/HSXdsQpFEOTgh0QywV4NzNJIPADnWnkCVOsMmQkIgG9K08pQcwpNiWlu3Ls73mzYMTM")
    filename  = response.headers["Content-Disposition"].split(";")[1].split("=")[1].strip('"') #вместо этого можно сгенерить случайное имя
    file = open(filename, "wb")
    file.write(response.content)
    file.close()
    Ответ написан
    5 комментариев
  • Как лучше сделать список в базе данных?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Нужно почитать про то, почему базы называются реляционными, и про их нормальные формы. Вам нужно отношение многие ко многим.
    Ответ написан
    2 комментария
  • В чем сложность поддержки проектов на Go?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    Более четырёх лет пишу на Go, лично для меня поддерживать проекты на других языках сложнее ))
    До Go много лет писал на Perl/PHP/Python/Java/C/Ruby on rails/JavaScript и "крутил" еще не мало чего.
    Сейчас пишу только на Go и Python.

    Основная сложность в Go - это то, что если вы начинаете писать "криво" - то писать так очень трудно :))
    Подход к реализации в Go достаточно непривычный для тех, кто приходит из скриптовых языков.
    Например запрет циклических импортов - это самое первое, что "взрывает" мозг :)
    Нужно время чтобы адаптироваться после скриптовых языков.

    Про обработку ошибок - это да, это, пожалуй, единственное что мне не нравится в Go.
    Для себя я решил эту проблему за 1-2 часа :) и больше меня это не беспокоит.

    По ООП - в Go оно есть, лично мне оно нравится намного больше, чем ООП в других языках ))
    Всё, что реально нужно - всё есть, но при этом ничего лишнего нет.
    Интерфейсы - просто прекрасны :)) Каналы, горутины - это просто "счастье" :))

    А если объективно - то я бы не стал говорить о сложности поддержки проекта применимо к какому то конкретному языку.

    Как правило сложность поддержки возникает там, где нормальная архитектура не заложена в проект.
    Т.е. проект как могла так и писала куча людей плюс, как обычно, сделать нужно было побыстрее )), от этого никто вообще не думал об архитектуре и получилось то, что получилось :))
    Про покрытие тестами и документацию мы вообще не говорим )))

    А когда в таком проекте нужно что-то доработать или исправить ошибку, то почти всегда очень не просто найти то место, где нужно править, и после правок в одном месте, как правило, что-то ломается в другом :)

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

    Так мы приходим к тому, что если опыта нет - тогда проект поддерживать будет достаточно тяжело не взирая на язык и т.д.

    Хочется добавить, что как бы не писали про Go, что он простой и т.д. - он явно сложнее Python/PHP и т.д.
    Это еще один повод сказать, что поддерживать код на Go сложно ))

    Также стоит учитывать, что проекты которые пишут на Go зачастую сложнее, чем проекты для которых выберут скриптовый язык. Go выбирают когда планируются большие нагрузки, параллельная обработка чего-либо и т.д., а это, в свою очередь, дополнительно усложняет проект.
    Ответ написан
    7 комментариев
  • Golang. Что работает быстрее strings.Contains или json.Unmarshal?

    Производительность это повысит, strings.Contains работает гораздо быстрее, чем json.Unmarshal
    Но надежность понизит, ибо error_code будет искаться везде, это не обязательно будет имя поля.
    Ответ написан
    2 комментария
  • Как сделать быстрый веб-сервер для статики но с аутентификацией?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Просто настроить авторизацию oauth на Nginx и всё.
    Ответ написан
    Комментировать
  • Логирование веб-приложений: syslog и stdout/stderr?

    @ProFfeSsoRr
    Сис.админ по Linux
    stdout - это стандартный вывод, обычно это консоль. Вот запустили вы в консоли приложение - и увидели, что оно вам написало, потому что оно выводит сообщения в stdout. И не зря тут std в названии - "стандартный". С ним умеет работать много чего. Вот возьмем допустим systemd: он запускает сервис, его stdout ловится и попадает в journald. Можно куда-нить еще завернуть. Системы управления контейнерами тоже так умеют.

    Как собирать? Ну вот вы ж всё умеете, вы там про очереди, logstash пишите - вот, это оно. Вы берете filebeat, ну или там какие еще *beat'ы у него есть, ловите ими вывод ваших приложений и пихаете его в эластик. Ну или допустим fluentbit берёте и им шлете логи в очередь какую-нить, а оттуда уже в хранилку.

    1. В каких случаях обычно пишут логи в syslog ?

    ну syslog очень много лет, он был еще до всех этих контейнеров и 12-факторных приложений ;) Так что когда-то им пользовались практически все.
    Ответ написан
    Комментировать
  • Куда пропало место на диске?

    @mureevms
    Не знаю что именно в Ubuntu для этого используется, но в Linux Mint изкоробки стоит baobab. В Uduntu можно поставить и запустить так:
    sudo apt install baobab
    baobab


    Так выглядит

    619f89d5361dc646930627.png


    Но удобнее и практичнее из консоли
    du -h /home --max-depth=1
    Ответ написан
    4 комментария
  • Почему тормозит веб сервер?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Так вам же и Apache ругается
    WARNING: [pool www] server reached pm.max_children setting (5), consider raising it
    , и Nginx ругается
    [mpm_prefork:error] [pid 70323] AH00161: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting
    на одно и то же, а вы в упор не видите?

    База данных тоже ругается
    HINT: See server log for query details.\nCONTEXT: while rechecking updated tuple (4,118) in relation "oc_file_locks"
    , один запрос обновляет записи (и этим заблокировал таблицы), другие запросы ждут окончания блокировки и не могут дождаться.

    Кстати, в логах видны $1, $2 и т.д. Это вы заменили, или это база данных так запрос видит? Или это в коде ошибка, и в запрос вообще не подставляются нужные значения?
    И ещё, почему "lock" вместо кошерного SQL-ного `lock`?
    Ответ написан
    3 комментария
  • Как сделать умный поиск по базе?

    no_one_safe
    @no_one_safe
    Ответ написан
    Комментировать
  • Golang и PHP, дань моде или необходимость?

    @Vitsliputsli
    Если в проекте есть критичные места, которые нужно ускорить, но упираемся в скорость работы интерпретатора php, то берём go.
    Go достаточно простой и высокопроизводительный язык. Но скорость разработки на нем значительно ниже, чем на php.
    Ответ написан
    4 комментария
  • Golang и PHP, дань моде или необходимость?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    какие задачи решает Go настолько хорошо, что это нужно писать именно на Go, а не на PHP

    https://ru.wikipedia.org/wiki/C10k
    Ответ написан
    3 комментария
  • Цель - WEB Full-stack. Сносный ли план обучения для новичка?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    Все очень плохо.
    А теперь подробнее.

    1. Рекомендую почитать несколько статей о том, что такое девопс инженер, потому что понятие девопс методологий и девопс инженера - кардинально различаются.

    2. У вас очень много книг. Это неплохо. Но у вас вообще не вижу практики. Это плохо.
    Есть заметка, что "неплохо бы иметь второй проект", но даже нет идей что за проект.
    Какой-то пет проект, который вы будете писать не потому, что у вас есть идея, которую вы хотите воплотить в цифровом виде, а просто потому что "нужно пет проект для портфолио"?
    Так это не работает, точнее такой пет-проект будет больше похож на непонятно кому нужную курсовую, которую вам не будет интересно развивать, искать варианты реализации понимая какой результат вам нужен. С другой стороны девопс не может существовать отдельно от проекта...

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

    P.S. Вижу, что топик поменялся с DevOps на Web full stack - в таком случае мой ответ более нерелевантен, но возможно из-за него топик и поменялся =)
    Ответ написан
    1 комментарий
  • С чего начать изучение Phyton?

    vabka
    @vabka
    Токсичный шарпист
    Сначала следует научиться внимательно читать, тк вы в своём вопросе нарушаете несколько правил/рекомендаций.
    (Как упражнение - найдите, какие именно)

    Затем, не менее важно, научитесь гуглить, тк уже много раз подобный вопрос задавался и здесь, и в целом в интернете, так что ответов вы найдёте достаточно много.

    Ну и английский язык в придачу.

    А вот более конкретно:
    1. Роадмап: https://roadmap.sh/python
    2. Ответ трёхлетней давности: https://qna.habr.com/q/1759
    Ответ написан
  • Где найти описание алгоритм Рабина Шаллета?

    hint000
    @hint000
    у админа три руки
    "Спасибо" надо сказать копирастам. За возможность легально скачать pdf хотят самую малость - $50.
    https://onlinelibrary.wiley.com/doi/10.1002/cpa.31...
    Это оригинальная публикация научной работы в 1986 году.

    Тут есть какое-то описание алгоритма:
    https://math.stackexchange.com/questions/483101/ra...
    Ответ написан
    4 комментария
  • Как узнать сработала ли команда tar полностью?

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

    В следующий раз запустите что-то вроде этого при создании большого архива:
    tar ... && touch success.flag
    Если файлик success.flag создался - значит процесс архивации был успешно завершен

    есть более надежные архиваторы, чтоб если соединение потеряно, то он все равно сам архив доделает

    Запускайте в фоне или через screen например...
    Ответ написан
    Комментировать
  • Какой дистрибутив линукс хороший в плане безопасности?

    @HighMan
    Хм... Крайне холиварная тема.
    У Вас какие-то предпочтения есть? Есть опыт работы с каким-либо семейством Linux?
    Если нет, то: Ubuntu (Debian famaly)
    Если хотите вааще на пике новшеств, то Fedora 33 (RedHat family). Fedora 34 крайне не советую. Там по умолчанию Gnome 4, а он ещё недопилен.
    Хотя я и предпочитаю Fedora, но новичку посоветовал бы Ubuntu. Намного больше информации.
    В плане безопасности, рулит не дистрибутив, а пользователь. А ещё лучше - администратор :)
    Ответ написан
    2 комментария
  • Как раньше люди программировали?

    Adamos
    @Adamos
    1 курс, зимняя сессия закончена, каникулы. Путевка от профсоюза в санаторий. Учебник Паскаля из вузовской библиотеки, пару недель чтения, благо больше в санатории все равно делать нечего. По возвращении домой - вставляю в свой "Поиск" дискету с ТрубоПаскакалем, ковыряюсь до изнеможения со словарем, поскольку все на английском, а в школе я его имел глупость подзабросить.

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

    Впрочем, от необходимости думать своей головой и прилагать усилия ни гугль, ни SO не освобождают.
    Ответ написан
    9 комментариев
  • Node js асинхронность при вызове функции, как?

    rockon404
    @rockon404
    Frontend Developer
    Я немного не понимаю как Node js, функцию сделать асинхронной?

    Вариант 1:
    const asyncFn = () => new Promise((resolve, reject) => {
      // do some async call and resolve or reject
    });


    Пример:
    const delay = duration => new Promise(res => setTimeout(res, duration));
    
    delay(200).then(() => {
      // do something after delay
    });


    Вариант 2:
    const asyncFn = async () => {
      // do something with awaiting async call result or not
      // and return result or not
    });


    Пример:
    const getSomeData = async () => {
      const result = await someAsyncCall();
      return someOtherAsyncCall(result);
    };


    Вариант 3:
    const asyncFn = cb => {
      // do some async call and call cb
    }


    Пример:
    const delay = (duration, cb) => setTimeout(cb, duration));
    
    delay(200, () => {
      // do something after delay
    });


    Во всех вариантах вам придется использовать коде какой-либо встроенный асинхронный вызов, таймер или стороннюю библиотеку.

    как определить функция которую вызываю она синхронная или асинхронная ?

    Обычно такая функция возвращает Promise или принимает колбек.

    Почитать:
    Методы асинхронного программирования
    Понимание асинхронного программирования
    Ответ написан
  • Как окирпичить диск путем стирания gpt?

    @Drno
    Насчет ГПТ не отвечу, скорее всего тоже можно.
    А по поводу видео -
    MBR легко восставноить, данные с диска никуда не девались, даже если диск форматнуть, данные с него можно достать
    Ответ написан
    Комментировать
  • Как окирпичить диск путем стирания gpt?

    @AlexVWill
    это не самоуничтожение, это самовнушение... чтобы данные уничтожить на 100%, надо все данные нулями перезаписать
    Ответ написан
    4 комментария