.NET

Regex kérdés (nagyon kezdő)

Fórumok

Sziasztok,

Elég kezdő vagyok regex téren, ugyhogy a következő kérdés lehet ,hogy triviális sok embernek :)

Adott egy sztring : A1234@2@2

Az "A" betű és az első @ karakter közötti karaktersorozat kellene nekem regex segitségével.
A @ karakterek száma a sztringben változó, ahogy a kivánt karaktersorozat hossza is.
Tehát A1@2 és A123543254@23@2356@234@23 is lehetséges mint bejövő sztring.

A következő regex kifejezést próbáltam:
(?'elso'A)(?'masodik'.*)(?'harmadik'@.*)

Nekem a "masodik" csoportben levő eredmény kell nyilvánvalóan.

A fenti kifejezésre ezt kapom:

elso: A
masodik: 1233@2
harmadik: @2

FIXME, de a regex kiértékelés balról jobbra halad. Én azt vártam, hogy az első @ és minden további karakter a harmadik csoportba kerül.

Tuti elnézek valamit, de nem tudok rájönni.
Próbáltam lookahead segitségével is igy:

(?'elso'A)(?'masodik'.*(?=(@.*)))(?'harmadik'@.*)

De ugyanazt az eredményt kapom...

please help...

NoSQL és .NET / NoSQL és MS-SQL tapasztalatok

Fórumok

Sziasztok!

Van bárkinek lényegi, valós tapasztalata NoSQL és .NET / NoSQL - MSSQL viszonylatban?

Adva van egy kellően komplex üzleti alkalmazás: sokrétegű (3 réteg + köztes rétegek), amit a közeljövőben ültetünk NoSQL környezetbe (bekerül +1 réteg a gyakran használt üzleti objektumok tárolására, hogy az adatbázist meg se szólítsa a szoftver ha kliens felőli kérés érkezik).

Van aki már használt NoSQL-t .NET-tel? Tapasztalatok?

(Fontos - NEM Google-keresések eredményeire vagyunk kíváncsiak, azt már megtettük, utána olvastunk, elvégeztük a házi feladatot, sőt, saját elképzelésünk is van, de nem szeretnénk ezzel senkit befolyásolni:))

CzP

System.Windows.Forms.WebBrowser proxy használat registry nélkül

Fórumok

Üdv!

System.Windows.Forms.WebBrowser komponenssel szeretnék proxyt használni, de nem a registryben beállítottakat. A Firefox és más hagyományos böngészőknek marad a proxy nélküli élet az adott számítógépen, csak az általam készített böngészőben kell proxybeállítás.

Tud valaki erre megoldást?

.Net keretrendszerrel gyártott programok jogállása -- licencek

Fórumok

Licenccel kapcsolatos kérdésem lenne.

Windowsos ember megveszi WinXP-ét letölti rá a pl. a Framework 3.5-öt.
Írja vele a saját programját jegyzettömbben. Parancssorban lefordítja
a programját. Csinál a programjának weboldalt, árulja azt jó pénzért.
Ez törvényes? Vagyis elég ha WinXP licencem van?

Vagy ugyanaz Win7-el? Abban benne van valamelyik framwork alapból.
A fentiktől eltérően neki nem kell letölteni. Törvényesen gyárt
programokat?

Vagy letölti a Visual Studiót. Azt hiszem Edition változat tölthető le.
Gondolom azzal addig törvényes, amíg nem adja el. Igaz?

c# tömb vagy lista küldése szálak között

Fórumok

Holnapra meg kellene csinálnom a c# gui részéből a beadandómat. Egy kis "feladatkezelőn" dolgozok, lényeg az, hogy lekéri a folyamatlistát egy timer segítségével, ami egy backgroundworker-t indít 2 másodpercenként. Az egész majd egy ListView-ben jelenne meg, ami több oszlopot tartalmaz. Mivel ez egy másik szálon fut, így nem férek hozzá az eredeti szálban található ListView-hez. Google segítségével megtudtam, hogy delegátum segítségével szépen lehet szálak között üzenni. Két problémába ütköztem.

  • Ha a tömb minden elemét külön külön küldöm el egy ListViewItem subitemjei segítségével, akkor nagyon belassul, mindig ugyanazt küldözgeti. Vagy 3 különbözőt, de nem azt amit belepakoltam. Pl mindig a második elemmel kezdi.
  • Ha tömböt, ha listát szeretnék átadni neki mindig dob egy kivételt, miszerint túl sok a paraméter neki.

Kód idevágó része:


        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcesses();
            SetTextCallback d = new SetTextCallback(SetText);
                                  
            this.Invoke(d, p);
        }

        public delegate void SetTextCallback(System.Diagnostics.Process[] items);

        private void SetText(System.Diagnostics.Process[] items)
        {
            ListViewItem list = new ListViewItem();
            
            foreach (System.Diagnostics.Process p in items)
            {
                list.SubItems[0].Text = p.Id.ToString();
                listView1.Items.Add(list);//itt már csak próbának, hogymegjelenik-e
            }
        }

Egyébként valószínűleg én vagyok a hülye, tudom. Gondolom 2-5 sorból meg lehetne oldani.

C# gond: form grafika refresh után gond van

Fórumok

Hali!
Nem tudom, tud-e valaki segiteni. Szigorlat beugron akadok el. Tavaly ez miatt kivagtak, de azota sem tudom a megoldast....

formra kirajzoltatni otven db veletlenszeru kort (pontot) es egy teglalapot. Ahany pont a teglalapban van, azt irja ki (es szinezze at).

Namost, nekem _elsore_ mukodik, viszont ha az Ujraindit gombra kattintok, akkor vagy jo eredmenyt ir vagy nem...Egyszeruen keptelen vagyok rajonni, miert csinalja ezt velem. Erzem, hoyg az ActiveForm.Invalidate es ActiveFrom.Refresh lehet a gubanc, de nem tudok rajonni....


public class kor
{
int x;

public int X
{
get { return x; }
set { x = value; }
}
int y;

public int Y
{
get { return y; }
set { y = value; }
}
public kor()
{ }
public kor(int xx, int yy)
{
this.x = xx;
this.y = yy;
}
}


public partial class Form1 : Form
{
Random veletlen = new Random();
Brush ecset = new SolidBrush(Color.Blue);
Brush ecsetzold = new SolidBrush(Color.Green);
Pen cerkazold = new Pen(Color.Green);
kor[] korok = new kor[50];
int db = 0;
public Form1()
{
InitializeComponent();
}

private void panel1_Paint(object sender, PaintEventArgs e)
{
//ActiveForm.Refresh();
//ActiveForm.Invalidate();
db=0;
Graphics grobj = e.Graphics;
Rectangle reglalap = new Rectangle(veletlen.Next(10, 300), veletlen.Next(10, 200), veletlen.Next(10, 300), veletlen.Next(10, 300));
grobj.Clear(Color.White);
for (int i = 0;i <50; i++)
{
korok = new kor();

korok.X = veletlen.Next(300);
korok.Y = veletlen.Next(300);
grobj.FillEllipse(ecset,korok.X,korok.Y,5,5);

}
//int teglalapbfx = veletlen.Next(10,300);
//int teglalapbfy = veletlen.Next(10,300);
//int teglalapjax = veletlen.Next(teglalapbfx + 300);
//int teglalapjay = veletlen.Next(teglalapbfy + 300);

// grobj.DrawRectangle(ecsetzold, teglalapbfx, teglalapbfy, teglalapjax, teglalapjay);
grobj.DrawRectangle(cerkazold, reglalap);

db = 0;
for (int i = 0; i < 50; i++)
{
if ((korok.X > reglalap.X && korok.X < reglalap.X + reglalap.Width) &&
(korok.Y > reglalap.Y && korok.Y < reglalap.Y + reglalap.Height))
{


db++;
grobj.FillEllipse(ecsetzold,korok.X,korok.Y,5,5);


}
label1.Text = db.ToString();




}

}

private void button2_Click(object sender, EventArgs e)
{
ActiveForm.Close();
}

private void button1_Click(object sender, EventArgs e)
{
db = 0;
//ActiveForm.Dispose();
ActiveForm.Invalidate();
ActiveForm.Refresh();
}
}

Megerősítés needed [C#]

Fórumok

Írtam egy active record / ORM rendszert. Ennek a rendszernek - amennyire lehet - függetlennek kell lennie a felhasználótól, viszont sokszor igényel(het) adatbázis kapcsolatot, és nem csak egy helyről. Ha mindenhol új kapcsolatot nyitok, az iszonyatosan sok időbe telhet, ezért elhatároztam, hogy statikus kapcsolatot fogok használni.

A problémám:

Weben minden kérés külön szálon érkezik. Ez persze asztali alkalmazásnál is előfordulhat. Hogy thread safe legyen, azt találtam ki, hogy minden szálhoz rendelek egy kapcsolatot, egy Dictionary<Thread, OdbcConnection> -nel, ami igény esetén - ha még nem létezik a szálhoz kapcsolat - automatán példányosítja és megnyitja azt, majd visszaaadja. Ha már létezik, akkor csak visszaadja. A Thread "azonosítása" a Thread.CurrentThread által történik.

Persze ezt meg is kell semmisíteni minden esetben, erre pedig azt gondoltam ki, hogy csináltam egy osztályt, ami IDisposable, és csak annyit tesz, hogy a Dispose metódusa a statikus, adott szálhoz rendelt adatbáziskapcsolatot Dispose-olja, és kiveszi a Dictionary<Thread, OdbcConnection>-ből.

Ezt utána a következőképpen lehet használni (ha a statikus Osztaly.Kapcsolat egy új példányt ad vissza ebből az IDisposable osztályból):


using(var conn = Osztaly.Kapcsolat)
{
    // ezen a szálon lehet mindenfélét csinálni, lesz hozzá kapcsolat
}
// itt pedig mindenképp meg lesz szüntetve a kapcsolat

Kérdések: helyesen járok-e el? Biztosan biztonságos ez, vagy történhetnek váratlan dolgok? Mennyire antipattern ez a megoldás?

Lokalizáció és a .NET

Fórumok

Üdv!

Adott egy projekt, amit több nylevre kell lefordítani. Visual studio-ból a fordítás persze egyértelmű, viszont nagyon kattintgatós, meg ezt magyarázd el egy fordítónak.

A jelenlegi helyzet az, hogy a fordító a resk fájlokat lefordította ezzel a programmal: http://resxtranslator.codeplex.com/, tehát megvannak a lefordított resx fájlok, de nincsenek benne a projektben. A gond csak az, hogy ha Add existing item-mel nem a formok alá rakja ba a dolgokat, hanem csak a projekt fájljai közé, és így fordítás után nem is jelennek meg a lefordított elemek. Próbáltam már kézzel is satellite assembly-t generálni, de ezzel a módszerrel sem jártam sikerrel.

Van valami tool, amivel be lehet include-olni a projectbe normálisan a fordított resx fájlokat? Esetleg ami létrehozza a projektben a másik nyelvű resx fájlokat az összes formra (tehát nem kézzel), amit aztán felülírnék a lefordítottakkal?

A válaszokat előre is köszi

SSH+SFTP .NET-ből

Fórumok

Adott a feladat. Lehetőleg full .NET-es library kell, amit ráadásul támogatnak is, ssh(1) pipe-olás nem szimpatikus. Az lenne a legjobb, ha azonos sessionből lehetne egyszerre SSH-zni és SFTP-zni is, ha jól sejtem, ez technikailag lehetséges, ha mégsem, akkor whatever. Van ez a Tamir Gal-os SharpSSH, ebben azért nem bízok, mert nagyon régi, valami 15 verzióval régebbi JSch-ra épül. Ezen kívül a net fizetős megoldásokkal van tele. Szóval ki mit használ?

Szálak (C#, WPF)

Fórumok

Összeütöttem egy kis alkalmazást, ami adatokat tölt le kiszolgálókról adott időközönként. Annyit csináltam, hogy Visual Studio-ban indítottam egy új projektet, WPF alkalmazást, berángattam pár elemet ami kell, aztán megírtam a függvényeket. Van egy TextBox, amibe úgymond logol az app, tehát beleírja hogy honnét mit töltött le.

Megcsinálom a kérést:

request = HttpWebRequest.Create(url);
response = request.GetResponse();
sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);

Egyelőre csak bemutató jelleggel készült az alkalmazás egy ötlet prezentálására, semmi mást nem csinál, csak megszámolja a sorokat:


int sorok = 0;
while (!sr.EndOfStream)
{
  sr.ReadLine();
  sorok++;
}

Utána bele akartam írni a TextBox-ba, pl.:

textbox1.Text += "\n" + sorok

, de kiírta hogy másik szálon van a textbox1, mint ahonnan én el akarom érni. Írtam egy delegate-et, és a Dispatcher-rel hívom meg, de én ezt nem értem. Hogy került másik szálra mint ahol én voltam? Találtam ilyet, de sose használtam még szálakat (egyszer-kétszer kipróbáltam Java-ban, de az legalább szándékosan volt, ellentétben a mostani helyzettel), szóval nem értem.

Tehát leginkább az lenne a kérdésem, hogy mit csinált a WPF, vagy a .NET, vagy nem tudom mi, amitől a webes kérések másik szálon indultak? Vagy mi fut most másik szálon, és miért? És miért nem tudok csak úgy beleírni a textbox1-be? Ha csak simán próbálkozok (tehát

textbox1.Text += "hello"

), az működik.