Jump to content

MrGrj

Active Members
  • Posts

    1414
  • Joined

  • Last visited

  • Days Won

    44

Posts posted by MrGrj

  1. 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();
            }
        }
    }

     

    • Like 1
    • Upvote 1
  2. 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:

    33 minutes ago, 0xStrait said:

    pt. ca daca as renunta brusc si m-as angaja altundeva mi-ar afecta cumva imaginea.

    ... 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. 

    • Upvote 1
  3. 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

    • Upvote 5
  4. 1 hour ago, Wav3 said:

    Ai depus efort mai mult de 5 secunde ca sa numeri cuvintele.

    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 :( 

  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

    • Thanks 1
    • Upvote 1
  6. 58 minutes ago, Che said:

    Cum faci atunci cand conexiunea ramane blocata? Adica internet este, ping catre google este dar conexiunea yfinance ramane blocat pur si simplu fara sa arate vreo eroare, fara nimic, doar astepti sa ia rezultatele si astepti si tot astepti dar nu se mai intampla nimic fiindca conexiunea este cumva inghetata.

    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.

    • Thanks 1
    • Upvote 2
  8. 6 hours ago, turcul said:

    Deci sa presupunem ca pot infesta 150-500 de calculatoare cu un botnet cu scopul de a mina pentru mine crypto.

    Se merita efortul avand in vedere ca tintele vor fi calculatoare  home pcuri?Cat cam pot castiga din 100 de calculatoare infectate? Si cam cat timp pana sa astept sa vina sa ma ia ? 

    Administrez un server de L2 , pentru a accesa servarul si nevoie de un patch care il iei de pe  site-ul servarului , patchul a fost downloadat de peste 500 persoane diferite si intreb informativ , daca este cineva sa ma lamureasca si pe mine multumesc anticipat

    E simplu:

     

    mqdefault.jpg

    • Haha 1
  9. 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.

     

    • Upvote 4
×
×
  • Create New...