Search
Write a publication
Pull to refresh
57
0.1
Alexander @speshuric

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

Send message

Умеренный Hardening для Firefox

Reading time20 min
Views40K


Современный веб состоит из множества разных технологий, которые предоставляют самые разные возможности… но ещё и создают немалое количество угроз. Современные браузеры давно стали самыми сложными приложениями на компе, обогнав по сложности даже ядро ОС (в Firefox в несколько раз больше строк кода, чем в ядре Linux или офисных пакетах). Мы проводим в браузере большую часть своего времени, так что не удивительно, что браузер находится под прицелом: его постоянно пытаются взломать, использовать в ботнете, пытаются украсть из него наши данные, прослушать его трафик, отслеживать посещаемые нами сайты и наши действия на этих сайтах.


Сейчас самое время сказать, что всё не так уж плохо, и со всеми этими проблемами можно справиться… но это не так. Из коробки браузеры уже делают немало: регулярно обновляются, стараются затыкать дыры в безопасности, внедряют новые технологии для защиты, предоставляют возможность расширять их функционал сторонними расширениями. Но серьёзной защиты из коробки нет, и вряд ли она когда-нибудь появится: она идёт в комплекте с усложнением интерфейса браузера и частичным отключением его функционала, что "ломает" сайты и вряд ли понравится обычным пользователям. Но самое печальное, что даже такой ценой невозможно полноценно защитить браузер — слишком уж он стал сложным.


Тем не менее, для усиления защиты браузера можно много чего сделать.

Читать дальше →

Как я пишу конспекты по математике на LaTeX в Vim

Reading time9 min
Views132K
Некоторое время назад на Quora я отвечал на вопрос: как успевать записывать за лектором конспект по математике на LaTeX. Там я объяснил свой рабочий процесс по конспектированию в LaTeX с помощью Vim и Inkscape (для рисунков). Но с тех пор многое изменилось, так что я хочу опубликовать несколько постов в блоге с описанием нового процесса. Это первая из статей.

Я начал использовать LaTeX для конспектирования во втором семестре курса математики, и с тех пор написал более 1700 страниц. Вот несколько примеров, как выглядит конспект:


Читать дальше →

CLion 2019.1: ClangFormat, подсветка кода через Clangd, memory view, начальная поддержка микроконтроллеров

Reading time7 min
Views9.9K
Привет, Хабр!

У команды CLion множество отличных новостей — питерская часть команды вместе с другими коллегами успешно перебралась в новый офис, к нам присоединились новые классные разработчики, а главное, мы буквально на днях выпустили первое большое обновление в этом году, CLion 2019.1!

Работа в новой версии шла сразу по нескольким фронтам:

  • Усовершенствования поддержки языка C++: подсветка кода через Clangd, улучшения рефакторингов Extract и Rename, новая проверка на то, что функцию-член класса можно объявить статической.
  • Больше возможностей в настройках стиля написания кода: интеграция с ClangFormat, поддержка стилей именования переменных в C/C++, поддержка разных стилей для header guards.
  • Новые возможности и улучшения отладчика: просмотр состояния памяти — Memory View — для указателей, просмотр дизассемблированного кода в случае LLDB, ускорение работы пошаговой отладки.
  • CLion для микроконтроллеров, первые шаги.
  • Возможность создавать Build Targets и конфигурации для запуска/отладки в CLion, которые никак не связаны с проектной моделью.
  • Работа с другими языками программирования в строковых литералах в С/С++.
  • Новые визуальные темы и другие платформенные возможности.

CLion 2019.1 release

Подробнее об этих и других нововведениях читайте ниже. А чтобы попробовать новые возможности и улучшения, скачайте бесплатную 30-дневную версию CLion с нашего сайта.
Читать дальше →

Ужасная тюрьма: исследование маргинальных шипов венериной мухоловки

Reading time10 min
Views28K


Пятница — прекрасный день, когда серые будни подходят к концу (простите, что сыплю соль на рану тем, кто работает и в субботу/воскресенье), впереди ждут долгожданные выходные, и у нас появляется время заняться чем-то приятным и интересным: почитать книгу, которая уже собрала рекордный слой пыли; навестить родственников, если они вас еще помнят; выспаться, просыпаясь утром не от ужасного будильника, а естественным путем; полить цветок в горшке, который скоро эволюционирует в кактус, перекати-поле или плотоядное чудовище, как в фильме «Маленький магазинчик ужасов». В данной кинокартине растение-убийца это вымышленное создание, но у него есть прародитель в реальном мире — хищные растения, конкретнее, венерина мухоловка. Это растение — Джейсон Вурхиз в мире насекомых. И как для Джейсона характерным является мачете, так для мухоловки характерны ее маргинальные (краевые) шипы. Сегодня мы с вами познакомимся с исследованием, в котором ученые решили проверить насколько важны эти шипы в поимке добычи. Естественно, важны — скажете вы и будете правы, но результаты исследования не обошлись без сюрпризов. Не будем тянуть комара за хоботок и погрузимся в доклад за разъяснениями. Поехали.

Pacsafe, гроза карманников

Reading time9 min
Views28K


Уже двадцать лет компания Pacsafe создает рюкзаки и сумки для путешественников. Не простые, а защищенные: от вскрытий, от краж, от попыток унести их из-под носа рассеянного владельца. Понятно, что охватить все две декады творчества дизайнеров компании в одном тексте невозможно. Поэтому мы расскажем о технологиях Pacsafe на примере семи актуальных сумок и рюкзаков.
Читать дальше →

Триллион маленьких шинглов

Reading time14 min
Views19K


Источник изображения:www.nikonsmallworld.com


Антиплагиат – это специализированный поисковик, о чем уже писали ранее. А любому поисковику, как ни крути, чтобы работать быстро, нужен свой индекс, который учитывает все особенности области поиска. В своей первой статье на Хабре я расскажу о текущей реализации нашего поискового индекса, истории его развития и причинах выбора того или иного решения. Эффективные алгоритмы на .NET — это не миф, а жесткая и продуктивная реальность. Мы погрузимся в мир хеширования, побитового сжатия и многоуровневых кешей с приоритетами. Что делать, если нужен поиск быстрее, чем за O(1)?


Если кто-то еще не знает, где на этой картинке шинглы, добро пожаловать…


Читать полностью

Деградация программного обеспечения

Reading time4 min
Views44K
В книге «Электромагнитная эпоха: работа, любовь и жизнь, когда роботы правят миром» Робин Хэнсон кратко обсуждает деградацию программ:

Программное обеспечение изначально было разработано для одного набора задач, инструментов и ситуаций. Но оно медленно изменяется, чтобы справиться с постоянным потоком новых задач, инструментов и ситуаций. Такой софт становится более сложным, хрупким, в него труднее вносить полезные изменения (Леман и Биледи, 1985)1. В конце концов, лучше начать всё сначала и написать с нуля новые подсистемы, а иногда и полностью новые системы.

Я уверен, что это правда. Как правило, грамотная адаптация программного обеспечения к новым условиям занимает больше времени и усилий, чем написание нового программного обеспечения с нуля. Программисты не любят признавать это, но доказательства очевидны. В проектах open source есть несколько известных примеров.
Читать дальше →

Реинтродукция зубров (маленькая победа зоологов)

Reading time6 min
Views43K
Представьте, заброшенная деревня, в ней осталась жить одна-единственная бабка. И вот она жалуется почтальону:
— Боже мой, кошмар, уезжать отсюда надо!
— Почему, бабушка?
— Черти приходят по вечерам! В окно заглядывают! Боюсь!

Почтальон не очень разбирался в чертях, поэтому бабку чуть не госпитализировали по причине поехавшей кукушки. Но слух разошёлся. В отличие от многих подобных историй, бабка чертей описывала очень точно, не совсем по канону, да и ориентировку смогла дать по всем правилам сыскного дела. Разглядела она их до малейших волосков на поганых рожах. Так нашли зубров, которые решили немного погулять на свободе из вольера. Эти черти и дали начало одному из реинтродуцированных стад.

Вот представьте, что к вам такой в окно заглянул ночью:



Вообще, когда всё вокруг вымирает и кончается, один из самых крутых современных успехов в животном мире — это реинтродукция зубра. Потому что их чуть было не прибили в ноль. К 1926 году в дикой природе успешно постреляли всех доступных зубров, и осталось на всю планету всего 48 животных в зоопарках, причём это были Bison bonasus bonasus (равнинные). Только один Bison bonasus caucasicus дожил до 1925 года. Он предсказуемо вымер, но попал в Вальхаллу с косматыми валькириями ещё до этого. Потому что успел наплодить телят и передать гены дальше.

Сегодня зубров на планете уже около 7,2 тысяч штук, из них 5 тысяч вольноживущих. 20% из них — в России. 21 февраля стартовал новый учёт зубров поштучно.
Читать дальше →

Криптография в Java. Класс Signature

Reading time2 min
Views13K

Привет, Хабр! Представляю вашему вниманию перевод пятой статьи "Java Signature" автора Jakob Jenkov из серии статей для начинающих, желающих освоить основы криптографии в Java.

Читать дальше →

Беспощадная автоматизация. Director's Cut

Reading time18 min
Views8.5K

Я хочу рассказать о своем опыте ускорения автоматизации в команде программистов, и о том, какие приемы мы применили на практике, и что из этого получилось.


Начальные условия


Наш эксперимент по ускорению работы программистов мы проводили в следующих условиях:


  • это было территориально распределенное производственное предприятие;
  • в эксперименте приняли участие 4 программиста 1С и я, их руководитель;
  • мы – штатные программисты по поддержке комплекса конфигураций;
  • нам стало скучно, и мы решили развиваться.

В первую очередь, желание развиваться возникло после того, как нам на глаза попалась книжка Джеффа Сазерленда про Scrum. Про эту методику вы уже наверняка много знаете, поэтому я на ней останавливаться не буду. Основная часть статьи будет не про Scrum.

Читать дальше →

Готовим полнотекстовый поиск в Postgres. Часть 2

Reading time7 min
Views24K

В прошлой статье мы оптимизировали поиск в PostgreSQL стандартными средствами. В этой статье мы продолжим оптимизацию с помощью индекса RUM и проанализируем его плюсы и минусы в сравнении с GIN.

Читать дальше →

Типичные ошибки при работе с PostgreSQL. Часть 2

Reading time8 min
Views49K
Мы продолжаем публиковать видео и расшифровки лучших докладов с конференции PGConf.Russia 2019. В первой части доклада Ивана Фролкова речь шла о непоследовательном именовании, о constraints, о том, где лучше сосредоточить логику — в базе или в приложении. В этой части вас ждет разбор обработки ошибок, конкурентного доступа, неотменяемых операций, CTE и JSON.



Расскажу такую историю. Наш клиент говорит: «Медленно работает база, а наше приложение занимается обслуживаем населения. Мы боимся, что нас тут поднимут на вилы». Выяснилось, что у них было очень много процессов в состоянии idle in transaction. Приложение начало транзакцию, ничего не делает, но и транзакцию не завершает. Если вы взаимодействуете с какими-то внешними сервисами, то, в принципе, это нормальная ситуация. Другое дело, что если у вас состояние idle in transaction длится долго (больше минуты уже подозрительно), то это плохо потому, что PostgreSQL очень не любит долгие транзакции: VACUUM не сможет почистить все те строки, которые он мог бы увидеть, и долго висящая транзакция эффективно блокирует VACUUM. Начинают разбухать таблицы, индексы становятся всё менее эффективными.

Читать дальше →

Как одно изменение конфигурации PostgreSQL улучшило производительность медленных запросов в 50 раз

Reading time3 min
Views45K
Здравствуйте, хабровчане! Предлагаю вашему вниманию перевод статьи «How a single PostgreSQL config change improved slow query performance by 50x» автора Pavan Patibandla. Она очень сильно мне помогла улучшить производительность PostgreSQL.

В Amplitude наша цель — предоставить простую в использовании интерактивную аналитику продуктов, чтобы каждый мог найти ответы на свои вопросы о продукте. Чтобы обеспечить удобство работы, Amplitude должен быстро предоставить эти ответы. Поэтому, когда один из наших клиентов пожаловался на то, сколько времени потребовалось для загрузки раскрывающегося списка свойств события в пользовательском интерфейсе Amplitude, мы приступили к детальному изучению проблемы.

Отслеживая задержку на разных уровнях, мы поняли, что одному конкретному запросу PostgreSQL потребовалось 20 секунд для завершения. Для нас это стало неожиданностью, так как обе таблицы имеют индексы в соединяемом столбце.

Медленный запрос

image
Читать дальше →

Радиация: источники

Reading time17 min
Views47K
В предыдущем посте я рассказал о единицах измерения ионизирующей радиации. А теперь поговорим об источниках излучения.

Я не буду здесь писать о «том, что не надо трогать руками» — об этом и так много написано, а я не Олег Айзон и уникальных фотографий невиданных доселе радиоактивных артефактов у меня нет. Я расскажу в общем — откуда у нас берется радиация.


Читать дальше →

Поиск на скорости 1 ТБ/с

Reading time9 min
Views10K
TL;DR: Четыре года назад я покинул Google с идеей нового инструмента для мониторинга серверов. Идея состояла в том, чтобы объединить в одну службу обычно изолированные функции сбора и анализа логов, сбора метрик, оповещений и панели мониторинга. Один из принципов — сервис должен быть действительно быстрым, обеспечивая девопсам лёгкую, интерактивную, приятную работу. Это требует обработки наборов данных по несколько гигабайт за доли секунды, не выходя за рамки бюджета. Существующие инструменты для работы с логами часто медленные и неуклюжие, поэтому мы столкнулись с хорошей задачей: грамотно разработать инструмент, чтобы дать пользователям новые ощущения от работы.

В этой статье описывается, как мы в Scalyr решили эту проблему, применив методы старой школы, подход грубой силы, устранив лишние слои и избегая сложных структур данных. Эти уроки вы можете применить к собственным инженерным задачам.
Читать дальше →

[в закладки] Bash для начинающих: 21 полезная команда

Reading time9 min
Views174K
Материал, перевод которого мы публикуем сегодня, предназначен для тех, кто хочет освоить командную строку Linux. Умение эффективно пользоваться этим инструментом позволяет экономить немало времени. В частности, речь здесь пойдёт о командной оболочке Bash и о 21 полезной команде. Также мы поговорим о том, как пользоваться флагами команд и псевдонимами Bash, которые позволяют ускорить ввод длинных инструкций.



Также читайте в нашем блоге цикл публикаций про bash-скрипты
Читать дальше →

Мат слоном и конём. Метод TWIX

Reading time13 min
Views78K

Ушенина (на фото слева, играет белыми) — Гиря (на фото справа, играет чёрными). Ничья.
Гран-При среди женщин, 4-й тур
6 мая 2013 года, Женева


В 2013 ходу российский гроссмейстер Ольга Гиря в безнадёжной позиции, вместо того, чтобы сдаться, применила нестандартное читерство.

Имея на две фигуры меньше, она нашла остроумный способ добиться ничьей с чемпионкой мира (на тот момент) Анной Ушениной. Ольга просто разменяла всё, что только можно и свела партию к эндшпилю «король + слон + конь VS король». Украинская шахматистка полсотни ходов безуспешно пыталась заматовать вражеского короля, после чего результат партии был признан ничейным.

Обидная ничья существенно повлияла на результат Ушениной в турнире. Она заняла 5-6 место, а выигрыш позволил бы разделить бронзу (3-5 место).
А если бы знала метод TWIX - всё было бы иначе

Антипаттерны Vim

Reading time4 min
Views22K
Когда вы находитесь в состоянии потока, Vim серьёзно ускоряет редактирование, будь то написание кода, поэзии или прозы. Но поскольку кривая обучения слишком крута для текстового редактора, то очень легко сохранить вредные привычки с тех времён, когда вы только осваивали редактор. Vim настолько ускоряет работу, что искоренить эти привычки особенно трудно, ведь их можно даже не заметить. Но это того стоит. Перечислю некоторые из наиболее распространённых антипаттернов.
Читать дальше →

Как я нашел пасхалку в защите Android и не получил работу в Google

Reading time12 min
Views100K
Гугл любит пасхалки. Любит настолько, что найти их можно практически в каждом продукте компании. Традиция пасхалок в Android тянется с самых первых версий операционной системы (я думаю, все в курсе, что будет, если в настройках несколько раз нажать на строчку с версией Android).

Но бывает и так, что пасхалки обнаруживаются в самых неожиданных местах. Есть даже такая легенда: однажды один программист загуглил «mutex lock», а вместо результатов поиска попал на страницу foo.bar, решил все задачи и устроился на работу в Google.

Реконструкция событий
image

Вот такая же удивительная история (только без хэппи-энда) произошла со мной. Скрытые послания там, где их точно не может быть, реверс Java кода и нативных библиотек, секретная виртуальная машина, прохождение собеседования в Google — все это под катом.
Читать дальше →

Information

Rating
4,978-th
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity