Задать вопрос
  • Как пройти путь от эникейщика до DevOps?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    Сперва стать сисадмином.
    Настрой мониторинг, подучи парочку скриптовых языков, автоматизируй задачи.
    Разберись с основными продуктами - базы данных, билд системы, гит+код ревью.
    Начни изучать контейнеры и облачные сервисы.
    Для начала хватит.
    Ответ написан
    Комментировать
  • Как пройти путь от эникейщика до DevOps?

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

    vabka
    @vabka Куратор тега Rust

    Особенно там, где был использован язык Си или С++

    (если исключить memory safety и fearless concurrency)
    1. Хороших плюсовиков найти всё сложнее, ибо молодые разработчики часто хотят что-то более современное/простое/приятное.
    2. Переход с какого-нибудь более высокоуровнего языка на Rust гораздо легче, чем на C++
    3. DX у Rust на порядо лучше.
    4. Код на Rust на порядок более выразительный, чем код на Си

    За счёт этого поддержка кодовой базы на Rust заметно дешевле выходит

    Например вот что Тинькофф пишет:

    Наш Процессинговый Центр занимается разработкой финансовых систем, критичных к даунтайму и времени обработки. Изначально мы делали все свои продукты либо на чистом Си, либо на плюсах (C++14), однако пару лет назад мы переписали большой кусок нашего бэкенда на Rust, и нам настолько понравилось, что теперь все наши новые процессинговые сервисы пишутся на нём.



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

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


    ну тут все-равно unsafe

    В проектах на Rust он явный и от него можно избавиться, завернув в безопасную обёртку, которая будет гарантировать корректную работу с памятью и ffi.
    В проектах на C++ у тебя по факту всё является unsafe.

    ну, нам еще нужен подсчет ссылок

    В плюсах тоже активно пользуются подсчётом ссылок и всякими умными указателями, если по коду не очевидно, когда можно будет освободить память
    Ответ написан
    6 комментариев
  • Как сделать динамическую подгрузку кода?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    C++ - компилируемый язык. Соответственно, вы содержимое строки в нем никак не исполните, только если не напишите свой интерпретатор или не скомпилируете код в строке как-то подобно JIT. Можно подключить библиотеку с какой-нибудь Lua и код на Lua исполнять. Или подгружать в специально выделенную память скомпилированный заранее (или библиотекой) машинный код и передавать управление ему (но это надо знать ассемблер, про страницы памяти, API операционной системы и все такое. Это очень сложно). Вообще, C++ - не лучший выбор для динамической подгрузки кода.

    defineCode(std::cout << 13 << std::endl); // work
    Работает, потому что тут макрос просто подставляет код в скобках вместо себя и он компилируется и выполняется.

    defineCode(stringLine); заменяется просто на stringLine, что есть бессмысленное выражение, вырезаемое еще на этапе компиляции.
    Ответ написан
    Комментировать
  • Актуальна ли на данный момент Desktop разработка на C# WPF?

    Dmitry Roo вас немного пугает.
    1. Десктоп всё ещё присутствует во всяком корпоративном сегменте - при разработке приложений конкретно для этого бизнеса.
    2. Десктоп всё ещё существует там, где нет надёжного сообщения с сервером. (например как-то имел "удовольствие" увидеть/поразрабатывать софт для судовых механиков, где бы отслеживались разные процедуры/инспекции/отчёты над корабельным оборудованием, а при появлении стабильного соединения - эти отчёты бы отправлялись на сушу.
    3. Десктоп всё ещё существует там, где тебе обращаться к серверу и не нужно. (пример - уже упомянутые профессиональные инструменты для разработчиков, типа dotMemory или dotTrace)

    А если говорить конкретно про WPF - мне кажется, что сейчас понемногу с него уходят либо на другие языки (Flutter тот же) либо переходят на кроссплатформенную Avalonia.
    Ответ написан
    1 комментарий
  • Как разрабатывать игру вместе с другом?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    PSD в репозиторий я бы не стал бы добавлять. Распухнет быстро на жуткие гигабайты. При удалении место не освобождается. Новая версия бинарного файла не дифом, а удалить / добавить.
    Ответ написан
    Комментировать
  • Как решить ошибка при установке Eslint на MacOS?

    Либо вызывай с sudo, либо устанавливай не глобально, а в каждый проект по отдельности.
    Ответ написан
    Комментировать
  • Чем не угодили 2G и 3G?

    @d-stream
    Готовые решения - не подаю, но...
    Это общая тенденция замены оборудования и технологий на следующие поколения. Ближайшие примеры: гужевые повозки и автомобили - они какое-то время сосуществуют, но на автострадах - ни-ни.
    Ну и экономика: в рамках выделенного диапазона частот в сетях новых поколений можно обслужить больше абонентов единовременно. Да и абонентам не очень комфортно наблюдать в местах массового скопления "5 палок и нет связи" лишь по причине занятости всех таймслотов.
    Вторая часть экономики: единовременно содержать сразу два поколения = двойным затратам на содержание.
    Ответ написан
    8 комментариев
  • Что нужно что бы шарить в компьютерных сетях?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Компьютерные сети - это широкое понятие. Чтобы заниматься монтажом кабельных сетей вообще ничего особенного знать не надо, достаточно иметь прямые руки и/или хорошего бригадира. А для разработки нового стандарта беспроводной связи понадобятся и математика и радиофизика.
    Ответ написан
    Комментировать
  • Какая должна быть нумерация релизов для сервисов?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Если сервис не обновляется, ему не нужно поднимать версию

    В целом версии ведутся по semver, через теги
    Ответ написан
    Комментировать
  • Почему postgres не считает null уникальным значением?

    Fragster
    @Fragster
    помогло? отметь решением!
    Это фича (и не только postgres). Поступить - поменять индекс, сделав его не UNIQUE, а UNIQUE NULLS NOT DISTINCT
    (и да, эта фича доступна только в постгре 15. для более ранних версий нужно хранить в этом поле не NULL, а, например, 0 (но тут есть свои нюансы с foreign keys))
    Ответ написан
    4 комментария
  • Уменьшается ли используемая память программы?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Не гарантированно, но в некоторых случаев компилятор действительно сможет переиспользовать место на стеке под переменную a для какой-то новой локальной переменной, когда a выйдет из зоны видимости. Но чаще это место просто будет пустым до конца функции и никакой экономии памяти вы не получите.

    Но вообще, делать так для экономии памяти никогда, категорически не рекомендуется. Код становится менее читаем а экономите вы на спичках. Это локальные переменные - они на стеке. Их много можно выделить только рекурсией или большими массивами (ну не объявите вы в коде миллион локальных переменных). В обоих случаях, если стека не хватает - надо или избавлятся от рекурсии/больших массивов изменением логики, или выносить их в кучу.

    Использование фигурных скобок для ограничения зоны видимости переменной действительно используется на практике, когда вам надо ограничить время жизни переменной и добиться вызова деструктора в определенное время. Так делают, например, когда захватывают мютекс в многопоточных программах - специальный класс-обертка в конструкторе его хватает, в деструкторе освобождает. И иногда не надо держать мютекс во всей функции, а только в определенном месте. Допустим, дальше идут долгие вычисления, не требующие мютекса. Тут логично мютекс освободить. Но это должно встречаться редко. Если вам в функции надо несколько раз такое проворачивать, то надо ее отрефакторить и разбить на части.
    Ответ написан
    Комментировать
  • Библиотеки для взаимодействия с DOCX?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если вы хотите сделать просто подстановку текста в шаблон, то можно выдернуть content.xml (помните, что xlsx - это просто ZIP), сделать подстановки и запаковать обратно.
    Ответ написан
    Комментировать
  • Как вызвать через рефлексию конструктор generic T класса наследника?

    Как вызвать конструктор с параметром int класса B ???

    Никак. У него нет такого конструктора.

    Как вообще создать объект класса B???

    Вызвав конструктор по-умолчанию. Через рефлексию - через Activator. Без рефлексии - через обычный new.

    А генериков тут нет.
    Ответ написан
    Комментировать
  • Как исправить ошибку при git push?

    Stalker_RED
    @Stalker_RED
    HTTP Error 413 - Content Too Large

    Это не у гита косяк, а у вашего вебсервера у которого лимит на размер заливаемых файлов.
    Настройте параметр client_max_body_size в nginx, или LimitRequestBody если у вас apache.
    (не забудьте перезапустить вебсервер или перечитать конфиг на горячую).

    Либо переключите git с https на SSH, тогда вебсервер не повлияет.
    Ответ написан
    1 комментарий
  • Програма для синхронизации ГуглДрайв (Линукс), есть такое?

    @pfg21
    ex-турист
    р-клоун !! :) и синхронизация и монтирование по моему всех существующих видов облачных хранилищ.
    плюс куча других проектов.
    Ответ написан
    6 комментариев
  • Как реализовать запуск приложения через консольную команду?

    GavriKos
    @GavriKos
    Для первого - и в винде, и в линуксе для этого достаточно прописать путь к папке с исполняемым файлом в PATH - все терминалы (наверное все) именно там ищут "команды" (а точнее команда это и есть бинарь).
    Ответ написан
    1 комментарий
  • Разница между JavaScript и HTML5 игрой?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    На html игры не пишут. Их всегда пишут на javascript
    Просто так называют игры, которые для отображения используют холст (canvas)
    Такое название сложилось исторически, с тех времен, когда игры в основном писались на флеше. Вот чтобы их как-то обособить игры на js стали называть играми на html5 в противовес флешу.
    Ответ написан
    Комментировать
  • Как раздать git hook для всей команды?

    Например есть husky - очень удобно, если с фронтом работаете.

    Если без сторонних инструментов, то можно хуки сложить в папку, которая будет трекаться в репозитории и поправить git config:
    git config core.hooksPath .githooks
    - это нужно выполнять для каждого репозитория у каждого разработчика. Можно упростить жизнь, вставив это в какой-нибудь скриптовый файл, который все обязательно запускают.
    Ответ написан
    4 комментария