Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

586 Stron V  « < 502 503 504 505 506 > »   
Reply to this topicStart new topic
> Jeden Wielki OffTopick, jeśli masz pisać na temat, nie wchodź!
mike
post
Post #10061





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Ooo, ten wątek jeszcze żyje? Nieźle.
Pamiętam jak dziś kiedy powstawał (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Forti
post
Post #10062





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Cytat(Pyton_000 @ 2.03.2015, 12:01:42 ) *
Nie napisałem że to jest ideał (IMG:style_emoticons/default/wink.gif) Pisane na szybko.
Oczywiście że w tym i wielu innych przypadkach lepiej użyć reg_exp.

Niech każdy używa czego chce (IMG:style_emoticons/default/wink.gif) Ja czasami z lenistwa wolę regexp '(slowo|slowo2)' niż bawić się w coś innego. Kontekst jest ważny.

Jak tam Wasze poniedziałki?



Mi łatwiej napisać str_replace (IMG:style_emoticons/default/tongue.gif)

W nocy po żone musiałem pojechać po koncercie, także masakra (IMG:style_emoticons/default/biggrin.gif) a jeszcze po pracy meet.js się szykuje.


btw:

właśnie pierwszy raz w życiu użyłem Trait. Nawet przydatne, co o tym mechanizmie sądzicie?

Ten post edytował Forti 2.03.2015, 14:18:37
Go to the top of the page
+Quote Post
starach
post
Post #10063





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Cytat(Forti @ 2.03.2015, 13:20:56 ) *
(...)

Ostatnio z uporem maniaka próbowałem w kilku miejscach zastosować traitsy i chyba zrobiłem to dobrze, ale
skoro mają one zastępować szablony z C++ bądź naokoło wdrażać dziedziczenie po wielu klasach którego nie ma w PHP to dlaczego nie mogę zmienić typów argumentów w poszczególnych metodach. W takim \ArrayAccess na przykład by się to przydało.
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #10064





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Cytat(!*! @ 2.03.2015, 10:39:44 ) *
Czyli nie masz żadnego argumentu, poza "bo tak, bo ja nie ogarniam".

Kolego wykrzyknik-gwiazdka-wykrzyknik, na każdym kroku każdego pojeżdżasz, zastanawiam się po co. Akurat tak się składa, że znam wyrażenia regularne BARDZO dobrze, zresztą nawet na tym forum pomagałem wielokrotnie z regexem. Po raz któryś już pokazujesz, że nigdy nie pracowałeś nad profesjonalnymi projektami, tworzonymi w grupie programistów. W poważnych projektach kod pisze się tak, żeby był czytelny dla pozostałych programistów. I to nie oznacza, że oni są kiepscy i nie potrafią tego odczytać. Wręcz przeciwnie. To oznacza, że oni mają do roboty 100 innych rzeczy i szkoda ich czasu na analizę kodu, który można było napisać prościej. Tylko że tak jak napisałem wcześniej, z wyrażeniami regularnymi na ten moment zwykle nie ma lepszej alternatywy.
Cytat(Forti @ 2.03.2015, 11:34:52 ) *
W przypadku gdy jedynym argumentem jest nie czytelność skomplikowanych wzorców to smutne, ponieważ skomplikowane wzorce z definicji są trudne w czytaniu. Np. prosta walidacja czy mamy do czynienia z kodem pocztowym:

  1. ^([0-9]{2})-([0-9]{3})$


Co jest w tym trudnego do czytania? A zrób to jakimiś funkcjami php. Chętnie porównam wyniki w pętli 1000 ;)

No jeśli kod pocztowy to najtrudniejszy przypadek jaki możesz sobie wyobrazić, to się nie dziwię, że tak podchodzisz do tematu ;)
Go to the top of the page
+Quote Post
Forti
post
Post #10065





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Nie, to jest bardzo prosty przypadek, który pokazuje jak regex jest przydatny. Ciężko to zrobić inaczej - czyściej czy krócej.

Trudny przypadek to idealne parsowanie adresu email:

http://www.regular-expressions.info/email.html

Nawet nie idealne ale zwykłe [a-z0-9]@[a-z0-9].[a-z] już jest trudno zastąpić czym innym pod względem czytelności. A czym bardziej skomplikowany regex na to tym bardziej skomplikowany będzie kod. W końcu zrobi się odzielna klasa - odzielna biblioteka i w końcu cały bundle (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #10066





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Podany przez Ciebie wzorzec zaakceptuje nawet np. 7@7@x, więc chyba nie za bardzo. Ja lubię czasem krok po kroku analizować string, nie upychać tego na siłę do jednej instrukcji. Chociaż przyznam się, że zbyt często kończę tworząc jeden wielki wzorzec, no ale czytelne to to potem nie jest.
Go to the top of the page
+Quote Post
solificati
post
Post #10067





Grupa: Zarejestrowani
Postów: 26
Pomógł: 10
Dołączył: 17.03.2012

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


Cytat(SmokAnalog @ 2.03.2015, 16:29:19 ) *
Tylko że tak jak napisałem wcześniej, z wyrażeniami regularnymi na ten moment zwykle nie ma lepszej alternatywy.

Operatory parserów (parser combinators) albo translatory z gramatyk bezkontekstowych. To dobre rozwiązania do większych problemów.

Co do kodu pocztowego, kiedyś słyszałem taki rule of thumb, że jeśli wywołanie wyrażenia regularnego idzie zamknąć w funkcji to jest ok. Jeśli napotkam wywołanie is-zip-code, to nie muszę się przejmować wyrażeniem w środku, tylko wywołać funkcję. Jak chcę refaktoryzować, zmieniać, debugować to i tak muszę pobrudzić ręcę. Ważne jest też ten fakt o wywołaniu - chodzi o to, żeby nie wyciekały instancje matchera i nie było korzystania z grup poza funkcją. Grupy nazwane częściowo rozwiązują ten problem, ale najlepiej żeby zwrócić stosowną strukturę, bo dociekanie co oznacza null albo false w różnych polach gdy wyrażenie się nie dopasowało jest straszne.
Go to the top of the page
+Quote Post
!*!
post
Post #10068





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


@SmokAnalog - właśnie czekałem na ten moment w którym będziesz pisał mi, albo Fortiemu w jakich to nieprofesjonalnych grupach pracujemy lub pracowaliśmy. Pytanie było proste, nie odpowiedziałeś, bo argument "kod jest mało czytelny" nie jest argumentem, rzecz względna, tak samo jak pisanie czystego SQL na 50 linijek... Można to ładnie formatować, tylko po co, są proste reguły które się nie zmieniają, już nie mówiąc o kolorowaniu całości przez IDE które pomaga jakby ktoś się gubił w nawiasach... język jak każdy inny.

Zapytać na forum php dlaczego należy czegoś unikać... odpowiedź, bo się gubimy w krzaczkach... boskie...A liczyłem na coś choćby... wyciek pamięci w preg_replace_callback... ale nie, krzaczki i nawiasy dziwnie stoją i nie ma czasu ich ogarniać. (IMG:style_emoticons/default/facepalmxd.gif)
Go to the top of the page
+Quote Post
tzm
post
Post #10069





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


troche nie ogarniam dyskusji i cisniecia SmokAnalog na te regexy... to powinno byc prosze niz czytanie bajki na dobranoc bo podstawa wyrazen jest logika. jesli komus sprawiaja trudnosc to odnosze wrazenie ze z mysleniem tez moze miec taki problem. to nie jest jakis tam wzorzec projektowy tylko proste wyrazenie opierajace sie o podstawy matematyki wiec wtf? ale to oczywiscie moje osobiste upodobania regexa nad inne funkcje do mielenia stringow. kto co lubi.

@!*! to juz chyba druga dyskusja w ciagu kilku ostatnich dni gdzie Smoku nie potrafi odpowiedziec na proste pytanie. olej bo szkoda nerwow.

@Pyton_000, poniedzialek super. 8 godzin ciecia jakis templatow zeby leciec do klienta na 18:30... takze na poczatek tygodnia po l4 14 godzin pracy lacznie z dojazdami (IMG:style_emoticons/default/biggrin.gif)


nie ma lekko
Go to the top of the page
+Quote Post
Posio
post
Post #10070





Grupa: Zarejestrowani
Postów: 417
Pomógł: 44
Dołączył: 23.06.2011

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


Ja zauważyłem że Smok zwyczajnie próbuje każdemu wmówić że to On ma racje...
Go to the top of the page
+Quote Post
solificati
post
Post #10071





Grupa: Zarejestrowani
Postów: 26
Pomógł: 10
Dołączył: 17.03.2012

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


Cytat(!*! @ 2.03.2015, 17:19:02 ) *
tak samo jak pisanie czystego SQL na 50 linijek...

Zdajesz się sugerować, że w pliku .php masz stringa z zapytaniem sql.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #10072





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Nie macie przyjemniejszych tematów na Poniedziałek zamiast rzucać się do gardeł? Takie rzeczy to w piątek, bo przynajmniej można się uchlać (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #10073





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Bo wasze argumenty pokazują jasno, że nie mieliście do czynienia z poważnymi problemami programistycznymi. To jest niestety jeden z większych paradoksów na tym świecie, że świeżakowi coś się wydaje trudne, średnio ogarniętemu proste, a ogarniętemu znowu trudne. Wy jesteście w środku tej skali i po prostu nie natrafiliście jeszcze na problemy, gdzie regex nie jest idealnym rozwiązaniem. Wydaje Wam się, że to ja czegoś nie rozumiem, że Wy mnie czegoś uczycie. Ja nic do tego nie mam, kiedyś też mi się wydawało, że umiem więcej niż umiem. Możemy porozmawiać o projektach nad którymi pracowaliśmy i ile czasu programujemy.

tzm, na jakie pytanie nie odpowiedziałem?
Go to the top of the page
+Quote Post
usb2.0
post
Post #10074





Grupa: Zarejestrowani
Postów: 341
Pomógł: 25
Dołączył: 28.09.2008
Skąd: Lublin

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


(IMG:http://dreamatico.com/data_images/popcorn/popcorn-1.jpg)

Ten post edytował usb2.0 2.03.2015, 17:58:10
Go to the top of the page
+Quote Post
tzm
post
Post #10075





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


a Ty do ktorej grupy ogarnietych sie zaliczasz?

1. pytali chlopaki dlaczego regex jest gorszy od Twoich rozwiazan. !*! juz wyraznie podsumowal ta dyskusje.

2. postep technologiczny komputerow. 3 osoby, przez 10 postow o cos Cie pytaly, a Ty zamiast odpowiedzi wciskales swoje prawdy. tutaj jest to samo jak z kolei zauwazyl Posio.

x: ktora godzina?
Y: zobacz jaki mam fajny zegarek
x: ale ja chce wiedziec ktora jest godzina
Y: ale to elektroniczny zegarek

i tak do porzygu.

spadam, czesc
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #10076





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


No jakbyście czytali ze zrozumieniem to byście może jednak znaleźli odpowiedzi. Napisałem wyraźnie, że REGEX JEST NIECZYTELNY I TRUDNY DO SZYBKIEJ I BEZBŁĘDNEJ ANALIZY. Teraz widać?

EDIT Do której ja się grupy zaliczam? Do ogarniętej, bo po prostu od wielu lat pracuję jako programista. Chcąc nie chcąc mam styczność z tym na co dzień.

Ten post edytował SmokAnalog 2.03.2015, 18:08:40
Go to the top of the page
+Quote Post
sazian
post
Post #10077





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

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


równie dobrze mogę napisać:
REGEX JEST CZYTELNY I ŁATWY DO SZYBKIEJ I BEZBŁĘDNEJ ANALIZY. Teraz widać?
nie ? nie widać ?
Przykład Panie, bo tak to można całą wieczność dyskutować
Go to the top of the page
+Quote Post
Turson
post
Post #10078





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Ostatnio miałem do czynienia z pluginem, który parsował stringa strpos-em. String wyglądał mniej więcej tak: {PLUGIN}kategoria/13,jakisParametr=1,jakisParametr=0,jakisParametr=1,jakisParametr=0{/PLUGIN}
Tutaj regex pasuje jak ulał. Podstawiamy wyrażenie i pobieramy dane do ładnych zmiennych za pomocą list(). Proste i eleganckie. Ale nie, ktoś wziął się za to strposem...
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #10079





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Turson, no pewnie - to jest piękny i prościutki przykład do używania regexa. Ja bardzo lubię funkcję preg_replace_callback do parsowania wszelkich shortcode'ów i innych kontekstowo analizowanych tekstów.

Ale antyprzykładem jest przede wszystkim HTML, XML oraz praktycznie każdy tekst pisany przez człowieka w formie zdań, bo wtedy musimy zakładać bardzo wiele możliwości - mnogość białych znaków, nowych linii itd. Taki wzorzec jest potem po prostu brzydki, długi i łatwo w nim o pomyłki. Poza tym, co zresztą zrobił jeden z kolegów wyżej, bardzo często spotykanym i trudnym do wyłapania błędem jest podawanie wymogu znaku kropki jako ".", co potem kończy się dość tragicznie.

Nie wiem jakie wrażenie odnieśliście po moich wcześniejszych wypowiedziach, ale prawda jest taka, że ja regexy bardzo lubię, ale nie lubię, gdy są nadużywane lub pisane niechlujnie - gdy np. są zbyt tolerancyjne (jak wzorzec e-maila kolegi) lub za mało (np. odrzucające dwie spacje obok siebie w tekście pisanym).

Swoją drogą, metoda na strpos jest jeszcze mniej czytelna niż regex, jeśli się używa tego do czegoś więcej niż sprawdzanie czy ciąg znaków jest obecny czy nie. Do bardziej skomplikowanych operacji na tekście lubię robić to krok po kroku, formatując najpierw tekst do późniejszego przetestowania lub wyłapania czegoś.

Ten post edytował SmokAnalog 2.03.2015, 21:50:22
Go to the top of the page
+Quote Post
mike
post
Post #10080





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Wasza akademicka dyskusja o wyrażeniach regularnych powinna skończyć się dawno temu. Przecież dobre praktyki programowania mówią jasno, że taki nieczytelny dla wszystkich kawałek kodu należy zamienić czytelnym (IMG:style_emoticons/default/smile.gif) czyli na przykład stałą lub zmienną (zależy od kontekstu) o nazwie, która sama się dokumentuje:
  1. $postCodePattern = '^([0-9]{2})-([0-9]{3})$';
  2. $blaBlaCośTuSięDzieje = preg_match($postCodePattern, $input);


Ten post edytował mike 3.03.2015, 10:27:56
Go to the top of the page
+Quote Post

586 Stron V  « < 502 503 504 505 506 > » 
Reply to this topicStart new topic
3 Użytkowników czyta ten temat (3 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.06.2026 - 12:48