poniedziałek, 25 lipca 2011

Korzystanie z tagów tematycznych w aplikacji ASP.NET MVC

Pracując na własnym CMSem postanowiłem stworzyć wyszukiwanie artykułów za pomocą dostępnych tagów.
Użytkownikowi powinny wyświetlać się wszystkie dostępne tagi, oraz powinien mieć możliwość wyboru interesującego go tagu za pomocą kliknięcia.


Wpierw baza danych.
Do przechowywania tagów w bazie postanowiłem wykorzystać strukturę znaną jako"Toxi", z której jak wyczytałem korzysta również Wordpress. Schemat jest następujący:



Mamy 3 tabele. Tabelę Articles w której przechowujemy publikowane artykuły, tabelę  Tags w której trzymamy listę dostępnych tagów. Tabela ArticleTags przechowuje referencję do pozostałych.


Następnie w naszej aplikacji MVC tworzymy model bazy danych, do którego dostęp uzyskujemy z odpowiednich metod naszego kontrolera.


Przykładowa metoda pobierająca listę dostępnych tagów:



Na tej podstawie tworzymy widok, który wyświetli nam pobrane dane:


Powyższy widok spowoduje, że każdy tag będzie odnośnikiem, a jego kliknięcie spowoduje wywołanie metody kontrolera: ShowArticlesByTag, która jako argument przyjmuje Id klikniętego tagu i zwróci nam listę artykułów powiązanych z danym tagiem. Kod metody:




Przykładowy widok prezentujący listę artykułów:






piątek, 22 lipca 2011

Nowa książka

Wczorajsza wycieczka po galerii handlowej zaowocowała wizytą w Empiku i kupnem książki "Fizyka rzeczy niemożliwych. Fazery, pola siłowe, teleportacja i podróże w czasie" napisanej przez jednego z czołowych fizyków teoretyków naszych czasów,czyli Michio Kaku.


Gdy tylko skończę lekturę, postaram się napisać kilka słów. Jak na razie jestem pod dużym wrażeniem :)

wtorek, 19 lipca 2011

Moje projekty

Poniżej prezentuję kilka moich projektów, wykonanych w technologii .NET. Niestety części moich programów nie mogę zaprezentować, gdyż były pisane dla firm na użytek wewnętrzny.
Jeśli zainteresuje Cie któryś projekt, lub chciałbyś program napisany specjalnie pod Twoje wymagania, napisz:

email: mzajac.sbis@gmail.com


1. Program do realizacji zamówień w firmie. Składa się z 3 modułów:
- klienci (dodawanie, wyszukiwanie, usuwanie, edycja, tworzenie raportów zamówień dla każdego klienta)
- zamówienia (dodawanie, wyszukiwanie, usuwanie, edycja, drukowanie, eksportowanie zamówień do formatów pdf oraz xls)
- magazyn (dodawanie, wyszukiwanie, usuwanie, edycja produktów, pilnowanie stanu magazynu, raportowanie)

Do działania program wymaga .Net Framework w wersji min. 3.5 oraz SQL Server 2005/2008

Okno główne programu:

Moduł Klienci:

Moduł Zamówienia:



Moduł Magazyn:



2. Własny system CMS do zarządzania autorskim blogiem (projekt w fazie rozwoju)
- ASP.NET MVC
- Sql Server 2008

Strona główna:

Panel tworzenia artykułu:

Panel administracyjny:


3. Program do wyznaczania i analizy podstawowych parametrów stałoprądowych dla łączy miedzianych.
Zastosowaniem programu jest wyznaczanie podstawowych parametrów miedzianych łączy telekomunikacyjnych. Na chwilę obecną obliczane są:
- asymetria pojemności
- asymetria rezystancji
- tłumienność toru)
wraz z kwalifikacją toru pod kątem usług ADSL. Pozwala określić w przybliżeniu, możliwą do osiągnięcia przepływność łącza.


4. Program do szybkiej diagnostyki łącza.
Przeprowadza podstawowe testy łącza takie jak: Ping, Traceroute, oraz prędkość pobierania.


poniedziałek, 4 lipca 2011

Nowy LINQ :)

Fragment rozmowy kwalifikacyjnej, stanowisko 'Programista .NET' (znalezione na portalu GoldenLine.pl)

R: Co robi to wyrażenie:
  int months = monthsRenewal > 0 ? monthsRenewal : monthNew; 
K: To ten nowy LINQ. Dopiero się go uczę...

:D

wtorek, 21 czerwca 2011

Automatyczne numerowanie dokumentów.

Podczas pracy nad aplikacją stanąłem przed koniecznością wykonania numerowania dokumentów dodawanych do bazy.

Założeniem było, aby nr dokumentu był w takiej postaci DOK/2011/1.

W tym celu stworzyłem funkcję (uproszczona wersja):
 
CREATE FUNCTION Numerowanie(@id INT)
RETURNS VARCHAR(15)
AS
BEGIN

DECLARE @rok VARCHAR(8)
SET @rok = YEAR(GETDATE())

RETURN 'Dok' + @rok + '/' + CONVERT(VARCHAR(6), @id)
END
  
W tej wersji funkcja nie jest skomplikowana. Rok pobieramy z funkcji GETDATE() i dołączamy do tekstu 'DOK'. Do całości dołączamy numer kolejnego dokumentu, który uzyskujemy z pola IDENTITY. Dzięki użyciu pola IDENTITY mamy pewność że nie zostaną utworzone dwa dokumenty o tym samym numerze.

Funkcja zostaje wywołana w wyzwalaczu, który zostaje wykonany w momencie dodania nowego rekordu do tabeli Dokumenty.

CREATE TRIGGER Dokument_insert ON Dokumenty
AFTER INSERT AS
UPDATE
Dokumenty
SET
Dokumenty.NrDokumentu = dbo.Numerowanie(IdDokumentu)
FROM
Dokumenty
INNER JOIN
Inserted ON Dokumenty.IdDokumentu = inserted.IdDokumentu