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:
sobota, 7 listopada 2009
[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.
Programowanie obiektowe (cz. 2) - podstawowe pojęcia
W tym poście skupię się na ogólnym opisaniu podstawowych pojęć związanych z programowaniem obiektowym. W kolejnych postach zostaną one szczegółowo opisane.
Klasy - są wzorcami lub szablonami dla obiektów. W klasach znajduje się kod definiujący właściwości i metody.
Obiekty - są utworzone egzemplarze klasy, które przechowują wszelkie wewnętrzne dane i informacje o stanie potrzebne dla funkcjonowania aplikacji.
Dziedziczenie - polega na utworzeniu nowej klasy na bazie już istniejącej.
Polimorfizm - oznacza zdefiniowanie danej klasy jako członka jednej lub więcej kategorii klas. Przykładem może być samolot, który zakwalifikuje się do "urządzeń z silnikiem rakietowym" oraz "urządzeń latających".
Interfejsy - interfejsy są pewnym sposobem na określenie metod, jakie ma implementować dana klasa. Przydaje się one w sytuacjach, w których pracuje wiele ze sobą połączonych obiektów, które wywołują między sobą ściśle określone metody.
Hermetyzacja - jest to zastrzeżenie dostępu do wewnętrznych danych obiektu.
Nie przejmuj się jeżeli któreś z tych pojęć jest dla Ciebie nie jasne. Wszystko zostanie opisane szczegółowo w kolejnych postach za pomocą przykładów.
Klasy - są wzorcami lub szablonami dla obiektów. W klasach znajduje się kod definiujący właściwości i metody.
Obiekty - są utworzone egzemplarze klasy, które przechowują wszelkie wewnętrzne dane i informacje o stanie potrzebne dla funkcjonowania aplikacji.
Dziedziczenie - polega na utworzeniu nowej klasy na bazie już istniejącej.
Polimorfizm - oznacza zdefiniowanie danej klasy jako członka jednej lub więcej kategorii klas. Przykładem może być samolot, który zakwalifikuje się do "urządzeń z silnikiem rakietowym" oraz "urządzeń latających".
Interfejsy - interfejsy są pewnym sposobem na określenie metod, jakie ma implementować dana klasa. Przydaje się one w sytuacjach, w których pracuje wiele ze sobą połączonych obiektów, które wywołują między sobą ściśle określone metody.
Hermetyzacja - jest to zastrzeżenie dostępu do wewnętrznych danych obiektu.
Nie przejmuj się jeżeli któreś z tych pojęć jest dla Ciebie nie jasne. Wszystko zostanie opisane szczegółowo w kolejnych postach za pomocą przykładów.
Programowanie obiektowe (cz. 1) - wstęp
Tym postem rozpoczynam serie szkoleń związanych z programowaniem obiektowym w PHP. Tak naprawdę najlepszym sposobem nauczenia się programowania obiektowego jest rozłożenie na części pierwsze jakiejś porządnej aplikacji zbudowanej obiektowo. Jednak aby to móc w ogóle zrobić trzeba mieć już solidne podstawy związane z takim programowaniem. Postaram się jasno wyłożyć te podstawy, zaprezentować kilka ćwiczeń, podać parę przykładów a na końcu wskazać kilka aplikacji, które być wyjściowym przykładem do rozpoczęcia programowania własnych aplikacji. Gotowi? A więc zaczynamy ...
Czym jest programowanie obiektowe?
Niektórzy mówią, że programowanie obiektowe jest po prostu innym sposobem patrzenia na świat. Wszystko może przedstawić za pomocą metod, które dany obiekt wykonuje oraz właściwości, które posiada.
Jak już się domyślisz programowanie obiektowe składa się z obiektów, które posiadają pewne metody oraz właściwości. A skąd się biorą obiekty? Są to po prostu egzemplarze gotowych klas. Można powiedzieć, że klasa jest szablonem dla obiektu. Z jednej klasy można utworzyć dowolną ilość obiektu.
Jeśli chodzi o relacje zachodzące między obiektami to analogią może być przykład budowy domu. Hydraulicy są odpowiedzialni za instalacje wodną. Elektrycy kładą instalację elektryczną. Hydraulicy nie interesują się tym, czy obwód elektryczni w sypialni jest 10-amperowy czy 20-amperowy. Natomiast interesuje ich wszystko to co ma związek z instalacją wodną, więc jeżeli elektrycy wykonują pracę, która ma wpływ na instalację wodną to muszą o tym poinformować hydraulików. Generalny wykonawca domy nie wchodzi w szczegóły pracy każdej grupy pracowników, jednak musi dopilnować aby każdy podwykonawca zrobił to co do niego należy.
Programowanie obiektowe działa podobnie, ponieważ poszczególne obiekty ukrywają przed sobą szczegóły wykonywanych działań. Ważne aby zwracały potrzebne nam dane.
Jeżeli zrozumiesz jak dokładnie działają klasy, obiekty oraz metody, które one wykonują to najtrudniejsza część zrozumienia programowania obiektowego jest już za Tobą. Prawdopodobnie cała trudność zrozumienia tego polega na tym, że koncepcja programowania obiektowego jest sprzeczna z zasadami programowania proceduralnego, czyli programowania korzystającego z funkcji i globalnych struktur danych. Z czasem zauważysz, że programowanie obiektowe ma kilka ogromnych zalet w porównaniu z proceduralnym, a w dużych aplikacjach stało się już standardem.
Czym jest programowanie obiektowe?
Niektórzy mówią, że programowanie obiektowe jest po prostu innym sposobem patrzenia na świat. Wszystko może przedstawić za pomocą metod, które dany obiekt wykonuje oraz właściwości, które posiada.
Jak już się domyślisz programowanie obiektowe składa się z obiektów, które posiadają pewne metody oraz właściwości. A skąd się biorą obiekty? Są to po prostu egzemplarze gotowych klas. Można powiedzieć, że klasa jest szablonem dla obiektu. Z jednej klasy można utworzyć dowolną ilość obiektu.
Jeśli chodzi o relacje zachodzące między obiektami to analogią może być przykład budowy domu. Hydraulicy są odpowiedzialni za instalacje wodną. Elektrycy kładą instalację elektryczną. Hydraulicy nie interesują się tym, czy obwód elektryczni w sypialni jest 10-amperowy czy 20-amperowy. Natomiast interesuje ich wszystko to co ma związek z instalacją wodną, więc jeżeli elektrycy wykonują pracę, która ma wpływ na instalację wodną to muszą o tym poinformować hydraulików. Generalny wykonawca domy nie wchodzi w szczegóły pracy każdej grupy pracowników, jednak musi dopilnować aby każdy podwykonawca zrobił to co do niego należy.
Programowanie obiektowe działa podobnie, ponieważ poszczególne obiekty ukrywają przed sobą szczegóły wykonywanych działań. Ważne aby zwracały potrzebne nam dane.
Jeżeli zrozumiesz jak dokładnie działają klasy, obiekty oraz metody, które one wykonują to najtrudniejsza część zrozumienia programowania obiektowego jest już za Tobą. Prawdopodobnie cała trudność zrozumienia tego polega na tym, że koncepcja programowania obiektowego jest sprzeczna z zasadami programowania proceduralnego, czyli programowania korzystającego z funkcji i globalnych struktur danych. Z czasem zauważysz, że programowanie obiektowe ma kilka ogromnych zalet w porównaniu z proceduralnym, a w dużych aplikacjach stało się już standardem.
niedziela, 19 lipca 2009
Wysyłanie powiadomień przez program CRON
Kontynuując poprzedni wątek chciałbym pokazać jak za pomocą programu CRON można pocztą wysyłać różnego rodzaju powiadomienia.
Poniżej znajduje się skrypt, który każdego dnia będzie do użytkownika wysyłał pocztą informację na temat aktualnego użycia dysku:
Tutaj korzystamy z polecenia echo, które tworzy treść wiadomości. Raport jest tworzony za pomocą polecenia df, które wyświetla ilość wolnego miejsca na dysku. Następnie wiadomość jest przesyłania poleceniem mail w którym dodatkowo używamy pleceń date i hostname aby utworzyć temat wiadomości.
Oczywiście takie rozwiązanie jest jak najbardziej prawidłowe jednak ma pewną wadę. Przy wielu takich wpisach plik crontab stanie się bardzo nieczytelny. Lepszym rozwiązaniem jest utworzenie zewnętrznego skryptu, który za pomocą crontab będzie wykonywany.
Analogicznie dla powyższego przykładu nasz skrypt będzie miał następującą treść:
Wystarczy zapisać skrypt np. w /home/user/raport.sh i dodać następujący wpis do crontab:
Polecenie test -x sprawdza czy plik istnieje i czy jest wykonywalny. Jeżeli by się okazało, że nie jest to nie zostanie podjęta próba jego uruchomienia przez system. Dzięki temu nie będą nas dręczyć niepotrzebne komunikaty o błędach.
Poniżej znajduje się skrypt, który każdego dnia będzie do użytkownika wysyłał pocztą informację na temat aktualnego użycia dysku:
0 0 * * * echo -e "To jest :\n\n `df -h`" | mail -s 'Raport o dysku dla `hostname` z dnia `date`' user@mail.pl
Tutaj korzystamy z polecenia echo, które tworzy treść wiadomości. Raport jest tworzony za pomocą polecenia df, które wyświetla ilość wolnego miejsca na dysku. Następnie wiadomość jest przesyłania poleceniem mail w którym dodatkowo używamy pleceń date i hostname aby utworzyć temat wiadomości.
Oczywiście takie rozwiązanie jest jak najbardziej prawidłowe jednak ma pewną wadę. Przy wielu takich wpisach plik crontab stanie się bardzo nieczytelny. Lepszym rozwiązaniem jest utworzenie zewnętrznego skryptu, który za pomocą crontab będzie wykonywany.
Analogicznie dla powyższego przykładu nasz skrypt będzie miał następującą treść:
#!/bin/bash
echo -e "Podsumowanie wykorzystania dysków:\n\n `df -h`" | mail -s 'Raport o dysku dla `hostname` z dnia `date`' user@mail.pl
Wystarczy zapisać skrypt np. w /home/user/raport.sh i dodać następujący wpis do crontab:
0 0 * * * test -x /home/user/raport.sh || exit 0; /home/user/daport.sh
Polecenie test -x sprawdza czy plik istnieje i czy jest wykonywalny. Jeżeli by się okazało, że nie jest to nie zostanie podjęta próba jego uruchomienia przez system. Dzięki temu nie będą nas dręczyć niepotrzebne komunikaty o błędach.
Automatyzacja zadań w Linuksie, czyli jak korzystać z programu CRON
Na pewno większość z was uważa, że komputer powinien ułatwiać życie, automatyzować pracę. I to oczywiście jest prawdą. Jednak aby zautomatyzować sobie prace zupełnie należy się dowiedzieć trochę na temat programów, które pozwalają na taką automatyzację.
Jeżeli mówimy o Linuksie to najlepszym przykładem będzie program CRON.
Jest to jedno z podstawowych narzędzi w systemach unikosowych. Niektórzy porównują działanie tego programu do budzika. Po prostu ustawiamy godzinę i częstotliwość oraz wybieramy, który skrypt lub program ma się wykonywać w danym czasie.
Program cron korzysta ze specjalnego pliku o nazwie crontab. To właśnie w tym pliku zapisywane są informacje na temat tego co i kiedy ma zostać uruchomione. Aby zobaczyć i edytować zawartość tego pliku należy wydać komendę:
Jeżeli uruchamiasz ten plik po raz pierwszy to prawdopodobnie będzie pusty. Czasami jednak są tam umieszczone różne zadania, które system dodaje automatycznie.
Opiszę działanie poszczególnych wpisów w crontab na przykładzie:
W tym przykładzie zostanie uruchomiony skrypt o nazwie backup.sh o godzinie 4:45 pierwszego dnia każdego miesiąca. To właśnie lewa część powyższego wpisu jest odpowiedzialna za czas uruchomienia, natomiast prawa strona jest odwołaniem do skryptu, który ma się wykonać.
Liczby i gwiazdki przedstawiają okresy czasowe zaczynając od minuty. Tak więc po kolei mamy minuty, godziny, dni miesiąca, numer miesiąca (1-12) i dzień tygodnia. Dzień tygodnia jest liczony od 0 i oznacza ono niedziele.
Gwiazdki postawione przy numerze miesiąca i dniu tygodnia oznaczają, że nie mają one wpływu na uruchamianie skryptu. Skrypt zostanie uruchomione zawsze pierwszego dnia miesiąca o godzinie 4:45.
Po edycji pliku należy go zapisać i zamknąć. Od teraz obowiązuje nowa tablica crontab. Jeżeli chcemy tylko wyświetlić naszą tablicę crontab, musimy wydać następujące polecenie:
Istnieje również możliwość usunięcia całej tablicy:
Oczywiście powyższy opis pomoże na pewno w sytuacjach, gdy chcemy uruchomiać nasz skrypt w określonych przedziałach czasu, ale co zrobić gdy musimy go wykonać w przedziałach czasu niekoniecznie równomiernych? Można utworzyć kilka zadać crontab ale to jest bardziej pracochłonne. Jest szybszy sposób. Można wykorzystać specjalne symbole do dokładniejszego określenia czasu. Mamy do dyspozycji 3 dodatkowe symbole:
1. Przecinek (,) - za jego pomocą można określić kilka wartości w jednej kolumnie. Poniższy przykład uruchomi skrypt każdego 1,4 i 26 dnia każdego miesiąca:
2. Łącznik (-) - umożliwia on określanie zakresów kolumny. Poniższy wpis uruchamia skrypt codziennie przez pierwsze 15 dni każdego miesiąca:
3. Ukośnik (/) - dzieli zakres kolumny na równe części. Poniższy zapis będzie uruchamiał dany skrypt co 15 minut:
Mam nadzieję, że ten krótki opis ułatwi każdemu wprowadzanie automatyzacji we własnym systemie.
Jeżeli mówimy o Linuksie to najlepszym przykładem będzie program CRON.
Jest to jedno z podstawowych narzędzi w systemach unikosowych. Niektórzy porównują działanie tego programu do budzika. Po prostu ustawiamy godzinę i częstotliwość oraz wybieramy, który skrypt lub program ma się wykonywać w danym czasie.
Program cron korzysta ze specjalnego pliku o nazwie crontab. To właśnie w tym pliku zapisywane są informacje na temat tego co i kiedy ma zostać uruchomione. Aby zobaczyć i edytować zawartość tego pliku należy wydać komendę:
crontab -e
Jeżeli uruchamiasz ten plik po raz pierwszy to prawdopodobnie będzie pusty. Czasami jednak są tam umieszczone różne zadania, które system dodaje automatycznie.
Opiszę działanie poszczególnych wpisów w crontab na przykładzie:
45 4 1 * * /home/user/backup.sh
W tym przykładzie zostanie uruchomiony skrypt o nazwie backup.sh o godzinie 4:45 pierwszego dnia każdego miesiąca. To właśnie lewa część powyższego wpisu jest odpowiedzialna za czas uruchomienia, natomiast prawa strona jest odwołaniem do skryptu, który ma się wykonać.
Liczby i gwiazdki przedstawiają okresy czasowe zaczynając od minuty. Tak więc po kolei mamy minuty, godziny, dni miesiąca, numer miesiąca (1-12) i dzień tygodnia. Dzień tygodnia jest liczony od 0 i oznacza ono niedziele.
Gwiazdki postawione przy numerze miesiąca i dniu tygodnia oznaczają, że nie mają one wpływu na uruchamianie skryptu. Skrypt zostanie uruchomione zawsze pierwszego dnia miesiąca o godzinie 4:45.
Po edycji pliku należy go zapisać i zamknąć. Od teraz obowiązuje nowa tablica crontab. Jeżeli chcemy tylko wyświetlić naszą tablicę crontab, musimy wydać następujące polecenie:
crontab -l
Istnieje również możliwość usunięcia całej tablicy:
crontab -r
Oczywiście powyższy opis pomoże na pewno w sytuacjach, gdy chcemy uruchomiać nasz skrypt w określonych przedziałach czasu, ale co zrobić gdy musimy go wykonać w przedziałach czasu niekoniecznie równomiernych? Można utworzyć kilka zadać crontab ale to jest bardziej pracochłonne. Jest szybszy sposób. Można wykorzystać specjalne symbole do dokładniejszego określenia czasu. Mamy do dyspozycji 3 dodatkowe symbole:
1. Przecinek (,) - za jego pomocą można określić kilka wartości w jednej kolumnie. Poniższy przykład uruchomi skrypt każdego 1,4 i 26 dnia każdego miesiąca:
4 45 1,4,26 * * /home/user/backup.sh
2. Łącznik (-) - umożliwia on określanie zakresów kolumny. Poniższy wpis uruchamia skrypt codziennie przez pierwsze 15 dni każdego miesiąca:
4 45 1-15 * * /home/user/backup.sh
3. Ukośnik (/) - dzieli zakres kolumny na równe części. Poniższy zapis będzie uruchamiał dany skrypt co 15 minut:
*/15 * * * * /home/user/backup.sh
Mam nadzieję, że ten krótki opis ułatwi każdemu wprowadzanie automatyzacji we własnym systemie.
sobota, 20 czerwca 2009
Szablon strony HTML z podziałem na nagłówek, treść, prawe menu i stopkę zbudowany za pomocą CSS
Dzisiaj pokażę jak zrobić prosty i przejrzysty szablon strony zbudowany za pomocą CSS. Szablon będzie wyglądał mniej więcej tak:
Aby go zrobić zaczniemy od utworzenie struktury strony, a więc od utworzenia pliku index.html. Kod wygląda następująco:
A teraz przechodzimy do określenia prezentacji strony, a więc tworzymy plik style.css i umieszczamy w nim następujący kod:
Standarodowo, nic skomplikowanego. Jeżeli są jakieś pytania to proszę pytać.
Aby go zrobić zaczniemy od utworzenie struktury strony, a więc od utworzenia pliku index.html. Kod wygląda następująco:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" lang="pl" xml:lang="pl">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <meta http-equiv="Content-Language" content="pl" />
- <link rel="stylesheet" type="text/css" href="style.css">
- </head>
- <body>
- <div id="naglowek">
- </div>
- <div id="menu">
- <ul>
- </ul>
- </div>
- <div id="tresc">
- <p> Tutaj umieszczamy główną treść strony, a więc wszystko co ma znaleźć się
w środkowej części naszej strony. - </p>
- </div>
- <div id="stopka">
- </div>
- </body>
- </html>
A teraz przechodzimy do określenia prezentacji strony, a więc tworzymy plik style.css i umieszczamy w nim następujący kod:
- body
- {
- background-color: #b5a789;
- font-family: Georgia, "Times New Roman", Times, serif;
- font-size: small;
- margin: 0px;
- }
- #naglowek
- {
- background-color: #675c47;
- margin: 10px;
- height: 70px;
- text-align:center;
- padding: 20px;
- }
- #tresc
- {
- background-color: #efe5d0;
- font-size: 105%;
- padding: 15px;
- margin: 0px 250px 10px 10px;
- line-height: 150%;
- }
- #menu
- {
- background-color: #efe5d0;
- font-size: 105%;
- padding: 15px;
- margin: 0px 10px 10px 10px;
- width: 200px;
- float: right;
- }
- a:link
- {
- color:#b76666;
- }
- a:visted
- {
- color: #675c47;
- }
- #stopka
- {
- background-color: #675c47;
- color: #efe5d0;
- text-align: center;
- padding: 15px;
- margin: 10px;
- font-size: 90%;
- clear: right;
- }
- #stopka a
- {
- color: #efe5d0;
- }
Standarodowo, nic skomplikowanego. Jeżeli są jakieś pytania to proszę pytać.
piątek, 19 czerwca 2009
[CSS] Jak zrobić w CSS poziome menu zbudowane z zakładek
Dzisiaj odrobina wizualizacji ;) Jeżeli potrzebujesz poziomego menu, które ma wygląd zakładek (jak w teczkach) to być może to będzie coś w sam raz dla Ciebie. Menu o którym mowa wygląda tak:
Całość składa się tylko z listy wypunktowanej i odrobiny kodu CSS. Wydaję mi się, że nie ma tam nic trudnego, ale jakbyście mieli jakieś pytanie odnośnie do kodu to piszcie w komentarzach. Na wszystkie pytania chętnie odpowiem.
Całość składa się tylko z listy wypunktowanej i odrobiny kodu CSS. Wydaję mi się, że nie ma tam nic trudnego, ale jakbyście mieli jakieś pytanie odnośnie do kodu to piszcie w komentarzach. Na wszystkie pytania chętnie odpowiem.
- <style>
- ul, ul li {
- display: block;
- list-style: none;
- margin: 0;
- padding: 0;
- }
- ul {
- border-bottom: 1px solid #888;
- float: left;
- width: 100%;
- padding-left: 20px;
- }
- ul li {
- float: left;
- margin-right: 10px;
- }
- width: 100px;
- text-decoration: none;
- display: block;
- background-color: navy;
- color: white;
- padding: 5px 10px;
- border: 1px solid #888;
- position: relative;
- top: 1px;
- font-weight: bold;
- }
- #current a {
- background-color: #fff;
- border-bottom-color: #fff;
- color: black;
- }
- ul a:hover {
- background-color: #fff;
- border-bottom-color: #fff;
- color: black;
- border-bottom: 1px solid #888;
- }
- </style>
- <ul>
- <li><a href="#">Zapasy</a></li>
- <li id="current"><a href="#">Zakupy</a></li>
- <li><a href="#">Sprzedaż</a></li>
- <li><a href="#">Logistyka</a></li>
- </ul>
czwartek, 18 czerwca 2009
[JS] Jak zrobić podwójny formularz wyboru w którym drugie pole zmienia się w zależności od wyboru w pierwszym
Ostatnio potrzebowałem formularza z dwoma polami wybory w których drugie pole zmienia się w zależności od wybranej wartości w pierwszym polu. W moim przypadku chodziło o to, żeby mieć możliwość wyboru domyślnej klasy maski sieci w pierwszej polu, tak żeby w drugim polu wyświetlały się dostępny. Rozwiązałem to w następujący sposób:
- <form name="form" action="index.php" method="get">
- <select name="classes" onChange="switch_m(this.options.selectedIndex)">
- <option>Klasa A</option>
- <option>Klasa B</option>
- <option>Klasa C</option>
- </select>
- <select name="mask"></select>
- <input type="submit" value="wyślij" />
- </form>
- <script language="javascript" type="text/javascript">
- <!--
- function switch_m(wybor) {
- l2=document.form.mask;
- for (i=0;i<l2.options.length;i++) l2.options[i]=null;
- for (i=0;i<opcje[wybor].length;i++)
- l2.options[i]=new Option(opcje[wybor][i].value,opcje[wybor][i].text);
- }
- ile_lista1=document.form.classes.options.length;
- opcje[0][0]=new Option("8","255.0.0.0")
- opcje[0][1]=new Option("9","255.128.0.0")
- opcje[0][2]=new Option("10","255.192.0.0")
- opcje[0][3]=new Option("11","255.224.0.0")
- opcje[0][4]=new Option("12","255.240.0.0")
- opcje[0][5]=new Option("13","255.248.0.0")
- opcje[0][6]=new Option("14","255.252.0.0")
- opcje[0][7]=new Option("15","255.254.0.0")
- opcje[1][0]=new Option("16","255.255.0.0")
- opcje[1][1]=new Option("17","255.255.128.0")
- opcje[1][2]=new Option("18","255.255.192.0")
- opcje[1][3]=new Option("19","255.255.224.0")
- opcje[1][4]=new Option("20","255.255.240.0")
- opcje[1][5]=new Option("21","255.255.248.0")
- opcje[1][6]=new Option("22","255.255.252.0")
- opcje[1][7]=new Option("23","255.255.254.0")
- opcje[2][0]=new Option("24","255.255.255.0")
- opcje[2][1]=new Option("25","255.255.255.128")
- opcje[2][2]=new Option("26","255.255.255.192")
- opcje[2][3]=new Option("27","255.255.255.224")
- opcje[2][4]=new Option("28","255.255.255.240")
- opcje[2][5]=new Option("29","255.255.255.248")
- opcje[2][6]=new Option("30","255.255.255.252")
- opcje[2][7]=new Option("31","255.255.255.254")
- switch_m(0);
- // -->
- </script>
czwartek, 28 maja 2009
[HTML] Jak ustawić przkierowanie na naszej stronie dla użytkowników Internet Explorer
Jeżeli masz problem na swojej stronie związany np. ze źle interpretowanym kodem CSS w przeglądarce Internet Explorer i za cholerę nie możesz tego poprawić tak aby to działało w IE to może lepszym sposobem będzie przekierowanie użytkowników IE na stronę z komunikatem o tym, że Twoja strona nie obsługuję tej przeglądarki i prośbą o uruchomienie Twojej strony w innej przeglądarce. To może zapobiec uciekaniu z krzykiem wszystkich tych, którzy używają IE.
Aby to zrobić wystarczy wpisać w nagłówku strony następujący kod:
Aby to zrobić wystarczy wpisać w nagłówku strony następujący kod:
<!--[if IE]>
<meta http-equiv="refresh" content="0;url=ifie.php">
<![endif]-->
środa, 27 maja 2009
[JS] Jak utworzyć przycisk, który będzie ukrywał/wyświetlał wpisane hasło w polu input
Często, jeżeli gdzie wpisujemy długie i skomplikowane hasła zdarza się, że zapomni co już wpisaliśmy i aby być pewnym, że podane przez nas hasło będzie poprawnym usuwamy cały wpis i przystępujemy do ponownego wpisywania hasła. Możemy pomóc naszym użytkownikom poprzez dodanie przycisku, który za pomocą prostej funkcji wyświetli podgląd wpisanego do tej pory hasła. Standardowo pole w którym wpisujemy hasła wygląda tak:
Aby uruchomić przycisk "Zobacz" należy napisać nasz formularz oraz skrypt JS w następującej formie. Analizę skryptu zostawiam waszej wyobraźni.
Aby uruchomić przycisk "Zobacz" należy napisać nasz formularz oraz skrypt JS w następującej formie. Analizę skryptu zostawiam waszej wyobraźni.
- <script type="text/javascript">
- function change_pass(id){
- var old = document.getElementById(id);
- var new_value = old.value;
- var new_pass = document.createElement('input');
- var button = document.getElementById('button');
- new_pass.type = old.type.toLowerCase() == 'password' ? 'text' : 'password';
- new_pass.name = old.name;
- new_pass.id = old.id;
- new_pass.value = new_value;
- old.parentNode.replaceChild(new_pass, old);
- button.value = old.type.toLowerCase() == 'password' ? 'Ukryj' : 'Zobacz';
- }
- </script>
- <form><input type="password" id="passwd">
- <input id="button" type="button" value="Zobacz" onclick="change_pass('passwd')">
- </form>
środa, 20 maja 2009
[JS] Jak utworzyć prosty kalkulator w JavaScript, który będzie wymnażał np. ilość z ceną
Czasem konieczne jest dodanie w naszych aplikacjach funkcji wymnażania np. ilość z ceną. Jest to przydatne przy budowie różnego rodzaju sklepów internetowych lub aplikacji zarządzania firmą. Możemy w bardzo łatwy sposób napisać funkcję w JavaScripcie, który wymnoży nam dwie liczby, następnie zaokrągli je do dwóch miejsc po przecinku oraz wstawi w wybrane przez miejsce. Myślę, że sam kod nie wymaga zbędnego tłumaczenia i sam mówi przez siebie:
- <script language="JavaScript">
- function pomnoz(mnozna, mnoznik, input)
- {
- var mnozna = document.getElementById(mnozna).value;
- var mnoznik = document.getElementById(mnoznik).value;
- var wynik = mnozna * mnoznik;
- wynik = wynik * 100;
- document.getElementById(input).value=wynik;
- }
- </script>
- Ilość: <input type="text" size="10" id="ilosc"
onchange="pomnoz('ilosc', 'cena', 'wartosc')" name="ilosc"><br> - Cena: <input type="text" size="10" id="cena"
onchange="pomnoz('ilosc', 'cena', 'wartosc')" name="cena"><br> - Wartość: <input type="text" size="10" id="wartosc"
readonly="readonly" name="wartosc">
Subskrybuj:
Posty (Atom)