Jump to content

mrgrj

Active Members
  • Posts

    1425
  • Joined

  • Last visited

  • Days Won

    47

Everything posted by mrgrj

  1. Cateva sugestii, majoritatea PEP8 related: - constantele ar trebui sa fie UPPERCASEd: (e.g: targetRadius ar trebui redenumit ca TARGET_RADIUS) - ar trebui sa lasi doua linii noi intre functiile din afara unei clase sau intre functii si clase Asta: .. particleColor = sf.Color(255, 255, 255, 50) def distance(x1, y1, x2, y2): """ Calculate the distance from 2 points. (X1, Y1) and (X2, Y2) Formula: ( (X1-X2)**2 + (Y1-Y2)**2 )**1/2 """ return math.sqrt((x1 - x2)**2 + (y1 - y2)**2) class DNA(): ... Ar trebui sa arate asa: .. particleColor = sf.Color(255, 255, 255, 50) def distance(x1, y1, x2, y2): """ Calculate the distance from 2 points. (X1, Y1) and (X2, Y2) Formula: ( (X1-X2)**2 + (Y1-Y2)**2 )**1/2. """ return math.sqrt((x1 - x2)**2 + (y1 - y2)**2) class DNA(): ... - denumirea variabilelor tre' sa fie snake_cased (la fel si numele metodelor): e.g: def applyForce -> def apply_force etc - cand iterezi printr-o lista, si ai nevoie si de index si de valoare, e recomandat sa faci asa: lista_mea = ['malai', 'faina', 'pui', 'clatite'] for i, value in enumerate(lista_mea): print(i, value) """ output: (0, 'malai') (1, 'faina') (2, 'pui') (3, 'clatite') """ - cand creezi o clasa care nu are nici-un argument poti renunta la paranteze: class DNA() -> class DNA: - urmatoarea functie: def crossover(self, partner): """ Take the genes from 2 parents and create 1 offspring """ newDNA = [] # Pick one random point from the genes randomPoint = random.randint(0, len(self.genes)) for x in range(len(self.genes)): if x < randomPoint: newDNA.append(self.genes[x]) else: newDNA.append(partner.genes[x]) return DNA(newDNA) Poate fi rescrisa cu recomandarea de mai sus si folosind list comprehensions astfel: def crossover(self, partner): """ Take the genes from 2 parents and create 1 offspring. """ random_point = random.randint(0, len(self.genes)) new_dna = [ value if i < random_point else partner.genes[i] for i, value in enumerate(self.genes) ] return DNA(new_dna) Probabil ca se pot face mai multe schimbari insa nu am timp sa ma uit peste tot codu'. Felicitari oricum pentru efort si keep it goin'
  2. Da-mi skype pe PM si te ajut eu in Py
  3. Ia d-aici Silvache: https://def.camp/venue/ -> http://goo.gl/maps/Z8I34 -> Calea Rahovei 198A, București
  4. Datorita eforturilor depuse de @SilenTx0 @sleed @QuoVadis , pwnthecode (varianta beta) este aproape gata. Ca orice platforma care se afla in beta, avem nevoie de cateva persoane care sa testeze aplicatia. Eventualele buguri, greseli, etc pe care le gasiti, o sa va rog sa mi le trimiteti mie, sau unuia din cei trei useri mentionati mai sus, prin PM (daca iese treaba si exista un numar rezonabil de testeri, probabil ca se va creea un canal pe Slack in care vom discuta tot ceea ce se gaseste in neregula pe platforma). NU postati problemele gasite aici pentru ca vor fi sterse! De asemenea, cei interesati de testare, va rog sa cereti link-ul catre aplicatie tot prin PM. Pwp & Multumim anticipat!
  5. Nu exista Windows custom bun si eficient. Exista laptop bun (cu resurse decente) sau prost. E simplu, dai un ban in plus si rulezi orice.
  6. Hello, In Python, it's really easy to work with API calls using the requests module. To install it, just do: pip install requests Unfortunately, depending on your version, the API is largely SOAP based. The simplest way to consume VMWare's API is via one of the existing SDKs. Now, moving further and looking at a newer version of VMWare docs, we can see that there's an already developed module to interfere with it named pyvmomi. You can follow the instructions from the github to set everything up. If you follow carefully those steps you will find this https://github.com/vmware/pyvmomi-community-samples/blob/master/samples/ which contains tons of examples. Now, literally speaking, if you specifically need to play a bit with requests, you can do the following: 1. Import the needed modules 2. Make GET requests 3. Process the data 4. POST processed data 1. Import the needed modules import requests 2. Make GET requests GET_URL = 'https://httpbin.org/get' POST_URL = 'https://httpbin.org/post' data = requests.get(GET_URL).json() # this will be a json data structure containing the data you need The output of the above is: {'args': {}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Connection': 'close', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.18.1'}, 'origin': '86.120.146.226', 'url': 'https://httpbin.org/get'} 3. Process the data Let's suppose you want to modify the origin value into something else: data['origin'] = 'something else' 4. POST processed data r = requests.post(POST_URL, data=data) print(r.text) Now, the output of the above will be: { "args": {}, "data": "", "files": {}, "form": { "headers": [ "Accept", "Accept-Encoding", "Connection", "Host", "User-Agent" ], "origin": "something else", "url": "https://httpbin.org/get" }, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Connection": "close", "Content-Length": "147", "Content-Type": "application/x-www-form-urlencoded", "Host": "httpbin.org", "User-Agent": "python-requests/2.18.1" }, "json": null, "origin": "86.120.146.226", "url": "https://httpbin.org/post" } Now, regarding your unicode issue, the error was raised because the data is a unicode/str variable, which means that you first have to make it a JSON object (which is basically a dict). In my example, you can see that I already called .json() which makes sure the data is a JSON object. But, if the returned data is a string, you won't be able to do that. To do that, you can use the json module: import json data = json.loads(data)
  7. In principiu: - tu, ca developer care descarca un package, trebuie sa faci audit (sau sa pui pe altcineva sa faca asta daca folosesti modulul in ceva critical environment / production). - toate package-urile PyPi au semnaturi md5 atasate (unele au chiar si PGP). Cu md5 se verifica integritatea, iar cu PGP integritatea + originea. (asa ca e recomandat sa se descarce package-urile care au md5 + PGP). Acum intrebarea fireasca: pot sa fie PyPi signatures trusted ? Pai, pot fi trusted la fel de mult ca oricare alta semnatura Am vazut ca se practiva mentinerea unui repo PyPi intern. Avantaje: - verificare mai buna - fiabilitate mai buna + viteza (daca serverul oficial PyPi pica, te doare la banana) - eviti problemele cu updateurile / package-urile inlocuite bla bla
  8. Nice challenge si mersi de urari @Silviu Frumoasa postare (si fain challenge @Usr6)
  9. Da, momentan pwn este aproape finalizat si testat de noi ( @SilenTx0 inca lucreaza la ceva tutoriale). Peste putin timp o sa puteti sa accesati versiunea beta.
  10. Da, si wallet-urile alea iti vin si cu masina, o pizda de 18 ani si o casa.
  11. Pana la urma am ajuns la urmatorul model care pare sa isi indeplineasca scopu': { "endpoint": "rfc", "filter_by": ["change_ref", "change_i"], "limit_results_to": "2", "expression": { "item1": { "field": "first_name", "operator": "EQ", "value": "O'Neil" }, "operator": "AND", "item2": { "item1": { "field": "last_name", "operator": "NEQ", "value": "Smith" }, "operator": "AND", "item2": { "item1": { "field": "middle_name", "operator": "EQ", "value": "Sam" }, "operator": "OR", "item2": { "field": "middle_name", "operator": "EQ", "value": "Sam" } (...) } } } } Mersi all pentru recomandari
  12. Well, in principiu userul ar trebui sa poata sa aleaga intre cele doua variante. Asta e si problema mea, daca stai si iei fiecare edge case... o iei razna.
  13. Nu, utilizatorul va avea o lista de operatori disponibili. Probabil ca cei de mai jos: LOGICAL_OPERATORS = { 'AND': 'AND', 'OR': 'OR' } COMPARISON_OPERATORS = { 'LT': '<', 'GT': '>', 'LTE': '<=', 'GTE': '>=', 'EQ': '=', 'NEQ': '!=', 'CONTAINS': 'LIKE %{}%', 'STARTSWITH': 'LIKE {}%', 'ENDSWITH': 'LIKE %{}', 'NCONTAINS': 'NOT LIKE %{}%', 'NSTARTSWITH': 'NOT LIKE {}%', 'NENDSWITH': 'NOT LIKE %{}' } Nu vor exista JOIN-uri etc, pentru ca fiecare endpoint corespunde unui singur view din DB, deci toate datele is deja acolo.
  14. Bun, de cateva zile ma chinui sa construiesc o schema JSON decenta, pentru ca mai tarziu sa o pot manipula cat mai usor posibil. Scenario: User-ul va face un POST request cu un JSON care va arata de cele ai multe ori, asa: { "endpoint": "ep", "expression": { "field": "first_name", "operator": "EQUALS", "value": "Jack" }, "query_limit": "2" } Acum, in principiu, `endpoint` si `query_limit` vor fi mereu stringuri. Partea unde am eu probleme este `expression`. Exemplul de expresie de mai jos este minimal dar de ajuns pentru a explica ceea ce vreau sa fac. Acea expresie va face parte din clauza WHERE dintr-un query MSSQL. Spre exemplu, cea de mai sus va deveni: SELECT * FROM table WHERE first_name='Jack'; E de la sine inteles ca va exista o mapare intre operatorii din JSON si cei din MSSQL. In python, maparea aia se va face prin doua dictionare simple: LOGICAL_OPERATORS = { 'AND': 'AND', 'OR': 'OR' } COMPARISON_OPERATORS = { 'LT': '<', 'GT': '>', 'LTE': '<=', 'GTE': '>=', 'EQ': '=', 'NEQ': '!=' } The problem: Acum, partea la care intampin probleme este aceea de a dezvolta mai departe acel expression din JSON, astfel incat va putea suporta query-uri mult mai complexe. Vreau sa incerc sa acopar cat mai multe scenarii, asa ca am nevoie de o schema cat mai bine pusa la punct. Un exemplu: 1. Userul doreste ca `first_name` sa fie 'Jack' SI `last_name` sa fie 'Lola'. In cazul acela, JSON-ul ar putea sa arate asa: { "endpoint": "rfc", "expression": { "AND": [ { "field": "first_name", "operator": "EQUALS", "value": "Jack" }, { "field": "last_name", "operator": "EQUALS", "value": "Lola" } ] }, "limit": "2" } Exemplul de mai sus, va fi transformat intr-un SQL care va fi de forma: SELECT * FROM table WHERE first_name='Jack' AND last_name='Lola'; User-ul doreste ca `age` sa fie mai mic decat 17 SAU `age` mai mare decat 10 SI `first_name` sa fie 'Dick'. SQL-ul pentru descrierea de mai sus va fi de forma: SELECT * FROM table WHERE age > 10 OR age < 17 AND first_name='Jack'; Ceva idei pentru cum ar trebui sa arate JSON-ul in acest caz? Ceva care sa fie usor de adaptat pentru cazuri si mai complexe (va trebui sa generalizez toata treaba pentru ca asa cum stim toti care lucram in industria IT, userul e foarte inventiv cand vine vorba de edge cases). Thanks!
  15. Iti recomand https://codereview.stackexchange.com/ daca nu primesti nici-o parere p-aici
  16. Tu ai prea mult timp liber pentru ca , comentezi aiurea. Programarea nu se limiteaza la: "ce face ala si nu face alalalt?". O fi parerea ta, da' e proasta (IMHO, desigur). Taci acolo si vezi de treaba ta si joaca-te cu `aircrack-ng` daca nu poti sa accepti faptul ca unii oameni vor continua sa programeze ce vrea pula lor chiar daca 20 inaintea lor au facut fix acelasi lucru. Nu-mi bat capu' la ora asta mai mult. Meh, depinde de nivelul la care esti M-am uitat acum ceva ani pe sursa aia si...era cam haos asa cred ca ala o fost momentu' in care am zis: "bag pula-n el C, ma duc sa invat si altceva". Pentru cei interesati, sursa e aici
  17. Salut Radu, Desigur, te ajutam cu placere daca ne raspunzi la urmatoarele intrebari: - ce e aia flood? - ce e aia domeniu DDoS? - care este diferenta dintre cei doi termeni de mai sus? - ce vrei sa faci mai exact? - de ce vrei sa faci asta? - esti metinar? - crezi ca rezolvi ceva facand asta? Uite, din partea celor care inteleg divinitatea absoluta si astralul concurential: .-. .-. |U| | | | | | | | | | | _| |_ _| |_ | | | |-. | |_| |-. /| ` | / )| |_|_| | | | | |-' `-^-' | | | || | \ / \ ' / | | | | | | | | Cu stima, eu
  18. Salut si bine ai venit! Asteptam cateva tutoriale / postari cu ceea ce ai invatat / dezvoltat tu de-a lungul anilor si crezi ca ar fi util pentru acest forum.
  19. Hai sa iti povestesc ceva, poate o sa te opresti cu postarile astea. Am apreciat in multe din postarile tale trecute (legate de programare in general) ca incercai. Pula mea, nu iesea ceva, postai aici. Parea ca o sa ajungi undeva si ca o iei pe un drum okay. Acum daca ma uit in istoricu' postarilor tale, ai asa (ordine aleatoare): - fitness - PPI (sau cum pula mea se cheama cacatu' ala cu click-uri) - stomatologie - off-shores / dropshipping - forex - contabilitate - site de iteme cs-go - etc... Toate cele de mai sus intr-un interval super scurt. Acu' na, nu e nevoie sa ma asculti, majoritatea de aici stiu ca fac multa caterinca, stiu ca sunt un retardat, handicapat, prost si ca ma doare-n pula de absolut orice exista pe planeta asta in special tigani, biserica si politica. Unde vreau sa ajung cu asta? Cois, treziti-va "an" pula mea! Terminati cu forex / ppi / fbi / nsa / plm / fmm etc. Sau tineti-va in moloz de una din ele si bagati pana vedeti ca iese banu' sau ca esuati. Mai ales astia care aveti cate ceva la mansarda si puteti sa profitati de pe urma asta. Mi-aduc aminte ca si eu eram asa: - mama ce idee de aplicatie am. Devin milionar. - sa-mi bag pula ce idee mi-a venit, gata rup google apps - bag pula-n ea programare, ma apuc de poker. - ma fac futangiu pe macarale Si am tinut-o asa vreun an ca sa realizez ca eram un lache de doi lei (bine, si acum sunt) care nu facuse nimic, pierdea timpu' in pula cu satelitu' si cam atat. M-am oprit, m-am axat pe progra & stuff si acum ma doare in pula, fac ce-mi place si fac misto cu @fallen_angel @Gecko @badluck @aelius etc... pe chat cat sunt la birou pentru ca totu' mi se pare lejer si usor si fain. Unde sunt trilionarii ? Sunt peste tot man, doar ca ei nu deschid 9 topicuri pe luna, fiecare din ele avand un subiect total diferit. Baga-ti mintile in cap si revin-o in pula mea cu picioarele pe pamant. //PS: e misto sa pui intrebari, sa vrei sa stii chestii s.a.m.d... insa asta o poti face pe chat, in timpu' liber, cand iei o pauza de la ceea ce conteaza cu adevarat. In viata nu le poti avea pe toate //PS2: Pentru cei plictisiti de postarea mea, luati aici:
  20. Am avut si eu interviu la ei chiar luna trecuta pentru pozitie de Senior Python Dev. Testul a fost super asemanator cu al tau (mai putin chestiile legate de security). Doar ca mie mi-au zis ca am trecut si ca vor sa vin la "proba practica". Proba practica = sa stau juma' de zi acolo sa vada cum m-as descurca intr-o zi de munca. Am zis pas Posibil sa ma fi chemat la proba aia ca sa justifice suma pe care o cerusem. Sunt sigur ca daca ceream mai putin nu mai exista o astfel de proba.
  21. Asta e doar parerea ta. Si a mea, sincer sa fiu. Dar nu a celor de la HR. Vezi tu, daca totul era roz, era plina lumea de entuziasti plini de vise...
  22. Pe mine ma doare la maciuca de aceasta stire. Oricum se mai modifica de 5 ori pana in 2018, so who gives a fuck ?
  23. Nu ai putut posta la categoria respectiva dintr-un anumit motiv. Ce te face sa crezi ca cineva iti va muta garbage-postul acolo ? Citeste regulamentul
  24. Ma dor coaiele sincer la cati pumni am dat. Mai ales cand am prieteni p-acolo si vad ce bine le merge (la facultate // munca etc). PWP
  25. Daca era sa cauti putin, vedeai ca `mysql_fetch_array` returneaza urmatoru' rand din rezultat. D-aia la tine Vasile e pe primu' loc. Sterge requ' randu' al treilea: $row=mysqli_fetch_array($res);
×
×
  • Create New...