Dobry den, zaujimalo by ma, ked mam vytvoreny nejaky software, ako ho mozem dalej sirit?
Aby som obmedzil , aby ho niekto iny oznacoval za svoj a pod. zalezitosti. Treba si to niekde na nejakom urade registrovat alebo ?
Samozrejme, siril by som ho z vlastnej stranky.
P.S. som zo slovenska
Příspěvky odeslané z IP adresy 188.167.3.–
Ja som sa tiež raz pýtal niekde , ako uložiť heslo v aplikácii, aby sa nedalo získať...
Bolo mi povedané, že úplne uložiť ho nedokážem , lebo ak niekto veľmi bude chcieť tak ho nájde tak či tak... Preto sa treba zamerať na to, kto bude používať danú aplikáciu? Bežný user alebo profesionálny cracker?
Ja som to vyriešil tak, že som si heslo zakriptoval obyčajnou šifrou uložil do xml súboru. Následne som si uložil heslo od arhcívu do aplikácie (kodu) ako konštantu, použil ju na dvoch miesta (čítaní a zápise) a hotovo.
Stačilo by samozrejme iba decompilovať aplikáciu , nájsť danú konštantu a následne rozbaliť kriptovacim heslo, ale povedz mi koľko bežných user to dokáže? :-)
Samozrejme, nehovorím, že toto je najlepšie riešenie, ale podľa môjho názoru na bežné prevázdkovanie dostatčne bezpečné...
dartanan napsal:
podarilo sa mi uz formular vyplnit, ale neviem ako to cele odslat.
form vyzera takto<form method=post action="" name=form onSubmit="return check();">
...
...
<input type=submit value='Submit'>
cize je to metoda POST ako bolo hore spominane
Moj starší kod vypadal takto:
HtmlElementCollection elements = webBrowser1.Document.GetElementsByTagName("input");
for (int i = 1; i < 4; i++)
{
if (elements[i].Name == "login")
{
elements[i].SetAttribute("value", login);
}
else if (elements[i].Name == "password")
{
elements[i].SetAttribute("value", heslo);
}
else
{//toto nám emuluje click tlačítka
elements[i].InvokeMember("click");
}
}
Pokiaľ ten formulár presne poznáš, tak by to nemal byť problém.
Z documentu webbrowsera si načítaš ElementsByTagName("input") a podľa ich názvu si ošetríš , že ktorému akú hodnotu (Value) nastavíš. Následne si invokneš klik odosielajúceho tlačítka...
Resp. jednoduchšie by bolo, ak sa formulár odosiela cez POST pozrieť adresu odoslaného,a rovno tam napísať údaje aké chceš
zdravím,
mám napísanú knižnicu, ktorá mi sťahuje nejaké info pomocou webClienta a vracia mi nejakú časť z wc.DownloadString.
Zaujímalo by ma, ako by som túto knižnicu prepísal do "asynchroneho modu", to značí že by som použil wc.AsyncDownloadString,
a vrátill hodnotu vo vc.downloaded_completed. Len nejako mi nie je jasné, ako vrátiť túto hodnotu naspať do hlavnej aplikácii.
A dalo by sa aj ukázať nejako pomocou download_progress koľko ešte ostáva?
no, lenže keď Ti vraciaš SelectedIndex, ten Ti vráti vždy hodnotu v ktorom je poradí tá Item (ak nie je vyznačená žiadna tak -1) a táto hodnota vo všeobecnosti nemusí byť totožná s ID (napr. už si jendu item zmazal, tak všetky po nej budú posunuté)
Prípadne si s databázy vytvoriť nejaký List<cust>, kde inicializovať aj id, ale zobrazovať len ostatné údaje, potom tento List prechádzať vypisovať do listboxu, následne získavať selectedindex, tento index použiť na list a získaš conkrétného cust, následne si už len získaš id z toho customera a to už vymažeš
kebyže vraciaš si "listbox.SelectedItem"
tú si získaš, rozdelíš si string jeho pomenovania, podľa String.LastIndexOf('-')
tým získaš ID usera, ktorého chceš zmazať a násldne už len pošleš do metódy toto (za predpokladu že zmazať funguje samozrejme...)
Ešte treba ošetriť či máš vôbec vybratä nejakú item, a či ich nie je viac(ak to nechceš povoliť)
takže urobil som si to pekne po starom so "Stopwatch" :)
výsledky ak by niekoho zaujímali mi zatial boli takéto (ale skúsim to ešte na vačšom počte)
najviac sa oplatilo dať do dvoch LIST<string> z toho xelements a následne tieto dva listy dat Intersect.
Zaujímavé je, že AsParallel() mi to len zhoršilo , takže klasické linq :)
zdravím,
(tento víkend konečne voľno tak konečne mám čas si dorobiť jeden program, takže mám ďalšiu otázku:))
Mám 2 .XML súbory a potrebujem porovnať, že ktoré z elementov "ID" v druhom súbore, sanachádza v elementoch "ID" prvého súboru.
Ale môžeme to zjednodušiť na porovnanie dvoch List<string> práca s tými .xml by nemal byť problém, vybrať .Element.value...
Takže mám 2 List<string> ako získam stringy, ktoré sú v oboch najefektívnejšie?
použiť:
-list1.Intersect(list2)
-GroupBy
-prechádzať list2 a potom select from list1.where(...)
Prípadne je aj nejaký iný spôsob?
Jedná sa mi o to, aby to bolo čo najefektívnejšie, tie .xml súbormi sú dosť dlhé
keď to spustím .AsAsynchonous bude to efektívnejšie (samozrejme nezáleží mi na poradí vrátenia tých opakovaných)?
Vopred díky za rady
zdravím,
zaujíma ma skôr estetická ako funkčná otázka. Mám napísanú jendu .DLL, a tú mám pridanú k svojmu hlavnému projektu. všetko funguje ako má, .dll sa mi nakopíruje pri debugovaní do zložky kde je main.exe
Ale nedá sa niekde nastaviť, aby toto moje.DLL bolo umiestnenene tam kde je main.exe/myLib/moja.dll
prosto ako do podlzložky...
Ako vravím je to skôr estetické hľadisko, ale aby to bežného usera pri otvorení zložky nemýlilo.
Vopred díky za rady
pardon páni, bol som "ponáhľaný" na prednášku, zabudol som na kód, dám len podstatnú časť:
public List<Searchresult> SearchResultByName(string pName)
{
link = "";
XML = "";
link = LinkFormatter.SearchByName(pName);
List<Searchresult> searchReslt = new List<Searchresult>();
try
{
XML = myWClient.DownloadString(link); //toto je webclient na downlaod stringu
searchReslt = myXMLExtracter.SearchResultExtract(XML); //spraucje stiahnuté xml a vyextrahuje z neho čo potrebujem
return searchReslt;
}
catch (Exception ex)
{
log.ErrorWrite(ex, folderOrg.LogFolder()); //ulozi mi exception do .txt súboru, toto mi funguje bez problemov
throw;
//A tu miesto toho aby som mal "throw", by som chcel vypnúť aplikáciu a zobraziť správu aby mi poslal mailom súbor,
//ktorý je vytvorený tým log.ErrorWrite
}
}
pokiaľ myslíš pod tým listom "List<myClass>",
tak by som skúsil pridať vlastnosť typu bool s nazvom "MamDieta", a tú pri vložení nejakej podstránky by som dal true, a ak už je true a pridáš dalšiu stránku, tak to ignoruješ. Ak nemá podstránku, tak defaultne by bola na false.
Pri prechádzaní listu by som následne, vždy začal "writestartElement", následne skontroloval v if vlastnost maDieta, a ak ma, vlozil by som ho. Pravdepodobne by si to mal robiť rekurznivne s parametrom , ktory by indikoval, na ktorej urovni vnorenia si, a tym menil nazov elementu.
stačí ak dáš preč ten DoWhile cyklus, tým načítaš len jeden element verb.
Následne do tlačítka "dalšie" alebo kam by si to chcel umiestniť po vyvovalní dáš kod:
najdite_lekce.Movetonext();
string engword = Najdite_lekce.GetAttribute("en", "");
string czword = Najdite_lekce.GetAttribute("cz","");
cz.Text = czword;
en.Text = engword;
cz_en.Text += engword + czword +"\r\n";
samoyrejme XPathNavigator Najdite_lekce = null; musis dat na uroven form...
Ja by som to spravil tak, že prvé slovo by som vždy načítal s cm_changed event, tam by si použil movetoFirst
A následne po kliknutí na tlačítko "dalšie", dáš:
if(hladana.MoveToNext()) //ak existuje
{
tak ju spracuj
}
else
{
messagebox.show("koniec lekcie");
}
P.S. premenn[ hladana treba dat na úroveň form, aby bola všade prístupná
zdravím,
snažil som sa naštudovať niečo o týchto event delegates, ako som tak dočítal, tak vlastne to sa uplatnuje aj pri stlačení tlačítka a ostatných eventoch.
Len plne nechápem ako sa to deje.
Napr.
Mám triedu zakazník, a triedu zákazníci. Pridal osm do triedy zákaznic event Muj100Zakaznik delegate, zaregistroval som mu metodu (ktorá mi to vypíše do nejakého logu, alebo zobrazí messageBox).
Ale nechápem, ako mám tej event vytvoriť "telo" alebo niečo, že prosto, nech sa udeje vtedy, keď dosiahne hodnotu 100, alebo jej násobok.
Viem si to predstaviť riešiť pri každom pridaní pomocou vlastnosti COUNT, ale ide mi o pochopenie týchto eventov, či vôbec na to slúžia, resp. ako ich možno využiť.
Vopred ďakujem za vyvsvetlenie, a ak máte niekde nejaký starší projekt, ktorým ste sa to učili bol by som vďačný :)
miesto cyklu ktorý Ti vybere všetko:
do
{
string engword = hladana.GetAttribute("en", "");
string czword = hladana.GetAttribute("cz","");
textBox1.Text += engword + czword +"\r\n";
}
while(hladana.MoveToNext());
urob napr. po "stlačení tlačítka ďalšie":
hladana.MoveToNext() //tu treba ošetrovať, či je to prvé, vtedy použiť movetoFirst, toto použiť pri dalšom
string engword = hladana.GetAttribute("en", "");
string czword = hladana.GetAttribute("cz","");
textBox1.Text += engword + czword +"\r\n";
no tak takto sa spýtam:
vložil si do toho xml súboru tento atribute a je to integer do hlavného root elemenut, ako ukazuje ukážka "môjho xml súboru" , pár príspevkov vyššie
string lekciaPosledna = navigator.GetAttribute("poslednalekcia", "");
no ten "do" cyklus prechádza každý element elementu "lekcia"
a tá chyba vypadá ako chyba pri zadávaní lekcie a jej konvertovaní zo stringu do int. Dávaš tam dobré číslo? pošlem Ti moje solution z VS, ktoré mi beží?
Predpokladám že to robí na tomto riadku:
comboBox1.SelectedIndex = Int32.Parse(lekciaPosledna)-1;
XML:
<?xml version="1.0" encoding="utf-8"?>
<slovicka poslednalekcia="2">
<lekce id="1">
<verb cz="Ahoj" en="Hello" />
<verb cz="Pes" en="Dog" />
</lekce>
<lekce id="2">
<verb cz="Pivo" en="Beer" />
</lekce>
</slovicka>
kod formy:
XPathNavigator navigator = null;
private void Form1_Load(object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(Application.StartupPath + @"/file.xml");
navigator = doc.CreateNavigator();
navigator.MoveToRoot();
navigator.MoveToFirstChild(); //da nas na root
string lekciaPosledna = navigator.GetAttribute("poslednalekcia", "");
navigator.MoveToFirstChild();
do
{
comboBox1.Items.Add(navigator.GetAttribute("id", "")); //druhy parameter je namsespace, ktory nepouzivas
}
while(navigator.MoveToNext());
comboBox1.SelectedIndex = Int32.Parse(lekciaPosledna)-1;
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
navigator.MoveToRoot();
string vybrata = comboBox1.SelectedItem.ToString();
XPathNavigator hladana = navigator.SelectSingleNode(@"slovicka/lekce[@id='" + vybrata + "']");
hladana.MoveToFirstChild();
do
{
string engword = hladana.GetAttribute("en", "");
string czword = hladana.GetAttribute("cz","");
textBox1.Text += engword + czword +"\r\n";
}
while(hladana.MoveToNext());
textBox1.Text+= "\r\n";
}
form obsahuje len combobox s textboxom, žiadne formátovanie kodu ani ošetrovanie výnimiek , to už zvládneš ako to cheš rozdeliť
no vytiahnuť konkrétny element z xml si už ukazoval, takže to čo potrebuješ vytiahnuť budeš vedieť, a tu je kod obsluhy formulara:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 0; i < 10; i++)
{
comboBox1.Items.Add((i*10).ToString()); //samozrejme toto nacitas z xml
}
comboBox1.SelectedIndex = 4; //toto je ta lekcia, cislo 4 nacitas ten novy element co pridas do xml
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
//spusti sa uz pri tom priradeny comboBox1.SelectedIndex = 4 vo form_Load, takze hned zobrazi uvodnu lekciu
string oznacenieLekcie = comboBox1.SelectedItem.ToString();
//spracovanie XML dokumentu, vyberes teda tu cast xml, kde je nasa lekcia
textBox1.Text = oznacenieLekcie; //nazov lekcie v ukazke do textboxu
}
}
kebyže si vložíš ešte do XML položku niečo ako "posledná lekcia", nastavíš ju na poslednú lekciu ktorú robil.
následne po tom prvom for cykle dáš že :
combo.selectedindex = lekciaUlozenaVXML //default si daj 0
a následne zobrazovanie lekcie si daj do combo.SelectedIndexChanged_event
takto by to nešlo?
ja som sa pred minulé prázdniny začal učiť .NET (jazyk C#, bez hocijakého myslenia v OOP) tak zľahka, následne na výške som si zobral kurz JAVA-y, že aké sú tam rozdiely (študujem fyziku...) a JAVA sa mi strašne podobala na C#, prakticky by sa stačilo naučiť používať nie MSDN, ale ich dokumentáciu (extra ma ale java nezaujala, urobil som projekt za víkend a dovidenia, kedže aj na LINUX je už MONO, ak si dobre pamatám názov)
WPF, s tým som začal pred 2 týždnami tak intenzívnejšie, jazyk XAML nie je až taký tažký, aj keď zatiaľ toho veľa nespravím... (kedže je založený na XML), podstatné je len pochopiť Data Binding, a následne programy ako Expression Blend (prípadne. expression desing, ktorý Ti urobí xaml kod z hocičoho) sú extrémne mocné, pokiaľ Vás kód ako taký netrápi.
Celé VS10 je vytvorené vo WPF, a myslím si, že nie je pomalé.
Ale zdôraznujem, som rekreačný programátor :), toto je len moj názor
Pokiaľ sa prihlasuješ pomocou webBroseru, on si automaticky vytvorí vo svojej zložke cookie a zachováva si ju a následne v tom istom webbrosery s nou pracuje (pokiaľ ju server nezruší)
ja som to riešil takto na jednej stránke:
private void Form_Load(object sender, EventArgs e)
{
webBrowser1.Navigate(adresa);
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(PrihlasPoNacitani);
}
void PrihlasPoNacitani(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser1.DocumentCompleted -= PrihlasPoNacitani;
HtmlElementCollection elements = webBrowser1.Document.GetElementsByTagName("input");
foreach (HtmlElement element in elements)
{
if (element.Name == "username")
{
element.SetAttribute("value", meno);
}
if (element.Name == "password")
{
element.SetAttribute("value", heslo);
}
if (element.Name == "login")
{
element.InvokeMember("click");
}
}
}
následne cookie si to pamatalo až kým som sa neodhlásil. Samozrejme webBrowser bežal na pozadí stále ako invisible.
Možno je aj lepšie riešenie, ale toto mi fungovalo už dlhú dobu
Nájdi si pozíciu "backslash", ktorá je posledná, čiže použi While cyklus s iteračnou premenou a jednou "dočasnou", pokiaľ sa tam bude vyskytovať, tak dočasná je rovná iteračnej, a pokiaľ nie, tak ukončí cyklus.
Následne použi methodu Substring(int StartPosition)
nakoniec sa mi na to podarilo prísť, pre info:
Run r = new Run();
r.Text = "Toto je zaciatok ";
r.FontStyle = FontStyles.Italic;
r.FontFamily = new FontFamily("Georgia");
r.FontSize = 24;
r.Foreground = new SolidColorBrush(Colors.Magenta);
textik.Inlines.Add(r);
textik.Inlines.Add("toto je koniec, stylu, ktory ma samotny textblock");
zdravím,
vytváram si jednu app vo wpf, kvôli TextBlock-u, a chcel by som aby každý riadok prvé 3 písmená mali červené pozadie, a následne ostatné klasické čierne.
(niečo ako TV-program v novinách)
Text ktorý tam má byť nepoznám pri spustení app, je generovaný až následne.
Je mi v skutku jasné, ako by som to napísal do XAML, ale neviem ako pridať do textBlocku taký riadok v kode (cez C#).
Môžete ma nasmerovať, ktorým smerom postupovať? (prípadne ukážku)
Vopred díky
Zdravím,
dal som si tento semester predmet od informatikov, a celkovo to je v pohode, len čo ma trápi je bezpečnosť. Ako úvod do týcho technologíí nám am veľa o bezpečnosti nevravia, skôr len "aby to šlo".
Ale zaujímalo by ma, kde sú najvačšie zraniteľnosti týcho systémov?
Čo si mám konkrétne predstaviť pod php injection? Poprosím konkrétny príklad :)
Tak isto aj na sql injection poprosím konkrétny príklad...
A ako najlepšie sa im brániť?
Možno začiatočnícke otázky, ale radšej takto a mať "istotu" ako to naštudovať zle a následne niečo pokašlať...
P.S. do google viem naťukať tiež, ale zaujímali by ma skôr príklady z praxe, s ktorými sste sa "najlepšie" stretli