Задать вопрос
  • Как сделать авто дополнение ввода как в PowerShell?

    @dronmaxman
    VoIP Administrator
    В Windows Terminal есть удобное авто дополнение в процессе ввода на основе


    Как думаешь, где windows этому научился?

    https://github.com/zsh-users/zsh-autosuggestions
    Ответ написан
    1 комментарий
  • Профориентация и выбор дальнейших путей развития?

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

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

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

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

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

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

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

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

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

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

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Но в 2024-м что-то изменилось. Все вдруг резко стали требовать работу в офисе, либо удалённо на территории России.

    Потому что до властей предержащих вдруг дошло, что тот, кто находится вне России - не должен зарабатывать в России
    Иностранных компаний на hh.ru стало кратно меньше.

    Это разве удивительно? Удивительно то, что там они еще есть.
    Получал зарплату и криптой, и на нероссийские банковские карты.

    Желающих рисковать и подставлять свою #опу под конский МПХ государства, которое запросто может усмотреть в этих переводах финансирование терроризма - стало меньше.
    почему раньше работу находил легко, а теперь не могу найти.

    Потому что закрутили гайки, и дальше будет еще хуже. Работодатели стали избегать таких "сотрудников", которые могут привлечь к ним повышенное внимание.
    Что я делаю не так?

    Ищете работу. Как Вы докажете например понетциальному работодателю, что не работаете на СБУ?
    Ответ написан
    7 комментариев
  • Куда двигаться дальше senior разработчику? Новый язык, технологии, opensource, стартап?

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

    Я был на вашем месте лет 5-6 назад. Точно так же достиг в Java определенного уровня, после которого все стало как-то не интересно. Новые задачи перестали быть новыми. Творческий процесс программирования стал машинальным кодингом. Думаю, подобный процесс выгорания характерен для любой профессии, не только для программирования. Психолого говорят, что профессионализм достигается примерно за 5 лет. Дальше рекомендуется менять работу.

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

    Можно еще в погоне за новыми проектами поискать работу на Upwork/Freelancer. Но Java-разработчикам там тяжело. Либо будет мелочь на подобие студенческих курсовых, либо будет нужен удаленный разработчик на фуллтайм в большой проект. Именно то, что вы сейчас делаете.

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

    Сейчас и этот пятилетний цикл подходит к концу. Пилю стартап :-).

    Как правильно посоветовал Дмитрий, нужно найти то, что нравится и идти в эту сторону. Должно быть "движение к" вместо текущего "движения от". Критерий выбора: "настоящая работа такой и должна быть – чтобы вы готовы были за нее доплачивать, лишь бы вам разрешили ее делать." - НЛПшники.

    Удачи!
    Ответ написан
    2 комментария
  • Куда двигаться дальше senior разработчику? Новый язык, технологии, opensource, стартап?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Как вы это делаете?! За 17 лет работы в ИТ у меня ни разу не возникало вопроса "Куда двигаться?", только "Где взять времени на освоение всего этого бесконечного изобилия технологий, углублённого изучения уже знакомого и реализацию множества идей?"
    Ответ написан
    4 комментария
  • Как временно повышать права пользователю?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    security definer и есть: проверка прав вызова функции (grant execute) будет проверять, может ли её вызвать этот пользователь, но сама функция дальше будет выполняться с правами владельца функции. В том числе с правами супера, если владелец - суперпользователь.

    Не забудьте revoke execute on function .. from public;
    begin;
    create role specific_activity;
    create function stat_activity() .. security definer;
    revoke execute on function stat_activity() from public; -- права на запуск не всем
    grant execute on function stat_activity() to specific_activity; -- а только этой роли
    commit;
    grant specific_activity to someuser;


    btw, для pg_terminate_backend есть предопределённая роль pg_signal_backend.
    Ответ написан
    1 комментарий
  • Как можно сделать проверку номеров квартиры, дома и улицы введенных пользователем?

    sabramovskikh
    @sabramovskikh
    dadata.ru
    Ответ написан
    Комментировать
  • Какие задачи решают python + ai если говорить о решении задач за деньги в качестве сотрудника или на фрилансе?

    Maksim_64
    @Maksim_64
    Data Analyst
    Задачи? список где в бизнесе не применяется AI будет короче.

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

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

    ИИ за 24 часа, это всегда потеря времени. Развитие это своего рода, сложный процент + определенный шум. Что бы это работало, нужно основание больше 1 и время. Основание, это математика, и дело не в каких то формулах, а в определенном развитии мышления.
    Ответ написан
    3 комментария
  • Покажите на ассемблере как выглядит защита от переполнения буфера?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Защита от переполнения буфера - это не пара магических инструкций, а проверка при работе с массивами или выделенными участками памяти (впрочем, для C/C++/ASM это примерно одно и то же), что указатель не выходит за границу выделенной памяти. Реализовано может быть самыми разными способами. Например, в C есть функция strncpy, которая делает всё то же самое, что strcpy, только проверяя, что копируется не более заданного количества байтов. Если вы правильно передали в неё размер буфера, то переполнения при операции не произойдёт.
    Так что на языках низкого уровня только проверки, проверки и ещё раз проверки.
    Ответ написан
    9 комментариев
  • Какой выбрать клиент для протокола VLESS с раздельным тунелированием процессов?

    @apppostol
    Неправильно настроили.
    Галочку встроенный tun снимите.
    А при самом подключении, ставьте ее там вверху справа.

    Там не зря стоит звездочка над белым списком, и над встроенным tun.
    Ответ написан
    Комментировать
  • Как реализованы асинхронные методы c#?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Вот вам перевод (часть первая, а всего там шесть частей) фундаменнтальной статьи по async/await одного из разрабочиков .NET в Microsoft (а именно - Stephen Toub).
    Читайте и просвещайтесь.

    PS Автор вопроса никак не желает считать текст выше ответом на свой вопрос - а зря. Потому что по-другому на форуме на него не ответишь - слишком много букв писать надо. Но сегодня - выходной, так что - попробую.
    И самое главное, что вам следует осознать - что код асинхронного метода, который вы написали, и код машины состояний, в которой он преобразуется (и далее - транслируется в IL и компилируется в команды процессора) - это два разных кода, пусть и эквивалентных.
    Если очень вкратце:
    • компилятор преобразует код асинхронного метода до неузнаваемости, в ту самую "машину состояний": класс, в котором есть метод, ее реализующий, и есть поля для данных, как нужных для работы самой машины состояний (в частности - для хранения состояния), так и для хранения локальных переменных исходного метода (да-да, в стеке они не хранятся);
    • каждый кусок исходного метода - начальный, между двумя await и завершающий - преобразуется в отдельный кусок метода машины состояний, выполняемый, когда выполнение машины состояний возобновляется в определенном состоянии; этот код производит действия, определенные в этом куске метода, и либо меняет состояние на новое значение и переходит к ожиданию (там, где в исходном асинхронном методе написан оператор await), либо завершает выполнение метода машины состояний;
    • для выполнения перехода к ожиданию используется объект awaiter'а, получаемый методом GetAwaiter() операнда операции await;
    • перед переходом к ожиданию проверяется возможно продолжение без ожидания, если это возможно (метод IsCompleted() awaiter'а возвращает true), то ожидания не происходит, а возобновляется выполнение машины состояний уже для нового состояния;
    • запуск ожидания происходит во внешнем относительно асинхронного метода коде - в объекте awaiter'а;
    • и при завершении метода машины состояний, и при запуске ожидания метод машины состояний возвращает управление в код, который вызвал в этот раз метод машины состояний (для одного вызова асинхронного метода вызовов метода машины состояний может быть много, см. дальше);
    • первый возврат из метода машины состояний происходит в вызывающий метод, он возвращает объект задачи, позволяющий отследить в вызывающем методе завершение работы машины состояний ( и тут есть нюанс, связанный с возвращением ValueTask, а не Task);
    • при окончательном (а не при запусе ожидания) выходе из метода машины состояний этот возвращенный объект задачи завершается;
    • после завершения ожидания метод машины состояний вновь вызывается: в типичном случае - в свободном потоке из пула потоков, но возможны варианты (какие - курить тему Synchronization Context); и он продолжает свое выполнение для нового состояния

    Это - максимально урезанное описание работы асинхронного метода.
    Если вы смогли из этого описания понять ответ на ваш первый вопрос - хорошо. Если нет - читайте статьи(ссылка выше), или книги (лично я рекомендую главу про асинхронные меотоды из книги Рихтера "CLR via C#").
    Касательно второго вопроса. Задачи, выполнение которых ожидает асинхронный метод, будут выполняться совершенно параллельно, каждая - в своем потоке из пула, возможно - на разных ядрах/процессорах). А асинхронный метод в это время не будет выполняться совсем: поток в котором он выполнялся, будет дальше выполнять код после его вызова в вызвавшем его методе (или код, возвращий поток в пул, если это был вызов машины состояний после ожидания). А после завершения обеих этих задач выполнение метода машины состояний, в который был преобразован асинхроннный метод, будет возобновлено и задача, которую возвратил асинхронный метод, будет завершена.
    Ответ написан
    Комментировать
  • Как в Maven-проекте собрать код отдельно от ресурсов?

    @shushara4241
    Тут нужно понять такую идею, что ресурс - это неотъемлимая часть программы, которая должна существовать для ее нормальной работы и именно поэтому помещается в resources и существует внутри одного jar-файла. Если эти файлы убрать из jar, то они перестают быть "ресурсами", а становятся обычными файлами в файловой системе и работать с ними нужно соответственно - через пакеты java.io/java.nio условно
    Ответ написан
    Комментировать
  • Как тут узнать точную дату вопроса/ответа/комментария?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    4 комментария
  • Как лимитировать трафик с определенной страны в Nginx?

    @dodo512
    limit_req_zone
    В качестве ключа можно использовать текст, переменные и их комбинации.
    Запросы с пустым значением ключа не учитываются.

    С помощью map новой переменной присваивать либо пустую строку либо $binary_remote_addr.

    limit_req_zone $bad_locale zone=zh_limit:10m rate=10r/s;
    
    map $cookie_locale $bad_locale {
        default     "";
        "zh"        $binary_remote_addr;
    }

    Дальше использовать limit_req zone=zh_limit как обычно. Ограничивать будеть только тех кто с нужной кукой.

    Ещё вариант $http_accept_language если нужно проверять содержимое заголовка Accept-Language.
    map $http_accept_language $bad_locale {
    default     "";
    ~^zh        $binary_remote_addr;
    }
    Ответ написан
    3 комментария
  • GitHub, GitLab или BitBucket?

    Я рекомендую Gitlab
    - Можно хостить весь Gitlab у себя. Вначале это может показаться лишним, но многие работодатели так делают, поэтому навыки по работе с Gitlab пригодятся.
    - Отличный CI. Как по мне, гораздо лучше чем Github actions
    - Проекты в Gitlab можно спокойно и очень просто синхронизировать с тем же самым Github прямо из интерфейса Gitlab, таким образом мы получаем преимущества обеих систем.

    bitbucket всё, забудьте о нём.
    Ответ написан
    7 комментариев
  • Как лечится кризис начинающего программиста?

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

    Возьмем, как пример, тот же бух.учет на предприятии. Как Вы думаете, почему 1С Бухгалтерия так широко распространилась в РФ и СНГ? Эта программа позволяет бухгалтеру в 2-3 клика мышки сформировать отчет для регулятора(ФНС, ПФР и т.д.), вместо того чтобы человеку сидеть руками искать платежные поручения, вычислять налоги и т.п. Софт просто подтягивает выписку из банка, анализирует ее и выдает готовую для печати бумажку, что экономит бухгалтеру сильно много времени. Расчет заплатанный налогов и отчеты в соц.фонды это вообще красота - 8 кликов мышкой и все готово :-)

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

    И вот, далее Вы для себя определитесь, какая Ваша основная цель? Какой Ваш основной посыл обществу?

    Личной мой посыл - "Я помогаю людям экономить: время, деньги, нервы и т.д.".

    Как я это делаю?
    У меня сначала был маленький интернет-магазин по продаже катализаторов для бензина(в поиск "кондиционеры метала для а/м"). При соблюдении определенных условий, расход топлива на малометражках снижался от 20% до 45%
    Вторым моим проектам было небольшое мобильное приложение для отслеживания хода исполнительного производства в ФССП(для взыскательней, уже сдохло). Мне и моим знакомым(не юристы) это экономило достаточно много времени на ругань с приставами, чего они должны делать и т.д. Кто сталкивался с этой службой должен знать эффективность и оперативность их работы, особенно в регионах...
    Сейчас я пишу небольшой конструктор сайтов, который поможет одной дружественной мне веб-студии сильно оптимизировать процесс создания низкобюджетных сайтов визиток

    К чему я все здесь это пишу? Я пытаюсь донести до Вас, что нет Вам смысла учить программирование на какой бы то ни было языке ради самого программирования. Нет смысла Вам учить алгоритмы, структуры, паттерны и т.д. ради их самих.

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

    Если говорить о чисто практических инструментах(функции стандартной библиотеки, фреймворки и т.д.)... Лично я могу считать себя профессионалом в какой бы то ни было технологии, ни когда я прочитал 1-2 книги и/или написал 1,5 задачи оттуда же. С таким уровнем я не могу сказать что я знаю язык/технологию в принципе, просто знаком - да, но я ее не знаю. Считать себя профессионалом я могу после того как решу не менее сотни задач, используя эту технологию и написал не менее 1 млн строк кода, именно написал, а не сгенерировал rake/gii/artisan или чем-то там еще.

    Вам же я желаю не останавливаться, развивайтесь. Мастерство приходит с опытом.

    P.S.: от холиваров на тему 1С прошу всех воздержаться
    Ответ написан
    11 комментариев
  • Настройкии IIS 10 на высокую производительность?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Если вам нужна производительность, то следует выкинуть IIS в топку и использовать стандартный nginx на debian/centos. А если у вас в приложении нет жесткой привязки к винде, то и винду можете выкинуть в топку и использовать линукс в качестве сервера для вашего приложения.
    Ответ написан
    3 комментария