Задать вопрос
  • В чем превосходство Typescript?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Как бы это странно не звучало, но одно из главных преимуществ TypeScript - это ускорение разработки в несколько раз. Да, когда еще ничего нет - разработка незначительно замедлится, так как помимо логики нужно описать еще и типы. Но это только в начале. И это не только возможность писать большую часть кода с помощью автодополнения. Поддержка существующего кода занимает в десятки раз больше времени, чем его начальное написание. Стоит ли вложить несколько лишних часов на старте, чтоб сэкономить в последствии месяцы? Как по мне стоит.

    Еще одним огромным плюсом является возможность проектировать на типах. Познав дзен TypeScript'а я перестал пользоваться UML, так как типы дают мне ту же наглядность, но при этом еще и сокращают время, так как типы - это уже код. Ну и источник правды остается один. Бизнес требования выраженные в типах не дают отклонится от них при написании логики, исключая возможность неправильной трактовки задачи. Перенеся задачу в типы, я могу обсудить ее с коллегами и исправить неточности еще до написания кода, что опять же сильно экономит время.

    Ну и отвчечу на некоторые Ваши сомнения:
    TSLint в VSCode прям жутко тугой
    TSLint официально deprecated, вместо него стоит использовать плагин к eslint, заодно можете мой конфиг попробовать.

    Типы? Есть JSDOC
    JSDoc в плане типов не умеет и 10% того, что умеет TypeScript. Кроме того, никто в здравом уме не пишет JSDoc на приватную логику, а значит проверки типов там не будет. JSDoc не гарантирует корректность рефакторинга, а вот благодаря TypeScript я, опять таки, точно не забуду обновить JSDoc.

    многие библиотеки nodejs не имеют типов
    может лет 5 назад так и было, но сейчас встретить библиотеку без типов - скорее исключение. Если библиотека популярная, но не предоставляет типов, скорее всего их уже написал кто-то другой, достаточно просто установить одноименный модуль из npm скоупа types и все будет работать само.

    Поддержка браузерами скомпилированного кода? Да какбы почти весь JS имеет поддержку 95%+, тот же Babel уже забыл когда использовал.
    Вообще это не основная задача компилятора TypeScript, а опциональная возможность. И babel + preset-env с ней справляются гораздо лучше. И никто не мешает использовать их вместе. А еще думаю вопрос времени, когда кто-то напишет оптимизатор кода использующий информацию о типах из TS.

    Примерно в каждой второй есть инстансы, на которые смотришь - и чешешь репу - а как называется тип этой переменной в @types/?
    import {someObject} from 'some-library';
    
    type TypeFromValue = typeof someObject;
    const valueCopy: TypeFromValue = {
        ...someObject,
        type: 'overrides',
        with: 'type check',
    };
    и кстати, вот пример того что JSDoc типы не умеют.

    //@ts-check
    и почти везде останется бесполезный any.

    P.S. удачи такие типы на JSDoc описывать
    P.P.S. Еще прелести современного TypeScript невозможные у...
    Ответ написан
    8 комментариев
  • Почему некоторые программисты на GO работают с бд на голом SQL без ORM?

    Не гошник, но расскажу в целом.
    1. На 1 уровень абстракции меньше. При работе с ORM нужно думать одновременно и об особенностях твоей ORM-ки и об особенностях базы.
    2. На сыром SQL некоторые вещи сделать проще, чем с ORM-ками.
    3. Лучше сырой SQL, чем тупая ORM-ка.
    4. Некоторые ORM-ки могут негативно влиять на производительность.

    Если тебе приходится при работе с ORM писать куски SQL-я (например для WHERE), передавать названия колонок в параметрах, и при этом ты не можешь использовать специфику твоей базы не опускаясь до уровня сырого SQL, то это плохая ORM.

    Нормальная орм-ка должна упрощать код и при этом не увеличивать пространство для ошибок.
    На сколько я знаю, Go не позволяет хорошую ORM-ку создать чисто из-за своего синтаксиса и системы типов.

    Нормальные ормки я пока видел только:
    1. В C# из-за Linq
    2. В Rust из-за макросов.
    Ответ написан
    8 комментариев
  • Как задетекировать изменение вероятности успеха в испытаниях Бернулли?

    Maksim_64
    @Maksim_64
    ML Engineer
    Если одним словом то тестирование гипотез:
    Например Cumulative Sum (CUSUM) Control Charts.
    1. https://www.ncss.com/wp-content/themes/ncss/pdf/Pr...

    2. https://www.osti.gov/servlets/purl/1374023 (с vpn)

    3. https://en.wikipedia.org/wiki/Sequential_probabili...

    4. Чего нибудь байесовое обязательно тоже имеется (погуглить)
    5. Огромное семейство Likelihood тестов тоже подойдет, p-это всего лишь параметр (погуглить).

    Будешь работать с CUSUM (это моя рекомендация для решения проблемы) там тоже тест статистика для кумулативный суммы и т.д. В конечном счете все сводится к тестированию гипотез.
    Ответ написан
    1 комментарий
  • Зачем нужны DTO, когда есть типы и интерфейсы в языках программирования?

    mayton2019
    @mayton2019
    Bigdata Engineer
    DTO объекты часто пересекают границы Языков (Java/JavaScript/GWT) и сетевых протоколов (Rest/Graphql/SOAP/Avro).

    И эти объекты могут нести на себе семантику только чистых данных. Вы не сможете через сеть
    из Java в C# например передать интерфейс или объект с методами.

    И многие фреймворки искусственно ограничивают DTO как раз для того чтобы эти объекты однозначно
    декодировались всеми сторонами-участниками протокола взаимодействия. А фреймворки - обычно
    предоставляют средства кросс-компилляции этих DTO.
    Ответ написан
    Комментировать
  • Странные запросы на сервер. Они представляют опасность?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    смогут ли они таким макаром выполнить все эти команды?
    Если у вас какая-нибудь дыра, которую они эксплуатируют, открыта, то смогут. Но вероятность этого не очень велика. Обновляйтесь вовремя и следуйте основным инструкциям по безопасности для ваших инструментов.
    Ответ написан
    Комментировать
  • Странные запросы на сервер. Они представляют опасность?

    @Everything_is_bad
    Добро пожаловать в интернеты, это боты, а не люди. Долбят в поисках уязвимостей, достаточно погуглить тему, чтобы понять. Ну и сразу, код, логи и прочие текстовые данные, показывай именно текстом, а не картинкой.
    Ответ написан
    Комментировать
  • Есть ли приложение для визуального программирования нодами такого рода?

    Tkreks
    @Tkreks
    Системный инженер
    Node-Red
    Можно развернуть в докере. Множество дополнительных нод доступно в палитре.
    Есть возможно писать свой код на JS из коробки, или с помощью дополнительных нод из палитры на python
    Ответ написан
    Комментировать
  • Как решить disnake.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'str' object has no attribute 'timeout'?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Как решить disnake.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'str' object has no attribute 'timeout

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

    Отсылая к высказыванию классика Vindicar: "Боты это не просто".

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Какой-то конкретной цели, объясняющей для чего мне это надо, пока что нет.

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

    Льюис Кэрролл
    Ответ написан
    1 комментарий
  • Имитация веб-камеры - как автоматизировать на python (linux)?

    Vindicar
    @Vindicar
    RTFM!
    Извини, а у тебя ничего не ёкнуло вот тут?
    sudo apt install v4l2loopback
    pip install v4l2loopback
    Ты понимаешь разницу между этими двумя командами?
    Первая - задействует системный менеджер пакетов для дистрибутивов на базе debian (deb-пакетов).
    Вторая - задействует встроенный менеджер пакетов питона.
    Это совершенно разные вещи, и они работают с совершенно разными репозиториями.
    Установить deb-пакет в систему, на которой будешь тестить, достаточно будет один раз.
    Прописать мод можно в /etc/modules, но можно и тупо делать modprobe при загрузке системы.
    И то и то, я полагаю, можно сделать хоть на живой системе, хоть внутри докера.

    После этого в автотесте запускаешь ffmpeg, можно даже тупо через subprocess вместо питоновских модулей. Сюрприз, сюрприз! Они все, насколько я знаю, именно так и делают под капотом. Я не видел модуля, который бы имел интегрированный ffmpeg.
    Ответ написан
    3 комментария
  • Простое решение для десктопа?

    @alexalexes
    Из моего опыта без глубокого погружения легко накидать формочку с парой textbox/combobox и кнопочкой, а потом вывести какую-то графику в Chart - это в C#. Из сохранений данных нужно научиться сериализовать объект и писать его в файл. Если нужна простенькая база данных, то можно прикрутить SQLite.
    Из неудобств при запуске на другом компе - нужно ставить пакет .NET той версии или выше, в которой скомпилирован проект.
    Для Chart и ходовой штуки как LINQ (очень упрощает жизнь, если перебирать массивы/множества/коллекции), нужно ставить .NET минимальной версии 3.5 и выше.
    Ответ написан
    2 комментария
  • Банят аккаунты в телеграмме при использовании библиотеки telethon. Кто-то находил решение?

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

    Если тебе нужно что-то типа аккаунта для бизнеса, то тогда посмотри в сторону ботов для бизнеса
    Ответ написан
    Комментировать
  • Какой ресурс более качественный, для изучения языка c#?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Если мы говорим, про C#, то грубая кривая такая:
    1. Проходишь метанит - поверхностное понимание C#
    2. Проходишь ULearn - уже более менее норм владеешь (все 2 курса)

    Нас в вузе по юлерну учили, он нам полностью заменял и пары и дз (отметки по нему ставили)

    Но ты указал еще Unity. Я не unity разраб, но:
    1. Приступай к нему ПОСЛЕ освоения C# (всех шагов выше)
    2. Можешь видео у Романа Сакутина посмотреть (+ он книгу выпустил, но не знаю можно ли советовать)

    PS: C и C# - это совершенно разные языки
    PPS: столько красных флагов в одном вопросе - simplecode и itvdn как основа, странное преподношение материала на ulearn, unity сразу после основ C#. Как по мне это все надо инвертировать и получится более менее полезные советы
    Ответ написан
    3 комментария
  • Где я могу найти "точно" описанную документацию Python?

    @Everything_is_bad
    https://docs.python.org/3/

    Почему документация написана таким неточным языком?
    это твое субъективное мнение, не понятно где ты там увидел "неточным языком". Ну возьми тогда учебники по языку и выбери более тебе понятно написанный.

    Можно ли где-то найти точное описание?
    "более точное" это уже исходники https://github.com/python/cpython
    Ответ написан
    9 комментариев
  • Знаю только Python и SQL. Нужно ли наращивать стек знаний перед попыткой смены работы?

    Перед сменой работы следует сначала пройти собеседование и получить оффер, иначе рискуешь остаться и без воробья и без журавля.

    или мне в настоящее время стоит относить себя к т. н. «Разработчикам приложений» (по классификации «Хабр Карьеры»)

    То что ты описываешь - похоже на бэкендера.

    Нужны ли на рынке труда специалисты с таким стеком за такую зарплату

    Вопрос не имеет смысла, ибо он не отвечает на главный вопрос - найдёт ли конкретный соискатель себе рабочее место.
    надо заняться самообразованием, изучая, скажем связку FastAPI + Kafka + Kubernetes?

    Самообразование никогда лишним не будет.
    Ответ написан
    Комментировать
  • Какие есть реализации фейковой оплаты через внешний сервис?

    condor-bird
    @condor-bird
    В любом из существующих есть тестовые режимы, например, в том же Stripe или PayPal.
    Ответ написан
    Комментировать
  • Как реализовать идеальный метод indexOf?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Вы неверно понимаете суть О-нотации. Почитайте книги Дональда Кнута про это.
    O(3) - это то же самое, что O(1). Нет разницы. O(N), O(N+1000), O(10*N) - это тоже одно и то же.
    В таких случаях речь всегда идёт не про конкретный кейс, а про обобщенный. Вы не знаете в каком порядке элементы вашего массива, где находится искомый, сколько всего элементов будет в конкретных кейсах, поэтому определяется ряд случаев: средний (по вероятности, если входные данные рандомные), худший (чтобы понимать границы и сколько может "висеть" алгоритм теоретически). Лучшие варианты обычно никого не интересуют, потому что и вероятность их мала, и смысла никакого нет в столь малых величинах.

    У вас типичный случай компромисса в реализации структуры данных. Вы всегда балансируете между памятью и скоростью. Больших семь шапок из овцы не выкроить никак.
    То есть, вы можете сделать такую структуру данных, которая "под капотом" будет держать древовидный индекс с данными или отсортированную по ключу карту значений для бинарного поиска. Хотя эти варианты - суть одно и то же.
    Если не рассматривается вариант размена производительности на память, то в этой задаче у вас будет только O(N) без вариантов.
    Если усложнить структуру данных, то можно добиться и O(logN) при поиске, и даже O(1). Почитайте как устроен словарь в питоне.

    Да, помимо сложности поиска у вас будет сложность вставки в структуру новых элементов. И тут опять трейд-офф. Ну а что вы хотели?
    Ответ написан
    3 комментария
  • Как правильно тестировать базу данных в .NET?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Решение простое - создаешь мок БД для тестов.
    1. Тест начинается - запускаешь БД и заполняешь данными необходимыми (как сказал Василий Банников можно сделать дамп с удаленными чувствительными данными)
    2. После каждого теста необходимо выполнить откат - если какие-то данные были добавлены/удалены/изменены
    3. При завершении тестирования удаляешь БД

    На мой взгляд, здесь просто много инфраструктурной работы. Полезные инструменты:
    1. Testcontainers - запускаешь БД в контейнере. Сам ей пользовался, есть много шаблонов для разных БД, чтобы с нуля не писать все. Можно также скрипт инициализации (схема, дамп) добавить - вот тебе и настройка
    2. В зависимости от фреймворка есть разные механизмы запуска кода после каждого тест-кейса. Если про xUnit, то:
      1. Тестовый класс реализует IDisposable - выполняется после каждого тест-кейса. Можно тут реализовать логику отката БД
      2. Для инициализации самого контейнера (чтобы каждый раз не запускать заново) - IClassFixture



    Также никто не отменял внешний инстанс БД использовать - просишь дба создать отдельную БД специально для тестов, просто запускать теперь параллельно не получится
    Ответ написан
    Комментировать
  • Почему компьютер хуже работает, пока не отключу блок питания?

    @tukreb
    Блок питания, вряд-ли, скорее всего у вас вздулись кондёры на материнке. Проверить это можно самому, отключите всё питание, и посмотрите есть ли на материнке такие цилиндрические контейнеры (бывают маленькие и большие) у которых не плоская крышка, а вздутая, либо ещё бывает снизу под ними что-то вытекло. Если такое есть со вздутием, или вытекшие, то вам в СЦ для починке, либо покупать новую материнку.

    кондёры должны иметь ИДЕАЛЬНО ровную поверхность и под ними тоже всё должно быть чисто, за исключением когда там под ними клей.
    Ответ написан
    6 комментариев