• Я никогда не писал расширения для Хрома, но меня допекли
    –2

    так чувствуешь власть

  • Microsoft удвоит число темнокожих в своем руководстве
    0

    можно просто идентифицировать себя как "people of color"

  • systemd десять лет спустя. Историческая и техническая ретроспектива
    0
    у меня Fluxbox и 24 виртуальных десктопа, в каждом из которых по одному full-screen приложению — и это невероятно удобно

    Так же делаю, только у меня их не 24, а 9 и не fluxbox, а dwm,
    При этом использую 4-5 десктопов, так как браузер, а все остальное в терминале с tmux.

  • Пять лет Rust
    0

    Ну это только один пример удобства, хотя только подталкивает все ошибки обрабатывать одинаково.
    А вот второй аргумент непонятен, что try! что ? просто возвращают ошибку, разницы никакой.

  • Пять лет Rust
    +1

    а расскажите в чем преимущество ? над try!?

  • ConfigMaps в Kubernetes: нюансы, о которых стоит знать
    0

    стоит заметить, что это было добавлено в 1.15

  • ConfigMaps в Kubernetes: нюансы, о которых стоит знать
    0

    С checksum файла, поды рестартанут даже после удаления пустой строки, форматирования, etc. Мы у себя использует хэши обьектов (хелм не используем) когда хотим автоматом рестарт.
    А патч хорош когда просто нужно сделать рестарт с RollingUpdate.

  • ConfigMaps в Kubernetes: нюансы, о которых стоит знать
    0
    Окей, у нас в Deployment’е 6 реплик, поэтому мы можем по очереди, вручную сделать всем delete pod.

    Вместо ручного удаления подов, лучше просто добавить/изменить аннотацию деплоймента (не все хелм используют), что-то рандомное:


    kubectl patch deploy <deployemnt-name> -p \
      "{\"spec\":{\"template\":{\"metadata\":{\"annotations\":{\"date\":\"`date +'%s'`\"}}}}}"
  • Главная причина, почему не Linux
    +2

    браузер и терминал, все что нужно.

  • Главная причина, почему не Linux
    +2

    а у меня встал
    UPD: я про Линукс на макбук

  • Go: Должен ли я использовать указатель вместо копии моей структуры?
    +1

    Указатель, который передается по значению.

  • Go: Должен ли я использовать указатель вместо копии моей структуры?
    0

    Вот только Go нету ссылок, только передача по значению.

  • Тысячи забытых TODO в коде Kubernetes
    0

    2100 только открытых и 31000 закрытых, там и еще пару десятков других репозиторий.
    Но в целом это не показатель.

  • Полное руководство по массивам и срезам в Golang
    +1

    В Go нету ссылок.
    Слайс в Go — это структура, где одно из полей это указатель на массив:


    type slice struct {
       array unsafe.Pointer
       len   int
       cap   int
    }

    https://golang.org/src/runtime/slice.go

  • Хэш таблицы в Go. Детали реализации
    0

    вы хотели сказать согласно спецификации unordered, или что значит "по дефолту"?
    Насколько я помню, в начальной реализации map в Go обход был "упорядоченный" (то есть, разработчики Go просто не парились об этом), но пришлось поменять (добавили fastrand для определния начала), чтобы пользователи не полагались на упорядоченность.

  • Почему мне нравятся интерфейсы в Go
    0
    количество внедренных фич

    А как же качество и необходимость?

  • Этот ваш хаскель (не) только для факториалов и годен
    0

    можно еще GC отключить, GOGC=off, должно быть чуть быстрее

  • За что я не люблю Go
    0
    Вопроса на самом деле два: насколько легко на языке писать библиотеки, которые мне нравятся, и насколько легко писать библиотеки, которые не нравятся.

    Да.
  • За что я не люблю Go
    0
    В тех редких случаях, когда надо останавливать потоки/циклы, вы просто заранее предусматриваете для этого отключающий костыль, как в Си++.

    Ага, в Go можно принимать context и стопать цикл при отмене.
    Только прочитайте еще раз претензию 0xd34df00d, он про другой случай пишет.
  • За что я не люблю Go
    0
    Если вам не нравится библиотека, то вы ее не используете, правильно?
    В чем вопрос тогда?
  • За что я не люблю Go
    0
    Не используйте такой код, сделайте пулл реквест и тд.
    Странные у вас претензии — вы явно запускаете в горутине не ваш метод.
  • За что я не люблю Go
    0

    Я для этого использую пакет context, например:


    func run(ctx context.Context, ...) {
        for {
            select {
            case <-ctx.Done():
               return
            ....
            }
        }
    }

    Можно просто канал передать и закрыть его, можно закрывать канал с данными и в run делать range по нему.

  • За что я не люблю Go
    0
    Вызываемый и вызывающий, которые await синхронизирует
  • За что я не люблю Go
    0
    То есть await синхронизирует два метода и выполняются они в одном потоке. Все верно или нет?
  • За что я не люблю Go
    0

    Причем тут это.
    Вот скажите, какая разница во времени будет?


    using System;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace TestSharp
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                Console.WriteLine(DateTime.Now.ToString("HH:mm:ss"));
    
                await Task.Delay(10000);
    
                Console.WriteLine(DateTime.Now.ToString("HH:mm:ss"));
    
            }
        }
    }
  • За что я не люблю Go
    0
    Вы до сих пор не поняли как await работает? Дока же есть, почитайте.
  • За что я не люблю Go
    –1
    Вот вам дока — docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/await
    The await operator is applied to a task in an asynchronous method to insert a suspension point in the execution of the method until the awaited task completes.

    Все как я и говорил вот тут
    await Task.Delay(2000);  // вот тут вы не запустили `Task.Delay` в отдельном потоке, то есть тут вы реально будет ждать
    Console.WriteLine($"Work: {await q.Dequeue()}");
  • За что я не люблю Go
    0
    Так зачем вы привели другой код? У вас же в первом варианте `await Task.Delay(2000);` в цикле.
  • За что я не люблю Go
    0

    А чего сейчас у вас нету await в цикле?

  • За что я не люблю Go
    0

    await Task.Delay() не блокирует поток, но вот этот поток, где выполнялся Main, будет выполнять Task.Delay(). Хоть у вас и два асинхронных метода, но они синхронизированы await'ом.
    То есть:


    await Task.Delay(2000);  // вот тут вы не запустили `Task.Delay` в отдельном потоке, то есть тут вы реально будет ждать
    Console.WriteLine($"Work: {await q.Dequeue()}");

    Вы же сами доку кидали на это.

  • К чему готовиться в 2019 году: тренды в программировании
    0
    А что такое HW VM?
  • К чему готовиться в 2019 году: тренды в программировании
    +4
    Ученный объявили неделю срачей, количество постов про Go увеличилось в два раза.
  • За что я не люблю Go
    0
    await это просто синхронизация двух асинхронных методов — один асинхронный метод (methodA) ждет пока закончится второй асинхронный метод (methodB), при этом, как я понял, methodB будет выполняться в потоке методаА.
    То есть это просто делает два асинхронных метода синхронными (между собой). При этом methodA все так же будет асинхронным в отношении вызывающего его метода.
  • Мысленный эксперимент: Flutter на Go
    +1
    Но считать, что без дженериков удобней чем с ними — извините, но я не понимаю этого.

    Дак вроде никто так не считает, gudvinr говорит как раз про «можно жить без дженериков».
  • За что я не люблю Go
    0
    Уточню — это не флаги, а тэги, флаги вот golang.org/pkg/flag
    Сделали так тэги, чтобы вся информация о даном поле был на одной линии, когда грепните поле — вся информация будет сразу же перед вами. Тоже самое во время редактирования — все на одной строке, а не несколько, тяжелее сделать ошибку.
    А вот почему это «уродливо» кроме как вашей вкусовщины, я не понял. Тем более не понял, почему это неудобно. Надо аргументировать, а не 10 раз говорить «уродливо».
  • За что я не люблю Go
    –1
    В гоу, по сути, ошибки — это просто строка, которая никак статически не типизируется, я не могу увидеть список возможных ошибок и я не могу адекватно обработать определенную ошибку.

    Это чисто ваша фантазия, в Go ошибка это интерфейс, потому сама переменная — интерфейсная переменная, которая хранит тип ошибки.
    Я соглашусь, сделано не идеально (ну чисто потому что позволяет делать многое с ошибками), но тут уже вы сами решаете, облегчить ли самим себе жизнь и использовать типизированые ошибки и, например, очень удобный пакет github.com/pkg/errors, или использовать throw new Exception("...") errors.New("...")

  • За что я не люблю Go
    0

    Так еще раз — вот в вашем примере, что будет делать handle(error)? Вы же пример привели с обработкой ошибок, вот мне и интересно, что там за обработка и есть ли преимущество у данной обработки. Если там будет просто логирование или возврат, то какое тут преимущество то с такой обработкой.

  • За что я не люблю Go
    0
    Вы так и не ответили на вопрос, написав отсебятины про ошибки в Go (особенно «В Гоу вообще возвращаются, по сути, строковые ошибки, ничего кроме логирования с ними не сделать.»). Про ошибки в Go мы можем поговорить позже.
    И все же — как вы определите какой вызов функции (из двух вызовов http.get()) вернул ошибку и как обработаете?
  • За что я не люблю Go
    0
    И какого рода обработка ошибок будет? Как вы определите какая функция вернула ошибку и что потом сделаете?
    Пока я не вижу преимуществ такой обработки, как часто бывает в языках с исключениями — один большой try-catch на все случаи (а часто просто с логированием).

    Я вот в таких ситуациях делаю обертки с обработкой ошибок (в нем, например, retry, зависит от задачи).
  • За что я не люблю Go
    0
    Это как-то делает то, что в Go становится сложно? Еще раз, разговоров о том, что в Go очень просто и удобно писать конкурентный код (горутины, каналы, контекст).