LINUX.ORG.RU

Сообщения Seraph

 

CentOS, древний GCC 4.1.2, вообще левые *.h файлы...

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

Ставить софт нужно на сервер под CentOS 5.7. В ней есть gcc 4.1.2, это последняя версия в репах.

Проблема: При поптыке сборки программы получаю огромный высер от gcc с сообщениями типа:

In file included from /usr/include/pthread.h:24,
                 from app_logger.h:15,
                 from app_rssfeed.c:9:
/usr/include/sched.h:41: ошибка: класс хранения в декларации параметра ‘sched_setparam’
/usr/include/sched.h:44: ошибка: класс хранения в декларации параметра ‘sched_getparam’
/usr/include/sched.h:48: ошибка: класс хранения в декларации параметра ‘sched_setscheduler’
/usr/include/sched.h:51: ошибка: класс хранения в декларации параметра ‘sched_getscheduler’
/usr/include/sched.h:54: ошибка: класс хранения в декларации параметра ‘sched_yield’

Все стандартные для хедеры, типа pthread и т.п. тоже не принимаются, в таком же духе.. на знаю что делать, собирать gcc руками - для меня тот еще секс.

Может кто сталкивался?

Seraph
()

KDE4 и Я: Segmentation fault у kwin и plasma.

Перелез таки с Gnome3 на KDE4.
Ловлю глюки:
1. Сегфолтится kwin сразу при старте.
2. Сегфолтится plasma при попытке скачать сторонние виджеты.
3. Чувствуется, что окружение нуждается в настройке, пока не получаю удовольствия от работы в кедах, что посоветуете почитать чтобы освоится и, так скажем, персонализировать все это хозяйство.

Кеды ставил, добавив в репы это:
deb http://ftp.debian.org/debian/ experimental main non-free contrib

На борту Debian Sid.

Собственно хочу помощи/соображений по поводу первых, двух пунктов.

Seraph
()

Gnome 3 Classic mode, как готовить?

Приветствую!
Вобщем посидел под стандартным режимом Gnome3, когда начал на компах с виндой тыкаться в верхний угол, чтобы вызвать меню, понял, что пора валить с Gnome3. Перешел в Classic mode, почти Gnome2, только кривее =)

Проблемы, которые хотелось бы решить:
1. Уведомления почему - то на процентов 30 уходят за правую границу экрана. (в dconf не нашел, в параметрах и т.п. тоже, где вобще оно настраивается?)

2. Запарило, что каждый «пук» в любом гномовском приложении сразу же порождает новое уведомление. (прим.: смена трэка в Rhytmbox).

3. Иногда слетает тема GTK, юзаю дефолтную Awaita, при не установленных обстоятельствах тема тупо слетает на какое - то убожество(стандартное, безтемное оформления видимо). Иконки слетают следом.

Помогите кто чем может, натравите меня хоть где рыть =) Собственно сам DE нравится, выбирать особо не из чего. Подумываю предать гнома и вкусить запретный плод KDE, стоит ли?

Seraph
()

mini-httpd и perl скрипты в cgi-bin, сервер отдает код скрипта

Доброго времени! Переношу проект со связки nginx + Apache на nginx + php-fpm. В проекте используется код написанный на perl(Uber-Uploader). От гугля узнал, что для запуска perl скриптов мне нужен еще один сервер т.к. nginx пока не дорос до этого функционала. Также гугл сказал что мне нужен mini-httpd. Ну что же, установил, настроил, запрашиваю скрипт а мне выдается исходник. Что делать? =)

Конфиг nginx:

		location ~ .pl$ {
			set                     $referer        $http_referer;
			proxy_set_header        Referer         $referer;
			proxy_set_header        X-Real-IP       $remote_addr;
			proxy_set_header        Host            localhost:9001;
			proxy_set_header        REQUEST_METHOD  $request_method;
			proxy_set_header        REMOTE_USER     $remote_user;
			proxy_set_header        REMOTE_ADDR     $remote_addr;
			proxy_set_header        SERVER_NAME     localhost;
			proxy_set_header        SERVER_PORT     9001;
			proxy_set_header        HTTP_COOKIE     $http_cookie;
			root /var/www/xserver/data/www/b******a.org/;
			gzip off;
			proxy_pass http://127.0.0.1:9001;
		}

Конифг mini-httpd:

# On which port mini_httpd should listen?
port=9001

# Which user mini_httpd should use?
user=www-data

# Run in chroot mode?
#chroot # yes
nochroot # no

# Working directory of mini_httpd.
dir=/var/www/xserver/data/www/b******a.org

# We are the web files stored?
# Please change this to your needs.
data_dir=/var/www/xserver/data/www/b******a.org

# Which certificate to use?
#certfile=<certfile>

# Which logfile to use?
logfile=/var/log/mini-httpd.log

# Which pidfile to use?
pidfile=/var/run/mini-httpd.pid

В том что запрос до mini-httpd вообще доходит я уверен, при отключении nginx выдает 502 ошибку.

Seraph
()

Какой предложите способ для вырезки текста статьи из html страницы?

Доброго времени всем! По работе возникла необходимость вырезать из html страницы тексты. На вход алгоритму подается html код содержащий текст статьи, в тексте статьи могут быть html теги, но их не так много как за границами данного текста. Нельзя опираться на шаблоны html кода, которые могут показать где начало, а где конец текста, т.е. формат страницы заранее не должен быть известен алгоритму. Пока в голову приходит только libpcre, но вот какой шаблон подобрать чтобы все было так универсальненько я пока не додумался. Если есть идеи или ссылки на код реализующий подобный алгоритм то оставляйте, буду очень благодарен за помощь, да и потомки думаю тоже спасибо скажут =)

Seraph
()

ошибка: нет декларации «strcpy» в этой области видимости

gcc 4.6.1

В инклудах это:

#include <cstdlib>
#include <iostream>
#include <queue>
#include <string>
#include <pthread.h>

#include <curl/curl.h>
#include <curl/easy.h>

#include "document_struct.h"
#include "html_getting_thread.h"

Как видно, string - на месте, объявление strcpy в заголовочном файле есть, по клику на функцию IDE (NetBeans 7.1) успешно находит ее. При попытке компиляции gcc вываливается с сабжем. Я очень уверен, что где - то неправ именно я, а не компилятор, но разобраться за 4 часа копания в гугле не получилось.

По сути мне нужно const char* скопировать в char*, может есть аналоги? Руками писать - не комельфо как то, знаю что можно через memcpy с проверкой на /0, но блин, костыль же?

P.S.: Эту проблему ув. форумчане помогли решить и она более не актуальна. Нужно подключать cstring:

#include <cstring>

Код:

//Вечный цикл работы потока
    for (;;) {
        //Если пришло время прощаться, значит такова жизнь
        if (itsTimeToSayGoodbye)
            break;

        //Блокировка мьютекса для очереди url
        pthread_mutex_lock(&params->urlsMutex);

        //Если очеред не пуста, выдираем из нее один url 
        //и качаем с него контент
        if (!urls->empty()) {
            //Буффер для принятия данных от curl
            string* dataBuffer = new string();

            string* url = new string(urls->front());
            urls->pop();

            //Незачем более держать доступ к очереди, зарблокируем мьютекс
            pthread_mutex_unlock(&params->urlsMutex);

            char* urlBuff = new char(url->length() + 1);
            strcpy(urlBuff, url->c_str());
            
            //Вылетает с SIGABRT на этом месте <-------
            curl_easy_setopt(curl, CURLOPT_URL, urlBuff);

            curl_easy_setopt(curl, CURLOPT_WRITEDATA, dataBuffer);
            
            CURLcode responseCode;
            responseCode = curl_easy_perform(curl);
            cout << dataBuffer->c_str();
            if(responseCode != CURLE_OK) {
                string* curlErrorMessage = new string(curl_easy_strerror(responseCode));
                
                cout << "==== ATTENTION! ====" << endl;
                cout << "Curl error: " << curlErrorMessage->c_str() << endl << "URL: " << url->c_str() 
                        << endl << "Thread #" << (params->lastThreadIndex - 1)  << endl;
                cout << "====================" << endl;
                
                delete curlErrorMessage;
            }


            //Почистим за собой память, dataBuffer оставим, т.к. в нем
            //у нас данные документа, которые будут переданы парсеру
            curl_easy_setopt(curl, CURLOPT_URL, NULL);
            curl_easy_setopt(curl, CURLOPT_WRITEDATA, NULL);
            delete urlBuff;
            delete url;
        } else {
            //Очередь оказалась пуста, а мы уже заблокировали мьютекс,
            //отпустим его.
            pthread_mutex_unlock(&params->urlsMutex);
        }

        //Пускай процессор подышит, наша задача не самая приоритетная
        sleep(100);
    }

Seraph
()

Flash падает под FreeBSD amd64

Здравствуйте! Введение: Поставил фрибсд amd64, сверху иксы и гном, по мануалу Crazy Alex добавил поддержку Flash в Firefox. Проверил работоспособность, все отлично, цель достигнута, видео смотреть могу и хватает. Со временем отказалася от гнома в пользу OpenBox.

Проблема: Под OpenBox лиса виснет при попытке вопроизвести swf через Flash плагин, на минуту, иногда меньше. crash dump`а в домашнем каталоге не появляется, видимо пишет в другое место, в какое не нашел, но что пишет вроде точно, читал где - то =) Заметил что .so`шка плагина для иксов версия которых ниже чем установленная, но ведь под гномом работало...

Вопрос: Где я ошибся? Только не говорите, что ошибся я когда поставил фряху.. религия знаете - ли.

Seraph
()

Странный писк, раз в сутки, ubuntu 10.04

Приветствую! Юзаю на лэптопе ubuntu 10.04(вроде, ну которая последняя LTS), бед не знаю, все клево. Три - четыре дня назад ровно в 2:01 часа ночи компьютер стал пищать, а после писка, сразу по окончанию отчетливо слышно как паркуются головки харда. Общее кол-во уже совершенных парковок около 13 тысяч, лэптопу почти 2 месяца. Хотя я могу ошибаться насчет того, что это парковка головок, но обычно такой звук я слышу при переходе ноута в спящий режим, хотя при перезагрузке такого нет. При писке, который длится около 3 секунд, всегда горит индикатор активности харда. При этом никаких глюков в системе не происходит, работа с хардом продолжается в обычном режиме. В общем, я озадачен, я не могу спать и есть, поделитесь опытом, что это за «особая, уличная магия»?

Seraph
()

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