Задать вопрос
  • Telegram бот с модулем PortalsAPI, при запуске curl_cffi выдает ошибку curl: (77) что делать?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Ставлю на то, что проблема в кириллических символах в пути к cacert.pem.
    Ответ написан
    Комментировать
  • Как общаются микро-сервисы в реальных проектах?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    По-разному, под каждую систему или даже под каждый сценарий взаимодествия выбираются свои способы. Довольно часто явление, когда внешнее API - REST, внутреннее синхронное - gRPC, асинхронное - Kafka.
    Ответ написан
    Комментировать
  • Целевое обучение на IT-направлении: стоит ли того?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Ещё два года назад я бы сказал, что вышка в целом не нужна, а тем более с последующими обязательствами по отработке. Сейчас, когда устроиться на первое рабочее место стало чрезвычайно трудно, целевое выглядит как раз отличным решением, гарантирующим не только диплом, позволяющий проходить через первичные фильтры отбора, но и 3-5 лет стажа.
    Ответ написан
    1 комментарий
  • Как монетизировать знание Prolog?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Знание конкретно Пролога не монетизировать, а вот знание логического программирования можно. Разбирающемуся в этом предмете легче даётся функциональное программирование, type-level программирование, языки запросов, типа Datalog, разработка экспертных систем и т.п.
    Ответ написан
    Комментировать
  • Защищенный ТАЙМЕР для ограничения прохождения викторины по времени?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Элементарно же, когда пользователь начинает опрос, сохранять в БД запись, содержащую идентификатор опроса, идентификатор пользователя и время начала опроса.
    Ответ написан
    6 комментариев
  • В чем проблема?

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

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Даже на наличие высшего образования не смотрят, не говоря уж о магистратуре.
    Ответ написан
    4 комментария
  • Вылеты 1с без ошибок на дебиане, как исправить?

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

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

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Потому что Золотое Яблоко не хочет, чтобы их парсили.
    Ответ написан
    Комментировать
  • Структуры данных, алгоритмы паттерны проектирования для новичка?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Ну, про никуда - это преувеличение. Но во-первых, чем больше знаешь, тем больше программист, а во-вторых, конкурировать за первое рабочее место придётся с кандидатами, которые эти темы изучали скорее всего. Учить лучше всего по учебникам, как и всё остальное. Естественно, практикуясь на учебных примерах в процессе чтения.
    Ответ написан
    Комментировать
  • Действительно ли это реалии рынка?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Джуны никогда не были нужны, бизнес всегда хотел зрелого спеца с боевым опытом. В последние же годы ситуация ухудшилась. Во-первых, желающих вкатиться стало очень много, что увеличило конкуренцию на входе, естественно. Во-вторых, санкции, кризис в экономике, рост ключевой ставки - всё это ещё больше снизило желание бизнеса заниматься выращиванием специалистов. В-третьих, волчистые стали накручивать опыт, наниматели увидели, что якобы годовалые стали приходить тупые, и отреагировали повышением требований к опыту. Волчистые стали накручивать ещё больше, наниматели стали дальше поднимать планку. Этот инфляционный цикл сильно обесценил и без того невостребованных новичков. К тому же, если раньше кандидатам без опыт приходилось конкурировать за место только с кандидатами без опыта, годовалым с годовалыми и т.д., то теперь все эти слои слиплись в один. Мало того, что тупо больше людей теперь дерётся за место, так ещё и есть неиллюзорный шанс неопытному попасть на собеседование сразу после трёхлетки, например, что не оставляет никаких шансов. Ну и надо понимать, что вруны только портят рынок, "взять его в руки" им не удаётся. Обманешь максимум нанимателя в лице ООО "Мир гидпроприводов", где платят ветку, заставляют овертаймить и т.п. Нормальные компании просто выписку из трудовой сверяют с резюме.
    Ответ написан
  • Куда надо устанавливать Python и его библиотеки?

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

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Еще один важный критерий который мне сильно отсеивает количество вакансий это только аккредитованные IT-организации.

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

    Еще заметил что очень мало стало джуниорских вакансий.

    Их даже в лучшие времена почти не было, а сейчас страна в санкциях по уши и ставка ЦБ огромная, компании считают каждую копейку и готовы нанимать только зрелых специалистов.

    Вообще сейчас по моему какой-то кризис в IT

    Нет, у крепких мидлов и тем более сеньоров всё замечательно.

    Вдобавок начинает ИИ наступать нам на пятки

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

    Я начинаю, мне вроде интересно, но потом интерес угасает, потому что мне то за это никто не платит.

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

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Куда двигаться дальше senior разработчику? Новый язык, технологии, opensource, стартап? Восемь лет прошло с того моего ответа, всё ещё не понимаю, как можно попасть в такую ситуацию.
    Ответ написан
    5 комментариев
  • Для чего нужен DefaultServletHttpRequestHandler?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Spring
    Седой и строгий
    Чтобы разобраться в каком-то вопросе, нужно его декомпозировать и очистить изучаемую область от лишних элементов. Поэтому делаем минимальный проект с голым Spring MVC, без всяких там Boot'ов и Thymeleaf'ов.
    Структура каталогов:
    .
    │   pom.xml
    │
    └───src
        └───main
            ├───java
            │   └───com
            │       └───example
            │               Config.java
            │               DumbInitializer.java
            │
            └───webapp
                    test.txt

    pom.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
             http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.example</groupId>
        <artifactId>q1395400</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>war</packaging>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>21</maven.compiler.source>
            <maven.compiler.target>21</maven.compiler.target>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>jakarta.servlet</groupId>
                <artifactId>jakarta.servlet-api</artifactId>
                <version>6.1.0</version>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>6.2.6</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.4.0</version>
                </plugin>
                <plugin>
                    <groupId>org.eclipse.jetty</groupId>
                    <artifactId>jetty-maven-plugin</artifactId>
                    <version>11.0.25</version>
                    <configuration>
                        <webApp>
                            <contextPath>/</contextPath>
                        </webApp>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>

    Config.java
    package com.example;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    @Configuration
    @EnableWebMvc
    public class Config implements WebMvcConfigurer {
        @Override
        public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
            configurer.enable();
        }
    }

    DumbInitializer.java
    package com.example;
    
    import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
    
    public class DumbInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
        @Override
        protected Class<?>[] getRootConfigClasses() {
            return null;
        }
    
        @Override
        protected Class<?>[] getServletConfigClasses() {
            return new Class[] { Config.class };
        }
    
        @Override
        protected String[] getServletMappings() {
            return new String[] { "/" };
        }
    }

    Запускаем командой mvn jetty:run-war, открываем в браузере адрес http://localhost:8080/test.txt и видим содержимое файла test.txt. Без строки configurer.enable() получили бы 404.

    Обычно трогать DefaultServletHttpRequestHandler вообще не приходится. Во-первых, Boot автоматически конфигурирует обслуживание статики подходящим для большинства случаев образом. Во-вторых, если уж лезть в это, то следует задать явные маппинги адресов на пути, а не разрешать дефолтному сервлету обслуживать любой запрос, для которого нет обработчика, как запрос к статике.
    Ответ написан
    Комментировать
  • Как понять сколько max соединений в pgxpool-е тебе нужно?

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

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Нет.
    Ответ написан
    Комментировать
  • Как сконвертировать список в JSON?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    from itertools import batched
    
    a = ['A', 123, 'B', 321, 'C', 1234]
    b = dict(batched(a, 2))
    Ответ написан
    Комментировать
  • IT с медицинским образованием - реально?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Все специалисты ИТ смежные, почти никто не работает в чисто ИТ, все занимаются автоматизацией какой-то области человеческой деятельности. Естественно, чем лучше знаешь прикладную область, тем лучше решения способен разрабатывать. Так что в автоматизации медицины образование и опыт врача будут полезны. Однако, они не обязательны, многие из нас регулярно прикладную область меняют и изучают новую с нуля.
    Ответ написан
    Комментировать