Pull to refresh
0
0
Send message

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

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

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

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

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

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

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

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

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

Ssh-chat, часть 2

Reading time3 min
Views5.1K

Привет, Хабр. Это 2 статья из цикла ssh-chat.


Что мы сделаем:


  • Добавим возможность создания своих функций оформления
  • Добавим поддержку markdown
  • Добавим поддержку ботов
  • Увеличим безопасность паролей(хеш и соль)
Читать дальше →
Total votes 6: ↑5 and ↓1+4
Comments11

Python Testing with pytest. Просто, Быстро, Эффективно и Масштабируемо. Предисловие и Ведение

Reading time11 min
Views51K

Дальше


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

Dmitry Zinoviev
Author of Data Science Essentials in Python


Читать дальше →
Total votes 30: ↑20 and ↓10+10
Comments12

Уход инженера-электронщика из Apple вызвал волнение среди биржевых спекулянтов. Как стать таким как он?

Reading time5 min
Views53K
29 марта инженер по имени Жерард Вильямс Третий ушел из компании Apple. Это известие сразу опубликовал CNET и еще три десятка изданий во всем мире, не только технических, но и финансовых. Что же такого делал этот инженер, что его уход вызвал волнение среди биржевых спекулянтов? Он 9 лет проектировал процессоры в Apple iPhone, до этого 12 лет работал в ARM, до этого проектировал DSP в Texas Instruments, а до этого разрабатывал в Интеле схемы на ПЛИС. Во всех местах он использовал технологию проектирования на уровне регистровых передач, с использованием языков описания аппаратуры Verilog и VHDL.

Примеры поближе к России? На фото справа: 25-летний москвич Илья Неганов взял в 2011 году книжку Харрис & Харрис (последнюю версию которой можно скачать здесь или здесь), спроектировал простой процессор, сейчас работает в Apple, проектирует на верилоге GPU, по выходным летает на самолетике. Ниже пара молодоженов из Санкт-Петербурга, которые проектировали на верилоге и ПЛИС обработку изображений из камеры и получили приз на конкурсе Innovate FPGA. Они провели медовый месяц в штаб-квартире Интела в Санта-Кларе. Далее товарищи из Киева, двое из которые выиграли бронзу на европейском финале Innovate FPGA. И наконец два школьника, из 5 и 9 классов, которые делают свои первые упражнения с микросхемами малой степени интеграции на макетной плате, после чего приступают к упражнениям на верилоге и ПЛИС.

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


Total votes 90: ↑70 and ↓20+50
Comments224

Визуализация времени возрождения Рошана

Reading time56 min
Views51K
В данной статье рассматривается перехват функций графического API на примере DirectX 9 под x64 применительно к игре Dota 2.

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



Disclaimer: Автор не несет ответственности за применение вами знаний полученных в данной статье или ущерб в результате их использования. Вся информация здесь изложена только в познавательных целях. Особенно для компаний разрабатывающих MOBA, чтобы помочь им бороться с читерами. И, естественно, автор статьи ботовод, читер и всегда им был.
Читать дальше →
Total votes 134: ↑133 and ↓1+132
Comments22

Commando VM — альтернатива Kali Linux для Windows

Reading time3 min
Views26K

Буквально на днях компания FireEye презентовала систему Commando VM, предназначенную для пентестеров и Red Team, работающую под управлением операционных систем семейства Microsoft Windows.

FireEye позиционирует Commando VM как «первый в своем роде» дистрибутив для пентестеров под Windows, однако они явно лукавят, т.к. на ум сразу приходит как минимум проект Pentest Box, который также заточен под Windows.

В тоже время, сама система Commando VM довольно интересна и заслуживает внимания…
Total votes 18: ↑17 and ↓1+16
Comments2

Инструменты для создания адаптивного сайта без доступа к сайту

Reading time4 min
Views10K
Есть сайт у которого нет мобильной версии, и нужно с минимальными затратами времени сделать мобильным пользователям этот сайт приятнее в использовании.

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

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



Тут на помощь приходят юзерскрипты, livereload, sass или другие препроцессоры. С этим набором время адаптирования сайта сокращается в несколько раз.

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

DHCP+Mysql сервер на Python

Reading time15 min
Views11K


Целью данного проекта было:

  • Изучение протокола DHCP при работе в сети IPv4
  • Изучение Python (немножко более чем с нуля ;) )
  • замена серверу DB2DHCP (мой форк), оригинал здесь, который собирать под новую ОС всё труднее и труднее. Да и не нравится, что бинарник, который нет возможности «поменять прям щас»
  • получение работоспособного сервера DHCP с возможностью выборки IP адреса абонента по mac абонента или связке mac свича+порт (Option 82)
  • написание очередного велосипеда (О! это моё любимое занятие)
  • получение люлей про свою косорукость на Хабрахабр (а лучше инвайта) ;)

Результат:  работает ;) Опробовано на ОС FreeBSD и Ubuntu. Теоретически код можно попросить работать под любой ОС, т.к. специфических привязок в коде как будто нет.
Осторожно! Дальше много.
Читать дальше →
Total votes 31: ↑27 and ↓4+23
Comments11

Шлюз электронной почты за 7 минут

Reading time5 min
Views39K


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

Свободные решения традиционно считаются более сложными в настройке и требуют некоторого опыта. Частично это так: чтобы напугать новичка, достаточно прочитать инструкцию по конфигурирования Postfix, SpamAssassin и сопутсвующих наработок. Но всегда найдётся проект, разработчики которого предлогают уже готовые настройки, упрощающие внедрение. Одним из таких решений является Scrollout F1, возможности которого и рассмотрим под катом. (много картинок)
Возможности Scrollout F1
Total votes 10: ↑6 and ↓4+2
Comments3

NetXMS как система мониторинга для ленивых… и немного сравнения с Zabbix

Reading time13 min
Views49K
image

0. Интро


Я не нашел на Хабре ни одной статьи по NetXMS, хотя очень искал. И только по этой причине решил написать сие творение, дабы уделить внимание данной системе.

Это и tutorial, и how to, и поверхностный обзор возможностей системы.

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

Так как более-менее я работал только с Zabbix'ом — в статье будет часто упоминаться именно эта система для сравнения с сабжем. К тому же как-то так повелось, что все сравнивается с чем-то общепризнанным.

1. Что и зачем?


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

Зачем это нужно — так же очевидно. Чтобы быть в курсе происходящего.

Зачастую, система мониторинга может дать весьма исчерпывающую информацию о состоянии как инфраструктуры в целом, так и отдельных ее частей. Плюс к тому, если настроить оповещения (а без нее грош цена любому мониторингу), то на выходе мы получаем серьезный инструмент, который позволяет не только своевременно реагировать на уже возникшие аварийные ситуации, но и, в большинстве случаев, дает возможность эти аварии предотвратить.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments29

Автоматическое добавление места на виртуальном сервере

Reading time9 min
Views3.3K

Всем привет!


В этой статье мы расскажем о том, как мы автоматизировали задачу по расширению дискового пространства на одном из наших серверов. А чего сложного в такой простой задаче, что пришлось ее автоматизировать — спросите вы? Ничего, если вы не используете каскадно-объединённое монтирование. Чувствую, вопросов стало больше!? Ну тогда поехали под кат.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments2

Kubernetes кластер за $20 в месяц

Reading time25 min
Views13K

TL; DR


Поднимаем кластер для обслуживания веб-приложений без записи состояния (stateless web applications) вместе с ingress, letsencrypt, не используя средства автоматизации вроде kubespray, kubeadm и любых других.
Время на чтение: ~45-60 минут, на воспроизведение действий: от 3-х часов.


Преамбула


На написание статьи меня сподвигла потребность в своём собственном кластере kubernetes для экспериментов. Автоматические решения установки и настройки, которые есть в открытом доступе, не работали в моем случае, так как я использовал не-мейнстримовые дистрибутивы Linux. Плотная работа с kubernetes в IPONWEB стимулирует иметь такую площадку, решая свои задачи в комфортном ключе, в том числе и для домашних проектов.


Компоненты


В статье будут фигурировать следующие компоненты:


Ваш любимый Linux — я использовал Gentoo (node-1: systemd / node-2: openrc), Ubuntu 18.04.1.
Kubernetes Server — kube-apiserver, kube-controller-manager, kube-scheduler, kubelet, kube-proxy.
Containerd + CNI Plugins (0.7.4) — для организации контейнеризации возьмем containerd + CNI вместо docker (хотя изначально вся конфигурация была поднята на docker, так что ничего не помешает использовать его в случае необходимости).
CoreDNS — для организации service discovery компонентов, работающих внутри kubernetes кластера. Рекомендована версия не ниже 1.2.5, так как с этой версии появляется вменяемая поддержка работы coredns в качестве процесса, запущенного вне кластера.
Flannel — для организации сетевого стека, общения подов и контейнеров между собой.
Ваша любимая db.


Для всех

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

Развёртывание встраиваемой системы на базе Windows и Linux

Reading time14 min
Views21K
В статье описаны методы быстрого развёртывания встраиваемой системы на базе Windows 10 и Debian Linux. Приведены примеры сборки защищённого интерфейса.
Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments17

7 лучших бесплатных программ для проведения вебинаров в 2018

Reading time7 min
Views103K


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


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

Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments1

Прерывания от внешних устройств в системе x86. Часть 1. Эволюция контроллеров прерываний

Reading time8 min
Views43K
В данной статье хотелось бы рассмотреть механизмы доставки прерываний от внешних устройств в системе x86 и попытаться ответить на вопросы:

  • что такое PIC и для чего он нужен?
  • что такое APIC и для чего он нужен? Для чего нужны LAPIC и I/O APIC?
  • в чём отличия APIC, xAPIC и x2APIC?
  • что такое MSI? В чём отличия MSI и MSI-X?
  • как с этим связаны таблицы $PIR, MPtable, ACPI?

Если на какой-то из этих вопросов вам интересно получить ответ или вы просто хотите ознакомиться с эволюцией контроллеров прерываний в системе x86, добро пожаловать под кат.
Читать дальше →
Total votes 75: ↑74 and ↓1+73
Comments25

Загрузка ядра Linux. Часть 1

Reading time12 min
Views61K
От загрузчика к ядру

Если вы читали предыдущие статьи, то знаете о моём новом увлечении низкоуровневым программированием. Я написал несколько статей о программировании на ассемблере для x86_64 Linux и в то же время начал погружаться в исходный код ядра Linux.

Мне очень интересно разобраться, как работают низкоуровневые штуки: как программы запускаются на моём компьютере, как они расположены в памяти, как ядро управляет процессами и памятью, как работает сетевой стек на низком уровне и многое другое. Итак, я решил написать еще одну серию статей о ядре Linux для архитектуры x86_64.

Обратите внимание, что я не профессиональный разработчик ядра и не пишу код ядра на работе. Это всего лишь хобби. Мне просто нравятся низкоуровневые вещи и интересно в них копаться. Поэтому если заметите какую-то путаницу или появилятся вопросы/замечания, свяжитесь со мной в твиттере, по почте или просто создайте тикет. Буду благодарен.
Читать дальше →
Total votes 69: ↑67 and ↓2+65
Comments40

Программа для удаленного управления рабочим столом — Aspia

Reading time3 min
Views109K
image Хочу представить общественности свою разработку – приложение для удаленного управления рабочим столом Aspia. Проект является полностью бесплатным и с открытым исходным кодом (GPL 3.0).

На данный момент реализованы следующие возможности:

  • Удаленное управление рабочим столом
  • Удаленный просмотр рабочего стола
  • Передача файлов
  • Адресная книга с поддержкой шифрования и мастер-паролем (XChaCha20+Poly1305, 256-битный ключ)
  • Возможность создавать пользователей с индивидуальными правами
  • Шифрование всей передаваемой по сети информации (XSalsa20+Poly1305)
Читать дальше →
Total votes 151: ↑150 and ↓1+149
Comments296

Руководство по доведению «до кондиции» клона популярного китайского мини-роутера Hame A15, он же «unbranded A5-V11»

Reading time24 min
Views58K

Если я видел дальше других, то потому, что стоял на плечах гигантов.
И.Ньютон


Думаю многим известен маленький китайский роутер Hame A15 (он, а точнее массовые его копии, с улучшенными по сравнению с оригиналом ТТХ, одинаково хорошо гуглятся по ключевым словам 3g/4g router как на ebay, так и на aliexpress). Сегодня я хотел расказать, как я довел до ума роутер за 6,5$ и потратил на это 20$. Зачем? А примерно за тем же, зачем из бисера плетут браслетики — чтобы микромоторику потренировать и зрение подсадить (корпуса компонентов в основном 0402 :) Большей частью ради спортивного интереса, хотя немаловажно и то, что роутерчик этот, на сегодняшний день — моя любимая база для различных проектов (даже несмотря на сложность доступа к GPIO), вместо «народных» NEXX WT3020F, TP-Link TL-MR3020, TP-Link TL-WR703N и иже с ними. Причиной тому в первую очередь является его размер и форма печатной платы, удобная для встраивания куда угодно (на фото можно оценить размеры). В дальнейшем, чтобы избежать путаницы терминологии, буду называть показанное ниже устройство так, как его называет wiki openwrtA5-V11.


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

Как мы корпоративно от винды убегали

Reading time5 min
Views48K

Так повелось, что в нашей компании основным языком для backend разработки был выбран C#. Мы, кстати, этим выбором всегда были довольны, а когда MS начали развивать платформу .net Core, стало еще интереснее, так как C# — это хорошо, но C# под Linux — еще лучше.


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


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


Поскольку мы разрабатываем enterprise, то вместе с нами должна была убежать под linux и сквозная windows аутентификация. Собственно это и стало побудителем к написанию статьи. Так как информация находилась весьма трудно, отдельными кусками, и общением со многими людьми, идея собрать все необходимое в одном месте и описать работающий вариант показалась неплохой.

Читать дальше →
Total votes 62: ↑56 and ↓6+50
Comments69

Как я делал свой учет финансов под андроид с блэкджеком, СМС и ФНС

Reading time9 min
Views45K

Введение


Все началось в далеком 2011-м году, когда я купил свой первый андроид смартфон и открыл для себя удивительный мир андроид маркета. Именно там я нашел великолепное приложение для учета финансов Financisto. Несколько лет я трекал в нем свои расходы и доходы, сильно привык, однако были и слабые стороны:


  • необходимость вводить все транзакции вручную. Притом, что доля безналичных платежей непреклонно росла, а банк на каждый чих шлет вам смс.
  • нет глобального взгляда на бюджет в длительном временном разрезе. То есть хотелось видеть таблицу, предположим, на год, где для каждого месяца было бы видно, сколько планировалось потратить и заработать и сколько вышло по факту, плюс итого по всем строкам и столбцам. Тут ориентиром был YNAB.
  • нет синхронизации между устройствами. Да был Flowzr, но как-то он мне не зашел.

Если вторая проблема решилась экспортом в CSV и всемогущим экселем, то с остальными нужно было что-то делать. Очевидный вариант — сменить программу. Поизучав предложение, пришел к выводу, что все приложения делятся на скудные по функционалу и на дорогие:) Тем временем шел 2015-й год и мне все сильнее хотелось изучить разработку под мобильные девайсы. Что ж, звезды сходятся, принято решение пилить свое приложение!


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



Читать дальше →
Total votes 46: ↑45 and ↓1+44
Comments67

Information

Rating
Does not participate
Registered
Activity