Вітаю всіх. У сьогоднішній статті мова піде про те, як можна реалізувати власний високорівневий API в керованому коді для роботи з пристроями друку, від встановлення нового монітора друку в системі і до отримання обробленого драйвером пристрою друку документа з порту принтера.

Як і в минулий раз, стаття буде корисна для ознайомлення розробникам молодшого та середнього ланки. В процесі вивчення матеріалу, Ви дізнаєтеся як можна звертатися до низькорівневим DLL WinAPI в C# з допомогою P/Invoke, як встановити, налаштувати і видалити з системи монітори друку, драйвер принтера, сам пристрій друку, відкрити і зв'язати порт для перенаправлення вхідних даних з пристрою друку на монітор, познайомитеся з ключовими моментами застосування маршалирования. Так само ми на практичному прикладі розберемося, як за допомогою нашого API можна зручно маніпулювати пристроями друку в системі, дізнаємося, як можна перехопити оброблені дані після друку принтера і, наприклад, відправити їх на сервер.

Читати далі →

Як я умовив BILL і ISPmanager Lite 5 міняти оперативну пам'ять на тарифі віртуального хостингу

До недавніх пір я створював сайти на WordPress плагіни, орендуючи віртуальні хостинги у провайдерів. Для себе ще давно виділив панель ISP за зручність і практичність. Так сталося, що весь час працював на Windows, отже, Linux для мене — темний ліс з дикими тваринами. Сайти з часом «росли» і ставали більш вимогливі, як мінімум до дискового простору і іноді до оперативної пам'яті.

Пару місяців тому за деякими міркувань вирішив орендувати сервер, Linux і самостійно встановити туди ISP і BILL для створення і управління послугами.

Повороживши кілька годин з документацією і SSH консоллю, я запустив свій перший сервер на CentOS. Протягом тижня з'ясував: чому gmail.ru і mail.ru не хочуть приймати листи з мого хостингу, як встановлювати обмеження на дисковий простір, контролювати налаштування php для кожного віртуального хостингу і що BILL, маючи в своєму арсеналі можливість покупки додаткових параметрів, включаючи пункт «Оперативна пам'ять», не може насправді встановлювати її.

image

Читати далі →

FS1 — велика розумна флешка від Oracle

У липні 2001 року інвестиційна компанія Taco Ventures, що належить Ларрі Еллісону, інвестувала у створення Pillar Data Systems — компанії-виробника мережевих систем зберігання даних для середнього і великого бізнесу. Компанія зарекомендувала себе на ринку продуктового лінією Axiom, вона безпосередньо конкурувала з EMC Corporation, Hitachi Data Systems і іншими виробниками мережних сховищ і устаткування для мереж зберігання даних.


Читати далі →

Як Linux працює з пам'яттю. Семінар в Яндексі

Привіт. Мене звуть В'ячеслав Бірюков. В Яндексі я керую групою експлуатації пошуку. Нещодавно для студентів Курсів інформаційних технологій Яндекса я прочитав лекцію про роботу з пам'яттю в Linux. Чому саме пам'ять? Головний відповідь: робота з пам'яттю мені подобається. Крім того, інформації про неї досить мало, а та, що є, як правило, нерелевантна оскільки ця частина ядра Linux змінюється досить швидко і не встигає потрапити до книги. Розповідати я буду про архітектуру x86_64 та про Linux-ядро версії 2.6.32. Місцями буде версія ядра 3.х.



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

Терміни
Резидентна пам'ять — це той обсяг пам'яті, який зараз знаходиться в оперативній пам'яті сервера, комп'ютера, ноутбука.
Анонімна пам'ять — це пам'ять без урахування файлового кеша і пам'яті, яка має файловий бекенд на диску.
Page fault — пастка звернення пам'яті. Штатний механізм при роботі з віртуальною пам'яттю.

Читати далі →

Heartbleed на Rust

У коментарях до однієї з посилань на Hacker News хтось стверджував, що використання Rust запобігло б Heartlbeed, що код би навіть не скомпилировался. Це прозвучало як виклик!

Тред починається ось тут. Я не збирався ні до кого чіплятися, але твердження про запобігання Heartbleed виявилося вдало сформульовано. На відміну від розпливчастих заяв про безпеку роботи з пам'яттю в цілому, конкретно дане твердження можна протестувати.

Читати далі →

Боротьба з витоками пам'яті Android. Частина 1

Цією статтею ми відкриваємо цикл статей на Хабре про нашу розробці під Android.
Згідно з доповіддю компанії Crittercism від 2012 року, OutOfMemoryError — друга за поширеністю причина «крашей» мобільних додатків.
Чесно кажучи, і в Badoo ця помилка була в топі всіх крашей (що не дивно при тому обсязі фотографій, які дивляться наші користувачі). Боротьба з OutOfMemory — заняття копітке. Ми взяли в руки Allocation Tracker і почали гратися з додатком. Спостерігаючи за даними зарезервованої пам'яті, ми виявили кілька сценаріїв, при яких виділення пам'яті зростало з підозрілою стрімкістю, забуваючи при цьому зменшуватися. Озброївшись кількома дампами пам'яті після цих сценаріїв, ми проаналізували їх в MAT (http://www.eclipse.org/mat/).
Результат був цікавий і дозволив нам протягом декількох тижнів знизити кількість крашей в рази. Щось було специфічно для нашого коду, але також виявлено типові помилки, властиві більшості Android додатків.
Сьогодні поговоримо про конкретному випадку витоку пам'яті. Про нього багато знають, але часто закривають на це очі (а даремно).

Читати далі →

Як ядро ​​управляє пам'яттю

    Раніше ми побачили як організована віртуальна пам'ять процесу. Тепер розглянемо механізми, завдяки яким ядро ​​управляє пам'яттю. Звернемося до нашої програми:
 image
Читати далі →

Як ядро ​​управляє пам'яттю

    Раніше ми побачили як організована віртуальна пам'ять процесу. Тепер розглянемо механізми, завдяки яким ядро ​​управляє пам'яттю. Звернемося до нашої програми:
 image
Читати далі →

Як ядро ​​управляє пам'яттю

    Раніше ми побачили як організована віртуальна пам'ять процесу. Тепер розглянемо механізми, завдяки яким ядро ​​управляє пам'яттю. Звернемося до нашої програми:
 image
Читати далі →

Як ядро ​​управляє пам'яттю

    Раніше ми побачили як організована віртуальна пам'ять процесу. Тепер розглянемо механізми, завдяки яким ядро ​​управляє пам'яттю. Звернемося до нашої програми:
 image
Читати далі →