Pitanje/savjet: Kako da napravim da sortira logove prema vremenu? Napravio sam komandu za citanje prijavljenih bagova i predloga. Eh sad kako da napravim da sortira prema vremenu da novi prijavljen bug bude prvi a ne poslenji??
Opširnije:^^^^^
Dodatno:^^^^^
https://www.geeksforgeeks.org/sorting-algorithms/
Biraj sta ti pase dole ispod :)
steta sto ne zna sta je algoritam..
Citat: njoBe_ poslato Februar 04, 2023, 21:22:40 POSLE PODNE
steta sto ne zna sta je algoritam..
A ti se rodio i odma znao sve
Citat: MirsoN poslato Februar 04, 2023, 22:19:28 POSLE PODNE
A ti se rodio i odma znao sve
pa kako majka ga je pametnog rodila
Citat: V01D poslato Februar 04, 2023, 14:05:01 POSLE PODNE
https://www.geeksforgeeks.org/sorting-algorithms/
Biraj sta ti pase dole ispod :)
Moze preko bublesort da soritare prema datumu i vremenu u notepadu gde se i cuvaju logs? Koristio sam buble za sortiranje /admini i /gamemasteri prema levelu.
Citat: MirsoN poslato Februar 04, 2023, 22:19:28 POSLE PODNE
A ti se rodio i odma znao sve
Problem je u tome sto ljudi ne pokusaju traziti po internetu, ne razmisle kako bi se nesto rijesilo nego odma traze da neko drugi servira. Mogao je potraziti za bilo koji programski jezik i ako ima imalo logike za programiranje dobio bi viziju kako da uradi.
Citat: njoBe_ poslato Februar 05, 2023, 22:53:19 POSLE PODNE
Problem je u tome sto ljudi ne pokusaju traziti po internetu, ne razmisle kako bi se nesto rijesilo nego odma traze da neko drugi servira. Mogao je potraziti za bilo koji programski jezik i ako ima imalo logike za programiranje dobio bi viziju kako da uradi.
Zar ova sekcija ne postoji za pomoc, obljasnjavanje itd itd ili je najlakse reci naci na google i resi problem? I taj isti koji govori " Problem je u tome sto ljudi ne pokusaju traziti po internetu, ne razmisle kako bi se nesto rijesilo nego odma traze da neko drugi servira" Ne govori za druge kako kukaju i ne znaju da "potraze na internetu" kada si isti kao i svi ostali.
https://balkan-samp.com/forum/index.php?topic=139429.msg1007424#msg1007424
https://balkan-samp.com/forum/index.php?topic=139763.msg1010199#msg1010199
https://balkan-samp.com/forum/index.php?topic=139775.msg1010280#msg1010280
https://balkan-samp.com/forum/index.php?topic=140501.msg1016079#msg1016079
https://balkan-samp.com/forum/index.php?topic=141274.msg1023421#msg1023421
https://balkan-samp.com/forum/index.php?topic=142490.msg1034193#msg1034193
https://balkan-samp.com/forum/index.php?topic=142740.msg1036204#msg1036204
https://balkan-samp.com/forum/index.php?topic=142763.msg1036391#msg1036391
https://balkan-samp.com/forum/index.php?topic=142897.msg1037159#msg1037159
sto bi jednopstavno kad moze komplikovano ;D ;D divim se
Citat: Grella™ poslato Februar 06, 2023, 02:50:59 PRE PODNE
sto bi jednopstavno kad moze komplikovano ;D ;D divim se
:D :D
Zato sto imam stranice svakih 20+ stranica pravi automatsko novu stranicu, i ne zelim da skrolujem tipa 5 stranica da bih dosao na nove prijavljene bugove, nego zelim da cim udjem da mi odmah pisu novi logovi a da idem 5 stranica da bih video stare logove. Jeste komplikovano i da kazemo nepotrebno ali eto radi izgleda i generalno olaksan posao tom koji gleda a smrt za mene koji pravi.
SELECT * FROM `BugReports` ORDER BY `BugReports`.`Time` desc LIMIT 10 OFFSET 20
10 je koliko "prikazujes", 20 preskaces (znaci 21,22...30). Naravno ovo je primer, ti sad sam radi sistem.
Sortiras po vremenu, ti mozes i po imenu ili bog zna cemu, mozes i da dodas uslov od odredjenog igraca, itd...
Mozes sqlite, mozes mysql, syntaxa bi radila u oba slucaja
Citat: Deleted User poslato Februar 06, 2023, 19:36:55 POSLE PODNE
SELECT * FROM `BugReports` ORDER BY `BugReports`.`Time` desc LIMIT 10 OFFSET 20
10 je koliko "prikazujes", 20 preskaces (znaci 21,22...30). Naravno ovo je primer, ti sad sam radi sistem.
Sortiras po vremenu, ti mozes i po imenu ili bog zna cemu, mozes i da dodas uslov od odredjenog igraca, itd...
Mozes sqlite, mozes mysql, syntaxa bi radila u oba slucaja
INI koristim, ne znam oce se razlikovati nesto posto nije sqlite i mysql. Ako nece oda jel Select stavljam pri citanju ili cuvanju?
SELECT * FROM `BugReports` ORDER BY `BugReports`.`Time` desc LIMIT 10 OFFSET 20
Ovako cuva logove
[pawn]
format(logs, sizeof(logs), "Prijavio: %s | Opis: %s", GetName(playerid), bug);
ingamelog("Logs/InGameLogs/Bugovi.log", logs);
[/pawn]
a ovako cita logove
[pawn]
{
if(PlayerInfo[playerid][pAdmin] < 6) return SCM(playerid,-1, "Nemate ovlascenje za dalju upotrebu ovog dialoga.");
new text[4096], str[4096];
new File:buglogs = fopen("Logs/InGameLogs/Bugovi.log", io_read);
if(buglogs)
{
while(fread(buglogs, text))
{
format(str, sizeof str, "%s\n", text);
AddDialogListitem(playerid, str);
}
ShowPlayerDialogPages(playerid, "ServerLogs", DIALOG_STYLE_TABLIST, "Server Logovi", "Dalje", "Izlaz", 20);
fclose(buglogs);
}
else SCM(playerid, , "Trenutno nema logova prijavljenih bugova servera.");
}
[/pawn]
Hoces najnovije prvo? Zasto jednostavno ne upises najnoviji unos/bug/prijedlog ili sta god prvi u file?
Citat: // xunder poslato Februar 07, 2023, 14:31:28 POSLE PODNE
Hoces najnovije prvo? Zasto jednostavno ne upises najnoviji unos/bug/prijedlog ili sta god prvi u file?
Zato sto mi sve pise u notepadu jedno ispod drugog i to na kraj ispadne ovako, najstariji je je jelte ovaj u 14:42:56 a najnoviji je 14:43:0, onda ce ingame ovaj 14:42:56 koji je najstariji biti prvi a najnoviji ovaj 14:43:0 biti poslednji koji je najnoviji, eh sad zelim da ih obrnem naopacke da radi poslednji dole novi gore.
[pawn]
/prijavibug 7.2.2023 - 14:42:56 z Goku
/prijavibug 7.2.2023 - 14:42:57 z Goku
/prijavibug 7.2.2023 - 14:42:57 z Goku
/prijavibug 7.2.2023 - 14:42:57 z Goku
/prijavibug 7.2.2023 - 14:42:58 z Goku
/prijavibug 7.2.2023 - 14:42:58 z Goku
/prijavibug 7.2.2023 - 14:43:0 z Goku
[/pawn]
Citat: Goku ^ poslato Februar 07, 2023, 14:47:00 POSLE PODNE
Zato sto mi sve pise u notepadu jedno ispod drugog i to na kraj ispadne ovako, najstariji je je jelte ovaj u 14:42:56 a najnoviji je 14:43:0, onda ce ingame ovaj 14:42:56 koji je najstariji biti prvi a najnoviji ovaj 14:43:0 biti poslednji koji je najnoviji, eh sad zelim da ih obrnem naopacke da radi poslednji dole novi gore.
[pawn]
/prijavibug 7.2.2023 - 14:42:56 z Goku
/prijavibug 7.2.2023 - 14:42:57 z Goku
/prijavibug 7.2.2023 - 14:42:57 z Goku
/prijavibug 7.2.2023 - 14:42:57 z Goku
/prijavibug 7.2.2023 - 14:42:58 z Goku
/prijavibug 7.2.2023 - 14:42:58 z Goku
/prijavibug 7.2.2023 - 14:43:0 z Goku
[/pawn]
To mozes ispraviti. Sortiraj prijave po datumu od novijeg ka starijem. Ovim nacinom ces brze i jednostavnije odraditi read i lakse ces moci da odradis pagination.
Opet, ako ne zelis da uradis kako je preporuceno iz nekog razloga, moraces da koristis fread ili fgetchar, fseek i flength naravno. Takodje, moraces da nadjes workaround za nepostojanje funkcije ftell u SA-MPu.
Citat: // xunder poslato Februar 08, 2023, 04:09:25 PRE PODNE
To mozes ispraviti. Sortiraj prijave po datumu od novijeg ka starijem. Ovim nacinom ces brze i jednostavnije odraditi read i lakse ces moci da odradis pagination.
Opet, ako ne zelis da uradis kako je preporuceno iz nekog razloga, moraces da koristis fread ili fgetchar, fseek i flength naravno. Takodje, moraces da nadjes workaround za nepostojanje funkcije ftell u SA-MPu.
Ja znam da mogu ALI KAKO. Nikada to nisam radio ne znam kako da ih sortiram. I da koristim trenutno fopen da otvori taj log i fread da ga procita i onda na kraj fclose. Ja razumem to ali ne znam kako da ispravim da ide po datumu od novijeg ka starijem to je i glavni razlog ovog topica
mnogo ga komplikujes zar nije lakse spojiti mysql i odraditi kao covjek nego se patiti i kontati kako i sta
Citat: Grella™ poslato Februar 08, 2023, 23:45:19 POSLE PODNE
mnogo ga komplikujes zar nije lakse spojiti mysql i odraditi kao covjek nego se patiti i kontati kako i sta
Lako je reci nego uraditi, klk ce meni trebati vremena da totalni ini prebacim u mysql i da ga spojim?
Citat: Goku ^ poslato Februar 09, 2023, 02:31:23 PRE PODNE
Lako je reci nego uraditi, klk ce meni trebati vremena da totalni ini prebacim u mysql i da ga spojim?
ne mora znaciti da moras prebacivati ostalo u mysql da bi mogao taj sistem odraditi
spojis mysql konektujes bazu napravis upis/ispis samo za taj sistem
da malo proucis mysql shvatio bi koliko je lagan za koristiti
Citat: Grella™ poslato Februar 09, 2023, 04:04:06 PRE PODNE
ne mora znaciti da moras prebacivati ostalo u mysql da bi mogao taj sistem odraditi
spojis mysql konektujes bazu napravis upis/ispis samo za taj sistem
da malo proucis mysql shvatio bi koliko je lagan za koristiti
Cekaj znaci ja mogu da napravim da samo to bude u mysql a sve ostalo ini, pa da polako i postepeno sve prebacujem u mysql i nece mi praviti problem ako je 20% moda mysql a 80% ini? Da sam znao da mogu korak po korak da menjam odradio bih odavno full mod.
Citat: Goku ^ poslato Februar 09, 2023, 06:38:41 PRE PODNE
Cekaj znaci ja mogu da napravim da samo to bude u mysql a sve ostalo ini, pa da polako i postepeno sve prebacujem u mysql i nece mi praviti problem ako je 20% moda mysql a 80% ini? Da sam znao da mogu korak po korak da menjam odradio bih odavno full mod.
Ne, ne zavisi ti to sta radis od ostalih stvari
Citat: Grella™ poslato Februar 09, 2023, 14:17:02 POSLE PODNE
Ne, ne zavisi ti to sta radis od ostalih stvari
Da sam znao da ne zavisi i da mogu odvojeno odradio bih odavno, nista pocecu tako, ja znam da je mysql dosta laksi itd itd ali eto nisam znao da moze posebno ovo posebno ovo.
cak i kada prebacujes accove, mozes drzati mysql i ini zajedno kao spremanje/citanje korisnickog racuna, medjutim da ti stoji password i sqlid naravno i novac(dajem primjer) stoje u mysql, a da ti ostale stvari ostanu u ini i tako postepeno prebacujes iz ini u mysql ostalo ti ostane na ini cuvanje na isto ime, a ovo u mysql na isto ime, ako si me skontao o cemu pricam
Citat: Grella™ poslato Februar 09, 2023, 16:48:24 POSLE PODNE
cak i kada prebacujes accove, mozes drzati mysql i ini zajedno kao spremanje/citanje korisnickog racuna, medjutim da ti stoji password i sqlid naravno i novac(dajem primjer) stoje u mysql, a da ti ostale stvari ostanu u ini i tako postepeno prebacujes iz ini u mysql ostalo ti ostane na ini cuvanje na isto ime, a ovo u mysql na isto ime, ako si me skontao o cemu pricam
Sine, nisam te ni ja skontao a kamoli on...
Citat: Deleted User poslato Februar 09, 2023, 18:45:04 POSLE PODNE
Sine, nisam te ni ja skontao a kamoli on...
Pa kako nisi, bitno je da ti sqlid i password stoje u mysql, eventualno i novac HAAHAHA
Cek koji ce ti k 2 cuvanja i dodatno opterecivanje masine. Ne vidim poentu cuvanja nekih stvari u SQL a nekih u i ini. (konkretno na statse igraca). Ili jedno ili drugo, u ini eventualno logove.
Citat: Deleted User poslato Februar 09, 2023, 18:45:04 POSLE PODNE
Sine, nisam te ni ja skontao a kamoli on...
Navodio sam primjer kako zapoceti prebacivanje iz ini u mysql acc stats kao (sqlid,password) da napravi prvenstveno kao info od mysql, a ostalo ostavi u yini kako bude prebacivao jednu po jednu stvar u mysql tako ce se postepeno onaj drugi dio iz yini smanjitim(account infoi mislim), a pri tome ce moci sve odraditi detaljno
Citat: njoBe_ poslato Februar 09, 2023, 20:14:36 POSLE PODNE
Cek koji ce ti k 2 cuvanja i dodatno opterecivanje masine. Ne vidim poentu cuvanja nekih stvari u SQL a nekih u i ini. (konkretno na statse igraca). Ili jedno ili drugo, u ini eventualno logove.
nece biti 2 citanja rekao sam da to moze uraditi i lakse je, i da nakon toga moze nastaviti prebacivanje ostalih stvari u mysql
Citat: PazzOnee poslato Februar 09, 2023, 18:55:11 POSLE PODNE
Pa kako nisi, bitno je da ti sqlid i password stoje u mysql, eventualno i novac HAAHAHA
...
Citat: Grella™ poslato Februar 09, 2023, 23:11:43 POSLE PODNE
Navodio sam primjer kako zapoceti prebacivanje iz ini u mysql acc stats kao (sqlid,password) da napravi prvenstveno kao info od mysql, a ostalo ostavi u yini kako bude prebacivao jednu po jednu stvar u mysql tako ce se postepeno onaj drugi dio iz yini smanjitim(account infoi mislim), a pri tome ce moci sve odraditi detaljno
nece biti 2 citanja rekao sam da to moze uraditi i lakse je, i da nakon toga moze nastaviti prebacivanje ostalih stvari u mysql
...
Polako sad dok provalim sve oko pravljenje tabela itd itd i basic stvari posle prebacivanje ce biti lakse.
Citat: Goku ^ poslato Februar 08, 2023, 04:26:16 PRE PODNE
Ja znam da mogu ALI KAKO. Nikada to nisam radio ne znam kako da ih sortiram. I da koristim trenutno fopen da otvori taj log i fread da ga procita i onda na kraj fclose. Ja razumem to ali ne znam kako da ispravim da ide po datumu od novijeg ka starijem to je i glavni razlog ovog topica
main() {
new File:handle = fopen("prijedlozi.txt", io_read); // Otvaramo fajl "prijedlozi.txt" za citanje
if (handle) { // Provjeravamo da li je handle validan. Ukoliko ne provjerimo i pokusamo neku IO operaciju nad invalid handle - server ce crashovati
#define MAX_DISPLAYED_SUGGESTIONS (5) // Broj sugestija koje cemo pokazivati
new string[128],
totalSuggestions = 0, // Ukupno readovanih prijedloga iz fajla "prijedlozi.txt"
countSuggestions = 0, // Varijabla koja sluzi da spremimo koliko smo prijedloga iscitali u drugom loopu
tmpReadPos = 0, // Varijabla koja sluzi da sacuvamo trenutnu poziciju/index gdje je fread zavrsen
suggestionStart[MAX_DISPLAYED_SUGGESTIONS], // Array gdje cemo cuvati pocetnu poziciju prijedloga
tmpCount = 0; // Pomocna varijabla koja ce sluziti da znamo koliko polja smo popunili u arrayu "suggestionStart"
// Brojimo koliko ukupno fajl "prijedlzi.txt" sadrzi prijedloga
// Pretpostavljamo da su prijedlozi razdvojeni karakterom \n (novom linijom)
while(fread(handle, string)) {
++ totalSuggestions;
}
fseek(handle, 0, seek_start); // Vracamo pointer za read filea na index 0 (pocetak fajla)
// Opet vrsimo read fajla i storujemo svaki red u array "string"
while(fread(handle, string)) {
// Za svaki prijedlog dodajemo +1 na varijablu "countSuggestions" a zatim uzimamo "totalSuggestions"
// i oduzimamo "MAX_DISPLAYED_SUGGESTIONS" da bi znali da li prijedlog treba biti uzet u obzir.
if (++ countSuggestions > totalSuggestions - MAX_DISPLAYED_SUGGESTIONS) {
suggestionStart[tmpCount ++] = tmpReadPos; // U "suggestionStart" upisujemo trenutnu poziciju read pointera,
// zatim povecavamo "tmpCount" za +1 da u sledecoj iteraciji ne overwriteujemo prethodno upisano polje
}
tmpReadPos += strlen(string); // Dodajemo duzinu "string"-a na "tmpReadPos" da bi znali gdje je nas pointer trenutno
}
// Radimo reverse loop jer je "suggestionStart" upisan od 0 do 4 a ne od 4 do 0
// Da bi izbjegli reverse loop potrebno je mijenjati kod gore ("tmpCount" start vrijednost = 4 i onda umanjivati)
for(new i = MAX_DISPLAYED_SUGGESTIONS - 1; i != -1; -- i) {
fseek(handle, suggestionStart[i], seek_start); // Postavljamo pointer na poziciju pocetka prijedloga
fread(handle, string, sizeof string); // Vrsimo read (koji ce procitati liniju do novog reda - \n)
print(string); // Printamo prijedlog. Ovdje bi ti trebao da formatiras svoj dialog ili odradis "SendClientMessage" ili sta ti je vec volja
}
fclose(handle); // Zatvaramo handle
}
printf("Done!");
}
PS. Daleko od savrsenog, moze se odraditi optimizacija koda ali sam ovo sklepao na brzinu da bi vidio proces kroz koji moras da prodjes da bi napravio da ovo radi.
Neaktivno, lock!