Dec
10
2009
Pare dni temu dostalem maila informujacego o dostepnosci Google Chrome dla systemu Linux. Oto kilka ciekawostek od zespolu Google Chrome, cytujac orginalny email:
~60 000 wierszy kodu specjalnie dla Linuksa,
23 wersje deweloperskie,
2713 poprawionych bledow w wersji Linux,
12 zewnetrznych wspolpracownikow pracujacych nad bledami w kodzie Google Chrome dla Linuksa oraz 48 zewnetrznych tworcow kodu
Paczke sciagamy z oficjalnej strony GC. Do wyboru, wersje 32 i 64 bit w debach (Debian/Ubuntu) i rpm (Fedora/openSUSE).
Podczas pierwszego uruchomienia, Chrome zaproponuje import ustawien – historia, ulubione, zakladki, wyszukiwanie, hasla – z innych przegladarek, np. Firefox’a.


Mozemy pominac ten krok dla czystej konfiguracji Google Chrome. Wyszukiwarka, jak nie trudno sie domyslic – Google, ktora mozemy zmienic na Onet, WP, a nawet Bing
.
Technicznie nieco kuleje podobnie zreszta jak Safari (WebKit) – css’y, i wyswietlanie grafik, tj .ico.

Zapraszam do testowania.
brak komentarzy | tagi: debian, Google Chrome, Linux, ubuntu | wpis w Programy
Nov
28
2009
Kubkow jest pelno, ale z Tuxem i jeszcze prawie wlasnorecznie wydrukowany to juz cos.
Przedstawiam moj wlasny, juz lekko przechodzony, ale nadal wspanialy
Tux Ubuntu Kubek


A tutaj graficzka przygotowana na podstawie wytycznych zaprzyjaznionej drukarni, nic tylko drukowac
brak komentarzy | tagi: kubek, Linux, tux, ubuntu | wpis w Linux, Mixed
Nov
11
2009
Na poczatek instalujemy openssh-server na komputerze, z ktorym bedziemy sie laczyc – w moim przypadku 192.168.1.5 (zdalny)
1. Instalujemy serwer ssh
czlowiek@zdalny:~$ sudo apt-get install openssh-server
2. Otwieramy port 22
czlowiek@zdalny:~$ sudo iptables -I INPUT -p tcp --dport 22 -j ACCEPT
3. Restartujemy serwer
czlowiek@zdalny:~$ sudo /etc/init.d/ssh restart
* Restarting OpenBSD Secure Shell server sshd [ OK ]
4. Teraz mozemy sie juz laczyc
czlowiek@maszyna:~$ ssh czlowiek@192.168.1.5
czlowiek@192.168.1.5's password:
Linux zdalny 2.6.31-15-generic #49-Ubuntu SMP Fri Nov 6 09:52:03 UTC 2009 i686
...
Last login: Wed Nov 11 00:23:31 2009 from 192.168.1.1
czlowiek@zdalny:~$ sudo apt-get moo
(__)
(oo)
/------\/
/ | ||
* /\---/\
~~ ~~
...."Have you mooed today?"...
czlowiek@zdalny:~$
Gdybysmy chcieli zmienic, naprzyklad port to zapraszam do pliku /etc/ssh/sshd_config.
Jezeli mamy uruchomiona nakladke ufw
czlowiek@zdalny:~$ sudo ufw status
Status: active
to tak otwieramy porty
czlowiek@zdalny:~$ sudo ufw allow 22/tcp
tak zamykamy
czlowiek@zdalny:~$ sudo ufw deny 22/tcp
2 komentarzy | tagi: Linux, network, ssh, ubuntu | wpis w Konfiguracja
Oct
29
2009
Dostepny jest juz najnowszy Ubunciak. Mozna go pobrac stad. A tutaj zapoznac sie z nim.
Tak w skrocie … zmieniono jednak Pidgina na Empathy. Firefox juz w wersji 3.5, Rythmbox, Totem, pelen pakiet Open Office 3.0. Ubuntu One – iFolder, mozna juz powiedziec, ze konkurent Dropbox’a. Software Center z podzialem na kategorie, tj. Edukacja, Gry, Dzwiek i Wideo, Grafika, Biuro, no i Programowanie (warte uwagi Ubuntu Quickly). W kategorii gier mamy ponad 400 darmowych pozycji, ale to oczywiscie nie wszystko.
Troche zmieniony domyslny wyglad, kilka nowych tapetek i ikonek, ale najwazniejsza jest wydajnosc.
Kernel 2.6.31, usprawniona grafika Intela lub ATI. W kernelu znalazla sie tez obsluga USB 3.0. EXT4, GRUB 2, GNOME 2.28 lub KDE 4.3.1.
Dostepne odmiany.
Oficjalki:
- Kubuntu,
- Edubuntu,
- Ubuntu Server Edition,
Uznane:
- Xubuntu
- Ubuntu Studio
- Mythbuntu
a tutaj dostepna polska wersja.
1 komentarz | tagi: download, Linux, Ubuntu 9.10 | wpis w Linux, Programy
Oct
15
2009
Po tym jak napisalismy i uruchomilismy nasz programik helloworld, mozemy teraz przejsc do bardziej ciekawych rzeczy. Na rozgrzewke proponuje pare watkow. Naszymi bohaterami beda, zbieracze zbierajacy ziarno z pola i znoszacy je do spichlerza.
Czym jest watek? Nie wiem jak w innych systemach, ale w unixach jest to proces, wykonywany w watku glownym, ktory jest procesem
. Dobrze, jak juz wiemy co to jest watek to przejdziemy dalej.
Tworzymy plik programu
czlowiek@maszyna:~$ nano seeds.c
Dolaczamy pliki naglowkowe
#include <stdio.h>
#include <string.h>
#include <pthread.h>
Tworzymy globalne przechowywacze oraz strukture wlasciwosci zbieracza
int grain; // ziarno na polu
int granary; // ziarno w spichlerzu
// struktura wlasciwosci zbieracza
struct collector
{
char name[32]; // nazwa zbieracza
int seeds; // ilosc zebranych ziaren
int performance; // wydajnosc
};
I funkcje watku zbieracza – bedzie wywolywana podczas kazdego utworzenia
void* collect_seeds (void* collector_data)
{
// pobranie danych zbieracza
struct collector *data;
data = (struct collector *) collector_data;
// zebranie ziarna
int collected;
collected = data->performance;
if (collected <= grain) {
grain = grain - collected;
} else {
collected = grain;
grain = 0;
}
// aktualizacja danych zbieracza
data->seeds = data->seeds + collected;
printf ("%s zebral %i\n", data->name, collected);
// zwrocenie ilosci zebranych ziaren
return (void*) collected;
}
A teraz watek glowny
int main (int argc, char *argv[])
{
// ustalenie ilosci ziarna
if (argc == 2 && atoi(argv[1]) > 0) {
grain = atoi(argv[1]);
}
if (grain == 0)
grain = 1000;
granary = 1; // nie wymietli wszystkiego ; )
// mieszadlo liczb losowych
srand (time (0));
// ustalanie danych zbieraczy
struct collector collector1;
strncpy (collector1.name, "Dziwigor", sizeof (collector1.name) - 1);
collector1.seeds = 0;
collector1.performance = rand() % 10 + 1; // losowanie wydajnosci
struct collector collector2;
strncpy (collector2.name, "Niesiebud", sizeof (collector2.name) - 1);
collector2.seeds = 0;
collector2.performance = rand() % 10 + 1;
printf ("Ziarno na polu: %i ziaren\n", grain);
printf ("Ziarno w spichlerzu: %i ziaren\n", granary);
printf ("Zaczely sie zniwa\n\n");
int collected_seeds;
// wskazniki do watkow zbieraczy
pthread_t thread1;
pthread_t thread2;
// petelka dopoki nie zostanie zebrane cale ziarno
while (grain > 0) {
Do tej pory luzik wszystko wiadomo, tworzenie i ustalanie wartosci zmiennych, no i teraz dochodzimy do najwazniejszego elementu programiku – wyzwalanie watkow
Utworzenie watku
// utworzenie watku Dziwigora
pthread_create (&thread1, NULL, collect_seeds, (void*)&collector1);
Pobranie danych z watku
// pobranie zebranych ziaren
pthread_join (thread1, (void*) &collected_seeds);
“Przesypanie” ziarna do spichlerza, i tak w kolko, dopoki ludki nie zbiora wszystkiego
// aktualizacja spichlerza
granary = granary + collected_seeds;
pthread_create (&thread2, NULL, (void*) collect_seeds, (void*)&collector2);
pthread_join (thread1, (void*) &collected_seeds);
granary = granary + collected_seeds;
printf ("Pozostalo: %i ziaren\n", grain);
}
printf ("\nZniwa zakonczone\n");
printf ("%s zebral %i\n", collector1.name, collector1.seeds);
printf ("%s zebral %i\n", collector2.name, collector2.seeds);
printf ("Ziarno na polu: %i ziaren\n", grain);
printf ("Ziarno w spichlerzu: %i ziaren\n", granary);
}
Jezeli skonczylismy pisac kod, to kompilujemy programik
czlowiek@maszyna:~$ gcc -o seeds seeds.c -pthread
za pomoca parametru -pthread informujemy kompilator aby dolaczyl obpowiednie biblioteki, jak tego nie zrobimy to sofcik oczywiscie nie skompiluje sie.
Uruchamiamy programik
czlowiek@maszyna:~$ ./seeds 100
Ziarno na polu: 100 ziaren
Ziarno w spichlerzu: 1 ziaren
Zaczely sie zniwa
Dziwigor zebral 5
Niesiebud zebral 6
Pozostalo: 89 ziaren
Dziwigor zebral 5
Niesiebud zebral 6
Pozostalo: 78 ziaren
...
Dziwigor zebral 5
Niesiebud zebral 6
Pozostalo: 1 ziaren
Dziwigor zebral 1
Niesiebud zebral 0
Pozostalo: 0 ziaren
Zniwa zakonczone
Dziwigor zebral 46
Niesiebud zebral 54
Ziarno na polu: 0 ziaren
Ziarno w spichlerzu: 101 ziaren
Gdy widzimy cos podobnego to odnieslismy kolejny sukces
.
Tutaj wersja dla niecierpliwych:
Pobierz zrodlo i/lub binarke
brak komentarzy | tagi: C/C++, Linux, programowanie | wpis w C/C++, Programy