Race condition
Вчера открываю кран в раковине ванной, а вода не бежит. Думал, перекрыли воду в доме, но через время заметил, что в кухне вода есть.
После проб и ошибок нашел воспроизводимый сценарий:
- перекрываешь всю воду на стояке
- открываешь другие краны (видимо, спускаешь давление) и закрываешь
- открываешь проблемный кран в ванной (чтоб он был первым)
- открываешь стояк
- вода начинает бежать
Вот такой наглядный пример race condition
Вчера открываю кран в раковине ванной, а вода не бежит. Думал, перекрыли воду в доме, но через время заметил, что в кухне вода есть.
После проб и ошибок нашел воспроизводимый сценарий:
- перекрываешь всю воду на стояке
- открываешь другие краны (видимо, спускаешь давление) и закрываешь
- открываешь проблемный кран в ванной (чтоб он был первым)
- открываешь стояк
- вода начинает бежать
Вот такой наглядный пример race condition
Состояние гонки, также конкуренция — ошибка проектирования многопоточной системы или приложения, при которой работа системы или приложения зависит от того, в каком порядке выполняются части кода.
👍4
Саморазвитие
Сегодня исполнилось пол года с тех пор, как я открыл очередной учебник по алгоритмам и не читал его, при этом, поддерживая его открытым и на виду.
Сегодня исполнилось пол года с тех пор, как я открыл очередной учебник по алгоритмам и не читал его, при этом, поддерживая его открытым и на виду.
🔥6😁2
Forwarded from artydev & Co (Артур)
Теперь телеграмм показывает количество активных пользователей в ботах
Под активными наверное имеются ввиду те, кто взаимодействовал за последние N дней
Под активными наверное имеются ввиду те, кто взаимодействовал за последние N дней
Альтернатива leetcode
Наткнулся на игру, в которую затягивает поиграть - https://www.codingame.com/clashofcode/
По сути, те же алгоритмы, как и на литкоде, только с ограничением по времени и одновременно с несколькими участниками. В отличие от всяких литкодов, ты тут видишь, что большинство долго тупят и/или не решают задачу в реальном времени; не создается ощущения, что кругом гении, решающие все "за 5 минут".
Наткнулся на игру, в которую затягивает поиграть - https://www.codingame.com/clashofcode/
По сути, те же алгоритмы, как и на литкоде, только с ограничением по времени и одновременно с несколькими участниками. В отличие от всяких литкодов, ты тут видишь, что большинство долго тупят и/или не решают задачу в реальном времени; не создается ощущения, что кругом гении, решающие все "за 5 минут".
CodinGame
Practice your coding skills on short coding contests - Clash of Code
Join a group of 8 coders and try to be the first to code the best algorithm on 5min programming battles.
👍1🔥1
Продуктивные ребята
Начал изучать ton (скоро будет технический пост) ради интереса, из документации попал на какой-то список "TON приложений", наткнулся на
https://github.com/xssnick/tonutils-go (потом, внезапно, увидел, что состою с автором в одном чате в телеге)
Умудряется же кто-то написать такие тонны полезного кода и поддерживать opensource-проект живым, всегда удивляюсь.
Жаль у него нет сайта, так бы добавил в #hpdb.
У меня только один проект https://github.com/boryashkin/cert-manager-webhook-beget/pkgs/container/cert-manager-webhook-beget, который я на скорую руку написал для себя, и оказалось, что кому-то он пригодился. Но развивать и изменять там особо нечего.
Начал изучать ton (скоро будет технический пост) ради интереса, из документации попал на какой-то список "TON приложений", наткнулся на
https://github.com/xssnick/tonutils-go (потом, внезапно, увидел, что состою с автором в одном чате в телеге)
Умудряется же кто-то написать такие тонны полезного кода и поддерживать opensource-проект живым, всегда удивляюсь.
Жаль у него нет сайта, так бы добавил в #hpdb.
У меня только один проект https://github.com/boryashkin/cert-manager-webhook-beget/pkgs/container/cert-manager-webhook-beget, который я на скорую руку написал для себя, и оказалось, что кому-то он пригодился. Но развивать и изменять там особо нечего.
2
This media is not supported in your browser
VIEW IN TELEGRAM
Отвлечение от айти
Как предлагалось раньше, решил заняться мемами, на саморазвитие сил нет.
Мало того, что нет, так еще и интересные технические посты никому не нужны, я начал осознавать, что люди подписаны на всяких успешных айтишников только из FOMO и/или с мыслью «когда-нибудь я эти посты прочитаю, но не сегодня».
Поэтому, пока айтишного вдохновения нет, больше не пытаюсь выжимать из себя посты.
https://www.tiktok.com/@borisd50?_t=8qVHABjTwqA&_r=1
Как предлагалось раньше, решил заняться мемами, на саморазвитие сил нет.
Мало того, что нет, так еще и интересные технические посты никому не нужны, я начал осознавать, что люди подписаны на всяких успешных айтишников только из FOMO и/или с мыслью «когда-нибудь я эти посты прочитаю, но не сегодня».
Поэтому, пока айтишного вдохновения нет, больше не пытаюсь выжимать из себя посты.
https://www.tiktok.com/@borisd50?_t=8qVHABjTwqA&_r=1
😁3
Топовый уровень презентаций
Единственный запомнившийся мне спикер на технических конференциях - Kavya Joshi, ее уровень подготовки и структура выступления по всем фронтам на очень высоком уровне.
Я пересматривал ее презы по Go много раз.
- Она погружается в детали на необходимый и достаточный уровень, не оставляет ощущения неизвестности, и чтоб не углубляться сильно глубоко, она говорит, куда копать самостоятельно.
- Скорость и подача не усыпляет, а вовлекает и держит.
- Шутки в малом количестве и работают на предыдущий пункт (у некоторых каждый слайд - кринжовый мем).
- Темы выступлений не заезжены, не капитанские (хотя может и капитанские для разрабов ОС, компиляторов/интерпретаторов, HPC), показывают больше, чем можно найти в доке.
- Классные визуалы.
Вот пример
https://m.youtube.com/watch?v=7OpCf6f_BAM
Единственный запомнившийся мне спикер на технических конференциях - Kavya Joshi, ее уровень подготовки и структура выступления по всем фронтам на очень высоком уровне.
Я пересматривал ее презы по Go много раз.
- Она погружается в детали на необходимый и достаточный уровень, не оставляет ощущения неизвестности, и чтоб не углубляться сильно глубоко, она говорит, куда копать самостоятельно.
- Скорость и подача не усыпляет, а вовлекает и держит.
- Шутки в малом количестве и работают на предыдущий пункт (у некоторых каждый слайд - кринжовый мем).
- Темы выступлений не заезжены, не капитанские (хотя может и капитанские для разрабов ОС, компиляторов/интерпретаторов, HPC), показывают больше, чем можно найти в доке.
- Классные визуалы.
Вот пример
https://m.youtube.com/watch?v=7OpCf6f_BAM
YouTube
Let's Talk Locks!
Video with transcript included: https://bit.ly/35bUj95
Kavya Joshi explores when and why locks affect performance, delves into Go’s lock implementation as a case study, and discusses strategies one can use when locks are actually a problem.
This presentation…
Kavya Joshi explores when and why locks affect performance, delves into Go’s lock implementation as a case study, and discusses strategies one can use when locks are actually a problem.
This presentation…
👍3❤1
Торвальдс vs Таненбаум
После вчерашнего хайпа вокруг Линуса Торвальдса, решил почитать его высказывания и споры, наткнулся на то, как знаменитый профессор Таненбаум накинул на Линукс, а Линус прикольно его осадил:
https://www.oreilly.com/openbook/opensources/book/appa.html
Кратко:
- [Таненбаум] Linux выбрал неправильную архитектуру и завязан на конкретное железо, в отличие от моего Minix, который я делаю в качестве хобби, будучи профессором и знающим все об ОС.
- [Торвальдс] "хобби" и быть профессором - хорошая отмазка, чтобы сделать дерьмовую ОС Minix. Линукс использует все возможности конкретных железяк, что и должна делать ОС, являясь прослойкой между железом и пользователем. И если говорить о хобби, моя ОС бесплатна и я ее делал в свободное время, чтобы разобраться с железом, а Minix платная.
После вчерашнего хайпа вокруг Линуса Торвальдса, решил почитать его высказывания и споры, наткнулся на то, как знаменитый профессор Таненбаум накинул на Линукс, а Линус прикольно его осадил:
https://www.oreilly.com/openbook/opensources/book/appa.html
Кратко:
- [Таненбаум] Linux выбрал неправильную архитектуру и завязан на конкретное железо, в отличие от моего Minix, который я делаю в качестве хобби, будучи профессором и знающим все об ОС.
- [Торвальдс] "хобби" и быть профессором - хорошая отмазка, чтобы сделать дерьмовую ОС Minix. Линукс использует все возможности конкретных железяк, что и должна делать ОС, являясь прослойкой между железом и пользователем. И если говорить о хобби, моя ОС бесплатна и я ее делал в свободное время, чтобы разобраться с железом, а Minix платная.
❤1👍1
Нормальные графики метрик
Каждый раз, когда заходишь на чьи-то доски в графане, видишь там какие-то спидометры, столбчатые диаграммы, pie-чарты и огромные циферки или очень узкие графики на три деления.
Меня это всегда удивляло. Понимаю еще диагностические метрики, собранные со ста проектов для дежурных. Но метрики продукта в таком стиле скрывают всю картину.
По моему мнению, обычный график шириной в половину "строки" (экрана) сырых данных - самое лучшее. Одним взглядом ты видишь тренд, историю, текущую ситуацию, корреляции. Делаешь кучу этих графиков на каждую метрику, группируешь по "строкам" (rows) и скроллишь их. Аномалии бросятся в глаза, даже если ты не знаешь, о чем этот график.
А что дает "спидометр", кроме того, что выглядит круче? "Сейчас 100500рпс и это +10%", это хорошо или плохо? Как было 3 часа назад? А вчера? А как скачок рпс соотносится поминутно с другими метриками?
Каждый раз, когда заходишь на чьи-то доски в графане, видишь там какие-то спидометры, столбчатые диаграммы, pie-чарты и огромные циферки или очень узкие графики на три деления.
Меня это всегда удивляло. Понимаю еще диагностические метрики, собранные со ста проектов для дежурных. Но метрики продукта в таком стиле скрывают всю картину.
По моему мнению, обычный график шириной в половину "строки" (экрана) сырых данных - самое лучшее. Одним взглядом ты видишь тренд, историю, текущую ситуацию, корреляции. Делаешь кучу этих графиков на каждую метрику, группируешь по "строкам" (rows) и скроллишь их. Аномалии бросятся в глаза, даже если ты не знаешь, о чем этот график.
А что дает "спидометр", кроме того, что выглядит круче? "Сейчас 100500рпс и это +10%", это хорошо или плохо? Как было 3 часа назад? А вчера? А как скачок рпс соотносится поминутно с другими метриками?
Утверждения Павла Дурова
https://t.iss.one/durov/372
Я так понимаю, речь о Memhash? Приложение с одной кнопкой "Майнить"?
Может во мне зависть говорит, но мне кажется, в посте Павла что-то недоговорено (не первый случай). Как можно такую виральность обеспечить очередной мутной тапалке?
Может там под "без маркетингового бюджета" имелись ввиду неограниченные бюджеты, как у ВК на старте? 😁
https://t.iss.one/durov/372
Я так понимаю, речь о Memhash? Приложение с одной кнопкой "Майнить"?
Может во мне зависть говорит, но мне кажется, в посте Павла что-то недоговорено (не первый случай). Как можно такую виральность обеспечить очередной мутной тапалке?
Может там под "без маркетингового бюджета" имелись ввиду неограниченные бюджеты, как у ВК на старте? 😁
Польза Telegram Stars
1. Покупаешь за >2 рубля за штуку.
2.1. Вывод из ботов и каналов идет в виде бесполезных подарков, с которых забирается комиссия (2 звезды с подарка в 15 звезд, да и подарок от бота, в итоге, не трансформируется в звезды, какой смысл тогда показывать его стоимость пользователю?)
2.2. Телеграм дает 1.4 рубля за звезду, если обменивать на деньги.
Искал как делать вывод звезд из бота напрямую, не в виде подарков - не нашел. В бот апи этого вообще нет, в обычном апи телеграма черт ногу сломит, и вроде как тоже нет возможности.
Хотел дарить пользователям @purchase_list_bot звезды, в итоге остановился на TON, а на звезды забил.
1. Покупаешь за >2 рубля за штуку.
2.1. Вывод из ботов и каналов идет в виде бесполезных подарков, с которых забирается комиссия (2 звезды с подарка в 15 звезд, да и подарок от бота, в итоге, не трансформируется в звезды, какой смысл тогда показывать его стоимость пользователю?)
2.2. Телеграм дает 1.4 рубля за звезду, если обменивать на деньги.
Искал как делать вывод звезд из бота напрямую, не в виде подарков - не нашел. В бот апи этого вообще нет, в обычном апи телеграма черт ногу сломит, и вроде как тоже нет возможности.
Хотел дарить пользователям @purchase_list_bot звезды, в итоге остановился на TON, а на звезды забил.
👍1
Программизд
Такие разные системы Билдил go-приложение в докере, но получил сообщение, что пакет не найден, хотя он был внутри этого модуля. #15 0.360 some/service/api.go:17:2: no required module provides package some/lib/lib.go; to add it: go get ... Билжу на хосте …
И вот опять
>На macOS файловая система регистронезависимая, но регистрозапоминающая.
>На macOS файловая система регистронезависимая, но регистрозапоминающая.
Программизд
Распространяю без проверки правдивости данных (хотя загуглил, вроде реально у СО трафик проседает) В Гугле последнее время тоже Gemini на все отвечает, даже не приходится ссылки открывать.
ChatGPT
Постепенно, за 2024, доконвертировался в постоянного пользователя всяких gpt.
Как-то часто коллеги и знакомые, особенно более молодые, упоминали его, предлагали не погуглить, а именно глянуть в ChatGPT.
Мало по малому и из чувства “FOMO” и получая реальную пользу, понял, что ничего такого тут нет, врубил всякие copilot’ы и держу открытой вкладку ChatGPT.
Особенно приятно, когда есть опыт и ты можешь валидировать/оценивать выдаваемые ответы, понимать и удивляться, что они довольно хорошие.
Например, когда надо накидать запрос в монгу (с которой уже давно редко соприкасаюсь и многое подзабыл), спрашиваешь: «у меня есть коллекция x, в ней поля x1, x2 и коллекция y, с полями y1, y2, мне надо агрегировать x, у которых есть столько то y», и получаешь готовый запрос.
Постепенно, за 2024, доконвертировался в постоянного пользователя всяких gpt.
Как-то часто коллеги и знакомые, особенно более молодые, упоминали его, предлагали не погуглить, а именно глянуть в ChatGPT.
Мало по малому и из чувства “FOMO” и получая реальную пользу, понял, что ничего такого тут нет, врубил всякие copilot’ы и держу открытой вкладку ChatGPT.
Особенно приятно, когда есть опыт и ты можешь валидировать/оценивать выдаваемые ответы, понимать и удивляться, что они довольно хорошие.
Например, когда надо накидать запрос в монгу (с которой уже давно редко соприкасаюсь и многое подзабыл), спрашиваешь: «у меня есть коллекция x, в ней поля x1, x2 и коллекция y, с полями y1, y2, мне надо агрегировать x, у которых есть столько то y», и получаешь готовый запрос.
👍4
Не обращал внимания до этого
https://go.dev/blog/range-functions
https://go.dev/blog/range-functions
package main
import (
"fmt"
"iter"
)
func main() {
// Создаем последовательность пар (index, value)
seq := func(yield func(int, string) bool) {
fruits := []string{"apple", "banana", "cherry"}
for i, fruit := range fruits {
if !yield(i, fruit) { // yield возвращает false, если итерация остановлена
return
}
}
}
// Итерируемся по последовательности
for i, fruit := range seq {
fmt.Printf("Index: %d, Fruit: %s\n", i, fruit)
}
}
Отсюда можно задуматься, что такое yield под капотом https://github.com/golang/go/issues/68897go.dev
Range Over Function Types - The Go Programming Language
A description of range over function types, a new feature in Go 1.23.
Недавно задумался о бизнес-идее: сделать футбольную платформу, где каждый мог бы завести себе AI-игрока по аналогии с настоящим футболистом, мог бы прокачивать его скиллы и присоединяться к командам, получать за это зарплату от владельцев команд. На платформе были бы всякие лиги, чтобы команды могли в них участвовать, завоевывать титулы, покупать игроков (тех "настоящих"), заниматься трансферами и т.п.
Начал ресерчить, сразу наткнулся на проект от гугла
https://research.google/blog/introducing-google-research-football-a-novel-reinforcement-learning-environment/
https://github.com/google-research/football
они даже сделали один подобный турнир с Manchester City F.C.: https://www.kaggle.com/c/google-football
Потом я понял, насколько много в этой идее подводных камней и препятствий, что сократил ее просто до серии пенальти, но и это решил уже не делать. На продвижение подобного нужны огромные деньги и не факт, что выстрелит. Проще такое же, но не с AI, а просто игроками в фифу на консолях, но такое уже есть.
Начал ресерчить, сразу наткнулся на проект от гугла
https://research.google/blog/introducing-google-research-football-a-novel-reinforcement-learning-environment/
https://github.com/google-research/football
они даже сделали один подобный турнир с Manchester City F.C.: https://www.kaggle.com/c/google-football
Потом я понял, насколько много в этой идее подводных камней и препятствий, что сократил ее просто до серии пенальти, но и это решил уже не делать. На продвижение подобного нужны огромные деньги и не факт, что выстрелит. Проще такое же, но не с AI, а просто игроками в фифу на консолях, но такое уже есть.
1👎1
Ковырялся с редисом и, как обычно, решил посмотреть блог его создателя. Т.к. я его уже неоднократно читал, в голове сразу всплыл адрес.
Это один из продуктивных текстовых блогеров: последний пост был 2 дня назад, а первый 4538.
Там можно почитать интересные детали реализации редиса и как он к ним пришел. Ну и немного выпендрежа, какой он крутой программист.
antirez.com
#hpdb
Это один из продуктивных текстовых блогеров: последний пост был 2 дня назад, а первый 4538.
Там можно почитать интересные детали реализации редиса и как он к ним пришел. Ну и немного выпендрежа, какой он крутой программист.
antirez.com
#hpdb
👍2
Корнер-кейс с циклами (в го): если ограничивающее значение (; i <= X;) цикла передается извне, то возникает опасность, что передадут максимальный int и цикл станет бесконечным из-за переполнения i
func main() {
maxUint32 := ^uint32(0)
fmt.Println(maxUint32 - 1)
fmt.Println(maxUint32)
for i := maxUint32 - 1; i <= maxUint32; i++ {
fmt.Println("iter", i)
}
}
// 4294967294
// 4294967295
// iter 4294967294
// iter 4294967295
// iter 0
// iter 1
// iter 2
// ...func main() {
k := ^uint32(0) / 2
j := int32(k) // max int32
fmt.Println(k, j+1)
c := 0
for i := j - 1; i <= j; i++ {
fmt.Println(i)
c++
if c > 5 {
break
}
}
} // 2147483647 -2147483648
// 2147483646
// 2147483647
// -2147483648
// -2147483647
// -2147483646
// -2147483645
Forwarded from Зависит от контекста
Коллеги подкинули годноту для залипания: документация к первой части The Sims
Очень интересно наблюдать за тем, как, казалось бы развлекательный продукт из 2000-х, имеет внутри такое количество нюансов, сложностей и продуманных аспектов!
Очень интересно наблюдать за тем, как, казалось бы развлекательный продукт из 2000-х, имеет внутри такое количество нюансов, сложностей и продуманных аспектов!
👍1