Публикации

сегодня в 00:26

Ограничение памяти, доступной программе перевод

Решил я как-то заняться задачкой сортировки миллиона целых чисел при имеющейся памяти в 1 Мб. Но перед этим мне пришлось подумать над тем, как можно ограничить объём доступной памяти для программы. И вот, что я придумал.

Виртуальная память процесса


Перед тем, как окунуться в разные методы ограничения памяти, необходимо знать, как устроена виртуальная память процесса. Лучшая статья на эту тему – "Анатомия программы в памяти"

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

Первое: уменьшение объёма адресного пространства. Это довольно просто, но не совсем корректно. Мы не можем уменьшить всё пространство до 1 Мб – не хватит места для ядра и библиотек.

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

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

Для тестирования будем использовать небольшую программу по имени big_alloc, размещающую, и затем освобождающую 100 MiB.
вчера в 22:00

Простой драйвер rotary encoder для Qt4 Embedded под Linux tutorial

Так сложилось, что в Qt4 Embedded, которую мы используем на нашем приборе Беркут-ММТ, нет поддержки таких устройств ввода, как энкодер. Т.е. если прицепить к прибору мышь — координаты при перемещении обрабатываться будут, а вот колесо прокрутки — нет. Потому что драйвер linuxinput не обрабатывает события с типом REL_WHEEL, которое генерит энкодер, а только REL_X и REL_Y, которые отвечают за изменение координат.

Кому интересно как эту проблему решить — добро пожаловать под кат.
вчера в 18:28

Dagaz: Пинки здравому смыслу (часть 10)

image… Десять настанет…
И ты задрожишь,
Как осиновый лист задрожишь! 

         Юринэ "Карас"
 
 

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

Игра давления
TAMSK или «Игра давления» была второй игрой, разработанной в рамках инициативы "GIPF Project". Это, пожалуй, самая странная из всех известных мне игр. В качестве игровых фишек, в ней используется набор песочных часов:



Каждый игрок имеет по три 3-минутных «склянки». Кроме того, в игре используются нейтральные 15-секундные часы, для ограничения времени хода. В начале игры, «фигуры» расставляются в углах шестиугольной доски, с чередованием цвета. Выполняя ход, каждый игрок перемещает одну из склянок на соседнее поле (в любом направлении), переворачивая её. Сразу же после этого, на поле с фигурой надевается кольцо. Правилами запрещается выполнять ход фигурой, песок в которой полностью высыпался (первыми тремя ходами каждый игрок обязан «взвести» все свои часы) и ходить на те поля, среза трубки которых достигли кольца (трубки полей имеют различную высоту). Игра заканчивается, когда ходы становятся невозможными. Побеждает игрок надевший больше всего колец.

Безусловно, эта игра очень сложна (её совершенно точно не удастся описать на ZRF, а на Axiom, с её поддержкой таймеров, вряд ли удастся разработать сколь нибудь дружественный интерфейс), но эта сложность выглядит какой-то искусственной, «притянутой за уши». Как разработчика настольных игр, меня интересуют игры, «бросающие вызов» существующим средствам разработки, но я не приветствую «сложность ради самой сложности». Я хочу рассказать про…
2119
9
GlukKazan 15,2
вчера в 00:53

Продать за 60 секунд. Call-центр в облаке и специальная сим-карта

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



3309
39
duran242 19,3
вчера в 14:48

Книги, по которым мы в детстве учили программирование и будем учить детей



Когда я зашел в гости к Робокурс (они учат ребятишек 7-13 лет программированию и робототехнике), то увидел коллекцию раритетных книжек по программированию и вспомнил былое, 286-е без жесткого диска, BASIC из оперативки и прочее.

Я был в восьмом и от одноклассника узнал, что есть «Краевая станция юнных техников» (КСЮТ), где помимо выпиливания лобзиком кордовых авиамоделей есть и инновационный кабинет по программированию. Записался туда. Там были и первые сетевые баталии в NETWARS, и первая порнокартинка, и война за пароль главного администратора. Адекватных книг практически на было, особенно по горячо любимому мной бейсику (только «Программышка» и еще одна розовенькая книга, откуда я узнал, что такое массив и что с ним можно делать.)

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

Под катом кратенький обзор одной современной и нескольких олдскульных советских книжек по робототехнике и программированию для детей из коллекции преподавателей. (Бонус — обзор манги по электричеству.) А в комментах — ваши первые книги.
11472
110
MagisterLudi 209,7
вчера в 17:08

Первый взгляд на Scaleway

Случайно попалось упоминание о хостинге Scaleway.

Плюсы:
  • 4 ядра
  • 2 гигабайта оперативки
  • 50 гигабайт SSD диск
  • bare-metal! (то есть, нет никаких, даже чисто теоретических накладных расходов на виртуализацию)
  • за все это всего 3 евро в месяц! Очень дешево!


Но есть особенность: это ARM процессор. Да-да! Это 4-х ядерный ARM процессор.


8457
45
risik 10,4
вчера в 18:04

Опасный мир вредоносных расширений и защита от них. Опыт Яндекс.Браузера

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



Весной 2014 года поддержка Яндекс.Браузера обратила внимание на стремительно растущее число обращений от пользователей, в которых говорилось о «заражении браузера вирусом» и агрессивной рекламе, всплывающей на посещаемых сайтах. Наиболее распространенным симптомом была подмена или добавление новых рекламных блоков на популярных в Рунете сайтах (ВКонтакте, Яндекс, ...). При этом разработчики вредоносных расширений не утруждали себя заботой о пользователях и не брезговали откровенно мошеннической или шок-рекламой. Встречались и другие проявления. Например, автоматическое открытие вкладки с определенным сайтом, подмена поиска по умолчанию или даже воровство данных.

В определенный момент количество таких обращений стало достигать 30% от всех сообщений в поддержку. Наблюдения поддержки также подтверждались статистикой основных причин удаления нашего браузера (при удалении пользователям предлагается описать причину). Многие люди искренне считали, что это наша команда решила таким вот способом монетизировать браузер. За короткий период времени количество удалений Яндекс.Браузера, связанных с деятельностью сторонних вредоносных разработок, удвоилось. Нужно было срочно вмешаться и начать работать над этой проблемой.
9033
23
BarakAdama 40,2
Банкинг сегодня – уже не та консервативная и неповоротливая структура, какой мы, исторически, привыкли её воспринимать. Современный банк – это активная и динамичная машина, быстро реагирующая на изменения на рынке, а значит – предлагающая своим клиентам наилучший и наиболее подходящий сервис. Мне интересно
вчера в 12:40

Первая книга юного программиста. Учимся писать программы на Scratch

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

image

Данный пост адресован детям и их родителям:
Не сомневаюсь, что ты любишь играть на компьютере, телефоне или планшете и смотреть 3D-мультфильмы. А знаешь, как их делают? Для этого нужны программы — наборы команд, которые приказывают компьютеру двигать героев по экрану.
А теперь — самое главное. Ты можешь сам делать такие программы! Придумывать игры со своими героями, рисовать мультфильмы — все, что захочешь. Для этого создали специальную детскую среду программирования Скретч. Все команды в ней нарисованы как цветные значки-блоки, из которых удобно собирать программы. Это похоже на конструктор «Лего». Просто берешь кубики и собираешь сложную программу или игру. Давай вместе отправимся в удивительный мир программирования.
6488
59
ph_piter 80,2
вчера в 11:28

Подключение Asterisk по ОКС-7



Поддержка сигнализации SS7 была анонсирована в chan_dahdi достаточно давно, но реально использовать ее было невозможно из-за ограничений в реализации. Практически единственной альтернативой было использовать драйвер chan_ss7 от компании Netfors (хотя их бесплатная версия и не идеальна, но позволяет собрать хоть какую-нибудь рабочую систему). И вот наконец-то в Asterisk v13+ появилась поддержка SS7, позволяющая выполнять подключения к реальному оборудованию. Итак, рассмотрим последовательность шагов, необходимых для сборки Asterisk, поддерживающего работу с цифровыми каналами связи.
3361
58
CANMOS 20,8