The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Создать новую тему
 - Свернуть нити
Пометить прочитанным
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Архив | Избранное | Мое | Новое | | |  
Форум Программирование под UNIX
Ald-0.1.6., !*! _Mister, (Отладка и профилирование) 27-Июн-17, 13:52  [ | | | ] [линейный вид] [смотреть все]
Не идёт make. Ошибка в Readln.c. Как исправить? Ещё надо описание последней версии AsmUtils можно на английском.
Программирование USB, !*! _Mister, (C/C++) 29-Июн-15, 10:32  [ | | | ] [линейный вид] [смотреть все]
Начал компиллировать программу, компилляция не прошла. У меня usb.h. В нем всего две строки define и mod_devicetable.h. Не знаю в чем причина. Выдает u32 mask no.


Рисование в Ubuntu (Qt, OpenCV), !*! Алексей, (Библиотеки, функции) 09-Дек-16, 19:14  [ | | | ] [линейный вид] [смотреть все]
Доброго времени суток!

У меня, как выяснилось, весьма нетривиальная задача. Нужно под Ubuntu 14 написать приложение, которое автоматически создает графический файл (коллаж), включающий в себя фотографии и текстовые подписи. Сам коллаж я вполне успешно делаю на OpenCV. Но здесь встают следующие ограничения:
- надписи должны быть на русском языке;
- приложение должно быть консольным (должно работать без "иксов" в виде демона и запускаться через init.d).

Проблема началась тогда, когда обнаружилось, что OpenCV (как это ни странно) не дружит с UTF8, а следовательно, и с русским языком. Эту ветку развития пришлось забросить.

Тогда я пошел в обход, сделал проект в Qt5 и воспользовался классами QImage и QPainter, потом скопировал полученное изображение в матрицу OpenCV (благо, Qt с русским языком дружит). Но здесь не вышло с запуском приложения в виде демона: QPainter при запуске из-под консоли (класс QApplication был заменен на QCoreApplication) выдает ошибку сегментирования.

Когда не вышло здесь, я вернул QApplication на место и попробовал запустить своё приложение с ключом -platform offscreen, что исключило все вылеты программы, но возникла проблема со шрифтами: при старте приложения выдавалась ошибка QFontDatabase: Cannot find font directory, и приложение снова вываливалось с ошибкой сегментирования.

Тогда я установил переменную окружения QT_QPA_FONTDIR=/usr/share/fonts. Ошибка перестала возникать, но вместо русских символов на коллаже стали отображаться пустые квадратики.

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

UPD: попробовал альтернативу - библиотеку CImg, но, как выяснилось, с русским языком не дружит и она...

Удаление строки после использования, !*! boroda4, (Shell скрипты) 13-Июн-17, 22:13  [ | | | ] [линейный вид] [смотреть все]
Всем привет. Есть скрипт. Если вратце то он из файла number.txt берет поочереди строки с номерами и создает файлы .call заменяя в них 123456 на номер из number.txt
Вопрос такой как изменить скрипт так, чтобы после использования каждого номера страка с номером удалялся бы из файла number.txt? Кучу всего перечитал, но так и не могу понять как это сделать.
Как получить полный путь вышестоящей директории?, !*! universite, (Shell скрипты) 08-Июн-17, 19:01  [ | | | ] [линейный вид] [смотреть все]
Сабж

Пока сделано так, ибо tar не понимает путей с /../ внутри...


dir="/tmp/sdaf/dsg/dg/df/gd/hf/d"
cd $dir/.. && dir2="$(pwd)"

Где-то видел вариант с awk, но не могу найти...

Bash сравнить строки, !*! lxs, (Shell скрипты) 06-Апр-17, 18:15  [ | | | ] [линейный вид] [смотреть все]
Здравствуйте! Ломаю голову над задачей:

есть file_1:              и file_2:
7                       1  ftp://127.0.0.32:21
8                       2  ftp://10.0.0.5:21
11                     3  ftp://10.10.1.1:21
16                     4  ftp://10.201.1.2:21
18                     5  ftp://127.1.1.4:21
20                     6  ftp://191.168.1.35:21
24                     7  ftp://192.168.1.24:21
27                     8  ftp://10.10.1.4:21
29                     9  ftp://10.10.1.7:21
32                     10 ftp://192.168.1.39:21
...                                  ...
...                                  ...
120                    120 ftp://10.10.10.6:21
как по номерам из file_1 вывести соответствующие этим номерам строки в file_2?



Парсер значения, !*! VladiS, (Shell скрипты) 05-Июн-17, 13:48  [ | | | ] [линейный вид] [смотреть все]
Привет, камрады!

root@:~ # geli list
Geom name: vtbd0p4.eli
...
1. Name: vtbd0p4.eli
   Mediasize: 6441889792 (6.0G)
   Sectorsize: 4096
   Mode: r0w0e0
Consumers:
1. Name: vtbd0p4
   Mediasize: 6441892352 (6.0G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 541696
   Mode: r1w1e1

Пытаюсь присвоить переменной значение 6441892352.
geli list | sed '/Name: vtbd0p4.eli/,+2d' | grep 'Mediasize' | sed 's/[A-z,:, ,)]//g; s/(.*)//'

Но что-то мне подсказывает, что я редкостный изврат. :-)

Сохранение в файл результата Bash, !*! dboon, (Shell скрипты) 02-Май-17, 18:15  [ | | | ] [линейный вид] [смотреть все]
Собственно хочу отсортировать более определенного количества и добавить в файл, отсортировать получается, а при записи выдает вот это.
66.249.76.127: No such file or directory
66.249.76.127
cat: 188.35.131.159: No such file or directory
188.35.131.159
cat: 212.164.95.16: No such file or directory
212.164.95.16
cat: 92.243.183.14: No such file or directory
92.243.183.14
cat: 91.239.126.75: No such file or directory
91.239.126.75
cat: 5.138.107.190: No such file or directory
5.138.107.190
cat: 83.220.236.254: No such file or directory
83.220.236.254

Нужно чтобы записывало ipшники в файл.

Сам скрипт
#!/bin/sh
if ! [ -f ./waitlist.txt ]
then
echo " " >waitlist.txt
fi

for strip in `awk '{print $1}' /var/www/httpd-logs/xxxxx.access.log | sort | uniq -c |sort -hr|awk '{if($1>1000){print $2}}'`

do
findd=`grep -e "$strip" waitlist.txt`
if [ -n $findd ]
then
<------>`cat $strip >> blacklist.txt`
<------>echo $strip
fi
done

помогите прозреть)

diff в разные файлы., !*! pavlinux, (Shell скрипты) 21-Апр-17, 01:53  [ | | | ] [линейный вид] [смотреть все]
1. Надо сделать .diff/.patch, но не простой, а волшебный - чтоб "далёкие" изменения
даже в одном файле писались бы в раздельные файлы.

Пример: sys.c.diff

Диапазон с исключением, !*! neekonoff, (Shell скрипты) 18-Апр-17, 02:25  [ | | | ] [линейный вид] [смотреть все]
Подскажите пжлста, как в shell указать что например подсеть 192.168.1.0/24 кроме адресов 192.168.1.50 и 192.168.1.60?
Или может быть дайте правильную формулирвку для гугления.
Спасибо.
  • Правильная формулировка для гугления - XY problem shell-у подсеть на х не нужн, !*! ACCA (ok), 04:33 , 18-Апр-17 (1)
    > Подскажите пжлста, как в shell указать что например подсеть 192.168.1.0/24 кроме адресов
    > 192.168.1.50 и 192.168.1.60?

    Правильная формулировка для гугления - "XY problem"

    shell-у подсеть на х* не нужна. Ты что-то другое имел в виду. Подумай и скажи толком, что ты хочешь сделать.

    сообщить модератору +/ответить
  • например так exclude 50,60обработку exclude вам естественно надо реализовать сам, !*! ss (??), 09:52 , 18-Апр-17 (2)
    > Подскажите пжлста, как в shell указать что например подсеть 192.168.1.0/24 кроме адресов
    > 192.168.1.50 и 192.168.1.60?
    > Или может быть дайте правильную формулирвку для гугления.
    > Спасибо.

    например так:
    exclude 50,60
    обработку exclude вам естественно надо реализовать самостоятельно в скрипте.
    например если доступ к адресам 192.168.1.0/24 у вас разворачивается в цикле-
    то добавить правило внутрь цикла-
    if exists exclude then nop (посмотрите как это реализуется в вашей версии shell)

    сообщить модератору +/ответить
  • всё зависит от контекста, смотря для чего это нужнонапример, для htaccess Rewri, !*! михалыч (ok), 12:53 , 18-Апр-17 (3) –1
    > Подскажите пжлста, как в shell указать что например подсеть 192.168.1.0/24 кроме адресов
    > 192.168.1.50 и 192.168.1.60?
    > Или может быть дайте правильную формулирвку для гугления.
    > Спасибо.

    всё зависит от контекста, смотря для чего это нужно

    например, для .htaccess
    RewriteCond %{REMOTE_ADDR} !192\.168\.1\.50
    RewriteCond %{REMOTE_ADDR} !192\.168\.1\.60
    RewriteCond %{REMOTE_ADDR} 192\.168\.1\.[1-254]

    можно вырубить и диапазон адресов
    RewriteCond %{REMOTE_ADDR} !10\.0\.[1-70]\.[1-254]

    для файервола ipfw в FreeBSD

    разрешить для всех в сети 192.168.1.0.24 кроме 50 и 60
    ipfw add 501 allow all from any to '192.168.1.0{1-49}'
    ipfw add 502 allow all from any to '192.168.1.0{51-59}'
    ipfw add 503 allow all from any to '192.168.1.0{61-254}'

    для файервола pf опять же в FreeBSD можно так
    pass in from !192.168.1.50

    если ip из черного списка можно объединить в меньшую подсеть,
    то иногда удобнее работать именно с подсетью сразу,
    например, нужно исключить ip 192.168.1.5/32 и 192.168.1.6/32
    тогда, объединив их в подсеть 192.168.1.4/30 можно исключать уже подсеть
    применительно к pf
    pass in from !192.168.1.4/30

    конечно, в таком случае мы жертвуем двумя адресам:
    на network 192.168.1.4 и на broadcast 192.168.1.7
    зато взамен получаем большую гибкость и меньшее количество правил

    как сказал ACCA
    > Подумай и скажи толком, что ты хочешь сделать

    и для чего

    сообщить модератору –1 +/ответить
Социальная сеть на C++, !*! анонимЪ, (C/C++) 05-Окт-15, 10:33  [ | | | ] [линейный вид] [смотреть все]
Уважаемые анонимусы опеннета, подскажите, как поступить. Написал социальную сеть на cpp (cgi), повторяет базовые возможности этого вашего вконтакте, плюс еще пару эксклюзивных фич, в качестве субд использовал sqlite + fts4, теперь не знаю что с ней делать.. Выкладывать исходники в сеть или стоит доработать и как-то выжать из нее доход? Ваше мнение//,
  • Давай еще смешные истории и анекдоты, у тебя они есть в запасе, я уверен , !*! PavelR (??), 11:23 , 05-Окт-15 (1) +2
    > Уважаемые анонимусы опеннета, подскажите, как поступить. Написал социальную сеть на cpp
    > (cgi), повторяет базовые возможности этого вашего вконтакте, плюс еще пару эксклюзивных
    > фич, в качестве субд использовал sqlite + fts4, теперь не знаю
    > что с ней делать.. Выкладывать исходники в сеть или стоит доработать
    > и как-то выжать из нее доход? Ваше мнение//,

    Давай еще смешные истории и анекдоты, у тебя они есть в запасе, я уверен.

    сообщить модератору +2 +/ответить
  • Забить sqlite почти не масштабируется , !*! universite (ok), 11:24 , 05-Окт-15 (2)
    > Уважаемые анонимусы опеннета, подскажите, как поступить. Написал социальную сеть на cpp
    > (cgi), повторяет базовые возможности этого вашего вконтакте, плюс еще пару эксклюзивных
    > фич, в качестве субд использовал sqlite + fts4, теперь не знаю
    > что с ней делать.. Выкладывать исходники в сеть или стоит доработать
    > и как-то выжать из нее доход? Ваше мнение//,

    Забить. sqlite почти не масштабируется.

    сообщить модератору +/ответить
  • Вот так это выглядит примерно, вглубь лезть не стал http postimg org image , !*! анонимЪ (?), 21:32 , 05-Окт-15 (13) –1
    Вот так это выглядит примерно, вглубь лезть не стал....

    http://postimg.org/image/s9wcdr0q9/


    сообщить модератору –1 +/ответить
  • Гришин и Мильнер бьются в истерике и ищут покупателя для своей поделки , !*! Square1 (?), 21:38 , 05-Окт-15 (14)
    > Уважаемые анонимусы опеннета, подскажите, как поступить. Написал социальную сеть на cpp
    > (cgi), повторяет базовые возможности этого вашего вконтакте, плюс еще пару эксклюзивных
    > фич, в качестве субд использовал sqlite + fts4, теперь не знаю
    > что с ней делать.. Выкладывать исходники в сеть или стоит доработать
    > и как-то выжать из нее доход? Ваше мнение//,

    Гришин и Мильнер бьются в истерике и ищут покупателя для своей поделки.

    сообщить модератору +/ответить
  • Денис Попов, перелогиньтесь , !*! universite (ok), 22:19 , 05-Окт-15 (20) +1
    > Уважаемые анонимусы опеннета, подскажите, как поступить. Написал социальную сеть на cpp
    > (cgi), повторяет базовые возможности этого вашего вконтакте, плюс еще пару эксклюзивных
    > фич, в качестве субд использовал sqlite + fts4, теперь не знаю
    > что с ней делать.. Выкладывать исходники в сеть или стоит доработать
    > и как-то выжать из нее доход? Ваше мнение//,

    Денис Попов, перелогиньтесь!

    сообщить модератору +1 +/ответить
  • Так и не могу понять, что смутило анонимов BSD httpd cgi sqlite fts4 g, !*! анонимЪ (?), 00:30 , 06-Окт-15 (28) –1
    > Уважаемые анонимусы опеннета, подскажите, как поступить. Написал социальную сеть на cpp
    > (cgi), повторяет базовые возможности этого вашего вконтакте, плюс еще пару эксклюзивных
    > фич, в качестве субд использовал sqlite + fts4, теперь не знаю
    > что с ней делать.. Выкладывать исходники в сеть или стоит доработать
    > и как-то выжать из нее доход? Ваше мнение//,

    Так и не могу понять, что смутило анонимов? *BSD + httpd + cgi + sqlite/fts4 + gcc. Любой школьник осилит написать подобное. Видимо давно не писали что-то серьезнее скриптов типа rm -rf /tmp/*

    сообщить модератору –1 +/ответить
  • Хоть и не анонимус, но В глобальных масштабах ваша система работать не сможет , !*! XAnder (ok), 12:51 , 06-Окт-15 (34) +1
    Хоть и не анонимус, но...

    В глобальных масштабах ваша система работать не сможет по понятным причинам, уже разобранным тут. А кому и для чего нужна социальная сеть не в глобальных масштабах? И чтобы этому «кому» была от неё прибыль? Ответьте на эти вопросы и найдёте покупателя.

    Для личных контактов есть мыло и ворох мессеждеров. В корпоративном сегменте — то же самое плюс дополнительные средства, свои в каждой «корпорации», под неё заточенные, как правило. Хотите стать таким средством? Пилите под конкретную контору. Но там не котиков постить, там работать люди должны. В общем, сомнительно всё это.

    сообщить модератору +1 +/ответить
  • Благодарю за ответы Тему можно закрыть , !*! анонимЪ (?), 16:34 , 06-Окт-15 (38) –1
    Благодарю за ответы. Тему можно закрыть.
    сообщить модератору –1 +/ответить
  • Опасно выкладывать адрес сети на растерзание анонимам Не долго на сотню потоков, !*! анонимЪ (?), 20:30 , 06-Окт-15 (46) –1
    > Уважаемые анонимусы опеннета, подскажите, как поступить. Написал социальную сеть на cpp
    > (cgi), повторяет базовые возможности этого вашего вконтакте, плюс еще пару эксклюзивных
    > фич, в качестве субд использовал sqlite + fts4, теперь не знаю
    > что с ней делать.. Выкладывать исходники в сеть или стоит доработать
    > и как-то выжать из нее доход? Ваше мнение//,

    Опасно выкладывать адрес сети на растерзание анонимам. Не долго на сотню потоков флуда нарваться с непривычки.

    сообщить модератору –1 +/ответить
  • Оглянитесь, возникла проблема Мозг многих занят лишь одним из ко, !*! анонимЪ (?), 20:40 , 06-Окт-15 (49) –1
    > Уважаемые анонимусы опеннета, подскажите, как поступить. Написал социальную сеть на cpp
    > (cgi), повторяет базовые возможности этого вашего вконтакте, плюс еще пару эксклюзивных
    > фич, в качестве субд использовал sqlite + fts4, теперь не знаю
    > что с ней делать.. Выкладывать исходники в сеть или стоит доработать
    > и как-то выжать из нее доход? Ваше мнение//,

    Оглянитесь, возникла проблема..... Мозг многих занят лишь одним..... @#$%^ из контакта. Есть решение...

    сообщить модератору –1 +/ответить
  • Кто не примет связку BSD httpd sqlite c обречен на гибель и флуд во 100, !*! анонимЪ (?), 20:52 , 06-Окт-15 (52) –1
    > Уважаемые анонимусы опеннета, подскажите, как поступить. Написал социальную сеть на cpp
    > (cgi), повторяет базовые возможности этого вашего вконтакте, плюс еще пару эксклюзивных
    > фич, в качестве субд использовал sqlite + fts4, теперь не знаю
    > что с ней делать.. Выкладывать исходники в сеть или стоит доработать
    > и как-то выжать из нее доход? Ваше мнение//,

    Кто не примет связку *BSD + httpd + sqlite + c++ обречен на гибель и флуд во 100 потоков. ?:%;№№@

    сообщить модератору –1 +/ответить
  • Так как теперь понятно, что эта соцсеть немедленных коммерческих перспектив не и, !*! Vjatcheslav (?), 12:34 , 26-Ноя-16 (53)
    > Уважаемые анонимусы опеннета, подскажите, как поступить. Написал социальную сеть на cpp
    > (cgi), повторяет базовые возможности этого вашего вконтакте, плюс еще пару эксклюзивных
    > фич, в качестве субд использовал sqlite + fts4, теперь не знаю
    > что с ней делать.. Выкладывать исходники в сеть или стоит доработать
    > и как-то выжать из нее доход? Ваше мнение//,

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

    сообщить модератору +/ответить


Как подсчитать статистику траффика по каждому домену?, !*! universite, (Shell скрипты) 13-Мрт-17, 00:43  [ | | | ] [линейный вид] [смотреть все]
Есть несколько системных пользователей.
У каждого запущено по 10-ку сайтов.
В какой-то момент наблюдаются пики траффика и надо определить с-на какой это сайт.
Для всех сайтов пишутся access логи.

Ткните ссылку на скрипт или утилитку для подсчета числа отданных байт (с сортировкой или без) например с 12 часов дня в течении 15 минут.

P.S. Использовать Netflow нет возможности.

Python библитека для Git, !*! Aik, (Python) 21-Фев-17, 20:00  [ | | | ] [линейный вид] [смотреть все]
Какую Python библиотеку выбрать для работы с Git?
Для 2.7 и для 3 одну и ту же?
Непонятки с TTY, !*! grizzlynet, (Shell скрипты) 15-Фев-17, 17:18  [ | | | ] [линейный вид] [смотреть все]
Привет, коллеги! На удаленном хосте sudo-права есть. Передаю SSH ключ -t  чтоб аллоцировал терминал. Непонятно по какой причине нет tty! Возвращаяется ошибка: sudo: нет tty и не указана программа askpass.

#!/bin/bash
lhost=$1
for host in `cat $lhost`
do
cat ~/.ssh/id_rsa.pub | ssh -t user@$host 'sudo mkdir -p .ssh;
                                              sudo touch .ssh/authorized_keys;
                                              sudo cat >> .ssh/authorized_keys;
                                              sudo chmod 700 ~/.ssh;
                                              sudo chmod 600 ~/.ssh/authorized_keys'

done


Класс символов /\C/ в рег. выражениях устарел. как заменить ?, !*! VladimirV, (Perl) 13-Фев-17, 17:57  [ | | | ] [линейный вид] [смотреть все]
имеем ОС Ubuntu 16.04 и perl v5.22.1
проблема
не стартует сервис, завершается с ошибкой
\C is deprecated in regex; marked by <-- HERE in m/\C <-- HERE / at /usr/share/webgui/lib/WebGUI/Asset/Wobject/Poll.pm line 243.

вот строки с 243
243 if ($self->get('a'.$i) =~ /\C/) {
244            $answers .= $self->getValue("a".$i)."\n";
245        }

хотя на perldoc.perl.org пишут
The /\C/ regular expression character class is deprecated. From perl 5.22 onwards it will generate a warning, and from perl 5.24 onwards it will be a regular expression compiler error. If you need to examine the individual bytes that make up a UTF8-encoded character, then use utf8::encode() on the string (or a copy) first.
т.е. должно быть только предупреждение

нашел такой пример
+# XXX FIXME escape_char is buggy as it assigns meaning to the string's storage format.
sub escape_char {
-    return join '', @URI::Escape::escapes{$_[0] =~ /(\C)/g};
+    if (utf8::is_utf8($_[0])) {
+        my $s = $_[0];
+        utf8::encode($s);
+        unshift(@_, $s);
+    }
+
+    return join '', @URI::Escape::escapes{$_[0] =~ /(.)/sg};
}

кто может предложить как заменить регулярное выражение в строке 243

  • Насколько я понимаю, здесь всего лишь проверяется, что get возвращает непустую с, !*! XAnder (ok), 12:48 , 14-Фев-17 (1)
    > вот строки с 243
    > 243 if ($self->get('a'.$i) =~ /\C/) {
    > 244            $answers .= $self->getValue("a".$i)."\n";
    > 245        }

    Насколько я понимаю, здесь всего лишь проверяется, что get возвращает непустую строку, поскольку /\C/ соответствует любой строке, содержащей хотя бы один байт, то есть любой непустой строке. \C — это низкоуровневая штука, понятно, почему её искореняют.

    Напрашивается замена на «ne ''».

    >[оверквотинг удален]
    >  sub escape_char {
    > -    return join '', @URI::Escape::escapes{$_[0] =~ /(\C)/g};
    > +    if (utf8::is_utf8($_[0])) {
    > +        my $s = $_[0];
    > +        utf8::encode($s);
    > +        unshift(@_, $s);
    > +    }
    > +
    > +    return join '', @URI::Escape::escapes{$_[0] =~ /(.)/sg};
    >  }

    Тут немного не про то, и как-то слишком намудрено по-моему: если строка в UTF-8, её снова кодируют в UTF-8. Хотя, контекста не видно, может тут так оно и надо.

    сообщить модератору +/ответить
Скрипт для совмещения строк, !*! Uche, (Shell скрипты) 11-Фев-17, 01:07  [ | | | ] [линейный вид] [смотреть все]
Доброго времени.
Имею некое отношение к составлению различных заданий для учащихся. В познавательных для себя целях решил использовать баш как основу для автоматизации некоторых процессов. Вот в чем суть, если абстрагировано. Имеется некий файл А в котором содержатся имена. Имеется некий файл Б, в котором имеются фамилии. Задача в том, чтобы создать из этих двух файлов файл В, где каждая из строк файла А совмещалась с каждой строкой файла Б, т.е. в файле В каждое имя было совмещено с каждой фамилией. Например
Файл А:
1
2
3

Файл Б:
а
б
в

Файл В (результат совмещения):









Сейчас на таком застрял на этом:
echo > C
STR1=`wc -l a`
NUM=0
S1=`cat A|head -$NUM`
S2=`cat B|head -$NUM`
until [ $NUM -lt $STR1 ]
do
let NUM=$NUM+1
echo "$S1$S2" >> C
done

И тут моих знаний пока не хватает, чтобы понять, как вместо построчного совмещения, получить строки каждая+каждая. Может кто подсказать?


Два дня ЛОР героически сражался с Rsync..., !*! chukcha, (Shell скрипты) 11-Дек-16, 00:49  [ | | | ] [линейный вид] [смотреть все]
Понадобилось решить, казалось бы, очень простую задачу - осуществить резервное копирование с диска на диск,
исключив из него [u]папки и файлы, лежащие ниже некоторых задаваемых папок[/u].
Причем, обязательное условие - эти папки должны задаваться АБСОЛЮТНЫМИ путями.
Первым делом быстренько накидал свой вариант

rsync    -avpH      \
--exclude="home/chukcha/.cache/mozilla/firefox/*"                    \
--exclude="home/chukcha/.config/chromium/Default/*"                  \
--exclude="home/chukcha/.cache/moonchild productions/pale moon/*"    \
/home   /mnt/sdc1/

Но я очень плохо разбираюсь в премудростях синтаксиса Rsync, поэтому не удивительно, что он не заработал.
Тогда обратился за помощью к легендарному ЛОРУ - https://www.linux.org.ru/forum/general/13066819

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


PS. Маленькая просьба: только пожалуйста, не надо меня учить "как делать", как это пытались делать лоровцы, а просто приведите рабочий скрипт.
Хотя я понимаю, что учить и тыкать в маны гораздо легче, но когда доходит до конкретики, так все разбегаются в разные стороны.


  • ну ты это пойди и расскажи авторам rsync-aв --exclude пути всегда относительны b, !*! олхнтп (?), 01:02 , 11-Дек-16 (1)
    >Причем, обязательное условие - эти папки должны задаваться АБСОЛЮТНЫМИ путями.

    ну ты это пойди и расскажи авторам rsync-a

    в --exclude пути всегда относительны base dir

    rsync    -avpH      \
    --exclude="/chukcha/.cache/mozilla/firefox/*"                    \
    --exclude="/chukcha/.config/chromium/Default/*"                  \
    --exclude="/chukcha/.cache/moonchild productions/pale moon/*"    \
    /home   /mnt/sdc1/

    сообщить модератору +/ответить
  • https gist github com typomedia 6484306но там исключения отдельно вынесены, !*! Аноним (-), 06:24 , 11-Дек-16 (8)
    https://gist.github.com/typomedia/6484306

    но там исключения отдельно вынесены

    сообщить модератору +/ответить
  • rsync обрабатывает маски относительно корня копирования, поэтому самым простым в, !*! Freddy Cuper (?), 08:36 , 11-Дек-16 (9) +1
    rsync обрабатывает маски относительно корня копирования, поэтому самым простым выходом будет запись списка исключения в файл и использование простого скрипта, который вырежет корень из имён путей в этом списке, а потом запустит rsync с передачей изменённого набора правил директивой --exclude-from

    типа
    cat orig_exclude.txt| sed 's/^\/home//'>new_exclude.txt
    rsync    -avpH --exclude-from=new_exclude.txt /home   /mnt/sdc1/

    Второй вариант указать в качестве исходного пути "/" и добавить маски  "+ /home/" и "- *" в список исключений, при которых несмотря на указания пути "/" копироваться будет только /home.

    сообщить модератору +1 +/ответить


Создать скрипт помогите, !*! pilotik, (Shell скрипты) 17-Янв-17, 14:46  [ | | | ] [линейный вид] [смотреть все]
Есть файл следующего содержания

5.000000 90.000000 0.144003 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.000000 90.000000 0.001848 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000

есть переменные x = 20.2 и у =30.3.
необходимо найти первое и второе слово в строке и сложить с переменными
в итоге должны получить файл

25.200000 120.300000 0.144003 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
30.200000 120.300000 0.001848 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000


  • man exprman bcman printfдля особых ценителей возможно на awk, !*! universite (ok), 22:39 , 17-Янв-17 (1)
    > Есть файл следующего содержания
    > 5.000000 90.000000 0.144003 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
    > 10.000000 90.000000 0.001848 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
    > есть переменные x = 20.2 и у =30.3.
    > необходимо найти первое и второе слово в строке и сложить с переменными
    > в итоге должны получить файл
    > 25.200000 120.300000 0.144003 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
    > 30.200000 120.300000 0.001848 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000

    man expr
    man bc
    man printf

    для особых ценителей возможно на awk

    сообщить модератору +/ответить


компановка скрипта, !*! Alex, (Shell скрипты) 20-Янв-17, 13:00  [ | | | ] [линейный вид] [смотреть все]
подскажите, как бы вывод cat в notify-send запихнуть ?

пробую так:
$ cat file | notify-send
No summary specified.

соответственно получаю ..

запуск процесса и получение его PID, !*! hamel1on, (Perl) 20-Янв-17, 11:36  [ | | | ] [линейный вид] [смотреть все]
выполняю $procnum=`redir --lport=0 --caddr=$srcip --cport=$port >/dev/null &`;
$procnum пуст.
подскажите как заставить работать?
sed вывести переменную содержащую знаки пунктуации., !*! DiJey, (Shell скрипты) 19-Янв-17, 16:59  [ | | | ] [линейный вид] [смотреть все]
Подскажите, кто знает сравниваю строки
[ ! "$BD_CFG_YML" == "$CONTEXT" ] && sed -i "s/dbConnString: .*/dbConnString: ${CONTEXT}/g" file

как вставить ${CONTEXT} если в нем присутствуют управляющие символы т.е. могут в строке содержатся / " т.п.

помогите с простенькой задачкой, !*! visitor, (Perl) 14-Янв-17, 19:24  [ | | | ] [линейный вид] [смотреть все]
всем привет,

есть 2 файла:
1. список мыл
gagag@domain1.com
jdjdjd@domain2.com
...
kdkdk@domainX.com

2. список доменов:
domain1.com
domain2.com
...
domainX.com

задача сосотоит в том чтобы выкинуть все мыла из листа 1 домены которых совпали с доменами из листа 2

grep -v работает ужасно долго при больших листах - уверен перл справиться намного быстрее.

Спасибо!

  • Это в каком классе сейчас такие примитивные задачки сейчас задают , !*! Led (ok), 21:27 , 14-Янв-17 (1)
    Это в каком классе сейчас такие примитивные задачки сейчас задают?
    сообщить модератору +/ответить
  • gt оверквотинг удален Иногда скорость не имеет решающего значения Есть задачи, !*! Square1 (?), 22:35 , 14-Янв-17 (2)
    >[оверквотинг удален]
    > 2. список доменов:
    > domain1.com
    > domain2.com
    > ...
    > domainX.com
    > задача сосотоит в том чтобы выкинуть все мыла из листа 1 домены
    > которых совпали с доменами из листа 2
    > grep -v работает ужасно долго при больших листах - уверен перл справиться
    > намного быстрее.
    > Спасибо!

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

    Что же до скорости....
    Самое быстрое решение (если объем файлов действительно велик) - будет загнать оба списка в базу данных а потом сконструировать примитивный select ... like in (select ...)

    Если объем файлов слишком велик для этого метода- то использовать шардинг.

    Если объем файлов реально велик - то вероятно надо использовать MapReduce.

    Что же до перла - то загрузка в перл больших объемов данных приводит к существенному потреблению памяти. Это надо помнить.

    сообщить модератору +/ответить
  • Ну что же, сам напросился - получай code usr bin perlopen DOMAIN, path t, !*! михалыч (ok), 08:45 , 15-Янв-17 (3)
    Ну что же, сам напросился - получай ))

    #!/usr/bin/perl

    open (DOMAIN, /path/to/file/domain);
    @domain{<DOMAIN>}=();

    open (MAIL, /path/to/file/mail);
    while (<MAIL>) {
        /^.*\@(.*)/;
        print unless exists $domain{"$1\n"};
    }


    насчет жручести памяти в перле будем считать тебя предупредили выше
    сообщить модератору +/ответить
Домашнее задание на Python, !*! Dimon2016, (Python) 27-Апр-16, 08:54  [ | | | ] [линейный вид] [смотреть все]
Устраиваюсь на работу в одну компанию, так вот мне дали задание (сроки выполнения неделя) написать программу на Python по парсингу лога, будущий работодатель в курсе из моего резюме, что я не знаю Python да и вообще очень слаб в программировании, но не смотря на это мне все равно поставили задачу.

Имя входного файла: input .txt
Имя выходного файла: output. txt
Сервис состоит из фронтенда и бекендов. Бекенды бывают нескольких типов. Для увеличения отказоустойчивости бекенды одного типа реплицированы и составляют группу реплик (далее ГР). Бекенды из одной ГР одинаковы, и для формирования выдачи фронтенду достаточно получить от¬вет хотя бы с одного бекенда из каждой ГР. Фронтенд может сделать несколько попыток обращения к бекендам ГР, пока не получит результат.
У фронтенда есть три фазы обработки запроса:
1) Опрос бекендов
2) Мерджинг результатов, полученных с бэкендов
3) Отправка результатов пользователю      
В случае, когда фаза опроса бекендов занимает слишком много времени, фронтенд может при¬нудительно завершить опрос и перейти к фазе мерджинга результатов с неполным набором данных. В процессе работы фронтенд пишет в лог файл события, возникающие при обработке запроса. Вам нужно по данному логу событий посчитать:
1.    95-й перцентиль времени обработки запросов фронтендом
2.    Найдите 10 запросов, в которых фаза отправки результатов пользователю была максимальной. В качестве ответа выдайте 10 идентификаторов запросов.
3.    Для каждого бекенда, отметившегося в логе, посчитайте количество обращений к нему, коли¬чество и типы ошибок, возникших при работе с ним.
4.    Посчитайте количество запросов к фронтенду на которые фронтенд не смог собрать данные со всех ГР.

                       Формат входных данных
Входной файл состоит из строчек в формате: <время события> <идентификатор запроса на фронтенд> <тип события> [<дополнительные параметры>]
Разделителем полей выступает символ табуляции.
Строки отсортированы по времени события — UNIX timestamp в микросекундах. Идентификатор запроса это уникальное целое число. Отфильтровав лог по записям с выбран¬ным идентификатором запроса можно узнать всё об обработке соответствующего пользовательского запроса.
Типы событий:
StartRequest
Начало обработки запроса
BackendConnect
Установка tcp соединения с бекендом.
Дополнительные параметры: <номер ГР> <URL запроса на бекенд>
BackendRequest
Отправка запроса на бекенд. Дополнительные параметры: <номер ГР>
BackendOk
Отметка успешного получения ответа с бекенда. Работа с ГР завершается. Дополнительные параметры: <номер ГР>
BackendError
Ошибка работы с бекендом. Следует после BackendConnect или BackendRequest. Дополнительные параметры: <номер ГР> <строка с текстом возникшей ошибки>
StartMerge
Означает конец фазы опроса бекендов и начало фазы мерджа результатов.
Start SendResult
Означает конец фазы мерджа и начало отправки результата пользователю.
Finis hRequest
Конец обработки запроса.

Формат выходных данных
Выведите в свободной фоме ответ на поставленные вопросы.
Время обработки пользовательского запроса вычисляется как время между событиями StartRequest и FinishRequest. Подсмотреть, что такое 95-й перцентиль можно тут: ru.wikipedia.org/wiki/Квантиль
Время ответа пользователю можно вычислить как разницу времени между событиями Start SendResult и FinishRequest.
Бекенды, с которыми производилась работа можно узнать разобрав URL в событии BackendConnect. В качестве типа ошибки можно использовать строковое представление ошиб¬ки в событии BackendError.
Запросы, на которые ответили не все ГР не имеют событий BackendOK хотя бы для одной из своих ГР.
                              Система оценки
Мы ожидаем, что решение будет оформленно на Python 2.7.
Модно пользоваться любыми библиотеками с pypi, но не забудьте описать зависимости в pip-requirements.txt Также, мы будем признательны, если, при прочих равных, вы выберете pure python библиотеки себе в зависимости — нам это сильно упрощает проверку.
Вобщем случае событийный лог может быть большим, программа не должна зачитывать весь лог в память.
Постарайтесь оптимизировать свою программу по памяти и процессору.

И приложены несколько файлов с логами, вот примерные строчки одного из них:

1390137366792361    3    BackendConnect    9    http://backend9-011.yandex.ru:1612/search?
1390137366792367    3    BackendConnect    19    http://backend19-004.yandex.ru:1247/search?
1390137366792392    2    BackendConnect    5    http://backend5-008.yandex.ru:1611/search?
1390137366792407    3    BackendConnect    16    http://backend16-014.yandex.ru:1120/search?
1390137366792410    3    BackendConnect    1    http://backend1-006.yandex.ru:1924/search?
1390137366792421    2    BackendConnect    15    http://backend15-013.yandex.ru:1334/search?
1390137366792467    3    BackendConnect    17    http://backend17-011.yandex.ru:1197/search?
1390137366792469    3    BackendConnect    6    http://backend6-004.yandex.ru:1347/search?
1390137366792480    3    BackendConnect    11    http://backend11-013.yandex.ru:1457/search?
1390137366792481    3    BackendConnect    0    http://backend0-007.yandex.ru:1080/search?
1390137366792516    3    BackendConnect    3    http://backend3-007.yandex.ru:1203/search?
1390137366792517    4    StartRequest
1390137366792524    3    BackendConnect    8    http://backend8-006.yandex.ru:1373/search?
1390137366792622    3    BackendConnect    12    http://backend12-006.yandex.ru:1028/search?
1390137366792627    3    BackendConnect    4    http://backend4-009.yandex.ru:1959/search?
1390137366792662    3    BackendConnect    10    http://backend10-013.yandex.ru:1888/search?
1390137366792731    3    BackendConnect    5    http://backend5-001.yandex.ru:1268/search?
1390137366792745    3    BackendConnect    18    http://backend18-004.yandex.ru:1605/search?
1390137366792896    3    BackendConnect    14    http://backend14-006.yandex.ru:1730/search?
1390137366794324    4    BackendConnect    13    http://backend13-006.yandex.ru:1103/search?
1390137366794346    4    BackendConnect    18    http://backend18-003.yandex.ru:1852/search?
1390137366794361    4    BackendConnect    12    http://backend12-012.yandex.ru:1910/search?
1390137366794364    4    BackendConnect    17    http://backend17-010.yandex.ru:1518/search?
1390137366794374    4    BackendConnect    19    http://backend19-011.yandex.ru:1276/search?
1390137366794379    4    BackendConnect    11    http://backend11-013.yandex.ru:1457/search?
1390137366794409    4    BackendConnect    6    http://backend6-001.yandex.ru:1590/search?
1390137366794438    4    BackendConnect    2    http://backend2-008.yandex.ru:1199/search?
1390137366794448    4    BackendConnect    7    http://backend7-005.yandex.ru:1103/search?
1390137366794461    4    BackendConnect    8    http://backend8-010.yandex.ru:1171/search?
1390137366794565    4    BackendConnect    9    http://backend9-008.yandex.ru:1060/search?
1390137366794597    4    BackendConnect    5    http://backend5-004.yandex.ru:1121/search?
1390137366794602    4    BackendConnect    4    http://backend4-007.yandex.ru:1172/search?
1390137366794628    4    BackendConnect    0    http://backend0-007.yandex.ru:1080/search?
1390137366794657    4    BackendConnect    15    http://backend15-012.yandex.ru:1776/search?
1390137366794659    4    BackendConnect    14    http://backend14-009.yandex.ru:1036/search?
1390137366794662    4    BackendConnect    16    http://backend16-008.yandex.ru:1349/search?
1390137366794694    4    BackendConnect    3    http://backend3-008.yandex.ru:1008/search?
1390137366794727    4    BackendConnect    10    http://backend10-005.yandex.ru:1086/search?
1390137366794829    4    BackendConnect    1    http://backend1-010.yandex.ru:1746/search?
1390137366797781    5    StartRequest

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

  • ты не пробовал искать работу в которой понимаешь или ты решил что кто-то буде, !*! Pahanivo (ok), 09:14 , 27-Апр-16 (1) +2
    > написать программу на Python по парсингу лога
    > и вообще очень слаб в программировании, но не смотря на это
    > мне все равно поставили задачу.

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

    сообщить модератору +2 +/ответить
  • О тестовое в яндекс Не считай перцентиль через math, им не понравится , !*! Nicknnn (ok), 14:38 , 01-Май-16 (13)
    О! тестовое в яндекс. Не считай перцентиль через math, им не понравится.
    сообщить модератору +/ответить


строка в обратном порядке без sed и awk, !*! grizzlynet, (Shell скрипты) 05-Дек-16, 09:27  [ | | | ] [линейный вид] [смотреть все]
Всем привет! Есть у кого варианты вывода echo "10:9:8:7:6:5:4:3:2:1" > file, без использования sed и awk, в обратно порядке. Результат 1:2:3:4:5:6:7:8:9:10 ?


Cron + shell, !*! SuicideMouse, (Shell скрипты) 19-Дек-16, 09:34  [ | | | ] [линейный вид] [смотреть все]
Не работает shell скрипт в кроне
Вот shell file:
#!/bin/sh
HOST='server ip'
USER='user'
PASSWD='password'
FILE ='*.mbz'

chmod - R 0777 /var/www/html/moodle/backup

Ftp -n $HOST <<EOF
quote USER $USER
quote PASS $PASSWD
cd moodle_backup
Put $FILE
Quit
EOF
Exit 0


Теперь и сам крон:crontab -e

20 8 * * * /usr/bin/sh /home/sysadmin/test.sh


В чем проблема? В ручную запускается, через крон нет

Найти юзера, что зашел в систему локально, !*! Vasya_Alibabaevich, (Разное) 15-Дек-16, 23:57  [ | | | ] [линейный вид] [смотреть все]
В общем, сабж. Имеется фоновый процесс, запускающийся при включении компьютера. Ему следует найти того пользователя, который зашел в систему локально, т.е. того, кто сидит за этим компьютером, двигает мышью, стучит по клавишам и смотрит в его монитор.
Я сначала думал отличить его от остальных по локальному ip, но уж как-то коряво получается.
Наверняка есть более простой и прямой способ.


Найти строку в файле и удалить предыдущую перед ней, !*! XaKoN, (Shell скрипты) 12-Дек-16, 17:31  [ | | | ] [линейный вид] [смотреть все]
Собственно сабж. Есть csv файл:

Comprehensive Order Report
«Order Type»,«Operating Unit»
«Standard - DIRECT A», «International Business Machines Corporation»
«Standard - DIRECT B», «International Business Machines Corporation»
«Standard - DIRECT C», «International Business Machines Corporation»
«Standard - DIRECT D», «International Business Machines Corporation»

Переодически в качестве первой строки в нём появляется строка Comprehensive Order Report. Необходимо удалить именно её, когда она есть в файле. «Order Type»,«Operating Unit» - название полей и всегда содержатся в файле т.е. можно опираться на них.

Пока вижу решение только двумя способами: 1) найти «Order Type»,«Operating Unit» и вывести их всё что дальше в файле до его конца.
2) найти «Order Type»,«Operating Unit» и удалить всё что выше.

Пробовал использовать sed для этих целей, но ничего не вышло.

вставить перевод  строки через каждые 5 слов, !*! Badaboom, (Shell скрипты) 25-Ноя-16, 15:25  [ | | | ] [линейный вид] [смотреть все]
всем привет
пишу скрипт отслеживающий превышение очереди на выход почтового сервера
OUT=exim -bp| exiqsumm
в $OUT весь выхлоп в одну строку
если слать алерт по почте, плохо читаемо.
собственно вопрос: как вставить с помощью sed или awk в строку перевод строки каждые пять слов (в общем случае символы ограниченные пробелами)?
если есть варианты получше отлова превышения порога, буду рад любому совету.


C Перенаправить файл в дочерний процесс обработать tail и, !*! mesmeridze, (C/C++) 15-Ноя-16, 08:35  [ | | | ] [линейный вид] [смотреть все]
Добрый день коллеги.
Поставили такую задачу. Нужно из родительского в дочерний процесс передать некий файл, там его пропустить чере more / head / tail кому что нравится. Затем полученный вывод вернуть родителю ну и родитель собственно должен этот текст вывести на экран.
(институтская задача не бейте тапками)

Если я правильно понял использовать нужно fork, в родителе файл можно открыть при помощи fopen и передать дескриптор дочернему процессу. Поскольку как я читал дескриптор будет доступен последнему, то остаётся решить вопрос как это вот всё скормить перечисленным утилитам, а потом весь этот вывод вернуть родителю. Я могу это сделать через system, но чует моё сердце есть не рагульский вариант.

Подскажите пожалуйста как правильно это сделали Вы.
Спасибо

Проблема с регулярными выражениями в bash-скрипте, !*! drew53, (Shell скрипты) 13-Ноя-16, 20:26  [ | | | ] [линейный вид] [смотреть все]
Здравствуйте, гуру!
Прошу сильно не пинать, так как, можно сказать, только начал изучать bash-scripting, а регулярные выражения для меня -- так это просто творение сотоны и язык не этой планеты...)))))

Пытаюсь решить простую (как мне казалось) задачку: есть переменная, содержащая строчные буквы, завершаемые цифрами на конце. Все без пробелов, например, blabla123. Нужно получить порядковый номер blabl'ы, то есть цифровой хвост.

Бьюсь полдня, ничего не понимаю((( Вобщем, объясните, пожалуйста, кто-нибудь: следующий код дает вот какие результаты.


stringZ=abcABC123ABCabc
echo `expr match "$stringZ" '\(.[b-c]*[A-Z]..[0-9]\)'`

stringZ=blabla12
echo `expr match "$stringZ" '\([a-z]\)'`
echo `expr match "$stringZ" '\([a-z]\+\)'`
echo `expr match "$stringZ" '\([0-9]\)'`
echo `expr match "$stringZ" '\([0-9]\+\)'`

Результат работы скрипта:
abcABC1
b
blabla
<пустая строка>
<пустая строка>

То есть, шаблон [0-9] в первом примере (честно слизанном с Вашего портала =) находит цифры в строке. Шаблон [a-z] в моем случае также работает верно, и даже [a-z]+. А вот ни[0-9], ни [0-9]+ в моем случае цифирь не видит "наглухо"(((((

Я понимаю, конечно, что ошибка в ДНК))), но в какое место скрипта она реплицировалась??? Всю голову сломал((( Выручайте?!
Заранее благодарю!

 
Пометить прочитанным Создать тему
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Архив | Избранное | Мое | Новое | | |



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру