Jump to content

MrGrj

Active Members
  • Posts

    1398
  • Joined

  • Last visited

  • Days Won

    34

Everything posted by MrGrj

  1. Da, e adevarat. Ca daca era fals era fals da' nu e fals e adevarat
  2. @Byte-ul la ce versiune ti-or ajuns Coaili?
  3. Da-mi PM cu: - ce ai nevoie (cu cat mai multe detalii, cu atat mai bine) - care este bugetul si cum ai de gand sa platesti - deadline Nu raspund daca nu oferi toate info de mai sus. Ms PS: <pun>Also, eu lucrez in Python, nu Phyton. Sper sa fie ok</pun>
  4. Here u go: try: # make the request here except requests.Timeout as timeout_err: # handle timeout print(timeout_err) except requests.RequestException as req_err: # handle other errors print(req_err)
  5. M-am uitat la ei pe lib si nu suporta timeout ca parametru. Ca workaround poti face ceva de genu': import requests import yfinance as yf import functools session = requests.Session() session.request = functools.partial(session.request, timeout=30) # replace requests library in yfinance yf.base._requests = session yf.utils._requests = session yf.ticker._requests = session The above should do the trick
  6. Setezi `timeout=<cat_vrei_tu>` pe fiecare request (e.g. `requests.get(url, timeout=10)`), dai retry de 3 ori sau cat vrei si treci mai departe daca resursa respectiva e busita (eventual stochezi in logs ca sa vezi ce se intampla si de ce nu merge). De asemenea, e posibil sa ai ceva antibots mechanism si sa iti dea block pentru cateva secunde/minute/ani etc...caz in care tre' sa folosesti proxies / socks. Uneori merge doar daca pui un mic sleep intre requesturi (e posibil sa le omori serveru') + schimbi User-Agent.
  7. E destul de usor ce vrei tu sa faci si poti combina solutiile de mai sus. Intr-adevar, pentru a fi sigur ca scriptul isi reia treaba de unde a ramas iti trebuie un Queuing mechanism in care sa stochezi statusul si id-ul fiecarui request in parte. Iti va fi usor sa reiei taskurile de unde au ramas. Ca sa rezolvi problemele cu no internet connection, curent nema, apocalipsa etc e ceva mai interesant (intra cumva in categoria de disaster recovery - multa teorie). Dar pe scurt, cu cateva try / except-uri ar trebui sa o rezolvi (e.g. poti face initial un HEAD request catre yfinance + retry de cateva ori in cazul in care requestul faileaza. Daca dupa cateva retry-uri nu primesti nimic de la url-ul respectiv, treci la urmatorul si pui in queue url-ul precedent pentru a-l incerca mai tarziu bla bla e mult de scris). Poti incerca urmatorul stack: - Python (il folosesti deja) - RabbitMQ (message broker) - Ceva DB (ceva cum ar fi Mongo cred ca ar merge perfect din moment ce nu pare ca ai vreo relatie intre datele de care ai nevoie) Ideea generala pentru a scapa de acel "retrieving..." e ca trebuie sa faci mereu sanity request check-uri care sa te asigure ca urmatoarele reqs vor merge. In caz contrar, tratezi acolo ce e de tratat. E.g: try: import httplib except: import http.client as httplib def i_have_internet(): conn = httplib.HTTPConnection("www.google.com", timeout=5) try: conn.request("HEAD", "/") conn.close() return True except: conn.close() return False def main(): if i_have_internet(): # do your stuff (process yfinance bla bla) else: # wait, retry, check internet settings or w/e u want main() Mai sus e un exemplu simplu de check insa tu ar trebui sa tratezi tot ce ai nevoie. Asta se rezolva pe parcurs dupa ce intampini toate problemele.
  8. Partikip sambata viitoare daca face @Silviu cinste. Veniti bre? @Silviu, @endemic, @Byte-ul, @QuoVadis, etc
  9. E prea mult cod? Sunt doua linii Mai ai `xml` lib care e usor de folosit (etree).
  10. Daca ai luat din response, posteaza si response.headers ca sa vedem daca se poate face ceva
  11. MrGrj

    RST CTF #1

    Eu m-as baga sa concurez pentru niste practice. Pot sa fac si donatii pentru premii ca mnah, cine stie, poate-i iau inapoi inmultiti Mai sanatos decat la ruleta
  12. In viata Dumnezeu iti da, da' nu-ti baga si-n gura. Fa si tu ceva research sau pune pe cineva sa iti faca asta contra-cost Nu e ca si cum ai intreba pe cineva: "Cum fac o ciocolata calda" si gata. Tre' sa pui ceva efort in asta. Good luck.
  13. Cadou de Craciun import random import sys import time # generate numbers from 1 to 30 mapped to red color NUMBERS = {number: 'red' for number in list(range(1, 31))} class Colors: """ ANSI color codes. """ # RED is used for all the numbers RED = '\033[91m' # GREEN is used for displaying computer's random # chosen number GREEN = '\033[92m' # BLUE is used for displaying user's chosen # number BLUE = '\033[94m' END = '\033[0m' def assign_color_to_number(number, color): """ Show ANSI colors in terminal for nicer UX. """ if color == 'red': return f'{Colors.RED}{number}{Colors.END}' elif color == 'green': return f'{Colors.GREEN}{number}{Colors.END}' elif color == 'blue': return f'{Colors.BLUE}{number}{Colors.END}' else: return number def print_table(numbers): """ Print a nice table with colorful numbers wrapped at 5. """ print('\n') for number, color in numbers.items(): number = assign_color_to_number(number, color).ljust(12) if number % 5 != 0: print(number, end=' ') else: print(number) print('\n') def countdown(seconds, user_number): """ Let user know how much until the next game. Arguments: seconds (int): How many seconds until next game. user_number (int): User's lucky & chosen number. """ print(f"You chose {user_number}. GOOD LUCK!\n\n") for second in range(seconds, -1, -1): sys.stdout.write( f"\r{second} seconds remaining until one number will change its color to green." ) time.sleep(1) sys.stdout.flush() print('\n') def get_user_number(): """ Sanitize user's input. """ while True: try: value = int(input('Please choose a number between 1 and 30: ')) if 30 < value < 1: print("Please insert a number between 1 and 30!\n") continue return value except ValueError: print("Please insert a number between 1 and 30!\n") continue def play(): print_table(NUMBERS) user_number = get_user_number() countdown(5, user_number) random_number = random.randint(1, 30) if user_number != random_number: NUMBERS.update({random_number: 'green', user_number: 'blue'}) print_table(NUMBERS) print( f'You did not guess the number. Our number was: {random_number} ' f'and yours was: {user_number}.\n\nGOOD LUCK NEXT TIME' ) else: print( 'You guessed it! Congrats! Please fill in the information ' 'below in order to receive your prize.\n\n' ) name = input('Your name: ') age = input('Your age: ') email = input('Your email: ') print(f'Name: {name}\nAge: {age}\nEmail:{email}') # reset our numbers NUMBERS.update({random_number: 'red', user_number: 'red'}) def main(): print('\nWELCOME TO LOTTERY!') while True: play() answer = input('Play again? [Y]es/[N]o: ') if answer.lower() == 'n': break print('\nTHANKS FOR PLAYING!') if __name__ == '__main__': main() Aici ai si link cu codu' si poti sa ii dai un Run de test. Am pus si niste comment-uri in caz ca vrei sa intelegi ce se intampla, desi ma indoiesc. PS: Codu' e scris destul de repede but it does it job chiar daca nu e perfect organizat. Enjoy
  14. Salut, Io n-am inteles nimic din ceea ce vrei. - Care numere sunt verzi si care sunt rosii? - Sunt doua seturi de 30 de numere, un set fiind rosu si altul fiind verde? - Cum determini cand un numar e disponibil? - De unde au aparut campurile alea? Sunt prin Baragan? - Etc. Mersi
  15. Hai sa iti explic putin cum sta treaba daca vrei sa gasesti pe cineva: 1. Descrie asa cum trebuie proiectul. 1.1 Ce fel de interfata? Web / Desktop / Command Line? 1.2 Cum arata excel-ul respectiv? Sunt mai multe sheets? E foarte mare fisierul? 1.3 Cum ai vrea sa arate "interfata" respectiva? 1.4 Ce legatura au PDF-ul si WORD-ul cu excelul? 2. Ce suma oferi pentru cele de mai sus? 2.1 Oferi un avans? 2.2 Garantezi ca vei plati developerul care iti va face acest proiect? 2.3 Daca garantezi, cum o faci? 2.4 Cum vei face plata? Daca oferi aceste detalii iti garantez ca se vor gasi oameni care te vor ajuta. Poate chiar si gratis, pentru portofoliu, daca e ceva rapid
  16. MrGrj

    Salut

    Ia d-aici pentru Python: https://github.com/Nexmo/nexmo-python Mai usor nici ca se poate
  17. Also, din cate stiu eu, pozele sunt stocate in AD (Active Directory). Ca idee, asa ar arata in Powershell: Set-ADUser user_1 -Replace @{thumbnailPhoto=([byte[]](Get-Content "C:\ps\user_1_photo.jpg" -Encoding byte))}
  18. Nu stiu care e parerea celorlalti, dar mie mi se pare incredibil ce faci acolo Ai putea sa explici putin ce se intampla p-acolo si pentru noi astia mai slabuti? Thanks & really impressive work!
  19. Nu ma bag, dar mersi de mention . Dureaza destul de mult sa faci asa ceva si din pacate nu am timp.
  20. Si uite asa mai adaugam un putzache cu mentalitate de "sa fie usor, ceva simplu si flexibil + sa curga banii" in industria IT. Vreti sa fiti manageri sau sa invatati programare "the easy way" insa nu sunteti in stare sa va informati din mii de surse, articole sau carti. /pacat
  21. MrGrj

    pwncat

    Also, gobuster (https://github.com/OJ/gobuster) instead of dirbuster (https://sourceforge.net/projects/dirbuster/files/DirBuster Source/1.0-RC1/)
  22. Mie asa mi se pare. I-ai luat IP-ul? Hai sa vorbim cu tovarasul @QuoVadis de la SRI sa il bage la bulau. Ce zici?
  23. Cel mai probabil sun finantate si sponsorizate de acele firme ca sa gaseasca alea.
×
×
  • Create New...