• Существует ли документация sfml для C#?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Какая разница, от .Net там только обёртка к сишному коду, поэтому все аргументы функций те же самые.
    Ответ написан
    7 комментариев
  • Почему дефолтном шаблоне один Program.cs вместо Program.cs и Startup.cs?

    Предположу, что вы увидели новый шаблон из .net 6:
    var builder = WebApplication.CreateBuilder(args);
    var app = builder.Build();
    app.MapGet("/", () => "hello world");
    app.Run();

    В .NET 6 ввели новый более компактный синтаксис, который заменяет Startup.cs.
    Гуглить по словосочетанию "asp net core minimal api"
    Если очень хочется - можете руками создать Startup.cs, его не удалили.
    Ответ написан
    2 комментария
  • В чем суть такой записи в reset.css?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Это разные по сути объявления.
    content: ""; - задаёт содержимое псевдоэлемента (пустую строку)
    content: none; - говорит, что псевдоэлемент вообще не генерируется
    Ответ написан
    2 комментария
  • Деобфусцировать js имеющий _0х?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Защита основана на том факте, что дешевле сделать своё собственное решение, чем вскрывать защиту. Так что выбор простой:
    1) Заплатить тому, кто написал оригинальный скрипт.
    2) Заплатить другому, кто может написать такой же скрипт.
    3) Чуть больше заплатить тому, кто снимет защиту.

    Лично я на твоём месте выбрал бы платить меньше, а не больше.
    Ответ написан
    Комментировать
  • Существует ли зрение для робота без программирования?

    @calculator212
    ну это ж бред в наше время, тратить ресурсы на такие базовые, по моему, вещи. Сам я, если что, хеловорлд на питоне или баше, ну может чуть больше.
    как по мне бред так рассуждать с знаниями "хеловорлд на питоне или баше", что-то +/- готовое есть на гитхабе.
    "робот, та херня, которую ты объехал заехав в комнату называется мяч, прикати его мне"
    Конечно люди добавят возможность распознавания речи, понимания смысла слов на русском языке, а потом отдадут это в свободный доступ в скомпилированном виде и с открытыми исходниками.
    каждый производитель робота пылесоса заново изобретает велосипед
    Они могут покупать ПО у компании специализирующейся на этом.
    Ответ написан
    5 комментариев
  • Почему Thread работает так?

    Это не тред виноват, а замыкания.
    Когда ты ссылаешься в лямбде на переменную - к ней обращение происходит по ссылке.
    Вот и получилось, что на момент запуска значение i уже 2.
    Решить эту проблему можно, если скопировать значение i в новую переменную вот так:
    for (int i = 0; i < 2; i++)
    {
        var i2 = i;
        Thread thread = new Thread(() =>
        {
            Console.WriteLine("main index: " + i2);
        });
        thread.Start();
    }
    Ответ написан
    Комментировать
  • Что лучше использовать .NET Core или Django?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Лучше использовать то, что лучше знаете.
    Ответ написан
    Комментировать
  • Как округлить число в C#?

    Можно например так:
    Math.Round(625d / 10d, 0) * 10d; //620
    Math.Round(625d / 100d, 0) * 100d; //600
    Ответ написан
    Комментировать
  • В чем сложность поддержки проектов на Go?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    Более четырёх лет пишу на Go, лично для меня поддерживать проекты на других языках сложнее ))
    До Go много лет писал на Perl/PHP/Python/Java/C/Ruby on rails/JavaScript и "крутил" еще не мало чего.
    Сейчас пишу только на Go и Python.

    Основная сложность в Go - это то, что если вы начинаете писать "криво" - то писать так очень трудно :))
    Подход к реализации в Go достаточно непривычный для тех, кто приходит из скриптовых языков.
    Например запрет циклических импортов - это самое первое, что "взрывает" мозг :)
    Нужно время чтобы адаптироваться после скриптовых языков.

    Про обработку ошибок - это да, это, пожалуй, единственное что мне не нравится в Go.
    Для себя я решил эту проблему за 1-2 часа :) и больше меня это не беспокоит.

    По ООП - в Go оно есть, лично мне оно нравится намного больше, чем ООП в других языках ))
    Всё, что реально нужно - всё есть, но при этом ничего лишнего нет.
    Интерфейсы - просто прекрасны :)) Каналы, горутины - это просто "счастье" :))

    А если объективно - то я бы не стал говорить о сложности поддержки проекта применимо к какому то конкретному языку.

    Как правило сложность поддержки возникает там, где нормальная архитектура не заложена в проект.
    Т.е. проект как могла так и писала куча людей плюс, как обычно, сделать нужно было побыстрее )), от этого никто вообще не думал об архитектуре и получилось то, что получилось :))
    Про покрытие тестами и документацию мы вообще не говорим )))

    А когда в таком проекте нужно что-то доработать или исправить ошибку, то почти всегда очень не просто найти то место, где нужно править, и после правок в одном месте, как правило, что-то ломается в другом :)

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

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

    Хочется добавить, что как бы не писали про Go, что он простой и т.д. - он явно сложнее Python/PHP и т.д.
    Это еще один повод сказать, что поддерживать код на Go сложно ))

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

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Для начала обратите внимание сюда

    619cb26411c5c012936233.png

    Здесь видно, что результат поиска выдал сразу страницу каталога с мониторами. Т.е. поисковик проиндексировал сайт и выдает нужные страницы в результатах поиска.
    Это забота поисковой системы.

    Чтобы поисковик более точно определял содержимое, вы можете помочь ему.
    Для этого существуют системы микроразметок.
    На ситилинке используют довольно популярную schema.org

    619cb31e3cbf5863884297.png

    На этом скриншоте показана разметка хлебных крошек. Аналогично, есть схемы для разметки карточек товара, адресов организаций и т.д. (см на сайте schema.org и в справке яндекса).

    Все эти разметки позволяют поисковым системам более релевантно индексировать содержимое сайта, а также выводить всякие доп. виджеты (разделы на сайта, адреса и контакты прямо в поисковой выдаче и всякую такую хрень).
    Ответ написан
    2 комментария
  • Golang подходит ли для создания сайтов?

    @MadridianFox
    Web-программист, многостаночник
    1) Go компилируемый, само собой скорость выше, но если вы на маленьком сайте упираетесь в скорость исполнения кода, то проблема скорее в коде, и выбор более быстрого языка избавит вас только от симптома, но не от болезни
    2) на seo влияет только то ЧТО вы отдаёте пауку. Не важно на каком языке пишется программа, которая отдаёт html
    3) Программа написанная на go сама работает как сервер. Более того, это не какой-то сервер приложений, как например tomcat, нет, вы сами будете писать цикл обработки входящих соединений - т.е. вам необходимо этот самый серер реализовать. В отличие от php+apache, где в качестве сервера выступает apache, который при необходимости вызывает php. Ставить ли apache или nginx перед go сервером вы решаете сами.
    4) Поддерживает. На скорость работы СУБД не влияет то, на каком языке написана программа, которая к ней обращается.
    5) Фреймворков уровня Yii2 или Symfony не наблюдается. Ситуация такая же как и с NodeJS - что-то есть, но комбайнов нет.
    6) Если что-то может слушать соккет - на этом можно написать сайт. Любой. Другое дело, что сайты визитки на Go не пишут (только ради забавы), а крупные сайты вообще имеют сложную архитектуру, такую что язык уже не имеет значения.
    7) Для php разработчика - да. Как минимум вы меняете скриптовый язык на компилируемый. Это значит что любое изменение кода требует компиляции, остановки работающего сервера, загрузки бинарника на его место и запуск. Кроме того вы меняете Stateless модель работы кода на полноценно работающую программу. Если на php у вас скрипт запускался заново при каждом http запросе, то программа на go запускается один раз и после этого принимает множество запросов.
    Ответ написан
    10 комментариев
  • Что выбрать для телеграм бота? Вебхуки или лонгполлинг?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    "Long polling" периодически опрашивает телеграм сервер, за счёт этого пользователю будет казаться, что бот "торзмозит", т.к. между отправкой сообщения от пользователя и до получения ответа будут паузы.
    По крайней мере у меня было именно так.
    Еще стоит сказать о том, что "Long polling" не подойдёт если говорить о нагрузках.

    После перехода на WebHook'и - сразу заработало всё очень резво.
    Также с использованием WebHook'ов у вас будет возможность горизонтально масштабировать бота в случае роста нагрузок.
    Если бы у меня стояла такая задача - я бы использовал WebHook'и.
    Ответ написан
    3 комментария
  • Как понять когда ставить указатель?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    Указатель, по сути, хранит адрес каких то данных (переменной, структуры, слайса и т.д.).
    Иными словами он "указывает" на область данных.

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

    Например:
    type BigStruct struct {
        field1 int
        filed2 string
        field3 uint
        field4 []byte
        ...
        field50 string
    }

    Предположим, что после создания этой структуры и заполнения всех её полей она занимает в памяти 300мб.

    Если вы сделаете функцию, которая будет принимать такую структуру как агрумент, например вот так
    func Report(s BigStruct)
    то при каждом вызове этой функции вся структура (300мб) каждый раз будут копироваться.
    Пример:
    s := BigStruct{}
    // заполняем поля
    Report(s)


    Чтобы избежать такой мега нагрузки - можно передавать не копию данных, а указатель, т.е. адрес в памяти, где хранится сама структура.
    Для этого нужно объявить агрумент функции как указатель, т.е. ставим *.
    func Report(s *BigStruct)
    А код уже будет выглядеть вот так.
    s := BigStruct{}
    // заполняем поля
    Report(&s) // тут добавился & - берём адрес структуры, а не саму структуру

    Или второй вариант
    // создаём переменную s сразу с типом указатель на BigStruct
    s := &BigStruct{}
    // заполняем поля
    Report(s) // поскольку s уже является указателем - & тут не нужен


    В общем * используется:
    - когда нужно объявить переменную
    var s *BigStruct
    - когда нужно прочитать/записать значение, которое храниться по адресу указателя
    var i *int
        i = new(int)
        *i = 10 // пишем значение
    
        fmt.Printf("i: %v\n", i)
        fmt.Printf("*i: %v\n", *i)

    Вывод будет примерно таким
    i: 0xc0000160d8 (это адрес памяти, где лежит значение переменной i)
    *i: 10 (а это её значение)


    & (амперсанд) используется когда нужно получить адрес переменный.

    Еще один вариант применения - если нужно иметь возможность модифицировать данные у параметра функции. Если нужны примеры - дайте знать, я напишу.
    Ответ написан
    12 комментариев
  • Golang и PHP, дань моде или необходимость?

    1. Обычный код на Go зачастую работает гораздо быстрее, чем аналогичный на php
    2. Писать микросервисы на Go проще, и проще их контейнеризировать (в среднем)
    3. Go сразу из коробки хороши интегрируется с devops инструментами, тк они на go и написаны, зачастую
    4. Всякие компании типа Avito и Badoo просто таким образом избавляются от легаси, а переучить существующую команду на Go дешевле, чем переучить её-же на C++/Java/C#.
    Ответ написан
    9 комментариев
  • INSERT INTO при тестировании через sqlmock?

    kvaks
    @kvaks
    для INSERT нужно добавлять результат и не забывай про обрамлять слешом SQL запросы в mock (regex online)

    вот пример кода
    mock.ExpectExec(`INSERT INTO Products \(model, company, price\) values \('\$1', \$2, \$3\)`).
    				WithArgs(tt.args.model, tt.args.company, tt.args.price).
    				WillReturnResult(sqlmock.NewResult(1, 1))
    Ответ написан
    1 комментарий
  • Какой объём трафика у websocket если ничего не передавать и просто держать соединение?

    @deliro
    PING/PONG кидается раз в 20 секунд https://websockets.readthedocs.io/en/latest/topics...
    PING/PONG фреймы — по одному байту. Плюс, если считаем, объём TCP и IP фреймов.

    Итого за час 180 пингов и 180 понгов или 360 байт не считая оверхэда на нижележащие фреймы.
    Если считать оверхэд, то примерно 65 байт x (180 пингов + 180 понгов) ~ 23кб/час

    Плюс, какой-то оверхэд даст TLS и его хэндшейки, плюс, незначительный оверхэд дадут хэндшейки TCP. Но это явно не близко к 70мб
    Ответ написан
    2 комментария
  • Что должен уметь Junior C# Web разработчик?

    1. Уметь работать с asp net core.
    Написание нового контроллера не должно вызывать никаких сложностей.
    Должен знать про middleware и разные фильтры. Знать, какими сущностями в разные моменты времени обрабатывается запрос
    2. Знать как устроен HTTP хотябы на поверхностом уровне.
    Знать что в http-запросе есть заголовки и тело.
    3. Уметь работать с dotnet cli, если понадобится. Уметь вызывать dotnet build, dotnet watch, dotnet run, и dotnet publish
    4. Уметь искать нужные библиотеки в гугле и в нугете.
    5. Уметь работать с git хотябы на базовом уровне: git init, git branch, git add, git commit, git merge.
    Можно через GUI. Можно через встроенный плагин в IDE
    6. Уметь работать с какой-нибудь одной IDE на базовом уровне: с VS или с Rider.
    На базовом уровне - это значит, что ты можешь мышкой создать проект, добавить в него новые файлы, и запустить проект.
    7. Хотябы поверхностно знать про фронтенд. Чтобы мог загуглить и решить несложную задачу.
    8. Уметь работать с debugger-ом. Ставить точки останова, делать шаг вперёд, с заходом, с обходом.
    9. Уметь работать с какой-нибудь реляционной БД. Знать основы про всякие нормальные формы, уметь писать сырой sql запрос.
    10. Ну и кнонечно C#, ООП, всякие паттерны.
    Ответ написан
    7 комментариев
  • Стоит ли браться за изучение ML.NET?

    1. Если интересно - можно попробовать.
    Правда лично мне она показалась слишком высокоуровневой и не очень гибкой.
    Нельзя самостоятельно выбрать количество слоёв.
    Нельзя обучать на видеокартах.
    Картинки на вход принимает только если они сохранены на диске - по пути.
    2. Можно питон. К WPF потом эту модель можно подключить через ml net.
    ML NET умеет работать с универсальным форматом onnx, так что ты можешь обучить нейросеть на питоне, а потом экспортировать её в onnx
    Вот пример использования onnx
    https://docs.microsoft.com/en-us/dotnet/machine-le...
    Ответ написан
    2 комментария
  • Node SASS vs Dart SASS. Какой производительнее при каких условиях?

    @Flying
    1. dart-sass - reference implementation языка т.е. является образцом того как должен работать язык. node-sass binding libsass (реализации спецификации языка на C++) к node.js.

      dart-sass содержит в себе все последние фичи языка, к примеру там уже есть поддержка sass modules, libsass отстаёт, а node-sass отстаёт от libsass. За пруфами - сюда и сюда
    2. libsass производительнее, местами - существенно. К примеру в моих тестах интенсивная работа с sass maps в libsass примерно в 10 раз быстрее чем в dart sass. Насчёт микросекунд - у меня есть проекты которые по 15-20 секунд компилируют только стили на node-sass, на dart-sass всё намного медленнее
    3. Приведённые ссылки - сравнение тёплого с мягким. Есть реализации языков, а есть плагины для их подключения к различным сборщикам. sass - сама реализация языка, gulp-sass - binding для Gulp, sass-loader - binding для Webpack
    Ответ написан
    Комментировать
  • Отдельные типы данных или один var?

    xez
    @xez
    TL Junior Roo
    https://docs.microsoft.com/ru-ru/dotnet/csharp/lan...
    var - говорит "дальше будет переменная", а тип переменной уже определяет компилятор.
    В вашем, конкретном, примере понятно, что обе переменные - double из правой части присваивания.
    Ответ написан
    Комментировать