Задать вопрос
  • Как сделать, чтобы скрипт не влиял на google speed?

    подключай через 5 сек после загрузки страницы
    Ответ написан
    Комментировать
  • Для чего нужен LINQ?

    Morpheus_God
    @Morpheus_God
    LINQ помогает избегать многих велосипедов которые могут посетить ясную голову программиста.
    Вместо громоздких циклов по поиску или фильтрации ваш код будет лаконичен и легко читаем.
    Примеры как он используется можете посмотреть тут.
    Ответ написан
    Комментировать
  • Как сделать кнопку "Вернуться наверх"?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Можно вот так:
    location.hash = '#top';

    Еще можно так:
    document.body.scrollIntoView({behavior: 'smooth'});
    Ответ написан
    Комментировать
  • Стоит ли покупать рекламу на 4pda?

    Zoominger
    @Zoominger
    System Integrator
    Хм, стоит ли рекламировать приложение для смартфона на самом популярном ресурсе про смартфоны? Хм-м...
    Ответ написан
    3 комментария
  • Какие есть способы создать GUI в C#?


    Достоин упоминания: Xamarin/MAUI
    Ответ написан
    Комментировать
  • Важна ли валидность кода в SEO?

    rework
    @rework
    Помог ответ? В благодарность отметь его решением
    Во-первых, разработчику нужно зрить в корень. Зачем сайту прописан устаревший Doctype, а именно XHTML 1.0 Strict ? Сейчас уже повсеместно используется HTML 5. Ошибки валидатора связаны с тем, что по указанному на сайте Doctype, у тегов не должно быть выдуманных data-атрибутов, а скрипты анимации хотят их использовать для корректной работы.
    Во-вторых, для современного SEO не доказано, что валидность кода улучшает позиции сайта в поисковиках, если какой-то коэффициент влияние и есть, то он очень мизерный.
    Ответ написан
    4 комментария
  • Курс или полный гайдлайн по git?

    Попробуйте следовать https://www.atlassian.com/ru/git/tutorials/compari...

    К проблеме которую вы описали:

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


    Не сливайте feature-ветку пока она не будет полностью протестирована и code-rewiew'ирована.
    Склеивайте комиты в feature-ветке, чтобы их в итоге было не больше 1-3.

    Из собственного опыта могу сказать, что чем крупнее и неспешнее проект - тем проще следовать git-flow.
    А вот когда 1-2 разработчика и нужно вот сейчас ещё вчера запилить 10 фич... бывает сложновато.

    Это вопрос дисциплины и организованности. Как ставятся задачи, как вы фокусируетесь на текущей фиче (нельзя носиться по всему проекту и фиксить по пути всё что под руку попалось). Организации самого проекта в конце концов - как изолированы компоненты и т.д.
    Ответ написан
    Комментировать
  • Курс или полный гайдлайн по git?

    Griboks
    @Griboks
    Ответ написан
    Комментировать
  • Есть ли смысл изучать ASP.NET?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Есть ли смысл изучать его ради маленьких в пару страниц сайтов (но всё же серверным функционалом, не просто "отдать html по ссылке")?

    Для таких целей вам подойдет та часть asp.net которая называется Razor Pages. Как раз познакомитесь с шаблонизацией страниц.

    Но вообще, использование aspnet предполагает более глубокое знание языка. Поразбираться придется. Так что если не хотите тратить время, лучше остаться на простых страничках.
    Ответ написан
    Комментировать
  • Есть ли смысл изучать ASP.NET?

    Есть ли смысл изучать его ради маленьких в пару страниц сайтов (но всё же серверным функционалом, не просто "отдать html по ссылке")?

    Для продакшена - да. HttpListener даже на линуксе вроде не будет работать, тк зависит от http.sys

    Какие у него есть киллер-фичи, облегчающие жизнь?

    1. Быстрый
    2. Гибкий
    По сравнению с httplistener.
    я слегка пересрался от вида "пустого проекта asp net" в visual studio.

    Ну там он действительно немного страшный, в .NET 6 его сделают чуть менее страшным.
    Вообще минимальный проект выглядит примерно так:
    using Microsoft.AspNetCore.Builder;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.AspNetCore.Http;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Hosting;
    
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHost(webBuilder =>
        {
            webBuilder.UseKestrel(o =>
            {
                o.ListenLocalhost(5000);
            });
            webBuilder.ConfigureServices(services =>
            {
                services.AddRouting();
            });
            webBuilder.Configure(app =>
            {
                app.UseRouting();
                app.UseEndpoints(endpoints =>
                {
                    endpoints.MapGet("/", async context =>
                    {
                        await context.Response.WriteAsync("Hello World!");
                    });
                });
            });
        })
        .Build()
        .Run();

    В .NET 6 будет MinApi, который выглядит вот так (без юзингов):
    var app = WebApplication.Create(args);
    
    app.MapGet("/", string () => "Hello World!");
    
    app.Run();
    Ответ написан
    Комментировать
  • Насколько Golang подходит для больших проектов?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    У go одно применение - highly network intensive applications. GRPC, protobuf, триллионы rpc вызовов в секнду. Применяется он когда есть или сразу подобные требования или бизнес вырос до этого уровня.

    Для стартапов чаще всего требуются Rapid Applcation Development фреймворки. Язык при этом скорее вторичен. Можешь быстро слепить - молодец. Но чаще выбирать приходится из того что знаешь.

    В кровавом Энтерпрайзе в основном правит старичок Java (за редким исключением) по тому что есть требования к заменяемости сотрудников и большой легаси ландшафт проектов, которые переписывать никто не будет
    Ответ написан
    1 комментарий
  • В каких приложениях Go существенно эффективнее чем Node.js и PHP?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    В каких приложениях Go существенно эффективнее чем Node.js и PHP?

    Go > PHP:

    1. Приложения, в которых на инициализацию тратиться очень много времени и это критично. Грубо говоря, когда умирающая модель выполнения не подходит.
    2. Приложения, в которых нужно много памяти для обработки.
    3. Приложения, в которых необходима мультипоточность и реализация задержек во времени.

    PHP > Go:

    1. Приложения, в которых важна скорость разработки, а производительность на втором плане.
    2. Приложения, в которых важна легкость горизонтального масштабирования. Грубо говоря там, где умирающая модель оптимальна.
    Ответ написан
    3 комментария
  • В каких приложениях Go существенно эффективнее чем Node.js и PHP?

    @mitya_k
    • Первая, причина, Go популярен за свою бедность синтаксиса, кому-то это нравится...
      Для больших компаний типа Google это плюс так, как можно посадить посадить 100500 программистов, которые вынуждены писать очень много однотипного болерплейта кода.
    • Вторая причина, там где требовалось решать низкоуровневые задачи, без бизнес-логики(например, много работать с байтиками), плюс требовалась многопоточность для этого приходилось использовать СИ++. Теперь есть простая альтернатива в виде Go. Опять же это актуально для больших компаний, где есть подобные задачи. Например, писать какой-нибудь парсер террабайтных логов
    • И последняя, можно сгенерить бинарь без зависимостей, что нравится работающим в DevOps, а для скриптования "богатый язык" особо не нужен. Опять же актуально для больших компаний, где есть большие отделы DevOps


    Из всех 3 пунктов вытекает зарплата и популярность в больших компаниях.
    Ответ написан
    Комментировать
  • В каких приложениях Go существенно эффективнее чем Node.js и PHP?

    Супер превосходства в производительности и не будет. Но при правильной архитектуре будет нормальное превосходство.
    В nodejs, например, чтобы распараллелить задачу на несколько ядер, нужно делать много доп. движений, вручную раскидывая задачи. В Go это делается автоматически и гораздо удобнее, просто используешь горутины, а рантайм сам беспокоится о том, запустить их конкурентно или параллельно. Ну и плюс, в го ты просто пишешь последовательный код, вместо колбэков, это легче.
    Строгая статическая типизация дает возможность вылавливать много проблем до релиза, код просто не скомпилится, вместо того, чтобы упасть в продакшне. Это очень критично для крупных проектов, над которыми работает много людей. Рефакторинг тоже проще по этой причине. Пхп и нода не дают такой возможности.
    Разработчики на го не редкие и не дорогие, они довольно быстро воспитываются из разработчиков на других языках, что тоже удобно компаниям. Плюс, код довольно стандартен, на го почти нет нескольких способов сделать одно и то же, он прививает единый подход.
    Сумма этих всех факторов и является причиной популярности го.
    Ответ написан
  • В каких приложениях Go существенно эффективнее чем Node.js и PHP?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    Бенчмарки - это хорошо, но очень важно понимать что именно там меряли и почему результаты именно такие.

    Несколько лет назад я тоже делал бенчмарки Python, PHP, Node, Go.
    Для меня были важны две вещи:
    1 - скорость ответа сервера/кол-во запросов в секунду
    2 - объём сервиса в памяти, т.к. от этого зависит стоимость ресурсов

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

    Но вся эта разница сошла на нет, как только добавился всего один простой SQL запрос в базу, в таблицу с 10 строками. И на этом фоне разница по скорости ответа была меньше 10%.

    Иными словами если ваш сервис работает с базой - критической разницы по скорости работы между Go/Rust/PHP/Node/Java, особо не будет.

    Другое дело если ваш сервис не будет делать запросы в базу, или будет кешировать результаты запросов, тогда вы почувствуете ощутимую разницу.

    Еще очень важно понимать сколько ваш скрипт потребляет ресурсов. Это становится критически важным, когда вы имеете дело с большими нагрузками.

    Один экземпляр Go занимал в памяти порядка 6мб RAM, при том, что Pytho+Django порядка 60мб.
    Node уже не помню сколько, но что-то близкое к Python'у.

    Вот тут уже, когда серверов у вас будет много - количество серверов с Go у вас будет в 10 раз меньше, соответственно расходы за эти сервера у вас будут в 10 раз меньше :)

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

    Где-то читал статью, что у людей было API на порядка 40 серверов на Node, после переписывания на Go - серверов осталось два, из которых второй запасной :)
    Ответ написан
    13 комментариев
  • Есть ли видимая перспектива у Junior-а?

    Как по мне лучше всего подходит ваш последний вариант: изучить Go уже после PHP.
    Ответ написан
    Комментировать
  • Правильно ли делать сервис менеджер в Go?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    > В UserService может использоваться логика ProjectService'a. Для этого я передаю в userService.New(projectService ProjectService)

    По хорошему в UserService не должно быть логики ProjectService.
    Логику лучше не разносить по разным местам, такой код очень трудно потом поддерживать.
    Представьте, что через год придёт новый человек и внесёт правки в ProjectService, он может не знать/забыть внести нужные правки в UserService.

    Если без этого совсем никак, тогда лучше сделать 3й сервис, который в конструкторе примет сервисы Users и Project и будет вызывать нужные методы из каждого из них.

    В идеале нужно перестроиться и проектировать пакеты так, чтобы таких проблем не возникало.
    Но когда вы перестроитесь - результаты работы будут намного качественнее.
    Мне после Perl, Python понадобилось не мало времени чтобы перестроиться :))
    Но сейчас могу с уверенностью сказать оно того точно стоило!

    Подход как у вас с ServiceManager тоже используется, даже видел библиотеки готовые, но уже не помню как назывались. Я попробовал их, у меня не прижились эти библиотеки )

    Сейчас я использую такой подход:
    users/user.go
    тут описываю структуру Users, простая валидация полей, методы у структуры типа GetFullName и т.д.

    users/repo.go
    тут описываю интерфейсы:
    QueryRepo для извлечения данных
    CommandRepo для внесения изменения в данные пользователей
    репозитории используются только в рамках пакета users, другие пакеты используют интерфейсы сервисов

    users/querysvc.go
    тут описываю интерфейс QuerySvc (только для извлечения данных связанных с пользователей),
    он уже использует интерфейс QueryRepo
    этот пакет будут импортировать другие пакеты

    users/commandsvc.go
    тут описываю интерфейс CommandSvc (только для внесения изменений в данные пользователей), он тоже использует интерфейсы QueryRepo, CommandRepo
    этот пакет будут импортировать другие пакеты

    users/signupsvc.go
    это сервис регистрации пользователей, тут описываю интерфейс SignupSvc

    users/repos/mysql/query.go
    тут реализация интерфейса QueryRepo на MySQL
    этот пакет будет импортироваться только в пакете `app` (см. ниже)

    users/repos/mysql/command.go
    тут реализация интерфейса CommandRepo на MySQL
    этот пакет будет импортироваться только в пакете `app` (см. ниже)

    users/services/querysvc.go
    тут реализация интерфейса QuerySvc

    users/services/commandsvc.go
    тут реализация интерфейса CommandSvc

    users/services/signupsvc.go
    тут реализация интерфейса SignupSvc

    core/
    тут все константы, которые могут быть использованы в разных пакетах приложения (например коды ошибок)
    этот пакет могут включать любые пакеты, но он ничего не импортирует в рамках проекта

    app/
    тут иницализация всех репозиториев, сервисов, конфигов и т.д.
    здесь же происходит связывание всех пакетов.
    Т.е. что-то вроде
    usersQuerySvc := usersservices.NewQuerySvc(usersRepo, ...)
    usersSignupSvc := usersservices.NewSignupSvc(usersQuerySvc, usersCommandSvc)
    // например сервис для админов (с проверкой полномочий), методы которого уже можно использовать в endpoint'ax
    usersAdminSvc := usersservices.NewAdminSvc(usersQuerySvc, usersCommandSvc)
    
    projectSvc := projectservices.New(usersQuerySvc)

    Мне такой подход очень нравится тем, что нет скрытых зависимостей, всё видно как на ладони, кто и что использует.
    А если возникают сложности с применением такой схемы - для меня это верный признак того, что нужно спроектировать иначе, раз сложности уже возникли, значит в будущем их будет еще больше ))

    Ну и все пакеты как параметры принимают везде только интерфейсы.
    Хотя... с точки зрения Dependency Inversion, правильно бы было описывать под каждый пакет свой интерфейс, а не так, как я :), но я делаю интерфейсы очень маленькими, тогда получается очень гибко и, как мне кажется, после этого еще внутри других пакетов описывать интерфейсы уже избыточно в моём случае, работы больше, а толку не так много, по этому пока экономлю на этом время :)

    cmd/serve.go - импортирует app и запускает веб сервер например

    Если нужны будут еще какие то подробности - пишите, буду рад помочь
    Ответ написан
    Комментировать
  • Текущее положение Golang в машинном обучение?

    sgjurano
    @sgjurano
    Разработчик
    Можно запускать либы, написанные на C из Go, но зачем?

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

    Пожалуй единственная нормальная причина использовать ML-библиотеки на Go — это когда у вас уже есть сервис на Go, к которому надо прикрутить немножко ML.

    Если же вы пишете новый сервис, где планируется активное использование ML-библиотек, то для невысокой нагрузки прекрасно подойдёт Python, а для высокой лучше всё же сразу взять C++ или какой-нибудь другой язык прозрачно совместимый по памяти с C.

    Поэтому мне кажется, что ML-библиотеки на Go так и будут капитально отставать от Python — они там просто почти никому не нужны, вот их и не развивают.
    Ответ написан
    4 комментария
  • Как вызвать метод на блейзор клиенте?

    Ошибка говорит, что HttpClient в блазоре не поддерживает Proxy
    А в коде вашей либы есть такой код
    public RestClient(Uri baseUrl, JsonSerializer serializer, IWebProxy proxy = null)
            {
                BaseUrl = baseUrl;
                Serializer = serializer;
                DefaultQueryString = new List<KeyValuePair<string, string>>();
    
                MaxRetryCount = 0;
                Proxy = proxy;
    
                HttpClient = new HttpClient(new HttpClientHandler
                {
                    Proxy = proxy // Вот из-за этой строчки происходит падение.
                });
            }


    Есть три варианта решения:
    1. Сделать форк либы и поправить эту строку.
    Но не факт, что это единственная строчка, которая вызывает несовместимые API
    2. Вызывать этот код на сервере, а клиенту передавать только данные.
    3. Написать собственный клиент для imdb
    Ответ написан
    Комментировать
  • Как убрать No 'Access-Control-Allow-Origin' от CORS, если в URL нету знака вопроса?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В определённых случаях браузер делает preflight request. Сначала ресурс запрашивается методом OPTIONS, на который браузер рассчитывает получить ответ 200 с установленными CORS-заголовками. И только если этот запрос прошёл, то делается основной запрос.
    Проверьте, что ваш сервер нормально отвечает на OPTIONS.
    Ответ написан
    9 комментариев