Задать вопрос
  • Как добавить иконку при компиляции файла на языке Go?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Ответ написан
    Комментировать
  • Как работать с большими json файлами, которые получаются по запросу в Андроид приложении?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Во-первых, не map, а БД. В момент ввода пользователем города, ходить в БД, по имени города получать код и с ним делать запрос к расписанию. Табличку в БД лучше заполнить заранее нужными кодами, чтобы у свежеустановленного приложения сразу были данные, пусть даже не самые актуальные. Во-вторых, сделать фоновую задачу, которая будет периодически делать запрос к API Яндекса для обновления данных по кодам городов в БД. В-третьих, чтобы не жрать память мобильника, для парсинга 40-метрового файла использовать что-нибудь вроде Jackson Streaming API.
    Ответ написан
    3 комментария
  • Почему я могу обратиться к приватным полям класса в методе main?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Потому что язык это разрешает:

    Otherwise, the member or constructor is declared private, and access is permitted if and only if it occurs within the body of the top level class (§7.6) that encloses the declaration of the member or constructor.

    https://docs.oracle.com/javase/specs/jls/se8/html/...

    Вложенный класс - это член внешнего класса, а классы всегда имеют полный доступ ко всем своим членам. Модификаторы доступа распространяются только на доступ извне.
    Ответ написан
    Комментировать
  • Что пытается сделать злоумышленник на моем сайте?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега SQL
    Седой и строгий
    Похоже на попытки повесить ваш сайт.
    Ответ написан
    Комментировать
  • Как быстро и легко зашифровать трафик?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Ответ написан
    Комментировать
  • Как скачивать файлы с S3 хранилища?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Взять асинхронный http-клиент, типа httpx, и отдать результат запроса к S3 в виде StreamingResponse.
    @app.get('/dowload')
    async def download(url: str):
        async def proxy():
            async with httpx.AsyncClient() as client:
                async with client.stream("GET", url) as r:
                    async for chunk in r.aiter_bytes():
                        yield chunk
                        
        return StreamingResponse(proxy())
    Ответ написан
    Комментировать
  • Не открываются некоторые https сайты ERR_TIMED_OUT что сделать?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Добро пожаловать в современную реальность РФ стремительно двигающуюся в сторону Чебурашконета.
    Ответ написан
    Комментировать
  • Как устроить "песочницу" для тестирования запросов PosgreSQL?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега PostgreSQL
    Седой и строгий
    Не нужны тут контейнеры. Просто создавайте новую БД под каждого пользователя и новую схему под каждую его песочницу.
    Ответ написан
    2 комментария
  • Как правильно разбить csv файл?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Прочитать файл построчно, разбить каждую строку по разделителю, условным оператором проверить, что первый элемент начинается с "example", в истинном блоке записать строку в один файл, в ложном в другой. Либо примерно то же, но с помощью спискового включения с группировкой.
    Ответ написан
    Комментировать
  • Сайт перестает грузиться во время скачивания PDF документа, почему?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Проблема может быть в чём угодно, нужно собирать диагностику и анализировать.
    Ответ написан
  • Как указывать опыт работы в резюме?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Указывать как есть - без опыта. Из-за обилия врущих вкатунов сейчас всё больше компаний за опыт считают только работу с оформлением в штат на полный рабочий день и всё больше компаний делают сверку резюме с трудовой.
    Ответ написан
    7 комментариев
  • Стоит ли идти на практику в компанию?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Если это официальный найм с записью в трудовой, то идти не задумываясь. Сейчас тысячи обладателей вышки месяцами дерутся за вакансии, готовые работать даже бесплатно ради получения первой записи в трудовую.
    Ответ написан
    Комментировать
  • Можно ли в одном микросервисе использовать Postgres и MongoDB?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Технически можно, но вряд ли нужно.
    Ответ написан
    5 комментариев
  • Как сделать свой почтовый ящик на flask?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Flask
    Седой и строгий
    Flask - это web-фреймворк, а приём и отправка почты осуществляются по протоколам POP, IMAP и SMTP, так что никак. Можете разве что web-интерфейс для почтовых сервисов написать.
    Ответ написан
    Комментировать
  • Подойдет ли backend на python?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    В этой постановке выглядит так, что подойдёт любой язык программирования и любой фреймворк.
    Ответ написан
    1 комментарий
  • Опасно ли не закрыть сокет сервера или клиента в Python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Хэндлеры, хоть сокетов, хоть файлов - это конечный ресурс, а ОС и интерпретатор не дают вам никаких гарантий его автоматического освобождения. Так что если у вас интенсивно работающее приложение, то оно может в какой-то момент поставить раком машину, на которой работает. Готовы ли вы принять этот риск ради возможности говнокодить - вопрос к вам.
    Ответ написан
    5 комментариев
  • Почему в Go вакансиях требование знания PHP?

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

    Скорее всего.

    если да, то почему именно на Go?

    Если компания решилась вложиться в переписывание продукта на другом языке, то у неё на это точно очень веские причины, вероятнее всего - проблемы производительности. В этом случае Go - очевидный выбор. Python, Ruby и JS не дадут никакого выигрыша относительно PHP. Хоть на языках из мира jvm и .net можно писать высокопроизводительный софт, но они скорее решают проблемы сложности огромных кодовых баз. С++ и Rust очень сложны и для прикладного софта применяются только в крайнем случае. Всякая экзотика, типа Erlang, Elixir и Haskell - это вообще редкий случай в энтерпрайзе. Go же одновременно очень прост и ориентирован на высокую производительности.
    Ответ написан
    7 комментариев
  • Стоит ли делать отдельный микросервис для Баз данных?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Кто то счетает это хорошей идеей, как возможность связать все сервисы

    Тем временем центральная идея микросервисов в том, чтобы связанность максимально снизить.
    Ответ написан
    Комментировать
  • Какая ширина канала нужна для видеохостинга?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Ну, Netflix писали, что у них один узел стримит как раз до 40 Гбит/сек. Сколько все ЦОДы отдают - представить страшно.
    Ответ написан
    Комментировать
  • Про асинхронность & многопоточность & мультипроцессинг в программировании?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Многопоточность
    Седой и строгий
    С терминологией в этой области у многих путаница. Ситуацию усложняет то, что одни и те же термины могут по-разному использоваться в разных контекстах и разных средах. Например самый общий термин "асинхронность" в общем смысле синоним многозадачности, то есть одновременного выполнения произвольного количества задач. Но часто под "асинхронностью" подразумевают мультиплексирование неблокирующихся сокетов в цикле событий. Конкурентность в контексте выполняемой работы - это одновременное выполнение разных задач. Параллельность в том же контексте - это одновременное выполнение одной задачи на разных данных. В контексте же того, как задачи выполняются, первое может означать, что асинхронность выполнения задач лимитировано конкурентным доступом к некому общему ресурсу, например процессору, а второе - возможность задач выполняться независимо друг от друга, например на разных ядрах. Запускать асинхронные задачи можно различными способами:
    1. В отдельных процессах, что обычно называют мультипроцессингом, и это как раз то, что делает Celery;
    2. В отдельных потоках, что называются многопоточностью;
    3. В сопрограммах или легковесных потоках, управляемых циклом событий, что часто называют асинхронностью, как я уже писал.
    4. На GPU;
    5. На разных машинах, что обычно происходит в распределённых системах.

    Первый вопрос мой состоит вот в чем: в асинхронном коде задачи как бы не выполняются абсолютно параллельно. Они выполняются по очереди, просто не приостанавливая главный поток, как в синхронном коде. А вот многопоточные и мультипроцессорные программы действительно выполняются параллельно (? или не совсем ?).

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