Покажи Публикации - victim70
* Виж публикациите на потр. | Виж темите на потр. | Виж прикачените файлове на потр
Страници: 1 ... 28 29 [30] 31
436  Хардуер за Линукс / Сървъри / Re: файл-сървър решение за малък офис -: Mar 22, 2009, 15:44
... --exclude=.wine/drive_c/Program\ Files/Orcad/
offtopic: Да не искаш да кажеш, че си подкарал OrCAD с WINE?
Да 9.2 имам лиценз, и понеже е 1 го ползваме на този акаунт, през ssh. Има и една 11 ама е като охлюв и все не харесва лицензния сървъв а едита за печатни платки .... е това прост човек неможе да го измисли.
Ще си караме на 9.2 повече ми харесва. Мога да дам как се инсталирга ако има заинтересувани.

На въпроса на Foxb (извинявай видях го късно)
Интересно какво е станало с UPS-a и SURGE PROTECTORA ;)

Беше започнал процес на евапорация и частична естествена карбонизация - а гръмотевицата си люсна върхо гръмоотвода, едва ли е имало повече от 30-50Кv по корпуса на машинките - колко на екрана на един тръбен монитор  ;) - е тока е бил само няколко ампера.
437  Linux секция за напреднали / Хардуерни и софтуерни проблеми / Re: Проблем с ehci_hcd -: Mar 22, 2009, 15:38
Познато. Вина реинициализира устройството до откат, докато тръгне. Пробвай на USB1.1 как ще се държи под линукс. Ако имаш кабелче за удължаване задължително го махни и пробите ги прави на USB дупката на компа.
438  Програмиране / Общ форум / Re: Как да си създам мой собствен .h файл в С++ ? -: Mar 22, 2009, 15:25
И една добавка как се прави библиотека, че вчера по нощите не се сещах за 'заклинанието', е намерих го добре описано.
http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/introduction.html
439  Програмиране / Общ форум / Re: Как да си създам мой собствен .h файл в С++ ? -: Mar 22, 2009, 14:47
Неговия темплейт позволява да се задели място за съответния тип данни (работи и с float и структура, int,long,double,class) точно заради тази неопределеност на входно/изходни-те данни темплайта е мощен инструмент .
В другия случай единствения тип данни който приема и връща е char. В случай че е char  не е необходима тази проверка а единственно дали е заделило място. На практика ако махнеш template пак ще работи като копираща функция. Примера не е коректен за темплейт. Ами ако иска и цена да вкара? Как ще работи това char*dyn_save(char*temp, int length=0) с float параметър за temp и какво ще върне.
И в двата случая не е необходима (според мене) try/catch защото проверките според мене са достатъчни (може и да не съм прав).
Това което не харесвам на този неопределен тип е, че е страшно гъвкав и при неправилно написване, използване (като един мощен инструмент) върши огромни глупости които трудно се откриват и оправят.   
Това все пак е въпрос на стил на писане.
Emoo изложи си детайлно предложението, защото май само аз се отзовах да помогна колкото мога, без да се впечатлявам че незнае как се прави нещо елементарно като хедър и как се компилират няколко файла.
Опитах се да изразя моето виждане и моя стил в възможно по кратък пост. Знам че не ме бива в обясненията. И за дебъгера съм полу съгласен - почти не ползвам от 15 години дебъгер. Ползвам ламерският начин с контролни принтове - поне не ме лъжат с времето както го прави дебъгера (пиша повече за хардуер където събитията не позволяват дебъгване).
А за книгите е свобода на избора - аз само препоръчвам - поне от моята практика с курсове за ученици (5 курса само съм водил) тези книги са се възприемали много лесно, и идеите са дадени на много лесен и разбираем (достъпен) език (който аз немога да го достигна).
try/catch не ги отричам тотално, както и goto само казвам че в примера не са необходими. Ако се ограничи максимално използването им, кода става по чист. Все пак са си част от езика и са необходими на някои места.
Пример за използване:
имаш хардуерно устройство, което ти връща около 20-30 регистъра, трабва да разделиш число на върнатата стойност. Вместо да правиш 20-30 или повече сравнения за делене на 0, при условие че регистрите немогат да са 0, в този случай е по добре да използваш критична секция try/catch, за да можеш при хардуерен проблем да реагираш адекватно.
440  Програмиране / Общ форум / Re: Как да си създам мой собствен .h файл в С++ ? -: Mar 22, 2009, 01:23
Започвам от послеписа:

1 файл main.cpp


#include "classes.h"

template<class TMP>
TMP *dyn_save(TMP *temp, int length=0) {
    TMP *mem;
    try {
        if(length){
            if(typeid(*temp) == typeid(char)) {
                mem = new TMP[length+1];
                if(temp!=NULL)
                    memcpy(mem, temp, length+1);
            }
            else {
                mem = new TMP[length];
                if(temp!=NULL)
                    memcpy(mem, temp, (sizeof(temp[0])*length));
            }
        } else {
            mem = new TMP;
            if(temp!=NULL)
                *mem = *temp;
        }
    } catch(bad_alloc x) {
        return NULL;
    }
    return mem;
}


//Main_Functions_begin..........................................................

int main() {

    book *Book=NULL;

    stack *stk=NULL;
    stk = dyn_save(stk);

    message *msg=NULL;
    msg = dyn_save(msg);

    error *err=NULL;
    err = dyn_save(err);

    int no_mem;
    do {
        begin: //This is used by goto.
        Book = dyn_save(Book);
        no_mem = Book->enter_info();
        if(no_mem==-1) {
            if(yes_or_no(err->memory_error())==false) break;
            else goto begin;
        }
        stk->push(Book);
        cout << flush;
    } while(yes_or_no(msg->enter_book())==true);

    cout << endl;

    while(stk->pop()!=NULL)
        cout << endl;
    delete stk;
    cout << "Sucess !";
    return 0;
}

//Main_Functions_end............................................................


Втори файл classes.cpp


#include "classes.h"



template<class TMP>
TMP *dyn_save(TMP *temp, int length=0) {
    TMP *mem;
    try {
        if(length){
            if(typeid(*temp) == typeid(char)) {
                mem = new TMP[length+1];
                if(temp!=NULL)
                    memcpy(mem, temp, length+1);
            }
            else {
                mem = new TMP[length];
                if(temp!=NULL)
                    memcpy(mem, temp, (sizeof(temp[0])*length));
            }
        } else {
            mem = new TMP;
            if(temp!=NULL)
                *mem = *temp;
        }
    } catch(bad_alloc x) {
        return NULL;
    }
    return mem;
}


//Class_Functions_begin.........................................................
int book::enter_info() {
    char *temps=NULL;
    int *tempi=NULL;
    temps = dyn_save(temps, 1000);
    if(temps==NULL) return -1;
    tempi = dyn_save(tempi);

    message msg;
    msg.enter_name(temps);
    this->name = dyn_save(temps, strlen(temps));
    delete []temps;

    msg.enter_year(tempi);
    this->year = dyn_save(tempi);
    delete tempi;

    return 0;
}

void stack::push(library *obj) {
    item *node=NULL;
    node = dyn_save(node);

    node->pData = obj;
    node->pNext = top;
    top = node;
}

item *stack::pop() {
    book *pBook;
    item *temp;
    pBook = dynamic_cast<book *> (top->pData);
    cout << "Name: " << pBook->name;
    cout << endl;
    cout << "Year: " << *(pBook->year);
    cout << endl;
    delete pBook;
    temp = top;
    top = top->pNext;
    delete temp;
    return top;
}

void message::enter_name(char *temp) {
    bool correct;
    char *c;
    //........................................
    if(test==1) {
        cin.getline(temp,1000);
    }
    test = 1;
    //........................................
    do {
        correct = true;
        cout << "Enter a name: ";
        cin.getline(temp,1000);
        for(c=temp; *c!='\0'; c++)
            if(!((*c>='a' && *c<='z') || (*c>='A' && *c<='Z') || *c=='\"' || *c=='.' || *c=='\\' || *c==' ')) {
                correct = false;
                break;
            }
    } while(correct==false);

}

void message::enter_year(int *temp) {
    do {
        cout << "Enter a year: ";
        cin >> *temp;
    } while(*temp<0 || *temp>2009);
}

char *message::enter_book() {
    char buf[1000];
    ostrstream msg(buf, sizeof(buf));
    msg << "Would you like to enter a book ? ";
    msg << '\0';
    char *temp;
    temp = dyn_save(buf, strlen(buf));
    return temp;
}

char *error::memory_error() {
    char buf[1000];
    ostrstream err(buf, sizeof(buf));
    err << "There isn't enough memory available!" << endl;
    err << "Free more memory if you would like to continue ? y/n: ";
    err << '\0';
    char *temp;
    temp = dyn_save(buf, strlen(buf));
    return temp;
}
//Class_Functions_end...........................................................


//Functions.....................................................................
bool yes_or_no(char *x) {
    char y_n;
    try {
        cout << x;
        delete x;
        cin >> y_n;
        throw y_n;
    } catch(char y_n) {
        if(y_n=='y') return true;
        else return false;
    }
}



Компилира се само ако е самостоятелно както са казали по нагоре

g++ -o program main.cpp classes.cpp

Ако трябва да е библиотека малко по различно е компилирането - но за това прочети някой наръчник от нета - в момента е късно и не си спомням точното заклинание са статична и динамична библиотека.

За разработка добре ползваш линукс но подкарай една Anjuta или qt-creator, qtdevelop, xemcs + lisp абе някакво IDE зарежи приказките за vi, nano, обикновен редактор или нещо подобно. Нещата могат и лесно да стават. Vi и компания са за хора дето работят с модем на 300 бода и смятат че администрират - направо героизъм в мирно време. Целта е програмирането, а не писането на make файлове или борба с редактора за подреждане и т.н.т.

за 7. имам предвид че ако ангажираш още 65 такива масива за кратичко съобщение ще излезнеш от data segment-а прави ги колкото трябва на големина - масивите са подлярска работа.
Прочети какво се случва при изпозване на локални масивите
http://groups.google.com/group/microdia/browse_thread/thread/eae71fbdb66aa5fa
последното от треда - а не са големи - виж кръпката.
за 3. Задай си въпроса какво прави try/catch - ами на всяка операция проверява за маса изключения като делене на нула, използване на неинициялизиран указател, излизане от сегмент, .....
Като го слагаш значи чакаш изключение - фатално за нормално работеща програма без тази структура. Изключенията в общия случай са 2 кофти потребителски вход - тогава понеже сме го обработили за какво да казваме на глупавия потребител какво е сбъркал, да вкарва докато отмалее се ще го нацели - приложението става работещо, но не е приятелски настроено към потребителя. Второто е потенциялна грешка в програмата от липса на проверки. За това нека се направят проверките и всяко изключение (или група) да се обработят както трябва. Не са повече от 5-6 проверки в най тежкия случай. Иначе компилатора прави кода доста по бавен заради проверките.
Обаче при работа с хардуер понякога е неминуемо (ATI драйвера) особено като незнаеш какво да очакваш....
А процесора не е мъченик но с try/catch ще го измъчиш леко.
За използването на темплейт мини на виртуализация - т.е. да не е експеримент за универсализиране а да си има отделен виртуален клас за int,float,char,... и всички други неща които ще обработва.
Просто се опитай да го вкараш този темплейт във classes.cpp като го извадиш от main функцията. Изглежда просто и логично да стане. Да ама не. Или да го дебъгваш с вътрешна за него точка на прекъсване. Тогава е малко по сложно да разбереш от къде го викаш. Това копиране ще работи добре само в твоя или близък случай. Описано е защо да се ползват виртуални класове, а не по този начин в един много ценен наръчник 'С++ на разбираем език' . Защо ли този така изглеждащо 'универсален' код го няма в стандартните библиотеки?
441  Програмиране / Общ форум / Re: Как да си създам мой собствен .h файл в С++ ? -: Mar 21, 2009, 20:57
Брей цццц не е съвсем за начинаещи кода  :) .
Нормално както казах малки пропуски в основата за да не бишнеш сградате хвани малко С първо да погледнеш.
Ето го решението

Хедъра който се казва classes.h

#ifndef MYCLASS__HH
#define MYCLASS__HH

//това проверява дали е включен вече веднъж хедъра
// не го забравай да слагаш подобно нещо в бъдеще

#include<iostream>
#include<cstring>
#include<typeinfo>
#include<new>
#include<strstream>


int test=0;

using namespace std;

template<class TMP> TMP *dyn_save(TMP *temp, int length=0);

//Classes_begin.................................................................
class library {
public:
    virtual void f() {}
};

class book : public library {
public:
    ~book() { delete name; delete year; cout << "Destructing Book !!!" << endl; }
    char *name;
    int *year;
    int enter_info();
};

class item {
public:
    ~item() { cout << "Destructing Node !" << endl; }
    library *pData;
    item *pNext;
};

class stack {
    item *top;
public:
    ~stack() { cout << "Destructing Stack !" << endl; }
    stack() { top = NULL; }
    void push(library *obj);
    item *pop();
};

class message {
public:
    void enter_name(char *temp);
    void enter_year(int *temp);
    char *enter_book();
};

class error {
public:
    char *memory_error();
};

//Classes_end...................................................................


bool yes_or_no(char *x);



#endif
//Край на хедъра


това ти е С файла не забравай разширението .cpp
Аз го кръстих mycode.cpp




#include "classes.h"



template<class TMP>
TMP *dyn_save(TMP *temp, int length=0) {
    TMP *mem;
    try {
        if(length){
            if(typeid(*temp) == typeid(char)) {
                mem = new TMP[length+1];
                if(temp!=NULL)
                    memcpy(mem, temp, length+1);
            }
            else {
                mem = new TMP[length];
                if(temp!=NULL)
                    memcpy(mem, temp, (sizeof(temp[0])*length));
            }
        } else {
            mem = new TMP;
            if(temp!=NULL)
                *mem = *temp;
        }
    } catch(bad_alloc x) {
        return NULL;
    }
    return mem;
}


//Class_Functions_begin.........................................................
int book::enter_info() {
    char *temps=NULL;
    int *tempi=NULL;
    temps = dyn_save(temps, 1000);
    if(temps==NULL) return -1;
    tempi = dyn_save(tempi);

    message msg;
    msg.enter_name(temps);
    this->name = dyn_save(temps, strlen(temps));
    delete []temps;

    msg.enter_year(tempi);
    this->year = dyn_save(tempi);
    delete tempi;

    return 0;
}

void stack::push(library *obj) {
    item *node=NULL;
    node = dyn_save(node);

    node->pData = obj;
    node->pNext = top;
    top = node;
}

item *stack::pop() {
    book *pBook;
    item *temp;
    pBook = dynamic_cast<book *> (top->pData);
    cout << "Name: " << pBook->name;
    cout << endl;
    cout << "Year: " << *(pBook->year);
    cout << endl;
    delete pBook;
    temp = top;
    top = top->pNext;
    delete temp;
    return top;
}

void message::enter_name(char *temp) {
    bool correct;
    char *c;
    //........................................
    if(test==1) {
        cin.getline(temp,1000);
    }
    test = 1;
    //........................................
    do {
        correct = true;
        cout << "Enter a name: ";
        cin.getline(temp,1000);
        for(c=temp; *c!='\0'; c++)
            if(!((*c>='a' && *c<='z') || (*c>='A' && *c<='Z') || *c=='\"' || *c=='.' || *c=='\\' || *c==' ')) {
                correct = false;
                break;
            }
    } while(correct==false);

}

void message::enter_year(int *temp) {
    do {
        cout << "Enter a year: ";
        cin >> *temp;
    } while(*temp<0 || *temp>2009);
}

char *message::enter_book() {
    char buf[1000];
    ostrstream msg(buf, sizeof(buf));
    msg << "Would you like to enter a book ? ";
    msg << '\0';
    char *temp;
    temp = dyn_save(buf, strlen(buf));
    return temp;
}

char *error::memory_error() {
    char buf[1000];
    ostrstream err(buf, sizeof(buf));
    err << "There isn't enough memory available!" << endl;
    err << "Free more memory if you would like to continue ? y/n: ";
    err << '\0';
    char *temp;
    temp = dyn_save(buf, strlen(buf));
    return temp;
}
//Class_Functions_end...........................................................


//Main_Functions_begin..........................................................

int main() {

    book *Book=NULL;

    stack *stk=NULL;
    stk = dyn_save(stk);

    message *msg=NULL;
    msg = dyn_save(msg);

    error *err=NULL;
    err = dyn_save(err);

    int no_mem;
    do {
        begin: //This is used by goto.
        Book = dyn_save(Book);
        no_mem = Book->enter_info();
        if(no_mem==-1) {
            if(yes_or_no(err->memory_error())==false) break;
            else goto begin;
        }
        stk->push(Book);
        cout << flush;
    } while(yes_or_no(msg->enter_book())==true);

    cout << endl;

    while(stk->pop()!=NULL)
        cout << endl;
    delete stk;
    cout << "Sucess !";
    return 0;
}

//Main_Functions_end............................................................

//Functions.....................................................................
bool yes_or_no(char *x) {
    char y_n;
    try {
        cout << x;
        delete x;
        cin >> y_n;
        throw y_n;
    } catch(char y_n) {
        if(y_n=='y') return true;
        else return false;
    }
}



Компилира се с командата
c++ -o mycode mycode.cpp

За cin.getline() го погледни на дебъгера :-) помни последния ентер от клавиатурата - не го обработваш. Това е причината да ти излиза. А за това че е тъпо да ползваш флаг и то глобален - спор няма. Но все пак по добре със флага работещо отколко чисто и неработещо.

Няколко забележки:
1. Дава при компилация съобщение за внимание - обърни му внимание и нанеси корекциите (опцията -Wno-deprecated е забранена да я използваш  :D )
2. Използването template<class TMP> не е препоръчително - прави кода по трудно четим. В дадени случаи ако работите повече разработчици времето за откриване на изключения ще е повече от спестеното.
3. try/catch се използват когато много те мързи да провериш изключенията. Вина се базира на многократно повторение на този код. Но по-добре така отколкото без проверка.
4. Елегантно решение     if(temps==NULL) return -1;
5. Правилно
    this->year = dyn_save(tempi);
    delete tempi;

    return 0;
}
Въпреки че живота на указателя  tempi е между фигурните скоби (говоря за gcc g++ >2.х.х) по-добре е да се използва (може пък поредната версия да е бъгава кой-знае).
6. Не е коректна проверката има още условия освен това от 0 година едва ли ще вкарваш записи. Съобщението трябва да ти казва и формата на годината за глупави потребители като мене.
    do {
        cout << "Enter a year: ";
        cin >> *temp;
    } while(*temp<0 || *temp>2009);

7. Глупаво ограничение без проверка
char *message::enter_book() {
    char buf[1000];
Какво става ако вкарам 1001 символа за книга - гърми
8. Същото като 7 ама тука си се презастраховал имаш константни съобщения
char *error::memory_error() {
    char buf[1000];
    ostrstream err(buf, sizeof(buf));
9. Красота   
book *Book=NULL;
10. Забрави че съществува това в езика С и С++ - използвай структура от типа do{....}while();
Много грозно и не стилно е в структурен език да се ползва goto
goto begin;
11. Това да не е пример от С книжка за вин. ??? На такова ми бие. Хубавите книжки не ти препоръчват ОС или начин на компилиране. Нета също така не е книга - всекакви хора има там.

Не приемай много присърце коментара, но е добре да го разбереш, това все пак е моя стил.

Успех





442  Програмиране / Общ форум / Re: Как да си създам мой собствен .h файл в С++ ? -: Mar 21, 2009, 19:35
Дай си конкретния пример и ще го коментираме. Но за да имаш собствен хедър трябва да имаш (в повечето случаи) програма от два С файла.
За книжките и парите имаш богат избор. Има разхвърляни ръководства в нета но си на такова ниво че няма да разбереш как да ги ползваш и да ги систематизираш. Може да се получи така че да пишеш нещо без да знаеш основата (това доста често се наблюдава).
Не бъди скъперник ако искаш да получиш първо трябва да дадеш. В книжарницата ти предлагам да минеш и да прегледаш книгите, да ги пипнеш, и прегледаш. Която ти хареса (разбира се да е за абсолютно начинаещ) взимаш я и почваш систематично да четеш и да правиш примерите. Примерите се правят задължително с минимум 3 вариации по темата. Книгите обикновенно са написани от хора които знаят какво ти е нужно и е систематизирано не се скъпи за няколкото левчета дето ще им дадеш вместо да ги изконсумираш на кафета алкохоли или подобни. Така че чети. Избери си добре преведени на български книги за да не хабиш сили в превод и да се съсредоточиш на основното - програмирането.
От мене - имай търпение и кураж ще ти е необходимо ако се занимаваш сериозно - не се обезкуражавай от глупави коментари - много 'умници' забравят че и те са тръгнали от там дето и ти. Дай Боже повече такива като тебе - с желание да научат нещо ново.

Приятно копаене
443  Linux секция за напреднали / Хардуерни и софтуерни проблеми / Re: Проблем с ehci_hcd -: Mar 21, 2009, 18:21
Познат проблем. Има две решения. Едното е много просто и е само за устройства с памет (USB дискове, MP3 ...) Просто пробвай да я форматираш под линукс със FAT32 формат. Ако това не помогне - то проблема е хардуерен. Това поведение съм го описал преди година за камера как се решава (участвам в разработката на драйвера и) но е валидно за повечето китайски USB устройства. Описанието е тука http://groups.google.com/group/microdia/browse_thread/thread/9d0aef6183b5988a/ceb2c08f682a4d45?lnk=gst&q=hardware+problem#ceb2c08f682a4d45

Приятно копане
444  Нетехнически теми / Коментар / Re: Линукс - потребители :) -: Mar 21, 2009, 18:06
Оти ядете чиляка бре. Язе имам едни дикете от 1984/85 година с червена шапчица ама шъ требе да си изкопа флопи че тея муруци ги отмаанаха, и за едина седмица шъ гу подкара - е убави године беха на 286 съ ръботеше а 386 беше изтребител да не гуворим зъ турбу инжекцион с интеркулер 386DX  :o
445  Програмиране / Общ форум / Re: Как да си създам мой собствен .h файл в С++ ? -: Mar 21, 2009, 17:52
Прочети тази книжка първо  ;D
http://www.dummies.com/store/product/C-For-Dummies-5th-Edition.productCd-0764568523.html
446  Програмиране / Общ форум / Re: C++ i delete[] въпрос -: Mar 21, 2009, 12:21
Има функция която преобразува, година,месец,ден,час,минута,секунта в long казва се mktime
unsigned long mktime(const unsigned int year, const unsigned int mon,
                             const unsigned int day, const unsigned int hour,
                             const unsigned int min, const unsigned int sec);

А примера с указател към масив от указатели не е добър за използване в програма - обикновенно го дават като лош пример за стил на програмиране. По добре използвай масив от указатели към структура, или опашка/стек от структура (предполагам че става въпрос за поредица от текстови съобщения). По този начин направено е приемливо като стил за Java и PHP.
Препоръчвам ти "C++ на разбираем език" . Всяка година си я прехвърлям.
447  Хардуер за Линукс / Сървъри / Re: файл-сървър решение за малък офис -: Mar 20, 2009, 21:59
Зарежи всички неща наречени райд. За мой клиент купихме раид за оракъл със редхат и подръжка от тях и оракъл. Но при една гръмотевица ... вече няма нито клъстър нито райд нито данни. Добре че на една стара машина си копирах системно с rsync та това спаси нещата.
Моя съвет е просто и надеждно решение. Но първо бекъпа го сложи на отделен комп. Може и да е много стар въпроса е да има голям диск не е задължително да е бърз. Експортваш го през NFS на файловия сървър и на същия сложи този скрипт като си го настроиш според желанията.

#!/bin/sh
rm -r /backup/homekur`date --date="5 days ago" +%Y%m%d`
cp -al /backup/homekur`date --date="1 days ago" +%Y%m%d` /backup/homekur`date +%Y%m%d`
rsync -apuv --delete --exclude=*.mp3 --exclude=mp3 --exclude=/home/kur/mp3 --exclude=*.avi --exclude=/home/kur/.wine/drive_c/Program\ Files/Orcad/ --exclude=.wine/drive_c/Program\ Files/Orcad/ --exclude=*.jpg --exclude=*.JPG --exclude=.macromedia --exclude=/home/kur/.macromedia /home/kur/ /backup/homekur`date +%Y%m%d`
cd /

tar cvf - backup | gzip -c > kurdaylyarchive`date +%Y%m%d`.tar.gz
umount /mnt/samba
mount -t smbfs //backup/kur /mnt/samba -o username=kur,password=******
rm /mnt/samba/daylybackup/kurdaylyarchive*
mv /kurdaylyarchive* /mnt/samba/daylybackup/

В този скрипт използвам за бекъп за 5 дни на потребител, като заради това че самбата не подържа cp -a използвам локалния диск за архивиране и копирам само архива на 5 дневния бекъп.
Понеже си собственик и на двата компа можеш да го организираш директно това да се извърши на NFS-a.
Също така има статия тука която съм я използвал за скрипта ми. Много е добра и ми пасва идеално
http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=devs&key=390321666

И пак не забраввай че хардуерен проблем може да скапе и двата диска ако са на един компютър (технически казано - галванично свързани).

Приятно копаене

448  Предложения и въпроси относно Linux-BG / Предложения за подобрения на сайта / Re: Грешно съобщение при търсене във форума -: Mar 17, 2009, 19:05
Разбираемо :-) Аз май повече съм пропуснал в моите апликации отколкото тука.
Кой е родителя на сайта? Винаги съм мислил, че е от 0 писан :-) .
449  Хумор, сатира и забава / Кошче / Re: Проблем със Скайпска парола -: Mar 13, 2009, 23:31
Така е сега ползвам само гугълската поща и в абв една за спамове (регистрации на съмнителни сайтове).
Немога да си преместя 10-15 контакта защото няма да ме оторизират много лесно - собствениците им са страхотни параноици на тема вируси .... и подобни неща. А те са ми важни чуждоземци - все пак те плащат музиката немога да ги карам да се чувстват ...  ???
Продължавам си с дебъгера поне разбрах как се декодира скайпа сам себе си. В бъдеще може и да го използвам този похват. Още не съм стигнал до четенето на XML файла. В момента се мъча да го излъжа че не го дебъгвам понеже чете периодично часовника ми и като засече минута между два отчета гърми като топ - усеща гадта че е под дебъгер.
450  Хумор, сатира и забава / Кошче / Re: Проблем със Скайпска парола -: Mar 13, 2009, 22:15
Мисля че не са прави. След като е толкова сигурна връзката могат да се свържат с мене през дръгливия им скайпа, да потвърдя че съм аз и нещата да се оправят.
Ако ползвам чужда конфигурация мисля че може да се разбере много лесно. Освен това съм пазарил от тях така че могат да ме свържат с подписи в договори - проблема е че услуга съм купувал от фирма а не от моята карта.
На достатъчно години и с доста сериозно положение съм за да се правя на .....
В момента съм го пуснал на GDB но алгоритъма им е доста сериозен - стигнал съм до разкриптиране на изпълнимия код. Трудно се дебъгва на асемблер такава програма.
Ако някой знае какво има в XML полетата на хеш-сумите ще се радвам да подскаже.

За съжаление имам бизнеспартньори които се цицият за един GSM разговор. И на всякъде явно по света формулата АКЪЛ!=ПАРИ  ГЛУПОСТ=ПАРИ е в сила.
Страници: 1 ... 28 29 [30] 31