[Javalist] 'Pattern'
Gábor Lipták
gabor.liptak at gmail.com
2012. Jan. 4., Sze, 08:53:03 CET
Esetenként ékezethiba. Azért ez vicces kicsit J
From: javalist-bounces at lists.javaforum.hu [mailto:javalist-bounces at lists.javaforum.hu] On Behalf Of Gábor Garami
Sent: Wednesday, January 04, 2012 8:47 AM
To: Java lista
Subject: Re: [Javalist] 'Pattern'
Maga a megoldas is lehetne jobb. Ruby on Rails kornyezetben pl az ActiveRecord a leszolt kerdojeles megoldas mellett alternativakent query buildert csinal. Javanal ez vmi ilyes lenne:
Statement stmt = conn.createStatement().select("*").from("users").where("id = ?", id).and("active = 1").limit(10);
stmt.execute();
Ez ugye builder pattern, nincs benne tul sok tokenizacio, es egy elheto megoldas. Implementalni se nagy feladat.
Ezt a levelet telefonról adták fel ezért esetenként ékezethibákat tartalmazhat.
Garami Gábor
E-mail: gabor.garami at hron.me
Web: http://hron.me
Skype: hron84
MSN: hrgy at vipmail.hu
2012.01.04. 8:19, <istvan.ketler at lhsystems.com> ezt írta:
Hadd fűzzem hozzá: keep it simple, stupid. Hidd el, megtérül. Egy tipikus ipari alkalmazás kifejlesztése x emberidő, utána az üzemeltetése, karbantartása y emberidő. Általában y >> x (ipszilon sokkal nagyobb mint x). Szóval ha p időt megtakarítasz a fejlesztés során, de emiatt alkalmandént q idővel tovább tart a karbantartás, akkor összességében mégiscsak veszteséget gyártasz (n*q >> p) – persze az nem jelenik meg a szoftver kezdeti költségében, meg nekem ugye jól (többlet bevételként) jöhet később, de mérnökként emlékszem valami fogadalomra hogy a usert nem baltázom át (kicsit talán másképp volt megfogalmazva). De nem is biztos, hogy később tudatában leszel annak, hogy ilyen gondok vannak a kódban, ezért a becsléseid rendre alulbecsültek lesznek, ami pedig abban a fázisban is nettó veszteség neked (és nem az ügyfélnek).
Ha meg még ez sincs, hanem egy álprobléma miatt a fejlesztés során többletidő befektetése árán gyártasz extra karbantartási időt igénylő megoldásokat, akkor pedig már minden szinten veszítesz. Mint ahogy jelenleg pont ezt érzem fennforogni.
István Ketler
Team Leader
Lufthansa Systems Hungaria Kft.
Development Center Pest
- Team "Schedule & Revenue Management"
- Team "Business Intelligence & Database Solutions"
Neumann János u. 1/e
1117 Budapest
Hungary
Tel: +36 1 887-2815 <tel:%2B36%201%20887-2815>
Fax: +36 1 887-2977 <tel:%2B36%201%20887-2977>
Mobile: +36 30 600-4936 <tel:%2B36%2030%20600-4936>
Room: Infopark E, Room LH1-31
e-mail: istvan.ketler at lhsystems.com
Internet: www.LHsystems.hu <http://www.lhsystems.hu/>
Sitz der Gesellschaft / Corporate Headquarters: Lufthansa Systems Hungaria Kft, Budapest, Fövarosi Birosag 01-09-463417
Geschaeftsfuehrung / Management Board: Monika Houck
From: javalist-bounces at lists.javaforum.hu [mailto:javalist-bounces at lists.javaforum.hu] On Behalf Of istvan.ketler at lhsystems.com
Sent: Wednesday, January 04, 2012 8:08 AM
To: javalist at lists.javaforum.hu
Subject: Re: [Javalist] 'Pattern'
Továbbra is tartom, hogy értelmetlen és felesleges egy ilyen query preprocessor (többet ér a szigorúan betartott formázási policy), de ha már így akarod és attól félsz hogy string belsejében lehet változó-szerű pattern, akkor miért nem a patternt cseréled mondjuk :-:név formára? Ilyen aztán végképp nincs a string belsejében ugye... De az egésznek akkor van értelme, ha a „:név = érték” is szerepel valahol, szóval lesz elöl egy mintád, utána meg a név-érték párok listája (gondolom) – szóval sima mintaillesztésnél itt azért több munkát érzek a háttérben; végig kell menni a query-n, és szigorú sorrendben megkeresni a helyettesítendő változókat, majd megkeresni a név-érték listában a vonatkozó változót, és valahogy odaálmodni a megfelelő értéket. Ugye ezek típusosak, szóval ha tényleg ezt csinálod, akkor azért van itt háttérmunka. Mindez azért, mert egyszer valamikor valaki majd beszúrhat egy kérdőjelet úgy, hogy felborul miatta a paraméterezés (gondolom az sql utasításodat mindenféle helyekről szeded össze, ami véleményem szerint hibás programozási gyakorlat). Ennél szebb lenne, ha nem mindenféle kilencedik mélységű metódusból kapnál sql darabokat, amiket valahol egyszer csak összefűzöl (rossz esetben akár több helyen is összefűzögetve ezeket), hanem lennének olyan (akár static) metódusaid, amelyek megfelelően felparaméterezve maguk állítják elő a query-t ott helyben.
Mindenesetre nem nagyon szeretném azt a kódot később karbantartani, amit ilyen preprocessorokon zargatnak végig. Szerintem csináltál magadnak egy nem létező problémát – a query-k későbbi módosítása szerintem annyira azért nem gyakori, hiszen sokszor inkább a séma módosítása vonzza maga után, mintsem egy hirtelen új igény vagy restriction bevezetése.
Persze Te jobban ismered a feladatot, és simán lehet hogy igazad van, csak ennyi infóból jelenleg nekem kételyeim vannak ezzel kapcsolatban.
Üdv,
Iván
István Ketler
Team Leader
Lufthansa Systems Hungaria Kft.
Development Center Pest
- Team "Schedule & Revenue Management"
- Team "Business Intelligence & Database Solutions"
Neumann János u. 1/e
1117 Budapest
Hungary
Tel: +36 1 887-2815 <tel:%2B36%201%20887-2815>
Fax: +36 1 887-2977 <tel:%2B36%201%20887-2977>
Mobile: +36 30 600-4936 <tel:%2B36%2030%20600-4936>
Room: Infopark E, Room LH1-31
e-mail: istvan.ketler at lhsystems.com
Internet: www.LHsystems.hu <http://www.lhsystems.hu/>
Sitz der Gesellschaft / Corporate Headquarters: Lufthansa Systems Hungaria Kft, Budapest, Fövarosi Birosag 01-09-463417
Geschaeftsfuehrung / Management Board: Monika Houck
From: javalist-bounces at lists.javaforum.hu [mailto:javalist-bounces at lists.javaforum.hu] On Behalf Of Gábor Garami
Sent: Tuesday, January 03, 2012 7:28 PM
To: Java lista
Subject: Re: [Javalist] 'Pattern'
Bocs, hogy belepof, de a feladatra teljesen jo a regex, csak a feladatfelvetes bena volt.
A kigyujtesre a regex: (:[a-z0-9])
Az idezojelek kozti reszeket meg siman uritheted.
Bar megmondom oszinten, ilyen string ertelmes sql queryben nem fordul elo, idezojelek kozott sem. Mivel preprocessben hasznalod fel a regexet, igy ilyenkor meg nincs untrusted user input, utana meg mar mindegy. Csak magadat kell korlatoznod, hogy ne akarj olyat irni, hogy SELECT * FROM valami WHERE ':bla' = :bla. IMHO ez igy kb. sosem fordul elo.
A tokenizalas jo otlet, a regexszel kigyujtott talalatokat vegig lehet keresgelni.
Ezt a levelet telefonr󬠡dtfel ez鲴 esetenk鮴 髥zethibt tartalmazhat.
Garami Gr
E-mail: gabor.garami at hron.me
Web: http://hron.me
Skype: hron84
MSN: hrgy at vipmail.hu
2012.01.03. 18 <tel:2012.01.03.%2018> :11, "Tam᳠Magyar" <magyusz at gmail.com> ezt ?a:
Nem tudom, hogy erre ez a legjobb megoldᳬ de StreamTokenizer helyett
ajᮬom ezt:
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html
ɮ mᲠsikerrel haszn᬴am.
Magyusz
2012/1/3 Suller Andras <suller.andras at gmail.com>:
> 2012/1/3 Keresztes Jozsef <jkeresztes at vati.hu>:
>> Sziasztok !
>>
>> Egy sql stringen bell keresek egy mᳩk stringet, a Matcher 鳠Pattern osztᬹok seg?駩vel,
>> egyszers?k a dolgot, csak a ":" karaktert keressk:
>>
>> Matcher matcher = Pattern.compile(":").matcher(sqlString);
>>
>> A probl魡 azzal van hogy csak azokat a ":" karaktereket szeretn魠megkeresni az sql stringben ami nem aposztr󦯫 k??t van p鬤ᵬ:
>>
>> SELECT 'ez nem'':kell' FROM valami WHERE id = :id and ':' = 'x'
>>
>> Vagyis itt a 2. kett??nt lenne csak talᬡt a t?? nem.
>> Valaki foglalkozott mᲠilyen keres鳩 minta meg?sᶡl ?
>> ɮ egyel??nem tudom elk鰺elni...
>
> Regen hasznaltam mar, de azt hiszem a StreamTokenizer az, ami kezeli
> ezt a problemat. Marmint hogy az '...' szovegreszt egy tokenkent adja
> vissza, igy meguszod a regularis kifejezest.
>
> Andras
> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu
> http://lists.javaforum.hu/mailman/listinfo/javalist
_______________________________________________
Javalist mailing list
Javalist at lists.javaforum.hu
http://lists.javaforum.hu/mailman/listinfo/javalist
_______________________________________________
Javalist mailing list
Javalist at lists.javaforum.hu
http://lists.javaforum.hu/mailman/listinfo/javalist
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20120104/e9f53037/attachment.html>
További információk a(z) Javalist levelezőlistáról