Рубрика «системное программирование» - 68

The Machine. Новая компьютерная архитектура от HP
Эксперимент с мемристорами в HP

Корпорация HP рассчитывает произвести настоящую революцию на рынке информационных технологий. Проект под названием The Machine — это попытка разработать новую компьютерную архитектуру, с новой операционной системой и новым типом ОЗУ на мемристорах, которые лишены ограничений современной DRAM и флэш-памяти и предполагают сверхвысокие скорости передачи данных.

Над амбициозным проектом работает 75% персонала HP Labs, пишет BusinessWeek.
Читать полностью »

Как известно, телефония предполагает передачу голоса. Для передачи голоса полная полоса 20Гц-20кГц никому не нужна, для четкого различимого и узнаваемого голоса вполне достаточно до 3.5кГц. Если быть точнее, речевая полоса частот используемая в телефонии от 300 до 3400Гц. При компрессии в общий канал, для точного выделения нужны защитные интервалы частот по краям, потому полоса пропуския — 4кГц. При оцифровке это получается 8кГц. Сейчас, в связи с развитием толщины каналов связи, те же скайпы и прочие, хвастающиеся «повышенным» качеством, используют 16кГц, а то и 32кГц, что, впрочем, реально на слух практически не отличимо при обычном разговоре (зато очень хорошо различимо при ухудшении качества канала связи, но когда это волновало маркетолухов).

Итак, практически все звуковые файлы, которые используются в телефонии, записаны с 8кГц оцифровкой. Для ускорения обработки больших потоков, применяемые методы сжатия так же просты и направлены на достойный результат при применении к желаемому — сжатию речи. Это простая оцифровка (PCM), простые дельта-кодеки (ADPCM, G711), либо хитрые кодеки (GSM 06.10). Эти форматы являются «родными» для систем телефонии — asterisk, freeswitch (и наверняка других тоже). В этих форматах данные подготавливаются для проигрывания системой людям, в эти же форматы системы могут записывать записи.

Однако сейчас всё шире web шагает по планете, и людям хочется иметь возможность прослушать записи разговоров, приветствий и др. на вебе, где «родным» форматом стал mp3…
Читать полностью »

Друзья! Только что состоялся наш вебинар по новому релизу Kerio Control.
Спасибо всем, кто смог его посетить — а это ни много ни мало, 80 человек! Спасибо за вопросы и интерес, проявленный к данному релизу.
Все, кто регистрировался на вебинар, получат письмо со ссылкой на его запись.

Также все желающие могут посмотреть запись вебинара здесь.

Кстати, если у вас есть предложения по темам будущих вебинаров — милости просим в комментарии.

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

Суть проблемы

МФУ Xerox 3220 поддерживает сетевое сканирование через приложение (Network Scan), установленное на один из компьютеров в сети, в котором это МФУ регистрируется по IP адресу. Но однажды производственная необходимость потребовала пользоваться на данном компьютере VPN подключениями (Cisco VPN Client и OpenVPN). И в момент подключения любого из соединений связь со сканером из приложения моментально терялась. О моем процессе исследования и решении этой проблемы и будет дальше идти речь.
Читать полностью »

Размышления над архитектурой ОС
Прошло почти 9 месяцев с момента, как я сделал паузу в работе над моим хобби-проектом: игрушечной ОС. Примерно тогда же я опубликовал серию статей на Хабре, описывающих различные аспекты её устройства (1, 2, 3, 4 и 5). Далее я решил немного отвлечься и переключился на проект медицинского коллективного блога. Сейчас он стал забирать у меня меньше времени, и я вновь почувствовал интерес к изысканиям в области системного программирования. Начав новую итерацию кодирования, я остановился, решив вновь задуматься об архитектуре.
Читать полностью »

Книга «Linux. Системное программирование. 2 е изд.»

На днях у нас вышло второе издание замечательной книги «Linux. Системное программирование. 2-е изд.». Как обычно для Хабра-читателей действует скидка 20%. Акция продлится до 20 апреля. При покупке книги введите код: 1f8e5be3.
Книга доступна в печатном и электронном виде.

Аннотация:

Пишите программы, опирающиеся непосредственно на службы ядра Linux и на основные системные библиотеки. Автор этой универсальной книги, Роберт Лав, участвовал в разработке ядра Linux. Книга представляет собой руководство по системному программированию для Linux, справочный мануал по системным вызовам Linux, а также инсайдерский рассказ о том, как писать более быстрый и умный код.
Читать полностью »

image

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

Что нового в Rust 0.10:
Читать полностью »

Мы решили поделиться своей новой разработкой – системой, способной читать мысли системных администраторов и предугадывать их действия!

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

Как мы научились читать мысли системных администраторов

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

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

Задача

Необходимо построить среду разработки под OpenStack для тестирования, багфиксинга и добавления фич в сервисы системы (nova, keystone, swift, heat, etc.). Среда должна собираться почти автоматически, чтобы было возможно в любой момент стереть созданную виртуальную машину, создать новую, запустить скрипты и получить готовую среду через несколько минут. Причем среда должна быть такая же, как на прежней VM. Так как интересующий меня сервис на момент написания статьи является heat, то конфигурация будет ориентирована под него, однако путем замены пары строчек можно адаптировать всю конфигурацию под любой другой сервис.
Читать полностью »

Понадобилось мне перехватывать вызовы GDS32.DLL. Решил написать прокси-dll.

Пишем исследовательский стенд

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

1.	program GetFuncsDll;
2.	  {$APPTYPE CONSOLE}
3.	  uses   Windows;
4.	  var
5.	    ImageBase: DWORD;                  //адрес образа dll
6.	    pNtHeaders: PImageNtHeaders;       // PE заголовок dll
7.	    IED: PImageExportDirectory;        // адрес таблицы экспорта
8.	    ExportAddr: TImageDataDirectory;   // таблица экспорта
9.	    I: DWORD;                          // переменная для цикла
10.	    NamesCursor: PDWORD;               // указатель на адрес имени функции
11.	    OrdinalCursor: PWORD;              // указатель на адрес номера функции
12.	    LIB_NAME:AnsiString;               // имя dll
13.	BEGIN
14.	  LIB_NAME:='MiniLib.dll';
15.	  loadlibraryA(PAnsiChar(LIB_NAME));
16.	  ImageBase := GetModuleHandleA(PAnsiChar(LIB_NAME));
17.	  pNtHeaders := Pointer(ImageBase + DWORD(PImageDosHeader(ImageBase)^._lfanew));
18.	  ExportAddr := pNtHeaders.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT];
19.	  IED := PImageExportDirectory(ImageBase+ExportAddr.VirtualAddress);
20.	  NamesCursor := Pointer(ImageBase + DWORD(IED^.AddressOfNames));
21.	  OrdinalCursor := Pointer(ImageBase + DWORD(IED^.AddressOfNameOrdinals));
22.	  For I:=0 to Integer(IED^.NumberOfNames-1) do begin
23.	    WriteLn(output,PAnsiChar(ImageBase + PDWORD(NamesCursor)^),'=',OrdinalCursor^ + IED^.Base);
24.	    Inc(NamesCursor);
25.	    Inc(OrdinalCursor);
26.	  end;
27.	Readln;
28.	end.
Листинг 1

Здесь трудностей вроде нет. Добираемся последовательно до таблицы экспорта (строка 19) указателей на массив имен(NamesCursor) и массива номеров(OrdinalCursor) и читаем функцию за функцией, имена и номера. Количество функций находится в поле NumberOfNames. Этот код был добыт на просторах интернета, потом доработан и упрощён.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js