September 1, 2007 at 10:52
· Filed under De prin lume adunate, Free Software, Software
Sau continuarea epopeei istorice ei contra noi (nu open-source vs. Microsoft, ci spammeri contra restul lumii).
Cautand pe net o solutie la cele 1500 de mesaje spam care mi-au invadat contul de mail cat timp am fost prin concediu, am gasit o modalitate de a instala Spamassassin sa mearga cu Microsoft Exchange. Procedura e relativ simpla - de notat ca n-am incercat combinatia de spamc/spamd, respectiv nu ruleaza spamassassin ca daemon (service), ci se lanseaza ca si proces separat pentru fiecare email primit.
Aveti nevoie de:
SpamAssassin (cum se instaleaza, aici. Sariti peste pasul 2 si 3). Downloadati de aici (wiki-ul ala e cam varza).
Christopher Lewis’ ESA Sink.
Culmea e ca si merge
Permalink
August 12, 2007 at 21:01
· Filed under .NET, Fotografii, Free Software, Software
Daca vreti un substitut de Photoshop in aproximativ 1.3 MB, incercati aici: www.getpaint.net . Am uitat sa mentionez ca e gratis ?
Facilitati, tutoriale, plugin-uri.
Permalink
March 20, 2007 at 23:57
· Filed under Software
… updated, puteti descarca de aici : http://www.netimage.ro/
Permalink
March 10, 2007 at 22:26
· Filed under Software
Foarte cool: All Programs / Accessories / Snipping Tool. Adio Ctrl-Print Screen, paste in Paint(.NET).
Permalink
March 8, 2007 at 0:40
· Filed under .NET
Probabil cei care programeaza in .NET forms de ceva vreme se lovesc frecvent de problema invocarii unei metode a unui control, dintr-un thread altul decat cel care este owner-ul controlului. Nu intru in detaliile problemei, care coboara destul de jos la cozi de mesaje per thread, handle-uri windows si altele;
Solutia cel mai des intalnita este: se face un delegate cu semnatura metodei de invocat, se verifica daca este contextul threadului corect cu Control.IsInvokeRequired, si daca nu, atunci se apeleaza metoda prin Control.Invoke, cu delegate-ul definit anterior.
In timp devine “obositor” si mai ales la proiecte mari, definitia cate unui delegate pentru fiecare metoda posibila. O solutie la “oboseala” ar putea fi urmatoarea (mai putin cateva try - catch blocks
:
class CrossThreadHelper
{
private delegate Object CallMethodProxyDelegate(Control ctrl, String strMethod, object[] arguments);
private static Object CallMethodProxy(Control ctrl, String strMethod, object[] arguments)
{
MethodInfo method;
method = ctrl.GetType().GetMethod(strMethod);
return method.Invoke(arguments);
}
public static Object CallMethod(Control ctrl, String strMethod, params object[] arguments)
{
if(ctrl.InvokeRequired)
{
Delegate = new CallMethodProxyDelegate(CallMethodProxy);
Object[] newArgs = new Object[3];
newArgs[0] = ctrl;
newArgs[1] = strMethod;
newArgs[2] = arguments;
return ctrl.Invoke(del, newArgs);
}
return CallMethodProxy(ctrl, strMethod, arguments);
}
}
Exemplu:
CrossThreadHelper.CallMethod(this.frmProgress, “Close”);
Permalink