Upotrebljivost (usability) programa

Skraćena veza: http://pedja.supurovic.net/veza/5592

Neretko, srećem programe koji imaju vrednu funkcionalnost ali imaju problem sa upotrebljivošću jer u toku razvoja nije dovoljno pažnje usmereno na to da se korisničko okruženje programa prilagodi korisnicima. Pri tom, ne mislim na grafički izgled programa nego na njegovu upotrebljivost.

Upotrebljivost se, u najkraćem, ogleda u lakoći učenja i korišćenja programa.

Da bi program bio upotrebljiv, neophodno je prilagoditi njegovo korisničko okruženje očekivanjima i potrebama korisnika. Cilj je da se postigne radno okruženje koje korisnik lako razume, prihvata i efikasno koristi tako da mu upotreba programa predstavlja zadovoljstvo.

Ne treba zaboraviti da većina korisnika računarskih programa nisu poznavaoci računara. […]
[ ... vidi ceo članak ... ]

C# .NET – Definicija Master – Detail veze dve tabele

Skraćena veza: http://pedja.supurovic.net/veza/5353

Podešavanje prikaza master/detail vezu dve tabele u .NET nije baš očigledno nekome ko je navikao na neku drugu platformu. Zato, evo kratkog primera kako to podesiti :

//
//
// kreiraj dataset
ds = new DataSet();

//
//
// kreiraj master tabelu
DataTable dtMaster = new DataTable();
dtMaster.Columns.Add ("id_master", typeof (string));
dtMaster.Columns.Add ("description", typeof (string));

//
//
// napuni je podacima
dtMaster.Rows.Add ("1", "prvi");
dtMaster.Rows.Add ("2", "drugi");
dtMaster.Rows.Add ("3", "treci");
dtMaster.Rows.Add ("4", "cetvrti");

//
//
// podesi primarni kljuc
DataColumn[] MasterPrimaryKeyColumns = new DataColumn[1];
MasterPrimaryKeyColumns[0] = dtMaster.Columns["id_master"];
dtMaster.PrimaryKey = MasterPrimaryKeyColumns;

//
//
// dodaj tabelu u DataSet
ds.Tables.Add (dtMaster);

//
//
// kreiraj detail tabelu
DataTable dtDetail = new DataTable();
dtDetail.Columns.Add("id_detail", typeof(string));
dtDetail.Columns.Add("description", typeof(string));
dtDetail.Columns.Add("id_master", typeof(string));

//
//
// napuni je podacima
dtDetail.Rows.Add("1", "1-1", "1");
dtDetail.Rows.Add("2", "1-2", "1");
dtDetail.Rows.Add("3", "2-3", "2");
dtDetail.Rows.Add("4", "3-4", "3");
dtDetail.Rows.Add("5", "3-5", "3");
dtDetail.Rows.Add("6", "3-6", "3");
dtDetail.Rows.Add("7", "3-7", "3");
dtDetail.Rows.Add("8", "4-8", "4");
dtDetail.Rows.Add("9", "4-9", "4");
dtDetail.Rows.Add("10", "4-10", "4");

//
//
// podesi primarni kljuc
DataColumn[] DetailPrimaryKeyColumns = new DataColumn[1];
DetailPrimaryKeyColumns[0] = dtMaster.Columns["id_detail"];
dtMaster.PrimaryKey = DetailPrimaryKeyColumns;

//
//
// dodaj tabelu u DataSet
ds.Tables.Add(dtDetail);

//
//
// podesi relaciju izmedju tabela i nju dodaj u DataSet
DataRelation drMasterDetail = new DataRelation("fk_master_detail",
dtMaster.Columns["id_master"],
dtDetail.Columns["id_master"]);
ds.Relations.Add(drMasterDetail);

//
//
// kreiraj BindingSource za Master tabelu
BindingSource bsMaster = new BindingSource();
bsMaster.DataSource = dtMaster;

//
//
// BindingSource za Detail tabelu se vezuje za
// BindingSource Master tabele, a kao DataMebmer
// se navodi naziv relacije Master/Detail
BindingSource bsDetail = new BindingSource();
bsDetail.DataSource = bsMaster;
bsDetail.DataMember = "fk_master_detail";

//
//
// povezi BindingSource za odgovarajuce gridove na formi
dgMaster.DataSource = bsMaster;
dgDetail.DataSource = bsDetail;

Da biste isprobali ovaj kod, umetnite ga u konstruktor forme ili u Load() događaj a na formu postavite dva grida dgMaster i dgDetail. […]
[ ... vidi ceo članak ... ]

BAT skript za brzi bekap

Skraćena veza: http://pedja.supurovic.net/veza/5259

Pravljenje rezervnih kopija koda na kome radim mi je uvek pravilo glavobolju. Ma koliko da je to neophodno, redovno mi se dešava da napravim kopiju u nekom bitnom momentu.

Nakon poslednje komplikacije koju sam imao zato što nisam imao odgovarajuću kopiju, odlučio sam da se tim pitanjem malo ozbiljnije pozabavim. Probao sam nekoliko programa za tu namenu, i uglavnom zaključio da to meni ne radi posao.

Glavni problem je što treba da se setim da pokrenem postupak kopiranja, a zatim i da to zaista i učinim, pokretanjem odgovarajućeg programa.

Pošto, doduše malo neobično za današnje vreme, najviše vremena i dalje radim u komandnom prozoru (da, na Windows-u) , čak i kada radim na veb projektima, smislio sam prilično brzo i efikasno rešenje. […]
[ ... vidi ceo članak ... ]

C# .NET – ComboBox Lookup from Detail Table

Skraćena veza: http://pedja.supurovic.net/veza/5252

Ovo moram da zabeležim, jer mi je neverovatno da sam potrošio sate i sate da bih iskopao kako da napravim tako prostu i banalnu stvar.

Imate tabele MasterTable i DetailTable. Tabela MasterTable ima polje detail_id preko koga je povezano sa tabelom DetailTable. Tabela DetailTable ima samo dva polja: detail_id i description.

Hoćete na masci da imate ComboBox koji će prikazati listu vrednosti iz tabele DetailTable tako što će prikazati vrednosti polja description a kada se izabere određena vrednost u MasterTable.detail_id upisati vrednost polja DetailTable.detail_id.

Ako krenete intuitivno sigurno nećete nigde stići. Dokumentacija na Majkrosoft sajtu je bedna i neupotrebljiva, a ako pokušate da na Internetu nađete neki primer kako ovo podesiti naići ćete samo na polovične primere koji ne rade. […]
[ ... vidi ceo članak ... ]