Pomoż Firefoxowi pobić rekord Guinnessa w pobieraniu:)

Z racji zbliżającej się premiery Firefox 3, twórcy postawili sobie za cel pobicie rekordu Guinnessa w ilości pobrań aplikacji. Do propagowania akcji może przyłączyć się każdy. Szczegóły akcji na http://www.spereadfirefox.com

Download Day - Polish

Snippety w Visual Studio – C#

Jest to jedna z moich ulubionych funkcjonalności z cyklu „ułatwiających życie” w Visual Studio:)
Snippety umożliwiają łatwe wstawienie kawałka „szablonowego” kodu – np. if…else, for, switch itd.
Dostępne snippety można przejrzeć wybierając z menu Tools->Code Snippets Manager. Można w tym miejscu tworzyć również swoje własne snippety.
Wstawić snippet do swojego kodu można poprzez wpisanie przypisanego do niego słowa i naciśnięcie tabulatora (szerzej o tym sposobie będzie dalej, ponieważ uważam go za zdecydowanie wygodniejszy) lub poprzez wybranie z menu Edit->InteliSense->Insert Snippet (kombinacja klawiszy: Ctrl+K, X), następnie wybranie Visual C# oraz wybranie żądanego snippetu.

Najfajniejsze i najprzydatniejsze wg mnie po kolei :
Cel: utworzenie dyrektywy kompilacji warunkowej (nie będę wchodzić w szczegóły działania poszczególnych kawałków kodu, ponieważ nie to jest przedmiotem tej notki;))
Słowo, które wpisujemy: #if (i naciskamy tab)
Otrzymujemy:

#if true
 
#endif

(kursor znajduje się na słowie true, dzięki czemu łatwo możemy zmienić je na takie jakiego potrzebujemy)

Cel: utworzenie dyrektywy pozwalającej na ukrywanie (zwijanie) kodu w edytorze
Słowo, które wpisujemy: #region
Otrzymujemy:

#region MyRegion
 
#endregion

(kursor znajduje się na słowie MyRegion, umożliwiając natychmiastową zmianę nazwy regionu)

Cel: utworzenie szkieletu klasy
Słowo, które wpisujemy: class
Otrzymujemy:

class MyClass
{
 
}

(kursor znajduje się na słowie MyClass)

Cel: utworzenie wywołania funkcji Console.Writeline
Słowo, które wpisujemy: cw
Otrzymujemy:

Console.WriteLine();

(kursor znajduje się w nawiasie celem wpisania tam tekstu jaki ma zostać wyświetlony)

Cel: utworzenie szkieletu pętli do…while
Słowo, które wpisujemy: do
Otrzymujemy:

do
{
 
} while (true);

(kursor znajduje się na słowie true – wpisujemy treść warunku)

Cel: utworzenie szkieletu instrukcji else
Słowo, które wpisujemy: else
Otrzymujemy:

else
{
 
}

(kursor znajduje się między nawiasami)

Cel: utworzenie szkieletu pętli for
Słowo, które wpisujemy: for
Otrzymujemy:

for (int i = 0; i < length; i++)
{
 
}

(kursor znajduje się na zmiennej i w pierwszym wyrażeniu, umożliwiając jej zmianę – jeśli w tym miejscu zmienimy i, to zmieni się ono też w pozostałych wyrażeniach; naciśnięcie tabulatora spowoduje przejście do zmiennej length w drugim wyrażeniu i umożliwi jej zmianę)

Cel: utworzenie szkieletu pętli foreach
Słowo, które wpisujemy: foreach
Otrzymujemy:

foreach (object var in collection_to_loop)
{
 
}

(kursor znajduje się na słowie object umożliwiając wyedytowanie kolejny parametrów – var, collection_to_loop)

Cel: utworzenie szkieletu pętli forr
Słowo, które wpisujemy: forr
Otrzymujemy:

for (int i = length - 1; i >= 0; i--)
{
 
}

(kursor znajduje się na zmiennej i w pierwszym wyrażeniu – działa podobnie jak snippet dla for, ale iteracja idzie w drugą stronę)

Cel: utworzenie szkieletu pętli if
Słowo, które wpisujemy: if
Otrzymujemy:

if (true)
{
 
}

(kursor znajduje się na słowie true)

Cel: utworzenie wywołania funkcji MessageBox.Show();
Słowo, które wpisujemy: mbox
Otrzymujemy:

MessageBox.Show("Test");

(kursor znajduje się na słowie Test)

Cel: utworzenie szkieletu instrukcji definiującej przestrzeń nazw
Słowo, które wpisujemy: namespace
Otrzymujemy:

namespace MyNamespace
{
 
}

(kursor znajduje się na słowie MyNamespace)

Cel: utworzenie szkieletu instrukcji switch
Słowo, które wpisujemy: switch
Otrzymujemy:

switch (switch_on)
{
    default:
}

(kursor znajduje się na słowie switch_on)

Cel: utworzenie szkieletu instrukcji try…catch
Słowo, które wpisujemy: try
Otrzymujemy:

try
{
 
}
catch (Exception)
{
    throw;
}

(kursor znajduje się na słowie Exception)

Cel: utworzenie szkieletu instrukcji while
Słowo, które wpisujemy: while
Otrzymujemy:

while (true)
{
 
}

(kursor znajduje się na słowie true)

Od dziś RSS-y by FeedBurner!

Od dziś blogowe RSS-y (zarówno te z notkami jaki i komentarzami) wykorzystują FeedBurner – świetne narzędzie “by Google”. Pozwala na monitorowanie listy subskrybentów i wiele innych.
Nowe adresy RSS-ów, to http://feeds.feedburner.com/BlogProgramistki oraz http://feeds.feedburner.com/BlogProgramistkiKomentarze.

Koniec z ręcznym kolorowaniem kodu

Postanowiłam zrezygnować z ręcznego nakładania styli na kod źródłowy zawarty w notkach, ponieważ jednak jest to czasochłonne i niezbyt wygodne. Zamiast tego w notkach będzie używany plugin WP-Syntax. Prosty i wygodny – miałam już okazję użyć go przy reedycji notek by składnia była kolorowana przy jego użyciu:) Generalnie polecam – można praktycznie wszystko skonfigurować:) Piszę „praktycznie”, ponieważ zmieniając potrzebne mi rzeczy, nie napotkałam na nic „nie do zmiany”, ale może coś takiego jest;)

Jak się łamie kody CAPTCHA

Spotkałam się niedawno na serwisie hack.pl z opisem sposobu łamania kodów CAPTCHA. Okazuje się, że za tym wszystkim stoją, a raczej siedzą przy kompach ludziki i wygląda to tak:

1. Oprogramowanie typu bot odwiedza stronę rejestracji i wypełnia formularz rejestracji losowymi danymi.
2. W momencie wyświetlania zabezpieczenia typu CAPTCHA oprogramowanie typu bot wysyła wiadomość do terminalu komputerowego w Indiach.
3. Pracownicy wpisują odpowiednią kombinację liter i cyfr, a następnie wysyłają informację zwrotną do programu.
4. Program wypełnia pole odpowiedzi i kończy proces rejestracji.
5. W ten sposób spamerzy uzyskują swobodny dostęp do kont użytkowników.
6. Z konta wysyłana jest niepożądana poczta elektroniczna do tysięcy legalnych kont poczty elektronicznej.

Cały artykuł znajduje się tutaj.