Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Moj prvi pretrazivac, Google crno ti se pise

[es] :: C/C++ programiranje :: Moj prvi pretrazivac, Google crno ti se pise

[ Pregleda: 3030 | Odgovora: 17 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

u_m
Urukalo Milan
PH

Član broj: 18631
Poruke: 889
*.wireless.org.yu

ICQ: 32554731
Sajt: milan.urukalo.com


Profil

icon Moj prvi pretrazivac, Google crno ti se pise29.09.2004. u 18:31 - pre 160 meseci
Uvod: Nov sam u C-u, spremam ispit iz njega, a inace se osrednje snalazim u php-u.

Zaplet: Napravio sam mini pretrazivac u php-u koji se kaci na odredjen url, pronalazi trazen termin i taj termin vraca kao potvrdu (ili u slucaju , temperatura: 17stepeni, na zahtjev temperatura vraca 17stepeni, --ovo je samo primjer--)

Razrada: Php to radi uzasno sporo, kako su zahtjevi povezani( termin se trazi na nekoliko stranica) ovo traje preko 20 sec. Kako da ovo odradim iz C-a, bez obzira da li se to ispalti ili ne (u brzini, jer ne znam da li je to zbog linka ili php-a) vec zbog samog treninga.
znaci, posaljem http zahtjev (fopen ili ??) iscitam sve redove iz bafera i trazim zadati termin i na kraju vratim termin (ovo ce se pozivati iz php-a)
Da li fopen da koristim za otvaranje url-ova??


Rasplet:


P.S: koju komandu da koristim za provjeravanje da li je server online, nesto kao ping ili da koristim bas ping, ima li C mogucnost pravljenja socket konekcija?
#include <music.h>
#include <beer.h>
#include <girls.h>
main(){ run(partytime);}
---------
Moj licni sajt
Moj wap sajt--offline
 
Odgovor na temu

Mikky

Član broj: 18
Poruke: 1562
*.vdial.verat.net

ICQ: 44582291


Profil

icon Re: Moj prvi pretrazivac, Google crno ti se pise29.09.2004. u 21:16 - pre 160 meseci
Nije bas tako jednostavno kako si ti zamislio. Treba dosta da se parsuju podaci koje dobijes od servera, takodje treba da saljes HTTP request serveru koji ti potom vraca zeljenu stranicu, naravno dobijes niz bajtova u HTTP HEADER + HTML obliku. Zatim izbacis http header pa u tom HTML-u trazis zeljeni termin, naravno preskaces sve sto je u sklopu tag-ova i HTML jezika. Komunikacija sa serverom se radi preko socketa (vidi na netu beej socket guide tutorial), znaci napravis socket, konektujes se na server, primis podatke, parsujes podatke i vidis dali je trazena rec tu.
Imam malo iskustva sa ovim konkretno radio sam mini web server, u win32asm doduse ali to je sve isto. Sve u svemu dosta posla i C nije bas ko stvoren za to ali naravno sve se moze. Mozda postoji neka biblioteka na netu koja vec sve to radi pa pokusaj sa tim.

Inace da li si siguran da je PHP spor ili je spora internet konekcija?
-I know UNIX, PASCAL, C, FORTRAN, COBOL, and nineteen other high-tech
words.
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.adsl.zonnet.nl

Jabber: filmil@jabber.org
ICQ: 36601391


Profil

icon Re: Moj prvi pretrazivac, Google crno ti se pise29.09.2004. u 21:42 - pre 160 meseci
Citat:
Razrada: Php to radi uzasno sporo, kako su zahtjevi povezani( termin se trazi na nekoliko stranica) ovo traje preko 20 sec.
Mogao bih da se kladim da je razlog za sporoću tvoj algoritam za pretragu. U tom slučaju prelazak na C će samo da iskomplikuje stvar.
Citat:
znaci, posaljem http zahtjev (fopen ili ??) iscitam sve redove iz bafera i trazim zadati termin i na kraju vratim termin (ovo
Problem sa C-om je što ništa od toga nemaš već „skuvano“ kao u PHP-u, tako da moraš ili da napraviš dosta infrastrukture sam, ili da koristiš neku od za to namenjenih biblioteka. Na tvom mestu, ostao bih uz PHP. C ima i drugu manu: program ne možeš da postaviš gde hoćeš, već samo na računar koji je isti kao i onaj na kome je program kompajliran. U suprotnom program prosto neće raditi.

f
 
Odgovor na temu

u_m
Urukalo Milan
PH

Član broj: 18631
Poruke: 889
*.wireless.org.yu

ICQ: 32554731
Sajt: milan.urukalo.com


Profil

icon Re: Moj prvi pretrazivac(puko), vrema je za counter update29.09.2004. u 22:02 - pre 160 meseci
ok, odustao sam od ovoga, inace imam neki brojac na sajtu, ali on sve podatke cuva u fajlu.

znaci imam .txt fajl i hocu da ga isparsiram u .sql (za mysql input)

izgled jednog reda (tab je separator):
Citat:
/index.wml / # Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.51 [en] localhost 1087510894


a treba da bude:
Citat:
insert into count_global ( script_name,request_uri,referer,user_agent,remote,datum ) values ( '/index.wml','/','#','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.51 [en],',localhost','1087510894');


P.S: u php-u bi ovo sredio za tren, ali C-e me muci
#include <music.h>
#include <beer.h>
#include <girls.h>
main(){ run(partytime);}
---------
Moj licni sajt
Moj wap sajt--offline
 
Odgovor na temu

bzero
dev null
europe

Član broj: 5907
Poruke: 371
195.252.85.*

Jabber: bzero@elitesecurity.org
Sajt: www.google.com/search?q=b..


Profil

icon Re: Moj prvi pretrazivac, Google crno ti se pise30.09.2004. u 08:40 - pre 160 meseci
Citat:

P.S: u php-u bi ovo sredio za tren, ali C-e me muci


A zasto bi uopste ovako nesto radio u C-u. Ako neces da radis to u PHP-u, za ovakve stvari su idealni Perl ili Python, nikako C.
Never trust an operating system you don't have sources for.
 
Odgovor na temu

u_m
Urukalo Milan
PH

Član broj: 18631
Poruke: 889
*.wireless.org.yu

ICQ: 32554731
Sajt: milan.urukalo.com


Profil

icon Re: Moj prvi pretrazivac, Google crno ti se pise30.09.2004. u 11:30 - pre 160 meseci
Zbog toga sto na ispitu imam zadatke iz C-a, a ja dok vjezbam hocu da radim nesto korisno, ako neko ima neki drugi koristan zadatak, da je jednostavan i da sluzi necemu nek ga post-uje

Znaci mora biti C, tu nema dvoumljenja.
#include <music.h>
#include <beer.h>
#include <girls.h>
main(){ run(partytime);}
---------
Moj licni sajt
Moj wap sajt--offline
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.231.216.81.gus.vf.siwnet.net

Sajt: dejan.lekic.org


Profil

icon Re: Moj prvi pretrazivac, Google crno ti se pise01.10.2004. u 14:29 - pre 160 meseci
Ako zeli da "iscedi suvu drenovinu" onda je C svakako bolje resenje od gore pomenutih jezika...
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

u_m
Urukalo Milan
PH

Član broj: 18631
Poruke: 889
*.wireless.org.yu

ICQ: 32554731
Sajt: milan.urukalo.com


Profil

icon Re: Moj prvi pretrazivac, Google crno ti se pise01.10.2004. u 16:42 - pre 160 meseci
hajde ljudi dajte nesto konkretno:

kako da iscitam iz fajla ovo i da svaki deo odvojen sa tabom strpam u posebnu promjenjivu??

i kako onda da to upisem u novi fajl ?

fread? fprints?? kako?


#include <music.h>
#include <beer.h>
#include <girls.h>
main(){ run(partytime);}
---------
Moj licni sajt
Moj wap sajt--offline
 
Odgovor na temu

milos23
matf
bgd

Član broj: 16989
Poruke: 118
*.vdial.verat.net

Sajt: www.autoshowserbia.info


Profil

icon Re: Moj prvi pretrazivac, Google crno ti se pise01.10.2004. u 22:34 - pre 160 meseci
sustina tvog problema je nesto sto se zove konacni automat (posto oni rade prepoznavanje niski)... moraces da znash kakav je tacan zapis web citacha i onda ces napraviti stanja s0, s1, s2, s3, s4 itd u zavisnosti od toga koliko imash reci, a u svako sledece stanje predjes kad procitash tab, a pri tom koristish neki pomocni bafer u koji ces citati trenutnu rec a pri prelasku u novo stanje tu rec ces kopirati u niz reci :o) malo komplikovano

evo kako bi otprilike izgledao algoritam
Code:

enum stanja {s0=0, s1,s2,s3,s4...,GRESKA}
char buffer[MAX_WORD];
char *reci[MAX_WORD];
int c;
c=znak_na_ulazu;//fgetc
dok je na ulazu blanko
      c=znak_na_ulazu;
stanje=s0;
dok na ulazu nije '\n' ili stanje nije stanje greskeradi sledece
   ovde dodje switch(c)
      ako je stanje s0:
            ucitaj sledeci
            proveri i predji u odgovarajuce stanje i po potrebi zapamti nisku
            //gde ti je provera da li je na ulaz tab ili znak ili nesto drugo
            //kad procitash rec alocirash i memoriju za rec
      stanje s1:......
..............


tako otprilike izgleda svaki automat (DFA i NFA na engleskom) :o)
ako si to reshio onda predji na nesto poput izdvajanja reci iz html dokumenta, tu ces svoje znanje josh vishe istestirati, kao np izdvajanje linkova tj onoga sto ide posle src= izmedju " "

ps>> posebno obrati paznju na rad sa niskama i alokacijom memorije koja ti je u tvom slucaju potrebna, mada s ozbirom da je zapis citacha tacno odredjen i nije ali boze moj

ps>>>>mozes i da smanjis broj stanja na samo 2, a onda ces morati da imash brojac rechi
 
Odgovor na temu

milos23
matf
bgd

Član broj: 16989
Poruke: 118
*.vdial.verat.net

Sajt: www.autoshowserbia.info


Profil

icon Re: Moj prvi pretrazivac, Google crno ti se pise02.10.2004. u 12:39 - pre 160 meseci
ovo ti je bilo jedno programersko resenje, tj ako morash bash ti da implemetrirash stvari, a ako es laksi nachin je da proucis f-ju strtok za koju nisam siguran da li je ima u svakom c-u, ali je ima u bibliotekama uz gcc pa bi resenje prosto bilo da ucitash jedan po jedan red (ili samo jedan, to nisi rekao koliko treba ili ja nisam procitao) i onda pozovesh par puta strtok sa separatorom \t ili ' ' u zavisnosti od toga sta je izmedju rechi
 
Odgovor na temu

u_m
Urukalo Milan
PH

Član broj: 18631
Poruke: 889
*.wireless.org.yu

ICQ: 32554731
Sajt: milan.urukalo.com


Profil

icon Re: Moj prvi pretrazivac i prvo parsiranje texta02.10.2004. u 19:13 - pre 160 meseci
za parser: samo malo, zar ne bi bilo lakse da , posto znam kako izgleda fajl, iscitavam podatke sa fread () odnosno sa fscanf() i da ih automatski ubacivam u za to pripremljenu strukturu?

za pretrazivac: da li fopen moze da otvori fajl preko neta, nesto kao:

Code:
 fopen ("http://www.elitesecurity.org","r") 

#include <music.h>
#include <beer.h>
#include <girls.h>
main(){ run(partytime);}
---------
Moj licni sajt
Moj wap sajt--offline
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.adsl.zonnet.nl

Jabber: filmil@jabber.org
ICQ: 36601391


Profil

icon Re: Moj prvi pretrazivac i prvo parsiranje texta02.10.2004. u 20:23 - pre 160 meseci
Citat:
za pretrazivac: da li fopen moze da otvori fajl preko neta, nesto kao:
Ne. Suviše očekuješ.

f
 
Odgovor na temu

milos23
matf
bgd

Član broj: 16989
Poruke: 118
*.vdial.verat.net

Sajt: www.autoshowserbia.info


Profil

icon Re: Moj prvi pretrazivac, Google crno ti se pise02.10.2004. u 21:29 - pre 160 meseci
Citat:
u_m: za parser: samo malo, zar ne bi bilo lakse da , posto znam kako izgleda fajl, iscitavam podatke sa fread () odnosno sa fscanf() i da ih automatski ubacivam u za to pripremljenu strukturu?


pa dobro ali koliko sam ja shvatio ti si sam to zeleo da odradish :o)
naravno da mozes
 
Odgovor na temu

u_m
Urukalo Milan
PH

Član broj: 18631
Poruke: 889
*.wireless.org.yu

ICQ: 32554731
Sajt: milan.urukalo.com


Profil

icon Re: Moj prvi pretrazivac, Google crno ti se pise05.10.2004. u 16:25 - pre 160 meseci
izgleda da ne mogu sam, pokusavam vec duze vreme sa fprintf i fscanf ali nece

Evo kako izgledju te dve funkcije:

Code:

while (fscanf (ulaz, "%s%s%s%s%s%s",&ActualURL, &RequestedURL, &Referer, &UA, &Remote, &HitTime) != EOF)
{
                fprintf (izlaz, "%s%s%s%s%s%s%s%s%s%s%s%s%s\n",&insert, &ActualURL, 
&razmak, &RequestedURL, &razmak, &Referer, &razmak, &UA, &razmak, &Remote, &razmak, &HitTime, &kraj);
}


pa ako ne gresim tu, sad cu zakaciti i citav programcic uz poruku, mozda gresim ovdje, znaci

Parser ulas.txt izlaz.sql - treba od one gore txt linije stvori sql upit, ali ...


#include <music.h>
#include <beer.h>
#include <girls.h>
main(){ run(partytime);}
---------
Moj licni sajt
Moj wap sajt--offline
Prikačeni fajlovi
 
Odgovor na temu

milos23
matf
bgd

Član broj: 16989
Poruke: 118
195.252.87.*

Sajt: www.autoshowserbia.info


Profil

icon Re: Moj prvi pretrazivac, Google crno ti se pise06.10.2004. u 12:03 - pre 160 meseci
pa gresis ovde jer ne znash kako se koriste scanf i printf (i njihovi parnjaci sa f)

kad ucitavash u stringovne promenljive ne treba ti & jer je samo ime stringovne promenljive pokazivach na memorijsku adresu, a printf nikad ne koristis sa & i to ti je to..........plus mislim da fscanf ne mozes da testirash na EOF vec pitaj dok je vece od 0 jer on vraca broj argumenata koji je prepoznao
 
Odgovor na temu

milos23
matf
bgd

Član broj: 16989
Poruke: 118
195.252.87.*

Sajt: www.autoshowserbia.info


Profil

icon Re: Moj prvi pretrazivac, Google crno ti se pise06.10.2004. u 12:05 - pre 160 meseci
eh da i sta ti je razmak? valjda treba da koristis izmedju navodnika \t ili sta ti vec treba a ne da definishesh promenljivu koja ce nesto tako sadrzati
 
Odgovor na temu

u_m
Urukalo Milan
PH

Član broj: 18631
Poruke: 889
*.wireless.org.yu

ICQ: 32554731
Sajt: milan.urukalo.com


Profil

icon Re: Moj prvi pretrazivac, Google crno ti se pise06.10.2004. u 18:17 - pre 160 meseci

Taj gornji kod je bio poslje vise pokusaja, pa sam zbog toga ubacio & , jer nije ni bez njih radilo, bio je problem u deklarisanju promjenjivih
A i u \t i da a pokazuje koliko promjenjivih je ucitano

Code:

        char ActualURL[300],RequestedURL[300], Referer[300], UA[200], Remote[100], HitTime[20];
               a=fscanf (ulaz, "%s\t%s\t%s\t%s\t%s\t%s",ActualURL, RequestedURL, Referer, UA, Remote, HitTime);
                       printf ("%d%s%s%s%s%s%s%s%s%s%s%s%s%s",a,insert, ActualURL, razmak, RequestedURL, razmak, Referer, razmak, UA, razmak, Remote, razmak, HitTime, kraj);


Samo sad se pojavio novi problem, UA treba sadrzi i znakove razmaka, a fscanf automatski "sjece" na njima, kako da mu kazem da "sjece" samo na \t


#include <music.h>
#include <beer.h>
#include <girls.h>
main(){ run(partytime);}
---------
Moj licni sajt
Moj wap sajt--offline
 
Odgovor na temu

u_m
Urukalo Milan
PH

Član broj: 18631
Poruke: 889
*.wireless.org.yu

ICQ: 32554731
Sajt: milan.urukalo.com


Profil

icon Re: Moj prvi pretrazivac, Google crno ti se pise06.10.2004. u 19:26 - pre 160 meseci
mislim da ce ovdje ipak morati ona procedura gore da se implementira, od fscanf nema nista
a za malo da prodje, samo da ne , kako rekoh , "sjece" i na space -ovima , jer ovako ispisuje dosta dobro, ali kako ne znam koliko polje UA ima djelova razdvojenih space-om ne vredi

aj da probam shvatiti onu gore proceduru ili da smislim nesto slicno sam, mislim da imam bolju ideju, evo hint koji imam na umu:

n=1, m=1
citam znak po znak, sacuvavam ga u niz[m][n] i kad naletim na \t n++, a ako naletim na \n n=0 , m++

ima li ovo smisla?

pogotovo ako se zna da je ulazni fajl velicine 3MB texta, da li da koristim dinamicku memoriju
#include <music.h>
#include <beer.h>
#include <girls.h>
main(){ run(partytime);}
---------
Moj licni sajt
Moj wap sajt--offline
 
Odgovor na temu

[es] :: C/C++ programiranje :: Moj prvi pretrazivac, Google crno ti se pise

[ Pregleda: 3030 | Odgovora: 17 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.