1.83K subscribers
3.3K photos
131 videos
15 files
3.57K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
#meme, которому неплохо было бы последовать
18😢8👍3💔2🔥1
Эм...

Source
🤔8🥴1
А тем временем число подписчиков перевалило за 1600. Спасибо, что читаете Блог*!
8👌8🎉3🤡2
This media is not supported in your browser
VIEW IN TELEGRAM
6👍4
Forwarded from Хреногубка
А как гетеро вообще занимаются сексом? 😳 Ну типа… кто из них парень и кто другой парень? 🤔
😁27🤡6💯4🤔3💩1
🫡

Removal of (mostly Russian) email addresses from MAINTAINERS

Posted Oct 21, 2024 13:57 UTC (Mon) by paulbarker (subscriber, #95785)
Parent article: Kernel prepatch 6.12-rc4

This was merged for v6.12-rc4: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/...
"Remove some entries due to various compliance requirements. They can come
back in the future if sufficient documentation is provided."

I guess this is something to do with sanctions, but I think the folks removed from the MAINTAINERS file deserve a little more informative notice than that!

https://lwn.net/Articles/994868/

Коммит
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6e90b675cf942e50c70e8394dfb5862975c3b3b2
🤡375🤮3❤‍🔥1🤣1
Forwarded from iggisv9t channel
Эта картинка ждала 4 года
🔥12🤔6
🌚11🍌5😐4🤷4😁3🤯1
#prog #go #suckassstory

Пусть есть вот такая простая программа на Go:

package main

import (
"fmt"
"net"
)

func main() {
func() {
f, err := net.Dial("tcp", "1.1.1.1:443")
defer f.Close()

fmt.Println(err)
}()
}


Если запустить эту программу при отсутствии сетевого подключения (например, на Go playground), то программа печатает ошибку и... Валится с nil pointer dereference:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x4d0adb]

goroutine 1 [running]:
main.main.func1()
/tmp/sandbox1770654708/prog.go:11 +0x3b
main.main()
/tmp/sandbox1770654708/prog.go:14 +0xf


Почему так — в Go же в целом методы обычно не паникуют с nil-ресивером? Функция net.Dial из стандартной библиотеки возвращает (Conn, error), где Conn — не конкретный тип, а интерфейс (почему он включает в себя методы Read и Write вместо включения интерфейсов io.Reader и io.Writer — отдельный вопрос).

Так вот, как пояснено в 50 shades of Go, у присваивания интерфейсам nil есть два значения. Если интерфейсу присваивается nil-значение некоего не-интерфейсного типа, который может быть nil (скажем, некий указатель), то значимая часть интерфейса также будет nil, но указатель на таблицу методов будет заполнен от типа присваиваемого значения. Такая переменная будет давать false при тестирование на равенство с nil. Если же значению интерфейсного типа присвоить литерал nil напрямую (или просто не инициализировать явно), то тип нижележащего значения вывести неоткуда, а потому и значимая часть интерфейса, и указатель на таблицу методов будут nil. Такое значение будет давать true при тестировании на равенство с nil.

net.Dial, как и большинство функций в Go, возвращают первым значением nil в случае ошибки. В коде выше в конце main после Println срабатывает код в defer, который пытается вызывать метод Close, и так как у nil-интерфейса указатель на таблицу методов является nil, рантайм паникует, так как вытащить метод из ниоткуда, очевидно, нельзя.

Да, это значит, что поведение может поменяться, если net.Dial начнёт возвращать первое значение при ошибке иначе.

(thanks @HowToGoWrong)
💩11🤮4🥴4🤡1🌚1
#meme про теорию заговора
Forwarded from The Chosen Humor
😱20🤯14😁2
😢16🎉5
Оу вау. Машина Тьюринга из лего! Все эти звёзды смерти и соколы тысячелетия просто встали и вышли.

#cs #lego
🔥224🤯2😢1
Разработка ждёт балета
Оу вау. Машина Тьюринга из лего! Все эти звёзды смерти и соколы тысячелетия просто встали и вышли. #cs #lego
Что примечательно — вся конструкция работает от кручения одного вала, и при этом даёт достаточно мало сопротивления, чтобы её можно было приводить в действие вручную. Рекомендую посмотреть видео с объяснением и демонстрацией в действии
🔥5
#algo #article

Пусть у нас есть n элементов, каждый из которых указывает сам на себя. Как мы можем поменять связи так, чтобы объединить эти элементы в некий один цикл, и при этом мы могли бы получить каждый из вариантов перестановки связей с одинаковой вероятностью?

Про это есть Sattolo's algorithm, про который пишет небезызвестный Dan Luu. Он рассказывает не только о самом алгоритме, но и о том, почему он достигает поставленной цели — и при этом не предполагает наличия знаний по комбинаторике (как про это рассказывают в других источниках). Как ни странно, алгоритм Саттоло является минимальной модификацией алгоритма Фишера-Йетса — алгоритма для построения случайной перестановки.
🤔2👍1