Pull to refresh
0
@Karaedread⁠-⁠only

User

Send message

Файл дескриптор в Linux с примерами

Reading time14 min
Views102K
Однажды, на одном интервью меня спросили, что ты будешь делать, если обнаружишь неработающий сервис из-за того, что на диске закончилось место?

Конечно же я ответил, что посмотрю, чем занято это место и если возможно, то почищу место.
Тогда интервьюер спросил, а что если на разделе нет свободного места, но и файлов, которые бы занимали все место, ты тоже не видишь?

На это я сказал, что всегда можно посмотреть открытые файл дескрипторы, например командой lsof и понять какое приложение заняло все доступное место, а дальше можно действовать по обстоятельствам, в зависимости от того, нужны ли данные.

Интервьюер прервал меня на последнем слове, дополнив свой вопрос: «Предположим, что данные нам не нужны, это просто дебаг лог, но приложение не работает из-за того, что не может записать дебаг»?

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

«ну хорошо», сказал я, «если мы не можем перезапускать приложение и данные нам не важны, то мы можем просто очистить этот открытый файл через файл дескриптор, даже если мы его не видим в команде ls на файловой системе».

Интервьюер остался доволен, а я нет.

Тогда я подумал, почему человек, проверяющий мои знания, не копает глубже? А что, если данные все-таки важны? Что если мы не можем перезапускать процесс, и при этом этот процесс пишет на файловую систему в раздел, на котором нет свободного места? Что если мы не можем потерять не только уже записанные данные, но и те данные, что этот процесс пишет или пытается записать?
Читать дальше →
Total votes 136: ↑136 and ↓0+136
Comments20

Профессиональный обман: как мы рассылаем фишинговые письма нашим клиентам

Reading time6 min
Views22K

Перед новым годом в приемной компании «А», входящей в состав крупного холдинга, раздался звонок. Трубку подняла секретарь — Марина. Звонивший представился как сотрудник головной компании и сообщил, что, необходимо передать директору персональное приглашение на новогоднюю вечеринку. Марина открыла почту, нашла письмо и распечатала документ, а заодно сообщила e-mail руководителя. Она совершила ошибку.


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



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

Читать дальше →
Total votes 55: ↑54 and ↓1+66
Comments20

Практическое руководство по анонимности в онлайне

Reading time9 min
Views184K

Направленная антенна для удалённого доступа к публичному Wi-Fi

Обеспечить собственную безопасность (анонимность) в онлайне — тяжкий труд, требующий массивного объёма знаний. Даже лучшие профессионалы не всегда справляются.

Но это возможно.

Предупреждение. Для усвоения информации в полном объёме требуется несколько недель.
Читать дальше →
Total votes 84: ↑75 and ↓9+97
Comments125

Сдать OSCE: вызов принят

Reading time5 min
Views5.7K


Что бы вы ответили на такое предложение? Есть тема, которую большинство ИБ-шников обходят стороной, называется «бинарная эксплуатация». Для начала нужно решить тестовое задание: всего-то отреверсить ассемблерный код и сгенерировать ключ. Потом надо выполнить 8 модулей лабораторных работ на стенде 2000-ыx годов за 60 дней. Дальше готовиться можно по книге, но она поможет разобраться в теме лишь процентов на 20. Потом будет истощающий силы экзамен из четырёх задач на 48 часов, и сразу после него дадут 24 часа на подготовку отчёта на английском языке. И всё это удовольствие стоит 1800$.

Я сказал: «Дайте два!»

Итак, дальше я расскажу, как готовился и сдавал увлекательный экзамен на международный сертификат в области тестирования на проникновение Offensive Security Certified Expert, или сокращённо OSCE, от Offensive Security.
Читать дальше →
Total votes 14: ↑13 and ↓1+18
Comments2

Инструменты для очистки своей цифровой истории в интернете

Reading time8 min
Views61K

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

Как показала недавняя утечка данных по всем машинам «Ситимобила», людей эффективно отслеживают даже по анонимизированным дата-сетам. Если совместить друг с другом несколько анонимных баз данных, то можно надёжно установить личность конкретного человека.

С этим сложно бороться, но можно. Например, попытаемся удалить массивы данных, которые накопились в различных интернет-сервисах. Зачистим свою интернет-историю по полной программе.
Читать дальше →
Total votes 30: ↑25 and ↓5+31
Comments51

Сказки дiда Панаса. Сказка первая

Level of difficultyMedium
Reading time4 min
Views19K

Сидайте у гурток, малятки. Сейчас дiд Панас расскаже вам казочку.

Давно это было, сынки — в те времена, когда по телефонам ещё звонили, а слова "ынтернет вещей" не придумали; в стране далёкой и богатой — за тридевять земель, в тридесятом царстве законности и демократии.

И жили в стране сей мультифункциональные устройства сканер-копир-принтер,

Казалось бы, что могло пойти не так?..
Total votes 71: ↑59 and ↓12+61
Comments42

Теория вычислений. Введение в конечные автоматы

Reading time5 min
Views92K
Спойлер
Cкажу cразу, что не буду объяснять слишком формально.

Конечные автоматы (finite-state machine)


Это до предела упрощенная модель компьютера имеющая конечное число состояний, которая жертвует всеми особенностями компьютеров такие как ОЗУ, постоянная память, устройства ввода-вывода и процессорными ядрами в обмен на простоту понимания, удобство рас­суждения и легкость программной или аппаратной реализации.

С помощью КА можно реализовать такие вещи как, регулярные выражения, лексический анализатор, ИИ в играх и тд.

У конечных автоматов имеется таблица переходов, текущее состояние автомата, стартовое состояние и заключительное состояние.

Таблица переходов — В ней хранятся переходы для текущего состояния и входного символа. Простейшая реализация может быть как двумерный массив.

Пример 1
  • По горизонтали вверху находятся возможные входные символы.
  • По вертикали слева находятся текущие возможные состояния.

image

Здесь видно, что из состояния 0 в состояние 1 можно попасть только, если у нас будет входной символ 'a', из состояния 1 в состояние 2, если символ 'b'.


Текущее состояние — множество состояний в котором автомат может находиться в данный момент времени.

Стартовое состояние — состояние откуда КА начинает свою работу.

Заключительное состояние — множество состояний в которых автомат принимает определенную цепочку символов, в ином случае отвергает.
Read more →
Total votes 19: ↑19 and ↓0+19
Comments8

Основы линейной регрессии

Reading time13 min
Views170K
Здравствуй, Хабр!

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

! Осторожно, трафик! В статье присутствует заметное число изображений для иллюстраций, часть в формате gif.
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments38

Как работает доказательство Гёделя

Reading time8 min
Views74K

Его теоремы о неполноте разгромили поиск математической теории всего. Почти сто лет спустя мы всё ещё пытаемся осмыслить последствия этого.




В 1931 году австрийский логик Курт Гёдель провернул, вероятно, один из самых потрясающих интеллектуальных трюков в истории.

Математики той эпохи искали неколебимые основы математики: набор базовых фактов, аксиом, которые были бы непротиворечивыми и полными, играя роль строительных блоков всех математических истин.

Однако шокирующие теоремы Гёделя о неполноте, опубликованные им всего лишь в 25-летнем возрасте, разбили эту мечту. Он доказал, что любой набор аксиом, который вы можете предложить на роль основы математики, неизбежно будет неполным. Всегда найдутся истинные утверждения, касающиеся чисел, которые невозможно будет доказать при помощи этих аксиом. Он также показал, что ни один набор аксиом нельзя использовать для доказательства их собственной непротиворечивости.
Читать дальше →
Total votes 81: ↑76 and ↓5+99
Comments346

Как я заработал 30$ на ставках на спорт

Reading time4 min
Views89K

Привет, Хабр! В этой статье я расскажу как я заработал на ставках на спорт, используя Python и базовую математику. Кому интересно, добро пожаловать под кат!


1

Читать дальше
Total votes 53: ↑44 and ↓9+45
Comments149

Почему управлять государством должен продуктовый менеджер?

Reading time9 min
Views15K

Потому что государство – это продукт. Со своими метриками, экономикой, жизненным циклом. У граждан-пользователей есть и лайфтайм, и отток, и средний чек. Да и цели те же: найти свою нишу на мировом рынке, решить боли пользователей, повысить выручку и капитализацию. Только вот чиновники, которые управляют нашими странами, угробили бы любой стартап примерно сразу.

Читать далее
Total votes 56: ↑36 and ↓20+27
Comments209

Debouncing с помощью React Hooks: хук для функций

Reading time10 min
Views19K

Здравствуйте! Меня зовут Игорь, я главный инженер по разработке в команде SmartData. Занимаюсь fullstack-разработкой внутренней аналитической BI-системы. В нашей компании React принят в качестве основного стандарта для построения пользовательских интерфейсов. Как и большая часть сообщества React, мы активно используем хуки в нашей повседневной работе.


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


В переводе статьи Debouncing с помощью React Hooks мы узнали, как можно без сторонних библиотек, используя только возможности React, создать хук в несколько строк кода для работы с отложенными изменениями значений переменных. Теперь я предлагаю рассмотреть еще один полезный хук, который поможет нам отложить вызов функции. Если функция будет вызываться много раз подряд, то фактический вызов произойдет только по прошествии установленного нами интервала задержки. То есть, только для последнего вызова из серии. Решение также очень компактное и легко реализуемое в React. Если вам стало интересно, прошу под кат.


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

Варим байткод на кухне JVM

Reading time8 min
Views15K
Меня зовут Александр Коцюруба, я руковожу разработкой внутренних сервисов в компании ДомКлик. Многим разработчикам, пишущим на Java, с опытом приходит понимание внутреннего устройства JVM. Чтобы облегчить этот путь Java-самурая, я решил простым языком изложить основы виртуальной машины Java (JVM) и работы с байткодом.

Что такое таинственный байткод и где он обитает?

Постараюсь ответить на этот вопрос на примере приготовления солений.


Читать дальше →
Total votes 33: ↑30 and ↓3+33
Comments0

Восстановление стертой информации во Flash памяти на физическом уровне

Reading time8 min
Views23K
На Хабре появились интересные статьи (например), о том как стереть информацию на Flash SSD накопителе, так, что бы информация действительно была стерта. Производители заявляют, что обычное стирание не гарантирует невозможность восстановления информации, и рекомендует использовать специальные функции стирания, которые сотрут не только таблицы размещения блоков данных, но и собственно сами блоки данных в памяти, содержащие стираемую информацию. А можно ли восстановить полноценно стертую информацию во Flash памяти? Не просто найти неиспользуемые области, в которых сохранились «ошметки» более не нужной (якобы стертой) информации, а именно восстановить исходное значение битов памяти после физического процесса стирания этих бит? Наш интерес к этой теме вызван не попыткой найти что-то тайное, а наоборот, дать рекомендации как стереть, чтобы никто не нашел (или правильней сказать затруднить). Сейчас в ряде приборов заложены алгоритмы 10 и более кратных процедур стирания, что во-первых, долго, а во-вторых, расходует ресурс Flash памяти и быстро выводит ее из строя. Но для того, что бы рекомендации были не абстрактные «сотрите дважды» или «сотрите, запишите и еще раз сотрите», а имели некое количественное выражение, нужно сначала научиться восстанавливать информацию. Интересно? Тогда поехали…

image

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

Как научиться разработке на Python: новый видеокурс Яндекса

Reading time6 min
Views245K
Осенью прошлого года в московском офисе Яндекса прошла первая Школа бэкенд-разработки. Мы сняли занятия на видео и сегодня рады поделиться на Хабре полным видеокурсом Школы. Он позволит вам научиться промышленной разработке на Python. Авторы лекций — опытные разработчики в Яндексе. К каждому видео приложены ссылки на примеры и полезные материалы.

Для изучения курса нужно знать основы Python и понимать, как приложения развёртываются на серверах. Мы ждём, что вы умеете делать запросы к базам данных и знаете, как создаются веб‑приложения, — хотя бы на начальном уровне.
Читать дальше →
Total votes 70: ↑70 and ↓0+70
Comments41

Посмотрим, что внутри у нового сервера Lenovo ThinkSystem SR650 v2

Reading time6 min
Views9.9K

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

Последняя новинка в нашем парке — популярный двухпроцессорный 2U-сервер Lenovo ThinkSystem SR650, о которой сама Lenovo уже рассказывала на Хабре. Но там был обзор первой версии сервера, а в 2021 году Lenovo выпустила более продвинутую вторую версию, которую мы и приобрели для своего дата-центра.
Читать дальше →
Total votes 24: ↑23 and ↓1+38
Comments3

Node.js в 2020: Выйди и зайди нормально

Reading time2 min
Views24K


За последние 5 лет Node.js очень изменился, но знания о платформе у сообщества остались на уровне 2013-2015 годов, все те же подходы, все те же проблемы. Сообщество плохо следит за новыми возможностями, а если и узнает про них, то это не влияет на написание ежедневного кода. В Node.js, да и в JavaScript, слабо проникают фундаментальные знания по программной инженерии и архитектуре, параллельному программированию, GRASP, SOLID, GoF, а если и проникают, то не подвергаются адаптации и переосмыслению. Поэтому, среди других языков программирования JavaScript воспринимается, как несерьезный, а в среде разработчиков Java, C++, C#, распространено мнение, что Node.js, это платформа для малограмотных людей. Как преодолеть эту тенденцию и как изменить подход к разработке на Node.js в 2020 году, с использованием всех современных возможностей и знаний, а так же, что нужно изменить в ежедневных практиках написания кода, эти и другие вопросы рассматриваются в трех бесплатных вебинарах «Node.js в 2020: Выйди и зайди нормально» 11, 14 и 21 апреля, накануне выхода Node.js v14.

Читать дальше →
Total votes 29: ↑21 and ↓8+18
Comments41

Практическое руководство по борьбе с утечками памяти в Node.js

Reading time8 min
Views20K
Утечки памяти похожи на сущности, паразитирующие на приложении. Они незаметно проникают в системы, поначалу не принося никакого вреда. Но если утечка оказывается достаточно сильной — она способна довести приложение до катастрофы. Например — сильно его замедлить или попросту «убить».



Автор статьи, перевод которой мы сегодня публикуем, предлагает поговорить об утечках памяти в JavaScript. В частности, речь пойдёт об управлении памятью в JavaScript, о том, как идентифицировать утечки памяти в реальных приложениях, и о том, как с бороться с утечками памяти.
Читать дальше →
Total votes 25: ↑24 and ↓1+40
Comments5

«Взломать» за 60 секунд или карантинное безумие

Reading time2 min
Views51K
Небольшая история о неадекватном заказчике и нахождении уязвимости на сайте за 1 минуту.

image

Не ожидал, что именно эта история станет моей первой статьей на Хабре. Пишу пока горячо!

Все что Вы прочитаете далее — это не призыв к действию или попытка «кого-либо» скомпрометировать.
Читать дальше →
Total votes 98: ↑81 and ↓17+94
Comments124

Монады как паттерн переиспользования кода

Reading time24 min
Views68K


В предыдущей статье мы обсуждали, почему функциональное программирование это совсем не то, что распиарено, и что оно совершенно не противоречит ООП, так, что даже сам "Дядя Боб" пишет про хороший ФП дизайн порождающий хороший ООП дизайн программы (и наоборот).


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


Но ведь в интернете буквально сотни статей про ФП и монады, зачем писать еще одну?


Дело в том, что все их (по крайней мере те что я читал) можно поделить условно на две категории: с одной стороны это статьи где вам объяснят что монада это моноид в категории эндофункторов, и что если монада T над неким топосом имеет правый сопряжённый, то категория T-алгебр над этой монадой — топос. На другой стороне располагаются статьи, где вам рассказывают, что монады — это коробки, в которых живут собачки, кошечки, и вот они из одних коробок перепрыгивают в другие, размножаются, исчезают… В итоге за горой аналогий понять что-то содержательное решительно невозможно.


Получается, что первые обычно полезны тем, кто и так знает обсуждаемую тему, а вторые даже не знаю на кого рассчитаны: сколько я их не прочитал, ничего полезного понять из них мне не удалось.


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

Читать дальше →
Total votes 89: ↑85 and ↓4+100
Comments256

Information

Rating
Does not participate
Registered
Activity