Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

4 Stron V   1 2 3 > » 

Skie
Napisane: 14.10.2016, 22:57:50





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Jak chcesz bronić ludzi przed podszywaniem się, to po prostu zaimplementuj mechanizm sesji, ustaw timeout na tę sesję i dodaj logowanie do czatu. WebSocket działa na serwerze HTTP, w momencie utworzenia socketa, leci request HTTP. Wymuś logowanie na typ etapie, by utworzenie połączenia było możliwe tylko z loginem i hasłem, po utworzeniu socketa ustaw timeout po jakim HTTP ma być zamknięte, co zamknie również WS.
  Forum: Przedszkole · Podgląd postu: #1202237 · Odpowiedzi: 3 · Wyświetleń: 412

Skie
Napisane: 14.10.2016, 21:12:09





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Nie jestem profesjonalnym programistą JAVY, ale pracując z nią hobbystycznie i pobocznie w pracy, myślę, że mogę odpowiedzieć.

1. JAVA a bazy danych to dwie osobne rzeczy i najcześciej sprawa takich aplikacji wygląda podobnie jak w PHP - apka JAVAowa korzysta z API i konfiguracji osobno zainstalowanej bazy danych lub big data, by zapisywać i czytać dane. W przypadku aplikacji bardziej pod zastosowanai domowe niz serwerowe, czasem do instalatora dodawane są opcje typu "Posiadam bazę danych" i "Nie posiadam", po czym instalator odpowiednio reaguje. Aczkolwiek najczęściej baza stoi na serwerze.

2. Nie mam pojęcia, przynajmniej nie przy desktopowej apce.

3. IntelliJ jest teraz na topie , więc jak do PHP używasz PHPStorma, to powinieneś czuć się jak w domu.

4. Spring i Hibernate to podstawa.
  Forum: Hydepark · Podgląd postu: #1202231 · Odpowiedzi: 5 · Wyświetleń: 745

Skie
Napisane: 11.10.2016, 20:17:26





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Tak jak pisze Pyton_000 to czego szukasz to websocket - tutaj przykład https://github.com/kraken-php/demo-chat smile.gif
  Forum: Przedszkole · Podgląd postu: #1202010 · Odpowiedzi: 2 · Wyświetleń: 175

Skie
Napisane: 8.10.2016, 15:27:24





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Zaleznie od potrzeb używasz albo WebSocket, albo HTTP Long-Polling. To pierwsze jest wydajniejsze, ale wymaga customowej logiki, bo nie jest zgodne z tym jak działa HTTP w 100%. Z tego co piszesz to long-polling będzie wystarczajace.

WebSocket to nie jest wynalazek node'owy. Jest to pewien standard. Websocketów możesz używać również w PHP, Pythonie, Ruby i zapewne wielu innych językach programowania.

Ratchet to implementacja WebSocketów w PHP, dzięki czemu nie potrzebujesz Node.js by ich używać. Ratchet jest wydajniejszy od implementacji node'owych, ale nie jest aż tak enterprise'owy jak np socket.io. A jak myślisz nad WS w PHP to oprócz ratcheta polecam jeszcze sprawdzić Kraken/Network smile.gif
  Forum: PHP · Podgląd postu: #1201774 · Odpowiedzi: 9 · Wyświetleń: 415

Skie
Napisane: 6.10.2016, 22:25:52





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Nie, to nie są websockety. To jest long-polling z wykorzystaniem samego HTTP. Klikasz na budowę budynku, do serwera leci requet, serwer przelicza czas kiedy budowa się zaczęła, odsyła do przeglądarki ile ma ona czekać, przeglądarka uruchamia timer a po tym czasie odświeża automatycznie stronę. Nic wiecej tutaj nie potrzeba. A jak koniecznie chcesz się bawić websocketami to zamiast mieszkać PHP z Node.js użyj albo samego Node.js albo WebSocketów w PHP.
  Forum: PHP · Podgląd postu: #1201645 · Odpowiedzi: 9 · Wyświetleń: 415

Skie
Napisane: 11.09.2016, 22:45:44





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Jak dla mnie to co opisujesz brzmi jak typowe zastosowanie dla strategii.

Teoria: https://en.wikipedia.org/wiki/Strategy_pattern
Strona opisująca implementację tego wzorca: http://www.oodesign.com/strategy-pattern.html
Trochę prostsza wersja tego co powyżej w PHP: http://www.phptherightway.com/pages/Design-Patterns.html
  Forum: Object-oriented programming · Podgląd postu: #1199837 · Odpowiedzi: 6 · Wyświetleń: 3 067

Skie
Napisane: 4.05.2016, 13:54:25





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Twoje pytanie jakie zadałeś w tym temacie jest nie do końca jasne. Porównujesz użycie dwów wzorców, które stosowane są pod inne potrzeby, a dodatkowo w dość dziwny sposób pokazujesz przykład użycia fabryk w kodzie, co budzi moje podejrzenia, że być może źle je interpretujesz.

Mówiąc krótko, dziedziczenie jest po to, byś rozszerzajać daną klasę nie musiał kopiować kodu z klasy bazowej, a Dependency Injection po to, by kod był prostszy do ponownego użycia i do testowania. DI powinieneś używać zawsze, bo jest to krótko mówiąc dobra praktyka programistyczna, która być może na poczatku trudna (zwłaszcza jak ktoś się przyzwyczaił do Singletonów, Fasad lub programowania opartego o klasy jak sprzed 10lat), po opanowaniu niesie ze sobą same korzyści. Dziedziczenie używasz z kolei wtedy, gdy jest Ci rzeczywiście potrzebne.

Teraz wracając do Twojego pytania, to jeśli pytasz o nadmiarowy kod, który może się pojawić w klasie potomnej ze względu, na to że potrzebujesz założmy tylko 20% klasy funkcjonalności klasy bazowej, to ewidentnie zrobiłeś coś źle z architekturą programu. W innym przypadku jeśli Twoje pytanie sprowadza się tylko do "czy większa klasa = cięższy pamięciowo obiekt?" to odpowiedź brzmi tak.
  Forum: Object-oriented programming · Podgląd postu: #1191095 · Odpowiedzi: 6 · Wyświetleń: 1 691

Skie
Napisane: 7.09.2015, 22:12:40





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Konfiguracji nie, ale jest możliwość, że Twój kod chce pobrać dane, które w strukturze Twojej bazy np nie istnieją. Mimo wszystko to wciąż byłaby w tym wypadku wina błędnego kodu, nie mysql.
  Forum: Przedszkole · Podgląd postu: #1170485 · Odpowiedzi: 3 · Wyświetleń: 262

Skie
Napisane: 19.08.2015, 01:29:08





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Możesz to rozwiązać za pomocą JavaScript korzystając z obiektu window.location, np. window.location.href. Sposób działania byłby taki, by pobrać obecny adres na którym jest użytkownik, dokleić do niego lang, lub zmienić jego wartość jeśli już jest i przejść pod tak wygenerowany link.

Możesz to również rozwiazać za pomocą samego PHP, generując zawartość Twojego selecta dynamicznie dla każdej strony, czyli zamiast "/?lang=pl" generowałbyś "/{currentHref}&lang=pl" na podstaiwe $_SERVER['HTTP_HOST'] i $_SERVER['REQUEST_URI'].

Za pomocą samego HTML tak by działało na każdej przeglądarce o ile mi wiadomo się nie da.
  Forum: Przedszkole · Podgląd postu: #1168694 · Odpowiedzi: 1 · Wyświetleń: 181

Skie
Napisane: 11.08.2015, 14:20:47





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

AJAX polling lub long-polling, ale pod względem wydajności i precyzji jest to znacznie gorsze rozwiązanie.
  Forum: JavaScript · Podgląd postu: #1167972 · Odpowiedzi: 6 · Wyświetleń: 345

Skie
Napisane: 8.08.2015, 18:01:15





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Jako zamiennik dla PHP : JAVA, Python

Jako dopełnienia dla PHP : JavaScript, C/C++, Golang

Jako ciekawostka : Hacklang
  Forum: Hydepark · Podgląd postu: #1167705 · Odpowiedzi: 21 · Wyświetleń: 3 023

Skie
Napisane: 8.08.2015, 20:33:58





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Uchwyt do storage powinien być zdefiniowany jako Dependency klasy PlayerFactory.

  1. class PlayerFactory
  2. {
  3. protected $storage = null;
  4.  
  5. // ...
  6.  
  7. public function __construct(Storage $storage)
  8. {
  9. $this->storage = $storage;
  10. }
  11.  
  12. public function createPlayer($id)
  13. {
  14. // $this->storage to handler to klasy, która zajmuje się połączeniem z Twoim storage - może to być to PDO dla MySQL albo jakiś ORM albo cokolwiek używasz
  15. $data = $this->storage->getPlayerData($id);
  16.  
  17. return new PlayerModel($data);
  18. }
  19.  
  20. // ...
  21. }


Następnie wywołanie tego kodu w jakimś miejscu wyglądało by tak:

  1. $session = new Session(); // jakiś obiekt, którym zarządzasz sesją
  2. $storage = new Storage(); // jakiś obiekt, którym zarządzasz magazynem danych - innymi słowy to ta klasa powinna być świadoma o obiekcie $db, który trzyma połączenie do bazy danych
  3. $factory = new PlayerFactory($storage); // fabryka graczy
  4.  
  5. $player = $factory->createPlayer($session->getId()); // za pomocą fabryki tworzysz obiekt klasy PlayerModel, który zawiera WSZYSTKIE dane odnośnie gracza. Zauważ, że ID przekazane do createPlayer() pobrałeś od obiektu Session(), który potrafi operować na sesji
  6.  
  7. echo $player->getId(); // zwraca Id gracza
  8. echo $player->getName(); // zwraca name gracza
  9. echo $player->getLevel(); // zwraca poziom gracza
  10. // itd./


Wszystkie gettery które użyłem na $player, oczywiście musisz zdefiniować wewnątrz klasy PlayerModel. Połaczenie z bazą danych powinno być zdefiniowane gdzieś wewnątrz klasy Storage, czyli np.:

  1. class Storage {
  2. protected $db = null;
  3.  
  4. public function __construct()
  5. {
  6. $this->db = new PDO(...);
  7. }
  8.  
  9. public function getPlayerData($id) // zauważ, że własnie tę metodę wykorzystuje metoda PlayerFactory::createPlayer() do pobrania danych
  10. {
  11. $stmt = $this->db->prepare("SELECT * FROM players WHERE id=:id");
  12. $stmt->bindValue(':id', $id, PDO::PARAM_INT);
  13. $stmt->execute();
  14.  
  15. return $stmt->fetch(PDO::FETCH_ASSOC);
  16. }
  17. }


Pamiętaj , że obiekt klasy Storage() powinieneś stworzyć RAZ na całą swoją aplikację i następnie wstrzykiwać tam gdzie jest Ci potrzebny, by nie tworzyć zbędnych połączeń do bazy danych. Oczywiście jest to bardzo prosta implementacja takiego magazynu danych. Wraz ze wzrostem wiedzy, wyabstraktujesz tę klasę do masy innych podklas.
  Forum: Przedszkole · Podgląd postu: #1167711 · Odpowiedzi: 3 · Wyświetleń: 409

Skie
Napisane: 8.08.2015, 15:56:16





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Przede wszystkim to tablica array nie jest obiektem. Jest milion sposobów w jaki możesz to zrobić, z czego najlepiej będzie zrobić to w taki sposób, że:

1. Stwórz klasę PlayerModel, która jest modelem gracza. W Twoim przykładzie byłoby to coś w stylu:

  1. class PlayerModel
  2. {
  3. protected $level;
  4. protected $name;
  5.  
  6. // dodatkowe pola
  7.  
  8. public function __construct(array $rawPlayerData = [])
  9. {
  10. $this->level = isset($rawPlayerData['level']) ? $rawPlayerData['level'] : 0;
  11. $this->name = isset($rawPlayerData['level']) ? $rawPlayerData['level'] : '';
  12. }
  13.  
  14. // tutaj jakieś dodatkowe settery, gettery
  15. }


2. Stwórz fabrykę graczy, która będzie zajmowała się tworzeniem PlayerModel korzystając z jakiejś bazy graczy - np. MySQL

  1. class PlayerFactory
  2. {
  3. // ...
  4.  
  5. public function createPlayer($id)
  6. {
  7. // $this->storage to handler to klasy, która zajmuje się połączeniem z Twoim storage - może to być to PDO dla MySQL albo jakiś ORM albo cokolwiek używasz
  8. $data = $this->storage->getPlayerData($id)->fetchArray();
  9.  
  10. return new PlayerModel($data);
  11. }
  12.  
  13. // ...
  14. }


3. Teraz wszędzie, gdzie chcesz skorzystać stworzyć PlayerModel(), możesz użyć coś takiego:

  1. $factory = new PlayerFactory(...);
  2. $player = $factory->createPlayer($playerID);


4. W funkcjach metodach, gdzie chcesz użyć tego modelu z kolei możesz go hintować:

  1. public function doSomethingToPlayer(PlayerModel $player)
  2. {
  3. $player->doSomething();
  4. }


5. W razie rozwoju projektu, możesz fabrykę graczy umieścić wewnątrz Dependency Injection Containera.
  Forum: Przedszkole · Podgląd postu: #1167697 · Odpowiedzi: 3 · Wyświetleń: 409

Skie
Napisane: 8.08.2015, 17:35:03





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Na początek Silex albo Lumen, tak jak pisali koledzy wcześniej. Docelowo, jak je już będziesz miał wybrany z nich w małym palcu, wtedy łatwiej będzie Ci wybrać któryś z większych frameworków takich jak Symfony czy Laravel. Oczywiście dużych projektów jest jeszcze znacznie więcej, ale te i tak będziesz musiał znać.
  Forum: Przedszkole · Podgląd postu: #1167700 · Odpowiedzi: 18 · Wyświetleń: 1 043

Skie
Napisane: 7.08.2015, 22:34:19





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

W kwestii czy warto zaczynać od microframeworka czy też nie, nie mam zdania, ale osobiście polecam Ci ostatecznie celować w Laravel. Symfony jako framework to przeżytek i jesli nie miałeś z nim wcześniej styczności, lepiej go olej i ogarnij Laravel.
  Forum: Przedszkole · Podgląd postu: #1167661 · Odpowiedzi: 18 · Wyświetleń: 1 043

Skie
Napisane: 16.07.2015, 15:17:11





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Twój JS wykonuje się zaraz po wczytaniu strony, dokładnie jeden raz. W 5 linii, pobierasz wartość inputa, która w tym momencie zależnie od przeglądarki będzie pustym stringiem lub undefined. Zapisujesz tę wartośc, a następnie w linii 6 ustawiasz handlera zdarzenia onchange na funkcję która podmieni zawartość strony na zawartość tej zmiennej - czyli wyświetli Ci się pusta strona i wydaje Ci się , że się ona przeładowała. Nie powinieneś używać document.write!

Kod powinien wyglądać tak:
Kod
document.getElementById('id1').onchange = function() {
    var value = this.value;
    var output = document.getElementById('id2');
    
    output.value = value;
};


Przypisujesz na onchange funkcje, która przy każdej zmianie pobiera wartość inputa o id=id1 i wpisuje jego wartość do inputa o id=id2.
'this' wykorzystane w środku funkcji odnosi się do elementu, na którym się wykonał handler - czyli input o id=id1.
  Forum: Przedszkole · Podgląd postu: #1165263 · Odpowiedzi: 10 · Wyświetleń: 333

Skie
Napisane: 16.07.2015, 11:43:47





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

1. Stwórz kolekcję wszystkich translacji, np [ ż => rz, i => j, rz => ż, j => i ]
2. Potnij swój tekst na tablicę wg kluczy w kolekcji translacji, czyli z "żoliborz" powinno powstać [ żol, ibo, rz ] oraz "odwróconą" tablicę [ rzol, jbo, ż ]
3. Wygeneruj wszystkie binarne ciągi o długości równej ilości elementu w tablicy z pkt. 2, czyli dla żoliborza będą to kombinacje wartości 3: 000, 001, 010, 011, 100, 101, 110, 111
4. Dla każdego ciągu binarnego w miejscu 0 wstaw fragment tekstu z pierwszej tablicy, dla 1 wstaw fragment tekstu drugiej tablicy
np. dla 101 to będzie "rzoliboż"

Zalety:
- zadziała dla każdego rozbudowanego tekstu
- teksty generowane są na życzenie, wieć nie trzeba ich trzymać w pamięci cały czas - tworzysz tekst z ciągu binarnego kiedy go potrzebujesz - potem go zapominasz
- brak uzycia regexpa
- brak użycia drogich funkcji operujących na stringach (oprócz exploda na początku)

Czy jes to najlepsze rozwiazanie? Nie wiem, ale to pierwsze co mi przyszło do głowy dla generacji tekstu i moim zdaniem nadaje się. Przetestuj.

Jeżeli jednak potrzbujesz tej generacji do stworzenia regexpa, czyli nie po to by generować słowa, a raczej sprawdzać czy są poprawne (nie licząc błędów ortograficznych) to wtedy jest nawet prościej bo zamiast pocinać tablicę możesz od razu podmieniać wartości wg kolekcji translacji. Czyli np jak masz j=>i to każde j podmienić należy na (j|i).
  Forum: PHP · Podgląd postu: #1165243 · Odpowiedzi: 3 · Wyświetleń: 259

Skie
Napisane: 4.06.2015, 22:01:17





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Możesz to zrobić na socketach lub long-polling. Sockety będą w tym przypadku TROCHĘ wydajniejsze, ale wątpię by była to znacząca różnica. Z drugiej strony Sockety to kolejna rozbudowana warstwa abstrakcji w Twojej aplikacji - musisz sam zadecydować co jest dla Ciebie istotniejsze. Osobiście wybrałbym long-polling jeśli nie miałbym zastosowania dla socketów żadnego poza tym chatem.

Backend standardowo, cache + db. Jako bazę danych wybrałbym SQLite albo jakiś NoSQL, będący osobną bazą danych od całej aplikacji, by w razie potrzeb można było przenieść sam serwer obsługujący ten czat.
  Forum: PHP · Podgląd postu: #1160521 · Odpowiedzi: 1 · Wyświetleń: 243

Skie
Napisane: 26.05.2015, 21:31:32





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

1. Dodaj cache'owanie wyników z bazy danych - np takie rzeczy jak stolice przecież się nie zmienieją prędko, możesz spokojnie zapamiętywać
2. Zainteresuj się cache'owaniem HTTP i/lub reverse proxy
3. Pomyśl, może warto zrobić cache po stronie frontu
4. Dodaj opóźnienie na keyup, niech request wysyła się po jakimś czasie od wciśnięcia klawisza, nie od razu
5. Mówisz, że masz 3 requesty + PHP po środku - przerób to na 1 request
  Forum: MySQL · Podgląd postu: #1159562 · Odpowiedzi: 25 · Wyświetleń: 937

Skie
Napisane: 22.03.2015, 14:49:51





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

catch łapie pierwszy pasujący exception, jak zmienisz kolejność z

catch(Exception);
catch(newException);

na

catch(newException);
catch(Exception);

to wszytko będzie ładnie działać.
Zasada jest taka, że bloki catch definiujesz od najbardziej specyficznych wyjątków to tych najbardziej ogólnych.
  Forum: Przedszkole · Podgląd postu: #1150773 · Odpowiedzi: 12 · Wyświetleń: 139

Skie
Napisane: 22.03.2015, 14:11:21





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Każda pętla się do tego nada, ponieważ to co opisałeś to właśnie przypadek użycia pętli... Ludzie, choć trochę asertywności, naprawdę.

Kod
for ($ouput = false; $output !== true; )
{
   $output = doSmth();
}


Kod
$output = false;
while ($output !== true)
{
   $output = doSmth();
}


Kod
do {
   $output = doSmth();
} while($output !== true);
  Forum: Przedszkole · Podgląd postu: #1150764 · Odpowiedzi: 6 · Wyświetleń: 189

Skie
Napisane: 14.03.2015, 14:22:27





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Poszukaj coś na temat:

- ajax long-polling
- websocket
- flashsocket

I wybierz najbardziej pasującą dla Ciebie opcję
  Forum: Przedszkole · Podgląd postu: #1149642 · Odpowiedzi: 1 · Wyświetleń: 152

Skie
Napisane: 11.11.2010, 19:43:11





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Bardzo prosto - ORDER BY type + pętla w PHPie, która będzie porównywała type rekordów. Jeżeli type ostatnio porównywanego rekordu z obecnym jest inne, to doda jakąś linię czy coś takiego by oddzielić grupy. Zależy od twojej inwencji.
  Forum: Przedszkole · Podgląd postu: #806455 · Odpowiedzi: 3 · Wyświetleń: 729

Skie
Napisane: 31.10.2010, 16:38:36





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Tak, możesz osobno ustawiać obramowanie dla każdej strony za pomocą border-top, border-left, border-right, border-bottom lub też ustawić najpierw ogólnie za pomocą border a potem usunąć górną ustawiając odpowiednią szerokość (0) lub styl obramowania w border-top.
  Forum: Przedszkole · Podgląd postu: #802609 · Odpowiedzi: 3 · Wyświetleń: 439

Skie
Napisane: 9.10.2010, 18:58:26





Grupa: Zarejestrowani
Postów: 555
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----

Raczej nie powinno być problemów - ale sprawdź - a jak będą to zablokuj Chrome'owi i Safari możliwość rozszerzania pola tekstowego za pomocą CSS:

Kod
resize: none;
  Forum: Przedszkole · Podgląd postu: #796692 · Odpowiedzi: 7 · Wyświetleń: 1 063

4 Stron V   1 2 3 > » 

New Posts  Nowe odpowiedzi
No New Posts  Brak nowych odpowiedzi
Hot topic  Popularny temat (Nowe)
No new  Popularny temat (Brak nowych)
Poll  Sonda (Nowe)
No new votes  Sonda (Brak nowych)
Closed  Zamknięty temat
Moved  Przeniesiony temat
 

RSS Wersja Lo-Fi Aktualny czas: 23.10.2018 - 21:53