LINUX.ORG.RU

Сообщения mriadus

 

Перенаправление потока stdout. Ускорение скидывания данных.

Есть приложение, запущенное из командной строки так:

./appname > log.log

Данные в лог пишутся шеллом, но, похоже, с буферризацией. Задержка составляет около секунды. Командой tail -f log.log я вижу изменения не моментально, а с этой задержкой. Командой watch -n0.2 «tail -n 30» с той же задержкой в секунду.

Нельзя ли без остановки приложения как-то повлиять на эту буферризацию в сторону уменьшения времени задержки?

Спасибо.

mriadus
()

Почему приложение может тихо завершаться в функции «send()»?

Имеется ввиду ssize_t send(int s, const void *buf, size_t len, int flags);, которая с сокетами работает.

Какие могут быть варианты? Да, возможно закрывается соединение к тому моменту, как я отправляю (сокеты-асинхронные), но тогда бы приходил SIGPIPE. А тут просто завершается без всяких новостей. Буффер точно исправен, размер точно тот. Всё утыкано std::cout, вижу, что параметры корректные.

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

Что проверено: - память не течёт - указатель на буффер - ОК, размер какой нужно. - сокет - ну точно созданный или accept-нутый, и точно не -1. - сигнал SIGPIPE не приходит.

Не спрашивайте, правильно ли я всё проверил, просто выдайте варианты падения на send или сомнения в моих проверках. Доказывать то, что я проверил всё хорошо, не буду, но заострю внимание и проверю ещё раз что-то конкретно, если будут советы.

Исходники не покажу - незачем, просто вспомните варианты, когда send может завалить приложение, я уже не знаю, что проверять )

Спасибо!

mriadus
()

Софт для рисования на бесконечном холсте для tablet PC.

Есть HP tc4400, у которого под TFT-матрицей стоит wacom-«плата», и активное перо, упирающееся в стекло, стоящее над TFT-матрицей. Получается очень точно и со степенями чувствительности рисовать. Интересно, существует ли софт, дающий возможность так рисовать:

Нарисовать человечка, потом сделать zoom на пуговицу его одежды (при этом линии пуговицы станут очень толстыми) и иметь возможность рисовать всё теми же тонкими линиями внутри этой же пуговицы. То есть, нарисовать 10 человечков тонкими линиями, каждый внутри пуговицы другого. То есть, чтобы я мог отдать файл другу, он открыл и увидел человечка, а потом чтобы он мог 10 раз обнаруживать человечков в пуговицах друг друга...

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

Microsoft делала какую-то презентацию на TED. Показывала какую-то читалку, в стиле adobe acrobat. Докладчик очень глубоко зумил, читал то, что читают люди на небольших фотографиях... И читал то, что читают люди на фотографиях в журналах, которые читают люди на фотографиях в журналах, которые читают люди... Ну или google/yandex map - от глобуса до автомобильной парковки... Т.е. я хочу так: провёл тонкую чёрную линию по глубусу, сделал много zoom и увидел целые регионы, на которых лежит чёрная пелена...

mriadus
()

Посоветуйте протокол/библиотеку/фреймворк для общения в кластере мастера со слейвами. Выдача заданий, приём ответов.

Библиотека нужна под C++. Имеется ввиду сетевой транспорт обмена задачами/ответами. Но к протоколу требования такие простые, что можно прямо сейчас взять и использовать HTTP. XML-возможности по структуризации данных не нужны, будет достаточно гонять туда-сюда линейные структуры данных. Можно бинарные, можно в виде набора текстовых строк. Будет клёво, если протокол высокого уровня будет отделён от сокетного-коннектного-биндного и будет даваться возможность завернуть его ещё во что-нибудь и использовать свой сокетный код.

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

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

Спасибо.

mriadus
()

Советую всем посмотреть лекции А. Степанова в Yandex.

Он там прочёл 2 большие лекции. Первая часть первой лекции: http://video.yandex.ru/users/ya-events/view/129/

Смотрели многие, но многие и не заметили.

Это автор STL для C++. Давно занимается вопросами обобщённого программирования. Вопросами отделения типов от алгоритмов. Вопросами унификации библиотек для всех языков без проседания производительности. Сравнивает программистов и электронщиков - первые постоянно собирают всё из транзисторов, а вторые уже давно юзают готовые микросхемы (намёк на хорошие библиотеки). Оч. интересные и вдохновляющие лекции. Советует выкинуть Александреску на помойку, не заниматься изучением питонов и хаскелей и их отличий, а сначала осилить базовые вопросы построения и анализа алгоритмов и читать Кнута или хотя-бы купить и поставить на полку, чтобы он оттуда говорил: «прочитай, прочитай...»

mriadus
()

Безумная идея для поисковых систем. Виртуальные поисковые машины пользователей внутри основной.

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

p.s.
Траффико-резистор - это ширина канала связи. Или упирание в другие ресурсы.
А что такое траффико-конденсатор и траффико-индуктивность? Интересно, какие траффико-RLC-цепи в мире есть? (-;

mriadus
()

Какой интересный поиск по форумам можно сделать?

Есть база постов с разных форумов. Свалка топиков выглядит так: http://ymap.dyndns.org/ Робот периодически смотрит на разные форумы, апдейтит базу, вставляет новые записи. В текущем виде это штука не оч. полезная. Можно сделать централизованную читалку форумов - выбираешь по тегам или сайтам форумы и читаешь коктейль. Но много где есть RSS. С другой стороны, многие не шарят в RSS и такая штука просто удобнее за счёт отсутствия одного шага. Но это всё не так весело.

Весело было бы придумать какой-то поиск по форумам - более специфичный для форумов, чем общий поиск гугла.

Пока я слышал только одну интересную мысль: «найти все сообщения, в которых кто-либо (или человек N) цитировал меня или упоминал мой ник».

Что ещё интересного для поиска на форумах можно придумать?

mriadus
()

БД. Таблица сообщений форума.

СУБД - допустим, MySQL.

Посоветуйте огранизацию таблицы с сообщениями для форума и способ работы с ней. Сообщение должно содержать информацию о топике, к которому относится. В топике может быть, например, over 9000 сообщений и хочется быстро показать страницу номер 333. На странице - 25 сообщений.

P.S. Не очень важные детали: форум не древовидный, но содержит под-разделы. Это можно считать просто отдельными форумами - Talks, Development, Desktop... Сообщения от всех этих форумов - в одной таблице. Просто у сообщения будет id_forum и всё. Если под каждый такой форум создать таблицу - страшного тоже ничё не будет, этих форумов мало. Данные будут добавляться на C++ или Python, считываться - PHP.

mriadus
()

webcam -> ffmpeg -> h264. Почему не более 4 fps? CPU load = 10%!!!

Команда:

ffmpeg -f video4linux -s 640x480 -b 700k -r 29.97 -i /dev/video1 -i /tmp/fifo.wav -vcodec libx264 -vpre hq video.mp4

От изменения -vpre, -r, -b на другие значения, картина не меняется. Картина с частотой кадров.

29.97 FPS оказываются в выходном файле, но смена картинки происходит не чаще 4-5 fps.

Это число (4-5 fps) пишет ffmpeg во время кодирования:

...
frame=   26 fps=  4 q=-1.0 Lsize=     235kB time=8.27 bitrate= 232.2kbits/s
...

/usr/share/ffmpeg/libx264-hq.ffpreset:

coder=1
flags=+loop
cmp=+chroma
partitions=+parti8x8+parti4x4+partp8x8+partb8x8
me_method=umh
subq=8
me_range=16
g=25
keyint_min=25
sc_threshold=40
i_qfactor=0.71
b_strategy=2
qcomp=0.6
qmin=10
qmax=29
qdiff=4
bf=3
threads=2
refs=8
directpred=3
trellis=1
flags2=+wpred+mixed_refs+dct8x8+fastpskip

Камера - logitech IM connect. Тормозная, но не настолько. Около 10-15 fps при том освещении, которое было на момент тестов, она выдавать могла (mplayer показал).

Нельзя сказать, что проца не хватает. Он нагружен процентов на 10% во время этого действа.

Спасибо.

mriadus
()

Поиск языка программирования.

Что наиболее похожее на нижеописанный язык вы можете вспомнить?

Это похоже на regexp-ы. Основная цель - находить шаблоны. Но работает немного умнее regexp-ов, позволяя создавать переменные, сравнивать их с чем-то и т.п. Для ясности - пример:

Есть тексты: «abcdef», «abcddeeff»

Программа на таком языке:

a, b, c, d, f, $X="OK", $CODE=33

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

В конце стоят два специальных оператора - создание двух переменных, присваивание им чего-то. До них дело доходит по вышеописанной логике - если все предыдущие операторы успешно «пройденены» (соотв. символы найдены). Т.е., если текст будет не «abcdef», то переменные $X и $CODE созданы не будут.

Оператор ИЛИ:

(a,b,c) || (w,d,x) || (g,p,o,x,a), $X = 1

Три последовательности через ИЛИ. Делаются три попытки поиска разных последовательностей с одного места в тексте. Три последовательности, разделённые ИЛИ - это один оператор, далее запятая и второй - «$X=1». Смысл - нашли хотябы одну из них - перейдём к выполнению следующего, который создаёт переменную. Не нашли ничего, до $X дело не дойдёт.

Программа посложнее:

a, b ,c, (d, f, $CODE=1, $X=55) || ( d,d,e,e,f,f,$CODE=2, $X=66), ( $CODE == 1, $TEXT="Hello world" ) || ( 2 == $CODE, $TEXT = "mama, mama, chto ya budu delat" )

В зависимости от вида строки, создаётся разная переменная $CODE, и в зависимости от неё, переменная $TEXT имеет разное содержимое. Все программы тут дурацкие, решаются уже имеющимися во вселенной средствами, конечно. Но интересно узнать, существуют ли подобные «языки», работающие по подобной логике - «прохождение» последовательности операторов, зависящее от нахождения их во входной последовательности или от результатов выполнения условных операторов...

Спасибченко!

mriadus
()

Вещание с веб-камеры.

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

Такое решение есть у рутуба - они дают свою спец-софтину, но рутуб - тормоз и софтина у них только под windows.

Например, на стороне вещателя - возможность использования ffmpeg - было бы клёво.

Посоветуйте ещё пожалуйста конкретные настройки для ffmpeg + ffserver, а также необходимый комплект дров/кодеков (конкретные версии и производители), которые позволяют дать юзеру ссылку на видео-поток, которую базовая windows xp успешно откроет и покажет в каком-нибудь своём windows media player.

Я игрался ffmpeg + ffserver давно, как-то плохо получалось, ещё попробую, а вы пока изложите свой опыт свежий, если есть.

mriadus
()

Вопрос по разработке алгоритма.

Вопрос на разработку (знание) алгоритма.

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

Думаю, точность указания даты - до дня.

Спасибо.

mriadus
()

C/C++ linux разработчик. Ищу удалённую работу.

Здравствуйте!

На данный момент наибольший опыт имеется в C/C++ - разработке серверных многопоточных backend-приложений для высоконагруженных проектов, выполняющих роль специализированных СУБД. Очень интересует работа в области разработки СУБД, задачи, связанные с подбором или разработкой алгоритмов, структур данных, нестандартных решений, с вдумчивой проработкой базовых деталей систем.

Понимание STL изнутри, опыт разработки аллокаторов, опыт использования boost::lexical_cast, boost::tokenizer, boost::filesystem и др.

Опыт:
- работы с POSIX sockets, pthreads, epoll, libcurl, libmysql, FastCGI, Qt, xlib, MySQL, PostgreSQL.
- реализации собственных сетевых протоколов, синтаксических анализаторов, интерпретатора простого скриптового языка.
- проектирования распределённых систем, применения MapReduce.

Английский - письменный и устный.

Пишите пожалуйста на:

mriadus
gmail
com

Телефон: +7 921 57 98 994

mriadus
()

Как ограничить долю файлового кеша, который может отожрать опр. процесс или опр. файл.

Есть 10-гиговый файл - диск виртуалки. Когда по этому файлу шарится виртуалка, прочитанные части этого файла кладутся в файловый кеш (вся невыделенная процессами часть ОЗУ), вытесняя гораздо более полезные для меня в данный момент файлы оттуда.

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

Спасибо. Чеснокоеды.

mriadus
()

Подскажите простой сценарий поднятия VPN.

1. Есть openvpn. 2. Цель: сделать сеть 192.168.1.0 из двух машин - linux + windows. Нужно, чтобы windows-юзер создал какую-то VPN сеть (без уст. доп. софта), указав в настройках интернет-IP-адрес linux-хоста и получил интерфейс в сеть 192.168.1.0 поверх интернета.

mriadus
()

Несколько выходов в интернет. Пустить разные приложения через разные из них.

Сабж.

Главное условие задачи - может быть так или иначе доступно несколько маршрутизаторов (10.10.10.1, 10.10.10.55, 192.168.1.55), имеющих разные белые IP (рызных провайдеров и т.п.).

Хочется, грубо говоря, запустить 2 TCP клиента, которые идут на один и тот же IP в интернет, но через разные маршрутизаторы. Каким способом это делается? Спасибо.

mriadus
()

Заказ на написание конфига для ptoftpd.

Хочу заходить на FTP не указывая никакого логина (ftp:ftp) и получать доступ в диру /home/ftp/ на добавление новых файлов, листинг и чтение имеющихся. Всё. Спасибо!

mriadus
()

Создание раздела безопасности для скеретарш и блондинок.

Разделы на HDD:
(1) Спасательный. 20 Гб.
(2) Винда. 10Гб.
(3) Данные. 300 Гб.

Врубаем комп. Из (1) грузится линукс и запускает виндовый загрузчик, убивая себя этим. Насколько реально, работая в защищённом режиме, в линуксе, под рутом, прочитать другой загрузчик, рассчитанный на реальный режим, передать ему управление и самоубицца?

Спасательно-загрузочный линукс из раздела (1) выглядит так:
«здраствуй юзер, нажми L или S или жди 5 секунд».

После установки винды и программ, сисадмин указывает спасательному линуксу сделать точку восстановления (жмёт S). Линуксовое приложение грабит раздел (2) в файл, кладёт на свой раздел.

Если винду покусали вирусы, то на этапе загрузки юзер приказывает спасательному линуксу восстановить тот раздел целиком, нажимая L.

Наверное использовать линукс для (1) - пушка и воробьи и есть какое-то решение весом в 50 кб, которое ставится на раздел (1) и делает всё тут описанное?

mriadus
()

[Санкт-Петербург] Продам nokia n810. 5000 руб.

Я незнаю, зачем он мне нужен. Мне хватает nokia 1110i + nokia 1202i в кармане. Запродам. Комплект полный, работает всё клёво. Хотя нет, не полный, запасной стилус, кажется, потерялся. +7 921 57 98 994

 

mriadus
()

Чего это хочет smbd при запуске? (виснет, пытается соединиться на 127.0.0.1:631).

connect(4, {sa_family=AF_INET, sin_port=htons(631), sin_addr=inet_addr(«127.0.0.1»)}

mriadus
()

RSS подписка на новые темы