• С чего начать обучение программированию?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Предположим, вы – учитель, чья задача научить школьника/студента программированию. С чего можно начать первое занятие? Можно начать рассказывать о системах счисления, архитектуре процессора, компиляции, интерпретации и прочих вещах, но разве они и вправду так нужны новичку, которому надо просто написать змейку?

    Начинать нужно с того, зачем вообще это нужно ученику, и что у него должно получиться в результате.
    А что именно изучать - проще посмотреть как это сделано у других. Например глянь как устроен курс CS50 - это не только лишь программирование, а в целом компьютерные науки.
    Ответ написан
  • Как называются и зачем нужны такие штуки [field:]?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Это цели атрибутов - то для чего атрибут предназначается.
    RTFM
    Ответ написан
    Комментировать
  • Как связать React + GoLang?

    package main
    
    import (
        "encoding/json"
        "net/http"
    )
    
    func main() {
        http.HandleFunc("/api/data", func(w http.ResponseWriter, r *http.Request) {
            data := struct {
                Message string `json:"message"`
            }{
                Message: "Привет, мир!",
            }
    
            w.Header().Set("Content-Type", "application/json")
            w.WriteHeader(http.StatusOK)
    
            if err := json.NewEncoder(w).Encode(data); err != nil {
                http.Error(w, err.Error(), http.StatusInternalServerError)
            }
        })
    
        http.ListenAndServe(":3001", nil)
    }


    В целом так же как и на node, python, dotnet)
    Делаешь небольшой сервер с endpoint, в этом случае /api/data и делаешь на него запрос с react, localhost:3001/api-data, делать запросы можно через fetch, axios. Ну и описываешь route дальше. таких роутов можно делать много, это вариант http запросов. Еще есть gRCP, ну для начала лучше разобраться с этим)
    Ответ написан
    1 комментарий
  • Как выбрать монитор для программиста?

    pindschik
    @pindschik
    ФЫВА ОЛДЖ
    Во первых тут всё сугубо индивидуально, кому-то "медведь на ухо наступил", а некоторым в глаз, кому-то надо нормальный монитор и глаз видит все недостатки матрицы, а кто-то влюблен в древний выгоревший мутно-серо-зеленый бенк. Во вторых в этом вопросе нельзя обойтись только выбором монитора...

    Поскольку вас интересует только текст и два цвета, черный и белый - то:

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

    - пульсация - она невидима, но от нее возникает утомление "зрительного анализатора", хотите под вечер иметь "глаза в кучу" - сделайте себе побольше пульсации.
    Обеспечьте освещение в помещении с пульсацией не выше 5%. Установите себе локальное освещение (лампу настольную) - и тоже без пульсации. В идеале конечно - лампа накаливания, но будем реалистами... Имейте ввиду - все дешманские изделия на светодиодах - как правило дают пульсацию ближе к 100%.

    - Монитор - как правило при 100% яркости - пульсация подсветки близка к нулю. Но регулировка яркости делается на дешевом ШИМ, поэтому на 50% яркости - у вас будет 100% пульсации. Вывод - подберите матрицу, на которой на 100% яркости - будет комфортный уровень белого. И не убавляйте яркость, что бы вам тут не советовали. А вечером - если в помещении темно - включайте локальное освещение (настольную лампу).

    - Не берите очень большую диагональ - глаза имеют пределы комфортного "хода". Если вы их превысите - начнете крутить головой - это очень утомляет. Для игр широкоформатные моники - здорово, а для работы лучше два, но обычных. Формат монитора - смотря по задачам, но код обычно вертикальный, стало быть лучше монитор повыше (с соотношением сторон 16:10), хотя их теперь труднее найти за адекватные деньги.

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

    - Обеспечьте пониженную блескость. Матовый экран и правильное расположение относительно окна и источников освещения.

    - Моргать. Некоторые забывают. Если это проблема и глаза пересыхают - купите очки - нулевки (ну или смотря по зрению). Очки снижают вентиляцию в районе глаз и унос влаги.
    Ответ написан
    Комментировать
  • Как выбрать монитор для программиста?

    Adamos
    @Adamos
    Матовый, а не глянцевый экран.
    Цифровой, а не аналоговый интерфейс.
    IPS или VA, а не TN - не столько потому, что передача цветов, сколько потому, что в ней наверняка не будет "кислотных" нерегулируемых цветов из-за экономии на матрице и подсветке. Я предпочитаю IPS, поскольку на тормозные VA, размывающие страницу при прокрутке, уже насмотрелся.
    24" - за глаза, если у вас обычный рабочий стол. Все эти многометровые диагонали и 2k/4k - просто эхо вау-импульсов, для работы с текстом они на хрен не нужны.
    После покупки приложить к монитору хорошо освещенный лист мелованной бумаги и отрегулировать яркость максимально близко к нему. Даже если при этом монитор потеряет яркий "витринный" вид и будет казаться тусклым и скучным. Собственно, этот пункт для глаз важнее всех выше перечисленных ;)
    Ответ написан
    Комментировать
  • Как выбрать монитор для программиста?

    @CBET_TbMbI
    На самом деле всё сугубо индивидуально. Нужно идти в магазин и смотреть самому. Одним нравится ИПС, другим наоборот, лучше самый банальный ТН.

    Из универсальных советов:
    1. Диагональ лучше побольше. Если монитор один, то на мой вкус оптимум 27-34 дюйма. Расположить рядом несколько документов или окон бесценно.
    2. Не гнаться за кучей пикселей. Иначе и шрифты и элементы управления будут весьма мелкими, что утомляет и глаза и руку на мыши. На мой вкус вполне достаточно ФуллХД (1920х1080) для мониторов поменьше или 2к (2560х1440) для мониторов побольше. Даже о 4к надо сначала хорошо подумать перед тем, как брать, не говоря уже о чём-то большем.
    3. Антибликовость/матовость хорошо, но не совсем панацея. Лучше организовать рабочее место так, чтобы блики и отражения не образовывались.
    Ответ написан
    5 комментариев
  • Нужно ли учить весь синтаксис?

    Viji
    @Viji
    DevOps Engineer
    Основные конструкты надо учить, классы, передачу типов, лямбда выражения

    эту кач... берите ))
    The C# Player's Guide (5th Edition) by RB Whitaker
    Ответ написан
    Комментировать
  • Как получить внешний API в Web API C#?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Используй GetFromJsonAsync<T>(url) метод у HttpClient.

    В T указываешь объект, который нужно десериализовать, а в url - адрес, по которому нужно послать запрос. Для httpbin, например
    client.GetFromJsonAsync<SomeObject>("httpbin.org/get");


    Класс объекта создаешь сам.

    Туториал на метаните
    Ответ написан
    1 комментарий
  • Как реализовать SQL движок в своём приложении?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    1. GraphQL - специальный язык запросов. Можно изменять/обновлять/добавлять/читать. Есть полноценный пакет, который парсит запрос и выполняет его. Можно к In memory коллекциям подкрутить. Но это не SQL

    2. OData - тоже язык запросов. Можно изменять/добавлять/читать/удалять. Он достаточно старый и разобраться сложнее. Тоже есть фреймворк, который автоматизирует работу по парсингу/выполнению. Это также не SQL

    3. In Memory sqlite - можно запустить SQLite в памяти и проксировать запросы уже ему.
    Ответ написан
    Комментировать
  • Имеет ли смысл хранить refresh-токены?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Refresh-токены хранят для проверки на повторное использование. При первом использовании ставится пометка, при попытке повторного использования блокируются все refresh-токены пользователя. При следующем обновлении с любого клиента данного пользователя потребуется полная аутентификация. Можно хранить не весь токен, а только uid токена и id пользователя.
    Ответ написан
    Комментировать
  • Как запустить сайт на С# в Ubuntu 20.04?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    https://learn.microsoft.com/ru-ru/aspnet/core/host...

    Как именно собирался он? На убунте ты сможешь запустить приложение только если используется .NET 5+ или Core, но не .NET Framework.

    Для этого тебе нужен соответствующий рантайм:
    https://learn.microsoft.com/en-us/dotnet/core/inst...
    Ответ написан
    3 комментария
  • Где можно посмотреть реализацию готовых и профессиональных WebAPI в связке с клиентом?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Microsoft создал референсный микросервисный проект - eShopOnContainers. Там есть основные паттерны проектирования, клиенты различные (ajax, mvc).

    А вообще, это только часть общего репозитория с проектами под различные кейсы - dotnet-architecture

    Если есть время, то можно и книгу прочитать по этой архитектуре
    Ответ написан
    Комментировать
  • .Net 6 где хранить настройки?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Кажется, тут сразу три независимые вещи, которые часто хранят раздельно:

    1. Собственно настройки
    Их удобнее всего хранить в appsettings.json, который можно спокойно закоммитить в репозиторий.
    В коде можно получить к ним доступ через IConfiguration или IOptions

    2. Секреты (пароли, токены, итд)

    Строку подключения в общем то решил захардкодить.

    Остается имя админа и пароль + почта.

    Их лучше в репозитории не хранить.
    Благо IConfiguration можно наслаивать и прокидывать секреты через переменные окружения, например, или использовать какой-нибудь Vault или keyring.
    Уже упомянутый диспетчер секретов можно использовать только для разработки, но не для прода.

    3. Фича-флаги.

    Дальше динамическая смена настроек как то:
    OAUTH авторизация, которую выключать и включать можно.

    Их часто хранят в базе данных, да. Есть также несколько уже готовых решению для удобного управления фича флагами.
    Гуглить feature flags.
    https://learn.microsoft.com/en-us/azure/azure-app-...

    4. Если есть конфиги, которые нужно менять на лету, то тут нужно уже смотреть, как именно нужно отрабатывать изменение конфигов.
    Например мы храним такие конфиги в etcd и явно подписываемся на изменения. В случае изменений - делаем какие-то действия.

    В дотнете для работы с такими конфигами есть интерфейс IOptionsMonitor
    Ответ написан
    1 комментарий
  • Как бороться с race condition при обращении к REST API во Vue?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Просто не давть пользователю повторно тыкать там, где это вызовет повторный запрос, пока идёт загрузка текущего?

    Но если хочется быть ленивым - можно просто обернуть запросы в leading debounce-promise.

    Все эти thunk и saga - полная ересь, порождённая богомерзким redux.
    Ответ написан
  • Какую LMS выбрать Фрилансеру и Руководителю для обучения сотрудников в 2023?

    @systembro
    Ну замену Moodle сложновато будет найти. Есть, конечно, iSpring Learn LMS, но вы будто ищете что гибче, выбор невелик: Chamilo, Canvas lms, ILIAS...
    Ответ написан
    Комментировать
  • Почему не проходит Authorize?

    @OwDafuq
    Токены отправляются с клиента в заголовке в формате "Bearer eyJhbGc......"

    Неправильно передаете токен в заголовке, так генерирует Swagger:
    65003f7bbe115283639973.png
    Ответ написан
    2 комментария
  • Какой стек необходим для изучения GraphQL и Apollo?

    @holllop
    Ну смотри. Если ты собираешься изучить работу с GraphQL и Apollo, то нужны хотя бы базовые знания по Node.js, так как Apollo в значительной степени связан с экосистемой Node.js и использует его для создания серверов GraphQL.
    Теперь к основным темам которые желательно знать(список не полный тут только те, что я вспомнил):
    1. Express.js: Express является популярным фреймворком для Node.js, и его знание будет полезным при создании сервера GraphQL с помощью Apollo. Рекомендуется изучить основы Express.js, такие как маршрутизация, обработка запросов и ответов, и middleware.
    2. Работа с базами данных: Apollo и GraphQL часто используются для запросов и манипуляций данных в базах данных. Поэтому полезно знать основы работы с базами данных в Node.js, такие как использование ORM (например, Sequelize или Mongoose), выполнение запросов SQL или MongoDB и работу с моделями данных.
    3. Асинхронное программирование: В GraphQL и Apollo запросы часто выполняются асинхронно. Поэтому знание принципов асинхронного программирования в JavaScript, таких как использование промисов, асинхронных функций и async/await, будет полезным.
    4. REST API: Хорошее понимание понятий и принципов работы с REST API также может быть полезным при изучении GraphQL, так как GraphQL может быть использован как альтернатива REST API. Рекомендуется изучить основы RESTful API и понимание различий между REST и GraphQL.
    Это те что мне первые приходят на ум возможно дополню список
    Ответ написан
    3 комментария
  • Как в контроллеры привязывается CancellationToken?

    vabka
    @vabka Куратор тега ASP.NET
    Токсичный шарпист
    Если совсем боишься - можешь брать CancellationToken не из аргументов, а из контекста (HttpContext.RequestAborted)

    А подсовывает его тебе рантайм через процесс под названием model binding:
    https://learn.microsoft.com/en-us/aspnet/core/mvc/...
    Биндинг происходит чисто по совпадению типа и имя аргумента не влияет на него.
    Ответ написан
    5 комментариев
  • Как при сборки мусора и перемещении объекта, сохраняется корректность ссылок?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Управление памятью в .NET для профессионалов

    Как работает сборка мусора.
    В .NET используется 2 фазная сборка мусора: Mark & Sweep (Пометить и Убрать).

    Mark

    На этом этапе обходится весь граф объектов. И выявляются все недостижимые.

    Каким образом достижимость объектов определяется?

    Достижимые это:
    - Аллоцированные на стеке
    - В статических полях
    - Достижимые из достижимых (см. выше)

    Все объекты, которые не удалось достичь (в граф не попали) - являются недостижимыми.

    Но на стеке лежат числа. могут быть как числами, так и адресами, как и числами?

    JIT копилятор достаточно умный, чтобы сгенерить код, который будет знать, что за объект/ссылка лежит на стеке. Так и получаются знания об объектах.

    Sweep

    Тогда итог, что языки с сборщиком мусора, под в 2 раза медленнее должны быть.(помимо сборки)

    Вот тут интереснее. Есть несколько хаков как достигается большая производительность.
    1. Линеризованное пространство памяти.
    Адреса 0, 1 и 2 поколения расположены не абы где, а последовательно, друг за другом. Т.е. если нужно сократить пространство 0 поколения, то это означает простое передвигание указателя влево.

    2. Переход в след. поколение происходит не всегда
    Из 0 в 1 - переход быстрый, но из 1 в 2 - не всегда.
    На этом этапе тоже может не затрачиваться много времени.

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

    Теперь где-то, сборщик мусора, начинает переносить arr в другое место.

    Ты слишком большой массив выделил, он аллоцируется в LOH. Оттуда не вытащишь.

    Я много о чем не упомянул. Например, очередь финализации, таблица дескрипторов (Handle), сегментирование памяти и т.д. но ответы на основные вопросы дал
    Ответ написан
    2 комментария