saxus (statz) | #9, Agyfasz (419) |
3111 | #1c30 | ^ | Idézet | Sat, 28 Apr 2012 03:09:14 +02 |
84.3.*.* | *.catv.pool.telekom.hu |
Na a kedvedért készítettem egy kis PoC példát. Illetve többet is: http://shared.muportal.hu/kepek/gc/gc.png Első példa: Szimplán nyitunk egy háttérszálat, kicsit matekolunk 4 megányi inten, majd billentyű lenyomásra kilépünk. GC-t én hívom meg kézzel. Meg is várhatnám, hogy valamilyen eseményre lefusson (pl. ami lehet másik thread memóriaigényétől kezdve akár az is, hogy a a Windows szól a .NET-nek, hogy figyumá, nincs-e fölös ramod, mert esetleg tudnék kezdeni valamit), de nem volt kedvem ennyit várni, így inkább meghívtam én a GC-t. Egyből vissza is esik 40 megára. (Hogy miért nem az induláskori 20-ra, arról majd később.) http://shared.muportal.hu/kepek/gc/gc2.png Következő példa már picit rázósabb, enyhén forkbomb kezdetű: háttérthreadból nyitok további threadeket, igaz azokat be is fejeztetem. Jól látszik, hogy itt azért már jobban ingadozik a memóriahasználat attól függően, hogy mennyi thread kap CPU időt a többi processtől. Befejezéskor nem változik semmi. http://shared.muportal.hu/kepek/gc/gc3.png Gondoltam nézzük meg, hogy mi a helyzet, hogyha a Visual Studio nem birizgálja a processt a háttérből. (Ha megnézed a process tree-t a process explorerben, akkor láthatod, hogy nem a VS host processe, hanem a cmd a parent process) Egyrészt ami egyből szembetűnő, hogy az induláskori memóriahasználat 7,6-ra esett le a kezdeti 20,6-ról és a végállapot 40 mega helyett 10,7 lett, valamint konstans 20,1 mega volt üzem közben mindenféle ingadozás nélkül. Kódon annyit változtattam, hogy ne legyen olyan forkbomb jellegű és várja meg a háttérthread a matekoló thread végét. Próbáltam release és debug módot is, nincs igazán sok különbség. A memóriahasználat különbsége szerintem két dolog számára írható: debugger/intellitrace valamint a HostProcess-nek, ami segít a VS-nek a debuggolásban. Na de ugye még így is megugrik a memóriahasználata a cuccnak. Mondhatnád, hogy leakel, de nem, az igazság ennél prózaibb. :) Ha megnézed a process IO-t, láthatsz egy kis tüskét pont akkor, amikor elindul a háttérthread. Ez akkor hajtódik végre egyszer, amikor a Thread elindul. Gyanítom, ilyeknor tölt be egy rakás Win32 kódot a .NET FW a háttérben és/vagy további szükséges assemblyket és a hozzá tartozó kódokat, amelyek - breaking news - ismét memóriát igényelnek. Ezért készítettem egy olyat, amely matekol 10 másodpercet, vár 10-et, majd újra futtatja. Az eredmény ugyanaz: a GC meghívásakor letakarít midnen letakaríthatót, amit az én kódom hozott létre. http://shared.muportal.hu/kepek/gc/gc4.png Egyébként kísérleteztem még pár dologgal. Pl. próbáltam olyat, hogy a Thread.Start() után még 10 mp-t várni. Olyankor 10-ről. 12,6-ra ugrott fel, amely valószínűleg a két thread stackjának lefoglalt terület meg még egy minimális, amit a .NET a thread kezeléséhez rendelt (pl. managed threadid, security dolgok, cultireinfo meg ilyenek (utóbbit pl. .NET-ben thread szinten tudod állítani). Próbáltam még olyat is, hogy a Thread Exceptionnal áll le. Nos, akkor hótzicher, hogy felszabadul a memória, ugyanis az OS fogja eltakaríani (a teljes programmal együtt.) Ennyit a leakelő .NET-ről. |
TCH (statz) | #1, Főfasz (10443) |
4941 | #1c31 | ^ | Idézet | Sat, 28 Apr 2012 04:02:07 +02 |
46.107.*.* | *.catv.pool.telekom.hu |
Lófaszt. Semmivel sem lassabb megírni ojjektumok nélkül, csak úgy kell megtervezni, meg megírni az eljárásokat, hogy fasza legyen. És átláthatóbb is a sok szar objektum nélkül. Olvassad. Én bottal sem piszkálok semmit, aminek köze van a mikrofoshoz. Bullshit. Én sose használok objektumokat és mégsem lesz katyvasz belőle. Rugalmasabb? Azért mert egy osztályba rakod be a függvényeket? Egyszerűen nem fogom fel, hogy mi a rákért hivatkoznak erre emberek, hogy az osztályt könnyű bővíteni új metódusokkal, amikor ez semmi egyebet nem jelent, minthogy bekúrnak egy új függvényt oda. Ugyanazt a függvényhalmot lehetne ojjektum nélkül is. Ad 1. Trollbait volt. Kiváncsi voltam, hogy megint fölényeskedni kezdesz-e, vagyis flamelni akarsz. Ad 2. A tököm ki van az elnevezésekkel, nagyon jól tudod, hogy mit akartam mondani. Ad 3. Arra szólok be amire akarok. Két és félszer volt gyorsabb a require, mint az MC. Köszi az infót, akkor a memcache-be nem dobálom be a konfigokat. Mégis hogyan, ha egyszer elveszett az amire mutatott? Végignyal mindent? Jó gyors lehet. Ez mind szép és jó, de ez max standard esetben van így. Semmi nem biztosít arról, hogy a GC-ben nincsenek bugok, főleg mivel mind a dzsuva, mind a ciszta hemzseg tőlük. Meg se merem kérdezni, hogy miért teszi ezt lehetővé a nyelv. Meg se merem kérdezni, hogy akkor minek van.
4 megányi int az hogy lesz 20 mega? Komolyan irigyellek, hogy ennyi szabadidőd van. Tehát, ha neked nem sikerült elérni, hogy leakeljen, akkor egyáltalán nem leakel. Király. Jó tudni. (Merek egy vödör vizet a tengerből, nincs benne cápa, vagyis a tengerben nincsenek cápák, mehetünk úszni.) Egyébként nem unod még? Úgysem tudsz meggyőzni. (Meg én se téged.) BTW, ma a hupon olvastam egy érdekes beszólást egy oopszentgrállovagjától, miszerint azok akik utálják az oop-t, azért utálják, mert nem értik. Ez az év bullshitje. Én nem értem az aerodinamikát, se a kvantumfizikát, mégsem utálom ezeket. Nem értem Kant vagy Machiavelli műveit, mégsem szidom őket. Nem értem a mormonokat vagy a krisnásokat, mégsem ágálok ellenük. So, WTF? Talán azért nem, mert sem az aerodinamika, sem a kvantumfizika professzorai nem akarnak meggyőzni, hogy nekem ezzel foglalkoznom kéne? Talán azért nem, mert Kant és Machiavelli rajongói nem akarják rámtukmálni a könyveiket? Talán azért nem, mert a mormonok vagy a krisnások nem akarnak megtéríteni? Talán azért rühellem a winfost, az oop-t, vagy - hogy egy nem infós cuccot is említsek - a jogot/jogászokat, mert ezek rámerőltetik a fasságaikat? De mind1, mer ebből is flame lesz bazmeg. Inkább arról meséllyél már - ha már fennt rohadunk hajnalok hajnalán - hogy hol állsz a slozipaprioddal diplomáddal, vettél-e már lakást, becsajoztál-e már, végleg áttértél-e OSX-re (és kukásítottad a winfost), mert egyfelől, már évek óta nem dumáltunk érdemben, másfelől ezeknek legalább van értelme, ellentétben az OOP-val, de főleg a dzsuvával és a cisztával. |
saxus (statz) | #9, Agyfasz (419) |
3964 | #1c32 | ^ | Idézet | Sat, 28 Apr 2012 17:50:27 +02 |
84.3.*.* | *.catv.pool.telekom.hu |
MS research egy kb. önálló kutatási intézet. Független minden termékfejlesztéstől, ők csak kutatnak. És akkor és azt publikálnak, amit akarnak. (Megjegyzem, más cégek R&D-jéhez képest szokatlanul nyíltan). De semmi gond, dugd homokba a fejed.
Nem, azért, mert az összetartozó dolgokat rakod egy osztályba. Pont hoztam példát: a függvény további paramétereket vár, amelyet az objektum példányosításakor adok meg. De semmi gond, nem te vagy az első, aki úgy fikázza az OOP-t, hogy igazából sosem értette meg azt.
Akkor hülyeséget akartál mondani. A cikk pont arról szól, hogy az imperatív (mint a C, pascal...) modell helyett a C++-ban is lehetőség van (valamilyen szintű) funkcionális megközelítésre (mint a lisp, haskell, scheme...).
Ne legyél már write only. Attól, hogy a te kódodban elveszett a referencia, attól még a nyelv fenntart egy "letakarítandó objektumok" listát. De írtam is.
Mert nem a nyelv teszi lehetővé, hanem a GC mögötti osztálykönyvtár, mivel hagytak lehetőséget, hogy többé-kevésbé felülbíráld a GC-t, ha nagyon muszáj. Esetek 99,9999%-ában nem muszáj.
Mert vannak olyan esetek, amikor kell. Tudod nem igazán != nem kellhet soha.
Mivel nem azonnal fut a GC, csak periodikusan. Ne legyél már ennyire értetlen fasz.
Te mondtál egy esetet, bebizonyítottam, hogy fasság.
De basszus, látom, hogy kiragadott példákkal dobálózol, anélkül, hogy egyáltalán értenéd, hogy mi mire van. És nem lenne bajom, ha időnként nem hülyeségekkel példálóznál (pl. honnan tudna az elveszett referenciáról...) Én is kb. 2-3 évente rájövök, hogy mennyire keveset tudok az OOP-ről ahhoz képest, amit eddig tudtam (szintek: egyetem előtt: tudom, hogy vannak; első 1,5 év után: tudom, hogyan nézne ki normálisan; rá 1-2 évre: utánaolvasgattam a tervezési mintákról és hogy hogyan is csináljunk velük úgy alkalmazást, hogy az valóban jól strukturált, rugalmas legyen; most meg ott tartok, hogy ezen a téren kellene még fejlődni picit valamint kellene nézni valami 1-2 prognyelvet is, ami más szemszögből közelíti meg az OOP-t, mint a C++/Java/C#/PHP vonal és esetleg nem is kifejezetten imperatív). Mindig van mit tanulni.
Valóban. Diplomamunkával haladgatok, elvileg most le is fogom adni a szakdogámat (annak ellenére, h passzívon vagyok, köcsög elektro irány), de diploma az még nem ma lesz. PH-t otthagytam, most az Empo-nál vagyok, OSX meg köszöni jól megvan a Windows mellett. (Annyi a változás, hogy a Mini-t eladtam, a notimat meg anyámnak adtam és kiváltottam a kettőt egy MBP-vel. 7-8 óra üzemidő, kis méret, korrekt teljesítmény, jól összerakott gép. Most már lehet elgondolkoznék valami ultrabookon, bár azok se olcsóbbak, mint az Apple, másfél éve meg kb. kategóriában tényleg csak az MBP volt értékhelhető. Többiről meg majd ja, valamikor lehetne dumálni. |
TCH (statz) | #1, Főfasz (10443) |
3916 | #1c33 | ^ | Idézet | Sat, 28 Apr 2012 19:11:39 +02 |
46.107.*.* | *.catv.pool.telekom.hu |
Ez nem hangzik rosszul, legalább addig sem hallok ilyeneket, hogy debezzegazemes. :P Unit, module? Az nem jó? Must be ojjektum? További paramétereket? Mint Delphiben az overload? Lehet egy függvénynek N féle paraméterlistája ojjektum nélkül is. Az lehet, hogy nem értem, hogy mi az OOP létjogosultsága (mint, ahogy a pírszingek kapcsán sem értem, hogy minek tömi magát valaki felesleges hulladékkal), de nem fikáznám, ha nem erőltetnék. Tudod a "lehet" és a "muszáj" közti különbség. Egy dolog, hogy egy adott feladatra van ojjektumos, meg ojjektumnélküli megoldás; az előbbit nem értem, mert szerintem felesleges köröket futnak vele, de ha valaki így akarja, hát tessék. Viszont ha valaki rám akarja erőltetni, az már nagyon nem kóser. A "lehet"-re "felőlem" a válasz, a "muszáj"-ra, viszont egy láncfűrész. Egyébként én is mondhatnám, hogy nem az első ember vagy, aki bedől a hype-olt cuccoknak. Csak ragozod bazdmeg. Nem érdekel, minek hívod, hívhatod felőlem kecskének is, egy a lényege: ojjektummentes kód. Értem, tehát ez a fos úgy működik, hogy egy 4 megás tömbre öt, meg tízszer akkora helyet befoglal, ami nem szemetelés, de azért a GC eltakarítja. Most akkor szemetel ez a fos vagy sem? Ha nem szemetel, minek van benne szemételtakarító? Ragozzam én is? Vagy te is felcsapsz értetlen fasznak? Pontosítsunk. Én idéztem egy esetet, nem az ujjamból szoptam, ez egy; kettő én egy dzsuvás példát citáltam ide, erre te nekiálltál fosnetben hekkerkedni, úgyhogy nem tudom mit bizonyítottál be; és három, te foglaltad össze sommásan azt, hogy ennyit a fosnet lékeléséről, azaz usque azt mondtad, hogy QED, a fosnet nem lékel. Dehát te kértél példákat. Azt meg, hogy mire való ez az egész, még senki sem volt képes elmagyarázni, mert jobb esetben is csak odabasznak egy adag OOP kódot, hogy ugye milyen fasza, én meg csak azt látom, hogy ugyanezt meg lehetett volna oldani közönséges függvényekkel is. (És nem, nem lenne katyvasz, meg átláthatatlan, meg ötször annyi idő.) Csak időnként? Én már kezdtem azt hinni, hogy állandóan fasságokat beszélek. Most akkor az OOP időnként bullshit, időnként meg musthave? És mi lesz az? Te is NIK-es vagy, mint kemi, igaz? Akkor neked is valami kinektes cumót kell csinálni? Ezt mesélted, hogy a PH-tól mindenki lelépett. Kár érte, bírtam Szatiékat. Minek neked winfos az OSX mellé? Linux mellé még megérteném, ha az ember jusztis játszani, vagy fotosoppolni akar, de OSX mellé minek? Mit tud a winfos, amit az OSX nem? |
saxus (statz) | #9, Agyfasz (419) |
3163 | #1c34 | ^ | Idézet | Sat, 28 Apr 2012 23:13:45 +02 |
84.3.*.* | *.catv.pool.telekom.hu |
Másra való.
Látom, nem értetted meg a példát: adott egy funkció, amely kliens oldalon így, szerver oldalon úgy működik. Kliens oldalon ugye a hálózati réteghez kell hozzáférnie, szerver oldalon meg az adatbázishoz. Mindezt úgy,h ogy ez a funkció egy nagyobb másikba épül bele, és nem, nem opcio az if (kornyezet == szerver) módszer. Itt ha egy függvénypointert adnál át, nem tudnál adatbázist vagy hálózati réteget átadni csak mondjuk globális változón, ami meg megint egyéb okok miatt nem nyerő megoldás.
Sok feladatot absztraktabbul, rugalmasan, újrafelhasználhatóan, tesztelhetőbben tudod megoldani vele. Ez a létjogosultsága.
Miután 12 mega volt a memóriafelhasználás, mikor elindult a Thread és 20 mega a maximális felhasználás, így 8 megát használt a matekolás során. Gondolom, míg az egyik thread tette a dolgát, addig a másik takarított, amit az előző futásból ott maradt. Persze, ha akarod, nevezd szemétnek, csak azon is fuss egy kört, hogy a takarítást helyből párhuzamosan csinálta a GC anélkül, hogy nekem ezzel bármi dolgom lett volna.
Á. A java picit lustább GC-t használ alapból, ráadásul az szereti teljesen magának menedzselni a ramot többé-kevésbé az OS-től függetlenül. Van ennek a megoldásnak is előnye meg hátránya. Ettől még az sem fog a memóriában hagyni hosszú távon olyat, ami nem kell.
Nincs olyan, hogy kell, azt választasz témának, amit akarsz. Persze, legyen értelmes.
Photoshop pl. pont lenne OSX-re, bár azzal én nem élek. (Apple mindig is erős volt az audiovizuális sw-k fejlesztői között kezdve a kiadványszerkesztéstől a pixelgrafikán át a videóvágásig és a zeneszerkesztésig) Amivel időnként játszok (SC2, Minecraft) az is van. Viszont munkához kell Visual Studio, ami meg nemigazán van OSX-re.
Szatiéknak egyedül csak a fizetőképességével és az üzleti érzékével volt gond :) |
TCH (statz) | #1, Főfasz (10443) |
2495 | #1c35 | ^ | Idézet | Sun, 29 Apr 2012 11:19:48 +02 |
46.107.*.* | *.catv.pool.telekom.hu |
A példát értettem, a megoldásod miértjét nem értem. Miért akarnék átadni fptr-t? Miért raknék bele elágazást? Van két db függvény, ugyanazzal a névvel overloadolva, egyik helyen ezekkel a paramokkal hívom meg, másikon a másikokkal. Mi ezzel a baj? Dehát ha egyszer az. Várj... Na futottam egy kört (ill. háromszöget, lusta voltam további szögeket számolni egy kört megközelítő alakzathoz). Alatta azon agyaltam, hogy tök jó, hogy a GC megcsinálja helyetted azt amit neked kéne és ráadásul kérdés nélkül és láthatatlanul. Annyira ismerős valahonnan. Jaigen, tudom, a túlokos programok csinálnak ilyet, amik helyettem akarnak gondolkozni és dönteni. És az ilyet rühellem, mert egyfelől idegesítő, másfelől én a nem létező kutyámat nem bíznám rá egy ilyen túlokos program döntéseire, nem hogy a memóriakezelést. Természetesen. A gép GC-je, a reset majd elbánik vele. :))) Erről beszéltem. :P Hogy Linuxon nincs fotosopp, tehát ott még értem, ha van mellette winfos, de OSX-en van fotosopp, tehát nem kell külön arra egy winfos. Nincs az OSX-nek valami überfasza emulátora? Parallel, vagy mi az isten? Nem megy benne? Azzal sem lett volna, ha nem B. "Mr. P0rnwatcher Mikulásosszkenárió" Gáborra bízták volna a BC-t. :P http://www.r-sy.com/hotmail/ Így lehet feltörni a hotmail akkantokat. Mikrofos szekuricsi. XD |
saxus (statz) | #9, Agyfasz (419) |
3420 | #1c36 | ^ | Idézet | Sun, 29 Apr 2012 18:28:24 +02 |
84.3.*.* | *.catv.pool.telekom.hu |
Akkor nem ertetted meg a peldat: nincs ket db. fuggvenyed. Egy darabod van, attol fuggoen, hogy kliens vagy szerver oldal. Raadasul azt a fuggvenyt mashonnan hivjuk, ahol semmilyen informacio nem all rendelkezesre, hogy kliens v szerver oldal. (Mint ahogy normalis esetben sem a DB sem a network layert nem erheti el, mert azoktol nem fugghet, mivel az egy onallo komponens. Mondom a kodot: // Kozos reszek egy db assemblyben, ami semmit nem tud a szerverrol vagy a kliensrol, mivel tok altalanos es felhasznalhato mas, teljesen egyedi proejktben. public interface ISomethingProvider { public Bar GetBar(); } public class FooFunction: Function { private ISomethingProvider _provider; public FooFunction(ISomethingProvider provider) public ... DoWork(...) { ... var cucc = _provider.GetBar(); ... } } // Csak a szerver oldalon levo resz: class IlyenSomethingProvider: ISomethingProvider { private IDbConnection _db; public IlyenSomethingProvider(IDbConnection db) { _db = db; } public Bar GetBar() { // db-bol valo kiolvasas } } // Kliensoldali implementacio class OlyanSomethingProvider: ISomethingProvider { ... hasonlo, csak IDbConnection helyett itt pl. egy IClientHandler -t kap, amely a szerver fele kuld egy kerest. } Es igy tovabb. Lehetne meg ragozni (pl. van teszteleshe van FakeSomethingProvider, ami csak egy konstans erteket ad vissza es nincs kulso fuggosege) vagy a kliens-szerver-hez meg be fog jonni egy masik jellegu kliens, ami a frontend szervereken fog futni. Mint lathatod, a FooFunction (amely a scriptrendszerem resze) mukodese valtozhat aszerint, hogy en kivulrol hogyan parameterezem fel. Valoban nem lesz kevesebb kod. Viszont igy az egesz scriptrendszer megmarad egy onallo rendszernek es nem fog fuggni a db-tol, halozattol, stb. Egyebkent ezt hivjak strategy patternnek, amikor a valtozo funkcionalitast kiszervezik osztalyokba.
Parallels az egy virtualizacios sw, mint a vmware vagy a virtualbox. Mellesleg OSX-re desktop virtualizaciora a legjobb. Az emulatorokban es hasonlo kerulomegoldasokban - foleg egy ilyen sw eseten, mint a VS, ahol azert elegge alapoz a Windows jonehany szolgaltatasara, pl. debuggolasra - nem mernek hasznalni ilyet. Melora nekem uzembiztos megoldas kell, nem olyan, amit folyton takolni kell, a'la wine.
Rohogni fogsz, de miutan jol kiosztottuk egymast, hogy nem, en nem akarok projektvezeto lenni es o se akarjon infot adagolni vagy muszaki dologba beleszolni, egesz jol lehetett vele dolgozni. :) Ui. csinalj mar valamit a quote scripteddel, hogy mindig a vegere szurja be. Es ha nincs ket enter jel a vegen, azt is tegye oda. Kurvaidegesito, mikor a szoveg kozepere rakja. Ui2: latom, hogy erolkodsz a hotmaillel. Leszarom, elcsesztek, ezen nincs mit ragozni. |
saxus (statz) | #9, Agyfasz (419) |
991 | #1c37 | ^ | Idézet | Sun, 29 Apr 2012 18:33:35 +02 |
84.3.*.* | *.catv.pool.telekom.hu |
Ja igen, mielott mondanad, hogy miert nem csinalok ServerSideFooFunction meg ClientSideFooFunction -t. Azert nem jo, mert amit a scriptszerkesztoben osszerak az ember, az futhat kliens es szerver oldalon is. Raadasul szerkeszteni ugye csak kliensoldalon tudjak, igy mindket helyen mukodnie kell. Raadasul, ha kettot irnek belole, (ugyanazok a szamitasok, ami a lekerdezes korul van), akkor ketto kodot kellene karbantartaom. Persze, lehetne template method patternt is hasznalni, csak akkor meg azzal szivnam meg, hogy mindenkepp kell egy megfeleltetest csinalni, hogy akkor most a FOO fuggvenyem az most hol milyen Foofunction leszarmazott. Tisztabb, ha egy logika van, es a valtozo adatot kiszervezem kulon osztalyokba es csak interfacen keresztul kommunikalok. (Egyebkent ez az, amit nagyon elfelejtenek az OOP tanitasakor mindenhol, hogy a "feluletre fejlesztes" egy nagyon fontos sarokkove - lenne - az egesznek es nem csak esz nelkul csinalunk mindenre kulon osztalyokat.) |
saxus (statz) | #9, Agyfasz (419) |
470 | #1c38 | ^ | Idézet | Sun, 29 Apr 2012 21:21:59 +02 |
84.3.*.* | *.catv.pool.telekom.hu |
Btw. memoriaszemet. Mint latod, egybol felszabadul, 8M foglalas meg csak azert van ideiglenesen, mert kozben indul egy masik szal, amely szinten hasznal. Persze, el tudok kepzelni olyan esetet is, amikor a GC inkabb ritkabban fut es hagyja lefoglalni a ramot pluszba (mert pl. sok van vagy nagyon sok kicsi foglalas tortenik amely ugy is felszabadul hamar. .NET-ben sem csak egyfele GC strategia van, hanem ami azt illeti tobbfele es azoknak is sokfele strategiaja van) |
saxus (statz) | #9, Agyfasz (419) |
222 | #1c39 | ^ | Idézet | Sun, 29 Apr 2012 21:23:27 +02 |
84.3.*.* | *.catv.pool.telekom.hu |
Sot, tekintve hogy igazabol akkor szabadult fel, mikor kezzel rahivtam a GC-t, nekem inkabb ugy tunik, hogy fel se szabaditotta, hanem szimplan odaadta a kovetkezo futo threadnak. (Ugye a malloc onmagaban koltseges lehet.) |
kemi (statz) | #2, Főfasz (2970) |
421 | #1c3a | ^ | Idézet | Mon, 30 Apr 2012 09:12:43 +02 |
188.143.*.* | *.pool.digikabel.hu |
Felraktam az Ubuntu 12.04-et, és konstatáltam, az Ubuntunak még mindig nem sikerült megbékülnie a mikrofos egeremmel. :) Minden bootolás után ki kell húznom, és visszadugnom, hogy normálisan működjön. TCH, értesz hozzá, hogy lehet Linux alatt USB portnak, vagy egérvezérlőnek soft resetet kiadni? Akkor betennék egy olyan kis programot az indítópultba, és nem kéne húzgálni az egeret. :P Jut eszembe, te nem frissítettél? |
TCH (statz) | #1, Főfasz (10443) |
5659 | #1c3b | ^ | Idézet | Mon, 30 Apr 2012 17:15:08 +02 |
46.107.*.* | *.catv.pool.telekom.hu |
Most important: saxus, PostgreSQL-ben mi a MySQL-es utf8_unicode_cimegfelelője? Mert jelenleg a DB-m hu_HU.UTF-8, ami sejtésem szerint a MySQL-ben a utf8_hungarian_cimegfelelője. Szal, mijaz és hogyan tudom belőni? BTW, amúgy kurwa jó a PostgreSQL, csak még szokni kell, mert pár dolog máshogy van benne, mint MySQL-ben (mysql_insert_id() helyett a query-be RETURNING idkerül, LIMIT O, Chelyett LIMIT C OFFSET Ovan, serialok ainc helyett), de legalább van, nem úgy mint szarakülben. :P Ja és kipróbáltam ezt az Adminer nevű toolt, kurwa jó, egyszerre visz minden SQL-t. Most vagy nem értem, vagy ez arról szól, hogy van egy alaposztályod és annak van kétféle kiterjesztése? Fostalicska vájnt nem lehet egy lapon említeni a paralellel. Érdekes. Ezt is most utólag szúrtam be. Legjobb tudomásom szerint a kurzorpozícióba dobja be a quote-ot. Teszteltem Operával, Chromeal, Firefoxxal. Safarival nem, de elvileg az is WebKit motor. Ez megoldható. (BTW, EZT IS utólag szúrtam be, mert a karbantartós részt citáltam először. Ha Safarit használsz, akkor dibaggold már ki, hogy miért nem megy. Ha meg azért nem ment, mert nem tetted a kurzort oda, ahova be akartad szúrni, akkor arról nem tehetek...) Mivan? Mi az hogy erőlködök? Mert bepostoltam egy linket? Akkor az mi, hogy lassan 100k-nyi OOP hittérítést okádtál ide? Különben sem neked ment explicit, hanem a közösbe... Így is, hát ha két külön dolgot csinál kliensen meg szerveren, akkor mindenképpen két kódod van, max több a közös rész. Hát én csak vakarom a fejem, mert az egy logika, változó bemenetek, interface kommunikációaz nekem tisztára a függvény/eljárás konyhanyelvi leírásának tűnik... Herótom van attól, ha egy program nem azt csinálja amit mondok neki, hanem menet közben még ezerféle fasságot csinál. Aztán csodálkozunk, hogy lassssssssú meg zabálja a RAMot. Hógyne, legalább 11 dollár 99 cent zombiprocesszenként. :P Gőzöm sincs, próbáld meg ezeket: /etc/init.d/udev restart /etc/init.d/usb restart /etc/init.d/haldaemon restart /etc/init.d/hotplug restart Nem. Csak akkor fogom lecserélni a 10.04-et, ha véget ér a támogatása, lévén (egyelőre) minden van rajta, ami (nekem) kell. Hogy utána 12.04-re frissítek-e, azt még nem tudom. Ha lesz KDE3 12.04-re, akkor lehet. De az is lehet, hogy kipróbálom az Arch Linuxot. Vagy a Slackware-t. Vagy hagyom a Linuxot és összehegesztek egy asztali FreeBSD-t magamnak. De még az is lehet, hogy köpök az egészre és marad a 10.04. 2002-ig Amiga volt az elsődleges platformom és 2008-ig winfos98se. Sose voltam meghatódva attól, hogy überlatest rendszerem legyen. :P Sz*rk: saxus, ha a quotebeszúrósdit nem úgy értetted, hogy miért a végére dobja, hanem, hogy éppenhogy dobja a végére, akkor lófaszt. Direkt van úgy, hogy a kurzornál szúrja be. Az entereket beletettem. HBB+ örűllyé'. :P Sz*rk2: http://hup.hu/cikkek/20120430/drew_curtis_hogyan_szivattam_meg_egy_patent_troll-t Úristen bazdmeg. Egy buzi patent troll levédte amcsifődön a hírek emailben való terjesztését. Úr isten bazdmeg. Nem hiszem el. A hírlevél már több évtizede ismert, annyira triviális, mint atom és most jön valami csicska és levédeti, mert az az ő jogtulajdona, mert másnak ez még nem jutott eszébe. Mikor védeti le valaki a levegővételt, vagy az árammal való működést?! Mindazonáltal legalább keményen beszopta. Én a patenttrollkodást halállal büntetném. Kínhalállal. Drew Curtisnak respect, az amcsi jognak, meg atom. |
saxus (statz) | #9, Agyfasz (419) |
4077 | #1c3c | ^ | Idézet | Mon, 30 Apr 2012 20:04:43 +02 |
84.3.*.* | *.catv.pool.telekom.hu |
http://www.postgresql.org/docs/9.1/static/collation.html Szerintem csak "hu_HU" lesz neked és független a karakterkódolástól (igazából logikus lenne), viszont ha jól emlékszem, fel kell venned a DB-hez, mint elérhető collation (pl. a pl/pgsql-t is létre kell hozni a create language-al, mondjuk én be szoktam dobni a template1-be, aztán mindig lesz.) Viszont ott anyázhat, hogy nincs, akkor asszem csomagból kell hozzá telepíteni. Ilyen főleg a darabolós linuxokon fordulhat elő, pl. Debian. De hogy őszinte legyek, inkább konzultálj a doksival, mert talán ezer éve egyszer volt vele gondom, azt leszámítva soha. MySQL-nél annál inkább, főleg, hogy ott bejátszottak (jó)pár éve egy olyat, hogy beraktak egy szar verziót a magyar collation-hoz, utána meg patchet nem voltak hozzá hajlandóak elfogadni, mert fú, hát ilyet nem lehet csak úgy adhoc módosítani, kellene valami hivatalos angol nyelvű leírás, hogy akkor hogy is van a magyar ABC rendezés szabálya (MHSZ-ből meg persze nincs MTA által certifikált angol kiadás :). Mondjuk ez még a Sünös idők előtt volt, mikor még külön MySQL AB. volt. Azóta csak helyrehozták már. Pg-vel szinte soha nem volt problémám, igaz ott soha nem kellett random karakterkódolású, collectionú adatbázisokat örökölnöm, vagy ha mégis, ott is UTF8 volt. Egyébként jó cucc ez a PgSQL, sokat tud, viszont alapból szeret elég szigorúan hozzáállni a dolgokhoz. Ami mondjuk szerintem nem baj. LIMIT offset,limit stílus meg MySQL sajátosság, viszont ugyanúgy megeszi a LIMIT l OFFSET o stílust. A RETURNING záradék amúgy egy nagyon hasznos, hatékony bővítmény, főleg, hogy nem csak id visszaadására jó. Nekem pl. volt már nem egy táblám, ahol a default értéket pl. egy tárolt eljárás számolta.
Két teljesen totál független osztályom van, egyedül az interface-ban közös.
Igen. Pont ez a bajom. Vééégéééreeee...... Kurvaidegesítő, amikor írok valamit, eszembe jut, hogy még írok valamit az előző dologhoz, aztán scrollozok fel, hogy idézzek még, és hopp, bekurja a szöveg közeépre.
Épp ez az, nem lehet közösbe rakni, csak a felülete a közös: tudsz arról, hogy van néhány függvényed, amit tudsz használni valamilyen módon. De arról nem tudsz, hogy annak a néhány függvénynek mondjuk szüksége van X másik dologra, amelyet mondjuk esetenként át sem tudsz adni, mivel az adott context-ben nem is létezik.
De bazdmeg, mit nem értesz azon, hogy a "változó bemenet" az NEM a hívás helyén változik? Ott, ahol meghívod a függvényt, ott lófaszt nem adsz át, csak egy adatot kérsz le. Nemhogy "változó bemenetként" adatbázis réteget vagy hálózatkezelést. Szerintem direkt tetteted a hülyét :)
Akkor sürgősen nyergelj át mikrocontrollerre, mert a CPU is csak látszólag teszi lineárisan a dolgokat. Aztán, hogy a doboz belsejében éppen milyen matek alapján hogyan rendezi újra az utasításaid vagy éppen hogyan becsül elágazást, azt ne firtassuk ;) |
TCH (statz) | #1, Főfasz (10443) |
1284 | #1c3d | ^ | Idézet | Mon, 30 Apr 2012 21:08:57 +02 |
46.107.*.* | *.catv.pool.telekom.hu |
Mi a tökömért raknám a végére? Direkt van így és így is marad. Oda szúrja, ahova kijelölöm, nem a végére. Ha annyira a végére akarod rakni, akkor nyomj egy End-et, quote előtt. Ja, értem, szóval az OOP-al feltaláltuk a globális változókat. :) Nem mondod... Szerintem se. És szerintem ne próbálj meg pont CPU-ból kioktatni. :P |
saxus (statz) | #9, Agyfasz (419) |
1398 | #1c3e | ^ | Idézet | Mon, 30 Apr 2012 22:13:19 +02 |
84.3.*.* | *.catv.pool.telekom.hu |
Van elég sok nyomós oka, hogy nem divat a globális változó. (Unit testing problémái, miért is kellene X modulnak hozzáférni Y modul belső adatszerkezetéhez, stb.)
De mondom. Mivel, ha valaki C-ben kódol, akkor nem azért kódol C-ben, mert azzal akar foglalkozni, hogy mikor melyik registerbe pakolja a dolgokat meg, hogy most registeren vagy stacken adjon át paramétereket a következő függvénynek, hogy gyorsabb legyen, az egyéb architekturális, mikroarchitektúrális finomságokról meg végképp nem beszélve, ha rendszert akarsz programozni. Ugyanez egyel magasabb szinten, mikor alkalmazást fejlesztek, akkor kurvára nem érdekel, hogy most egy stringet hol, mikor hogyan buzulja be a ramba, hogyan csinálja az összefűzést, hogyan minimalizálja a memóriafelhasználást, stb. hanem az érdekel, hogy nekem van két stringem, amiből egyet akarok visszakapni. Vagy amikor API szinten gondolkodok, és egy API-t *használok*, kurvára nem érdekel, hogy pl. egy Kosár osztály hogyan valósítja meg a mentés műveletet, én egy Kosár objektumon akarok egy mentés műveletet meghívni. Ha nem érted ennek az absztrakciós szintnek a lényegét, hát sorry, ne kódolj PHP-ben se, mert ott sem kell malloc()-al foglalkozni. |
TCH (statz) | #1, Főfasz (10443) |
1437 | #1c3f | ^ | Idézet | Mon, 30 Apr 2012 22:24:45 +02 |
46.107.*.* | *.catv.pool.telekom.hu |
A nemmondodalatt azt értettem, hogy tudom, hogy hogy müxik egy proci, nem kell mondanod. Tudod, no shit sherlock. És képzeld ezzel a sok rizsával sem mondtál semmi újat.
Ez a mentalitás vezetett a winfosvisztáig, amikor a kernelt is fosnetben akarták megírni... Nem a magasszintű programozás lényegét nem értem, hanem az OOP szentesítését. PHP-ban meg muszáj kódolnom, mert azért fizetnek. (De egyébként PHP-ban sem szeretnék kódolni.) |