myStack
890 subscribers
761 photos
15 videos
27 files
310 links
Меня зовут Ростислав и я разработчик.

Это мой личный блог.

Я пишу на Go, читаю книги про технологии и пишу об этих и других вещах сюда.


Книги:
https://bit.ly/rostislav-books

Личка:
https://t.me/Rostislaved

Сайт:
Rostislav.me
Download Telegram
Forwarded from Go Update
Релиз Go 1.21

Вот и состоялся релиз новой версии Go. Кроме того, что указано здесь, у нас так-же появились:

- Довольной большой пакет slices: среди прочего содержит функции Min / Max, функцию сортировки и функцию поиска в сортированном слайсе. И больше не нужно писать страшные блоки вставки и удаления элементов из слайса.
- Пакет maps: по сравнению со слайсами как-то бедновато, но есть удобная функция копирования.
- Пакет cmp: содержит обьявление всех сравниваемых по порядку типов и две базовые функции для работы с ними. Нужно скорее для пакетов maps и slices, а так-же разработчикам библиотек с коллекциями.
- Profile-guide optimization (PGO - оптимизация основанная на данных профилировки) вышла из превью и теперь применяется всегда если присутствует файл default.pgo в директории main пакета. Говорят, что благодаря ей удалось ускорить компилятор примерно на 6%.
- Улучшение пакета context: теперь можно вешать функцию на отмену контекста (удобно когда вам нужно закрыть канал или прекратить чтение из сокета) и отвязать дочерний контекст от отмены родителя.
- При выводе очень глубоких стеков теперь показывают 50 самых верхних и 50 самых нижних фреймов (названий функции) вместо 100 самых верхних как это было ранее. Должно помочь с отладкой паник в рекурсивных функциях.
1👍1🔥1🤩1
гугл фото оказывается рисуют классную тепловую карту, где сделаны фото (следят за мной)
Читаю исходный код Go.

Как же нечитаемо написано. Имена переменных из одной буквы совершенно не помогают понять, что происходит. Еще экономия на переменных, результат которой вот такое в одну строчку. Функция mapaccess1:
b := (*bmap)(add(h.buckets, (hash&m)*uintptr(t.bucketsize)))
тут происходит:
1. hash&m Вычисление остатка от деления - номер бакета мапы.
2. (hash&m)*uintptr(t.bucketsize) Вычисление относительного адреса ячейки памяти (а-ля сдвиг ячейки памяти, этого бакета)
3. add(h.buckets, (hash&m)*uintptr(t.bucketsize)) Вычисление абсолютного адреса ячейки памяти по сдвигу
4. (*bmap) каст ансейф указателя к обычному.

Я пока разбирался написал вот так:
bucketNumber := hash & mask

bucketSizeInBits := uintptr(t.bucketsize)

bucketOffset := bucketNumber * bucketSizeInBits

bucketAddress := (*bmap)(add(h.buckets, bucketOffset))


Но уже в функции mapassign сделано вот так:
bucket := hash & bucketMask(h.B)


На ревью я бы такое не пропустил...)
Отличный график
Forwarded from NN
NASA: июль был самым жарким месяцем в истории Земли

Ученые Института космических исследований Годдарда (GISS) НАСА в Нью-Йорке официально подтвердили, что в июле 2023 года была самая высокая глобальная температура за всю историю.

В течение месяца температурные рекорды были побиты в некоторых частях Южной Америки, Северной Африки, Северной Америки и Антарктического полуострова. В этих регионах наблюдалось повышение температуры примерно на 7,2 F (4 C) выше среднего. Еще один интересный факт: пять самых жарких июлей с 1880 года произошли за последние пять лет.

Изменение климата в первую очередь вызвано увеличением содержания парниковых газов в атмосфере Земли, которые удерживают тепло и приводят к чрезмерному нагреванию планеты.

На диаграмме показаны аномалии глобальной температуры для каждого июля с 1880-х годов, основанные на анализе NASA GISTEMP. Аномалии отражают, насколько глобальная температура была выше или ниже нормы 1951-1980 годов для июля.
Absolutely wrong)
🖕1
Какой же это шедевр, а не технология)
(На графике распределение количества элементов в бакетах мапы, которую я пишу)
🔥6
Смотрел видео по психологии\философии, которое было на английском. Очень много незнакомых терминов и в итоге мало что понимал. Но также помнил, что у яндекс браузера есть закадровый перевод видео, а т.к. я использую фаирфокс и яндекс-браузера у меня нет, то начал искать какой-нибудь способ использовать в фаирфоксе. И способ есть и работает довольно круто!

Надо установить расширение, добавить в него скрипт и тогда над видео появится кнопка, по нажатии которой видео будет на нужном языке:
https://github.com/ilyhalight/voice-over-translation?ref=dtf.ru
👍1
Сейчас пропал интернет.

Немного предыстории. Тут прикольный провайдер, который осуществляет блокировку неугодных сайтов через днс. Для примера, хочешь зайти на реддит, браузер шлет запрос на днс сервер провайдера, а днс сервер ему не отвечает айпишником т.к. реддит заблокирован. Когда я столкнулся с этим, то первым делом решил заменить адрес днс сервера провайдера на адрес днс сервера гугла. Но провайдер также блокирует 53 порт, на который идут эти запросы. Решением в этом случае оказалось банально использовать впн.

Текущая проблема решилась довольно странным образом, я думал, что дело опять в днс, но пинг не шел не только до гугл.ком, но также до его айпишника. Поэтому я начал думать, что дело в линуксе, перешел на винду, где я гарантированно ничего не менял, но там также не работало ничего. Прыгая по миллионам новых меню 11й винды увидел кнопку: "случайные аппаратные адреса", понял, что это будет интересно, если поможет, нажал и все завелось. Собственно это и дало понять, что нужно сделать на линуксе.

Свичнулся обратно в линукс, поменял мак адрес и все стало работать. Забавно конечно. Итог: пару часов, потраченных на всю эту историю, опыт, ну и узнал, что есть утилитка macchanger для удобной смены мак адреса.
☝️
...when should we expect the Go 2 specification that breaks old Go 1 programs?
The answer is never. Go 2, in the sense of breaking with the past and no longer compiling old programs, is never going to happen. Go 2 in the sense of being the major revision of Go 1 we started toward in 2017 has already happened.
There will not be a Go 2 that breaks Go 1 programs. Instead, we are going to double down on compatibility, which is far more valuable than any possible break with the past. In fact, we believe that prioritizing compatibility was the most important design decision we made for Go 1.
So what you will see over the next few years is plenty of new, exciting work, but done in a careful, compatible way, so that we can keep your upgrades from one toolchain to the next as boring as possible.
Теперь Сбер и Тинькофф в бинансе выглядят вот так)
😁6😱2
Binance не отключил подсанкционные российские банки от P2P-платформы, а просто замаскировал их.

Тинькофф теперь называется «Raiffeisen Bank Aval», а Сбер — «Русский Стандарт». @bankoffo
Пуанкаре... регулярно работал с 10 до 12 утра и с 5 до 7 часов вечера. Он обнаружил, что редко достигает большего, если работает дольше
🔥5💯2
ByBit работает отлично и даже рабочая симка не нужна для KYC, а то с бинансом у меня постоянно проблема была, что сеть не ловит или вообще симка в стране не работает, а подтвердить перевод надо. В ByBit просто код в гугл аутентификатор приходит, можно по вайфаю всё сделать
🤔1
Binance официально подтвердила запрет для россиян торговать на p2p любой фиатной валютой, кроме рубля. В тоже время граждане РФ, проживающие за пределами страны, могут продолжать торговать на Binance всеми валютами (кроме RUB, EUR, USD и UAH) после прохождения верификации с иностранным документом, например ВНЖ. @bankoffo
🎉1