» »

Izdelava družbenega omrežja

Izdelava družbenega omrežja

GummyBear ::

Zdravo!

Lotil sem se malo večjega projekta, ki ga bom kasneje morda uporabil za kakšno projektno nalogo ali pa še kaj več.... zaenkrat pa le za izobraževalne namene. Potreboval pa bi vaša mnenja in nasvete.

Pa preidimo k bistvu: nameravam izdelati neko mini družbeno omrežje (toliko da preizkusim in izpopolnim svoje znanje) z naslednjimi funkcionalnostmi: urejanje profila, pregled profila drugih uporabnikov, iskanje uporabnikov in dodajanje prijateljev, spreminjanje stanja in všečkanje.... pa morda še kaj več, odvisno kako mi bo šlo. Vse skupaj nameravam narediti z ASP.NET, seveda pa ne gre brez CSS oblikovanja in HTML za kakšne dodatke.

Danes sem naredil prvi korak: prijavni zaslon oziroma obrazec za registracijo. In že so se pojavila prva vprašanja:
1) Podatke bom shranjeval v podatkovni bazi. Geslo bi rad nekako kriptiral, ampak kako? Ali obstaja V ASP/C# kakšen že napisan algoritem/funkcija za kriptiranje in dekriptiranje?
2) Kako shranjevati dolge nize, ki se bodo pogosto spreminjali (na primer: posodobitev stanja, "o meni")? Bi tudi te shranjeval v PB, ali bi za vsakega uporabnika imel še posebno tekstovno datoteko, kjer bi imel potem še dodatne informacije (kot na primer št. všečkov)?

Če se slučajno kdo s podobnimi zadevami ukvarja, bi prosil za par nasvetov ali pa mnenje, da ne bom vse skupaj preveč kompliciral.

Mesar ::

1.) sha1 ... vsej to

2.) Naredi načrt, določi omejitve, ne delat z datotekami tega, če res pričakuješ velik obisk rabiš dobro optimizirano PB, kasneje cache, lahko si le tega omisliš že od začetka. Za dodatek... če bi bil jaz, bi shranjeval vse, za vsako spremembo, ki uporabnik naredi imaš komplet zgodovino za nazaj, datum, ip, vse podatke zabeležene... torej recimo tudi stare zapise "O meni", ki več nebojo nikjer prikazani - le te bi bilo pametno drugače arhivirati, če se nebodo pogosto uporabljali...

Sicer pa če se tega misliš lotit resno ne delat na pamet, ker boš pošteno klel na polovici projekta, ko boš ugotovil, da ga moreš zaradi nečesa polovico popravit.
Your turn to burn!

MrBrdo ::

2) Ne z datotekami :) Za socialna omrežja je v resnici dosti primerna document-orientated podatkovna baza (primer MongoDB, CouchDB). To pomeni da en uporabnik bo v bazi recimo imel "o meni", en pa ne.

Za framework pa moji kolegi so zadovoljni z MVC3, lahko ga poizkusiš.
MrBrdo

GummyBear ::

Najprej hvala za informacije. Vse sem si lepo načečkal na A4 kako naj bi stvari izgledale in potem začel z izdelavo. Zdaj imam narejeno stran za prijavo / registracijo, ki po videzu rahlo spominja na Facebook.

Uporabnik ob registraciji vpiše samo pomembne informacije, ki jih kasneje ne bo mogoče spremeniti: ime, priimek, uporabniško ime, datum rojstva in e-pošta za upravljanje z računom. Ostalim podatkom določim privzete vrednosti in jih bo uporabnik lahko spremenil/nastavil ko ustvari profil.

Pojavil pa se je nov problem - profilna slika. Ena od možnosti je, da vnaprej pripravim nekaj slik in uporabnik izbira samo med temi. S tem sem sicer rešil problem, a rad bi naredil boljše, in sicer tako, da bo uporabnik lahko uploadal svojo sliko. Predviden scenarij je takšen:
- uporabnik iz svojega računalnika uploada neko slikovno datoteko (ki ima poljubno ime)
- ko je slika uploadana jo preimenujem tako da dobi username uporabnika
- sliko prikažem na zaslonu (točno vem katero - tisto ki ima enako ime, kot je uporabniško ime uporabnika)

Teoretično bi moralo delat, ne vem pa če je optimalna rešitev, saj lahko uporabnik uploada zelo veliko datoteko, kar vpliva na velikost celotnega sistema. Pa tudi veliko datotek bi blo na disku. Kako bi vi izpeljali tale del?

MisterR ::

Jaz imam profile narejene po mapah

ID( to je ID uporabnika v bazi)
glavna_slika (v tej mapi je glavna - prikazna slika)
slike (slike, ki jih je uporabnik naložil + kreirani albumi)
video (enako kot zgoraj, pač video)
ostalo (enako kot zgoraj, vse ostalo)

Nisem pa nikoli testiral optimalnosti takega sistema, ker pač dostopaš direktno do datotečnega sistema in ne v bazo. Mogoče je že kdo kaj takega testiral in lahko poda rezultate.

error7891 ::

Če imaš za vsakega uporabnika svojo mapo, potem imaš lahko samo toliko uporabnikov, kolikor map dopušča datotečni sistem v eni mapi.
Nekaj podatkov:
ext2: 32768
ext3: 31998
ext4: 64000

Ampak verjetno ko boš to presegel boš itak že imel bolj zoptimizirano stran.

MrBrdo ::

Sicer zanimiv podatek, samo očitno rešitev ni tako slaba, ker sem opazil da je podoben default v dveh najbolj popularnih rešitvah za uploadanje slik v Rails frameworku. Seveda se ga da spremenit, ampak default pa je :)

GummyBear: problem s prevelikimi slikami enostavno rešiš tako da sliko po uploadu resizaš z ImageMagick in zbrišeš original. ali pa uporabiš javascript resizer da se slika resiza še preden jo uporabik pošlje na strežnik http://www.plupload.com/ nekaj podobnega ima tudi facebook
MrBrdo

Zgodovina sprememb…

  • spremenilo: MrBrdo ()

Mesar ::

jaz bi slike zakodiral v base64 pa rabil na stringe po 10 znakov, pa vse skupaj shranil v mysql bazo.

Pri izpisu pa lepo nazaj sestavljaš.
Your turn to burn!

Zgodovina sprememb…

  • spremenil: Mesar ()

MisterR ::

Ampak lahko vse slike zakodiraš v base64?

MrBrdo ::

MrBrdo

Zgodovina sprememb…

  • spremenilo: MrBrdo ()

Mesar ::

Ni ni tako si lahko vse skupaj exporta v več sql filov pa hrani po diskih.
Your turn to burn!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Šifriranje podatkov v bazi

Oddelek: Programiranje
123254 (2880) SeMiNeSanja
»

Izdelava svojega "dropboxa"

Oddelek: Izdelava spletišč
344726 (3203) techfreak :)
»

php - galerija slik

Oddelek: Izdelava spletišč
142014 (1742) t3hn0
»

Zasebnost na Facebooku se krči

Oddelek: Novice / Zasebnost
3310023 (8376) nodrim
»

Maco se igra (strani: 1 2 3 4 5 6 )

Oddelek: Izdelava spletišč
26125122 (14828) MaCoFaCo

Več podobnih tem