Pull to refresh
-2
0
Send message

Современная операционная система: что надо знать разработчику

Reading time22 min
Views67K

Александр Крижановский (NatSys Lab.)


Александр Крижановский

Нас сегодня будет интересовать операционная система – ее внутренности, что там происходит… Хочется поделиться идеями, над которыми мы сейчас работаем, и отсюда небольшое вступление – я расскажу о том, из чего состоит современный Linux, как его можно потюнить?

По моему мнению, современная ОС – это плохая штука.




Дело в том, что на картинке изображены графики сайта Netmap (это штуковина, которая позволяет вам очень быстро захватывать и отправлять пакеты сетевого адаптера), т.е. эта картинка показывает, что на одном ядре с разной тактовой частотой до 3 ГГц Netmap позволяет 10 Гбит – 14 млн. пакетов в сек. отрабатывать уже на 500 МГц. Синенькая линия – это pktgen – самое быстрое, что, вообще, есть в ядре Linux’а. Это такая штуковина – генератор трафика, который берет один пакет и отправляет его в адаптер много раз, т.е. никаких копирований, никакого создания новых пакетов, т.е., вообще, ничего – только отправка одного и того же пакета в адаптер. И вот оно настолько сильно проседает по сравнению с Netmap (то, что делается в user-space показано розовой линией), и оно вообще где-то там внизу находится. Соответственно, люди, которые работают с очень быстрыми сетевыми приложениями, переезжают на Netmap, Pdpdk, PF_RING – таких технологий море сейчас.
Читать дальше →
Total votes 102: ↑94 and ↓8+86
Comments51

Проблема диссонанса между нарративом и геймплеем

Reading time5 min
Views11K
Многие геймеры наверняка оказывались в ситуации, когда ради геймплея нужно было пожертвовать ролевым отыгрышем. Например, совершить предательство добрым героем или пропустить посещение живописной локации, чтобы изучить новое умение или открыть нового игрового персонажа. Виной тому является диссонанс между нарративом и геймплеем.


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

Microsoft раскрыла исторические аспекты разработки Windows

Reading time5 min
Views45K
Несколько дней назад Microsoft опубликовала очень любопытную информацию, мимо которой мы не могли пройти мимо. Опубликованная статья называлась The engineer’s engineer: Computer industry luminaries salute Dave Cutler’s five-decade-long quest for quality и посвящена заслуженному инженеру Microsoft и первому архитектору Windows NT Дэйву Катлеру, который заложил основу всех версий Windows начиная с 1993 года.



Известно, что Windows NT разрабатывалась как серверная операционная система и она прошла достаточно долгий путь эволюции перед тем как предстать во всей своей красе перед домашними пользователями в виде Windows 2000 и Windows XP. Не многие знают, что, на самом деле, все семейство ОС Windows NT, начиная от самых первых ее версий и заканчивая Windows 10 основано на одной из первых полностью 32-битных ОС фирмы Digital Equipment Corporation под названием VAX VMS, которая основана на UNIX.

Читать дальше →
Total votes 33: ↑25 and ↓8+17
Comments37

JetCat: микроQt для тех, кому попроще

Reading time3 min
Views14K
Я люблю Qt. Честно-честно. Я начал изучать его на грузовом пароме из Травемюнде в Хельсинки в компании пьяных дальнобойщиков, их полупьяных подруг, автоперегонщиков и просто забулдыг, которым суточное путешествие по морю позволяет эффективно бороться с суровостью финских антиалкогольных правил. Каюты у меня не было, Интернета тоже, так что к концу поездки я уже довольно бодро тасовал QML-теги и даже необходимость использовать QString не вызывала былой икоты. Нет-нет, я в самом деле люблю Qt.

Но еще сильнее я люблю Turbo Vision. Для меня он — привет из молодости, когда мир был проще, когда люди не таскали туда-сюда могучие фреймворки, задачи на четыре строчки решались четырьмя строчками и никому не приходило в голову рисовать тривиальные картинки с помощью HTML, CSS и джаваскрипта. Когда кнопку можно было поставить в точку X и быть уверенным, что она останется там в любую погоду. Когда задачи не решались методами “скачать” и “установить”, а также “подобрать” и “сконфигурировать”. Когда запрещалось использовать код, у которого “неизвестно, что там внутри”, а любую проблему можно было отладить за конечное число шагов. Когда документация представляла собой книжку, а не распечатку с форума.

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

Рисовать UI для нас — задача непрофильная и всегда решалась по остаточному принципу, не барское это дело — кнопочки по экрану расставлять. Но, раз приперло, надо делать.
Вы понимаете, о чем я? Да, мы написали свой Qt. Вернее, конечно, не его, поскольку нет смысла переписывать уже написанное.

Читать дальше →
Total votes 49: ↑46 and ↓3+43
Comments83

Как ухудшить производительность вашего приложения — типичные ошибки разработчиков

Reading time12 min
Views46K
Производительность считается одним из наиболее важных нефункциональных требований приложения. Если вы читаете эту статью, то, вероятно, используете приложение, например веб-браузер или программу для чтения документов, и понимаете, насколько велико значение производительности. В этой статье я расскажу о производительности приложений и о трех ошибках разработчиков, из-за которых не удается добиться высокой производительности приложений.


Читать дальше →
Total votes 55: ↑32 and ↓23+9
Comments23

Подходы к проектированию RESTful API

Reading time17 min
Views138K

Автор: Вячеслав Михайлов, Solutions Architect.

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

Часть 1. Теория


Итак, как мы все знаем, API — application programming interface (интерфейс программирования приложений), набор правил и механизмов, с помощью которых одно приложение или компонент взаимодействует с другими

Почему хороший API — это важно?

  • Простота использования и поддержки. Хороший API просто использовать и поддерживать.
  • Хорошая конверсия в среде разработчиков. Если всем нравится ваш API, к вам приходят новые клиенты и пользователи.
  • Выше популярность вашего сервиса. Чем больше пользователей API, тем выше популярность вашего сервиса.
  • Лучше изоляция компонентов. Чем лучше структура API, тем лучше изоляция компонентов.
  • Хорошее впечатление о продукте. API — это как бы UI разработчиков; это то, на что разработчики обращают внимание в первую очередь при встрече с продуктом. Если API кривой, вы как технический эксперт не будете рекомендовать компаниям использовать такой продукт, приобретая что-то стороннее.


Теперь посмотрим, какие бывают виды API.

Виды API по способу реализации:
  • Web service APIs
    • XML-RPC and JSON-RPC
    • SOAP
    • REST

  • WebSockets APIs
  • Library-based APIs
    • Java Script

  • Class-based APIs
    • C# API
    • Java



Виды API по категориям применения:

  • OS function and routines
    • Access to file system
    • Access to user interface

  • Object remoting APIs
    • CORBA
    • .Net remoting

  • Hardware APIs
    • Video acceleration (OpenCL…)
    • Hard disk drives
    • PCI bus



Читать дальше →
Total votes 26: ↑24 and ↓2+22
Comments37

Apple уменьшает заказы комплектующих для iPhone

Reading time2 min
Views5.9K


«Яблочная» корпорация снижает объемы заказов на комплектующие для iPhone, готовясь к сценарию, при котором объемы продаж флагманского смартфона компании снизятся. Это вынуждает китайских поставщиков комплектующих сокращать штат работников.
Читать дальше →
Total votes 10: ↑8 and ↓2+6
Comments1

«Билайн» сократит штат ИТ-подразделений в 10 раз и выведет back-end на аутсорсинг

Reading time2 min
Views13K
Vimpelcom продолжает сокращать операционные расходы. На этот раз очередь дошла до ИТ-подразделений компании. По мнению ее акционеров, штат соответствующих специалистов завышен более чем в десять раз, а ныне действующие ИТ-системы устарели.

В связи с этим, глава телекоммуникационного подразделения LetterOne Алексей Резникович заявил, что Vimpelcom (его российская «дочка» «Вымпелком» работает под торговой маркой «Билайн») нуждается в пересмотре ИТ-стратегии. LetterOne – крупнейший акционер Vimpelcom, в эту компанию компанию были переведены телекоммуникационные активы «Альфа-групп».
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments10

Чему я научился, перестав работать с девяти до пяти

Reading time4 min
Views45K


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

Они хотели простой и предсказуемой жизни: приходить в офис к 9 утра, изображать бурную деятельность, не высовываться, и уходить домой в 5 вечера.

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

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

В результате, появился новый класс работников: те, чьё положение и рабочее время ни от чего не зависят. Цифровые странники проводят время, путешествуя и работая – фрилансят на Бали, управляют бизнесом в Барселоне или работают на фирму из Сан-Франциско, находясь в Сингапуре. По всему миру нас таких тысячи, и я не представляю себе другой жизни.

Всё яснее становится тот факт, что время, проведённое в офисе и продуктивность не обязательно связаны друг с другом. Чего один работник может достичь за четыре часа, другой сможет только за восемь. Некоторые более эффективно работают утром, другие – вечером. Некоторым нравится работать в офисе, а другим – нет.
Читать дальше →
Total votes 37: ↑33 and ↓4+29
Comments90

Виртуальное время. Часть 1: источники времени в компьютере

Reading time13 min
Views40K
Человек, имеющий одни часы, твердо знает, который час. Человек, имеющий несколько часов, ни в чём не уверен.
Закон Сегала
Зачем нужно знать время внутри программы? На самом деле, довольно большое число алгоритмов, используемых на практике, вообще никак не зависят от того, который сейчас час. И это хорошо: история знает много случаев, когда программы, работавшие на старой аппаратуре, «ломаются» при выполнении на новой, более быстрой, как раз из-за завязанности на характерные временные длительности процессов.
Я смог придумать три вида задач, которые требуют чтения текущего времени в повседневной жизни.
  1. Определять относительный порядок событий. Для этого используются часы, измеряющие время от «начала времён», «эпохи» или какого-то иного фиксированного события в прошлом.
  2. Измерять длительность процессов. Для этого используются секундомеры, таймеры.
  3. Не пропустить важное событие в будущем. Для этого нужны будильники.

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


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

Пример простейшего cgi сервера

Reading time7 min
Views40K
Думаю многие знают, как работает CGI взаимодействие между клиентом и сервером: клиент получает от сервера и отдает серверу данные через стандартные stdin и stdout. Многие наверное даже сами писали CGI клиентов, ведь по сути — любой скрипт для веб-сервера это и есть CGI-клиент.
А многие ли задавались вопросом, как именно происходит эта «магия»? Каким образом стандартные функции для ввода/вывода вместо экрана взаимодействуют с сервером?

Результаты поиска ответа в сети меня не удовлетворили и я решил сам написать простейший CGI сервер, который сможет:
  • Запускать дочерний процес — CGI скрипт
  • Передавать скрипту переменные окружения и переменные командной строки
  • Принимать от скрипта ответ
  • Завершаться, когда завершится процесс клиента

Кроме этого, мне хотелось, чтобы клиент и сервер компилировались как в Windows, так и в Linux.
Подробности
Total votes 23: ↑16 and ↓7+9
Comments2

Качество сетей передачи данных. Программные и аппаратные измерения

Reading time10 min
Views77K
imageЯ бы хотел опубликовать цикл статей об измерениях характеристик систем связи и сетей передачи данных. Эта статья вводная и в ней будут затронуты лишь самые основы. В дальнейшем планирую более глубокое рассмотрение в стиле «как это сделано».

Покупая продукт или услугу мы часто оперируем таким понятием как качество. Что же такое качество? Если мы обратимся к словарю Ожегова, то там увидим следующее: «совокупность существенных признаков, свойств, особенностей, отличающих предмет или явление от других и придающих ему определенность». Перенося определение на область сетей связи, приходим к выводу, что нам требуется определить «существенные признаки, свойства и особенности», позволяющие однозначно определить отличие одной линии или сети связи от другой. Перечисление всех признаков и свойств обобщаются понятием «метрика». Когда кто-то говорит о метриках сетей связи, он имеет в виду те характеристики и свойства, которые позволят точно судить о системе связи в целом. Потребность в оценке качества лежит большей частью в экономической области, хотя и техническая её часть не менее интересна. Я же попробую балансировать между ними, чтобы раскрыть все самые интересные аспекты этой области знаний.

Всех заинтересовавшихся прошу под кат.
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments17

Обновление древовидной модели в Qt

Reading time4 min
Views15K
Всем доброго времени суток! В этой статье я хочу рассказать про трудности, с которыми столкнулся при отображении и обновлении древовидной структуры с помощью QTreeView и QAbstractItemModel. Так же предложу велосипед, который я создал, чтобы обойти эти трудности.
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments13

Information

Rating
Does not participate
Registered
Activity