Jump to content

MrGrj

Active Members
  • Posts

    1398
  • Joined

  • Last visited

  • Days Won

    34

MrGrj last won the day on September 13 2021

MrGrj had the most liked content!

Reputation

897 Excellent

About MrGrj

  • Rank
    Smartass developer
    Rookie
  • Birthday 01/01/1990

Profile Information

  • Gender
    Not Telling

Converted

  • Biography
    ┌П┐(◉_◉)┌П┐
  • Location
    ┌П┐(◉_◉)┌П┐
  • Interests
    ┌П┐(◉_◉)┌П┐
  • Occupation
    ┌П┐(◉_◉)┌П┐

Recent Profile Visitors

10130 profile views
  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
×
×
  • Create New...