Обновить
43
0
Константин Грибов@grossws

Разработчик

Отправить сообщение

Protothread и кооперативная многозадачность

Время на прочтение7 мин
Охват и читатели23K
Продолжаем изучать планирование маленьких потоков. Я уже рассказала про два средства в ядре Linux, которые часто используются для отложенной обработки прерываний. Сегодня речь пойдет о совсем другой сущности — protothread Adam Dunkels, которые хоть и выбиваются из ряда, но в контексте рассматриваемой темы совсем не лишние.

А также:
  1. Многозадачность в ядре Linux: прерывания и tasklet’ы
  2. Многозадачность в ядре Linux: workqueue
  3. Protothread и кооперативная многозадачность

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

Федеральный закон № 243, или Тихая пенсионная реформа

Время на прочтение4 мин
Охват и читатели428K
счастливая старость

Началось все с того, что мне пришло письмо от знакомого. Я усомнился и пошел проверять. Уж больно неправдоподобным показалось написанное в нем.

Однако факт остается фактом: «… с 1 января 2014 г. будет осуществлен т. н. страховой маневр — сокращены с 6 до 2% отчисления на формирование накопительной части пенсии. Высвободившиеся 4% пойдут на финансирование страховой части.»

UPDATE! Весьма вероятно, что скоро сокращение будет не до двух процентов, а до нуля — смотрите обновление №3 в конце поста.

Ну, кто там спрашивал, от чего отвлекают наше внимание?! Здесь был горький смайлик с кривой ухмылкой.

Кому интересно / небезразлично, добро пожаловать под кат!
Читать дальше →

Сравнительная схема кораблей из научной фантастики

Время на прочтение2 мин
Охват и читатели317K


DirkLoechel наконец-то закончил работу над самой большой в истории сравнительной схемой космических кораблей из научно-фантастических произведений: художественных фильмов, сериалов и игр. Star Trek, «Звёздные войны», EVE Online и многие другие (полный список под катом). Все культовые корабли — они тут. Открывайте оригинал изображения 4268 x 5690 пикселов — и погружайтесь.
Читать дальше →

PrintBox3d. 3d-принтер по-русски

Время на прочтение4 мин
Охват и читатели161K
Недавно мне посчастливилось не только потестить российский принтер PrintBox3d, но и заглянуть в цех по производству.
Чем и хочу поделиться с хабрачитателями.


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


Фишки:
— 2 мотора на ось Z
— Метеоритоустойчивая рама
— Собственные контроллеры шаговых двигателей на основе разработок для промышленных ЧПУ
— Много запасных частей

Осторожно! Много алюминия!
Читать дальше →

5 Самых захватывающих событий, произошедших в космосе [перевод]

Время на прочтение7 мин
Охват и читатели194K
Мне очень понравилась вот эта статья о космонавтах, которые круче героев боевиков. Поэтому, найдя блог автора, я решил перевести для вас другую статью из той же серии.


Когда лётчики-испытатели прокачиваются до следующего уровня, получаются космонавты. И они настолько суровы, что могут использовать алмазы вместо жвачки. Мы уже говорили о крутых космонавтах, но вот что, ребята: в космосе всё круто. Поэтому вот вам ещё кое-что.

image

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

Google BBS Terminal — как google мог бы выглядеть в 80-х

Время на прочтение1 мин
Охват и читатели24K

Австрийские web-программисты из mass:werk решили представить, как мог бы выглядеть google во времена BBS

Под капотом у этой штуки:


Штука хоть и бесполезная, но если не выключать звук — доставит вам несколько приятных ностальгических минут

Музыкальное представление вашей GitHub активности

Время на прочтение1 мин
Охват и читатели3.9K
Никогда не задумывался, как звучат мои коммиты.

Но вот нашелся человек, которому визуального представления было недостаточно…

Теперь историю вашей активности можно послушать в С мажор.

Может найдутся энтузиасты запилить Rock / Blues / Jazz мотивы…

Пример — http://song-of-github.herokuapp.com/?username=slivu.

Source Code — https://github.com/ajacksified/song-of-github.

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

Время на прочтение6 мин
Охват и читатели101K
От переводчика: В последнее время на первый план выходит техническая часть космических программ. В сети можно найти большое количество статей, рассказывающих о тех или иных научных достижениях, помогающих нам в освоении космоса. Но не стоит забывать и про космонавтов, отважно бросающих вызов звездам. В этой статье автор рассказывает о пяти случаях, которые заставляют как никогда проникнуться уважением к этим покорителям космоса.

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

The Powder Toy

Время на прочтение2 мин
Охват и читатели10K
Предлагаю вашему вниманию отличную игру, за которой вы возможно проведете не один вечер. Эта игра относится к разряду тех в которые можно легко научиться, но сложно стать профессионалом. Да и профессионалом становиться не обязательно. Это просто отличное убиение времени. В основе игры лежит физика. Здесь, с помощью около 40 материалов, можно сделать практически все. Калькулятор, вулкан, ядерную бомбу (или реактор, кому как нравится), огнемет. Да у меня просто фантазии на все не хватит.

http://powder.hardwired.org.uk/
Более того, она относится к open-source продуктам.
http://powder.hardwired.org.uk/Download/powder-33.2-src.zip

Например здесь собран настоящий бинарный калькулятор.
image

А здесь собран десятичный калькулятор.

Игра имеет отличный движок для воплощения многих ваших идей!
Читать дальше →

SCT Error Recovery Control

Время на прочтение4 мин
Охват и читатели109K
… или что такое на самом деле 'raid edition' для жёстких дисков



Немного теории


Существуют две стратегии поведения НЖМД при обнаружении ошибки:
  • standalone/desktop — пытаться прочитать до последнего. Это ощущается как «тормозящий винт», который всё-таки работает, если это единичный сбой, то «затупило, но прошло», плюс характерный перестук перекалибрующихся головок.
  • raid — отваливаться тут же. Это ощущается как «внезапно была ошибка диска но потом mhdd и т.д. НИЧЕГО НЕ НАШЁЛ ЧТО МНЕ ДЕЛАТЬ».
Статегии очевидным образом различаются по предназначению — десктоп лучше протупит, но ошибку не выдаст, в рейде есть запасной винт, и терпеть минутные тормоза на чтении никто не имеет никакой возможности. Не получилось прочитать? Читаем с запасных винтов, помечаем весь винт как сбойный, начинаем ресинк, а диск потом отправят в утилизатор. Возможно, незаслуженно, но нечего икать на ответственной должности.

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

Расшифровка названия


Возможность управления поведением диска при ошибках называется очень и очень путанно: SCT ERC. Это расшифровывается как SCT Error Recovery Control. SCT в свою очередь название общего протокола SMART Command Transport. SMART в свою очередь расшифровывается как Self-Monitoring, Analysis and Reporting Technology, таким образом, полная расшифровка SCT ERC звучит так: Self-Monitoring, Analysis and Reporting Technology Command Transport Error Recovery Control (выдохнули).
Читать дальше →

Передача электроэнергии по одножильному проводу

Время на прочтение4 мин
Охват и читатели37K
Для профессионалов-электриков, возможность передавать электрическую энергию по одному проводу должна быть известна. Это не есть чудо. Однако не профессионалам такая возможность может показаться достаточно фантастической, или, по крайней мере, необычной. В данной статье я хотел бы поделиться собственным опытом в этой сфере. Настоятельно рекомендую, перед прочтением данной статьи, познакомиться с оригинальной информацией из работ Н.Тесла. Об однопроводной передаче энергии (далее ОПЭ) известно с 19го века. Для осуществления ОПЭ нужны следующие условия: ток должен быть переменным и относительно высокочастотным, а так же достаточно высокого напряжения. Для примера: частота тока 10-15кГц, напряжение 10-15кВ. Хотя опыты проще проводить с меньшим напряжением, я использовал 100-200В. Для повышения эффективности процесса необходимо использовать резонанс.
Читать дальше →

50 цитат о программировании всех времён

Время на прочтение6 мин
Охват и читатели169K
Перевёл после прочтения комментариев к статье «О ненависти к C++». В цитатах можно найти ответы на большинство возникших там вопросов.

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

49. Lisp — это не язык, а строительный материал.
— Alan Kay

48. Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены.
— Edward V Berard
Читать дальше →

Алгоритмы поиска путей на JavaScript

Время на прочтение1 мин
Охват и читатели32K


Поиск оптимального маршрута юнита к цели на неизвестной карте — одна из самых сложных задач при разработке игры. К счастью, существует некоторое количество алгоритмов, которые решают эту задачу. Есть и отличная библиотека PathFinding.js с поддержкой 11 таких алгоритмов.
Читать дальше →

Используем nginx, docker, skydns и skydock для обновления кода на лету (zero-downtime deployment)

Время на прочтение5 мин
Охват и читатели24K

Инструменты, которые мы будем использовать


Docker


Docker — простая и элегантная библиотека для создания легковесных изолированных друг от друга виртуальных контейнеров, в которых можно исполнять любой код. Совершенно не требователен к ресурсам, минимальный overhead.

Собрав контейнер один раз, его можно многократно использовать.

Простой пример — это БД Redis. Если нам необходимо несколько серверов Redis на одном компьютере, при обычном подходе нам придется изменять конфигурационные файлы в /etc/redis и менять файлы в /etc/init.d. Можно написать bash скрипт, но это не делает процесс легче.
Читать дальше →

Подсчёт времени выполнения метода через аннотацию

Время на прочтение8 мин
Охват и читатели21K
Во многих проектах требуется посчитать время, которое затратил тот или иной метод. Для этого можно вручную сохранять значение System.currentTimeMillis() и после метода вычислять затраченное время. Когда методов много это становится не очень удобным.
Поэтому я решил написать простенькую аннотацию, которая бы считала время выполнения метода. Попытавшись найти информацию в интернете, понял, что её по данной теме очень мало. Придётся как-то выкручиваться, собирая информацию по крупицам.
Читать дальше →

Программируем квадрокоптер на Arduino (часть 1)

Время на прочтение18 мин
Охват и читатели400K


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

У нас впереди:
  1. Базовые понятия (для начинающих коптероводов).
  2. PID-регуляторы с интерактивной web-демонстрацией работы на виртуальном квадрокоптере.
  3. Собственно программа для Arduino и настроечная программа на Qt.
  4. Опасные тесты квадрокоптера на веревке. Первые полёты.
  5. Крушение и потеря в поле. Автоматический поиск с воздуха средствами Qt и OpenCV.
  6. Окончательные успешные тесты. Подведение итогов. Куда дальше?

Материал объемный, но постараюсь уложиться в 2-3 статьи.
Сегодня нас ожидает: спойлер с видео, как наш квадрокоптер полетел; базовые понятия; PID-регуляторы и практика подбора их коэффициентов.
Читать дальше →

Изолирование приложения с IP-адресом из VPN другой страны на примере Steam

Время на прочтение7 мин
Охват и читатели73K
Abstract: Изоляция приложения на уровне сети использованием network namespaces Линукса. Организация SSH-туннелей.

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

Вместо вступления. Я просто покажу эту картинку:

147%… Что-то мне это напоминает. Впрочем, хабр не для политики.

Цена на игры в Стиме зависит от региона. Регион — от IP'шника. Есть желание иметь цены в рублях, а не в евро.

Для этого мы используем VPN через SSH с использованием tun-устройств, плюс network namespaces для изоляции приложения от всех остальных сетевых устройств.

Network namespaces


Традиционно, приложение, запускающееся даже с правами пользователя, имеет полный доступ в сеть. Оно может использовать любой сетевой адрес, существующий в системе для отправки пакетов.

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

Если у нас есть несколько интерфейсов (один из которых относится к VPN), то нет штатных методов сказать стиму, что надо использовать его, а не eth0/wlan0. Точнее, мы можем «завернуть» весь трафик в VPN, но это не всегда желательно. Как минимум — рост latency и снижение скорости (даже если VPN ведёт на супербыстрый сервер, увеличение latency, оверхед от туннеля и фиксированная ширина локального канала ставят TCP в положение, когда приходится резать скорость). Как максимум — одно дело «покупать через русский VPN», другое дело — пускать туда весь трафик. Меня совсем не прельщает использование VPN для получения защиты роскомнадзором от оппозиции и вольнодумства.

В этих условиях возникает большое желание оставить один на один конкретное приложение и заданный сетевой интерфейс. Один. Сконфигурированный для нужд только этого приложения.

Для решения этой задачи в Linux, уже довольно давно (аж с 2007 года) существует технология, называемая network namespaces, то есть пространства имён для сетей. Суть технологии: над сетевыми интерфейсами создаётся подобие «каталогов», в каждом каталоге может быть несколько сетевых интерфейсов и приложений. Приложение, оказавшееся в заданном сетевом пространстве имён, может использовать (и видит) только те сетевые интерфейсы, которые отнесены к этому пространству.

Картинка ниже поясняет происходящее:

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

Основные принципы настройки Garbage Collection с нуля

Время на прочтение7 мин
Охват и читатели53K
В данной статье я бы не хотел заострять внимание на принципе работы сборщика мусора — об этом прекрасно и наглядно описано здесь: habrahabr.ru/post/112676. Хочется больше перейти к практическим основам и количественным характеристикам по настройке Garbage Collection в JVM — и попытаться понять насколько это может быть эффективным.

Количественные характеристики оценки эффективности GC


Рассмотрим следующие показатели:

  • Пропускная способность Мера, определяющая способность приложения работать в пиковой нагрузке не зависимо от пауз во время сборки и размера необходимой памяти
  • Время отклика Мера GC, определяющая способность приложения справляться с числом остановок и флуктуаций работы GC
  • Размер используемой памяти Размер памяти, который необходим для эффективной работы GC


Как правило, перечисленные характеристики являются компромиссными и улучшение одной из них ведёт к затратам по остальным. Для большинства приложений важны все три характеристики, но зачастую одна или две имеют большее значение для приложения — это и будет отправной точкой в настройке.
Читать дальше →

Как я СКАДу писал. Часть шестая

Время на прочтение5 мин
Охват и читатели13K
И снова, здравствуйте!

Предыдущая (и перед ней) публикация(и) доступны здесь: habrahabr.ru/post/175559

Окончательно раскидав текущие дела по своей системе — могу немного похвалиться проделанной работой, поэтому данный пост будет уже по результатам внедренных и внедряемых проектов автоматизации, выполненных на базе моей скада-системы. А также немного информации по текущим планам развития.

Последний год выдался очень напряженным и богатым на события… Но, обо всем по-порядку.
Читать дальше →

Информация

В рейтинге
5 124-й
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность