Jump to content

MrGrj

Active Members
  • Posts

    1414
  • Joined

  • Last visited

  • Days Won

    44

Everything posted by MrGrj

  1. Summary: se fura mult, se face putin si se face si prost. Pe bani imprumutati
  2. using System; using System.Diagnostics; using System.IO; using System.Windows.Forms; namespace MyNamespace { public partial class MyForm : Form { private Process cmdProcess; public MyForm() { InitializeComponent(); InitializeCmd(); } private void InitializeCmd() { cmdProcess = new Process(); cmdProcess.StartInfo.FileName = "cmd.exe"; cmdProcess.StartInfo.CreateNoWindow = true; cmdProcess.StartInfo.UseShellExecute = false; cmdProcess.StartInfo.RedirectStandardInput = true; cmdProcess.StartInfo.RedirectStandardOutput = true; cmdProcess.StartInfo.RedirectStandardError = true; // ascunde bara de titlu si butoanele cmdProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; cmdProcess.Start(); StreamWriter cmdStreamWriter = cmdProcess.StandardInput; StreamReader cmdStreamReader = cmdProcess.StandardOutput; StreamReader cmdErrorReader = cmdProcess.StandardError; // adaugă controlul la form TextBox cmdControl = new TextBox(); cmdControl.Multiline = true; cmdControl.Dock = DockStyle.Fill; cmdControl.ScrollBars = ScrollBars.Vertical; cmdControl.Font = new System.Drawing.Font("Courier New", 10); Controls.Add(cmdControl); // afișează output-ul din terminal în control cmdStreamReader.BaseStream.BeginRead(new byte[1], 0, 0, null, null); cmdStreamReader.DataReceived += (s, e) => { if (!string.IsNullOrEmpty(e.Data)) { cmdControl.Invoke(new Action(() => { cmdControl.AppendText(e.Data + Environment.NewLine); })); } }; // citește input de la utilizator și trimite la terminal cmdControl.KeyDown += (s, e) => { if (e.KeyCode == Keys.Enter) { cmdStreamWriter.WriteLine(cmdControl.Text); cmdControl.Clear(); } }; // afișează erorile în consolă cmdErrorReader.BaseStream.BeginRead(new byte[1], 0, 0, null, null); cmdErrorReader.DataReceived += (s, e) => { if (!string.IsNullOrEmpty(e.Data)) { Debug.WriteLine(e.Data); } }; } private void MyForm_FormClosing(object sender, FormClosingEventArgs e) { cmdProcess?.Kill(); } } }
  3. Ai niste credit moca si la cate cutremure avem noi pot sa consider ca merge for life Trimit mesaj doar cand e unu' cu magnitudine mare deci nu prea e stres.
  4. Am facut si eu un script acum ceva timp (updated recently), in Python, care ia info de pe http://alerta.infp.ro/ (polling de 1s) si trimite mesaj via Twillio daca un cutremur are magnitudinea mai mare de un threshold custom (default 4). Rulat in background cu `nohup` merge decent. Link: https://github.com/mr-grj/eq_notifier
  5. requests.get("rstforumzz/user/jsprq").find_location().cplm_o_fi_facut_si_asta().hai_sa_l_arestam_just_in_case()
  6. Raspunsul e foarte simplu: pare ca ai ajuns intr-un mediu toxic de care trebuie sa scapi cat mai repede. Cu cat stai mai mult cu atat vei deveni mai frustrat si te vei consuma pentru astfel de nimicuri. Cat despre ce ziceai tu cu: ... nu cred ca e cazul sa iti faci griji. Poate era o problema acum 10 ani inainte sa explodeze piata IT. In ziua de azi, angajatorilor le trebuie oameni si nu prea le mai pasa cat ai stat prin companii. Cu atat mai mult cu cat ai avut un motiv intemeiat sa pleci.
  7. Da-le celor de la antidrog sa le foloseasca
  8. Cred ca asta e mot-a-mot cu ce ai tu acolo desi b-ul ala nush de ce nu e float: #include <iostream> #include <cmath> using namespace std; int main() { int n, a, b; cout << "n = "; cin >> n; a = 1; b = 1; while (a*a + b*b <= n) { if (a*a + b*b == n) { cout << "a = "; cin >> a; cout << "b = "; cin >> b; } a += 1; b = sqrt(n - a*a); } cout << "a = " << a << endl; cout << "b = " << b << endl; return 0; } // LE. Sunt platit foarte bine ca sa ajut lumea la teme. That could be you Learn and you'll get rich
  9. https://github.com/RunaCapital/awesome-oss-alternatives
  10. len("Acum cativa ani cand umblam pe aici era o activitate mare acum este intr-un punct mai greu, ma gandesc ca sa formam echipe mici sa revitalizam comunitatea dinou , 3 membri bunicei evident si cineva din staff de aici sa ne ocupam sa facem un grup puternic pe facebook Romanian Security Team unde acolo se creste foarte usor si foarte repede grupul. Sunt multi pasionati de informatica , iar pagina rst sa se ocupe alti 3 membri pentru revitalizare , trebuie sa cautam sa fim undeva in pas cu modul de expunere a comunitati cu timpul , parerea mea ca daca ne facem echipe de cate 3 , 3 pe un grup care garantat in 1 luna 2 face sigur 10.000 membri o spun din proprie experienta ca am crescut grup in scurt timp la 11.000 iar apoi 3 se ocupa de pagina rst acolo nu este munca multa doar daca se posteaza odata pe zi din 3 insi cate 1 post de fiecare in tema informatica plus noutatile in tehnologie etc iar avem de castigat ,iar unul pasionat de informatica din grup de aici care este pasionat si de tik tok poate face un cont de tik tok gen Rst, si tot asa pe diferite retele mai vechi si mai noi iar toate sa duca la acest forum , sursa mama si tata unde cine vor pe celelalte comunitati ale noastre sa dezvolte proiecte sa se inscrie aici si de aici facut un chat frumos unde sa dezbatem fel si fel de teme, vreau pareri si opinii".split()) Aproximativ 5 secunde, da, ca se incarca greu zsh. Se pare ca am gresit: sunt 258. Prima fraza am omis-o & inclus-o in count
  11. Inainte de asta (MRRST - Marea Revitalizare RST), eu sunt uimit ca ai reusit sa faci o fraza de 282 cuvinte fara sa pui un punct. Mai mai sa raman fara aer cand am citit ce-ai scris.
  12. E pa bune ma sunat pa mn Iohannis si a anceput sa planga k are nevoie da oameni am zis da ca nu puteam sa zic nu ca daca ziceam nu era diferit de da si trebuia sa fie da deci am zis da
  13. Da, e adevarat. Ca daca era fals era fals da' nu e fals e adevarat
  14. @Byte-ul la ce versiune ti-or ajuns Coaili?
  15. 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>
  16. 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)
  17. 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
  18. 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.
  19. 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.
  20. Partikip sambata viitoare daca face @Silviu cinste. Veniti bre? @Silviu, @endemic, @Byte-ul, @QuoVadis, etc
  21. E prea mult cod? Sunt doua linii Mai ai `xml` lib care e usor de folosit (etree).
  22. Daca ai luat din response, posteaza si response.headers ca sa vedem daca se poate face ceva
  23. 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
  24. 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.
×
×
  • Create New...