Új hozzászólás Aktív témák
-
n00n
őstag
Akad egy kis problémám, valakinek ötlet?
ifstream Adat;
Adat.open("data/data.dat");
if (!Adat)
{
QMessageBox::information(this, "Hiba!", QString::fromLocal8Bit("Nem található adat fájl!"));
}
else
{
// ide kellene egy karakterről karekterre kiolvasó, ami addig olvassa az Egy nevű változóba a karaktereket még *-hoz nem ér, akkor áttér a Kettő változóra és odafolytatja még véget nem ér a fájl
Adat.close();
} -
-
doc
nagyúr
ajanlanam pl. az elobb emlegetett QFile-t
Qt fejlesztes kozben nyugodtan felejtsd el hogy az std namespace es az STL egyaltalan letezik
a Qt tisztabb, szarazabb, biztonsagosabb erzes, es meg az orrodat is tiszticcsaegyebkent tenyleg
jatekfejlesztesnel muszaj STL-re tamaszkodnom Qt helyett, valami borzalom hogy milyen korlatoltak az osztalyok, meglatszik rajtuk a sok evtized[ Szerkesztve ]
-
n00n
őstag
Lenne egy ilyen kódom:
void copy()
{
QFile dst("G:\\adat.dat");
QFile src("D:\\adat.dat");
if(!src.open(QFile::ReadOnly) || !dst.open(QFile::WriteOnly)) return;
QProgressDialog *dlg = new QProgressDialog();
qint64 len = src.bytesAvailable();
dlg->setLabelText(QString::fromLocal8Bit("Mentés másolása folyamatban..."));
dlg->setWindowTitle(QString::fromLocal8Bit("Mentés másolása"));
dlg->setRange(0, len);
dlg->setCancelButton(0);
dlg->show();
int pg = 0;
while(!src.atEnd()){
QByteArray bytearray = src.read(80000);
dst.write(bytearray);
qint64 act = bytearray.length();
pg = pg + act;
dlg->setValue(pg);
qApp->processEvents();
}
}Amíg vinyón másolok, addig elég gyors, kb egy 1.2 GB-s fájlt 1:15 alatt másol át, de, ha pendrivera másolok, akkor ezt borzasztóan lelassul. És nem a pendrive miatt, Total Commanderben szinte száguld ehhez képest. Mit lehetne tenni ez ellen?
[ Szerkesztve ]
-
ArchElf
addikt
Kis fájlok, vagy töredékek írása nagyon lassú pendrive-ra. Használj sokkal nagyobb nagyobb buffert másolásra (pl 512kB).
AE
[ Szerkesztve ]
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
doc
nagyúr
valoszinuleg tul kicsi a blokkmeret, probald meg nagyobbal
csak ugy mellekesen: OSX-en a dmg image-bol vinyora par tiz masodperc alatt kibontja a komplett 8 GB telepitot. ugyanez pendrive-ra 2-3 ORA!
szoval ha ilyen alacsony szinten akarod csinalni, akkor fel kell keszulni erre-arra
de szerintem elso korben probald ki lenyegesen nagyobb blokkmerettel (mondjuk 1MB, vagy hasonlo)MOD: ArchElf na, ugyanarra gondoltunk
[ Szerkesztve ]
-
n00n
őstag
Köszi mindkettőtöknek, így már gyorsabban fut. Ezzel el is készült életem első Qt / C++ alkalmazása. Bár a forráskódra már most sem vagyok büszke, nem ám később.
-
Jhonny06
veterán
Sziasztok!
C++ gyakornoki pozícióra mennyi tudással érdemes pályázni, illetve az egyetem hanyadik évében? (Úgy általánosan, persze cégtől függ, hogy ki mit vár el.)
-
ArchElf
addikt
válasz Jhonny06 #1369 üzenetére
Gyakornoki poziba elég ha alap tudásod van. Épp arról szól a gyakornoki, hogy olyan embert keresnek, aki végja a témát (szintaktika, problémamegoldás), de nincsenek még speciális ismeretei amit meg kellene fizetni.
AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
-
ArchElf
addikt
Ez attól is függ, mi változott a fájlban. Ha csak append jellegű a módosítás (pl logfájl) akkor egyszerű (maradékot a végére kell írni).
Amennyiveb viszont strukturálisan változik, akkor valami hash-es megoldás javasolt: pl. mint a torrent vagy edonkey protokollban - feldarabolni a fájlt virtuálisan x megabyte-os részekre és részenként hast-t készíteni rá. Ha változott a fájl akkor azokat a részeket kell átmásolni, amelyeknek a hash-e nem egyezik a korábbi változattal (ilyenkor nem a célfájlon célszerű ellenőrizni a hash-t hanem minden szinkronizációnál le kell tárolni az aktuálisat, hogy a következő szinkronizációnál a jelenlegi állapotot azzal lehessen összevetni (ehhez persze ehhez meg az kell, hogy a célfájl ne módosuljon időközben).AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
ArchElf
addikt
[ Szerkesztve ]
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
ArchElf
addikt
rsync binárisokkal is működik, de fontos, hogy a sync időtartama alatt a fájl ne változzon.
A legjobb megoldás az, ha az adatbázisról csinálsz egy backupot (az adatbázis saját motorjával, ha van neki ilyen) és azt szinkronizálod le. Ha nem tudsz backupot csinálni, akkor le kell választani, vagy lockolni az egész adatbázist a szinkronizálás időtartamára.Mondjuk backup legenerálása után csak akkor érdemes rsync-kel vacakolni hogy ha lassú hálózaton/eszközön akarod keresztülnyomni a fájlt (vagy ha extra nagy méretű, de kevés dolog változik benne).
AE
[ Szerkesztve ]
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
n00n
őstag
válasz ArchElf #1376 üzenetére
Akkor szoktunk biztonsági mentést készíteni a fájlról, mikor már senki nem dolgozik vele. Így ilyenkor 100%, hogy nem változik.
A fájl maga 2,5 GB, de sok új változás (sokkal több mindent fogunk tárolni benne) miatt ez akár 3-4 Gb is lehet nem sokára. Ezt felnyomni egy pendrive-ra olyan 17-20 perc jelenleg. Rsync-kel remélem lecsökkenthető olyan 5 percre.
-
n00n
őstag
void copy_feher()
{
QFile dst("idejonacel");
QFile src("forrashelye");
if(!src.open(QFile::ReadOnly) || !dst.open(QFile::WriteOnly)) return;
QProgressDialog *dlg = new QProgressDialog();
qint64 len = src.bytesAvailable();
dlg->setLabelText(QString::fromLocal8Bit("Mentés másolása folyamatban..."));
dlg->setWindowTitle(QString::fromLocal8Bit("Mentés másolása"));
dlg->setRange(0, len);
dlg->setCancelButton(0);
dlg->show();
int pg = 0;
QByteArray bytearray;
qint64 act;
while(!src.atEnd()){
bytearray = src.read(len / 100);
dst.write(bytearray);
act = bytearray.length();
pg = pg + act;
dlg->setValue(pg);
qApp->processEvents();
}
delete dlg;
}Átírtam így a másolást, így jobb? viszont hiába cserélem le a void-ot bool-ra és adok neki egy return true-t, nem jó valamiért.
Más: Qt-be hogy lehet azt megcsinálni, hogy a főablak fölé előugrik egy párbeszéd ablak, akkor a főablak "kiszürküljön", magyarán ne lehessen rajta nyomogatni pl a gombokat. Hogyan keresek erre ár. Eddig arra gondoltam, hogy "steal focus", de az más. Ötlet?
-
-
ArchElf
addikt
Gyomorból (ellenőrzés nélkül):
int pg = 0;
qint64 BSIZE = 1024*1024*4; // 4 MB buffer
char * carray = new char[BSIZE];
while(!src.atEnd()){
qint64 readchars = src.readData(carray, BSIZE);
if (readchars <= 0) break; //valami hiba, vagy file vége
qint64 writechars = dst.writeData(carray, readchars);
if (readchars != writechars) break; //valami hiba
pg = pg + writechars;
dlg->setValue(pg);
qApp->processEvents();
}
delete carray;AE
[ Szerkesztve ]
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
n00n
őstag
válasz ArchElf #1383 üzenetére
Köszi, de sajnos ezt a hibát kapom:
/usr/include/qt4/QtCore/qfile.h: In function ‘void copy_feher()’:
/usr/include/qt4/QtCore/qfile.h:190:12: error: ‘virtual qint64 QFile::readData(char*, qint64)’ is protected
../mentesk/mainwindow.cpp:85:50: error: within this context
/usr/include/qt4/QtCore/qfile.h:191:12: error: ‘virtual qint64 QFile::writeData(const char*, qint64)’ is protected
../mentesk/mainwindow.cpp:87:56: error: within this context
make: *** [mainwindow.o] Error 1 -
ArchElf
addikt
Nem néztem hogy protected member-ek...
Próbáld meg readData és writeData helyett read és write-tal...
(azonos szintaktikával persze)AE
[ Szerkesztve ]
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
CoolBoy323
nagyúr
sziasztok!
szeretnék megtanulni programozni, és azt mondják az okosok, h C++-al érdemes kezdeni...
tudnátok ajánlani vmi irományt (akár online is lehet) amiből teljesen a 0-ról meg tudnám tanulni? semmi közöm a programozáshoz, szal vmi nagyon jól tanító könyv v vmi kellene!
köszönööööm
-
Jhonny06
veterán
válasz CoolBoy323 #1387 üzenetére
Én ezzel kezdtem, 0-ról. Nem mondom, hogy tökéletes, de nem rossz, szerintem nincs is nagyon jobb most a piacon. A C++ jó első nyelvnek, semmiképp se kezdenék Pascallal, meg hasonló halott nyelvekkel. Amúgy neten rengeteg forrás van, csak keresni kell, gondolom egyedül is megy. Ha megy az angol, akkor pláne előnybe vagy.
[ Szerkesztve ]
-
doc
nagyúr
válasz Jhonny06 #1388 üzenetére
en nem tartom jo valasztasnak a C++ -t mint elso nyelv...
nagyon szeretem, nagyon jo kis nyelv, de kapasbol ezzel kezdeni szerintem kicsit meresz
persze ha a kollega ur eltokelt, akkor idovel jol jarhat vele, csak tul sok ganyolasra ad lehetoseget, nem 'kenyszerit ra' a normalis programozasra
(egy kollegam, aki mar azert ismer par nyelvet, most tanul C++ -t, es bar igy 1 honap utan mar SOKKAL szebbek a kodjai mint az elejen produkalt irtozatos ganyolas, azert meg most is rengetegszer kell oldalbalokodni hogy 'nem arra heee' ) -
doc
nagyúr
válasz CoolBoy323 #1390 üzenetére
ha a webfejlesztes erdekel, akkor a C++ eleg rossz irany, leginkabb JavaScript/HTML5 szerintem, kesobb meg mondjuk PHP
a JavaScripttel gyorsan tudsz latvanyos eredmenyt elerni
esetleg flash, de azt en nem eroltetnem ha nem muszaj
(de szerintem ezt folytassuk a 'programozas' topicban pl, ide ez mar eleg OFF)[ Szerkesztve ]
-
Jhonny06
veterán
Nem tudom, hogy akkor mi lenne a jó.. ilyen "régi" nyelvekkel tuti nem tölteném az időmet, a C++ később megtérül. Hiába nem a programnyelv a lényeg, hanem a gondolkodásmód, akkor se.. mondjuk engem vonzanak a modern dolgok, szeretek a Visual Studio-val dolgozni, már csak ezért is gáz volt a pl. a Turbo Pascal-féle ocsmány GUI (persze ez a legjelentéktelenebb szempont).
-
doc
nagyúr
válasz Jhonny06 #1394 üzenetére
nem tudom hogy ertetted a "regit" (gondolom nem szo szerint, ha idezojelbe tetted), mert a C++ boven oregebb mint a JS/HTML5
a C++-t nem tartom jo elso nyelvnek, tulsagosan elvonja a figyelmet a nyelv szerkezetenek megtanulasa/megertese a megfelelo gondolkodasmodrol
a JavaScript pl. azert nem rossz valasztas, mert nagyon gyorsan kap 'vizualis' eredmenyt, konnyen modosithato/tesztelheto a forras
persze a borzalmas debugolhatosag miatt meg rossz valasztasnem tudnek nyugodt szivvel ajanlani igy hirtelen egy nyelvet sem, de a C++ -t azt hatarozottan nem (plane hogy sajat bevallasa szerint a webfejlesztes erdekli, az meg azon ritka teruletek egyike, ahol a C++ nem igazan rug labdaba (most a CGI-t ne eroltessuk))
a visual studiot meg en rettentoen utalom, szerintem a hasznalhatatlansag hatarat surolja sajna melo miatt gyakran kell hasznalnom, a tobbiek mindig tudjak amikor ez tortenik, mert folyamatosan kurvaanyazok (konkretan VS2005, de ketlem hogy az ujabbaknal szamottevo elorelepes tortent volna)
-
CoolBoy323
nagyúr
akkor kezdjem a javaval?
azért a web-es területre esett a választásom, mert másra nem nem lenne szükségem sose talán, meg annyira jól úgy sem tudok megtanulni egy nyelvet magamtól, h azzal érjek is vmit, kivéve a webet SZERINTEM, azt meg tudnám tanulni idővel úgy, h egy normális oldalt össze tudjak hozni... de javítsatok ki ha tévednék!!!
-
doc
nagyúr
válasz CoolBoy323 #1396 üzenetére
hat, lehet akar Java is, bar webfejlesztesben az nem jott be annyira mint ahogy az elejen latszott
weboldalt meg nem fogsz javaban kesziteni...
arra valtozatlanul a JavaScript/HTML5-ot ajanlom, esetleg PHP-t (de ez utobbinak csak ugy ugorj neki, ha van mar elotte tapasztalatod mas nyelvben, pl. JavaScriptben) -
amargo
addikt
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!