niedziela, 24 stycznia 2010
Przeprowadzka na wordpressa
Zw względu na ograniczone możliwości bloggera przenoszę mój blog na wordpressa. Nowy adres to: www.wmroczkowski.pl/
sobota, 7 listopada 2009
Darmowe seminaria internetowe Google AdWords
Google uruchomiło darmowe seminaria internetowe AdWords. Wystarczy się zarejestrować i być online o określonej godzinie, żeby uczestniczyć. Możliwe jest również późniejsze odtworzenie seminarium. Aby uczestniczyć trzeba posiadać konto AdWords. Dostępne seminaria znajdują się pod adresem: Seminaria AdWords.
Poniżej zamieszczam wideo wprowadzające:
Poniżej zamieszczam wideo wprowadzające:
[MySQL] Zapisywanie wyników zapytania bezpośrednio do pliku
Oprócz zapisywania wyników zapytać SQL do zmiennych i wyświetlania ich na ekranie możemy też zapisywać je bezpośrednio do pliku. Zakładając, że mamy prostą tabelę:
Możemy użyć następującego zapytania aby zapisać wynik do pliku:
Takie zapytanie spowoduje zapisanie pliku 'nazwa_pliku.txt' do folderu bazy danych np. MySQL\Data\Nazwa_bazy. Aby zapisać plik w innym miejscu należy w nazwie podać pełną ścieżkę. Analogicznie działa funkcja LOAD DATA INFILE, która importuje z pliku tektowego rekordy do bazy.
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`name` varchar(45) character set latin2 NOT NULL,
`surname` varchar(70) character set latin2 NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `user` VALUES (1, 'Name1', 'Surname1');
INSERT INTO `user` VALUES (2, 'Name2', 'Surname2');
INSERT INTO `user` VALUES (3, 'Name3', 'Surname3');
INSERT INTO `user` VALUES (4, 'Name4', 'Surname4');
Możemy użyć następującego zapytania aby zapisać wynik do pliku:
SELECT * INTO OUTFILE 'nazwa_pliku.txt' FIELDS TERMINATED BY '\t' ESCAPED BY '\\' LINES TERMINATED BY '\n' FROM user
Takie zapytanie spowoduje zapisanie pliku 'nazwa_pliku.txt' do folderu bazy danych np. MySQL\Data\Nazwa_bazy. Aby zapisać plik w innym miejscu należy w nazwie podać pełną ścieżkę. Analogicznie działa funkcja LOAD DATA INFILE, która importuje z pliku tektowego rekordy do bazy.
niedziela, 1 listopada 2009
[PHP] Jednakowe formatowanie waluty dla każdej wartości
Jeżeli posiadasz stronę na której często umieszczasz w treści wartości podane w określonej walucie to na pewno chcesz żeby takie wpisy były zawsze w tym samym formacie. Przydaję się to zwłaszcza kiedy wyświetlasz wiele takich wartości np. z bazy danych. Warto zastanowić się wtedy nad napisaniem prostej funkcji, która załatwi tą sprawę za Ciebie. W poniższym przykładzie zostało zastosowane formatowanie z wykorzystaniem dwóch miejsc po przecinku oraz kropki. Również, jeżeli wartość jest na minusie to najpierw wyświetlamy znak minus, następnie walutę oraz wartość. Przykład jest prosty, więc nie wymaga większego tłumaczenia.
<?php
function formatCurrencyEuro($value, $symbol='€')
{
$value = trim($value); //usuwamy ewentualne puste miejsca
if (is_numeric($value)){ //sprawdzamy czy wartość jest liczbą
if ($value >= 0){
$output = $symbol . number_format($value,2);
} else {
$output = '-' . $symbol . number_format(abs($value), 2);
}
}
return $output;
}
echo "Do zapłaty jest ".formatCurrencyEuro(23);
echo "Twoje saldo to ".formatCurrencyEuro(-56);
?>
środa, 14 października 2009
Błąd 0x000003eb w Vista podczas dodawania drukarki zainstalowanej w sieci na XP
Dzisiaj miałem pewien problem z dodaniem drukarki w domenie. Drukarka była podłączona lokalnie do hosta z systemem Windows XP. Natomiast ja chciałem ją również dodać jednostki z systemem Windows Vista. Każda próba dodania drukarki kończyła komunikatem o błędzie "Błąd 0x000003eb". Próbowałem dodać ją przez otoczenie sieciowe oraz przez kontrolkę drukarki. Nic nie działało. Okazało się jednak, że jest pewne "dziwne" rozwiązanie problemu.
Poniżej w krokach przedstawiam co należy w takiej sytuacji zrobić:
1. Wchodzimy do panelu sterowania.
2. Klikamy w drukarki.
3. Dodaj drukarkę.
4. Wybieramy "Dodaj drukarkę lokalną".
5. Następnie "Utwórz nowy port / Typ portu: Local port".
6. I następnie w polu wprowadź nazwę portu podajemy adres drukarki, którą chcemy podłączyć, czyli \\adres_lub_nazwa_komputera\nazwa_drukarki.
Nie udało mi się znaleźć w internecie informacji na temat przyczyn występowania ale powyższe czynności powinny pomóc. Panowie z Microsoftu powinni bardziej się postarać albo chociaż zamieścić w necie bardziej szczegółową informację dotyczącą występujących w ich systemach błędów.
Poniżej w krokach przedstawiam co należy w takiej sytuacji zrobić:
1. Wchodzimy do panelu sterowania.
2. Klikamy w drukarki.
3. Dodaj drukarkę.
4. Wybieramy "Dodaj drukarkę lokalną".
5. Następnie "Utwórz nowy port / Typ portu: Local port".
6. I następnie w polu wprowadź nazwę portu podajemy adres drukarki, którą chcemy podłączyć, czyli \\adres_lub_nazwa_komputera\nazwa_drukarki.
Nie udało mi się znaleźć w internecie informacji na temat przyczyn występowania ale powyższe czynności powinny pomóc. Panowie z Microsoftu powinni bardziej się postarać albo chociaż zamieścić w necie bardziej szczegółową informację dotyczącą występujących w ich systemach błędów.
Zaczynasz z Google Adwords? Zacznij od 5 wskazówek adwords zapewniających sukces
Jeżeli chcesz rozpocząć nowe kampanie Google Adwords to proponuję zacząć od krótkiego filmu zrobionego przez Google na temat skutecznej reklamy w tym systemie. Wskazówki mogą się wydawać oczywiste ale są naprawdę istotne.
środa, 23 września 2009
[PHP] Jak zablokować wgrywanie na serwer plików przekraczających określony rozmiar
Jeżeli posiadamy portal na którym użytkownicy wgrywają na serwer różnego rodzaju pliku na pewno chcielibyśmy wprowadzić limit wielkości plików, które wgrywają. Zakładając, że w naszym formularzu znajduje się input, który wygląda mniej więcej tak:
Możemy dołożyć następujący kod PHP:
Możemy dołożyć następujący kod PHP:
$file_size = $_FILES['plik']['size'];
// podajemy wielkość w Bajtach, więc zakładając że blokujemy wszystko powyżej 500KB
if($file_size < 512000) {
/*
Tutaj kod który zapisuje pliki na serwerze
*/
}
else echo "Plik przekracza 500 KB";
[PHP] Jak wygenerować losowy ciąg znaków - generowanie hasła
Jeżeli chcemy umieścić na naszej stronie skrypt generujący losowe hasła dla naszych użytkowników, możemy to zrobić na kilka sposobów. Poniżej znajduje się prosty i szybki sposób, który polega na zaszyfrowaniu daty i losowej liczby oraz obcięcie wyniku do wybranej długości. Poniżej przykład zastosowania. Zostanie wygenerowane hasło, które ma 9 znaków.
function haslo($limit)
{
return substr(md5(date("d.m.Y.H.i.s").rand(1,1000000)) , 0 , $limit);
}
$new_pass = haslo(9);
poniedziałek, 7 września 2009
Dlaczego układ na tabelkach jest głupi?
Poniżej znajduje się bardzo interesująca prezentacja tłumacząca dlaczego układ na tabelkach jest głupi :) Zapraszam do lektury!
Dlaczego układ na tabelkach jest głupi?
Dlaczego układ na tabelkach jest głupi?
niedziela, 6 września 2009
Programowanie obiektowe (cz. 9) - klasa sprawdzająca poprawność maski sieciowej - przykład
Wykorzystując poznane do tej pory wiadomości możemy napisać np. klasę, która będzie sprawdzała poprawność maski sieciowej. Przykład takiej klasy znajduje się poniżej. W komentarzach jest opis. Jeżeli coś jest nie jasne to proszę pytać w komentarzach.
<?php
class Netmask {
private $_netmask;
//funkcja zamieniająca numeryczny adres maski na binarny
private function dqtobin($dqin) {
$dq = explode(".",$dqin);
for ($i=0; $i<4 ; $i++) {
//oktet nie może przekraczać 255. Maska to binarny rząd jedynek lub zer
//Do ciągu binarnego pasuje również 256, więc trzeba je wykluczyć
if ($dq[$i] <= 255) {
$bin[$i]=str_pad(decbin($dq[$i]), 8, "0", STR_PAD_LEFT);
}
else
{
throw new Exception ("Oktet numer $i wynosi $dq[$i], więc jest większy niż 255.");
}
}
return implode("",$bin);
}
//sprawdzamy format zapisu adresu i przypisujemy wartość do właściwości _netmask
public function setNetmask($netmask) {
if (!ereg('^([0-9]{1,3}\.){3}[0-9]{1,3}$', $netmask)) {
throw new Exception ("Format maski $netmask jest nieprawidłowy.");
}
else {
$this->_netmask = $netmask;
}
}
//sprawdzamy binarnie czy maska jest prawidłowa. Maska sieciowa to zawsze binarny rząd jedynek
public function checkNetmask(){
$bin_nmask = $this->dqtobin($this->_netmask); //zamiana na adres binarny, wywołanie metody dqtobin
$bin_nmask_valid=rtrim($bin_nmask, "0"); //usuwamy zera z końca adresu binarnego
if (!ereg("0",$bin_nmask_valid) ){ //jeżeli nie ma już żadnych zer w adresie to maska jest ok
echo "Maska $this->_netmask jest poprawna.";
}
else
{
throw new Exception ("Maska $this->_netmask jest nieprawidłowa.");
}
}
}
//objekt
$objNetmask = new Netmask();
$objNetmask-> setNetmask('1.0.0.0');
$objNetmask-> checkNetmask();
?>
sobota, 25 lipca 2009
Programowanie obiektowe (cz. 8) - ochrona dostępu do zmiennych składowych
W ostatnim poście przypisywaliśmy wartości właściwości. Łatwo można było zauważyć, że do zmiennej zadeklarowanej za pomocą public $name mogliśmy przypisać dowolną wartość (również taką, która kompletnie nie ma żadnego sensu). Taki sposób przypisywania wartości do właściwości uniemożliwia jakąkolwiek weryfikacje poprawności danych ani zaktualizowania jakichkolwiek innych wartości w chwili ustawiania wartości właściwości name.
Można w łatwy sposób obejść tą niedogodność. Wystarczy zawsze implementować właściwości jako funkcje (metody) o nazwach np. getNazwaWlasciwosci(wartosc) lub setNazwaWlasciwosci(wartosc). Tego rodzaju funkcje znane są jako metody dostępowe.
Żeby lepiej poznać ich działanie zróbmy mały przykład:
Tak jak w poprzednim przykładach tworzymy plik class.First.php i wprowadzamy poniższy kod:
Następnie tak jak ostatnio w pliku testfirst.php umieszczamy następujący kod:
W tym przykładzie zmieniliśmy status zmiennej public na private, a do nazwy dodaliśmy podkreślenie. Oczywiście podkreślenie nie jest wymagane, jest jednak zalecaną konwencją nazewniczą zmiennych prywatnych i funkcji składowych. Za pomocą słowa kluczowego private blokujemy dostęp do tej zmiennej spoza klasy lub egzemplarza tej klasy (obiektu). Natomiast mają do niej dostęp metody dostępowe, które z kolei są dostępne z zewnątrz obiektu. Metody te są poprzedzone słowem kluczowym public. Chodzi o metody setName() oraz getName() za pomocą których klasa będzie mogła sprawdzić prawidłowość wartości, przed jej przypisaniem. Jeżeli przesłana wartość nie będzie stringiem lub będzie pusta zostanie wygenerowany wyjątek. Warto też podkreślić, że domyślny poziom dostępności dla każdej funkcji lub zmiennej składowej to poziom publiczny, więc niekonieczne było podawanie słowa kluczowego public przed funkcjami. Jest to jednak dobry nawyk.
Jeżeli chodzi o poziomy dostępności zmiennych składowych to mogą one mieć trzy różne poziomy dostępności: publiczny, prywatny i chroniony. Poznaliśmy już publiczne i prywatne. Wiemy, że zmienne składowe publiczne są dostępne z dowolnego miejsca poza obiektem oraz w obiekcie. Natomiast składowe prywatne są dostępne tylko z poziomu klasy lub egzemplarza klasy. Zmienne składowe chronione to elementy o zastosowaniu wewnętrznym, takie jak uchwyt połączenia z bazą danych lub dane konfiguracyjne. Są one dostępne dla własnej klasy oraz dla klas jej potomnych, czyli w tych które odziedziczyły ich właściwości i metody.
Stosowanie metod dostępowych powinno być w aplikacji standardem nawet w przypadku gdy nie planujemy weryfikować danych. Pamiętajmy aby stosować te metody używając funkcji get i set. Utrzymamy wtedy swoją aplikację w pewnych umownych standardach. Poza tym o ile to tylko możliwe powinno się weryfikować wszelkie wprowadzane dane. Zapobiega to włamaniom oraz próbom hackowania naszej aplikacji. Poza tym można o wiele łatwiej i szybciej dodać testowanie w klasie. Przeniesie się ono na wszystkie obiekty utworzone na podstawie tej klasy.
Można w łatwy sposób obejść tą niedogodność. Wystarczy zawsze implementować właściwości jako funkcje (metody) o nazwach np. getNazwaWlasciwosci(wartosc) lub setNazwaWlasciwosci(wartosc). Tego rodzaju funkcje znane są jako metody dostępowe.
Żeby lepiej poznać ich działanie zróbmy mały przykład:
Tak jak w poprzednim przykładach tworzymy plik class.First.php i wprowadzamy poniższy kod:
<?php
class First {
private $_name;
public function sayWelcome() {
echo "Witaj {$this->getName()}!";
}
public function getName() {
return $this->_name;
}
public function setName($name) {
if (!is_string($name) || strlen($name) == 0) {
throw new Exception("Wartość zmiennej jest niepoprawna");
}
else {
$this->_name = $name;
}
}
}
?>
Następnie tak jak ostatnio w pliku testfirst.php umieszczamy następujący kod:
<?php
require_once('class.First.php');
$objFirst = new First();
$objFirst->setName('Wojtek');
$objFirst->sayWelcome();
//a teraz spróbujemy wygenerować błąd
$objFirst->setName(108);
?>
W tym przykładzie zmieniliśmy status zmiennej public na private, a do nazwy dodaliśmy podkreślenie. Oczywiście podkreślenie nie jest wymagane, jest jednak zalecaną konwencją nazewniczą zmiennych prywatnych i funkcji składowych. Za pomocą słowa kluczowego private blokujemy dostęp do tej zmiennej spoza klasy lub egzemplarza tej klasy (obiektu). Natomiast mają do niej dostęp metody dostępowe, które z kolei są dostępne z zewnątrz obiektu. Metody te są poprzedzone słowem kluczowym public. Chodzi o metody setName() oraz getName() za pomocą których klasa będzie mogła sprawdzić prawidłowość wartości, przed jej przypisaniem. Jeżeli przesłana wartość nie będzie stringiem lub będzie pusta zostanie wygenerowany wyjątek. Warto też podkreślić, że domyślny poziom dostępności dla każdej funkcji lub zmiennej składowej to poziom publiczny, więc niekonieczne było podawanie słowa kluczowego public przed funkcjami. Jest to jednak dobry nawyk.
Jeżeli chodzi o poziomy dostępności zmiennych składowych to mogą one mieć trzy różne poziomy dostępności: publiczny, prywatny i chroniony. Poznaliśmy już publiczne i prywatne. Wiemy, że zmienne składowe publiczne są dostępne z dowolnego miejsca poza obiektem oraz w obiekcie. Natomiast składowe prywatne są dostępne tylko z poziomu klasy lub egzemplarza klasy. Zmienne składowe chronione to elementy o zastosowaniu wewnętrznym, takie jak uchwyt połączenia z bazą danych lub dane konfiguracyjne. Są one dostępne dla własnej klasy oraz dla klas jej potomnych, czyli w tych które odziedziczyły ich właściwości i metody.
Stosowanie metod dostępowych powinno być w aplikacji standardem nawet w przypadku gdy nie planujemy weryfikować danych. Pamiętajmy aby stosować te metody używając funkcji get i set. Utrzymamy wtedy swoją aplikację w pewnych umownych standardach. Poza tym o ile to tylko możliwe powinno się weryfikować wszelkie wprowadzane dane. Zapobiega to włamaniom oraz próbom hackowania naszej aplikacji. Poza tym można o wiele łatwiej i szybciej dodać testowanie w klasie. Przeniesie się ono na wszystkie obiekty utworzone na podstawie tej klasy.
piątek, 24 lipca 2009
Programowanie obiektowe (cz. 7) - dodawanie właściwości
Dodawanie właściwości do klasy jest bardzo prostym procesem. Nie różni się zbytnio od tworzenia zmiennych w kodzie proceduralnym. W programowaniu obiektowym definiujemy właściwość poprzez utworzenie zmiennej na początku deklaracji klasy, w obrębie klamer zawierających ciało klasy. Należy pamiętać, że nazwa zmiennej jest nazwą właściwości, więc jeżeli utworzymy zmienną $speed to właściwość będzie nazywała się speed.
Wróćmy do kodu, który edytowaliśmy wcześniej. Otwórzmy plik class.First.php i wprowadźmy tam następujące zmiany:
Jak wynika z powyższego kody aby utworzyć właściwość klasy First o nazwie name wystarczy zadeklarować zmienną o nazwie właściwości. Aby odwołać się do tej właściwości należy należy użyć tego samego operatora, którym odwoływaliśmy się do metody, czyli ->.
W następnym przykładzie utworzymy obiekt, który będzie odwoływał się do naszej nowej właściwości.
Utwórzmy, więc nowy plik o nazwie testfirst.php o następującym kodzie:
Spróbujmy wykonać powyższy kod. Jeżeli wszystko dobrze zrobiliśmy to w przeglądarce powinien pojawić się komunikat Witaj Wojtek!Witaj Paweł!. Ten przykład powinien dać już ogólne wyobrażenie o działaniu metod i właściwości.
Przy deklaracji właściwości użyliśmy słowa kluczowego public, które służy do określania zmiennych publicznych. Zmienne publiczne będą dostępne dla obiektów i klas spoza klasy, w której ta zmienna występuje. Oznacza to, że będziemy mogli ją wykorzystać w dowolnym momencie. Niektóre zmienne deklarowane w klasie istnieją tylko na potrzeby tej klasy i nie powinny być dostępne z poziomu zewnętrznego kodu. Powyższa przykład umożliwia ustawianie oraz pobieranie wartości właściwości name. Teraz metoda sayWelcome zamiast pobierać parametr, pobiera wartość name właściwości.
Użyliśmy również zmiennej $this, która informuje metodę obiektu, że ma pobrać wartość name dotyczącą bieżącego egzemplarza klasy. Jest to używane kiedy nie znamy zmiennej reprezentującej obiekt. Na podstawie tej klasy mogą być utworzone obiekty o różnych nazwach ale za pomocą zmiennej $this, wiemy, ze chodzi o właśnie przetwarzany obiekt. Widać to wyraźnie w poprzednim przykładzie, gdzie obiekt $objFirst i obiekt objSecond wyświetlają różne komunikaty, mimo że obydwa mają w sobie zawarty kod echo "Witaj $this->name!";. Jednak wcześniej miały przypisane różne wartości właściwości name.
Należy również pamiętać, że dostęp do właściwości wymaga tylko jednego $. Należy napisać $this->name, a nie $this->$name. Zmienna jest deklarowane na początku klasy jao public $name.
Możemy również deklarować zmienne wewnętrzne klasy służące do wykonywania wewnętrznych operacja w klasie. Obydwa rodzaje danych, a więc te publiczne, którym możemy przypisywać różne wartości oraz te do użytku wewnętrznego są nazywane wewnętrznymi zmiennymi składowymi klasy. Więcej na ich temat opowiem w kolejnym poście.
Wróćmy do kodu, który edytowaliśmy wcześniej. Otwórzmy plik class.First.php i wprowadźmy tam następujące zmiany:
<?php
class First {
public $name;
function sayWelcome() {
echo "Witaj $this->name!";
}
}
?>
Jak wynika z powyższego kody aby utworzyć właściwość klasy First o nazwie name wystarczy zadeklarować zmienną o nazwie właściwości. Aby odwołać się do tej właściwości należy należy użyć tego samego operatora, którym odwoływaliśmy się do metody, czyli ->.
W następnym przykładzie utworzymy obiekt, który będzie odwoływał się do naszej nowej właściwości.
Utwórzmy, więc nowy plik o nazwie testfirst.php o następującym kodzie:
<?php
require_once('class.First.php');
$objFirst = new First();
$objFirst -> name = 'Wojtek';
$objSecond = new First();
$objSecond -> name = 'Paweł';
$objFirst -> sayWelcome();
$objSecond -> sayWelcome();
?>
Spróbujmy wykonać powyższy kod. Jeżeli wszystko dobrze zrobiliśmy to w przeglądarce powinien pojawić się komunikat Witaj Wojtek!Witaj Paweł!. Ten przykład powinien dać już ogólne wyobrażenie o działaniu metod i właściwości.
Przy deklaracji właściwości użyliśmy słowa kluczowego public, które służy do określania zmiennych publicznych. Zmienne publiczne będą dostępne dla obiektów i klas spoza klasy, w której ta zmienna występuje. Oznacza to, że będziemy mogli ją wykorzystać w dowolnym momencie. Niektóre zmienne deklarowane w klasie istnieją tylko na potrzeby tej klasy i nie powinny być dostępne z poziomu zewnętrznego kodu. Powyższa przykład umożliwia ustawianie oraz pobieranie wartości właściwości name. Teraz metoda sayWelcome zamiast pobierać parametr, pobiera wartość name właściwości.
Użyliśmy również zmiennej $this, która informuje metodę obiektu, że ma pobrać wartość name dotyczącą bieżącego egzemplarza klasy. Jest to używane kiedy nie znamy zmiennej reprezentującej obiekt. Na podstawie tej klasy mogą być utworzone obiekty o różnych nazwach ale za pomocą zmiennej $this, wiemy, ze chodzi o właśnie przetwarzany obiekt. Widać to wyraźnie w poprzednim przykładzie, gdzie obiekt $objFirst i obiekt objSecond wyświetlają różne komunikaty, mimo że obydwa mają w sobie zawarty kod echo "Witaj $this->name!";. Jednak wcześniej miały przypisane różne wartości właściwości name.
Należy również pamiętać, że dostęp do właściwości wymaga tylko jednego $. Należy napisać $this->name, a nie $this->$name. Zmienna jest deklarowane na początku klasy jao public $name.
Możemy również deklarować zmienne wewnętrzne klasy służące do wykonywania wewnętrznych operacja w klasie. Obydwa rodzaje danych, a więc te publiczne, którym możemy przypisywać różne wartości oraz te do użytku wewnętrznego są nazywane wewnętrznymi zmiennymi składowymi klasy. Więcej na ich temat opowiem w kolejnym poście.
Programowanie obiektowe (cz. 6) - dodawanie metody
Nadszedł czas aby do naszej pierwszej klasy dodać jakieś metody. Niestety jej obecna forma nie jest zbyt użyteczna. Wspominałem wcześniej, że metoda klasy to po prostu funkcja. Zobaczmy więc jak będzie wyglądała pierwsza metoda naszej klasy.
Mamy więc utworzoną pierwszą klasę, która coś robi. Zawiera metodę. Obiekt, który utworzymy na podstawie tej klasy może przywitać każdego kto wywoła metodę sayWelcome. Aby wywołać tą metodę na obiekcie $objFirst należy zastosować operator ->, który umożliwia dostęp do danej metody.
Po wykonaniu powyższego kodu powinien się wyświetlić komunikat Witaj Wojtek!. Operator -> służy do dostępu do wszystkich metod i właściwości obiektu. Należy pamiętać, że mówimy tu o programowaniu obiektowym w PHP. W innych językach można było się spotkać z operatorem kropki (.) jednak w PHP nie występuje on w ogóle.
<?php
class First {
function sayWelcome($name) {
echo "Witaj $name!";
}
}
?>
Mamy więc utworzoną pierwszą klasę, która coś robi. Zawiera metodę. Obiekt, który utworzymy na podstawie tej klasy może przywitać każdego kto wywoła metodę sayWelcome. Aby wywołać tą metodę na obiekcie $objFirst należy zastosować operator ->, który umożliwia dostęp do danej metody.
<?php
require_once('class.First.php');
$objFirst = new First();
$objFirst->sayWelcome('Wojtek');
>
Po wykonaniu powyższego kodu powinien się wyświetlić komunikat Witaj Wojtek!. Operator -> służy do dostępu do wszystkich metod i właściwości obiektu. Należy pamiętać, że mówimy tu o programowaniu obiektowym w PHP. W innych językach można było się spotkać z operatorem kropki (.) jednak w PHP nie występuje on w ogóle.
czwartek, 23 lipca 2009
Instalacja i konfiguracja SyntaxHighlighter na bloggerze (blogspot), czyli jak pokolorować swój kod
SyntaxHighlighter zyskał ostatnio ogromną popularność ze względu na przyjazny interfejs oraz łatwość konfiguracji. Jednak instalacja tego narzędzia na takich serwisach jak blogger ciągle przysparza użytkownikom sporo kłopotów. Postaram się w jasny sposób opisać sposób instalacji SyntaxHighlighter na bloggerze.
Poniżej kroki, które należy wykonać:
1. Logujemy się na nasze konto na blogger.com.
2. Wchodzimy w zakładkę Układ a następnie Edytuj kod HTML.
3. W sekcji <head> umieszczamy następujący kod:
4. Następnie pod powyższym kodem dodajemy wpis odpowiedni za kolorowanie danego języka. Jeżeli chcesz możesz wpisać wszystkie wiersze poniżej. Będziesz miał wtedy do dyspozycji wszystkie składni. Jednak jeżeli będzie używał np. tylko PHP to wklej tylko wiersz odpowiedzialny za tą składnie:
5. Ostatni już wpis należy dodać na końcu ciała strony, czyli przed tagiem </body>:
6. Zapisujemy szablon strony i gotowe.
Teraz, za pomocą tagów pre lub textarea możesz dodawać swój kod. Poniżej przykład:
Pamiętaj, że podczas pisania kodu należy zamienić znak < wpisem "<" a znak > ">"
W przeciwnym wypadku interpreter bloggera będzie próbował uruchomić Twój kod.
Jeżeli chcesz żeby to działało również na Firefoxie 3.0.5 który błędnie interpretuje ten kod, należy w szablonie strony na blogerze usunąć na samej górze tag DOCTYPE.
Poniżej kroki, które należy wykonać:
1. Logujemy się na nasze konto na blogger.com.
2. Wchodzimy w zakładkę Układ a następnie Edytuj kod HTML.
3. W sekcji <head> umieszczamy następujący kod:
<link href='http://syntaxhighlighter.googlecode.com/svn/trunk/Styles/SyntaxHighlighter.css' rel='stylesheet' type='text/css'/>
<script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shCore.js'/>
4. Następnie pod powyższym kodem dodajemy wpis odpowiedni za kolorowanie danego języka. Jeżeli chcesz możesz wpisać wszystkie wiersze poniżej. Będziesz miał wtedy do dyspozycji wszystkie składni. Jednak jeżeli będzie używał np. tylko PHP to wklej tylko wiersz odpowiedzialny za tą składnie:
<script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushBash.js'/>
<script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCSharp.js'/>
<script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCpp.js'/>
<script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCss.js'/>
<script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushDelphi.js'/>
<script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushGroovy.js'/>
<script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushJScript.js'/>
<script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushJava.js'/>
<script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushPhp.js'/>
<script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushPython.js'/>
<script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushRuby.js'/>
<script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushScala.js'/>
<script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushSql.js'/>
<script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushVb.js'/>
<script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushXml.js'/>
5. Ostatni już wpis należy dodać na końcu ciała strony, czyli przed tagiem </body>:
<script language='javascript'>
dp.SyntaxHighlighter.BloggerMode();
dp.SyntaxHighlighter.HighlightAll('code');
</script>
6. Zapisujemy szablon strony i gotowe.
Teraz, za pomocą tagów pre lub textarea możesz dodawać swój kod. Poniżej przykład:
<pre name="code" class="php">Twój kod</pre>
Pamiętaj, że podczas pisania kodu należy zamienić znak < wpisem "<" a znak > ">"
W przeciwnym wypadku interpreter bloggera będzie próbował uruchomić Twój kod.
Jeżeli chcesz żeby to działało również na Firefoxie 3.0.5 który błędnie interpretuje ten kod, należy w szablonie strony na blogerze usunąć na samej górze tag DOCTYPE.
Programowanie obiektowe (cz. 5) - tworzenie klasy i obiektu
Teraz wprowadzimy już trochę praktyki. Zaczniemy od utworzenia pliku o nazwie class.First.php:
W ten sposób została utworzona nowa klasa o nazwie First. Oczywiście nic wielkiego za jej pomocą nie zrobimy ale przynajmniej wiemy jak zacząć. Wystarczy użyć słowa kluczowego class i podać nazwę klasy. Przyjęło się, że nazwy klas rozpoczynamy wielką literą. Również dobrym nawykiem jest umieszczanie każdej klasy w osobnym pliku i nadawanie nazw w formacie class.Nazwaklasy.php.
Aby utworzyć obiekt należy napisać następujący kod:
Przy tworzeniu nowego obiektu należy upewnić się, że został dołączony plik z klasą. Nowe obiekty tworzymy poprzez użycie operatora new po czym podajemy nazwę klasy oraz parę nawiasów (podobnie jak przy wykonywaniu funkcji). Wynik tej operacji, czyli egzemplarz klasy First zostanie przypisany do zmiennej $objFirst. Od tej chwili można wywoływać metody objektu $objFirst i odczytywać lub ustawiać jego właściwości. Oczywiście muszą one się znajdować w obiekcie.
<?php
class First {
}
?>
W ten sposób została utworzona nowa klasa o nazwie First. Oczywiście nic wielkiego za jej pomocą nie zrobimy ale przynajmniej wiemy jak zacząć. Wystarczy użyć słowa kluczowego class i podać nazwę klasy. Przyjęło się, że nazwy klas rozpoczynamy wielką literą. Również dobrym nawykiem jest umieszczanie każdej klasy w osobnym pliku i nadawanie nazw w formacie class.Nazwaklasy.php.
Aby utworzyć obiekt należy napisać następujący kod:
<?php
require_once('class.First.php');
$objFirst = new First();
?>
Przy tworzeniu nowego obiektu należy upewnić się, że został dołączony plik z klasą. Nowe obiekty tworzymy poprzez użycie operatora new po czym podajemy nazwę klasy oraz parę nawiasów (podobnie jak przy wykonywaniu funkcji). Wynik tej operacji, czyli egzemplarz klasy First zostanie przypisany do zmiennej $objFirst. Od tej chwili można wywoływać metody objektu $objFirst i odczytywać lub ustawiać jego właściwości. Oczywiście muszą one się znajdować w obiekcie.
Programowanie obiektowe (cz. 4) - obiekty
Już wiemy, że klasa jest wzorcem dla obiektu. Na jej podstawie konstruowany jest egzemplarz klasy, czyli obiekt. Działa to podobnie do projektu domu, za pomocą którego można wybudować wiele domów o podobnej budowie, ale różniących się np. wyposażeniem lub kolorem ścian. Obiekt to element konkretny, zbudowany na podstawie wzorca dostarczonego przez klasę. Wracając do naszego przykładu z domem to wiemy, że mając projekt możemy zbudować dom wedle własnych upodobań i wymagań. W programowaniu obiektowym, aby zbudować obiekt posługujemy się klasą. Ten proces nazywa się tworzeniem egzemplarza i wymaga dwóch rzeczy:
Sama klasa nie może mieć przypisanych żadnych wartości do właściwości lub być w jakimś stanie. Proces przypisywania wartości do właściwości dotyczy tylko obiektów. Tutaj również możemy posłużyć się analogią domu. W projekcie nie jest zawarty kolor ścian, rodzaj posadzek, lub jakie panele będą położone. Jest tylko informacja, że istnieją. Podobnie jest z tworzeniem egzemplarza klasy, czyli obiektu. Najpierw musimy go utworzyć, następnie możemy operować na jego właściwościach lub wykonywać jego metody. Klasami manipulujemy podczas pisania programu, natomiast obiektami podczas wykonywania programu.
- Miejsca w pamięci przeznaczonego dla obiektu. PHP przydziela je automatycznie.
- Danych, które zostaną przypisane do właściwości obiektu.
Sama klasa nie może mieć przypisanych żadnych wartości do właściwości lub być w jakimś stanie. Proces przypisywania wartości do właściwości dotyczy tylko obiektów. Tutaj również możemy posłużyć się analogią domu. W projekcie nie jest zawarty kolor ścian, rodzaj posadzek, lub jakie panele będą położone. Jest tylko informacja, że istnieją. Podobnie jest z tworzeniem egzemplarza klasy, czyli obiektu. Najpierw musimy go utworzyć, następnie możemy operować na jego właściwościach lub wykonywać jego metody. Klasami manipulujemy podczas pisania programu, natomiast obiektami podczas wykonywania programu.
środa, 22 lipca 2009
Programowanie obiektowe (cz. 3) - klasy
Jeżeli przyjrzymy się otaczającej nas rzeczywistości okaże się, że występują w niej różnego rodzaju obiekty, takie jak drzewa, samochody, domy, łodzie, zwierzęta, itp. Na przykład samochód ma jakiś kolor, opony, wyposażenie, lub pojemność silnika. To jest jego charakterystyka lub, jak to byśmy określili w terminologii obiektowej, właściwości. Dany samochód potrafi różne rzeczy robić, np. hamować, przyspieszać, trąbić, sygnalizować kierunek, itp. To są jego zachowania, lub w terminologii obiektowej metody. Te cechy i zachowania są wspólne dla wszystkich samochodów. Oczywiście nie oznacza to, że wszystkie samochody są np. czerwone. Chodzi o to, że każdy samochód ma jakiś kolor, jakąś pojemność silnika, itd.
Wracając do programowania obiektowego, jeżeli mówimy o klasie mamy na myśli wspólny zbiór właściwości i metod jakiegoś obiektu, które będzie pasował do wszystkich typów danego obiektu, w tym przypadku samochodu. Właściwości danego obiektu mają nazwę i wartość. Niektóre wartości można zmieniać, a niektóre nie. Jeżeli np. utworzymy klasę Car a w niej takie właściwości jak color i weight to kolor danego samochodu może się zmienić, np. po lakierowaniu ale jego waga się nie zmieni.
Niektóre właściwości obiektu reprezentują jego stan. Stan odnosi się do tych właściwości obiektu, które ulegają zmianie pod wpływem pewnych zdarzeń (metod) a niekoniecznie można je modyfikować bezpośrednio. Np. właściwość maxspeed nie jest wartością stałą. Zależy od nawierzchni po której przemieszcza się samochód, jakości paliwa, pojemności silnika oraz rodzaju opon.
Jeżeli mówimy o metodach w programowaniu obiektowym a mamy za sobą doświadczenie związane z programowanie strukturalnym, to możemy powiedzieć, że metody są od odpowiednikiem funkcji. Podobnie jak funkcje, metody mogą pobierać dowolną ilość parametrów. Niektóre metody przetwarzają zewnętrzne dane, przesłane jako parametry, ale mogą również działać na właściwościach własnych obiektów. Możemy np. utworzyć metodę accelerate, która sprawdzi poziom paliwa naszego obiektu Car i ustali czy przyspieszenie w ogóle jest możliwe. Może również zmienić stan obiektów poprzez modyfikację ich właściwości, np. prędkości samochodu.
Wracając do programowania obiektowego, jeżeli mówimy o klasie mamy na myśli wspólny zbiór właściwości i metod jakiegoś obiektu, które będzie pasował do wszystkich typów danego obiektu, w tym przypadku samochodu. Właściwości danego obiektu mają nazwę i wartość. Niektóre wartości można zmieniać, a niektóre nie. Jeżeli np. utworzymy klasę Car a w niej takie właściwości jak color i weight to kolor danego samochodu może się zmienić, np. po lakierowaniu ale jego waga się nie zmieni.
Niektóre właściwości obiektu reprezentują jego stan. Stan odnosi się do tych właściwości obiektu, które ulegają zmianie pod wpływem pewnych zdarzeń (metod) a niekoniecznie można je modyfikować bezpośrednio. Np. właściwość maxspeed nie jest wartością stałą. Zależy od nawierzchni po której przemieszcza się samochód, jakości paliwa, pojemności silnika oraz rodzaju opon.
Jeżeli mówimy o metodach w programowaniu obiektowym a mamy za sobą doświadczenie związane z programowanie strukturalnym, to możemy powiedzieć, że metody są od odpowiednikiem funkcji. Podobnie jak funkcje, metody mogą pobierać dowolną ilość parametrów. Niektóre metody przetwarzają zewnętrzne dane, przesłane jako parametry, ale mogą również działać na właściwościach własnych obiektów. Możemy np. utworzyć metodę accelerate, która sprawdzi poziom paliwa naszego obiektu Car i ustali czy przyspieszenie w ogóle jest możliwe. Może również zmienić stan obiektów poprzez modyfikację ich właściwości, np. prędkości samochodu.
poniedziałek, 20 lipca 2009
Opera Unite, opis i instalacja
Opera Unite zamienia komputer zarówno w klienta jak i serwer, pozwalając na interakcję i dzielenie treści pomiędzy komputerami w Sieci, bez potrzeby udziału obcych serwerów.
Opera Unite sprawia, że udostępnianie danych staje się tak proste jak przeglądanie Internetu. Usługi dostępne dzięki Opera Unite dają użytkownikom lepszą kontrolę nad prywatnymi danymi i upraszczają dzielenie się plikami z jakimkolwiek urządzeniem zaopatrzonym w nowoczesną przeglądarkę internetową.
Twórców stron WWW i aplikacji internetowych zainteresuje fakt, że usługa Opera Unite bazuje na tych samych otwartych standardach internetowych, co dzisiejsze strony. W sposób rewolucyjny upraszcza to złożoność tworzenia nowoczesnych serwisów sieciowych. Z Opera Unite tworzenie pełnych serwisów internetowych jest dzisiaj tak proste jak tworzenie strony
internetowej.
Opera Unite jest dostępna w wersji przeglądarki Opera 10, którą można pobrać na stronie http://labs.opera.com/. Usługi Opera Unite działają bezpośrednio w przeglądarce.
Jak korzystać z Opera Unite:
1. Pobierz przeglądarkę zawierającą technologię Opera Unite ze strony http://labs.opera.com/.
2. By uruchomić usługę, kliknij logo Opera UInite w dolnym lewym rogu przeglądarki i zaloguj się używając istniejącego identyfikatora, którego używałeś do obsługi takich serwisów Opery jak My Opera i Opera Link. Opera Unite zaproponuje ci stworzenie identyfikatora, jeśli go jeszcze nie posiadasz.
3. Teraz już możesz korzystać z Opera Unite. Masz dostęp do usługi poprzez panel Opera Unite w przeglądarce. Nowe usługi mogą być instalowane ze strony http://unite.opera.com/.
4. W trakcie używania Opera Unite da ci bezpośredni internetowy adres do działających usług Opera Unite na konkretnym urządzeniu, np.: http://notebook.jondoe.operaunite.com/photo_sharing/, gdzie „notebook” to nazwa lokalnego urządzenia udostępniającego zawartość, "jondoe" to twoja nazwa użytkownika, a „photo sharing” to usługa, która została udostępniona. Ten link umożliwi także innym dostęp do tej samej usługi w twoim komputerze przy użyciu ich przeglądarki.
5. Możesz także zobaczyć, którzy znajomi używają usługi Opera Unite na twojej domowej stronie My Opera Unite.
Obecnie dostępne są następujące serwisy Opera Unite:
* Udostępnianie Dokumentów (File Sharing): dziel bezpiecznie pliki ze swojego komputera bez potrzeby umieszczania ich na serwerze. Najpierw wybierz katalog, z którego chciałbyś udostępnić pliki. Opera Unite wygeneruje wtedy bezpośredni adres URL do tego folderu. Dając znajomym ten link, będziesz mógł dzielić z nimi pliki bez potrzeby korzystania z obcych serwisów internetowych.
* Serwer internetowy (Web Server): Prowadź pełną stronę internetową ze swojego komputera używając serwisu Opera Unite Web Server. Po zaznaczeniu folderu zawierającego swoją stronę, możesz ją udostępnić innym używając otrzymanego adresu Opera Unite. Opera Unite automatycznie rozpozna indeks plików i stworzy stronę według twojego projektu.
* Odtwarzacz multimediów (Media Player): Gdziekolwiek jesteś, ciesz się swoją muzyką dzięki udostępnianiu plików MP3 i listy utworów z dowolnego urządzenia. Po wybraniu folderu zawierającego twoją listę utworów, użyj bezpośredniego linku Opera Unite, by odtworzyć swoją muzykę na jakimkolwiek urządzeniu zawierającym nowoczesną przeglądarkę.
* Udostępnianie Zdjęć (Photo Sharing): Dziel się swoimi zdjęciami bezpośrednio ze swojego komputera, bez potrzeby umieszczania ich w sieci. Kiedy wybierzesz folder ze zdjęciami, usługa wygeneruje galerię z miniaturami twoich fotografii. Po kliknięciu miniatury otworzy się zdjęcie w oryginalnej rozdzielczości.
* Strefa Relaksu (The Lounge): Strefa Relaksu to samodzielny czat działający w twoim komputerze. Twoi znajomi mogą mieć dostęp do tego czatu poprzez bezpośredni link, który nie będzie od nich wymagał zakładania konta na jakimkolwiek serwisie. W zależności od twoich ustawień prywatności, możesz wprowadzić do twojego serwisu wygenerowane hasło, by mieć kontrole nad tym, kto dołącza się do twojego kanału dyskusyjnego.
* Lodówka (The Fridge): Zostawiaj wiadomości na wirtualnej lodówce swoich przyjaciół. Dzieląc się bezpośrednim linkiem do swoich lodówek, ty, twoi znajomi i rodzina możecie bezpiecznie wymieniać prywatne wiadomości w czasie rzeczywistym.
Te sześć usług to początek możliwości Opera Unite. Web developerzy mogą puścić wodze fantazji i zaprojektować unikalny serwis internetowy, dzięki czemu otworzą pełny potencjał Opery Unite.
Przypominamy, że przeglądarka Opera 10 to wciąż produkt w wersji beta, co oznacza, że nie jest ukończony i może wciąż zawierać błędy.
źródło: http://www.chip.pl/news/internet-i-sieci/sieci-p2p/2009/06/opera-unite-czyli-wspoldzielenie-plikow-w-przegladarce
Dodatkowo poniżej zamieszczam video przedstawiające instalacje i konfiguracje Opera Unite:
Opera Unite sprawia, że udostępnianie danych staje się tak proste jak przeglądanie Internetu. Usługi dostępne dzięki Opera Unite dają użytkownikom lepszą kontrolę nad prywatnymi danymi i upraszczają dzielenie się plikami z jakimkolwiek urządzeniem zaopatrzonym w nowoczesną przeglądarkę internetową.
Twórców stron WWW i aplikacji internetowych zainteresuje fakt, że usługa Opera Unite bazuje na tych samych otwartych standardach internetowych, co dzisiejsze strony. W sposób rewolucyjny upraszcza to złożoność tworzenia nowoczesnych serwisów sieciowych. Z Opera Unite tworzenie pełnych serwisów internetowych jest dzisiaj tak proste jak tworzenie strony
internetowej.
Opera Unite jest dostępna w wersji przeglądarki Opera 10, którą można pobrać na stronie http://labs.opera.com/. Usługi Opera Unite działają bezpośrednio w przeglądarce.
Jak korzystać z Opera Unite:
1. Pobierz przeglądarkę zawierającą technologię Opera Unite ze strony http://labs.opera.com/.
2. By uruchomić usługę, kliknij logo Opera UInite w dolnym lewym rogu przeglądarki i zaloguj się używając istniejącego identyfikatora, którego używałeś do obsługi takich serwisów Opery jak My Opera i Opera Link. Opera Unite zaproponuje ci stworzenie identyfikatora, jeśli go jeszcze nie posiadasz.
3. Teraz już możesz korzystać z Opera Unite. Masz dostęp do usługi poprzez panel Opera Unite w przeglądarce. Nowe usługi mogą być instalowane ze strony http://unite.opera.com/.
4. W trakcie używania Opera Unite da ci bezpośredni internetowy adres do działających usług Opera Unite na konkretnym urządzeniu, np.: http://notebook.jondoe.operaunite.com/photo_sharing/, gdzie „notebook” to nazwa lokalnego urządzenia udostępniającego zawartość, "jondoe" to twoja nazwa użytkownika, a „photo sharing” to usługa, która została udostępniona. Ten link umożliwi także innym dostęp do tej samej usługi w twoim komputerze przy użyciu ich przeglądarki.
5. Możesz także zobaczyć, którzy znajomi używają usługi Opera Unite na twojej domowej stronie My Opera Unite.
Obecnie dostępne są następujące serwisy Opera Unite:
* Udostępnianie Dokumentów (File Sharing): dziel bezpiecznie pliki ze swojego komputera bez potrzeby umieszczania ich na serwerze. Najpierw wybierz katalog, z którego chciałbyś udostępnić pliki. Opera Unite wygeneruje wtedy bezpośredni adres URL do tego folderu. Dając znajomym ten link, będziesz mógł dzielić z nimi pliki bez potrzeby korzystania z obcych serwisów internetowych.
* Serwer internetowy (Web Server): Prowadź pełną stronę internetową ze swojego komputera używając serwisu Opera Unite Web Server. Po zaznaczeniu folderu zawierającego swoją stronę, możesz ją udostępnić innym używając otrzymanego adresu Opera Unite. Opera Unite automatycznie rozpozna indeks plików i stworzy stronę według twojego projektu.
* Odtwarzacz multimediów (Media Player): Gdziekolwiek jesteś, ciesz się swoją muzyką dzięki udostępnianiu plików MP3 i listy utworów z dowolnego urządzenia. Po wybraniu folderu zawierającego twoją listę utworów, użyj bezpośredniego linku Opera Unite, by odtworzyć swoją muzykę na jakimkolwiek urządzeniu zawierającym nowoczesną przeglądarkę.
* Udostępnianie Zdjęć (Photo Sharing): Dziel się swoimi zdjęciami bezpośrednio ze swojego komputera, bez potrzeby umieszczania ich w sieci. Kiedy wybierzesz folder ze zdjęciami, usługa wygeneruje galerię z miniaturami twoich fotografii. Po kliknięciu miniatury otworzy się zdjęcie w oryginalnej rozdzielczości.
* Strefa Relaksu (The Lounge): Strefa Relaksu to samodzielny czat działający w twoim komputerze. Twoi znajomi mogą mieć dostęp do tego czatu poprzez bezpośredni link, który nie będzie od nich wymagał zakładania konta na jakimkolwiek serwisie. W zależności od twoich ustawień prywatności, możesz wprowadzić do twojego serwisu wygenerowane hasło, by mieć kontrole nad tym, kto dołącza się do twojego kanału dyskusyjnego.
* Lodówka (The Fridge): Zostawiaj wiadomości na wirtualnej lodówce swoich przyjaciół. Dzieląc się bezpośrednim linkiem do swoich lodówek, ty, twoi znajomi i rodzina możecie bezpiecznie wymieniać prywatne wiadomości w czasie rzeczywistym.
Te sześć usług to początek możliwości Opera Unite. Web developerzy mogą puścić wodze fantazji i zaprojektować unikalny serwis internetowy, dzięki czemu otworzą pełny potencjał Opery Unite.
Przypominamy, że przeglądarka Opera 10 to wciąż produkt w wersji beta, co oznacza, że nie jest ukończony i może wciąż zawierać błędy.
źródło: http://www.chip.pl/news/internet-i-sieci/sieci-p2p/2009/06/opera-unite-czyli-wspoldzielenie-plikow-w-przegladarce
Dodatkowo poniżej zamieszczam video przedstawiające instalacje i konfiguracje Opera Unite:
Eric Higgins, webmaster Google, radzi jak przyspieszyć skrypty PHP
Na YouTubie można znaleźć film autorstwa Eric Higginsa na temat przyspieszania skryptów PHP. Jest to krótki filmik i powiem szczerze, że po Google spodziewałem się czegoś konkretniejszego. Co o tym myślicie? Macie jakieś swoje sposoby na przyspieszenie skryptów PHP? Więcej informacji można znaleźć na: code.google.com/speed
Jak odblokować stronę zablokowaną przez administratora sieci?
Jeszcze łączysz się z internetem w miejscu pracy lub poprzez dużą lokalną sieć to często zdarza się, że niektóre strony mogą być zablokowane. Możesz jednak przechytrzyć administratora i wejść na Twoją "zakazaną" stronę przez specjalny portal przeznaczony do tego celu. Aby to zrobić wystarczy wejść na stronę www.2unblocksites.com i tam wpisać adres strony na którą chcesz się dostać i kliknąć "Unblock". Oczywiście zakładamy, że administrator Twojej sieci jest pół-amatorem i nie zablokował strony www.2unblocksites.com lub stringa z adresem Twojej strony na porcie 80. Jeżeli to czytasz i jesteś administratorem sieci to proponuję blokować również strony tego typu lub blokować stringi z adresami.
Subskrybuj:
Posty (Atom)
