Search
Write a publication
Pull to refresh
18
0
Send message

Анатомия программы в памяти

Reading time6 min
Views88K
Управление памятью – одна из главных задач ОС. Она критична как для программирования, так и для системного администрирования. Я постараюсь объяснить, как ОС работает с памятью. Концепции будут общего характера, а примеры я возьму из Linux и Windows на 32-bit x86. Сначала я опишу, как программы располагаются в памяти.

Каждый процесс в многозадачной ОС работает в своей «песочнице» в памяти. Это виртуальное адресное пространство, которое в 32-битном режиме представляет собою 4Гб блок адресов. Эти виртуальные адреса ставятся в соответствие (mapping) физической памяти таблицами страниц, которые поддерживает ядро ОС. У каждого процесса есть свой набор таблиц. Но если мы начинаем использовать виртуальную адресацию, приходится использовать её для всех программ, работающих на компьютере – включая и само ядро. Поэтому часть пространства виртуальных адресов необходимо резервировать под ядро.

image

Это не значит, что ядро использует так много физической памяти – просто у него в распоряжении находится часть адресного пространства, которое можно поставить в соответствие необходимому количеству физической памяти. Пространство памяти для ядра отмечено в таблицах страниц как эксклюзивно используемое привилегированным кодом, поэтому если какая-то программа пытается получить в него доступ, случается page fault. В Linux пространство памяти для ядра присутствует постоянно, и ставит в соответствие одну и ту же часть физической памяти у всех процессов. Код ядра и данные всегда имеют адреса, и готовы обрабатывать прерывания и системные вызовы в любой момент. Для пользовательских программ, напротив, соответствие виртуальных адресов реальной памяти меняется, когда происходит переключение процессов:
Читать дальше →

Модуль вкладок на es6/es2015 без jQuery и прочих зависимостей

Reading time3 min
Views13K

Предисловие


Какое-то время назад я стал постепенно отказываться от jQuery в пользу нативного javascript. Это связано с тем, что поддержка старых браузеров перестала быть приоритетной и на первое место вышла скорость загрузки страницы. Я не смог найти минималистичный модуль вкладок с простой html разметкой – поэтому решил написать свой.

Демо, Исходный код на Github

HTML разметка


<div class="tabs">
	<div class="tabs__toggle tabs__toggle_active">Вкладка 1</div>
	<div class="tabs__toggle">Вкладка 2</div>
	<div class="tabs__tab">
		Содержимое первой вкладки
	</div>
	<div class="tabs__tab">
		Содержимое второй вкладки
	</div>
</div>

Если на одной странице нужно разместить несколько групп вкладок нужно просто разделить их в разные блоки '.tabs'. Расположение внутренних блоков влияет только на порядок их вывода. Вкладке по умолчанию следует добавить класс 'tabs__toggle_active'.
Читать дальше →

Простейший физический движок

Reading time4 min
Views65K
Вас интересуют игры? Хотите создать игру но не знаете с чего начать? Тогда вам сюда. В этой статье я рассмотрю простейший физический движок, с построения которого можно начать свой путь в GameDev'e. И да, движок будем писать с нуля.
Читать дальше →

Мобильная печать

Reading time7 min
Views39K


В наше время никого уже не удивишь печатью картиночек на листе бумаги. Существует огромный выбор принтеров (в том числе и карманных). Многие из моих знакомых покупают или собирают 3D-принтеры. Я же хочу рассказать, как я снова изобретал велосипед. Итак, снова шаг назад — это история про 2D печать. Рассказ про то, как я делал мобильный принтер для телефона на основе термального принтера (принтер, который печатает на термобумаге — не нужны чернила, только специальная бумага и электричество), модуля bluetooth и ещё нескольких мелочей.
Хочу сразу предупредить, что в электронике и электротехнике я ничего не понимаю, что я принципиально не использовал готовых решений и библиотек. Поэтому это рассказ про рукожопство и велосипеды, про проблемы с которыми я столкнулся. Продолжайте чтение на свой страх и риск.
Читать дальше →

Увеличение времени работы от аккумулятора в Android M

Reading time8 min
Views37K


По мнению многих разработчиков, в большинстве случаев к слишком быстрому разряду аккумуляторов смартфонов приводит плохая оптимизация приложений. В мае этого года в Google прошла очередная ежегодная конференция Google I/O, на которой было анонсировано много всего интересного для разработчиков. В частности, когда речь зашла об Android M, то одной из центральных тем были именно производительность мобильных устройств и продолжительность работы от аккумулятора. Давайте взглянем на новые функции и инструменты, которые помогут пользователям и разработчикам выжать ещё больше из аккумуляторов мобильных устройств.
Читать дальше →

Как обычному сайту на Wordpress набрать 99/100 в PageSpeed Insights

Reading time5 min
Views136K
Началось все с того что Adsense в очередной раз понизил оценку эффективности страниц:
image
А все мы знаем, что скорость сайта – один из факторов ранжирования в выдаче Гугла.

И если раньше удавалось исправить ситуацию простыми действиями, включить кэширование или сжать JS, то теперь, похоже, пришло время взяться за сайт основательно.

Изначально имеется сайтик со статьями, коих в интернете миллионы: CMS Wordpress 4.2, два десятка плагинов, тема, сверстанная фрилансером и shared хостинг.
Читать дальше →

Продвинутые CSS фильтры

Reading time3 min
Views94K
Перевод статьи advanced css filters, авторства Vincent De Oliveira, найденная мною в последнем дайджесте.

Я не смог коротко перевести на русский backdrop и background, сохранив смысловую разницу между ними, поэтому поясню сейчас:
backdrop — то, что находится за элементом, и может быть видно через него, обрезано по его рамке;
background — тоже фон, но является частью элемента, к нему и относится свойство background.


Вернемся в 2011 год, браузеры начали вводить CSS фильтры из спецификаций. В это время поддерживались в основном SVG фильтры, а Firefox был единственным браузером, который мог применить их к HTML контенту (в основном, ничего не изменилось).

CSS фильтры такие как blur(), contrast() или grayscale() — отличное дополнение к CSS, несмотря на то, что SVG может позволить сделать восхитительные вещи. Больше узнать о них вы можете на множестве ресурсов.

Сегодня я хочу пойти чуть дальше, показав новые возможности CSS.
Читать дальше →

Как повысить уверенность в том, что кнопка была нажата живым пользователем на сайте и избавиться от капчи?

Reading time6 min
Views35K
Капча всем известна. Также всем известно, что она представляет собой большую проблему и для программистов и для пользователей. Она ни тем ни другим не нравится! Ее приходится использовать по необходимости!

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

Последний предлагаемый метод спорный, но судите сами!
Читать дальше →

Использование Media Capture API в браузере

Reading time5 min
Views21K
Предлагаю читателям «Хабрахабра» перевод статьи «Using the Media Capture API in the Browser» авторства Dave Voyles.



Сегодня я хочу поэкспериментировать с Media Capture и Streams API, разработанные совместно в Web Real-Time Communications Working Group из W3C и Device APIs Working Group. Некоторые разработчики могут знать их как getUserMedia — главный интерфейс, который позврляет веб-страницам получать доступ к таким девайсам, как веб-камеры и микрофоны.
Читать дальше →

Корреляция, ковариация и девиация (часть 3)

Reading time5 min
Views45K


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

В данной статье покажем, что матрица Грина и матрица корреляции — суть одно и то же.
Читать дальше →

JavaScript F.A.Q: Часть 1

Reading time15 min
Views74K
image

Несколько дней назад мы с TheShock создали топик в котором собирали ваши вопросы, касательно JavaScript (архитектура, фрэймворки, проблемы). Настало время ответить на них. Мы получили очень много вопросов, как в комментариях так и по email. Эта первая часть ответов — те вопросы, которые достались мне.
Читать дальше →

Алярм, ахтунг, внимание, свистать всех в серверную

Reading time4 min
Views39K


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

Киберпреступники возродили форум Darkode

Reading time1 min
Views24K
Недавно мы писали о закрытии правоохранительными органами известного подпольного форума киберпреступников под названием Darkode. Кроме закрытия самого форума, множество его пользователей, которые являются известными киберпреступниками, были арестованы. Многие, но не все, поскольку один из администраторов Darkode под ником «Sp3cial1st» избежал ареста и перезапустил форум по новому адресу.



По информации известного malware/cybercrime исследователя MalwareTech для новой реинкарнации форума существенно усилены меры безопасности: доступ к форуму для пользователей возможен через Tor, а аутентификация реализуется с использованием специального Blockchain API.
Читать дальше →

В Android обнаружены уязвимости, позволяющие получить доступ к смартфону через MMS

Reading time2 min
Views48K
Компания ZIMPERIUM, специализирующаяся на компьютерной безопасности, обнаружила критические уязвимости в ядре Android, которые позволяют выполнять код через отправку MMS сообщений или Google Hangout. По примерной оценке, данной опасности подвержено 95% пользователей устройств под управлением системы Android (около 950 миллионов человек). И что самое опасное, данную уязвимость достаточно просто использовать: необходимо лишь знать номер мобильного телефона жертвы.

image

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

Что выбрать для 3D сайта – Three.js или Blend4Web?

Reading time11 min
Views33K
Я знаю Blender много лет, использую Unity для своих игр, но полный новичок в WebGL. Однако, будущее именно за этой технологией, и неплохо было бы разобраться с ее использованием. К сожалению, экспортер Unity для WebGL пока не рабочий и нужен иной инструмент.

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

Извечный вопрос: что выбрать новичку? Я поработал с платформами Blend4Web и Three.js. Что из этого вышло — читайте дальше.
image
Читать дальше →

Автоматический поиск роутеров со стандартными паролями

Reading time4 min
Views62K
Недавно мне пришла в голову банальная мысль, что большинство людей кладут на настройку своих роутеров, и на них можно зайти по дефолтным паролям. А много ли таких роутеров вдобавок открыты для входа из интернета, что делает их проходным двором? И как это по-быстрому проверить?

Итак, задача: просканировать какую-нибудь подсеть и найти уязвимые роутеры.

Условия выполнения: не более нескольких часов (на дворе всё-таки лето), используя только стандартные средства системы Linux. Да, я в курсе про проекты типа Kali и вагоны «хакерского» софта в них, но найти нужную программу, которая сделала бы это прямо «из коробки» мне сходу не удалось, а время-то идёт… Да и интереснее самому.

Первая мысль, которая приходит в голову: сканировать nmap'ом по открытому 80 порту. Но что делать с огромным зоопарком веб-морд? Ведь цель — не написать универсальный комбайн-уничтожитель роутеров, а небольшой proof-of-concept. А нет ли какой-нибудь унифицированной системы авторизации на роутерах? Конечно же есть — Telnet! Начинаем!
Читать дальше →

Чистим домашний интернет от очень назойливой рекламы (Ad's blocker для OpenWRT)

Reading time2 min
Views125K


Дело было вечером, делать было нечего... © С. В. Михалков
Навеяно публикацией «Как я bind`ом вирусы искал…», а конкретно этой веткой комментариев. Надеюсь, не поздно размещаю.

Сидел я и думал, телевизор Samsung, WinPhone, (а впоследствии может кофеварка и пылесос) показывают суперназойливую рекламу, надо с этим чтото делать, и раз в WinPhone и телевизор(кофеварку, пылесос) плагина AdBlock нету, то он должен быть там где ходит их трафик, на роутере.
Читать дальше →

Взлом сайта и его последствия

Reading time8 min
Views159K


Времена, когда сайты взламывались ради забавы почти прошли. В современных реалиях сайты атакуют для извлечения прибыли. Атаковать могут абсолютно любой сайт, даже с минимальными показателями и трафиком.
Читать дальше →

Троян, использующий вычислительные мощности ПК для генерации Bitcoin

Reading time2 min
Views176K
Случилось мне вчера привезти из командировки один троянчик, Trojan.Win32.Powp.rdf (по классификации ЛК). Там я его победил, но флэшки он мне успел позаражать. Чтоб добро зря не проподало, решил поковырять его на досуге.
С наименованием зловредов у ЛК, как всегда, оказалось не все хорошо, он относится скорее к классу Trojan-Downloader, т.к. основная задача — скачка файлов с fileave.com. Поставил на виртуалку поиграться, среди кучи заурядного вредоносного хлама, закачиваемого им на машину, я обратил внимание на один sfx-архив и как оказалось не зря…
Читать дальше →

Настройка безопасности сайтов на VPS/VDS

Reading time6 min
Views19K
Вы приобрели выделенный или виртуальный сервер, либо слепили свой в домашних условиях. И теперь пришло время задуматься о безопасности сайтов, так как брешь в одном из них может подвергнуть опасности и все остальные.

На хостинге эти проблемы решает сам хостер, а вот на собственном сервере это уже задача администратора. И даже если у Вас хостинг с предустановкой, то вероятность того, что на нем ограничены права для каждого пользователя и сайта маловероятна. Скорее всего Ваш провайдер ограничился установкой стандартных приложений vsftpd, Apache, nginx, php, mysql и тд и тп.

Будем считать, что необходимый комплект на сайте установлен и пришло время позаботиться о безопасности. Если же нет, то находим подходящую инструкцию по «настройке nginx в качестве front-end к apache» и возвращаемся к вопросу безопасности.

Безопасность будем строить из следующих принципов:

Первое это создание пользователей с оболочкой /bin/false на примере vsftpd и proftpd. Это ограничит выполнение скриптов в пределах собственной директории.

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

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

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

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity