• Какую книгу по go выбрать?

    @JekaMas
    Я бы предложил легкую вводную книгу www.golangbootcamp.com
    Затем более глубокую www.amazon.com/Programming-Language-Addison-Wesley...
    Отдельно советую по БД и Golang: https://www.vividcortex.com/resources/the-ultimate...
    И по concurrency (но эту книгу стоит с осторожностью) - www.amazon.com/Mastering-Concurrency-Go-Nathan-Koz...
    И две обязательные к прочтению
    devs.cloudimmunity.com/gotchas-and-common-mistakes... - на удивление эти ошибки 90% разработчиков делают. Практически настольное пособие.
    golang.org/doc/effective_go.html - стандарт, что тут добавить.

    Про интерфейсы тут - https://habrahabr.ru/post/276981/
    Про то, как работает конкурентность в Go(а по сути runtime) - https://habrahabr.ru/company/ua-hosting/blog/269271/

    Что хорошо - большая часть этих ресурсов полностью бесплатны.
    Ответ написан
  • Как оптимизировать удаление параметров из url query string?

    0xD34F
    @0xD34F Куратор тега JavaScript
    [...params.keys()].forEach(n => whiteList.includes(n) || params.delete(n));
    Ответ написан
  • Как найти URL среди списка URL, если могут присутствовать динамические параметры?

    Seasle
    @Seasle Куратор тега JavaScript
    \( ゚ヮ゚)/
    const url = "/animals/15";
    
    const urlList = ['/animals/cats', 'animals/details/subdetails/:id', '/animals/:id', 'smth/else', 'smth/else/:id/:type'];
    
    const matchURL = (url, list) => {
      const count = list.length;
      for (let index = 0; index < count; index++) {
        const template = list[index];
        const preparedTemplate = template.replace(/:(\w+)/g, '(?<$1>[^/]+)');
        const expression = new RegExp(`^${preparedTemplate}$`, 'gi');
        const match = expression.exec(url);
        
        if (match !== null) {
          return {
            index,
            url,
            template,
            params: match?.groups || {}
          };
        }
      }
      
      return null;
    };
    
    matchURL(url, urlList);
    /*
    {
      index: 2,
      url: '/animals/15',
      template: '/animals/:id',
      params: { id: '15' }
    }
    */
    Ответ написан
  • Как при прокрутке прилепить div к верху?

    jlekapb
    @jlekapb
    .do
    Как-то так: jsfiddle.net/k8a9je12/20
    Лучше, конечно, не инлайново стили задавать, а создать два класса: static и fixed.

    jQuery(function($) {
      function fixDiv() {
        var $cache = $('#fixed');
        if ($(window).scrollTop() > 50)
          $cache.css({
            'position': 'fixed',
            'top': '0px'
          });
        else
          $cache.css({
            'position': 'relative',
          });
      }
      $(window).scroll(fixDiv);
      fixDiv();
    });
    Ответ написан
  • Почему теряется значение ViewBag?

    Valeriy1991
    @Valeriy1991
    Разработчик .NET C# (ASP.NET MVC) в Alfa-B, Moscow
    Добрый день!

    @manisha вынужден сделать 2 замечания:

    1. В методе CreateFeedBack есть входной параметр по имени note - это значит, что метод должен принимать какое-то значение для этого параметра. Если он не будет принимать никакого значения, то переменная получит значение по-умолчанию. Т.к. у Вас переменная note является string, то по-умолчанию в нее запишется null.
    URL Вы формируете следующим образом:
    ajaxURL: '@Url.Action("CreateFeedBack", "Email")',
    В итоге у Вас в переменную ajaxURL запишется значение '/Email/CreateFeedBack', но без параметра запроса "note", поэтому на сервер в метод действия CreateFeedBack в переменную note запишется null.
    Чтобы правильно передать переменную в метод запроса, у метода Url.Action есть перегруженный метод, принимающий объект с параметрами запроса:
    Url.Action("CreateFeedBack", "Email", new { note = "my some note" })

    Если Вы будете использовать его, то тогда код:
    ajaxURL: '@Url.Action("CreateFeedBack", "Email", new { note = "my some note" })',

    в переменную ajaxURL уже запишет значение '/Email/CreateFeedBack?note=my+some+note' (или как-то так), и при отправке запроса на этот URL в метод действия CreateFeedBack в переменную note запишется Ваша строка: "my some note".

    2. Как правильно сказал @MIsternik,
    ViewBag используется при формировании страницы на сервер
    , т.е. сие означает следующее:
    ViewBag формируется в случае, когда у Вас запрос приходит в метод действия, этот метод действия что-то выполняет и возвращает конкретное представление, например так:
    public ActionResult Index()
    {
          // здесь что-то явно происходит...
          ViewBag.SomeVar = "some value";
          return View(); // <--- явно возвращает конкретное представление
    }

    При этом в самом представлении:
    @{
        Layout = null;
    }
    <h2>Index</h2>
    
    @ViewBag.SomeVar

    во ViewBag будет свойство SomeVar со значением "some value".

    У Вас же метод действия ничего не возвращает, поэтому представления он не сформирует.

    Вам нужно сделать так:
    public ActionResult CreateFeedBack(string note)
    {
          ViewBag.Note = note;
          return View();
    }


    В таком случае значение из входящего параметра запроса запишется в переменную note, которая запишется в свойство Note динамического объекта ViewBag, сформирует представление, в котором будет использоваться ViewBag.Note, и вернет ответ клиенту. В ответе придет обычный html-код.

    Важно!
    Учтите, что т.к. Вы используете ajax-запрос к методу действия, то этот метод действия должен возвращать частичное представление - т.е. такое представление, у которого Layout = null;, иначе в ответ на ajax-запрос Вам придет полный html-код вместе c DOCTYPE, тегами html, head, body и другими. Если Вы явно укажете Layout = null;, то в ответе получите только код из представления и ничего больше (никаких слоев/мастер-страниц).

    Как говорится, найдите время и учите матчасть - прочтите книги по ASP.NET MVC, потому что поставленный вопрос относится к разряду вопросов основ ASP.NET MVC, его фундамента. Поверьте, при прочтении хотя бы 1 книги от корки до корки у Вас снимется масса вопросов, а в голове сформируется полная картина того, как правильно работать с ASP.NET MVC.

    Надеюсь, я Вам немного помог.
    Успехов!
    Ответ написан