Pull to refresh
1
0
Send message

ТВ для «любимой бабули» или куда смотреть, если нужен хороший вариант

Reading time5 min
Views13K

Не знаю, как вы, а я к телевизору не подходил последние лет пять. Я и дальше бы жил в стороне от наиболее популярных сегодня телепередач, если бы не пришлось помогать родителям, внезапно утратившим бразды правления над дачным телевизором «Рубин-714» 1976 года рождения, с выбором нового «члена семьи». Теперь с трепетом ждём с моей супругой неизбежной кончины их холодильника «Бирюса», примерно тех же лет. Но, сегодня не об этом.

Читать далее
Total votes 46: ↑27 and ↓19+8
Comments35

Пожалуйста, не используйте Python для инструментария

Reading time6 min
Views51K

Разработчики любят спорить о языках программирования и инструментах. Если опустить типичные претензии, обычно все сводится к тому, что люди просто защищают свой выбор. Это проявление тенденции оправдывать и защищать свои инвестиции - время потраченное на изучение используемых языка и инструментов. И в этом есть смысл. Но не всегда это поведение является рациональным.

Читать далее
Total votes 134: ↑93 and ↓41+52
Comments287

XSS с мутациями: как безопасный код становится зловредным и при чем здесь innerHTML

Reading time11 min
Views6.1K

В статье сначала взглянем на примеры mXSS уязвимостей недалекого прошлого, а затем рассмотрим совсем свежие примеры, которые позволили обойти защиту популярных HTML-санитайзеров. Разберемся как им это удалось, и почему так сложно надежно защититься от уязвимостей, основанных на мутациях HTML-разметки.

Читать далее
Total votes 6: ↑5 and ↓1+4
Comments7

Немного байт здесь, немного там — и вот вы уже говорите о том, как в действительности устроена память

Reading time6 min
Views3.5K

Мой новый пост был навеян последним квизом по го. Обратите внимание на бенчмарк [1]:


func BenchmarkSortStrings(b *testing.B) {
        s := []string{"heart", "lungs", "brain", "kidneys", "pancreas"}
        b.ReportAllocs()
        for i := 0; i < b.N; i++ {
                sort.Strings(s)
        }
}

Будучи удобной обёрткой вокруг sort.Sort(sort.StringSlice(s)), sort.Strings изменяет переданные ей данные, сортируя их, так что далеко не каждый (по-крайней мере, как минимум, 43% подписчиков из twitter) мог бы предположить, что это приведёт к аллокациям [выделениям памяти на куче]. Однако, по-крайней мере в последних версиях Go это так и каждая итерация этого бенчмарка вызовет одну аллокацию. Но почему?

Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments0

Information

Rating
Does not participate
Registered
Activity

Specialization

System Software Engineer
Middle
Git
Python
Golang