LINUX.ORG.RU

Избранные сообщения Berluskoni

Обновление BuguRTOS 0.6.5, 0.7.2 и 0.8.1

Новости — Open Source
Группа Open Source

Вышли новые версии встраиваемой операционной системы реального времени BuguRTOS:

  • В ветках 0.6.х и 0.7.x исправлена одна ошибка (неверный порядок обработки флагов в системном вызове proc_flag_stop). Текущие версии этих веток: 0.6.5 и 0.7.2 соответственно.
  • В ветке 0.8.х (обновлена до 0.8.1) изменения более значительны:
    • исправлен устаревший код планировщика;
    • исправлена серьезная ошибка в системном вызове sync_wait;
    • удален системный вызов proc_flag_stop;
    • добавлены системные вызовы proc_lock и proc_free;
    • в нижние уровни ARM-портов добавлены барьеры памяти;
    • изменено поведение системного вызова sync_set_owner, теперь для смены «хозяина» объекта типа sync_t нужно сначала вызвать sync_clear_owner;
    • добавлена поддержка протокола Immediate Priority Ceiling, теперь его можно использовать отдельно или в комбинации с протоколом наследования приоритетов;
    • добавлена библиотека generic, реализующая следующие традиционные примитивы синхронизации:
      • мьютекс,
      • условная переменная,
      • сигнал (такой же как в ветках 0.6.х и 0.7.x),
      • счетный семафор,
      • IPC, аналогичный микроядерному.

>>> Подробности

 , ,

shkolnick-kun
()

Вышел GNU Parallel 20140815alpha

Новости — GNU's Not Unix
Группа GNU's Not Unix

GNU Parallel — это инструмент оболочки для параллельного выполнения задач на одном и более компьютерах. Задача может быть одной командой или маленьким скриптом, выполняющимся для каждой строки ввода. Типичным вводом являются список файлов, список хостов, список пользователей, список URL или список таблиц. Задача также может быть командой, читающей из трубы. GNU Parallel может разделить ввод и передать его через трубы распаралеленным командам.

Новое в этом выпуске:

  • GNU Parallel теперь использует ту же оболочку, из которой он был запущен, как командную оболочку для локальных задач. Таким образом, если GNU Parallel запущен из tcsh, он будет использовать в качестве оболочки tcsh даже если $SHELL содержит иное. Для удалённых задач будет использоваться заданный при входе $SHELL.
  • В bash можно полность скопировать текущее окружение с помощью обёрточной функции для оболочки (env_parallel).
  • --plus добавляет строки замены {+/} {+.} {+..} {+...} {..} {...} {/..} {/...}. Идея заключается в соответствии '+foo' противоположности 'foo' и {} = {+/}{/} = {.}.{+.} = {+/}/{/.}.{+.} = {..}.{+..} = {+/}/{/..}.{+..} = {...}.{+...} = {+/}/{/...}.{+...}
  • GNU Parallel будет освещён в web-трансляции 20 августа 2014 г.: «Наука о данных в командной строке» http://www.oreilly.com/pub/e/3115
  • GNU Parallel приведён в: «Web-сервисы для извлечения информации из больших объёмов научных данных» http://patshih.ist.psu.edu/publications/Williams-CiteSeerExtractor-ICWS14.pdf
  • «Взгляд внутрь GNU Parallel» http://blog.dataweave.in/post/94238943763/a-peek-into-gnu-parallel
  • Сборка GNU Parallel для CentOS/RHEL http://www.stableit.ru/2014/07/gnu-parallel-centosrhel.html
  • Исправления ошибок и обновления мануалов

GNU Parallel — Для людей, проживающих жизнь в параллельных полосах.

Больше информации про GNU Parallel можно найти на: http://www.gnu.org/s/parallel/

Вы можете установить GNU Parallel всего за 10 секунд: (wget -O - pi.dk/3 || curl pi.dk/3/) | bash

Посмотрите вступительное видео: http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Пройдите через учебник (man parallel_tutorial). Ваша командная строка полюбит вас за это.

При использовании программ, использующих GNU Parallel для обработки данных для публикации, пожалуйста, процитируйте: O. Tange (2011): GNU Parallel - The Command-Line Power Tool, ;login: The USENIX Magazine, February 2011:42-47.

Ссылка на скачивание: http://alpha.gnu.org/gnu/parallel/

>>> Источник

 , ,

MiniRoboDancer
()

Как разобраться в проекте?

Форум — Development

Суть такова, что я сейчас мучаюсь с переделкой cube2. Разобраться в его строении довольно сложно. Вот я и хочу спросить, что делаешь ты, лоровец, когда работаешь с крупным и незнакомым тебе проектом? Составляешь схемы на листке бумаги? Или знаешь какой-нибудь другой способ?

 , ,

netcat
()

Google Reader закрывают. Куда бежать?

Форум — Talks

http://lenta.ru/news/2013/03/14/noreader/

1 июля 2013 года будет закрыта читалка RSS-потоков Google Reader. Об этом сообщается 13 марта в официальном блоге Google.

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

Посоветуйте альтернативный веб-сервис. Десктопные приложения не предлагать (потому, собственно и в Talks, а не в Desktop).

strangeman
()

Очереди и многопоточность в python

Форум — Development

Сразу к делу.

Есть сервер. Сначала думал над тем, как вручную реализовать, потом наткнулся на http://docs.python.org/py3k/library/socketserver.html и решил, что это то, что мне надо.

Собственно, вся реализация сервера:

class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
    pass

Обрабатывает все запросы некий класс

class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):

    def handle(self):
        data = str(self.request.recv(1024), 'ascii')
        cur_thread = threading.current_thread()
        response = bytes("{}: {}".format(cur_thread.name, data), 'ascii')
        self.request.sendall(response)

Всё работает как надо (если скопировать пример из дока). Нюанс вот в чём. Мне нужно чтобы сервер обслуживал многих клиентов, а они могли выполнять какие-то операции. Например, пользователь хочет зарегистрироваться - для этого клиент посылает специальный запрос, сервер его обрабатывает, и он должен добавить запись в базу данных (использую sqlite).

Но sqlite нельзя использовать из множества потоков!! Решить проблему можно так - выбрать один поток, который и будет писать в базу данных и выполнять все операции. Можно, например взять очередь http://docs.python.org/py3k/library/queue

сделал примерно так, создаю очередь и делаю её полем класса:

tasks = queue.Queue()
ThreadedTCPRequestHandler.tasks = tasks

Также передаю в специальный класс обработчик, которую запускаю в отдельном потоке (и этот поток всегда одинаковый, запускаю его ОДИН раз)

worker = Worker(tasks)

Ну реализация примерно такая

class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):

    def handle(self):
        data = str(self.request.recv(1024), 'ascii')
        ThreadedTCPRequestHandler.tasks.put(data)
        # что посылать в ответ??
        self.request.sendall(???)

class Worker:

    def __init__(self, tasks):
        self.tasks = tasks

    def do(self):
        while True:
            item = q.get()
            # делаю тут что-то, например, работаю с базой данных sqlite
            q.task_done()

Собственно, мне нужно узнать результат выполнения, выполнена ли команда успешно или вообще не выполнена... и вернуть результат клиент (через sock.sendall(b'что-то'). Как это сделать? %) мне создать ещё одну очередь? такой вариант наверное не прокатит...

Я пробовал просто отправлять в очередь tasks = queue.Queue() экземпляры сокетов (и делать sock.recv/sock.send уже из класса Worker) - но такой вариант вообще не работает, сокет становится закрытым... то есть с сокетом можно получается работать только из того потока, который обслуживает клиента.

Что делать? %)

 , ,

BattleCoder
()

В России под ограничение 18+ попала рок музыка

Форум — Talks

Ъhttp://progorodnn.ru/newsv2/57917.html

Ъ:

О том, какой страшный вред детской психике, согласно Пятой статье Закона «О защите детей от информации, причиняющей вред их здоровью и развитию», может принести, скажем, мультфильм «Ну, погоди!», нам уже объяснили. Теперь пришел черед музыки.

Отныне все музыкальные CD в легальной продаже должны снабжаться наклейкой с цифрой ограничения по возрасту. И что же мы имеем? Queen, Deep Purple, AC/DC, Pink Floyd, Led Zeppelin, саундтрек к «Титанику» (!), весь Джими Хендрикс, Майкл Джексон, Элтон Джон, Элвис Пресли, Луи Армстронг (!!!) теперь будут фигурировать на прилавках со значком «18+» и сопутствующей надписью для непонятливых: «ЗАПРЕЩЕНО ДЛЯ ДЕТЕЙ».

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

 , ,

AGUtilities
()