• Šta je Sqids?

    Sqids je mala open-source biblioteka koja može proizvesti kratke, jedinstvene, nasumične ID-ove iz brojeva.

    Najbolji način razmišljanja je kao o konverteru iz decimalnog u heksadecimalni broj, ali sa nekoliko dodatnih funkcija.

  • Skraćivanje linkova, generisanje jedinstvenih ID-ova događaja za beleženje, generisanje ID-ova za proizvode/objekte na veb-sajtu (kao što YouTube radi za video zapise), generisanje kratkih ID-ova za SMS poruke, kodove za potvrdu u emailovima, itd.

  • Svi podaci koji nisu osetljivi. Generisani ID-ovi nisu heševi i mogu biti dekodirani u brojeve. Na primer, možda nisu dobar izbor za ID-ove korisnika, jer, kada se dekodiraju, mogu otkriti broj korisnika vaše aplikacije.

  • Mogu li enkodirati više brojeva odjednom?

    Da, Sqids može enkodirati jedan ili više ne-negativnih brojeva u jedan ID. Ne postoji ograničenje koliko brojeva možete enkodirati, ali postoji ograničenje koliko veliki broj možete enkodirati (zavisno od programske jezika implementacije).

    Ovo je korisno iz nekoliko razloga: možete enkodirati UNIX vremensku oznaku i kreirati ID-ove koji ističu, ili možete enkodirati broj fragmenta baze podataka zajedno sa primarnim ključem i uštedeti na dodatnim upitima baze podataka.

  • Da li su generisani ID-ovi jedinstveni?

    Da, generisani ID-ovi su jedinstveni za ulazne podatke i abecedu.

    Imajte na umu da podrazumevana abeceda sadrži i velika i mala slova, pa su podrazumevani ID-ovi osetljivi na veličinu slova.

  • Koje su ograničenja Sqids?

    Sqids ne može enkodirati negativne brojeve.

    Minimalna dužina abecede je 3 karaktera.

    Abeceda ne može sadržati višebajtni karaktere.

    Sqids ne može generisati ID-ove do određene dužine, već samo barem određene dužine. Raspon parametra minimalne dužine je između 0 i 255.

    Sqids može pokušati da regeneriše ID-ove do dužine abecede, umanjene za jedan.

  • Kako mogu učiniti svoje ID-ove jedinstvenim?

    Biblioteka prihvata prilagođenu abecedu iz koje može generisati ID-ove. Jednostavno unapred promešajte podrazumevanu abecedu koja je obezbeđena.

    Imajte na umu da uz dovoljno truda, neko može rekonstruisati vašu promešanu abecedu, pa ovo nikako nije tehnika za sakrivanje osetljivih podataka.

  • Kako mogu promešati podrazumevanu abecedu?

    Podrazumevana abeceda se može pronaći ovde .

    Možete koristiti bilo koji od online alata za mešanje stringova ili naš igralište .

  • Da li je bolje koristiti kraću ili dužu abecedu?

    Zavisi od vaše upotrebe. Kraća abeceda će proizvesti duže ID-ove, a duža abeceda će proizvesti kraće ID-ove. Možete koristiti igralište da testirate kako bi vaši ID-ovi mogli izgledati.

  • Može li moja abeceda sadržati samo brojeve?

    Da. Imajte na umu da su generisani ID-ovi i dalje stringovi i da bi mogli početi nulom.

  • Mogu li koristiti emojije kao abecedu?

    Ne. Sqids ne podržava višebajtni karaktere za abecedu. To uključuje i emojije, kao i mnoge druge karaktere.

  • Zašto popunjavati ID-ove?

    Biblioteka može proširiti ID-ove sa beskorisnim karakterima kako bi izgledali duže. Ovo je korisno da ne bi bilo očigledno da li enkodirate mali broj kao što je 1 ili veliki broj kao što je 1000000.

    Dekodiranje nije pogođeno.

  • Mogu li generisani ID-ovi biti duži?

    Da, biblioteka prihvata parametar minimalne dužine koji garantuje da će ID-ovi biti barem te dužine.

    Imajte na umu da nema garancije koliko će dugački biti vaši ID-ovi - samo da neće biti kraći od dužine koju navedete.

  • Mogu li generisani ID-ovi biti određene dužine?

    Do određene granice.

    Postavljanje maksimalne dužine je nemoguće jer će pre ili kasnije vaši ID-ovi premašiti datu dužinu. Zato se podržava samo minimalni parametar dužine, a tačna dužina ili maksimalna dužina nije podržana.

  • Zašto koristiti listu blokiranih reči?

    Lista blokiranih reči može sprečiti pojavljivanje određenih reči u vašim ID-ovima. Ovo je korisno jer su generisani ID-ovi namenjeni da se pojavljuju na javnim mestima, poput URL-a.

    Sqids dolazi sa podrazumevanom listom blokiranih reči koja sadrži osnovne psovke i neprimerene reči iz više jezika. Naravno, možete proširiti tu listu sa svojim rečima.

  • Kako lista blokiranih reči funkcioniše?

    Poređenje reči sa listom blokiranih reči ne zavisi od veličine slova.

    Kratke reči kraće od 3 karaktera neće biti blokirane. Reči od 3 karaktera se moraju tačno podudarati sa ID-ovima. Reči od 4 karaktera ili duže će pokrenuti podudaranje ako su podniska ID-a.

    Ako reči na listi zabrane sadrže brojeve (leetspeak), pokrenuće se samo ako se nalaze na početku ili kraju ID-ja.

  • Koje reči se nalaze na podrazumevanoj listi blokiranih reči?

    Podrazumevana lista zabrane sadrži najčešće psovke i neprimerene reči iz više jezika. Kompletan spisak možete pronaći ovde .

  • Šta se dešava kada su svi ID-ovi blokirani?

    Kada se generisani ID poklopi sa rečju na listi zabrane, biblioteka pokušava da ga ponovo generiše.

    Ako svaki pokušaj da se ponovo generiše ID ne uspe, funkcija enkodiranja će zakažiti i vratiti grešku. Na korisniku je da upravlja tom greškom.

    Najbolji način da se smanji broj pokušaja regeneracije je da imate dužu abecedu, ne postavite minimalnu dužinu i pružite manju listu zabrane. Primenom prazne liste zabrane, ova funkcija će biti potpuno isključena.

  • Kako proveriti da li su ID-ovi validni?

    Dekodiranje ID-ova obično će proizvesti neku vrstu numeričkog izlaza, ali to ne znači nužno da je ID kanonski. Da biste proverili da li je ID validan, možete ponovo enkodirati dekodirane brojeve i proveriti da li se ID poklapa.

    Razlog zbog kojeg ovo nije automatski urađeno je taj da, ako se podrazumevana lista zabrane promeni u budućnosti, ne želimo automatski da ugrozimo ID koji je bio generisan u prošlosti, a možda se sada poklapa sa novom rečju sa liste zabrane.

  • Šta se dešava kada se podrazumevana lista blokiranih reči ažurira?

    Budite sigurni da ćemo ažurirati CHANGELOG ako se i kada podrazumevana lista zabrane promeni.

    Morate uzeti u obzir scenarije u kojima bi nova reč mogla biti uvedena na podrazumevanu listu zabrane. U tom slučaju, ponovno enkodiranje brojeva može proizvesti drugačiji ID.

    Najbolji način da obezbedite doslednost vaših ID-ova kroz buduće ažuriranje je da obezbedite prilagođenu listu zabrane, čak i ako je identična trenutnoj podrazumevanoj listi zabrane.

  • Može li enkodiranje različitih brojeva proizvesti identične ID-ove?

    Ne, enkodiranje različitih brojeva će proizvesti jedinstvene ID-ove.

    Međutim, zbog dizajna algoritma, dekodiranje slučajnih ID-ova ponekad može proizvesti iste brojeve. Najbolji način da proverite da li je ID kanonski je jednostavno ponovno enkodirati dekodirane brojeve i proveriti da li se ID poklapa.

  • Šta je Hashids?

    Hashids je bio prva verzija ove biblioteke koja je izašla oko 2013. godine. Takođe je proizvodila kratke ID-ove, ali koristila je nešto drugačiju metodu.

  • Zašto je Hashids nadograđen u Sqids?

    Hashids je obrađivao neke stvari drugačije.

    Nije podržavala prilagođenu listu zabrane, već se oslanjala na najčešće engleske psovke. Takođe je koristila parametar salt za mešanje abecede, što je malo zbunjujuće jer biblioteka nema veze sa enkripcijom. Dodatno, koristila je previše rezervisanih karaktera što je rezultiralo produkcijom dužih ID-ova.

    Zbog toga smo odlučili da napravimo nadogradnju i rebrandujemo. Algoritam je pojednostavljen, dodate su neke funkcionalnosti i svi kodovi repozitorijuma su sada pod jednim krovom .

  • Zašto je parametar salt uklonjen?

    Parametar salt se koristio za mešanje abecede i nikada nije bio povezan sa bezbednošću ili sigurnošću. I Hashids i Sqids rade slično kao konverzija iz decimalnog u heksadecimalni broj, ali sa nekoliko prilagođavanja. Nema nikakve enkripcije, tako da je taj parametar potpuno uklonjen da bi se izbegla konfuzija.

  • Da li je Hashids kompatibilan sa Sqids?

    Ne, Sqids proširuje funkcionalnosti Hashids-a i ima drugačije ciljeve i zahteve za dizajn, stoga generisani ID-ovi nisu kompatibilni sa Hashids-om.

  • Kako sigurno nadograditi sa Hashids na Sqids?

    Pošto nema kompatibilnosti između Hashids-a i Sqids-a, nemoguće je jednostavno zameniti Hashids sa Sqids-om.

    Međutim, možete spojiti dva tako što ćete razlikovati koji ID pripada kojoj biblioteci.

    Jedan od načina za to je dužina ID-a - ako prelazite na Sqids, možete postaviti višu minimalnu dužinu. Drugi način je ručno dodavanje/uklanjanje prilagođenog karaktera novoprodukovanim ID-ovima.

    Napokon, takođe možete pokušati da dekodirate ID sa Hashids-om da biste videli da li je validan. Ako nije - dekodirajte i ponovo enkodirajte sa Sqids-om da biste videli da li radi.

  • Gde mogu pronaći originalne biblioteke Hashids?

    Svaka implementacija jezika na ovom sajtu linkuje ka originalnom Hashids repozitorijumu ako postoji.

  • Kako mogu doprineti?

    Ako želite da podržite projekat, bili bismo zahvalni ako ozvezdite naše repozitorijume na Github-u za veću vidljivost.

    Ako ste programer i ne vidite implementaciju za određeni jezik, molimo vas da nam pomognete da konvertujemo biblioteku. Isti slučaj važi za programski jezik koji nije naveden.

    Ako primetite grešku u specifikaciji ili bilo kojoj od implementacija, molimo vas da kreirate problem ili zahtev za spajanje sa predloženim popravkom u odgovarajućem repozitorijumu.

    Ako govorite više jezika, mogli bismo koristiti vašu pomoć pri poboljšanju liste zabrane i prilagođavanju prevoda na sajtu ako primetite bilo kakve probleme.

    Na kraju, ako imate iskustva sa Hashids/Sqids, molimo vas da pomognete vođenjem naše zajednice odgovaranjem na bilo kakva pitanja koja neko može imati.

  • Kako preneti Sqids na drugi jezik?

    Ako biste želeli da prenesete Sqids na neki od sledećih jezika (ili novi jezik koji nije naveden ovde):

    ActionScript , D , Elm , Haxe , Io , PostgreSQL , Raku , Smalltalk , T-SQL , Tcl , VBA

    Forkujte zvanični repozitorijum na svoj Github nalog i implementirajte specifikaciju zajedno sa svim testovima. Možete ponovo koristiti bilo koji od postojećih README fajlova (primer ).

    Kada je biblioteka spremna, kreirajte zahtev za spajanje. Nakon spajanja, ažuriraćemo sajt.

    Ako repozitorijum nema aktivne održavaoce, bili bismo srećni da vas pozovemo da upravljate repozitorijumom i postanete zvanični održavalac.