Analiza Parsowanie HTML-a  nie jest prostą sprawą. HTML nie ma jednolitej składni i nie może być potraktowany jak plik XML. Napisanie swojego parsera też nie jest łatwe. Analiza HTML przy użyciu wyrażeń regularnych jest jeszcze gorszym koszmarem.

Na szczęście jak to w programowaniu bywa ktoś już dużo wcześniej opracował rozwiązanie i się z nim podzielił. W tym wpisie omówię bibliotekę HTMLAgilityPack.

KampaniaJest to blog programistyczny dlatego możesz być zdziwiony co tutaj robi taki wpis.

Otóż w przeszłości pracowałem w jednej z najlepszych firm interaktywnych jako programista. Mimo iż byłem programistą mogłem popatrzeć jak najlepsi ludzie o e-marketingu robią swoje kampanie.

BlogEngineMinęło już 6 miesięcy  od czasu migracji mojego bloga z Bloggera  do BlogEngine.NET.

Migracja przebiegła pomyślnie.  A nowy blog powoli zaczyna zbierać tyle samo wyświetleń co stary. Niestety z powodów SEO stary blog wciąż musi istnieć ,ale co ja na to poradzę.

WłaściwościCzęść NR.3 Windows Forms nie oferuje takiej bogatej kompozycji jak WPF. Nie mówi tutaj o różnicy pomiędzy grafiką rastrową ,a grafiką wektorową. Przykładowo w Windows Form do przycisku możemy umieścić tylko tekst.

Natomiast do zawartości przycisku w WPF możemy umieścić każdy element. Musi on tylko dziedziczyć po odpowiednich klasach.

CV & You

CV. to najbardziej istotny dokument. To on jest kluczem do twojej kariery. W tym wpisie skoncentruję się na tym, co należy umieścić w tym dokumencie. Co powinieneś umieć i co trzeba napisać w CV, aby przejść etap rekrutacji jako programista. Nic tak nie pomaga w zrozumieniu otaczającego nas świata, jak jego dokładna analiza.

Create DbNa studiach inżynierski miałem okazje poznać system baz danych Oracle. W tamtym okresie znałem z poprzedniego semestr MySQL jak i przykładałem się do nauki T-SQL. Niestety ,ale Oracle wciąż mnie zaskoczył. Oracle zdecydowanie jest inny niż wszystkie system baz danych.

ODBC

ADO.NET potrafi się połączyć prawie z każdą bazą danych. Obecnie na laptopie zainstalowałem następujące systemy bazy danych: Oracle, PostgreSQL, MySQL. Postanowiłem każdą z nich przetestować do celów edukacyjnych.

WyłączenieKolejny wpis zafascynowany wynikami wyszukiwania użytkowników którzy trafiają na tego bloga nie z powodów programistycznych.

Windows 8 nie ma przycisku start ,a co zatem idzie istnieje pewien problem z wyłączeniem nowego sprzętu gdyż pewnych umiejętności trzeba nauczyć się na nowo.

WPF AsyncAsync i Await to całkiem nowy fantastyczny bajer   który został dodany do języka C# całkiem nie dawno. Można go używać w każdej aplikacji .NET-owej chociaż  małe różnice w wykorzystaniu istnieją to sumie filozofia działania jest ta sama .

Ciężko jest wyjaśnić co dokładnie dzieje się pod spodem aplikacji,  która korzysta z tej funkcjonalności.

Ikony Niektórzy uważają ,że Visual Studio 2012 jest najpiękniejszą wersją Visual Studio. Jeśli jednak uważasz inaczej możesz to poprawić.

Czarno białe ikonki kojarzą mi się z Amigą i Windows 3.11. Problem  nie polega na tym ,że są brzydkie. Ich bladość szkodzi produktywności ponieważ wszystkie ikony prawie wyglądają tak samo.

Istnieją dwa dodatki do Visual Studio, które potrafią rozwiązać ten problem niestety z skutkami ubocznymi .

TFS Wczoraj na swoim laptopie zainstalowałem sobie TFS-a. Trochę się za nim stęskniłem i pomyślałem sobie ,że może zrobię o nim wpis. Lubię to narzędzie i chciałby go używać w każdym projekcie. Być może kiedyś tym wpisem zachęcę początkujących programistów do jego użycia.

WinShell

Witam w kolejnym odcinku z cyklu “poszukiwanie doskonałego edytora” LaTexa. Mój losowy wybór padł tym razem na pogram WinShell. Porównam go też z TeXworks. W każdym edytorze znajduje się inny zakres znaczników.

Mind F###Na rozmowach kwalifikacyjnych osoby rekrutujące lubią zadawać podchwytliwe  pytania. Przykładowo  przed każdą rozmową kwalifikacyjną z Javy warto byłoby sobie przypomnieć jak działają metody porównywania napisów.

Ich działanie nie jest takie intuicyjne jak się wydaje.  Oto poniższy przykład. Sprawdź swoją wiedzę i sprawdź czy rozumiesz poniższy przykład.

Why XAMLCzęść NR.1 XAML jest dialektem XML i stał się on ważną częścią platformy .NET od czasu jego pierwszej prezentacji w 2006 roku w trakcie premiery WPF. Często jest mylony jako metoda określająca interfejs użytkownika zupełnie tak jak HTML. Pod koniec tego kursu zrozumiesz jednak ,że XAML to coś dużo więcej niż aranżowanie kontrolek na ekranie komputera.

;WITH CTECommon Table Expression zostało przedstawione w SQL Server 2005. Wyrażenie ze słowem kluczowym WITH tworzy tymczasowy rezultat wynikowy, który przedstawia dane z pojedynczego polecenia “SELECT,INSERT,UPDATE,DELETE” albo z widoku “View”.

JS AllmanJeśli pracowałeś z JavaScript przez bardzo długi czas to zapewne wiesz ,że JavaScript ma szczególny format nawiasów klamrowych.

Nie chodzi jednak tutaj tylko o styl formatowania ustalonych przez programistów. Istnieje pewien poważny powód dla którego powinieneś zwrócić na to uwagę. Nawias klamrowy w złej linii może zniszczyć twój kod JavaScript.

WPFKolejny wpis, który powstał ze słowa kluczowego wpisanego do wyszukiwarki Google przez pewnego studenta. Oj biedni studenci jacy to oni trudne programy mają do napisania xD.

W sumie ja na początków studiów w Białej Podlaskiej też nie byłem takim weteranem.

Lock Screen Od czasu do czasu śledzę poprzez jakie słowa kluczowe trafiają użytkownicy na mojego bloga. Tytuł tego wpisu  reprezentuje właśnie jedno z tych słów kluczowych. Obecnie na blogu istnieje tylko jeden wpis o Windows 8 i jestem świadomy tego jakie informację są w nim zawarte ,a jakie nie. Dlatego postanowiłem opisać bardziej szczegółowo niektóre triki w Windows 8.

Twitter

W poprzednim wpisie opisałem jak w WinRt możemy się zalogować do Facebook i wysłać wiadomości. Sieci społecznościowe są dzisiaj w modzie dlatego pomyślałem sobie dlaczego nie zrobić podobnej aplikacji testowej dla Twitter-a.

WinRT

Na co dzień miliony osób korzysta z facebook. Facebook też jest ważnym aspektem jeśli chodzi o marketing samej aplikacji.

Nic więc dziwnego, że aplikacje dają możliwość pochwalenia się swoimi wyczynami na facebook-u.

Przejściówka Zawsze myślałem ,że aby pobawić się kinect-em trzeba mieć specjalną wersje tego urządzenia . Oczywiście nie można go kupić w Polsce. Normalnie nie można podłączyć kinecta z Xbox-a do PC.

Na szczęście jednak nie trzeba wydawać 500$ dolarów by zacząć swoją przygodę z Kinect SDK.

MSMQ

Niezawodność to jedna z najbardziej wymagających cech, które musi posiadać dzisiejsze oprogramowanie. Ta cecha jest nawet punktem krytycznym dla rozproszonych biznesowych aplikacji. Jeśli jeden człon rozproszonego systemu przestanie działać  cały przepływ akcji  się zawala.

CrossPlatform

Większość dużych przedsiębiorstw programistycznych ma homogeniczne środowisko. W tym środowisku żyją programiści, którzy zwykle koncentrują się na jednej technologii i na jednym języku programowania. Jeżeli występuje nawet jakiś podział na pod-frameworki, to programiści są szkoleni wciąż jako specjaliści do jednego konkretnego rozwiązania.

BPMN To jest mój pierwszy wpis o BPMN. Nie jestem jakimś specjalistą od tych spraw. Jestem studentem, który musi napisać projekt używając modelowania BPMN. Na szczęście moim zdaniem jest to jeden z ciekawszych przedmiotów jakie napotkałem w trakcie swoje procesu edukacji.  Szkoda ,że przedmiot został zdegradowany do tego stopnia ,że odbywa się on raz na 4 tygodnie. W międzyczasie inny gniot, który do niczego mi się nie przyda będzie moją największą zmorą w tym semestrze.

Dodatki Visual Studio 2012 to naprawdę zaawansowane narzędzie programistyczne i widać ,ze z każdą wersją staje się ono coraz lepsze. Pomijać może eksperyment z czarno-białymi ikonkami.

Kiedyś dawno temu na tym blogu opisałem swoją listę ulubionych dodatków do Visual Studio 2010.

Pomyślałem ,że w raz z nową wersją Visual Studio wypadałoby by odświeżyć tą i listę i stworzyć nowy wpis na bloga.

SQL

TRY TRY/CATCH to konstrukcja, która występuje w wielu językach programowania. TRY/CATCH pomaga odseparować daną logikę zapytania która w szczególnych przypadkach może zwrócić błąd.

W bloku TRY wykonujemy niebezpieczne zapytanie .W przypadku wystąpienia błędu łapiemy ten błąd go i obsługujemy w bloku CATCH.

Szybki TopTen trik ma już swoje lata ,ale nie jest powszechnie znany. Jedną z najczystszych operacji które wykonuje “SQL Server Management Studio” to operacja SELECT TOP na tabelce na której operuję. Zawsze trzeba sprawdzić jakie rekordy znajdują się w danej tabelce i jaki mają układ. Czy procedura dodała rekord tak jak trzeba i tak dalej.

Skróty Skróty klawiszowe pełnią ważną rolę w zwiększeniu produktywności. Nawet jako programista .NET w większość czasu spędzam w “SQL Server Managment Studio”. Dlatego postanowiłem spędzi trochę czasu na nauce skrótów klawiszowych. Swój blog traktuje jak notatnik więc mam nadzieje ,że kiedyś w przyszłość ten wpis i mi się przyda.

Wpisy o skrótach klawiszowych programu Eclipse i Visual Studio możesz też tutaj znaleźć.

Windows 8 Do premiery Windows 8 zostało już parę dni.

Ci co mają konta MSDN już mogą się cieszyć nowy system Microsoft-u. Czekałem ,aż miesiąc ,aby sformatować sobie dysk i zainstalować ósemkę.

Dlaczego?

Wiele źródeł sugeruje ,że bezpośrednia aktualizacja systemu z siódemki na ósemkę to bardzo kiepski pomysł.

Jednak na świeżej ósemce instalacje programów jak Visual Studio (2010 i 2012) była szybka i bez bolesna. Naprawdę warto zakupić sobie dysk przenośny ,zrobić backup i świeżo zainstalować nowy system. W ten sposób nie będziesz zawracał sobie głowy różnymi problemami.

Group byArrrghhh!!!

Znowu się spotykamy mój odwieczny przeciwniku (nie włączając w to żółtego ekranu śmierci ASP.NET).

Człowiek programuje od wiele lat ,ale z jakiegoś powodu moje neurony wciąż myślą ,że polecenie GROUP BY działa tak jakby tego chciał. W rzeczywistość tak nie jest i widzę po raz kolejny ten sam błąd. Nic więc dziwnego ,że w całym SQL polecenie GROUP BY należy do jednych z najbardziej znienawidzonych przeze mnie funkcji.

Dzisiaj jednak nastał dzień sądu przyjacielu ponieważ raz na zawsze utrwalę sobie jak działa funkcja GROUP BY.

JOIN Operacja JOIN jest najprawdopodobniej najczęściej używaną operacją w jakiejkolwiek bazie danych. Nie jest to niczym zaskakującym ponieważ system został  stworzony w taki sposób ,aby wyrażać związki pomiędzy rekordami bez  dublowania informacji.

MERGE Słowo kluczowe Merge zostało przedstawione w Sql Server 2008. Jego celem jest ułatwienie pisania skomplikowanych poleceń, które muszą wykonać różne funkcję na danej tabelce jak DELETE,INSERT i UPDATE za jednym zamachem.

Wcześniej ,aby wykonać te wszystkie funkcję trzeba było pisać wyrażenia INSERT, UPDATE i DELETE oddzielnie.

SnippetW tym wpisie opiszę podstawy tworzenia własnego snippet-u (skrawka) w Visual Studio 2010.

Visual Studio ma już pewną listę gotowych snippetów z których warto skorzystać jednak wciąż nic nie stoi na przeszkodzie ,aby stworzyć własne dostosowane do  określonych potrzeb.

SQL CLR To jest pierwszy artykuł na temat pisania procedur,funkcji i innych rzeczy w Common Language Runtime (CLR). Ten artykuł koncentruje się na podstawach budowania procedury SQL w Visual Studio 2010 za pomocą C#.

Tak można pisać procedury i funkcję w kodzie w C#, które zostaną później wykorzystane przez SQL Server jako biblioteka *.dll.

jQuery W tym wpisie wytłumaczę jak uzupełnić kontrolkę rozwijanej listy przy użyciu jQuery i Ajax. Użyje metody strony ASP.NET (WebMethods) do przekazywania asynchronicznego informacji pomiędzy klientem i serwerem.

Dzięki użyciu rozwiązania WebMethods nie muszę deklarować oddzielnej usługi sieciowej .Co doskonalone zaspokaja specyficzne potrzeby istniejące tylko dla jednej strony ASP.NET.

COALESCECOALESCE akceptuje serie wartości z listy wyników, które mogą być puste (NULL) potem ona zwraca pierwszą nie pustą wartość z tej listy.

Taka funkcjonalność daje wiele kreatywnych użyć w  bazie Sql Server.

Oto proste przykłady.

SQL

OrderBy Pisząc aplikację w .NET zwykle używamy LINQ do sortowania danych ,ale jeśli dane pochodzą od systemu bazo danowego to dlaczego nie posortować informacji już na tym poziomie.

SQL oferuje nam klauzurę ORDER BY dzięki niej możemy ustalić po jakiej kolumnie informację będą posortowane.

Ajax Zwykle gdy chcemy zrobić cokolwiek asynchronicznie w ASP.NET korzystamy z gotowego frameworku ASP.NET AJAX. Dzięki niemu mamy wciąż kontrole nad stroną używając tylko C# . Znajomość JavaScript i Jquery nie jest wcale wymagana w takich asynchronicznych scenariuszu.

Niestety takie rozwiązanie też ma swoje wady. ASP.NET AJAX nie jest wydajny. Jest on w końcu uniwersalny rozwiązaniem na problem asynchroniczności. Uniwersalność tworzy dużo kodu i procedur, które zwykle nie są potrzebne dla prostych rozwiązań.

XML Nodes W poprzednim wpisie pokazałem jak odczytać plik XML przy użyciu OPENXML. Według dokumentacji jest to najbardziej wydajny sposób na odczytywanie dużych naprawdę dużych plików XML. Jednak alternatywa istnieje i ma ona nazwę XMLNodes.

Podane poniższe operacje można wykonać tylko na parametrze typu XML w poprzednim przykładzie użyłem parametru VARCHAR.

Oto prosty przykład odczytu XML jak i zapisu jego zawartości do tabeli. Kiedyś pewien kolega zasugerował mi to jako jeden ze sposób do umieszczania listy danych na raz w procedurze n.p do insertów. Dzisiaj szczerze zastanawiałbym się nad inny rozwiązaniem ,ale ten sposób nie jest też do końca taki zły.

Kasowanie W tym wpisie przeanalizuję problem kasowania powtarzających się rekordów.

Istnieje wiele rozwiązań tego problemu. Ja postanowiłem przedstawić trzy różne rozwiązania i porównać je w różnych scenariuszach. Sprawdziłem te trzy metody w dwóch różnych wypadkach.

W pierwszym przypadku mamy tabele niezindeksowaną, która posiada dwie kolumny. Pierwsza kolumna to identyfikator, druga natomiast zawiera losową wartość liczbową. Tabela ta zawiera 100.000 rekordów, które się powtarzają. Ze względu na losowość nie wiem dokładnie, ile jest powtarzających się rekordów?. Naszym zadaniem jest je usunąć.

W drugim wypadku mamy tabelę tymczasową z 4 kolumnami. Identyfikator, Imię, Nazwisko oraz Numer. Rekordów tabeli jest tylko 11. Nie są one generowane losowo więc wynik operacji zawsze będzie taki sam, bez względu na to z jakiej metody skorzystamy. Wiemy też jawnie, ile rekordów się powtarza, w tym przypadku chcemy skasować rekordy, które mają takie same Imie i Nazwisko oraz Numer.

Oba wypadki zawierają kolumny NOT NULL oraz posiadają identyfikator auto-inkrementalny.

to OpenSzczerze ktoś powinien poważnie zastanowić się nad budową komunikatów błędów. To jest najgłupszy i najbardziej nie zrozumiały błąd jaki mogłem otrzymać w imageprogramie SQL Managment Studio.

Co gorsza kiedyś w przeszłości też miałem ten problem i wiedziałem jak go rozwiązać ,a oczywiście z biegiem lat człowiek o tym zapomniał.

Dlatego zrobiłem o tym wpis ,aby mój odpowiednik z przyszłości wiedział jak rozwiązać ten problem. Podziękujesz mi potem stary.Puszczam oczko

W trakcie procesu dołączenia istniejącej baz danych ze strony Dot.NetNuke napotkałem się na taki problem.

MessageTak jak większość programistów pierwszy test nowej technologii zaczyna się od dobrego napisu “Hello World”, tego samego szukałem w WinRT.

WinRT przemodelowało wszystko i znajome przestrzenie nazw jak i klasy mogą już nie istnieć w WinRT.

Pisząc pierwszą aplikację w WinRT chciałem tylko wywołać prosty MessageBox z napisem “Hello World” , jak się jednak okazało klasa ta nie istnieje w WinRT.

Losowe znaki Czasami istnieje potrzeba wypełnienia danej kolumny, mówiąc delikatnie byle czym.

W takim celu wypadałoby stworzyć jakiś generator tworzący napis z losowym ciągiem znaków. Kiedyś w pracy otrzymałem takie zadanie i z tego, co pamiętam wykorzystałem tę procedurę także do tworzenia losowych haseł oraz do generowania kuponów testowych w aplikacji loteryjnej..

MonoCzęsto gdy porównywane są  technologie ASP.NET czy PHP, czy języki programowania  Java i C# pada cała lista za i przeciw tym rozwiązaniom. Siłą PHP i Javy jest to , że reprezentują rozwiązania, które działają prawie wszędzie. Jest to zwykle argument przeciw rozwiązaniom .NET ponieważ one działają tylko pod systemem operacyjnym Windows.

Jednak w czasie takiej dyskusji zawsze pojawi się fan, który będzie bronił swojej technologii   i powie “Pod Linux-em jest Mono więc .NET też działa na wiele platform”. Za każdym razem gdy, widzę takie twierdzenie zastanawiam się jak bardzo jest ono zgodne z prawdą. Fakt możesz w Mono napisać aplikację ASP.NET pod Linux-em ale czy w tym jest jakiś haczyk..

IntegerW pracy musiałem przygotować prezentację na temat MonoDroid, czyli o pisaniu aplikacji na telefony z Androidem w C#. Częścią tej prezentacji były proste przykłady podkreślające dlaczego C# jest lepszy od Javy. Prezentacja miała jednogłośnie podkreślić na jednym slajdzie, że programowanie w C# jest bardziej intuicyjne.

Gdy szukałem powodów, dla których Java jest " zła" natknąłem się na pewne dziwne zachowanie, które wykazuje brak konsystencji w samy języku Javy.

Mimo, iż programuję od kilku lat w Javie nigdy nie natknąłem się na ten problem. Zapytałem weteranów od Javy z uczelni PJWSTK ale nie bardzo wiedzieli o czym ja mówię.

Dlatego pomyślałem sobie , że napiszę ten wpis by zawsze mieć jakieś fajne anegdoty dotyczące języka Java..

Google+Google+ istnieje od ponad roku. Pomimo pomyłki z “Google Buzz” Google chwytami marketingowymi przed startem reklamowała się jako lepsza alternatywa dla Facebooka , zdobywając w ten sposób dużo zwolenników. W Polsce dużo szumu nie ma o Google+. Firmy marketingowe oczywiście śledzą poczynania Google+ . Nie jest to żadnym zaskoczeniem ponieważ Facebook zrewolucjonizował ich cały biznes.

Pytanie brzmi do czego potrzebne nam jest Google+ , jak to może nam pomóc w biznesie. Jak osoby tworzące treści w Internecie mogą zdobyć więcej fanów za pomocą Google+.

H1 vs H2Standardową praktyką dla developerów sieci web front-end jest umieszczenie loga bądź tytułu strony w tagu H1. Jednak najczęściej tytuł artykułu jest ważniejszy ponieważ określa wartość i kontekst danej zawartości strony.

Pytanie brzmi, które z semantyk jest właściwe z punktu SEO. Oto przykłady:

MsnbotZ okazji migracji bloga dokształcałem się w SEO jednak specjalistą nie jestem ale myślę ,że ten artykuł ciebie zaciekawi.

Widziałem wiele tutoriali, które rekomendują banowanie robotów, które zawierają napisy jak libwww-perl i msnbot. Rozumiem ,że ktoś chciałby zbanować boty typu “libwww-perl” ponieważ one służą głównie do spamowania i hakowania.

Pytanie jednak brzmi; dlaczego wiele stron rekomenduje banowanie msnbot/bingbot?.

Odliczamy Możesz stworzyć statyczną zmienną DateTime do swojego projektu i przechowywać w niej czas uruchomienia aplikacji poprzez uzupełnienie jej datą w głównym konstruktorze aplikacji.

Później tą zmienną porównujemy z obecnym czasem ,aby otrzymać okres w jakim działała aplikacja.

Przesadzone Niedawno, mój młodszy kolega, z którym się przyjaźnię zadał mi sporo ciekawych pytań na temat “środowiska pracy”. Tak, jak ja rok temu, to teraz on stawia swoje pierwsze kroki w tym biznesowym świecie.

Zapytano go, czy jest zainteresowany pewną konkretną ofertą pracy w dziale IT ?. Kiedy pierwszy raz o niej usłyszał to wydawała się być OK.

Potem jednak otrzymał listę wymagań, która okazała się długa.

Stwierdził, że pewnie istnieje jedynie niewielka grupka ludzi, która spełnia postawione wymagania.

Zapytał mnie “Czy firmy są świadome tego , że nie znajdą “perfekcyjnego” kandydata ?”.

Odpowiedź na to pytanie jest bardziej złożona, niż z pozoru mogłoby się wydawać.

Karta SD Akurat piszę aplikację w Javie na telefony z systemem Android. Aplikacja w dużej części korzysta z karty SD. Pytanie “jak w ogóle sprawdzić czy karta ta istnieje ?”. Aplikacja, próbując uzyskać dostęp do czegoś ,czego nie ma, może wywalić wyjątek. Jest to standardowy przykład na to, że w urządzeniach komórkowych nigdy nie ma pewników, zwłaszcza w Android.

Pierwszy sposób na sprawdzenie istnienia karty jest prosty. Pobieramy folder, w którym powinna się znajdować zawartość karty SD. Jeśli folder ten nie istnieje, to znaczy , że karty nie ma..

Statystka

Wraz z procesem przenoszenia bloga zastanawiałem się , po co w ogóle go piszę. Fakt początkowo chodziło o dokształcanie samego siebie i wciąż jest to solidny powód. Stary blog stał się na tyle popularny ,że niektórzy znajomi znali mnie zanim ja ich poznałem, co było dosyć fajnym przeżyciem.

Jednak, gdy blog zaczyna działać i zdobywać jakieś wyświetlenia to na chwile odkładasz swoją pasję na bok i sztywno analizujesz magiczne wykresy..

Przenosiny

Po 8 miesiącach szukania rozwiązań, przenoszenia postów ręcznie oraz pisania własnych styli CSS - w końcu strona ta istnieje. Gdy pokazałem swoim kolegom ze studiów PJWSTK ten styl metro byli pod wrażeniem, dopóki nie zobaczyli adresu localhost. Oczywiście zostałem wyśmiany.

Pomimo braku ingerencji z mojej strony stary blog dobrze się trzymał i nawet pojawili się jacyś fani.

Jednak blogger irytował mnie do tego stopnia ,że nawet rozważałem jego całkowitą destrukcję.