Forum Linux.pl

Środowiska graficzne => GNOME => Wątek zaczęty przez: nstn w 2006-05-03, 13:30:56

Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: nstn w 2006-05-03, 13:30:56
Jestem nowy jesli chodzi o programowanie pod linuxem.
Zadano mi takie zadanie:
używając funkcji read należy pobrac 2 łancuchy znakow ze standardowego wejscia oraz wyswietlic ponownie lancuch zawierajacy wiekasza liczbe znakow. W przypadku gdy lancuchy sa rowne, nalezy wyswietlic oba. Do wyswietlenia danych uzyc funkcji write.

Przeczytalem znaleziony gdzies w necie opis funkcji read i write, ale nie wiem jak zastosowac to do tego zadania. Byc moze dla niektorych osob takie zadanie to pestka, ale moze pomogl by mi ktos zrobic to zadanie. Albo chociaz jakies przykladowe wykorzystanie write i read, ktore dotyczylo by mojego zadania.
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: chmooreck w 2006-05-03, 14:02:14
2006-05-03 13:30:56 nstn napisał:

> Jestem nowy jesli chodzi o programowanie pod linuxem.
 > Zadano mi takie zadanie:
 > używając funkcji read należy pobrac 2 łancuchy znakow ze standardowego wejscia oraz wyswietlic
 > ponownie lancuch zawierajacy wiekasza liczbe znakow. W przypadku gdy lancuchy sa rowne, nalezy
 > wyswietlic oba. Do wyswietlenia danych uzyc funkcji write.
 >
 > Przeczytalem znaleziony gdzies w necie opis funkcji read i write, ale nie wiem jak zastosowac
 > to do tego zadania. Byc moze dla niektorych osob takie zadanie to pestka, ale moze pomogl by mi
 > ktos zrobic to zadanie. Albo chociaz jakies przykladowe wykorzystanie write i read, ktore
 > dotyczylo by mojego zadania.

http://rtfm.killfile.pl

C ?
masz to na jakies zadanie domowe ? jesli tak, to zapewne cala potrzebna wiedze ktos ci juz staral sie co najmniej raz przekazac - trzeba bylo uwazac...

a moze zaproponuj jakas wersje wyjsciowa ? przedyskutujemy razem... moze dojdziemy do czegos sensownego, a ty sie przynajniej choc troche nauczysz...

... na gotowe rozwiazanie raczej bym w tym miejscu nie liczyl ;-) chociaz z pewnoscia dla wielu stalych bywalcow zadanie to jest blahostka...
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: Lorenzo w 2006-05-03, 14:27:43
Jak to nie wiesz. Pobierasz dane wejsciowe w postaci dwóch łańcuchów, sprawdzasz warunkiem długości i wypisujesz.
A tu o funkcjach read() i write()
man read
man 2 write
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: nstn w 2006-05-03, 22:07:12
udalo mi sie do tej pory wymyslec cos takiego:

#include
#include
#include

int main()
{
size_t length;
char * buffer;
buffer=(char *)malloc(length);
ssize_t bytes_read;
int fd;

bytes_read = read(fd, buffer, length);
//wczytane dane wrzucimy do buffer

//tu trzeba dac warunki za pomoca if , a dalej write
write(fd, buffer, length);
return 0;
}


ale naprawde nie wiem jak mam pobrac dane wejsciowe (w postaci dwóch łańcuchów)
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: chmooreck w 2006-05-03, 23:40:49
2006-05-03 22:07:12 nstn napisał:

 > size_t length;
 > char * buffer;
 > buffer=(char *)malloc(length);
 > ssize_t bytes_read;
 > int fd;
 >
 > bytes_read = read(fd, buffer, length);
 > //wczytane dane wrzucimy do buffer
 >
 > //tu trzeba dac warunki za pomoca if , a dalej write
 > write(fd, buffer, length);
 > return 0;
 > }

no i super...
nie sadzisz, ze zmienne trzebaby zainicjalizowac ?

czy uzycie read i write jest obligatoryjne (sa funkcje lepiej nadajce sie do twojego zadania) ?

dlaczego bufor alokujesz dynamicznie (nie oznacza to, ze jest to niepoprawne... tylko napisz dlaczego) ?
czy na pewno jeden bufor ci wystarczy ?
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: nstn w 2006-05-04, 19:26:54
jak mam pobrac dane wejsciowe (w postaci dwóch łańcuchów)

bo tego w zasadzie nie wiem.

Z konsoli to bym uzyl cat zeby wpisac do pliku, a tu????
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: nstn w 2006-05-04, 19:30:20
2006-05-03 23:40:49 chmooreck napisał:


 > czy uzycie read i write jest obligatoryjne (sa funkcje lepiej nadajce sie do twojego zadania)
 > ?
 >
 > dlaczego bufor alokujesz dynamicznie (nie oznacza to, ze jest to niepoprawne... tylko napisz
 > dlaczego) ?
 > czy na pewno jeden bufor ci wystarczy ?


1. read i write muszą byc uzyte
2. bufor alokuje dynamicznie bo nie wiem ile znakow bedzie mial ten ciąg znakow
3.byc moze potrzebowalbym dwoch buforow, w koncu mają byc dwa ciągi znakow
4. ale jak wprowadzic te dane? Nie kumam tego
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: jk33 w 2006-05-04, 20:25:22
2006-05-04 19:30:20 nstn napisał:

 > 2. bufor alokuje dynamicznie bo nie wiem ile znakow bedzie mial ten ciąg znakow

Mhm... Tylko, jeśli dobrze rozumiem, najpierw musisz wczytać ten ciąg, żeby
policzyć jego długość, więc jest tu problem...
Ponadto w Twoim kodzie nie wiadomo skąd bierzesz to length (jest deklaracja
zmiennej, ale gdzie nadajesz jej wartość?)

Nie masz w  specyfikacji zadania podanych jakiś maksymalnych długości ciągów?

Potrafisz napisać ten program uzywając stdio.h ?
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: chmooreck w 2006-05-04, 20:37:53
2006-05-04 19:30:20 nstn napisał:

 > 2. bufor alokuje dynamicznie bo nie wiem ile znakow bedzie mial ten ciąg znakow

to teraz mi powiedz jakiej dlugosci bufor zaalokowales... bo nie daje mi to spokoju ;-)

 > 4. ale jak wprowadzic te dane? Nie kumam tego

poczytaj co to jest ten fd (file descriptor)...
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: j3drek w 2006-05-04, 22:02:53
ja kiedys napisalem takie cos

zwraca zaalokowany dynamicznie lancuch, musisz go zwolnic za pomoca free() w bsize jest ilosc wczytanych danych
 
void *intobuff(int *bsize)
{
        if (!bsize)
                return NULL;

        char stat_b[1024];
        int stats = 1024;

        *bsize = 0;
        int s;
        char buf;
        s = 0;
        int g_size = 0;
        int w_size = 0;
        void *res = NULL;
        int end;
        while (1){
          fread(&buf, 1, 1, stdin);
                end = feof(stdin);
                if (!buf){
                        fprintf(stderr, \\"HTMLP: W buforze wejsciowym na pozycji %d pojawil sie znak konca pliku 0x0, a nie wczytano jescze wszystkiego!n\\", g_size);
                        end = 1;
                }
                stat_b = buf;
                if ( (s >= stats) || ( end ) ){
                        if (res){
                                res = realloc(res, g_size);
                        } else
                        {
                                if ( s < stats)
                                        res = malloc(s);
                                else
                                        res = malloc(stats);
                        }
                        memcpy(res + w_size, &stat_b[0], s);
                        w_size += s;
                        if (end)
                                break;
                }
                s++;
                g_size++;
                if (s > stats)
                        s = 0;
        }
        *bsize = g_size;
        return res;
}


troche to zagmatwane, i trzeba by to deczko przerobic ale moze sie przyda...
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: chmooreck w 2006-05-04, 22:59:55
wydaje mi sie, ze autorowi zadania chodzilo o wykorzysztanie funkcji read i write, a nie automatyczna alokacje bufora odpowiedniej wielkosci ;-)
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: j3drek w 2006-05-05, 11:22:32
2006-05-04 22:59:55 chmooreck napisał:

> wydaje mi sie, ze autorowi zadania chodzilo o wykorzysztanie funkcji read i write, a nie
 > automatyczna alokacje bufora odpowiedniej wielkosci ;-)

no wiem :-)
ale to jest tylko przyklad, a nie rozwiazanie tego konkretnego zadania.

Poza tym jest tam uzycie read(), wlasciwie fread() ale mozna by to zastapic :P

i na koniec taka dobra rada dla @nstn manuale systemowe to podstawa, tam jest praktycznie wszystko :)
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: chmooreck w 2006-05-05, 21:23:04
na kiedy masz zrobic to zadanie ?
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: nstn w 2006-05-05, 22:06:18
2006-05-05 21:23:04 chmooreck napisał:

> na kiedy masz zrobic to zadanie ?
 na niedziele ale moze kumpel dzisiaj cos tez wymysli i moze dorzuci tu kilka swoich zlotych mysli

aha, i jeszcze jedno
nikt mi nic nigdy nie tłumaczyl na ten temat
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: chmooreck w 2006-05-05, 23:39:22
2006-05-04 20:37:53 chmooreck napisał:

> 2006-05-04 19:30:20 nstn napisał:
 >
 >  > 2. bufor alokuje dynamicznie bo nie wiem ile znakow bedzie mial ten ciąg znakow
 >
 > to teraz mi powiedz jakiej dlugosci bufor zaalokowales... bo nie daje mi to spokoju ;-)

??

 >  > 4. ale jak wprowadzic te dane? Nie kumam tego
 >
 > poczytaj co to jest ten fd (file descriptor)...

w szczegolnosci czy ma jakis zwiazek ze standardowym wejsciem i wyjsciem ?


 > nikt mi nic nigdy nie tłumaczyl na ten temat

to najwyzszy czas zajrzec do manuali ;-)

P.S.
WYJATEK (tylko dla mstn, dla tego watku): jesli chcesz, to mozesz przeslac mi na maila twoje gg, moze akurat znajde chwilke, zeby ci pomoc... potem OBOWIAZKOWO dzialajacy program wklej tu, na forum, laczie z komentarzem co sie skad wzielo... ;-)
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: chmooreck w 2006-05-07, 19:59:46
poniewaz jest juz schylek niedzieli i tak mam juz to napisane... dla potomnosci...


#include

#define MAX_BUF_LEN 1024

int main(int argc, char ** argv)
{
  char str1[MAX_BUF_LEN];
  char str2[MAX_BUF_LEN];
  int str1len, str2len;

  str1len = read (0, str1, MAX_BUF_LEN);
  if (str1len == -1 ){
    // Obsluga bledu    
    return 1;
  }
  str2len = read (0, str2, MAX_BUF_LEN);
  if (str2len == -1 ){
    // Obsluga bledu    
    return 2;
  }

  if (str1len >= str2len){
    write(1, str1, str1len);
  }
  if (str1len <= str2len){
    write(1, str2, str2len);
  }

  return 0;
}


i jeszcze tytulem wytlumaczenia dla nstn:
stdin zawsze ma deskryptor pliku rowny 0, stdout 1, a stderr 2
strumienie te otwiera dla kazdego programu system i my nie musimy sie martwic ich otwieraniem i nie powinnismy ich zamykac... reszta chyba dla ciebie jest oczywista ;-)
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: nstn w 2006-05-08, 18:10:51
wiedzialem ze to zadanie jest proste, ale nie myslalem ze az tak...


dzieki chmooreck
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: relive w 2006-05-03, 11:34:23
Witam serdecznie na forum, jest to mój pierwszy post.
Ostatnimi czasy zainteresowałem się dystrybucją linuksa zwaną Arch Linux. Używam jej od kilku dni i zaczyna mi się podobać. Napotkałem do tej pory kilka problemów, z którymi nie umiem sobie poradzić. Oto one:

1. Problem z czcionkami w Gnome. Mianowicie podczas używania tego środowiska graficznego nie widzę nigdzie polskich czcionek. Zamiast polskich znaków wyświetlane są kwadraciki z jakimiś cyferkami w środku. W systemie mam zainstalowane pakiety xorg-fonts-100dpi, xorg-fonts-type1, xorg-fonts-encodings, ale to niestety nie pomaga. Co należy zrobić aby zamiast tych kwadracików były widoczne polskie znaki diakrytyczne?

2. Problem z Alsą. Polega on na tym, że po zainstalowaniu alsa-lib i alsa-utils (alsa-driver nie instalowałem bo używam jądra z gałęzi 2.6) dźwięk oczywiście działa. Jednak ustawienie jego głośności sprawia małe problemy. Poruszanie suwakami Master i PCM nie daje żadnego efektu (oczywiście są unmutowane). Dopiero przy użyciu suwaka Wave Surround mogę normalnie regulować głośność dźwięku. A tak chyba być nie powinno, nieprawdaż? Od czego to jest zależne? Proszę o wyjaśnienie mi na czym to polega i wyprowadzenie mnie z błędu, bo możliwe, że się mylę. Moja karta dźwiękowa to SBLive! Player 5.1.

3. Menu Gnome. Chciałbym spersonalizować swoje menu. To znaczy sam decydować, które wywołania programów mają być w menu, a które usunąć. Jak to się robi? Gdzie ustawia? O czym muszę wiedzieć?
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: Lorenzo w 2006-05-03, 12:39:17
Spróbuj zainstalować czcionki z kodowaniem latin2 (iso-8859-2) takie jak biznet, czy terminus, oraz/albo czcionki true type, np. ttf-freefont, ttf-gentium, ttf-dejavu.

P.S. U ciebie mogą się inaczej paczki nazywać, linux linuksem ale co dystrybucja to inaczej.
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: relive w 2006-05-03, 15:21:28
2006-05-03 12:39:17 Lorenzo napisał:

> Spróbuj zainstalować czcionki z kodowaniem latin2 (iso-8859-2) takie jak biznet, czy terminus,
 > oraz/albo czcionki true type, np. ttf-freefont, ttf-gentium, ttf-dejavu.
 >
 > P.S. U ciebie mogą się inaczej paczki nazywać, linux linuksem ale co dystrybucja to inaczej.

Problem z czcionkami rozwiązany.. Wystarczyło przeinstalować paczki xorg-fonts-type1, xorg-fonts-misc, xorg-fonts-type1. Pozostają nadal aktualne moje dwa pozostałe pytania :)
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: olka w 2006-05-03, 16:04:31
2006-05-03 15:21:28 relive napisał:

(...)
 >Pozostają nadal aktualne moje dwa pozostałe pytania :)
 
To ja w kwestii personalizacji Gnome'a. Swego czasu też z tym walczyłam:
http://newbie.linux.pl/?id=forum&show=post&post=86909

Ogólnie to powodzenia :D.
Ja używam teraz fluxboxa i jestem po prostu zachwycona :-) Polecam!
(nawet siostrom się podoba ;-)

pozdrawiam
olka
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: relive w 2006-05-03, 22:43:58
2006-05-03 16:04:31 olka napisał:

 > (...)
 >  >Pozostają nadal aktualne moje dwa pozostałe pytania :)
 >  
 > To ja w kwestii personalizacji Gnome'a. Swego czasu też z tym walczyłam:
 > http://newbie.linux.pl/?id=forum&show=post&post=86909
 >
 > Ogólnie to powodzenia :D.
 > Ja używam teraz fluxboxa i jestem po prostu zachwycona :-) Polecam!
 > (nawet siostrom się podoba ;-)

Szczerze mówiąc kiedy oglądam wymuskane, wychuchane, cieszace oczy "fluxboxy" różnych użytkowników prezentujących swoje dzieła w Internecie mam ochotę się na niego przerzucić. Jednak sam nie potrafię dostosować Fluxboxa tak, aby chociaż troche zaspokajał moje poczucie estetyki. A ja lubie ladne graficzne rozwiązania :)
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: borysiasty w 2006-05-04, 12:22:52
 > Poruszanie suwakami Master i PCM nie daje żadnego efektu
 > (oczywiście są unmutowane). Dopiero przy użyciu suwaka Wave Surround
> mogę normalnie regulować głośność dźwięku.

A do którego gniazdka podłączyłes głośniki? U mnie suwaki Master i PCM działają tylko na przednich głośnikach (bodaj zielone gniazdko), zaś Surround na tylnych.
Tytuł: Problem z czcionkami w Gnome i nie tylko..
Wiadomość wysłana przez: relive w 2006-05-07, 17:09:10
2006-05-04 12:22:52 borysiasty napisał:

 >  > Poruszanie suwakami Master i PCM nie daje żadnego efektu
 >  > (oczywiście są unmutowane). Dopiero przy użyciu suwaka Wave Surround
 > > mogę normalnie regulować głośność dźwięku.
 >
 > A do którego gniazdka podłączyłes głośniki? U mnie suwaki Master i PCM działają tylko na
 > przednich głośnikach (bodaj zielone gniazdko), zaś Surround na tylnych.

Masz racje.. pokombinowałem z podłączeniem głośników i wszystko stało się jasne. Dzięki!