Jurnal de programator
99,9% Microsoft
Send mail to the author(s)
Home | Mini tools List| Blog carti| ASP.NET MVC ebook| tutorial 3.5| Subscribe by Email | twitter| linkedin | youtube | interviu
Tuesday, June 08, 2010


VS2010 ProPowerTools

De cite ori nu v-a enervat AddReference ?

Pentru VS2010 au reusit sa faca ceva bun :

http://blogs.msdn.com/b/lisa/archive/2010/06/08/visual-studio-2010-pro-power-tools-released-today.aspx

 

si inca ceva :  Colorized Parameter Help  - coloreaza help-ul asa cum e colorat codul

Download aici (free)

http://visualstudiogallery.msdn.microsoft.com/en-us/d0d33361-18e2-46c0-8ff2-4adea1e34fef

tools | vs2010
Tuesday, June 08, 2010 9:09:19 PM (GMT Daylight Time, UTC+01:00)  #    Comments [1]  |  Trackback


Monday, March 15, 2010


My programmer tools in 2009

Tool

Descriere

Link

SharpZipLib Zip fisiere http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx
nunit test http://www.nunit.org/index.php
svn source control http://subversion.apache.org/
hudson continous integration http://hudson-ci.org/
EntityFramework sql server database to .NET code  
filehelpers parsare  csv si altele http://www.filehelpers.com/
log4net logging http://logging.apache.org/log4net/
lumisoft parsare mesaje  email http://www.codeproject.com/KB/vista/SMTP_POP3_IMAP_server.aspx
moq mocking in unit test http://code.google.com/p/moq/
automapper transferarerea obiecteleor intre  dal si bll http://www.codeplex.com/AutoMapper
pagedlist paging in ASP.NET MVC http://pagedlist.codeplex.com/
log4postsharp instrumentarea codului http://code.google.com/p/postsharp-user-plugins/wiki/Log4PostSharp
postsharp vezi log4postsharp http://www.sharpcrafters.com/
webdeployment project deploy web projects http://www.microsoft.com/downloads/details.aspx?FamilyID=0AA30AE8-C73B-4BDD-BB1B-FE697256C459&displaylang=en&displaylang=en
IIS SEO Toolkit verificare SEO http://www.iis.net/expand/SEOToolkit
nbehave testare cu cucvinte http://nbehave.org/
reflector decompilare cod http://www.red-gate.com/products/reflector/
fiddler analiza ajax requests http://www.fiddler2.com/fiddler2
build utilities from apache svn commit if different http://msbuildtasks.tigris.org/
selenium testarea paginilor  web http://seleniumhq.org/
HtmAgilityPack salvarea paginilor web http://htmlagilitypack.codeplex.com/

Utilities

Description

Link

notepad++ notepad http://notepad-plus.sourceforge.net/uk/site.htm
paint editor grafic  
paint.net editor grafic http://www.paint.net/
7zip archivare -dez-archiver http://www.7-zip.org/
sysinternals windows utilities http://technet.microsoft.com/en-us/sysinternals/default.aspx
windows live writer blog http://download.live.com/writer
psr.exe o noua metoda de creare a help  
logparser parsarea fisierelor – output sql http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&displaylang=en
foxitreader pdf reader www.foxitsoftware.com/pdf/reader
yahoo instant messaging www.yahoo.com
skype instant messaging http://www.skype.com/intl/en/
dosbox old games redivivus http://www.dosbox.com/
vlc movie player http://www.videolan.org/vlc/
dvddecrypter and dvdshrink backup filme http://www.mrbass.org/dvdrip/
magicdisk incarcare fisiere iso http://www.magiciso.com/tutorials/miso-magicdisc-overview.htm
freecommander norton commander http://www.freecommander.com/
winmerge compare files / folders http://winmerge.org/downloads/

Firefox addons

https://addons.mozilla.org/en-US/firefox/collection/ignatandrei

firebug  
yahoo slow  
webdeveloper  
weave  
morningcofee  
measureit  
htmlvalidator  
faviconizetab  
exchangebcebnr  
colorzilla  
addoncollector  
googlenotebook  
downloadstatusbar  
goolepagespeed  
tools
Monday, March 15, 2010 3:26:00 AM (GMT Standard Time, UTC+00:00)  #    Comments [0]  |  Trackback


Monday, November 09, 2009


HTML Agility Pack

Cum fac simplu citirea de pagini de pe Web ? Prima varianta este sa incercati cu WebRequest , http://msdn.microsoft.com/en-us/library/system.net.webrequest.aspx . Dar ar trebui sa parsati HTML-ul care NU este XHTML … si imediat va ginditi ca mai sunt sute altii care au aceeasi problema. Asa ca am gasit HTML Agility Pack , http://www.codeplex.com/htmlagilitypack , care stie sa transforme un HTML in XHTML.

Codul pentru incarcarea unei pagini e ridicol de simplu :

HtmlWeb hw = new HtmlWeb();
hw.AutoDetectEncoding = true;
HtmlDocument  doc = hw.Load(Url);
HtmlNode NodeRoot = doc.DocumentNode;

Si de la NodeRoot puteti incepe XPATH cu SelectNodes

.NET | HTML Agility Pack | tools
Monday, November 09, 2009 3:10:00 AM (GMT Standard Time, UTC+00:00)  #    Comments [0]  |  Trackback


Monday, October 26, 2009


JetBrains dot trace 3.1

Am avut ocazia sa am pe mina Dot Trace de la Jet Brains. Si l-am incercat pe o aplicatie Windows, dar unde si-a aratat puterea a fost in aplicatii Web.

Ca sa vezi ce iti ia cel mai mult timp din aplicatie ai putea sa faci asa : dupa ce ai facut un snapshot, apesi pe plain view, dupa care apesi pe filter. Frumos din partea lui ca vine cu citeva definitii deja existente pentru tool-uri pe care nu vrei sa le vezi la inceput :

121106_Filters_active

 

Dar poti sa mai adaugi si tu altele – daca vezi ca obtii in fata alte chestii(MS, log4net) de care vrei sa scapi si esti 99% sigur ca sunt optimizate la greu.

In fine, dupa ce dai OK, poti incepe sa inspectezi codul. Asa am vazut ca, pentru o pagina in care ar fi trebuit chemat “get_LastStep”  de 9 ori , se chema de 18 ori cu un timp total de 11 ms. Concluzia : se impune un cache – macar primitiv!

Ca puncte tari : are export in XML. Dar tare m-ar fi bucurat un export in Excel – sa pot sa fac eu sortare /filtrare si alte chestii…

De avut NEAPARAT!

 

De folosit oricind dupa terminarea unui proiect(atentie : aici se vede cit de bune au fost testele!)

.NET | c# | dot trace | jetbrains | tools
Monday, October 26, 2009 2:19:00 AM (GMT Standard Time, UTC+00:00)  #    Comments [0]  |  Trackback


Monday, September 28, 2009


ASPOSE si Documentele Word

Pentru infovalutar (mai exact, pentru mine …) am vrut sa preiau licitatiile de la banci.

Pentru rezultatul final, vezi http://infovalutar.ro/licitatie

Dar sa vedem care a fost povestea  :am inceput cu preluarea paginilor HTML . Incepusem cu  HttpWebRequest - dar am descoperit la timp HtmlAgilityPack si am ramas credincios lui.

Acum, dupa preluarea paginilor HTML( de ex., http://www.banca-romaneasca.ro/main.php?did=527&code=executare+silita) a fost de ajuns un XPath + expresie regulata de parsare a text-ului din interior.

Ce mi-a produs batai de cap a fost http://vanzari.leumi.ro/bunuri_imobile.html – aveau bunurile in document Word! Ori, ca sa ii ceri celui de la Hosting sa instaleze Word-ul ca sa il instantiezi tu in ASP.NET e aproape imposibil!

Solutia : ASPOSE.WORDS  - citeste documente dintre cele mai diverse si scoate un TXT superb – si asta, fara sa aiba nevoie de WORD instalat(se prea poate sa fi omorit muste cu tunul …)

Ca folosire, trebuia sa ii dau un Stream – dar cind am incercat sa ii dau stream-ul de document, mi-a zis ca nu suporta Seek. Asa incit am rezolvat cu un MemoryStream :

public string LeumiData(string URL)
        {

            byte[] buffer = new byte[1024*1024*4];

            HttpWebRequest hwr = WebRequest.Create(URL) as HttpWebRequest;
            using (WebResponse response = hwr.GetResponse())
            {
                using (Stream responseStream = response.GetResponseStream())
                {
                    using (MemoryStream memoryStream = new MemoryStream())
                    {
                        int count = 0;
                        do
                        {
                            count = responseStream.Read(buffer, 0, buffer.Length);
                            memoryStream.Write(buffer, 0, count);

                        } while (count != 0);

//ASPOSE
                        Document d = new Document(memoryStream);
                        return d.ToTxt();

                    }
                }
            }

        }

Pot sa spun ca ASPOSE, daca vreti manipulare de documente, face toti banii!

.NET | ASP.NET | ASPOSE | programare | tools
Monday, September 28, 2009 2:12:00 AM (GMT Daylight Time, UTC+01:00)  #    Comments [0]  |  Trackback




Structure Map

La ce foloseste StructureMap ? Raspunsul pe scurt  : este un tool simplu de DI

Raspunsul pe lung : in postul precedent, vroiam sa testez un export de fisiere fara sa ating BD.

Initial, codul arata cam asa :

public ActionResult ExportDate(string id)
{

DateExport fe = new DateExport();
fe.id = id;

export exp = new export(Server.MapPath("~/bin/Templates"));

FileContentResult fcr = new FileContentResult(exp.Export(fe), "application/ms-word");
fcr.FileDownloadName = fe.Number + ".doc";

return fcr;

}

unde variabila fe din

DateExport fe = new DateExport();

atingea BD in momentul in care cineva ii cerea niste date.

Vroiam sa o inlocuiesc cu o variabila ce trimite null ca date si apoi cu variabila care trimite niste date fake.

Ca sa fac acest lucru, am extras metodele care ma interesau din DateExport, am facut o interfata din ele IDateExport, am inlocuit vparametrul din functia export ce cerea un DateExport cu IDateExport si am folosit StructureMap :

In global.asax am definit cererea default :

ObjectFactory.Initialize(x =>
            {
                x.ForRequestedType<IDateExport>().TheDefault.Is.ConstructedBy(() => new DateExport(HttpContext.Current.User.Identity.Name));
            });

si apoi in metoda am inlocuit new cu ObjectFactory :

public ActionResult ExportDate(string id)
{

IDateExport fe = ObjectFactory.GetInstance<IDateExport>();
fe.id = id;

export exp = new export(Server.MapPath("~/bin/Templates"));

FileContentResult fcr = new FileContentResult(exp.Export(fe), "application/ms-word");
fcr.FileDownloadName = fe.Number + ".doc";

return fcr;

}

Acum testul automat a devenit floare la ureche – sa zicem ca vreau ca metodele din IDataExport sa nu aduca nimic –si sa testez acest lucru . Creez o clasa DataExportNotFind, implementez IDataExport ca sa nu aduca nimic si scriu in test :

ObjectFactory.Initialize(x =>
{
    x.ForRequestedType<IDataExport>().TheDefaultIsConcreteType<DataExportNotFind>();
});

 

Si asta e tot!

As vrea sa pun accent pe faptul ca , desi testez rapid pe masina proprie facind un fake la BD, totusi, la integrare, ar trebui sa aveti teste cu BLL / UI care sa testeze NEAPARAT cu BD …

.NET | Dependency Injection | Structure Map | testare | tools
Monday, September 28, 2009 2:03:00 AM (GMT Daylight Time, UTC+01:00)  #    Comments [0]  |  Trackback


Monday, September 21, 2009


Rhino Mock

Destul de tirziu mi-am dat seama de beneficiile aduse de un Mock – dar mai bine mai tirziu decit niciodata …

Ma gindeam ca niciodata nu o sa il folosesc – ca ajunge sa verific BLL cu unit test(NUNIT/VS Test) , site-ul Web cu NUnit ASP/WATI(N|R) / Selenium , Windows Forms cu NUnitForms si nu o sa am nevoie de Mock.

Adevarul este ca da, nu as avea nevoie de Mock … decit daca as vrea sa verific mai repede unele date, fara sa ating BD.De exemplu, pot sa verific controller-ele fara sa am nevoie sa instantiez HttpContext si BD. Sa zicem ca am un controller care are o actiune ce doar exporta un fisier Word– bazat pe un template. Codul din fisier  arata cam asa :

public ActionResult ExportDate(string id)
{

IDateExport fe = ObjectFactory.GetInstance<IDateExport>();
fe.id = id;

export exp = new export(Server.MapPath("~/bin/Templates"));

FileContentResult fcr = new FileContentResult(exp.Export(fe), "application/ms-word");
fcr.FileDownloadName = fe.Number + ".doc";

return fcr;

}

Daca as vrea sa verific rapid metoda aceasta ar trebui sa nu ating baza de date si sa am pun un rezultat in loc de Server.MapPath ?

Se vede clar ca deja folosesc StructureMap, deci nu ar fi o problema cu gasitul a niste date fake. Dar pentru Server.MapPath intervine stralucit Mock.

Am preluat de la Hanselmann MVC Mock Helpers ,iar codul de test arata cam asa :

 

exportController i = new exportController();
MockRepository mocks = new MockRepository();
using (mocks.Record())
{
    //MvcMockHelpers.SetFakeControllerContext(mocks, i);
    mocks.SetFakeControllerContext(i);
   SetupResult.For(i.ControllerContext.HttpContext.Server.MapPath(null)).IgnoreArguments().Return(@"c:\programs\templates");      // cod pentru chemarea Server.MapPath          
    mocks.ReplayAll();
}
using (mocks.Playback())
{
    ObjectFactory.Initialize(x =>
    {
        x.ForRequestedType<IExport>().TheDefaultIsConcreteType<FactFind>();// FactFind nu atinge BD
    });
    FileContentResult fcr = i.exportdate("865", "A") as FileContentResult;
    fcr.ShouldNotBeNull();
    fcr.FileContents.Length.ShouldBeGreaterThan(0);//TODO : Verifica si continutul
}

.NET | ASP.NET | Asp.NET MVC | Rhino Mock | testare | tools
Monday, September 21, 2009 1:49:00 AM (GMT Daylight Time, UTC+01:00)  #    Comments [1]  |  Trackback


Monday, August 24, 2009


Issue Tracker

Aveam nevoie de un tracker de issue – pentru ca incepusem sa am prea multe cereri de modificare si nu ma mai descurcam. De fapt, la o a doua vedere, nu erau atit de multe cereri, cit detalii ale lor.

Am cerut pareri pe RONUA – dar ceea ce mi s-a oferit de acolo era pe bani (ma rog, OnTime se pare ca are oferte speciale..). Iar in criza actuala sa cer bani de la servici ca eu nu ma mai descurc suna cam prost…

Dupa ce am citit de mai multe , m-am decis pentru BugTracker.NET. Am avut doua probleme : Integrarea cu Active Directory – din fericire Web.Config este destul de clar scris – si trimiterea emailurilor. Nu vroiam sa configurez SMTP – ci doar sa isi ia setarile din Web.Config de forma:

<system.net>
        <mailSettings>
            <smtp>
                <network host="xxxx" port="25"/>
            </smtp>
        </mailSettings>
    </system.net>

Din nefericire el lucra cu System.Web.Mail – asta pentru ca ,zicea el, noul System.NET.Mail nu suporta SSL.

In fine – nu aveam nevoie de SSL –asa ca am muncit sa il transform – si am modificat pe ici, pe colo, prin partile esentiale email.cs:

/*
Copyright 2002-2008 Corey Trager
Distributed under the terms of the GNU General Public License
*/

using System;
using System.Collections;
using System.IO;
using System.Text;

// disable System.Net.Mail warnings
#pragma warning disable 618

namespace btnet
{

    public class Email {
        ///////////////////////////////////////////////////////////////////////
        public static string send_email( // 5 args
            string to,
            string from,
            string cc,
            string subject,
            string body)
        {
            return send_email(
                to,
                from,
                cc,
                subject,
                body,
                false,
                System.Net.Mail.MailPriority.Normal,
                null,
                false);
        }

        ///////////////////////////////////////////////////////////////////////
        public static string send_email( // 6 args
            string to,
            string from,
            string cc,
            string subject,
            string body,
            bool isbodyhtml)
        {
            return send_email(
                to,
                from,
                cc,
                subject,
                body,
                isbodyhtml,
                System.Net.Mail.MailPriority.Normal,
                null,
                false);
        }

        ///////////////////////////////////////////////////////////////////////
        public static string send_email(
            string to,
            string from,
            string cc,
            string subject,
            string body,
            bool isbodyhtml,
            System.Net.Mail.MailPriority priority,
            int[] attachment_bpids,
            bool return_receipt)
        {
            ArrayList files_to_delete = new ArrayList();
            ArrayList directories_to_delete = new ArrayList();
            System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(from, to);
            if (!string.IsNullOrEmpty(cc.Trim()))
            {
                msg.CC.Add(cc);
            }
            msg.Subject = subject;
            msg.Priority = priority;

            // This fixes a bug for a couple people, but make it configurable, just in case.
            if (Util.get_setting("BodyEncodingUTF8", "1") == "1")
            {
                msg.BodyEncoding = Encoding.UTF8;
            }

            if (return_receipt)
            {
                msg.Headers.Add("Disposition-Notification-To", from);
            }

            // workaround for a bug I don't understand...
            if (Util.get_setting("SmtpForceReplaceOfBareLineFeeds", "0") == "1")
            {
                body = body.Replace("\n", "\r\n");
            }

            msg.Body = body;
            msg.IsBodyHtml = isbodyhtml;

            if (attachment_bpids != null && attachment_bpids.Length > 0)
            {

                string upload_folder =  btnet.Util.get_upload_folder();

                if (string.IsNullOrEmpty(upload_folder))
                {
                    upload_folder = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
                    Directory.CreateDirectory(upload_folder);
                    directories_to_delete.Add(upload_folder);
                }

                foreach (int attachment_bpid in attachment_bpids)
                {
                    byte[] buffer = new byte[16 * 1024];
                    string dest_path_and_filename;
                    Bug.BugPostAttachment bpa = Bug.get_bug_post_attachment(attachment_bpid);
                    using (bpa.content)
                    {
                        dest_path_and_filename = Path.Combine(upload_folder, bpa.file);
                        using (FileStream out_stream = new FileStream(
                            dest_path_and_filename,
                            FileMode.CreateNew,
                            FileAccess.Write,
                            FileShare.None))
                        {
                            int bytes_read =  bpa.content.Read(buffer, 0, buffer.Length);
                            while (bytes_read != 0)
                            {
                                out_stream.Write(buffer, 0, bytes_read);

                                bytes_read = bpa.content.Read(buffer, 0, buffer.Length);
                            }
                        }

                    }

                    System.Net.Mail.Attachment mail_attachment = new System.Net.Mail.Attachment(
                        dest_path_and_filename);
                    msg.Attachments.Add(mail_attachment);
                    files_to_delete.Add(dest_path_and_filename);
                }
            }

            try
            {
                // This fixes a bug for some people.  Not sure how it happens....
                msg.Body = msg.Body.Replace(Convert.ToChar(0), ' ').Trim();
                System.Net.Mail.SmtpClient s=new System.Net.Mail.SmtpClient();
                s.Send(msg);

                // We delete late here because testing showed that SmtpMail class
                // got confused when we deleted too soon.
                if (files_to_delete.Count > 0)
                {
                    foreach (string file in files_to_delete)
                    {
                        File.Delete(file);
                    }
                }

                if (directories_to_delete.Count > 0)
                {
                    foreach (string directory in directories_to_delete)
                    {
                        Directory.Delete(directory);
                    }
                }

                return "";
            }
            catch (Exception e)
            {
                Util.write_to_log("There was a problem sending email.   Check settings in Web.config.");
                Util.write_to_log("TO:" + to);
                Util.write_to_log("FROM:" + from);
                Util.write_to_log("SUBJECT:" + subject);
                Util.write_to_log(e.GetBaseException().Message.ToString());
                return (e.GetBaseException().Message);
            }

        }

    } // end Email

} // end namespace

.NET | BugTracker.NET | tools
Monday, August 24, 2009 2:03:00 AM (GMT Daylight Time, UTC+01:00)  #    Comments [0]  |  Trackback


Monday, August 17, 2009


NCover 2.0

Auzisem de NCover – dar nu avusesem posibilitatea sa il pun la lucru.

De ce vroiam sa il folosesc ? Simplu: aveam teste automate (NUNIT) pentru proiect –unele cu Baza de date, altele fara. Ceea ce vroiam sa aflu este cit de mult acopar din codul sursa – adica cit de mult testele sunt complete.

OK – citind putin a inceput sa devina evident cum sa il folosesc – desi are o curba initiala de invatat de vreo 5 minute(nu e evident)

Primul lucru, daca vreti sa il folositi cu NUnit, este sa incercati sa rulati proiectul NUnit din consola, ceva de genul

nunit-console “<fisier.nunit>" 

( daca vreti, puteti continua linia cu  /include=categorii_de_teste )

Daca a rulat OK ( adica fara erori… ) acum putem configura NCover . Porniti NCover Explorer, apasati CTRL+N si o sa vi se deschida o fereastra de comanda in care veti introduce calea catre nunit-console iar la application arguments calea catre fisierul NUnit.

071230_Run NCover_active

Rulati si o sa aveti rapid o evidenta in ce proportie codul din clase s-a executat. In plus va puteti uita direct intr-o metoda sa vedeti care cod s-a executat si care nu ( theme Underline mi se pare cea mai buna)

Generarea rapoartelor e buna – doar ca nu lanseaza fisierul htm generat si trebuie sa il gasiti singuri ( de aceea are “Explore coverage folder”)

Un tool exceptional, ce il puteti rula si din command line . Recomandat cu tarie!

.NET | NCover | nunit | tools
Monday, August 17, 2009 2:01:00 AM (GMT Daylight Time, UTC+01:00)  #    Comments [2]  |  Trackback


Monday, August 10, 2009


NBuilder

Ce este NBuilder  ? Un generator automat de obiecte – la care adauga proprietati default.

De ex:

var generator = new UniqueRandomGenerator();
var seq = new SequentialGenerator<int> { Direction = GeneratorDirection.Ascending, Increment = 1};
seq.StartingWith(1);
BuilderSetup.DisablePropertyNamingFor<Linii, int>(x => x.Pret);

Factura oh = Builder<Factura>.CreateNew().Build();
var q = Builder<Linii>.CreateListOfSize(10)
    .WhereAll()
    .Have(x=>x.Qty=generator.Next(1,100))
    .And(x=>x.LineNumber = seq.Generate())               
    .Build();

oh.Linii.AddRange(q);

 

E foarte bun la asta – si l-am folosit atunci cind vroiam generarea de date discrete ca sa le export in Excel…

Ce am invatat de la NBuilder  :

  1. Ca nu am nevoie neaparat de mocking Stubs
  2. Ca nu ar trebui ca proprietatile sa genereze efecte secundare( ca de exemplu calcularea totalului unei facturi nu ar trebui sa faca refresh la linii, chiar daca nu s-a facut incarcarea liniilor)

E free – si f bun la generare. Diferenta de timp intre el si baza de date este de 1088 ms versus 3141 ms. Folositi cu incredere la teste!

.NET | nbuilder | tools
Monday, August 10, 2009 2:00:00 AM (GMT Daylight Time, UTC+01:00)  #    Comments [0]  |  Trackback


Monday, August 03, 2009


Smart Assembly

Pentru usurinta in folosire,Smart Assembly capata nota 10.

Observatii :

  1. isi pastreaza in C:\program data cum a facut modificarile
  2. Daca aveti un site ASP.NET
    • nu bifati “I want to automatically seal classes whenever possible” – nu o sa isi dea seama pentru, de ex,global.asax “ASP.global_asax': cannot derive from sealed type 'InfoValNew.MvcApplication”
    • Fiecare dll ar trebui obguscat separat – adica facut un fisier .{sa}proj pentru el .Nu obfuscheaza metodele publice.
    • Folositi WebDeployment projects si in compilati si restul – dind “open project file” si introducind:

      <UsingTask TaskName="SmartAssembly.MSBuild.Tasks.Build" AssemblyName="SmartAssembly.MSBuild.Tasks,&#xD;&#xA;Version=4.0.0.0, Culture=neutral, PublicKeyToken=cd3409ee69028647" />
      <Target Name="AfterBuild">
         <SmartAssembly.MSBuild.Tasks.Build ProjectFile="proiect.{sa}proj"
           OverwriteAssembly="true" MarkAsReleased="true"/>

        </Target>

  3. Linq trebuie sa stea intr-un proiect al lui, separat…  sau sa excludeti clasele linq de la compilare.
  4. Cum e si normal, daca il includeti in build, merge mai incet compilarea – asa incit puneti-l doar pe release …
  5. Verificati daca proiectul merge …

Atentie – nu e free…Dar e bun – si are o groaza de optiuni.

Download http://www.smartassembly.com/

obfuscator | smart assembly | tools
Monday, August 03, 2009 2:51:00 AM (GMT Daylight Time, UTC+01:00)  #    Comments [0]  |  Trackback


Tuesday, May 12, 2009


Html Agility Pack

Daca aveti nevoie sa parsati o pagina Web va sfatuiesc sa folositi Html Agility Pack . Stie sa parseze pagini Web si sa le transforme in xml valid (ma rog, pentru cei incepatori , atentie ,de ex, la img : se inchide fara innertext)

Cum l-am folosit: Pai, ca sa parsez cursurile valutare de pe paginile bancilor.

Codul a fost extrem de simplu :

HtmlWeb hw = new HtmlWeb();

HtmlDocument doc = hw.Load(Url);

NodeRoot= doc.DocumentNode;

HtmlNodeCollection valori = NodeRoot.SelectNodes(“//td[@class='td-body text-black align-left' and @style='width:auto']”);

si apoi iterati in valori si obtineti ce vreti. Cel mai greu este sa gasiti XPATH-ul corect – dar asta revine la XML, nu la HTML.

De ce sa il folositi? Cite pagini VALIDE XHTML cunoasteti ?

programare | tools
Tuesday, May 12, 2009 5:16:55 AM (GMT Daylight Time, UTC+01:00)  #    Comments [0]  |  Trackback


Thursday, April 09, 2009


Mini tools list 2009

Programe, majoritatea(99,9%) free , pe care le folosesc ca programator si ca pasionat al Web-ului si GTD

E o continuare la http://serviciipeweb.ro/iafblog/2008/01/18/mini+Free+Tools+List+2007.aspx

si bineinteles inspirata de Hanselman

Fara prea multa discutie, iata lista:

Nume Folosit pentru Adresa Web Comentarii
7-Zip arhivare (zip, rar, etc) www.7-zip.org De ce sa dai banii pe Winzip ?
NOTEPAD++ editare fisiere http://notepad-plus.sourceforge.net/uk/site.htm pentru programatori a se folosi si pluginurile
Yahoo! Messenger Chat http://messenger.yahoo.com/download
Dosbox Dos emulator http://www.dosbox.com/ Pentru Doom1 si Doom2
Download Statusbar 0.9.6.4 vizualizat status bar https://addons.mozilla.org/en-US/firefox/addon/26 firefox addon
Google notebook firefox addon – bookmark https://www.google.com/notebook se sincronizeaza pe accountul de google
Firefox browser web http://www.mozilla.com/en-US/firefox/ fara flash ,activex, silverlight
IE8 browser web http://www.microsoft.com/windows/internet-explorer/default.aspx cu flash + activex + silverlight
Virtual Dub Editor de avi http://virtualdub.sourceforge.net/ De ex., pentru split fisiere avi in 2-3 parti ca sa incapa pe YouTube
morning coffee browsing de dimineata https://addons.mozilla.org/en-US/firefox/addon/2677 firefox addon
leech block blocat browsing ca sa nu pierd timpul https://addons.mozilla.org/en-US/firefox/addon/4476 firefox addon
startup delayer ca sa nu porneasca toate programele la startup http://www.r2.com.au/software.php?page=2&show=startdelay
winamp muzica http://www.winamp.com/
windows live writer scris pe blog acest articol http://windowslivewriter.spaces.live.com/
cd burner xp inregistrat cd-uri http://cdburnerxp.se/
vlc media player play avi, mpg, etc http://www.videolan.org/vlc/
pwdgen generat parole http://serviciipeweb.ro/downloads/pwdgen/ windows
pwdgen generat parole http://serviciipeweb.ro/downloads/pwdgen/index.aspx site web
adobe acrobat reader citit pdf-uri http://get.adobe.com/reader/
cam studio inregistrat avi, flash http://sourceforge.net/projects/camstudio/
sync toy sincronizat fisiere pe USB http://www.microsoft.com/Downloads/details.aspx?familyid=C26EFA36-98E0-4EE9-A7C5-98D0592D8C52&displaylang=en
irfan view Poze http://www.irfanview.com/ Cu addins
Read it later Pentru a tine minte ce vreau sa citesc de pe web- dar nu am avut timp http://www.ideashower.com/ideas/launched/read-it-later/ Firefox add-ons
clamwin anti virus http://www.clamwin.com/
Magic Disc montare ISO http://www.magiciso.com/tutorials/miso-magicdisc-overview.htm merge si pe vista
DVD Decrypter Copiat dvd-uri http://www.dvddecrypter.org.uk/
DVD Shrink Micsorat DVD-uri http://www.softpedia.com/get/CD-DVD-Tools/CD-DVD-Rip-Other-Tools/DVD-Shrink.shtml De folosit doar cu DVD Decrypter
Unreal commander Clona de Total Commander http://unrealcommander.biz/download.php
Download Statusbar 0.9.6.4 De aranjat download in jos la Mozilla http://downloadstatusbar.mozdev.org/ Firefox addon
FireShot Capturat imaginea firefox http://screenshot-program.com/fireshot/ Firefox addon
Foxclocks Ora pe glob http://www.stemhaus.com/firefox/foxclocks/ Firefox addon
TimeTracker Cit timp pierd/csitig pe web http://www.usablehack.com Firefox addon
TwitterFox Pentru twitter http://www.naan.net/trac/wiki/TwitterFox Firefox add-on
FaviconizeTab 0.9.8.2 Micsoreaza tab-urile http://espion.just-size.jp/archives/06/308085916.html Firefox add-on
Save Salveaza imaginile din tab https://addons.mozilla.org/en-US/firefox/addon/3404 Firefox add-on
Images
Synctoy Sincronizat fisiere USB ó PC http://www.microsoft.com/downloads/details.aspx?familyid=c26efa36-98e0-4ee9-a7c5-98d0592d8c52&displaylang=en
Paint.net Editor avansat de imagini http://www.getpaint.net/
Gmail Tasks Pentru a tine minte taskurile personale http://mail.google.com/mail/#settings/labs Se pune din Labs/in google email si se afla chiar sub contacts
CamStudio Inregistrat video http://sourceforge.net/projects/camstudio/

Programare

 

ssms tools addin de sql server pentru arhivat istorie sql http://www.ssmstoolspack.com/ merge si pe express
ADAM Active drectory like http://www.microsoft.com/downloads/details.aspx?familyid=9688f8b9-1034-4ef6-a3e5-2a2a57b5c8e4&displaylang=en Teste pentru integrare AD
Svn1Click Pentru source control http://svn1clicksetup.tigris.org/  
moq testare fara BD http://code.google.com/p/moq/ cu NUnit
regulator / regulazy expresii regulate http://weblogs.asp.net/rosherove/pages/tools-and-frameworks-by-roy-osherove.aspx  
XML Notepad 2007 vazut fisiere XML, reformatare http://www.microsoft.com/downloads/details.aspx?FamilyId=72D6AA49-787D-4118-BA5F-4F30FE913628&displaylang=en bune pentru generat fisiere word, excel, etc.
Reflector decompilare http://www.red-gate.com/products/reflector/ de downloadat si addinurile ( de ex., FileDisassembler )
Texter Coduri scrise automat http://lifehacker.com/software/texter/lifehacker-code-texter-windows-238306.php De ex :
Ab = ::scr::<asp:Button runat=server ID= {RIGHT} />{LEFT}{LEFT}{LEFT}{LEFT}{DEL}{LEFT}
Ij = inner join
sf* = select top 30 * from
trd = <tr> <td></td> <td></td> </tr>
WinMerge diferente intre fisiere/foldere winmerge.org  
WebDeveloper resize, image width/height, image fara atribute si multe altele https://addons.mozilla.org/en-US/firefox/addon/60 pentru verificat site-urile proprii
HTML Help Workshop creeare fisiere CHM help http://www.microsoft.com/downloads/details.aspx?FamilyID=00535334-c8a6-452f-9aa0-d597d16580cc&displaylang=en  
log4net logare erori, debug logging.apache.org/log4net  
.NET Managed Provider for Oracle conexiune oracle http://www.microsoft.com/downloads/details.aspx?FamilyId=4F55D429-17DC-45EA-BFB3-076D1C052524&displaylang=en  
nunit teste automate http://www.nunit.org/index.php  
fiddler interceptat trafic web propriu http://www.fiddler2.com/fiddler2/  
vs2008 express + sql server 2008 express with advanced services(SQL Server Management Studio) site-uri, programe http://www.microsoft.com/express/  
Microsoft Virtual PC Instalat programe de evaluare http://www.microsoft.com/windows/downloads/virtualpc/default.mspx  
Windows Power Shell Scripturi de folosit pe servere http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx  
stringtemplate generare fisiere http://www.stringtemplate.org/ salvezi fisierele ca XML 2003 si le generezi “on the fly”
Sharpzip Zipuit fisiere+foldere http://icsharpcode.net/  
Imacros Generat teste interfata web http://www.iopus.com/imacros/firefox Firefox addon
Measureit Cit de mari sunt pixelii? http://www.kevinfreitas.net/pro/extensions/  
Dust-Me Selectors 2.11 Care css este neutilizat http://www.sitepoint.com/dustmeselectors/ Firefox add-on
Extension List Dumper Face lista cu firefox addon http://sogame.awardspace.com/ Firefox add-on
Save complete Salveaza pagini web https://addons.mozilla.org/en-US/firefox/addon/4723 Firefox add-on
Yahoo slow Verifica rapiditatea de incarcare http://developer.yahoo.com/yslow Firefox add-on
Firebug Verificat erori site-uri https://addons.mozilla.org/en-US/firefox/addon/1843 Firefox add-on
Filezilla Copiat ftp http://filezilla-project.org/download.php?type=client  
SysInternals De vizualizat fisier locked, etc http://technet.microsoft.com/en-us/sysinternals/default.aspx  
Windows PowerShell Backupuri BD, fisiere pe hard, alte mici tool-uri http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx  

Addonuri free pentru programe pe bani

Save As PDF or XPS Word/Excel http://www.microsoft.com/downloads/details.aspx?FamilyID=4d951911-3e7e-4ae6-b059-a2e79ed87041&displaylang=en  
Office Live addin Word/Excel http://www.microsoft.com/DownLoads/details.aspx?familyid=91FE0002-EB00-434B-8726-27911326D2B2&displaylang=en Pus documente shared pe Internet
Creative Commons Word/Excel http://www.microsoft.com/downloads/details.aspx?familyid=d1ddbdc8-627f-415a-9b0a-97362bc9b480&displaylang=en Pentru 2007
VS 2008 Web Deployment Projects Deploy bin http://www.microsoft.com/downloads/thankyou.aspx?familyId=0aa30ae8-c73b-4bdd-bb1b-fe697256c459&displayLang=en  
Power Commands VS2008 http://code.msdn.microsoft.com/PowerCommands Pentru copy as reference
CSAH VS2008 http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/ Copier cod sursa bloguri
SmartPaster VS2008 http://weblogs.asp.net/alex_papadimoulis/archive/2004/05/25/Smart-Paster-1.1-Add-In---StringBuilder-and-Better-C_2300_-Handling.aspx Am cam inceput sa folosesc stringtemplate
Sql2008 DataMining Addins VS2008 http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=896A493A-2502-4795-94AE-E00632BA6DE7&displaylang=en  

USB

Portable Apps Aplicatii portabile http://portableapps.com/  
Lupo Pen Suite Aplicatii portabile http://www.lupopensuite.com/  

 

Care sunt ale voastre ?

liste | programare | tools
Thursday, April 09, 2009 12:25:43 AM (GMT Daylight Time, UTC+01:00)  #    Comments [1]  |  Trackback


Theme design by Jelle Druyts

Pick a theme: