Chcete spouštět svou .NET aplikaci hned po spuštění Windows?

Podívejme se jak na to

Jádro pudla je v tom jaký klíč uložit do registru a jak to napsat v .NET. Klíč, který používá Windows k automatickému spouštění po startu se jmenuje „Software\\Microsoft\\Windows\\CurrentVersion\\Run\\“. Ve zdrojovém kódu si pak použijeme třídu Microsoft.Win32.RegistryKey a následně metodou SetValue hodnotu uložíme.

Na co si dát pozor

Pokud operační systém Windows nenalezne cestu k aplikaci uvedenou v hodnotě v klíče, automaticky tento klíč odstraní a při dalším spuštění už máte prostě smůlu. Proto je dobré si čas od času tento klíč zkontrolovat, např. při spouštění aplikce si ověřit zda tam ten klíč je a zda hodnota v něm uvedená je správná. Celé to pak vypadá něják následovně.

Private Sub UlozKlicDoRegistruPoSpusteni(ByVal Klic As String, ByVal Hodnota As Object)

        Try

            Const KeyName As String = "Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"

            Dim RegKey As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(KeyName, True)
            RegKey.SetValue(Klic, Hodnota)

        Catch ex As Exception

            MsgBox(ex.Message)

        End Try
        \'Volání
        \'======
        \'UlozKlic("Application", """C:\\Program Files\\MyApplication\\MyApplication.exe""")
    End Sub

Free hosting vs. placený webhosting aneb kam s hotovou webovou aplikací v ASP.NET

Pokud máte už máte napsanou webovou aplikaci, tak byste určitě rádi věděli kam ji umístit. Kriteria mohou být v zásadě dvě. Chcete si aplikaci teprve odzkoušet, pak doporučuji některý s níže uvedených hostingů zdarma nebo chcete aplikaci nasadit do ostrého provozu. Pokud se jedná o ostré nasazení, pak byste se měli poohlédnout po nějakem placeném webhostingu, protože verze ZDARMA mají vždy nějaké omezení, které brání profesionálnímu použití. Např. pouze doména 3.řádu, omezená velikost, taffic, …

ASP.NET webhosting zdarma

www.asphost4free.com
www.aspweb.cz
www.aspx.sk
www.freeasphost.com
www.webhostforasp.net
www.aspone.cz Nové!

Placený ASP.NET webhosting

www.aerohosting.cz od 89Kč
www.dotnethosting.cz od 100 Kč
www.explorer.cz od 195 Kč
www.forpsi.cz od 100 Kč
www.savvy.cz od 159 Kč

* Ceny uvedeny za měsíc a jsou bez 19% DPH. Hostingové společnosti jsou uvedeny v abecedním pořadí.

Svátky na každý den, aneb kdo má kdy svátek

Každý den je důvod k oslavě, tak proč si neudělat na vlastních stránkách kromě počítadla a reklamních bannerů také ukazatel toho kdo má dnes svátek.

Nejprve si vytvoříme datový soubor svatky.xml. V souboru budeme evidovat měsíc, den a svátek daného dne.
[dm]1[/dm]

<?xml version="1.0" standalone="yes"?>
<DocumentElement>
	<svatky>
		<mesic>1</mesic>
		<den>1</den>
		<svatek>Nový rok</svatek>
	</svatky>
	<svatky>
		<mesic>1</mesic>
		<den>2</den>
		<svatek>Karina</svatek>
	</svatky>
	<svatky>
		<mesic>1</mesic>
		<den>3</den>
		<svatek>Radmila</svatek>
	</svatky>
</DocumentElement>

Vlastní implementace funkce pro zobrazování svátků

 Function GetSvatek(ByVal d As Date) As String

        GetSvatek = ""
        Dim dt As New DataTable("svatky")
        Dim dc As DataColumn = Nothing
        Dim dr As DataRow = Nothing

        dc = New DataColumn("mesic", GetType(Integer))
        dt.Columns.Add(dc)
        dc = New DataColumn("den", GetType(Integer))
        dt.Columns.Add(dc)
        dc = New DataColumn("svatek", GetType(String))
        dt.Columns.Add(dc)

        \'reading XML file
        dt.ReadXml("svatky.xml")

        Dim i As Integer
        If (dt.Rows.Count > 0) Then

            For i = 0 To dt.Rows.Count - 1

                If d.Month = dt.Rows(i)("mesic") AndAlso d.Day = dt.Rows(i)("den") Then

                    GetSvatek = dt.Rows(i)("svatek")
                    Exit For

                End If

            Next i

        End If

    End Function

\'volání funkce
dim LukySvatek as String = GetSvatek(#10/18/2007#)

Tuto funkci lze samozřejmě dále vylepšovat např. rozlišovat svátky více osob v jeden den (Petr a Pavel), státní svátky, …

Jak přistupovat do Active Directory přes ASP.NET 2. – UserAccountControl – User Enabled/Disabled?

V tomto díle práce s Active Directory se tak trochu podíváme na zoubek uživatelům. Určitě je šikovné vědět zda vybraný uživatel je v doméně aktivní či je účet zakázan apod.
Lze celkem snadno využít atributu userAccountControl v AD.
V předchozím článku Jak přistupovat do Active Directory přes ASP.NET I. – Překlad loginu na jméno a příjmení jsme se naučili jak z domény vytáhnout libovolnou informaci (stačí ji podstrčit tu správnou property). A v tomto článku jsou téměř všechny stavy, kterých může hodnota userAccountControl nabývat, takže si to stačí jen vyzkoušet.

1000000000\'512, &amp;H200 Account: Enabled
1000010000\'528, &amp;H210 Account: Enabled - LOCKOUT
1000100000\'544, &amp;H220 Account: Enabled - PASSWD_NOTREQD
1000110000\'560, &amp;H230 Account: Enabled - PASSWD_NOTREQD - LOCKOUT
1010000000\'640, &amp;H280 Account: Enabled - ENCRYPTED_TEXT_PWD_ALLOWED
10000001000000000\'66048, &amp;H10200 Account: Enabled - DONT_EXPIRE_PASSWORD
10000001000010000\'66064, &amp;H10210 Account: Enabled - DONT_EXPIRE_PASSWORD - LOCKOUT
10000001000100000\'66080, &amp;H10220 Account: Enabled - DONT_EXPIRE_PASSWORD - PASSWD_NOTREQD
10000001010000000\'66176, &amp;H10280 Account: Enabled - DONT_EXPIRE_PASSWORD - ENCRYPTED_TEXT_PWD_ALLOWED
100000001000000000\'131584, &amp;H20200 Account: Enabled - MNS_LOGON_ACCOUNT
100000001000010000\'131600, &amp;H20210 Account: Enabled - MNS_LOGON_ACCOUNT - LOCKOUT
110000001000000000\'197120, &amp;H30200 Account: Enabled - MNS_LOGON_ACCOUNT - DONT_EXPIRE_PASSWORD
100000000001000000000\'1049088,&amp;H100200 Account: Enabled - NOT_DELEGATED
1000000000001000000000\'2097664,&amp;H200200 Account: Enabled - USE_DES_KEY_ONLY
1010010000001000000000\'2687488,&amp;H290200 Account: Enabled - DONT_EXPIRE_PASSWORD - TRUSTED_FOR_DELEGATION - USE_DES_KEY_ONLY()
10000000000001000000000\'4194816,&amp;H400200 Account: Enabled - DONT_REQ_PREAUTH
1000000010\'514, &amp;H202 Account: ACCOUNTDISABLE
1000010010\'530, &amp;H212 Account: ACCOUNTDISABLE - LOCKOUT
1000100010\'546, &amp;H222 Account: ACCOUNTDISABLE - PASSWD_NOTREQD
10000001000000010\'66050, &amp;H10202 Account: ACCOUNTDISABLE - DONT_EXPIRE_PASSWORD
10000001000010010\'66066, &amp;H10212 Account: ACCOUNTDISABLE - DONT_EXPIRE_PASSWORD - LOCKOUT
10000001000100010\'66082, &amp;H10222 Account: ACCOUNTDISABLE - DONT_EXPIRE_PASSWORD - PASSWD_NOTREQD
100000001000000010\'131586, &amp;H20202 Account: ACCOUNTDISABLE - MNS_LOGON_ACCOUNT
100000000001000000010\'1049090,&amp;H100202 Account: ACCOUNTDISABLE - NOT_DELEGATED
100000000000\'2048, &amp;H800 Account: INTERDOMAIN_TRUST_ACCOUNT
100000100000\'2080, &amp;H820 Account: INTERDOMAIN_TRUST_ACCOUNT - PASSWD_NOTREQD
1000000000000\'4096, &amp;H1000 Account: WORKSTATION_TRUST_ACCOUNT
10000000000000\'8192, &amp;H2000 Account: SERVER_TRUST_ACCOUNT
10000010000000000000\'532480, &amp;H82000 Account: SERVER_TRUST_ACCOUNT - TRUSTED_FOR_DELEGATION (DomainController)

Nejčastěji si, ale vystačíte s těmito hodnotami

1000000000 \’512, &H200 Account: AccountEnabled
1000000010 \’514, &H202 Account: AccountDisable

Pro vás co máte rádi 0 a 1
Pokud je 2. bit zprava = 1, je účet zakázán
Pokud je 2. bit zprava = 0, je účet aktivní

Jak psát správně tituly a akademické hodnosti

Je libo psát titul před nebo za jméno. Snad každý kdo se někdy vrhnul na programování nějakého toho adresáře či personální databáze se již potýkal s problémem, jak a kam psat ten či onen titul. Abych usnadnil prací všem ostatním tak jsem si pro Vás připravil malý přehled včetně zdrojového kódu ve VB.NET

Všechny používané tituly
„Ing. CSc. Dr. PaedDr. RNDr. MUDr. MVDr. Mgr. Bc. MgA. Prof. DiS. Doc. PhDr.“

Tituly za jménem
„Ph.D. Th.D. CSc. DrCs. dr. h. c. “

Tituly pred jmenem
„Bc. BcA. Ing. Ing.arch. MUDr. MVDr. MgA. Mgr. JUDr. PhDr. RNDr. PharmDr. ThLic. ThDr. prof. doc. PaedDr. Dr. PhMr.“

\' Zadejte libovolný  řetezec se všemi tituly človíčka oddělených mezerou a tituly budou rozděleny dle normy na tituly pred jmenem a za jmenem
Sub RozdelTituly(ByVal CelyTitul As String, ByRef TitulPred As String, ByRef TitulZa As String)

\' Tituly pred jmenem
CelyTitul = CelyTitul.Trim()
CelyTitul = CelyTitul.ToLower()
TitulPred = ""

If CelyTitul.IndexOf("prof.") &gt;= 0 Then
TitulPred = TitulPred &amp; " prof."
End If
If CelyTitul.IndexOf("doc.") &gt;= 0 Then
TitulPred = TitulPred &amp; " doc."
End If
If CelyTitul.IndexOf("ing.arch.") &gt;= 0 Or CelyTitul.IndexOf("ing. arch.") &gt;= 0 Then
TitulPred = TitulPred &amp; " Ing.arch."
End If
If CelyTitul.IndexOf("ing.") &gt;= 0 Then
TitulPred = TitulPred &amp; " Ing."
End If
If CelyTitul.IndexOf("mudr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " MUDr."
End If
If CelyTitul.IndexOf("mvdr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " MVDr."
End If
If CelyTitul.IndexOf("mga.") &gt;= 0 Then
TitulPred = TitulPred &amp; " MgA."
End If
If CelyTitul.IndexOf("mgr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " Mgr."
End If
If CelyTitul.IndexOf("judr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " JUDr."
End If
If CelyTitul.IndexOf("phdr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " PhDr."
End If
If CelyTitul.IndexOf("rndr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " RNDr."
End If
If CelyTitul.IndexOf("pharmdr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " PharmDr."
End If
If CelyTitul.IndexOf("thdr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " ThDr."
End If
If CelyTitul.IndexOf("thlic.") &gt;= 0 Then
TitulPred = TitulPred &amp; " ThLic."
End If
If CelyTitul.IndexOf("paeddr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " PaedDr."
End If
If CelyTitul.IndexOf("dr.") &gt;= 0 And CelyTitul.IndexOf("mudr.") &lt; 0 And CelyTitul.IndexOf("mvdr.") &lt; 0 And CelyTitul.IndexOf("judr.") &lt; 0 And CelyTitul.IndexOf("phdr.") &lt; 0 And CelyTitul.IndexOf("rndr.") &lt; 0 And CelyTitul.IndexOf("pharmdr.") &lt; 0 And CelyTitul.IndexOf("thdr.") &lt; 0 And CelyTitul.IndexOf("paeddr.") &lt; 0 And CelyTitul.IndexOf("dr.h.c.") &lt; 0 And CelyTitul.IndexOf("dr. h. c.") &lt; 0 Then TitulPred = TitulPred &amp; " Dr." End If If CelyTitul.IndexOf("phmr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " PhMr."
End If
If CelyTitul.IndexOf("bc.") &gt;= 0 Then
TitulPred = TitulPred &amp; " Bc."
End If
If CelyTitul.IndexOf("bca.") &gt;= 0 Then
TitulPred = TitulPred &amp; " BcA."
End If

TitulPred = TitulPred.Trim()
TitulZa = ""

\' Tituly za jmenem
If CelyTitul.IndexOf("ph.d.") &gt;= 0 Or CelyTitul.IndexOf("phd.") &gt;= 0 Then
TitulZa = TitulZa &amp; " Ph.D."
End If
If CelyTitul.IndexOf("th.d.") &gt;= 0 Or CelyTitul.IndexOf("thd.") &gt;= 0 Then
TitulZa = TitulZa &amp; " Th.D."
End If
If CelyTitul.IndexOf("csc.") &gt;= 0 Then
TitulZa = TitulZa &amp; " CSc."
End If
If CelyTitul.IndexOf("dis.") &gt;= 0 Then
TitulZa = TitulZa &amp; " DiS."
End If
If CelyTitul.IndexOf("drsc.") &gt;= 0 Then
TitulZa = TitulZa &amp; " DrSc."
End If
If CelyTitul.IndexOf("dr.h.c.") &gt;= 0 Or CelyTitul.IndexOf("dr. h. c.") &gt;= 0 Then
TitulZa = TitulZa &amp; " Dr.h.c."
End If

TitulZa = TitulZa.Trim()

End Sub

Double value v ComboBox – Text and Value

Nejprve si vytvříme třídu ComboBoxItem

Public Class ComboBoxItem
     Public ReadOnly Value As String
     Public ReadOnly Text As String
     Public Sub New(ByVal Value As String, ByVal Text As String)
          Me.Value = Value
          Me.Text = Text
     End Sub
     Public Overrides Function ToString() As String
          Return Text
     End Function
End Class

A protože do Comboboxu lze přidávat Items typu Object, není nic snazšího než přidávat Items typu ComboBoxItem. Snadné že?

Sub ComboBoxAddItemsSample()
     Dim i As Integer
     Dim item As ComboBoxItem
     Dim cmbBox As New ComboBox 

     cmbBox.Items.Clear()
     For i = Asc("A") To Asc("Z")
          item = New ComboBoxItem(Chr(i), Chr(i) &amp; ":")
          cmbBox.Items.Add(item)
     Next i
End Sub

Jak přistupovat do Active Directory přes ASP.NET I. – Překlad loginu na jméno a příjmení

Pokud programujete webové aplikace, které pracují v intranetovém prostředí, pak jste se jistě setkali s Active Directory (AD). V podstatě celý systém Microsoftu je postaven na AD. V tomto článku si ukážeme, jak přistupovat do AD pomocí .NET a získat nějaké informace, např. pro prezentaci na webu. Toto může být užitečné, pokud nám nepostačují nástroje Microsoftu. V tomto prvním příkladě si ukážeme, jak jednoduše lze přeložit login v doméně na lidský tvar „Příjmení Jméno“.

Pro tento příklad potřebujeme importovat Namespace DirectoryServices

Imports System.DirectoryServices

Ve Visual Studiu je to klepnutím na References > Add reference > .NET > System.DirectoryServices.dll

\'Překlad loginu na tvar "Prijmeni Jmeno"
Function ConvertSAMToName(ByVal SAMAccountName As String) As String

  \'očistíme samaccountname o doménu
  SAMAccountName = Replace(SAMAccountName.ToLower, "domenaxxx\\", "")

  \'přihlašovací údaje pro přístup do AD, pokud neni povolen anonymní přístup
  Dim Username As String = "DOMENAXXX\\username"
  Dim Password As String = "password"
  Dim Path As String = "LDAP://subdom.domenaXXX.cz:3268/DC=domenaXXX,DC=cz"
  \'nacitani pres global catalog (GC)je o poznání rychlejší
  \'s velkou pravděpodobností budete mít GC na portu 3268
  \'jinak můžete přistupovat přímo do domeny
  \'LDAP://domenaXXX.cz/DC=domenaXXX,DC=cz"

  Try

    Dim entry As New DirectoryEntry(Path, Username, Password)
    Dim search As New DirectorySearcher(entry)
    \'zde se nastavuje filtr a vlastnosti, ktere z AD chceme
    search.Filter = "(samaccountname=" &amp; SAMAccountName &amp; ")"
    search.PropertiesToLoad.Add("sn")
    search.PropertiesToLoad.Add("givenName")

    Dim result As SearchResult = search.FindOne()
    Dim key As String

    For Each key In result.Properties.PropertyNames

      \' kazda property muze obsahovat krome sebe take kolekci více hodnot
      Dim propValue As Object
      For Each propValue In result.Properties(key)

        \'a tady už jen použijeme hodnoty z AD 
        If key = "sn" Then
          ConvertSAMToName = Trim(propValue &amp; " " &amp; ConvertSAMToName)
        End If
        If key = "givenname" Then
          ConvertSAMToName = Trim(ConvertSAMToName &amp; " " &amp; propValue)
        End If

      Next

    Next key

  Catch ex As Exception

    Return SAMAccountName

  End Try

End Function

Odesílání velkého množství emailů s přílohami přes „PickUp folder“

V tomto příspěvku si ukážeme alternativní způsob odesílání emailů ze serveru. Tento způsob je vhodný zejména v případě odesílání velkého množství emailů a emailů s přílohami. Oproti standartnímu způsobu odesílání (System.Web.Mail.SmtpMail.Send(Message)) se v tomto případě navíc u SmtpClient určuje metoda odeslání SmtpDeliveryMethod. Tím zajistíme, že SMTP server bude zpracovávat požadavky přes „PickUp folder“. Nyní ještě musíme specifikovat adresář, ze kterého se bude SMTP server číst PickupDirectoryLocation.

Imports System.Net.Mail
\'Odešle email s přílohou  VIA pickup folder
Public Function SendMailWithAttachement(ByVal odesilatel As System.Net.Mail.MailAddress, ByVal prijemce As System.Net.Mail.MailAddress, ByVal predmet As String, ByVal zprava As String, Optional ByVal filename As String() = Nothing) As Boolean

    Try

        Dim msg As New MailMessage
        Dim i As Integer
        msg.From = odesilatel 
        msg.To.Add(prijemce)
        msg.Subject = predmet
        msg.IsBodyHtml = False  \' Text|Html
        msg.Body = zprava

        \'volitelně můžeme připojit přílohy
        If Not (filename Is Nothing) Then
            For i = LBound(filename) To UBound(filename)
                If Not (filename(i) Is Nothing) Then
                    msg.Attachments.Add(New Net.Mail.Attachment(filename(i)))
                End If
            Next
        End If

        \'vytvoříme SmtpClienta
        Dim client As New SmtpClient("localhost") \'např. mail.domena.cz

        \'zvolime metodu
        client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory

        \'výchozí adresář pro pickup
        client.PickupDirectoryLocation = "C:\\Inetpub\\MailRoot\\Pickup\\" 

        \'odesíláme
        client.Send(msg)
        SendMailWithAttachement = True

    Catch ex As Exception

        SendMailWithAttachement = False

    End Try

End Function

CV – Ing. Lukáš Novák

Aktualizováno: 16.3.2007 11:40

ING. LUKÁŠ NOVÁK

« E-MAIL: LUKAS.NOVAK@EMAIL.CZ »

OSOBNÍ INFORMACE

  • Narozen: *1981 v Čáslavi (žiji v Litomyšli)
  • Národnost: česká
  • Stav: ženatý

VZDĚLÁNÍ

PRACOVNÍ ZKUŠENOSTI

  • 2000-současnost Pozemkový fond České republiky, Praha
    Odbor informatikyPracuji na pozici vývojáře webových aplikací, administrátora webových stránek www.pfcr.cz. Zodpovídám a za chod a správu intranetových a internetových aplikací společnosti.

OSOBNOSTNÍ KVALITY

  • Flexibilita
  • Umění jednat s lidmi
  • Loajalita k firmě
  • Schopnost týmové spolupráce

JAZYKY

  • anglický jazyk – velmi dobrá znalost
  • německý jazyk – základní znalost
  • španělský jazyk – základní znalost

PRÁCE S PC

  • MS Visual Studio .NET, ASP.NET – programátor web aplikací
  • MS Windows Server 2003 – administrace
  • Práce s databázemi – MS SQL, MySQL – administrace
  • Práce s internetem a MS Office – velmi pokročilý uživatel, rutinně
  • Microsoft Solution Framework, UML

CERTIFIKÁTY A OSVĚDČENÍ

2007

  • Kvalifikační kurz, Angličtina – pokročilí, Česká republika
    Tutor s. r. o.
  • Školení/kurz/seminář, MS Visual Studio 2005 – Pokročilá tvorba ASP.NET 2.0 webových aplikací, Česká republika
    Gopas – GOC32022006
  • Školení/kurz/seminář, Analýza a design dle MSF, Česká republika
    Gopas – MOC2710
  • Školení/kurz/seminář, Microsoft VS 2005 – Pokročilá tvorba Webových aplikací ASP .NET 2.0, Česká republika
    Gopas – Workshop
  • Školení/kurz/seminář, Úvod do jazyka UML , Česká republika
    Gopas – GOC262005
  • Školení/kurz/seminář, Vývoj aplikací ASP .NET pomocí MS Visual Studia .NET, Česká republika
    Gopas
  • Školení/kurz/seminář, Vývoj ASP .NET 1.x webových aplikací , Česká republika
    Gopas – MOC23102003
  • Školení/kurz/seminář, MS Outlook ve spolupráci s MS EXCHANGE serverem verze 2003, Česká republika
    EIITE2002
  • Školení/kurz/seminář, MS Visual Basic.NET – úvod do programování, Česká republika
    GOPAS

REFERENCE

  • Pozemkový fond České republiky
    – použité serverové technologie ASP.NET 2.0, MS SQL
    – úroven participace: kompletní řešení včetně vývoje, instalace a správy serveru
  • I Like Art
    – použité serverové technologie PHP, MySQL
    – úroveň participace: kódovánání PHP a CSS
  • Výtvarné studio Dolní Újezd
    – použité serverové technologie PHP, CSV
    – úroveň participace: kódovánání PHP a CSS

PŘEDNOSTI

  • Cílevědomost
  • Etická a morální zásadovost
  • Potenciál technicko – ekonomického myšlení
  • Trvalá ochota učit se novým věcem

ZÁJMY

  • Zájem o nové technologie v IT
  • Cestování, cyklistika, turistika

OSTATNÍ

  • Řidičské oprávnění skupiny B
  • Účast v soutěži Euromanager