Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl


stud3nt
Napisane: 11.02.2016, 21:28:40





Grupa: Zarejestrowani
Postów: 46
Dołączył: 6.01.2012

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

Skoro głównym przeznaczeniem jest czytanie książek technicznych, to odpadają wszystkie czytniki 6" i 6.8". Są po prostu zbyt małe. Prawie wszystkie książki techniczne są w formacie PDF i zawierają masę ilustracji i/lub wzorów technicznych i na 6" będą albo zbyt małe, albo widoczne tylko częściowo. Z uwagi na czas reakcji ekranu i słabsze podzespoły, scrollowanie na czytniku to katorga. 8 cali to będzie "ledwo, ledwo", chociaż lepiej sprawdź osobiście, bo może być zbyt mało.

I tutaj dochodzimy do punktu, gdzie nie mogę Tobie niczego naprawdę dobrego zaproponować. Najlepszy typ ekranu (E-ink Carta) występuje w rozmiarze max 6.8", o większych na razie nie słyszałem. Najlepszym, co możesz zatem liczyć, to Pearl - nie jest zły i daje się czytać bez najmniejszego problemu, ale też wyraźnie różni się od książki - tło jest bardziej szare, a litery nie są do końca czarne.

Właśnie sobie uświadomiłem, że wśród czytników 8" też nie ma zbyt wiele do zaoferowania. Słyszałem o kilku modelach:
- ukraiński PocketBook Inkpad
- chiński Boyue XL (rebrandowany w Europie jako Icarus 8 i Inkbook 8) - dużą zaletą jest Android;
- francuski Cybook Ocean

Osobiście nie brałbym żadnego. Wszystkie mają ekrany Pearl, ALE - PocketBook jako jedyny ma ekran o dobrej rozdzielczości (1200x1600, 260ppi), dwa pozostałe mają tylko 768x1024, 166ppi. Niższe ppi oznacza rozmycie czcionek - osoba niedoświadczona nie zauważy różnicy, ale po ustawieniu obok siebie dwóch czytników różnica jest widoczna natychmiast.
PocketBook z kolei nie jest taki fajny. Jest to czytnik ukraiński - i jego jakość też jest ukraińska. W pierwszych seriach jakość i spasowanie obudowy były takie, że pękały one same z siebie od naprężeń. Ekran natomiast udało im się zepsuć na tyle, że miał on kontrast gorszy od Vizplexa (poprzednia generacja ekranów e-papierowych). Teraz podobno to poprawili, ale problemy z oprogramowanie pozostały - zaleca się pozostanie przy starszych wersjach, bo nowe wprowadzają dużo więcej nowych błędów i problemów, niż naprawiają starych.
Starociami typu Irex Iliad nie warto sobie zawracać głowy, opracowano je w poprzednim dziesięcioleciu.

Ufff, i tak oto doszliśmy do czytników kalibru największego, czyli czytników 9.7":
- Onyx Box M90/M92/M96 i jego rebrandingi Icarusa
- Kindle DX - uważaj, żeby nie kupić pierwszej generacji - ma ekran Vizplex. Najnowsze (tj. najnowsze istniejące, bo już od dawna ich nie produkują) mają już ekrany Pearl;
- PocketBook 902/903/912 (UNIKAJ ICH JAK OGNIA - 902 nie jest dotykowy, a cała seria ma ekrany Vixplex);

Onyxów M90 unikaj jak diabeł święconej wody. To niestety nieudany bubel - przycisk IR działa w nich jak chce i kiedy chce (a często działa sam z siebie), a ekrany mają to do siebie, że pękały bez wyraźnej przyczyny. Najlepsze wytłumaczenie jakie słyszałem to takie że szklana podstawa ekranu została przykręcona zbyt mocno do pleców i nie wytrzymuje naprężeń. Często wystarczyło odłożyć (normalnie, bez rzucania) na chwilę czytnik, żeby po chwili podnieść go z rozwalonym ekranem. Efekt losowy, gwarancji oczywiście nie uznaje się (uszkodzenie mechaniczne, pfff).
M92 to poprawione w/w defekty (przynajmniej wg producenta), za to M96 ma już Androida, co znacznie poszerza możliwości odtwarzania plików. Ogromna większość czytników ma bowiem system fabryczny tworzony na bazie Linuxa. Działa on szybko na stosunkowo słabych podzespołach czytnika, ale jego wadą jest praktycznie zerowa możliwość ingerencji użytkownika (nie zainstalujesz sobie innego oprogramowania do czytania bez utraty gwarancji).

Podsumowując ten przydługi tekst: bierz Icarusa 8/Inkbooka 8 albo Onyxa M96. Czytniki 8" kosztują w granicach 800zł, Onyxa widziałem chyba za 1400 w Media Markcie (te czytniki są już trudno dostępne).
  Forum: Hydepark · Podgląd postu: #1184396 · Odpowiedzi: 5 · Wyświetleń: 895

stud3nt
Napisane: 8.10.2013, 10:43:54





Grupa: Zarejestrowani
Postów: 46
Dołączył: 6.01.2012

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

Nie wiem, czy to pomoże, ale:

W PHP masz datę w sekundach od początku epoki unixowej, czyli od 1 stycznia 1970, stąd wynik 1381227152 (teraz);

W Excelu epoka "start" to 1 stycznia 1900 roku. NIE LICZY W SEKUNDACH, tylko w dniach. Stąd (cytuję) data 1 stycznia 2008 jest liczbą kolejną 39448, ponieważ różnica między tymi datami wynosi 39 448 dni (koniec cytatu).

Znając to, wystarczy w php obliczyć liczbę dni między 1 stycznia 1900 a docelową datą, aby uzyskać datę excelową:
http://webmade.org/porady/obliczanie-czasu...-datami-php.php
  Forum: PHP · Podgląd postu: #1069205 · Odpowiedzi: 5 · Wyświetleń: 157

stud3nt
Napisane: 26.09.2013, 21:45:31





Grupa: Zarejestrowani
Postów: 46
Dołączył: 6.01.2012

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

Cytat(Pyton_000 @ 26.09.2013, 22:25:32 ) *
Bierzesz ramkę powiedzmy 3 cyfry i przeszukujesz cały ciąg wypisując do tablicy kombinacje wyszukane i licznik ile razy było znalezione.
Potem zwiększasz ramkę o 1 cyfrę i jedziemy od początku

Przede wszystkim jakiej długości minimalnie ma być ciąg który się może powtórzyć?


To też chciałem zaproponować, ale przelatywanie cyfr od 0 do 999 jest trochę mało wydajne, a co dopiero przy większej ilości.
Na pewno ma to sens, jeśli szukamy max 2-cyfrowej liczby.

W przypadku dłuższych ciągów nie wiem, czy nie wydajniej byłoby zrobić 'suwak' obejmujący ileś tam liczb.
1) Najpierw "odcinamy" cyfry (od pozycji 0 do 4) i robimy z nich wzorzec;
2) Przelatujemy wzorcem ciąg i wypisujemy powtórzenia;
3) Robimy nowy wzorzec przesunięty o 1 (odcinamy od pozycji 1 do 5 w ciągu) i znowu porównujemy;
4) I tak do skutku. Przerywamy, gdy rozpiętość wzorca przekroczy długość badanego ciągu.

Coś w ten deseń:

  1. $testSequence = '5679854356798543567985435679854356798543'; //testowany ciąg liczb
  2. $patternLength = 4; //startowa wielkość badanego wycinka;
  3.  
  4. for ($patternLength; $patternLength <= ceil(strlen($testSequence) / 2); $patternLength++)
  5. {
  6. for ($i=0; $i<=(strlen($testSequence) - $patternLength); $i++)
  7. {
  8. $pattern = '/'.substr($i, ($i+$patternLength)).'/';
  9. preg_match_all($pattern, $testSequence, $matches);
  10.  
  11. if (count($matches) > 1)
  12. {
  13. echo implode(",", $matches);
  14. }
  15. }
  16. }
  Forum: PHP · Podgląd postu: #1067492 · Odpowiedzi: 7 · Wyświetleń: 211

stud3nt
Napisane: 26.08.2013, 17:40:37





Grupa: Zarejestrowani
Postów: 46
Dołączył: 6.01.2012

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

W jQuery robi się to tak:

  1. $('#textBox').bind('blur keyup', function(e){
  2. if( e.type === 'blur' || (e.type === 'keyup' && e.which === 13) ){
  3. // Code...
  4. }
  5. });
  Forum: JavaScript · Podgląd postu: #1062365 · Odpowiedzi: 8 · Wyświetleń: 211

stud3nt
Napisane: 11.07.2013, 12:07:02





Grupa: Zarejestrowani
Postów: 46
Dołączył: 6.01.2012

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

Oj, sposobów jest cała masa, że wymienię kilka:

- wstawiamy jakieś pole formularza o kuszącej nazwie, np username, dajemy mu klasę ukrytą, żeby user go nie widział - bot się skusi, wypełni i tym samym się zdradzi;
- mierzymy czas od wyświetlenia formularza do jego wysłania - bot wypełnia znacznie szybciej, niż człowiek;
- wstawiamy skrypt js (najlepiej autorski), który po wciśnięciu przycisku 'wyślij' uzupełnia ukryte pole w formularzu o określoną wartość i dopiero wtedy wysyła go. Boty nie wchodza fizycznie na stronę i nie klikają, tylko one mielą kod html i wysyłają własne POSTy. A z obsługą JS u nich beznadziejnie.
- sprawdzanie formularza na obecność słów oznaczonych jako spam, np. 'przedłużanie penisa', 'kredyty hipoteczne' etc.

Same CAPTHa można stosować na wiele innych sposobów, niż klepanie liter. Można stosować przeciąganie/łączenie elementów, pytania (wpisz wynik działania: 2+2), zaznaczanie elementów itd.
  Forum: Oceny · Podgląd postu: #1055282 · Odpowiedzi: 10 · Wyświetleń: 2 912

stud3nt
Napisane: 26.02.2013, 13:06:21





Grupa: Zarejestrowani
Postów: 46
Dołączył: 6.01.2012

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

Wyrzucasz zdarzenia (onfocus) z inputa, nadajesz mu id='baba_jaga', przykładowo:

  1. <input type='text' name='nazwa_tekstu' id='baba_jaga' >


W bloku JSowym dopisujesz

  1. document.getElementById('baba_jaga').onfocus = function() {
  2. if(this.value=='' || this.value == 'Wpisz szukane słowo') {
  3. this.value = '';
  4. }
  5. }



Drugi sposób: kod JS umieszczasz między znacznikami {literal}{/literal} - SMARTY nie interpretuje tego, co jest między nimi.
  Forum: Przedszkole · Podgląd postu: #1028551 · Odpowiedzi: 4 · Wyświetleń: 162

stud3nt
Napisane: 6.10.2012, 18:51:16





Grupa: Zarejestrowani
Postów: 46
Dołączył: 6.01.2012

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

Za to ja się rozpiszę.

Masz błąd w drugiej linijce JS (replace). W ogóle to replace'a używa się do zmiany znaków w ciągu. Użyj funkcji style.

Nigdy nie pisz więcej, niż jednowyrażeniowych funkcji w HTMLowych wyzwalaczach. Umieszczanie nazwy funkcji też nie jest dobre ani eleganckie, ale zadziała:

  1. <div id="miecz" style="display: none">miecz</div>
  2. <img onclick="nazwa_funkcji()" src="images/sword.gif"/>


[JAVASCRIPT] pobierz, plaintext
  1. function nazwa_funkcji() {
  2. document.getElementById('miecz').style.display = 'block';
  3. }
[JAVASCRIPT] pobierz, plaintext


Pamiętaj jednak, że tak się stron nie robi. Poczytaj tą stronę, gdy już ją naprawią: http://www.doman.art.pl/kursjs/
W szczególności dział o zdarzeniach w JavaScript.
  Forum: JavaScript · Podgląd postu: #997683 · Odpowiedzi: 1 · Wyświetleń: 158


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: 10.12.2018 - 08:15