czwartek, 2 grudnia 2010

Wyszukać i zastąpić tekst w wielu plikach

Potrzebowałem zastąpić pewne wyrażenie we odpowiednio wyselekcjonowanych plikach w danym podkatalogu i jego podkatalogach. Rozwiązanie dostarcza cygwin:

grep wyrazenie -R . --include=*.as?x -l | xargs sed -i 's/wyrazenie/nowe_wyrazenie/g'

Jeśli wyrażenie zawiera " to w pierwszej grepowej części należy dodać \, natomiast w sedowej już nie.

getElementsByTagName - dziwne zachowanie

Udało się po 5 godzinach...

Wiecie, że getElementsByTagName tworzy "żywą kolekcję"? W trakcie przyrostu kontrolek na stronie ilość elementów w kolekcji ULEGA zmianie.

piątek, 14 maja 2010

Windows Phone - starcie

A więc spróbowałem. Nowa technologia Microsoftu, nowe nadzieje, nowe obawy. Pierwsze pobranie instalatora i próba uruchomienia zakończyły się komunikatem o nieprawidłowym systemie: Windows XP to za mało.

Zostałem zmuszony do zainstalowania nowej edycji systemu, co na szczęście przy wsparciu MSDNAA nie było zbyt kosztowne. Instalacja również nie nastręczyła problemów. Niestety skonfigurowanie systemu i dopasowanie go do przyzwyczajeń pochłonęło trochę czasu. Co mi tam i tak miałem wkrótce 'zresetować' XP :)

Instalacja środowiska do rozwijania aplikacji Windows Phone zakończyła się również sukcesem, stworzenie nowego projektu przebiegło gładko, zgrzyt nastąpił dopiero w momencie zdeployowania aplikacji na emulator telefonu. Po krótkich poszukiwaniach okazało się, że mam małe szanse na to - problemy z kartą graficzną, brak wsparcia dla odpowiedniej wersji DirectX.

Rozwiązanie?

- zakup karty graficznej - minimalny koszt 150 PLN
- instalacja na innym komputerze,
- instalacja na emulatorze

Opcja pierwsza odpadła bardzo szybko. Na szczęście o trzeciej również dowiedziałem się, że nie działa (albo co najmniej są z tym potężne kłopoty). Została opcja druga. Teraz możecie wrócić do początku postu, bo kroki były te same :)

Ostatecznie projekt udało się zdeployować na telefon, pokazał się ładny ekranik - SUKCES!!!

A gdyby tak ktoś napisał to prędzej.. jasno, wyraźnie, nie musiałbym spędzić kilku godzin na bezproduktywnej pracy.

A więc: potrzebna jest karta graficzna obsługująca DirectX 10. Najlepiej jakaś NVidia (8500, 9300, etc). Ze zintegrowanymi może być spory problem.

wtorek, 29 grudnia 2009

Formatowanie double

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Double value = 14231891.32111;
            Console.WriteLine(String.Format("{0}", value));
            Console.WriteLine(String.Format("{0:00}", value));
            Console.WriteLine(String.Format("{0:n0}", value));
            Console.ReadLine();
        }
    }
}


wynik:

14231891,32111
14231891
14 231 891

poniedziałek, 21 grudnia 2009

Problemy z Accessem w VisualStudio

W przypadku problemów z użyciem bazy danych Access (poprzez OLE DB) w Visual Studio i uzyskiwaniem komunikatu polecam zainstalowanie:

MDAC 2.7 sp1

u mnie to pomogło :)

Property (właściwości) kontrolki - problem z ustaleniem wartości w aspx

Objawy:
- mimo prawidłowego ustawienia wartości dla właściwości nie jest ona widoczna w code-behind,
- wartość zmiennej występuje w kolekcji Attributes danej kontrolki,
- sprawa dotyczy strony (aspx) lub kontrolki (ascx)

to polecam (rozwiązanie):
- zmienić dostępność właściwości w code-behind na public. Protected, internal, private niestety powodują nieprawidłowe działanie.

czwartek, 3 grudnia 2009

DropDownList wewnątrz FormView

W sytuacji, kiedy załadowanie danych do DropDownList w FormView stanowi problem dobrym rozwiązaniem jest podpięcie się pod zdarzenie OnLoad konkretnej kontrolki DropDownList, a następnie tam wypełnienie jej. Np. w następujący sposób:

    protected void PeriodDropDownList_Load(object sender, EventArgs e)
    {
        DropDownList list = (DropDownList)sender;
        list.DataSource = EnumsHelper.IntoDictionary(typeof(Period));
        list.DataTextField = "Value";
        list.DataValueField = "Key";
    }

Jeszcze lepszym rozwiązaniem jest wykorzystanie OnDataBinding - zdarzenie wywoływane przed przypięciem danych. Dla OnLoad podczas zagnieżdżania FormView pojawił się problem z nadpisywaniem danych wybranych przez użytkownika.