Как стать автором
Обновить
1
0

Пользователь

Отправить сообщение

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

Время на прочтение5 мин
Количество просмотров14K

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

Читать далее
Всего голосов 43: ↑24 и ↓19+8
Комментарии35

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

Время на прочтение6 мин
Количество просмотров51K

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

Читать далее
Всего голосов 112: ↑71 и ↓41+52
Комментарии287

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

Время на прочтение11 мин
Количество просмотров7.3K

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

Читать далее
Всего голосов 5: ↑4 и ↓1+4
Комментарии7

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

Время на прочтение6 мин
Количество просмотров3.6K

Мой новый пост был навеян последним квизом по го. Обратите внимание на бенчмарк [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 это так и каждая итерация этого бенчмарка вызовет одну аллокацию. Но почему?

Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии0

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

System Software Engineer
Middle
Git
Python
Golang