МТС Глонасс 945

МТС Глонасс 945 (13.46КиБ)

Взял посмотреть в агентстве Марины Рожковой телефон МТС Глонасс 945, посмотрю, расскажу о выводах. На фотографии запущена программа «GNSS Test», которая показывает количество и расположение обнаруженных спутников GPS (зелёные точки) и ГЛОНАСС (очень тёмные красные точки).

6 комментариев

Незаконная ссылка на блог?

Незаконная ссылка на блог (9.26КиБ)

С сайта студии Артемия Лебедева, раздел юридического отдела студии. Что такое «незаконное использование фотографии Артемия Лебедева и ссылки на его блог»? Про фотографию я понимаю, а как может быть ссылка на блог незаконной?

Добавлено позднее: всё стало ясно, когда я посмотрел на сайт, к которому относилась претензия (спасибо читателю, обратившему моё внимание на это). Судя по всему, кто-то создал анкету на сайте и использовал в ней фото Лебедева и ссылку на его блог. Но я по-прежнему не вижу как ссылку можно назвать незаконной.

9 комментариев

«Go»: количество го-программ

«Го-программы» (goroutines) — это термин языка «Go», это функции, которые выполняются параллельно, что-то вроде местных потоков. Я пока ещё почти не умею с ними работать, только учусь. Одна из особенностей, на которую я сразу наткнулся, то что в языке есть специальный вызов «GOMAXPROCS» (модуль runtime), который указывает сколько процессоров будет задействованно, чтобы запускать го-программы.

По-умолчанию, «Go» использует только один процессор, вот цитата:

It should be smarter and one day it will be smarter, but until it is if you want CPU parallelism you must tell the run-time how many goroutines you want executing code simultaneously. There are two related ways to do this. Either run your job with environment variable GOMAXPROCS set to the number of cores to use (default 1); or import the runtime package and call runtime.GOMAXPROCS(NCPU).

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

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

package main

import ("syscall"; "runtime")

func main() {
    if n, _ := syscall.SysctlUint32("hw.ncpu"); n > 0 {
        runtime.GOMAXPROCS(int(n))
    }
}

20 комментариев