Pull to refresh
69
0
Никита я @differentlocal

Затрудняюсь ответить :(

Send message

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

Reading time6 min
Views7.2K
В одном моем кроссплатформенном проекте мне понадобилась возможность проверять цифровые подписи плагинов перед загрузкой. Ни один из вариантов с созданием файла не является безопасным, так как можно подменить файл между проверкой подписи и его загрузкой, так же нельзя проверить подпись после загрузки, так как уже выполнились статические конструкторы. Поэтому необходимо загружать плагин, не создавая файла.

Перехватить функции open, mmap и прочие невозможно, так как ld.so слинкован с библиотекой си статически, исполняемые файлы, загруженные же своим загрузчиком, «неполноценны» (даже с перехватом функций в libdl): они не регистрируются в списке загруженных библиотек и/или их символы не видны через dlsym. Следовательно, остается только перехват системных вызовов.
Here be dragons

Как понять почему упал сервер не подключая к нему монитор и клавиатуру?

Reading time2 min
Views13K
Так бывает что сервер зависает, но к нему не подключена ни клавиатура, ни монитор.

У меня нет лишнего монитора, и обнаружив, что сервер не отвечает по сети,
снимать монитор с моего компьютера и подключать к серверу в кладовке нет никакого желания и сил.

В Linux есть такая возможность ядра как Netconsole.
Netconsole позволяет послать сообщения от ядра на удаленный компьютер.

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

Поиск по PDF, DOC, DOCX файлам с помощью Sphinx и PHP

Reading time5 min
Views28K
Доброе время суток.

Хочу поделиться своим опытом написания скрипта на PHP для поиска по файлам форматов PDF, DOC и DOCX, используя Sphinx. Все ниже изложенное написано для людей, которые уже имели опыт работы с связкой Sphinx и PHP. Если нет, то в свое время мне очень помогла статья Мартина Стрейчера «Создание собственной поисковой системы с помощью PHP», опубликованная на сайте IBM.

Совсем недавно на одном из проектов, который является веб-интерфейсом для базы пользователей, я получил задание организовать поиск по документам. Проект был написан до меня и уже использовал Sphinx.

Задача вроде тривиальная, но погуглив немного, я не смог найти внятную инструкцию с конкретным примером поиска по файлам форматов PDF, DOC и DOCX, что и стало причиной написания этой статьи.
Читать дальше →

Нормализация отношений. Первая и вторая нормальные формы

Reading time6 min
Views171K

Предисловие


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

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

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

Ставим объекты на поток, паттерн фабрика объектов

Reading time12 min
Views92K
Доброго времени суток, читатель. Я хочу поделится с тобой знаниями об одном из наиболее часто используемых мною паттернов — фабрики объектов, для данного паттерна так же подходит другое название — виртуальный конструктор.

Что представляет из себя этот паттерн?

Исходя из названия легко догадаться, что это некая, определенная, фабрика (или завод), который создает объекты. Еще раз выражу слово определенная. Как и в реальной жизни фабрика имеет некую специализацию, создавая товары или устройства какого-либо определенного типа. И фабрика, которая выпускает, например, мебель, не может производить, например, еще и компоненты для смартфонов. По аналогии с программированием фабрика объектов может создавать только объекты определенного типа, которые используют единый интерфейс. Самыми главными преимуществами данного паттерна в С++, является упрощение создания объектов различных классов, использующих единый интерфейс. Зачастую библиотекам, которые разрабатывают программисты нужно не только уметь работать с определенными объектами, но и создавать их. Самый очевидный пример загрузка файлов различных форматов. Мы не знаем, какой файл мы будем загружать заранее, но у нас есть список возможных форматов. Пользователь указывает файл, библиотека пытается определить тип файла и вызвать соответствующий загрузчик для него. В большинстве случаев программисты использует конструкции типа switch или if, чтобы определить экземпляр какого класса им необходимо создать. И чем больше возможных вариантов появляется, тем больше разрастается эта конструкция, в последствии превращающиеся в уродливого монстра.

Что нам может предложить фабрика объектов?
Во-первых, простой метод создания объектов, который сократит switch/if до 1ой строчки.
Во-вторых, удобные методы для работы с объектами фабрики. Мы всегда точно можем узнать, зарегистрирован ли у нее определенный класс, количество зарегистрированных классов, а так же удобные методы для добавления и удаления экземпляров классов в фабрику. С помощью фабрики можно ограничивать набор возможных классов, которая она будет создавать, используя некую конфигурацию.

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

Рисуем воду на Direct3D. Часть 1. Архитектура графического конвейера и API

Reading time7 min
Views13K
В этой статье, разделенной на несколько частей, я в общих чертах объясню архитектуру современных версий Direct3D(10-11), а также покажу, как с помощью этого API нарисовать вот такую вот сцену кораллового рифа, основным достоинством которой является простая в реализации, но красивая и относительно убедительно выглядящая вода:
image

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

Что дает обычному человеку Федеральный Закон №152 О персональных данных?

Reading time5 min
Views123K
Об операторах персональных данных написано довольно много статей.
Операторы очень расстроены, что им приходится тратить средства на защиту персональной информации, что им всем тяжело живется и вообще все очень плохо.
С другой стороны есть сами владельцы персональных данных, и я предлагаю рассмотреть тему именно с этой стороны. Что же дает владельцу персональных данных ФЗ № 152 и каким способом он может защитить свои законные интересы?
В данном случае разговор пойдет о коммерческих организациях, вопрос относительно государственных органов – тема отдельной статьи.

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

Одна простая вещь

Reading time1 min
Views3.8K
Если вы хотите защитить важную директорию от удаления вследствие небрежного обращения с командой rm -rf *, то создайте файл с именем -i, это заставит rm запросить подтверждение:

touch ~/important-directory/-i

Тормозит веб-сервер. Настройка на примере www.ochevidets.ru

Reading time8 min
Views28K
Я оказываю услуги по настройке web- и БД-серверов. На днях ко мне обратился Иван Усачёв — владелец портала ochevidets.ru с просьбой избавить сайт от торможения.

Страницы в пиковое время стали долго загружаться, вплоть до 5 минут на страницу.

UPDATE: Статья была написана в 2010 году. Кое-что изменилось: вышли новые версии программ, у nginx изменились некоторые директивы и появились новые. Учитывайте это.

Ниже я опишу, что я предпринял для решения проблемы.

Статистика Akamai по скорости передачи данных для 50 крупнейших стран

Reading time2 min
Views10K
Крупнейший CDN-провайдер Akamai предоставил статистику о реальной скорости передачи данных со своих серверов для пользователей в 50 странах мира. Названа также средняя температура по больнице скорость интернета в мире: 1,8 Мбит/с.

Эта информация несколько отличается статистики SpeedTest.net. Хотя у SpeedTest полный список стран, но цифры Akamai вызывают всё-таки больше доверия, ведь у них замеряется скорость передачи реального трафика с популярных веб-сайтов (Apple, Microsoft, Adobe и прочие, которые пользуются CDN), а не скорость передачи тестовых файлов со специальных тестовых серверов.

Для примера, в статистике SpeedTest Украина очень сильно опережает Россию по скорости передачи данных, а в четвёрке мировых лидеров указаны Литва, Латвия и Молдова.
Читать дальше →

Робот твоей мечты

Reading time1 min
Views19K
Наверняка многие помнят наш последний конкурс "Киберорганика. За или против". Кто-то был за внедрение технических имплантантов в живое тело, но были и те, кто против. Этот конкурс мы посвящаем вам! Отрицать технический прогресс невозможно и всё постепенно движется к развитию робототехники. Но, если Вы не хотите встраивать себе имплантанты, можно ведь завести себе отдельного робота.



Мы предлагаем вам поразмышлять, каким должен быть этот робот? Должен ли он соблюдать законы робототехники, быть добрым или злым? Какую работу он должен уметь выполнять? Может, робот-учитель или робот-психолог? В общем, мы никак не ограничиваем фантазию. Опишите своего «идеального» робота. А может, кто-то сможет его даже нарисовать.

Работы принимаются до 3 декабря на нашем сайте в блоге "Робот моей мечты".

О призе

Еще раз об архитектуре сетевых демонов

Reading time13 min
Views20K
Во многих статьях, в том числе на хабре, упоминаются и даже описываются разные способы построения архитектуры сетевых сервисов (демонов). При этом мало у кого из авторов есть реальный опыт создания и оптимизации демонов, работающих с десятками тысяч одновременных соединений и/или гигабитным трафиком.

Так как большинство авторов не удосуживается хотя бы залезть в документацию, то обычно в таких статьях вся информация базируется на неких слухах и пересказах слухов. Эти слухи бродят по сети и поражают википедию, хабрахабр и другие уважаемые ресурсы. В результате получаются опусы вроде "Вы наверное шутите, мистер Дал, или почему Node.js" (пунктуация автора сохранена): она, в основном, верная по сути, но изобилует неточностями, содержит ряд фактических ошибок и изображает предмет с какого-то непонятного ракурса.

Мне было сложно пройти мимо статьи, изобилующей фразами вроде «эффективные реализации polling'а на сегодняшний день имеются лишь в *nix-системах» (как будто poll() есть где-то, кроме некоторых *nix). Этот пост начинался как комментарий, разъясняющий уважаемому inikulin ошибки в его статье. В процессе написания оказалось, что проще изложить предмет с самого начала, что я собственно и делаю отдельным постом.
В моем очерке нет срыва покровов или каких-то неизвестных трюков, здесь просто описываются преимущества и недостатки разных подходов человеком, который проверял, как всё это работает на практике в разных операционных системах.
Для желающих просветиться — добро пожаловать под кат.
Читать дальше →

Основы репликации в MySQL

Reading time10 min
Views333K
С репликацией серверов MySQL я познакомился относительно недавно, и по мере проведения разных опытов с настройкой, записывал, что у меня получалось. Когда материала набралось достаточно много, появилась идея написать эту статью. Я постарался собрать советы и решения по некоторым самым основным вопросам, с которыми я столкнулся. По ходу дела я буду давать ссылки на документацию и другие источники. Не могу претендовать на полноту описания, но надеюсь, что статья будет полезной.
Читать дальше →

Ручная сборка PostgreSQL для 1C 8.2, или легкие пути не для нас!

Reading time9 min
Views25K
В статье рассказывается про ручную сборку базы данных PostgreSQL для 1C под Gentoo Linux.
Не буду рассказывать о всех тупиковых ветвях нашего лабиринта сборки постгреса для 1С. Опишу только то, чего нигде в интернете нет — то, что мы раскурили методом научного тыка. Несмотря на обилие мануалов по установке постгреса для 1C, ни один из них не решил наших основных граблей, все они оказались поверхностными и ничего не объясняли. Поэтому мы посчитали своим долгом восполнить этот пробел :-)
Читать дальше →

Сложный пароль в запоминании не нуждается

Reading time5 min
Views50K
Все пароли для разных ресурсов должны быть длинными, сложными, личными и не похожими.

image

Но как придумать такое количество разнообразных паролей? Предположим мы нашли на бескрайних просторах Интернета нужную нам программу, генерирующую нужное нам количество знакосимволов. Но как запомнить всё это буйство букв, цифр, знаков препинания, и, не побоюсь произнести эту фразу, вообще не понятных символов в виде смайликов, стрелочек, домиков и китайских иероглифов? А как не перепутать какая «нечитаемость» от какого сайта?

Я запомнить точно не смогу. Я даже четырёхзначные PIN-коды пластиковых карт забываю на следующий день. Можно пароли записать и в самый нужный момент потерять всё, что копилось многие годы. А если у Вас паранойя? Вам же придётся Ваш шифроблокнот положить в банковскую ячейку. Но ведь Вы забудете очередную парольку от очередной бронированной дверки почти сразу.

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

Нам понадобятся всего три вещи.
1. «Волшебная» табличка (о ней дальше) с помощью которой мы и будем создавать пароли,
2. Индивидуальная ключевая фраза,
3. Название ресурса для которого мы будем создавать пароль.

И больше ничего. Заинтригованы?

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

Dedicated-сервер за 1500 рублей

Reading time1 min
Views25K
Благодаря тому, что Supermicro создала серверные платформы (19", 1U) на базе процессоров Intel Atom, мы смогли создать новый низкий тариф на арендуемые (dedicated) сервера.

Сервер на базе двухъядерного процессора Intel Atom D510 (1,66 ГГц), 2 гигабайта оперативной памяти, 500 гигабайт дискового пространства — за 1500 рублей в месяц.

Сервер с IPMI (и всеми полагающимися в связи с этим плюшками).

Причина, почему атомы в два раза дешевле ближайшей «старшей» платформы (Core 2 Duo, 3000р)?
  • Они кушают меньше электричества
  • Они меньше греются (меньше нагрузка на кондиционеры, опять же, меньше электричества).
  • У них ниже стоимость, а значит, меньше затраты на аммортизацию.

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

Вёрстка c «Ушами»

Reading time2 min
Views9.3K
Очень часто фантазия человека, разрабатывающего макет сайта, не ограничивается шириной 1024px, при этом требуется, чтобы сайт выглядел достойно на всех разрешениях и соответствовал полёту мысли дизайнера.

Проблему можно представить графически так:
image

Задача вёрстки заключается в следующем:
  • — независимо от разрешения (размера она браузера), информативная часть сайта находилась посередине;
  • — справа и слева должны остаться графические блоки (уши), причём эти уши должны быть видны только при увеличенном размере экрана браузера, а при уменьшенном не уместившаяся часть должна прятаться (в идеале, чтобы ещё горизонтальной полосы прокрутки не было);;
  • — страница должна быть резиновой от 680px до 1000px.

Работает для FF3, FF4, IE8 и почти для Opera.
Читать дальше →

PulseAudio, часть 1: управление из командной строки

Reading time11 min
Views157K

Одним из новшеств Ubuntu 10.10 стал переход с «голой» ALSA на PulseAudio. Ранее постилось много советов прибить и удалить его для решения проблем, однако теперь PulseAudio стабилен, с ним не шипят колонки ;), и он способен на такое, что не снилось Alsa :)

В статье я с самого начала расскажу что это такое и как оно работает, а так же:
  • Как переключить весь звук на USB-колонку на закрывая приложений (usb hotplug);
  • Как выбрать порт звуковой карты для вывода звука (колонки ноутбука/наушника, LineOut/Наушники);
  • Как выбрать профайл звуковой карты (маппинг физических портов: 5.1 или стерео+lineIn?);
  • Как управлять громкостью и усиливать тихий сигнал (!);
  • Как сделать Skype громче музыки?

И представлю своё решение, призванное упростить управление PulseAudio ;)
Любопытно!

Пишем свой драйвер под Linux

Reading time8 min
Views68K
image

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

То, что мы сегодня создадим, корректнее будет назвать LKM (Linux Kernel Module или загрузочный модуль ядра). Стоит сказать, что драйвер – это одна из разновидностей LKM.

Писать модуль мы будем под ядра линейки 2.6. LKM для 2.6 отличается от 2.4. Я не буду останавливаться на различиях, ибо это не входит в рамки поста.

Мы создадим символьное устройство /dev/test, которое будет обрабатываться нашим модулем. Хочу сразу оговориться, что размещать символьное устройство не обязательно в каталоге /dev, просто это является частью «древнего магического ритуала».

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

Как я делал USB устройство

Reading time2 min
Views8.4K
Где-то когда-то я читал, что создатели первой спецификации USB намеревались сделать этот стандарт простым для реализации в железе за счет усложнения программного обеспечения. Таким образом цель была максимально удешевить производство и сделать USB устройства очень доступными. Сейчас можно сказать, что чипмейкерам это удалось, но так ли уж прост для реализации в железе этот стандарт? Боюсь, что ответ не очевиден.



Предположим мне нужно сделать свое простое USB устройство. Какие у меня есть варианты?
Читать дальше →

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Works in
Registered
Activity

Specialization

Specialist
From 1,000,000 ₽