The OpenNET Project / Index page

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



Создать новую тему
 - Свернуть нити
Пометить прочитанным
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Архив | Избранное | Мое | Новое | | |  
Форум Программирование под UNIX
Прояснить пару юрид. моментов, !*! fail_, (Разное) 20-Май-16, 13:55  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
вообщем,
после двухдневных дебатов с коллегами, хотелось бы мнения со стороны услышать..

Лицензия на предоставления сервиса(ов) с заказным ПО:

думается (a)GPL v. 3 (+ 1)
суть плюс 1 к версии в чем видится:

в запрете передачи пользовательских данных на возмездной и/или бевозмездной основе  третьим лицам

это возможно ?

P.S.:
заказчику - абсолютли пофигстен, ПО и его качестовм доволен

Led key, !*! Andrei_redd, (C/C++) 17-Май-16, 19:04  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Ткните носом где найти адреса регистров светодиодов клавиатуры ?


скрипт не видит библиотеку., !*! PinkMan, (Python) 12-Май-16, 02:17  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Здравствуйте уважаемые Питонщики!

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

В процессе моей жизнедеятельности:) возникла необходимовть понять как работает программка миддлер написанная на питоне. доступна тут:https://code.google.com/archive/p/middler/source/default/sou...

а конкретней ее самая первая версия 0.95r1

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

завис на том что один из модулей выдает вот такую ошибку:

root[~/0.95r1/middlerlib/plugins]# ./plugin-keylogger-INGUARDIANS-ONLY.py
Traceback (most recent call last):
  File "./plugin-keylogger-INGUARDIANS-ONLY.py", line 4, in <module>
    import support.header as header
  File "/root/0.95r1/middlerlib/plugins/support/header.py", line 3, in <module>
    from JLog import *
ImportError: No module named JLog

root[~/0.95r1/middlerlib/plugins]# apt-cache search JLog
libslf4j-java - Simple Logging Facade for Java

root[~/0.95r1/middlerlib/plugins]# apt-get install libslf4j-java
Reading package lists... Done
Building dependency tree      
Reading state information... Done
libslf4j-java is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root[~/0.95r1/middlerlib/plugins]#

тоесть библиотека для явы установлена но питон ее не видит.

как это исправить?

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

прошу тех кто знает дать готовое решение или пнуть меня в нужном направлении.

выше вывод только одного плагина, полный текст ошибок ниже:

root[~/0.95r1]# python ./middler.py -h
>>plugindir: /root/0.95r1/middlerlib/plugins<<

Error loading plugin plugin-metasploit-INGUARDIANS-ONLY.py
Traceback (most recent call last):
  File "/root/0.95r1/middlerlib/__init__.py", line 275, in <module>
    PLUGINS.append(__import__("middlerlib.plugins.%s"%filename[:-3], None, None, "middlerlib.plugins"))
  File "/root/0.95r1/middlerlib/plugins/plugin-metasploit-INGUARDIANS-ONLY.py", line 4, in <module>
    import support.header as header
  File "/root/0.95r1/middlerlib/plugins/support/header.py", line 3, in <module>
    from JLog import *
ImportError: No module named JLog
Error loading plugin plugin-keylogger-INGUARDIANS-ONLY.py
Traceback (most recent call last):
  File "/root/0.95r1/middlerlib/__init__.py", line 275, in <module>
    PLUGINS.append(__import__("middlerlib.plugins.%s"%filename[:-3], None, None, "middlerlib.plugins"))
  File "/root/0.95r1/middlerlib/plugins/plugin-keylogger-INGUARDIANS-ONLY.py", line 4, in <module>
    import support.header as header
  File "/root/0.95r1/middlerlib/plugins/support/header.py", line 3, in <module>
    from JLog import *
ImportError: No module named JLog
Error loading plugin plugin-beef-INGUARDIANS-ONLY.py
Traceback (most recent call last):
  File "/root/0.95r1/middlerlib/__init__.py", line 275, in <module>
    PLUGINS.append(__import__("middlerlib.plugins.%s"%filename[:-3], None, None, "middlerlib.plugins"))
  File "/root/0.95r1/middlerlib/plugins/plugin-beef-INGUARDIANS-ONLY.py", line 4, in <module>
    import support.header as header
  File "/root/0.95r1/middlerlib/plugins/support/header.py", line 3, in <module>
    from JLog import *
ImportError: No module named JLog
>> Had to set plugin directory relative to current dir - plugindir: ./plugins<<

Благодарю всех кто сможет помочь.

Оптимизация и удаление временных файлов, !*! globi, (Shell скрипты) 09-Май-16, 22:12  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Начал смотреть свои старые скрипты и понял что слишком много временных файлов делаю. Часть удалил, часть засунул в переменные. Вот что осталось

1) grep blabla /home/base.csv > /home/blabla.csv - ищу нужные строки в файле и сохраняю во временный
2) awk -F" *;" '$3< 9999' /home/blabla.csv > /home/blabla2.csv - далее ищу строки со значением меньше 9999 в третьем столбце и сохраняю во 2ой временный файл
3) cat /home/blabla2.csv | tr -d \" > /home/blabla3.csv - удаляю " и сохраняю в 3ий файл
4) awk -F" *;" ' {print "itog_"$1"-"$2"-"$9"     "$3} ' /home/blabla3.csv > /home/blabla4  - формирую запись из полученных значений в столбцах и опять же сохраняю в временный файл
5)sort -u /home/url_blabla > /home/blabla - сортирую и получаю итоговый файл

Выглядит как костыли которым крутят велосипед с квадратными колёсами.
В какую сторону посмотреть, что бы увидеть о чём почитать?)
Как я понял sed не работает с переменными или я не прав?

Разделитель в массиве, !*! globi, (Shell скрипты) 07-Май-16, 19:12  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Я что-то не понимаю. Делаю построчно чтение из файла в массивы, указываю разделитель :
Начинаю проверять на вывод с 2ого элемента и мне выводится начиная с 2ого символа


IFS=:
index=0
while read line; do
    array[$index]="$line"
    index=$(($index+1))
done < /home/ubuntu/arr
for ((a=0; a < ${#array[*]}; a++))
do
    echo "$a: ${array[$a]:1}"
done

То есть, вместо вывода
0: name2:name3:1234
1: name2:name3:1234
2: name2:name3:1234
3: name2:name3:1234

Мне выводится
0: ame1:name2:name3:1234
1: ame1:name2:name3:1234
2: ame1:name2:name3:1234
3: ame1:name2:name3:1234

Пробовал указать IFS разными способами  IFS=$':'  IFS=":"
Менял и сам разделитель на любой другой символ - результат тот же

Формат выводного файла музыки, !*! korbnik, (C/C++) 06-Май-16, 10:41  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Добрый день!

Вопрос для тех, кто использовал программирование для сочинения музыки, применяя обычные музыкальные ноты (до, ре, ми, фа, соль, ля, си) и их атрибуты (длительность, громкость, тембр). Какой лучше взять для этой цели формат файла, который будет на выходе программы, сочиняющая музыку, чтобы её можно было прослушать известными музыкальными редакторами (такими как Cubase, Guitar Pro 6, Finale, Sibelius, Encore, Cakewalk)?

P.S. Желательно чтобы был текстовый формат этого файла.

Заранее благодарен. Борис.

scanf ..., !*! Andrei_redd, (C/C++) 03-Май-16, 10:07  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Как правильно обрабатывать исключительные ситуации ?
Необходимо проверять вводимые данные, если данные от 1 - 10 то все норм, если иначе, то вывод "Введите цифру" от 1 - 10 " ....
В какой среде <*>, !*! Andrei_redd, (C/C++) 27-Апр-16, 12:04  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
В какой среде разработки лучше делать приложения C++ по Linux, с использованием библиотеки SFML ?
Домашнее задание на 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

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



Создание скрипта с выполнением программы, !*! roman51, (Shell скрипты) 16-Апр-16, 17:28  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Всем здрасьте. Только осваиваю скрипты, читаю вики на вашем чудесном сайте потихоньку. Появилась практическая необходимость создать скрипт, который использует стороннюю программу (форматирование). Суть следующая: я задаю в скрипте переменную i, которая будет означать любой файл в указанной директории с расширением format1. Используя стороннюю программу и цикл for, для переменной i, я пытаюсь выполнить форматирование в format2 c сохранением имени. Выглядит у меня так:

#!/bin/bash
i=/dir/*format1 #все файлы с форматом format1
for $i
do
cd /dir2/ #директория программы
./prog $i /dir3/$i.format2 #выход с сохранением имени
done
exit 0

Скрипт, как вы поняли, не работает. Помогите с освоением.

Perl и парсинг JSON + Dumper, !*! Andrey, (Perl) 27-Мрт-16, 12:01  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Всем привет,
Имею сложность с парсингом данных представленных в JSON.
#!/usr/bin/perl
use diagnostics;
use JSON::XS;
use Data::Dumper;

my $json_data='{
  "href" : "http://localhost/profiles",
  "items" : [
    {
      "href" : "http://localhost/id111",
      "Child" : {
        "name" : "Jack",
        "age" : "11",
        "pet" : "Cat"
      }
    },
    {
      "href" : "http://localhost/id303",
      "Child" : {
        "name" : "David",
        "age" : "8",
        "pet" : "Dog"
      }
      },
      {
      "href" : "http://localhost/id516",
      "Child" : {
        "name" : "Merry",
        "age" : "10",
        "pet" : "Hamster"
      }
    }
  ]
}';

print Dumper(decode_json ($json_data));

Вывод:
$VAR1 = {
          'href' => 'http://localhost/profiles',
          'items' => [
                       {
                         'href' => 'http://localhost/id111',
                         'Child' => {
                                      'pet' => 'Cat',
                                      'name' => 'Jack',
                                      'age' => '11'
                                    }
                       },
                       {
                         'href' => 'http://localhost/id303',
                         'Child' => {
                                      'age' => '8',
                                      'name' => 'David',
                                      'pet' => 'Dog'
                                    }
                       },
                       {
                         'href' => 'http://localhost/id516',
                         'Child' => {
                                      'name' => 'Merry',
                                      'pet' => 'Hamster',
                                      'age' => '10'
                                    }
                       }
                     ]
        };

Не могу понять в какие структуры Perl пероводится JSON.
Каким образом, например, для каждого обьекта "Child" распечатать только значения его "name" и "pet"?

Жду ваших советов!

Результат команды bash из шел != из скрипта., !*! DiJey, (Shell скрипты) 25-Мрт-16, 16:45  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Результат выполнения команды из командной строки розница с результатом из скрипта, кто нибудь может  объяснить причину?  (шел один и тот же /bin/bash)

Скрипт:
-bash-3.00# cat ./audit_send.sh
#!/bin/bash
ps -ef | grep audit_send.sh | grep -v grep | wc -l
if (( $(ps -ef | grep audit_send.sh | grep -v grep | wc -l) > 1 )); then echo exit 1; exit 1; else echo not_exit; fi

Результат команды из командной строки:
-bash-3.00# if (( $(ps -ef | grep audit_send.sh | grep -v grep | wc -l) > 1 )); then echo exit 1; exit 1; else echo not_exit; fi
not_exit

Результат скрипта:
-bash-3.00# ./audit_send.sh
       1
exit 1
-bash-3.00#

Соц.сеть на CPP, !*! Аноним, (C/C++) 20-Мрт-16, 21:26  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Уважаемые, подскажите, возможно ли в разумные сроки написать соц.сеть aka вк на c++/cgi и сколько, примерно, это займет времени. При условии, что необходимо свести использование стороннего кода до минимума.


ldapsearch и bash, !*! sarge, (Shell скрипты) 16-Мрт-16, 21:24  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Добрый вечер. Я новичек в скриптинге на bash так что не судите строго.

Столкнулся с такой проблемой. В bash если запускаю данную команду, то все работает
ldapsearch  -H ldap://server -w password -b "DC=domain,DC=local" -s sub -D
'CN=user,DC=domain,DC=local' -x "(objectClass=user)" sn cn mail
-----------------------

но если начинаю использовать переменные, а точнее в параметре -D то выскакивает ошибка:
LDAPSERVER='ldap://server'
PASSWORD='password'
BINDPATH='DC=domain,DC=local'
DN='CN=user,DC=domain,DC=local'
FILTER='(objectClass=user)'
ATTRIB='sn cn mail'
ldapsearch  -H $LDAPSERVER -w $PASSWORD -b $BINDPATH -s sub -D $DN -x $FILTER $ATTRIB

ldap_bind: Invalid credentials (49)
        additional info: 80090308: LdapErr: DSID-0C0903AA, comment:
AcceptSecurityContext error, data 525, v1772

------------------------
ldapsearch  -H $LDAPSERVER -w $PASSWORD -b $BINDPATH -s sub -D 'CN=user,DC=domain,DC=local' -x $FILTER $ATTRIB
так работает если для параметра -D непосредственно в строке прописать.

------------------------
подскажите в чем может быть проблема.
Debian8.3

ldapsearch:
        buildd@x86-csail-01:/build/openldap-EAKxYy/openldap-2.4.40+dfsg/debian/build/clients/tools
        (LDAP library: OpenLDAP 20440

centos and debian process memory consumption, !*! Alexander, (Разное) 16-Мрт-16, 20:11  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Приветствую.

Такой вопрос. Есть два сервера (инстанса в Амазоне): Centos 6 и Debian Jessie. На обоих запущен собранный на этих же серверах из исходников freeswitch. Конфиги фрисвича - одинаковые.

top показывает, что freeswitch на centos'е занимает примерно 2.5 гига виртуальной памяти, в то время как на debian'е - всего 850 MB.

Судя по pmap, основную разницу в потреблении памяти составляют анонимные сегменты:
centos: http://paste.linux.chat/view/df8f192a (~2GB)
debian: http://paste.linux.chat/view/ba987a1e (~600MB)

Может мне кто-нибудь объяснить, из-за чего возникает такая разница в потреблении памяти и можно ли как-то его (потребление) уменьшить на центосе?



FreeBSD 10, pthread и прочее, !*! fail, (C/C++) 11-Мрт-16, 14:30  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]

вожусь с одним стендовым проектом,
- по ряду причин пришлось добавить класс Мютекс ( и прочего многопоточного);
- возможно в будущем на полную замену в проекте стандартного QMutex,etc из Qt

касаемо UNIX-like - все работает нармально(со всеми штатными ср-вами) на платформах: Debian 5,6,7; Ubuntu 10, 14 (all LTS); CentOS 6.x и др.

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

инфа по фряхе, все штатно через pkg и без возни с портами:
- FreeBSD 10.0-RELEASE r260789 Fri Jan 17 01:46:25 UTC 2014 ... i386
- libpthread-stubs-0.3_6
- cmake-3.4.2
- clang-3.3 (tag/RELEASE/final 183502) 20130610
- qt5-{*}-5.5.1
- gdb-6.1.1

>>>>

main() проекта, больше никаких глобальных переменных не объявлено:
$cat fake-project.cpp
...
/* */

  //FMemDebugger memDebugger;

/* */

int main(
int argc,
char *argv[])
{

  int ret = 0;

  FMemDebugger memDebugger;
...

};

>>>>

Выжимка из объявления класса FMemDebugger
$ cat fake-mem-debugger.h
...
class FMemDebugger
{

...
  private:

    //QMutex mutex;
    FMutex mutex;

};

>>>>

Интерфeйсная часть класса FMutex:
$ cat fake-mutex.cpp
...
FMutex::FMutex(
bool recursive)
{

  NEW_OP(df, FMutexPrivate(recursive));

};

FMutex::~FMutex()
{

  DELETE_OP(df);

};
...

>>>>

Функционал класса FMutex:
$ cat fake-mutex-unix.cpp
...
FMutexPrivate::FMutexPrivate(
bool recursive)
:
modeRecursive(recursive)
{

  wakeup = false;

  count = 0;
  owner = 0;

  report_error(pthread_mutex_init(&handle, NULL), "FMutex", "mutex init");
#if !defined(Q_OS_ANDROID)
  report_error(pthread_cond_init(&cond, NULL), "FMutex", "cv init");
#else
  priv_initialize_pthread_cond(&cond, "FMutex");
#endif

};

FMutexPrivate::~FMutexPrivate()
{

  report_error(pthread_cond_destroy(&cond), "FMutex", "cv destroy");
  report_error(pthread_mutex_destroy(&handle), "FMutex", "mutex destroy");

};
...


>>>>

Segmentation fault, выхлоп gdb, memDebugger до main():
...
#0  0x2946519e in pthread_mutex_unlock () from /lib/libthr.so.3
[New Thread 2c003080 (LWP 100388/test-imm-0.1.1)]
(gdb) bt
#0  0x2946519e in pthread_mutex_unlock () from /lib/libthr.so.3
#1  0x294685b0 in _pthread_cond_wait () from /lib/libthr.so.3
#2  0x294689dd in pthread_cond_wait () from /lib/libthr.so.3
#3  0x281d4d1a in FMutexPrivate::wait ()
   from /usr/home/user/git/dev/net/qth/src/.build/srcs/libtest-fakelib.so.0

>>

#4  0x281d4b82 in FMutexPrivate::lock ()
   from /usr/home/user/git/dev/net/qth/src/.build/srcs/libtest-fakelib.so.0

здесь в лог падает "FMutex::lock: failure: Invalid argument"
$ cat fake-mutex-priv.cpp
...
void FMutexPrivate::lock()
{
...
    int code = pthread_mutex_lock(&handle);
    if (code != 0) {

      LOG_WRN(QString(I18N_NOOP("FMutex::lock: failure: ")) + strerror(code));
      bool isLocked = wait();
...
};
...
>>

#5  0x281d41d9 in FMutex::lock ()
   from /usr/home/user/git/dev/net/qth/src/.build/srcs/libtest-fakelib.so.0
#6  0x2818bcb9 in FmemDebugger::Remove ()
   from /usr/home/user/git/dev/net/qth/src/.build/srcs/libtest-fakelib.so.0
#7  0x2822706a in exp_mem_holder_remove ()
   from /usr/home/user/git/dev/net/qth/src/.build/srcs/libtest-fakelib.so.0
#8  0x2818acd6 in exp_rmv_new ()
   from /usr/home/user/git/dev/net/qth/src/.build/srcs/libtest-fakelib.so.0
#9  0x281d4141 in FMutex::~FMutex ()
   from /usr/home/user/git/dev/net/qth/src/.build/srcs/libtest-fakelib.so.0
#10 0x2818b2e1 in FmemDebugger::~FmemDebugger ()
   from /usr/home/user/git/dev/net/qth/src/.build/srcs/libtest-fakelib.so.0
#11 0x2957bca9 in __cxa_finalize () from /lib/libc.so.7
#12 0x280fc525 in __do_global_dtors_aux ()
   from /usr/home/user/git/dev/net/qth/src/.build/srcs/libtest-fakelib.so.0
#13 0x2825d528 in _fini () from /usr/home/user/git/dev/net/qth/src/.build/srcs/libtest-fakelib.so.0
#14 0x2bafb5c0 in ?? ()
#15 0x280612b0 in ?? () from /libexec/ld-elf.so.1
#16 0xbfbfd9d8 in ?? ()
#17 0x2804f1d1 in dlclose () from /libexec/ld-elf.so.1
#18 0x2804e4bb in r_debug_state () from /libexec/ld-elf.so.1
#19 0x2957bca9 in __cxa_finalize () from /lib/libc.so.7
#20 0x2952182a in exit () from /lib/libc.so.7
#21 0x08049522 in _start1 ()
...


>>>>

Segmentation fault, выхлоп gdb, memDebugger в main():
...
#0  0x2946519e in pthread_mutex_unlock () from /lib/libthr.so.3
[New Thread 2c003080 (LWP 100388/test-imm-0.1.1)]
(gdb) bt
#0  0x2946519e in pthread_mutex_unlock () from /lib/libthr.so.3
#1  0x294685b0 in _pthread_cond_wait () from /lib/libthr.so.3
#2  0x294689dd in pthread_cond_wait () from /lib/libthr.so.3
#3  0x281d4d1a in FMutexPrivate::wait ()
   from /usr/home/user/git/dev/net/qth/src/.build/srcs/libtest-fakelib.so.0

>>

#4  0x281d4b82 in FMutexPrivate::lock ()
   from /usr/home/user/git/dev/net/qth/src/.build/srcs/libtest-fakelib.so.0

Таже хрень - в лог падает "FMutex::lock: failure: Invalid argument"
$ cat fake-mutex-priv.cpp
...
void FMutexPrivate::lock()
{
...
    int code = pthread_mutex_lock(&handle);
    if (code != 0) {

      LOG_WRN(QString(I18N_NOOP("FMutex::lock: failure: ")) + strerror(code));
      bool isLocked = wait();
...
};
...
>>

#5  0x281d41d9 in FMutex::lock ()
   from /usr/home/user/git/dev/net/qth/src/.build/srcs/libtest-fakelib.so.0
#6  0x2818bcb9 in FmemDebugger::Remove ()
   from /usr/home/user/git/dev/net/qth/src/.build/srcs/libtest-fakelib.so.0
#7  0x2822706a in exp_mem_holder_remove ()
   from /usr/home/user/git/dev/net/qth/src/.build/srcs/libtest-fakelib.so.0
#8  0x2818acd6 in exp_rmv_new ()
   from /usr/home/user/git/dev/net/qth/src/.build/srcs/libtest-fakelib.so.0
#9  0x281d4141 in FMutex::~FMutex ()
   from /usr/home/user/git/dev/net/qth/src/.build/srcs/libtest-fakelib.so.0
#10 0x2818b2e1 in FmemDebugger::~FmemDebugger ()
   from /usr/home/user/git/dev/net/qth/src/.build/srcs/libtest-fakelib.so.0
#11 0x080498bf in main ()
...

Преобразовать структурированный файл в хеш, !*! Andrey, (Perl) 09-Мрт-16, 15:14  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Всех приветствую.

Имеею файл следующего формата:
+------------------+----------+--------+------+-----+
| Name             | Current  | Office | Age  | ... |
|                  | Position |  City  |      |     |
+------------------+----------+--------+------+-----+
| Vasiliy_Petrov   | student  | n/a    | 30   | ... |
| Petr_Ivanov      | worker   | MSK    | 40   | ... |
| Ivan_Ivanov      | n/a      | SPB    | 20   | ... |
| ...              | ...      | ...    | ...  | ... |
+------------------+----------+--------+------+-----+

Пример (на случай некорректного отображения):
http://pastebin.com/raw/EvuzWkrQ

Длина ячеек динамическая (мзменяется в зависимости от длиный значений в них).
Но кол-во столбцов фиксированое - их всегда 14.

Вопрос:
каким образом распарсить такого рода таблицу, чтобы на выходе получить Perl хэш вида:

%"Vasiliy_Petrov"= (

"Current Position"=>"student",
"Office City"=>"n/a",
"Age"=>"30,

);

Жду любые идеи\советы.

Непонятки с либами perl, !*! tsolodov1, (Perl) 04-Мрт-16, 09:38  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
perl -e 'use POSIX qw(strftime);'
Can't locate package Tie::StdHash for @POSIX::SigRt::ISA at /usr/lib64/perl5/POSIX.pm line 71.
Can't locate auto/POSIX/SigRt/TIEHASH.al in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/lib64/perl5/POSIX.pm line 71
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.

Вообще не пойму как решить проблему.

Сравнение файлов с разным количеством столбцов, !*! dsp976, (Shell скрипты) 03-Мрт-16, 10:47  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Добрый день.
Подскажите как можно организовать сравнение двух файлов? Один файл - столбец с данными. Второй файл - первый столбец подобен первому файлу, а второй столбец содержит другие данные.

  файл1                          файл2
a/a/a                           a/a/a 1111
b/b/b                          e/e/e 8888
c/c/c                           c/c/c 3333
...                                ...
z/z/z                           z/z/z 2222


Необходимо сравнить файлы по первому столбцу и на выходе получить различия либо вместе с данными из второго столбца (если в первом файле такой нет), либо без них (если такая строка есть только в первом файле). Я сейчас могу только выбрать первый столбец из второго файла и сравнить его с первым файлом с помощью diff.



Переменную из файла, !*! globi, (Shell скрипты) 20-Фев-16, 16:05  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Есть файл, в котором обновляются даныне типа
{"time":11111111111,"db":"name_base.blabla"}
Из файла в переменную нужно закинуть только название базы, которое меняется, но всегда начинается на name_ и заканчивается расширением .blabla
Может кто сталкивался с подобной задачей?
Или есть кудесники sed, которые подскажут как отредактировать что бы осталось только название базы
Кириллица в bash (shell), !*! Alex, (Shell скрипты) 20-Фев-16, 10:12  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
файл в кодировке utf8, в нем есть кириллица, обычный html.
мне надо удалить все из файла, оставить только текст.
и понимаю что многие команды и регулярка не понимают кириллицу.

поделитесь опытом, кто как поступает в такой ситуации?

Сбивается компиляция VPN-клиента, !*! Palemoon, (Компиляция) 11-Фев-16, 20:53  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Пытаюсь скомпилировать клиент проекта SoftEther, но компиляция с помощью make совершает ошибки и заканчивается неудачей.
Использование configure вообще сразу останавливается с сообщением что нет такой программы.
Для справки: тем компиляция серверной части этого же проекта происходит сразу командой make без configure.
Офсайт на заданный вопрос молчит как рыба об лёд.
Просьба подсказать, возможно ли решение возникшей проблемы и как.

Debian 8.3/64.

make[1]: Entering directory '/root/Soft/vpnclient'
Preparing SoftEther VPN Client...
ranlib lib/libcharset.a
ranlib lib/libcrypto.a
ranlib lib/libedit.a
ranlib lib/libiconv.a
ranlib lib/libintelaes.a
ranlib lib/libncurses.a
ranlib lib/libssl.a
ranlib lib/libz.a
ranlib code/vpnclient.a
gcc code/vpnclient.a -O2 -fsigned-char -pthread -m64 -lm -ldl -lrt -lpthread -L./ lib/libssl.a lib/libcrypto.a lib/libiconv.a lib/libcharset.a lib/libedit.a lib/libncurses.a lib/libz.a lib/libintelaes.a -o vpnclient
/usr/bin/ld: cannot find crt1.o: No such file or directory
/usr/bin/ld: cannot find crti.o: No such file or directory
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -ldl
/usr/bin/ld: cannot find -lrt
/usr/bin/ld: cannot find -lpthread
/usr/bin/ld: cannot find -lpthread
/usr/bin/ld: cannot find -lc
/usr/bin/ld: cannot find crtn.o: No such file or directory
collect2: error: ld returned 1 exit status
Makefile:18: recipe for target 'i_read_and_agree_the_license_agreement' failed
make[1]: *** [i_read_and_agree_the_license_agreement] Error 1
make[1]: Leaving directory '/root/Soft/vpnclient'
/vpnclient#



Помогите сделать регулярное выражение, !*! Tendro, (Shell скрипты) 09-Фев-16, 11:09  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Прошу подсказать регулярное выражение, которое подошло-бы для моих целей.
Сколько не пытался разобраться с регуляркой, так мне и не пошло.

Ситуация следующая - есть текст (ответ АПИ, полученый через curl):
[{"id":434648634,"name":"vasya","distribution":"petya","blabla":null},{"id":63484684,"name":"maks","distribution":"anton","blabla":null}]
Мне требуется получить ID, который пренадлежит Васе.
Очень надеюсь на вашу помощь!



Проблема с пробелами в shell, !*! alexey_and, (Shell скрипты) 19-Янв-16, 21:22  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Здравствуйте
имеется непонятная проблема, полагаю связанная с пробелами
скрипт:
#!/bin/sh

CDVOLU=$(df | sed -ne  "s,^$disk.*\(/Volumes.*\)$,\1,p" | grep -v store | grep -v alex)
echo $CDVOLU

CDVOLUM=$(echo $CDVOLU | sed "s/ / /g")/   #попытка заменить пробелы на  "%2O"

echo $CDVOLUM

echo curl -H Content-Type: application/json -X POST -d {"jsonrpc":"2.0","id":"1","method":"Player.Open","params":{"item":{"directory":"'$CDVOLUM'"}}} http://192.168.1.5:8081/jsonrpc

echo `curl -H Content-Type: application/json -X POST -d {"jsonrpc":"2.0","id":"1","method":"Player.Open","params":{"item":{"directory":"'$CDVOLUM'"}}} http://192.168.1.5:8081/jsonrpc`

результат:
sh-3.2# ./cd1.sh
/Volumes/Rocket Ride
/Volumes/Rocket%2ORide/
curl -H Content-Type: application/json -X POST -d jsonrpc:2.0 id:1 method:Player.Open params:{item:{directory:'/Volumes/Rocket%2ORide/'}} http://192.168.1.5:8081/jsonrpc
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: application
curl: (6) Could not resolve host: id
curl: (6) Could not resolve host: method
curl: (3) [globbing] nested brace in column 14
100    87  100    76  100    11  90800  13142 --:--:-- --:--:-- --:--:-- 90800
{"error":{"code":-32700,"message":"Parse error."},"id":null,"jsonrpc":"2.0"}

пробел меняется корректно, но ссылку все равно не съедает
если пробел не менять, все то же самое - parse error
когда в переменной нет пробела, отрабатывает корректно

прокатывает так:
echo `curl -H Content-Type: application/json -X POST -d '{"jsonrpc":"2.0","id":"1","method":"Player.Open","params":{"item":{"directory":"/Volumes/Rocket Ride/"}}}' http://192.168.1.5:8081/jsonrpc`

но если заменить /Volumes/Rocket Ride/ на переменную, опять parse error

Brainfuck New Year, !*! pavlinux, (Языки программирования) 25-Дек-15, 02:26  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Отформатировать STDIN в STDOUT, в виде Новогодней ёлки с тремя ярусами и ножкой.
Язык - любой: bash, C++, Java, Perl, awk, sed, python, tcl,...  

---


         v
        -X-
         A
        d$b
      .d\$$b.
    .d$i$$\$$b.
       d$$@b
      d\$$$ib
    .d$$$\$$$b
  .d$$@$$$$\$$ib.
      d$$i$$b
     d\$$$$@$b
  .d$@$$\$$$$$@b.
.d$$$$i$$$\$$$$$$b.
        ###
        ###
        ###



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


: Детская теория чисел, !*! pavlinux, (Shell скрипты) 27-Сен-15, 00:06  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Объяснить, почему два двузначных числа, в сумме образующих 100,
при перестановке цифр всегда дают сумму 109 ?

51+49 = 100; 15+94 = 109;
23+77 = 100; 32+77 = 109;
...
и т.д.

И написать скрипт/программу, реализующий алгоритм этого объяснения.
В программе запрещено использовать числа 100 и 109, как константы,
так и в виде временных переменных.  



Программирование USB, !*! _Mister, (C/C++) 29-Июн-15, 10:32  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Начал компиллировать программу, компилляция не прошла. У меня usb.h. В нем всего две строки define и mod_devicetable.h. Не знаю в чем причина. Выдает u32 mask no.


Фильтр block device в Линукс, !*! DoubleHead, (Разное) 26-Июн-15, 15:34  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Всем доброго времени суток.

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

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

Собственно вопрос в том, почему так происходит?

Вот мой код:

#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/blkdev.h>
#include <linux/buffer_head.h>
#define PARTITION_NAME "/dev/sdb"


char *ptr;
int i;
struct block_device *bd;
make_request_fn *orig_mrqfn;

static void filter_mrqfn(struct request_queue *rq, struct bio *b)
{
    printk(KERN_INFO "filter: Sector=lu Size=%d bi_rw=%lu\n", b->bi_sector, b->bi_size, b->bi_rw);

    ptr=(char *)bio_data(b);
    for(i=0;i<b->bi_size;i++)  //4096 as bio is going to be in 4kb chunk?????
    {
       printk("%c",*ptr);
       ptr++;
    }


    orig_mrqfn(rq, b); /* calling the original make_request_fn() */
}

/*
* set_mrqfn() - Change the original make_request_fn() to our
* modules request function
*/
static void set_mrqfn(void)
{
    struct super_block *sb;
    printk(KERN_DEBUG "filter: %s\n", __FUNCTION__);
    /* lock filesystem to prevent any further changes */
    fsync_bdev(bd);
    sb = freeze_bdev(bd);
    if (bd->bd_disk->queue->make_request_fn == filter_mrqfn) {
        printk(KERN_INFO "filter: modules request function is already active\n");
    } else {
        /* save the pointer to the original make_request_fn() */
        orig_mrqfn = bd->bd_disk->queue->make_request_fn;
        /* replace the original with our modules request function */
        bd->bd_disk->queue->make_request_fn = filter_mrqfn;
    }
    
    /* unlock filesystem */
    thaw_bdev(bd, sb);
}

/*
* restore_mrqfn() - Restore the original make_request_fn()
*/
static void restore_mrqfn(void)
{
    struct super_block *sb = bd->bd_super;
    printk(KERN_DEBUG "filter: %s\n", __FUNCTION__);
    if (orig_mrqfn) {
        /* lock filesystem to prevent any further changes */
        fsync_bdev(bd);
        sb = freeze_bdev(bd);
        /* restore the original request function */
        bd->bd_disk->queue->make_request_fn = orig_mrqfn;
        /* unlock filesystem */
        thaw_bdev(bd, sb);
    }
    orig_mrqfn = NULL;
}

static int __init filter_init(void)
{
    printk(KERN_DEBUG "filter: %s\n", __FUNCTION__);
    orig_mrqfn = NULL;
    // Read block device from path
    bd = blkdev_get_by_path(PARTITION_NAME, FMODE_READ, NULL);
    if (IS_ERR(bd)) {
        printk(KERN_ERR "filter: failed to get block device\n");
        return 0;
    }
    
    printk(KERN_INFO "filter: found block device with major number %d\n", bd->bd_disk->major);
    printk(KERN_INFO "filter: file system block size %d\n", bd->bd_block_size);
    printk(KERN_INFO "filter: start sector %lu\n", (unsigned long)bd->bd_part->start_sect);
    printk(KERN_INFO "filter: number of sectors %lu\n", (unsigned long)bd->bd_part->nr_sects);
    printk(KERN_INFO "filter: logical block size %d\n", bdev_logical_block_size(bd));
    printk(KERN_INFO "filter: physical block size %d\n", bdev_physical_block_size(bd));
    set_mrqfn();
    return 0;
}

static void __exit filter_exit(void)
{
    printk(KERN_DEBUG "filter: %s\n", __FUNCTION__);
    restore_mrqfn();
    if (!IS_ERR(bd)) {
        blkdev_put(bd, FMODE_READ);
    }
}

module_init(filter_init);
module_exit(filter_exit);
MODULE_LICENSE("Dual MIT/GPL");
MODULE_AUTHOR("Me");

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



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

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