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

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

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

Публикуем проект с помощью Gradle и Sonatype в Maven Central без рук

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

Это такое приятное чувство, когда ты закончил какую-то задачу. А особенно когда твой проект уже готов к релизу. Остался лишь последний шаг.

Публикация проекта в Maven Central, имеено об этом я расскажу в этой статье. Как настроить Gradle, чтобы потом без труда настроить CI.

Читать далее ->
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 7

profile-guided поиск по коду

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

Если объединить структурный поиск по коду через gogrep и фильтрацию результатов через perf-heatmap, то мы получим profile-guided поиск по коду.


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


Через perf-heatmap также можно аннотировать файл с учётом того, насколько строка исходного кода "горячая".


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

Памятка и туториал по HTTP-заголовкам, связанным с безопасностью веб-приложений

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


Доброго времени суток, друзья!


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


Сначала мы с вами кратко разберем основные виды уязвимостей веб-приложений, а также основные виды атак, основанные на этих уязвимостях. Далее мы рассмотрим все современные заголовки, каждый — по отдельности. Это в теоретической части статьи.


В практической части мы реализуем простое Express-приложение, развернем его на Heroku и оценим безопасность с помощью WebPageTest и Security Headers. Также, учитывая большую популярность сервисов для генерации статических сайтов, мы настроим и развернем приложение с аналогичным функционалом на Netlify.


Исходный код приложений находится здесь.


Демо Heroku-приложения можно посмотреть здесь, а Netlify-приложения — здесь.


Основными источниками истины при подготовке настоящей статьи для меня послужили следующие ресурсы:


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

Что можно положить в тег <head>

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

Рекомендуемый минимум

Ниже приведены основные элементы для любого веб-документа (веб-сайта/приложения):

meta charset — определяет кодировку веб-сайта, стандартом является utf-8.

meta name="viewport" — настройки viewport, связанные с мобильной отзывчивостью

width=device-width — физическая ширина устройства (отлично подходит для мобильных устройств!)

initial-scale=1 — начальный масштаб, 1 означает отсутствие масштабирования

Элементы

Допустимые элементы <head> включают meta, link, title, style, script, noscript и base.

Эти элементы предоставляют информацию о том, как документ должен восприниматься и отображаться веб-технологиями, например, браузерами, поисковыми системами, ботами и так далее.

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

Настройка собственного почтового сервера

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

Зачем нужен собственный почтовый сервер можно почитать в оригинальной статье. А поскольку на "habr" обретает надежду всяк сюда входящий, то далее пошаговая инструкция как сделать все настройки, чтобы почтовый сервер функционировал правильно: мог достучаться до любого адресата и сообщения не помечались как спам.

Читать далее
Всего голосов 28: ↑27 и ↓1 +26
Комментарии 123

Графика в терминале

Время на прочтение 3 мин
Количество просмотров 29K
Эта история началась, когда я узнал о существовании bpytop. Меня поразила детализация графиков и я начал разбираться как это сделано. Оказалось, что для вывода графиков использовались символы алфавита Брайля, представляющие из себя комбинацию из 8 точек: 2 точки в ширину и 4 точки в высоту. Поискав готовые решения, использующие этот подход, я нашел на реддите анонс такого проекта. В первом же комментарии анонса я прочитал:
Это конечно круто, но почему люди просто не переоткроют для себя ReGIS (векторную графику в терминале) и sixel (пиксельную графику в терминале).
До этого момента я ничего не знал про sixel. Копнув глубже я выяснил, что в теории sixel должен поддерживаться xterm-ом. Я запустил xterm на своей ubuntu 20.04 в режиме эмуляции vt340

xterm -xrm "XTerm*decTerminalID: vt340" -xrm "XTerm*numColorRegisters: 256"

выполнил вот такую команду (convert это команда из пакета imagemagick)

clear && convert <(curl -s https://upload.wikimedia.org/wikipedia/en/7/7d/Lenna_%28test_image%29.png) sixel:-

и увидел вот это:

image
Вау, работает!
Читать дальше →
Всего голосов 115: ↑115 и ↓0 +115
Комментарии 51

Из JCenter в Maven или короткая заметка о публикации мультиплатформы Kotlin

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

Недавно появилась новость о том, что JCenter скоро будет закрыт и как нам дальше жить там не сказано надо бы переезжать куда-то ещё. Лично для меня главным кандидатом стал MavenCentral, поскольку я уже давно там публикуюсь, хотя последний год привык делать это через Bintray. В этой заметке будет краткая информация о подводных, с которыми я встретился и как пришлось поменять свои скрипты публикации.

В ЭТОЙ СТАТЬЕ НЕТ ИНФОРМАЦИИ О ПУБЛИКАЦИИ НАТИВНЫХ ТАРГЕТОВ. И тем не менее, надеюсь, информация в статье будет вам полезна.

Читать далее
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 2

Работа с памятью в Tarantool: Small — Specialized Memory ALLocators

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


Tarantool — это персистентная NoSQL СУБД в памяти с хранимыми процедурами на Lua. В него встроен SQLite и дисковый движок (Vinyl). Также для Tarantool написано очень много расширений, поэтому многие считают его «сервером приложений». Здесь есть индексы разных типов, а в одном спейсе кроме первичного индекса может быть множество вторичных. Также в Tarantool есть один transaction thread, который выполняет все транзакции в памяти, есть сетевой thread и WAL thread.

Как же устроена работа с памятью в этой СУБД?
Читать дальше →
Всего голосов 40: ↑39 и ↓1 +38
Комментарии 7

В нативный код из уютного мира Java: путешествие туда и обратно (часть 2)

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


Это вторая часть расшифровки доклада Ивана Углянского (dbg_nsk) с JPoint 2020, посвященного связи Java с нативным кодом. В прошлой части мы поговорили про традиционный способ связи — через Java Native Interface (JNI), рассмотрели специфичные ему проблемы и оценили производительность. Картина получилась удручающей, поэтому давайте разбираться, чем можно заменить JNI?

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

Под капотом сортировок в STL

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


Стандарт С++ почти никогда не указывает, как именно должен быть реализован тот или иной std алгоритм. Дается только описание того, что на входе, что на выходе и асимптотические ограничения по времени работы и памяти. В статье я постарался прикинуть, какие математические алгоритмы и структуры данных имели ввиду авторы стандарта, указывая ограничения для той или иной сортировки и для некоторых других алгоритмов. А так же как эти алгоритмы реализованы на практике.


При написании статьи я использовал стандарт C++17. В качестве реализаций рассматривал GCC 10.1.0 (май 2020) и LLVM/Clang 10.0.0 (март 2020). В каждой и них есть своя реализация STL, а значит и std алгоритмов.

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

Как экономисты потеряли веру в разумность людей и научились их понимать

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


Многие научные открытия, когда они уже сделаны, кажутся очевидными. Настолько очевидными, что сложно себе представить, как это ученые могли быть настолько глупыми, чтобы когда-то считать иначе. Пожалуй, в экономической теории чаще других такое недоумение вызывает область, исследующая то, как люди принимают решения – поведенческая экономика. Я изучаю поведенческую экономику и отклонения от рационального поведения последние семь лет – началось всё с дипломного проекта, а в прошлом году исследования в этой области принесли мне кандидатскую степень по экономике. Когда я рассказываю интересующимся друзьям, что только в ХХ веке экономисты стали говорить, что человек, оказывается, не всегда рационален, да еще и не использует для совершения выбора всю возможную информацию, они начинают со скепсисом коситься на экономистов-классиков. Мол, серьезно, мистер Адам Смит? Ты думал, что, когда я молоко покупаю в Пятерочке, я матрицу решений строю, включая туда цены по всем розничным магазинам города?

Бывают ложные белые грибы, у амебы есть ложноножки, а такое отношение к экономистам я называю феноменом ложноглупых классиков. Кстати, частично он тоже объясняется когнитивных искажением, одним из тех, которые изучает современная поведенческая экономика: «мудростью задним числом» (hindsight bias). Однако в первую очередь он связан с той особенностью развития экономической науки, которая отличает ее от естественных наук вроде физики. Об этой особенности экономической теории и о том, как так получилось, что до ХХ века одной из ее самых прочных основ была предпосылка о рациональном и эгоистичном экономическом человеке, и почему в ХХ веке её вдруг решили пересмотреть, я и расскажу сегодня.
Читать дальше →
Всего голосов 70: ↑68 и ↓2 +66
Комментарии 65

Инклюзивное образование: почему такая хорошая идея так плохо работает

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


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

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

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

А теперь посмотрим, что происходит, когда мы эту идею пытаемся реализовать.
Читать дальше →
Всего голосов 171: ↑168 и ↓3 +165
Комментарии 278

Как я 12 лет создавал свой ЯП и компилятор к нему

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


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

Здравствуй, читатель! Меня зовут Александр, родился я в небольшом городке (меньше 10000 человек) в Беларуси. Моя семья была бедной, игрушек крайне мало, про компьютер и какие либо приставки вообще можно не заикаться. Не смотря на то, что семья была бедной, у матери были не бедные родственники, которые иногда дарили нам какие либо не дешевые вещи. И вот однажды (где то в 2001 году) эти самые родственники, дарят нам компьютер «Байт»(советский аналог ZX Spectrum 48k). Радости моей не было предела! Сразу же я начал, запускать на нем игры. Игры на этом компьютере загружались с обычных аудиокассет с магнитной лентой. Загрузка одной игры длилась примерно 5 минут и с не малой вероятностью, могла прекратиться из-за некачественного сигнала. Чтобы увеличить вероятность успешной загрузки, мне приходилось протирать спиртом и регулировать положение считывающей головки магнитофона. Весь этот шаманизм при загрузке, длительность загрузки и невозможность сохраняться в играх, привели к тому, что постепенно я начал терять интерес к играм. Но вместе с «Байт»-ом мне также подарили книгу, по работе с этим компьютером. Я решил прочитать эту книгу, чтобы узнать больше о возможностях «Байт»-а. В книге оказался учебник по встроенному в «Байт» языку программирования «Бэйсик».
Читать дальше →
Всего голосов 159: ↑143 и ↓16 +127
Комментарии 525

Опыт мобильного CICD: один стандарт fastlane на много мобильных приложений

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


Я бы хотела поговорить о непрерывной интеграции и доставке для мобильных приложений с помощью fastlane. Как мы внедряем CI/CD на все мобильные приложения, как мы к этому шли и что получилось в итоге.

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

Создание плагина для Clang Static Analyzer для поиска целочисленных переполнений

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


Автор статьи: 0x64rem


Вступление


Полтора года назад у меня появилась идея реализовать свой фазер в рамках дипломной работы в университете. Я начала изучать материалы про графы потока управления, графы потока данных, символьное исполнение и т.д. Далее шёл поиск тулз, проба разных библиотек (Angr, Triton, Pin, Z3). Ничего конкретного в итоге не получилось, пока этим летом я не отправилась на летнюю программу Summer of Hack 2019 от Digital Security, где в качестве темы проекта мне было предложено расширение возможностей Clang Static Analyzer. Мне показалось, что эта тема поможет мне расставить по полкам мои теоретические знания, приступить к реализации чего-то существенного и получить рекомендации от опытных менторов. Далее я расскажу вам, как проходил процесс написания плагина и опишу ход своих мыслей в течение месяца стажировки.

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

Как стать «толковым джуниором». Личный опыт

Время на прочтение 6 мин
Количество просмотров 75K
На Хабре есть уже довольно много статей от джуниоров и для джуниоров. Некоторые поражают степенью зажратости юных специалистов, которые в самом начале своего карьерного пути, уже готовы давать советы корпорациям. Некоторые наоборот удивляют несколько щенячим энтузиазмом: «Ой, меня взяли на фирму настоящим программистом, теперь я готова работать хоть и бесплатно. А еще вчера на меня тимлид посмотрел — уверена, мое будущее устроено». Такие статьи в основном в корпоративных блогах. Ну, и вот я решил рассказать о своем опыте начала работы джуниором в Москве, потому что а чем я хуже? Бабушка мне говорила, что ничем. Как вы, наверное, заметили, я люблю длинные отступления и растекаться мыслью по древу, но есть же любители такого стиля — так что наливайте большую чашку чая — и поехали.
Читать дальше →
Всего голосов 126: ↑114 и ↓12 +102
Комментарии 81

Как лечат сумасшедших. 1.1 — Фармакотерапия: основы и шизофрения

Время на прочтение 18 мин
Количество просмотров 148K
Приветствую тебя, %username%!



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

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

Если вышеизложенное вас не отпугивает, предлагаю окунуться в увлекательный мир психофармакологии. В посте много букв и картинок, предупреждаю сразу.
Всего голосов 119: ↑118 и ↓1 +117
Комментарии 280

Введение в ptrace или инъекция кода в sshd ради веселья

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


Цель, которой я задался, была весьма проста: узнать введённый в sshd пароль, используя ptrace. Конечно, это несколько искусственная задача, так как есть множество других, более эффективных, способов достичь желаемого (и с гораздо меньшей вероятностью получить SEGV), однако, мне показалось клёвым сделать именно так.
Читать дальше →
Всего голосов 26: ↑24 и ↓2 +22
Комментарии 9

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 1 из 6

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

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




Постановка задачи


Цель этого цикла статей — показать, как работает OpenGL, написав его (сильно упрощённый!) клон самостоятельно. На удивление часто сталкиваюсь с людьми, которые не могут преодолеть первоначальный барьер обучения OpenGL/DirectX. Таким образом, я подготовил краткий цикл из шести лекций, после которого мои студенты выдают неплохие рендеры.

Итак, задача ставится следующим образом: не используя никаких сторонних библиотек (особенно графических) получить примерно такие картинки:



Внимание, это обучающий материал, который в целом повторит структуру библиотеки OpenGL. Это будет софтверный рендер, я не ставлю целью показать, как писать приложения под OpenGL. Я ставлю целью показать, как сам OpenGL устроен. По моему глубокому убеждению, без понимания этого написание эффективных приложений с использованием 3D библиотек невозможно.
Читать дальше →
Всего голосов 198: ↑196 и ↓2 +194
Комментарии 120

Теперь ваш HTTPS будет прослушиваться, а сертификат для MitM вы должны поставить сами

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


Пока не Россия. Но уже Казахстан. Как писал ValdikSS в своем посте Казахстан внедряет свой CA для прослушивания всего TLS-трафика:
Государственный провайдер Казахтелеком, в связи с нововведениями закона Республики Казахстан «О связи», намерен с 1 января 2016 года прослушивать весь зашифрованный TLS-трафик, подменяя сертификаты сайтов национальным сертификатом безопасности, выпущенным Комитетом связи, информатизации и информации Министерства по инвестициям и развитию Республики Казахстан.

Что нового произошло с тех пор? Beeline и Telecom.kz (основной провайдер-монополист) выкатили обновленные инструкции по установке государственного сертификата, который позволит осуществлять атаку man-in-the-middle с подменой сертификата. Ссылка на государственный сертификат.
Что это такое и чем это грозит?
Всего голосов 155: ↑150 и ↓5 +145
Комментарии 580

Информация

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