angrishenko: You are welcome. Если веб, то я бы сказал 1) PHP - там нечего учить и море заказов 2) vanilla Javascript - все меряются фреймворками, но мало кто знает javascript 3) golang - это язык, которым я зарабатываю деньги(server backend) Язык быстрый, удобный, простой и элегантный. Он в тренде, но специалистов еще мало, а контракты на odesk уже есть(есть теги на habrahabr, toster, fl.ru)
maagames.ru: Идея с хэшем интересна. Подскажите легкую функцию для текста 10000 слов, словаря 500 слов, слова 10 юникод рун и я отмечу ответ решением.))))
Кажется хэширование не бесплатно, разве что фильтр Блума подешевле. Но это все не overingeneering вы считаете? Можно оценить на каком размере текста и словаря это окупается? Ссылки на оценку будет достаточно для меня.
Именно. "Наматываться" здесь умаляет общность - пусть "рассеиваться". В моей частной задаче задан еще размер прямоугольного холста, но пусть на бесконечном холсте.
wing_pin: Rust проектировался командой mozilla с задачей переписать firefox, Go под крылом google для решения задач google - быстрая разработка сетевых сервисов, в частности он уже сейчас используется в инфраструктуре youtube/vitess dl.google.com Этим во многом обусловлено концептуальное различие в приоритетах разработчиков и предметной области двух прагматичных языков. Go - сервер/облако, Rust - например 3d игра на рабочей станции.
Тут из меня плохой советчик, я к стыду своему пользуюсь fmt.Println(error.Error()). Из общих соображений log в stdlib потому, что stdlib и glog потому, что его пользуют в google
В общем случае error.Error() string - это все, что обязательно спецификацией языка. Большинство логгеров извлекают это сами, достаточно им передать error. Есть еще сообщения runtime и OS в системной консоли и coredump, но это в случае крушений.
С этим проблем не возникнет. "A template may be executed safely in parallel" В приведенной вами ссылке автор собирает несколько templates в ассоциативный массив (map) и потом замками (mutex) защищает этот map для конкурентного использования. На мой взгляд это overingeniring. Вполне достаточно var templates = template.Must(template.ParseFiles("something.html", "somethingelse.html","someanother.html")) в main, и потом err := templates.ExecuteTemplate(w, someyouwant+".html", p) в handler или middleware
Это нормально. DB.Select вернет вам пулл соединений с DB, который защищен для конкурентного пользования библиотекой sqlx и уместно определять его в пространстве main. А вот &u возвращаемый вызовом err := DB.Select(&u, "SELECT * FROM users") следует определять и использовать в пространстве/контексте запроса/соединения.