• Вариатор для «Москвича»
    0
    извините, но ничего нового, все это написано в мануалах
  • Вариатор для «Москвича»
    0
    я про гидроавтоматы
  • Вариатор для «Москвича»
    0
    да ты его новым продал ))
  • Вариатор для «Москвича»
    0
    гидроавтоматы и вариаторы не любят буксировку

    прям таки и не любят? откуда это заблуждение?
  • Вариатор для «Москвича»
    0
    В современном обществе потребления это мало кого волнует. Автопроизводители уже не производят вечных машин. Потребители по окончании гарантии авто меняют. Т.е. заявленный производителем ресурс 100-150ткм (для некоммерческого транспорта) двигателя и кпп ходят.

    Владельцам же подержаных машин с этим приходится мириться. В этом случае проще и дешевле заменить агрегат целиком на контрактный.
  • Вариатор для «Москвича»
    0
    На ниссанах довели до ума вариатор. Если в начале они были проблемой на кашкае и мурано, то года после 08го с вариатором проблем не больше чем с автоматом, даже на двигателях 2.5/3.5л. и 4wd. Последние модели все выпускаются с CVT (исключая альмеру и террано, но все знают что это неправильная альмера и неправильный террано)
  • Вариатор для «Москвича»
    0
    Помню, когда массово начали ввозить бу иномарки из японии, очень недоверчиво относились к автоматам. Сейчас автоматом никого не напугаешь.
    То же самое, как мне кажется, произошло и с вариаторами, ошибки найдены и исправлены, ресурс соизмерим с ресурсами современных двигателей. При этом размер вариатора очень важное преимущество — размер, что важно для авто с поперечным расположением двигателя и кпп. Старые 4хступенчатые автоматы AT очень надежны, но при этом из-за малого кол-ва передач туповаты и неэффективны (ну разве что за городом). Увеличение кол-ва передач требует либо увеличение размеров акпп либо уменьшение размеров деталей.
    Следующий этап за преселективными роботами имха
  • Вариатор для «Москвича»
    +2
    Был в семействе 21й с французским двигателем, достойно бегал для того времени.
  • Пишем простой менеджер кеша в памяти на Go
    +2
    В этом есть какая-то магия? Просто не работал с пакетом unsafe.
    Есть какие-нибудь тесты, которые подтверждают облегчение жизни gc при использовании sync.Map?

    В коде вижу вот это:
    return &entry{p: unsafe.Pointer(&i)}
    создается ссылка на entry и далее она хранится в
    map[interface{}]*entry
    Сокращения кол-ва ссылок не вижу, плюс объект, ссылка на который сохранена в map, продолжает жить в куче. В чем профит.
  • Пишем простой менеджер кеша в памяти на Go
    0
    согласен, кроме последнего предложения
    sync.Map не решит проблему с gc, т.к. хранящиеся в мапке указатели никуда не денутся
    здесь только один путь — уменьшать кол-во указателей, как, например, сделали вот эти ребята: allegro.tech/2016/03/writing-fast-cache-service-in-go.html
  • Пишем простой менеджер кеша в памяти на Go
    0
    по поводу defer
    i5-4670 CPU @ 3.40GHz
    goos: linux
    goarch: amd64
    BenchmarkLockUnlock-4 100000000 15.0 ns/op
    BenchmarkLockDeferUnlock-4 30000000 44.9 ns/op
    PASS
  • Пишем простой менеджер кеша в памяти на Go
    0
    здесь один метод вообще лишний, оставить только GC и стартовать его в функции New

    еще 5 копеек
    — не стоит светить все функции наружу, тот же GC, есть интерфейс Get/Set/Delete остальные функции не должны быть доступны снаружи
    — defer не бесплатен, когда функции делает много под блокировкой, это оправдано, для чтения/записи в map это избыточно
    — не надо держать блокировку без необходимости, получил блокировку, прочитал/записал в мапку, отпустил блокировку и дальше уже разбираешься с тем что получил (это про Get)
    — зачем delete возврат ошибки? она бесполезна + ради этого двойной поиск в мапке
    — сборка мусора вообще странно сделана, зачем в два этапа? нет гарантии что между expiredKeys и clearItems значения не будут обновлены
  • Пишем простой менеджер кеша в памяти на Go
    0
    Ну и довольно медленный он, по крайней мере по сравнению с мьютексами

    Сам бенчмарков не делал, столь категорично утверждать не буду, но как универсальное решение тоже бы не посоветовал.
    Документация описывает 2 конкретных случаях, когда sync.Map выгоднее мапки с мьютексом, но в общем случае для реализации кеша может сыграть как в плюс так и в минус.
  • Go: ускоряем выборку больших таблиц из MySQL
    0
    предположу что разница в 8 раз была из-за неоптимального собственного кода
  • Go: ускоряем выборку больших таблиц из MySQL
    +1
    и не должно было получиться
    sqle это про удобство а не про производительность
  • Исчерпывающие бенчмарки PHP 5.6, 7.0, 7.1, 7.2 и HHVM (2018)
    0
    Было интересно кроме самих цифр увидеть какой-то анализ, почему в одних случаях разница между 7.0/7.1/7.2 существенна а в других нет, или почему так выбивается laravel c hhvm?
  • Blockchain на Go. Часть 1: Прототип
    0
    func (b *Block) SetHash() {
        timestamp := []byte(strconv.FormatInt(b.Timestamp, 10))
        headers := bytes.Join([][]byte{b.PrevBlockHash, b.Data, timestamp}, []byte{})
        hash := sha256.Sum256(headers)
        b.Hash = hash[:]
    }

    В описанном примере велика вероятность, что память для headers будет выделена на стеке и это никак не нагрузить GC. В общем случае так делать не надо. Интерфейс hash.Hash расширяет io.Writer и этим стоит пользоваться.
  • Почему компания меня потеряла
    0
    В середине 2000х работал в сфере образования, расчетники выкладывали в бухгалтерии, каждый искал свою в общей куче.
  • Как мы расписание общественного транспорта в 2ГИС добавляли
    0
    получилось как получилось, деньги освоены, переделывать уже не будут
  • unCAPTCHA: использование сервисов Google для обхода Google reCAPTCHA
    +1
    почему в тестовом окружении не установить фиксированную капчу или вообще ее отключить?
  • Разбираемся с новым sync.Map в Go 1.9
    +1
    вот бы подробностей что там под капотом
  • Go для больших данных
    +1
    Да вызов будет дороже, чем вызов гошной функции, но это не совсем тоже самое что cgo медленный. Медленным это будет при очень частом обращении к импортированным функциям и насколько это критично уже зависит от конкретной задачи.
  • Статистика по базовым операционным системам в образах на Docker Hub
    +1
    — debian
    — FROM scratch для go приложений
  • Как новичок в Go контрибьютил
    0
    была мысль что заинлайнил вызовы strconv.Itoa и разместил результат на стеке
    отличный результат на 1.9 надо переходить
  • Как новичок в Go контрибьютил
    0
    хотел придраться к тому что strconv.Itoa(size) вызывается дважды, но бенч показывает одну алокацию ))
  • Как новичок в Go контрибьютил
    +2
    точно, в глянул в оригинале, там повторное кодирование строки, если длина не та
    это ж пипец

    // formatPAXRecord formats a single PAX record, prefixing it with the
    // appropriate length.
    func formatPAXRecord(k, v string) string {
    	const padding = 3 // Extra padding for ' ', '=', and '\n'
    	size := len(k) + len(v) + padding
    	size += len(strconv.Itoa(size))
    	record := fmt.Sprintf("%d %s=%s\n", size, k, v)
    
    	// Final adjustment if adding size field increased the record size.
    	if len(record) != size {
    		size = len(record)
    		record = fmt.Sprintf("%d %s=%s\n", size, k, v)
    	}
    	return record
    }
    


    ps
    формат PAX record весьма неудачен, имха

    pps
    CL автора такие не принят
  • Как новичок в Go контрибьютил
    0
    будет баг нет?
    как я понял size так же учитывает и свою собственную длину в строковом представлении
  • Как новичок в Go контрибьютил
    0
    size := len(k) + len(v) + padding
    size += len(strconv.Itoa(size))
    record := fmt.Sprintf("%d %s=%s\n", size, k, v)

    а что будет, если len(k) + len(v) + padding = 99 ??
  • Практическое использование в Go: организация доступа к базам данных
    0
    Странным показался совет использовать x/net/context, но глянул на дату оригинальной статьи, для 15 года ок. Возможно, следовало добавить в сноску инфу по актуальному пакету.
  • Вышел Firefox 54, который наконец получил поддержку многопроцессного режима
    +1
    Хром последний проверил — после закрытия вкладок отдаёт память обратно.

    у хрома по процессу на вкладку, естественно память вернется при завершении процесса
  • Пошаговая настройка Apache с выбором версий php + Nginx как reverse proxy (с mod_pagespeed) на ubuntu 16.04
    +2
    apache php nginx
    уберите лишнее
  • Сравнение производительности версий PHP
    0
    подобные вещи я и имел в виду
    предположу, чтобы подобное реализовать, потребуется реализация HTTP на PHP и работа с удаленным сервером через сокет. дальше, наверное, потребуется асинхронная работа с диском, БД…
    на nodejs с этим проблем не будет
    можно использовать Go, но это тема для холивара )
  • Почему вам стоит изучить Go?
    +1
    По первому обзацу — не его ниша. Магазин не проблема, но зачем, их тыщи.
    По второму — все так.
  • Сравнение производительности версий PHP
    0
    Логичный вопрос — смена версии даст сильный прирост или нет?

    для вебсокетного сервиса на PHP по скорости вряд ли, по памяти точно

    Шутки не понял, если у меня сервер на php то мне будет сложно правильно использовать сторонние (но не невозможно само собой), а значит реализация именно серверной части с обслуживанием подключений и пользователей будет на php, гугл выдает с десяток реализаций.

    да не было никакой шутки
    да можно, решения есть, но при поддержке такого решения постоянно придется решать проблемы, которые давно уже решены.
    php-шнику на том же nodejs ws-сервис сделать не сложнее чем на php, если не проще. и экосистема там богаче в этом плане, это его ниша.
  • Почему вам стоит изучить Go?
    +2
    А мне не очень. API довольно таки скудный.
    Да, универсально, пул под капотом, потокобезопастность тоже…
    с другой стороны (это то что наболело)
    — пул плохо настраивается, макс кол-во соединений и макс. кол-во простаивающих соединений и все, а я бы хотел задать мин. кол-во простаивающих соединений, кол-во соединений при старте, чтобы не ждать пока соединение откроется
    — средств профайлинга нет. измерить время выполнения запросов можно и снаружи, а вот какие затраты были на установку соединения при вызове db.Query и были ли вообще — непонятно
    — следствия универсальности: нет доступа к спец. возможностям субд, нельзя получить из пула соединение. Даже если разработчик драйвера предоставит методы для работы с API, то надо предоставлять механизмы для создания соединений и отдельный пул, т.к. к стандартному доступа нет. А если такое случится, то нафига тогда database/sql/
    — с логированием, если ошибаюсь, тоже никак
  • Почему вам стоит изучить Go?
    0
    зависит от задачи
    мой ответ можно расценивать как расшифроку что понималось под фразой «4. Для работы с веб в Го достаточно стандартных пакетов из коробки.»

    зы
    не агитирую за го, но если конкретизируешь «полезную работу», может смогу что-то пояснить.
  • Почему вам стоит изучить Go?
    –2
    https://golang.org/pkg/net/http/
    https://golang.org/pkg/encoding/json/
  • Почему вам стоит изучить Go?
    0
    все верно
    $ go build
    $ ldd main
    linux-vdso.so.1 => (0x00007fffd4bf7000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc4679b7000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc4675f0000)
    /lib64/ld-linux-x86-64.so.2 (0x000055cfc4c89000)

    но, при определенных условиях это не так
    $ CGO_ENABLED=0 GOOS=linux go build -ldflags "-s -w" -a -installsuffix cgo
    $ ldd main
    не является динамическим исполняемым файлом
  • Почему вам стоит изучить Go?
    +1
    По мне так интерфейсы для работы с БД не очень.
  • Почему вам стоит изучить Go?
    –1
    Добавлю, что Go-приложение (при определенных условиях) может запускаться в докер-контейнере без ОС (FROM scratch).