Po krótkiej przerwie, wracam do blogowania. Ostatnio, pokazałem jak C# traktuje przeładowywanie metod. Nie zawsze jest to proste i czasami naprawdę może spowodować błędy w interpretacji. Jeszcze raz chcę powtórzyć, że celem wpisów NIE jest zachęcenie czytelników do pisania skomplikowanych przeładowań. Wręcz odwrotnie – wiedząc jak trudno odgadnąć wynik należy po prostu unikać przedstawionych konstrukcji.
Strona głównaUżytkownik
Paweł Łukasik | użytkownik
Sztuka programowania 3847 dni, 22 godziny, 14 minut temu 196 źrodło rozwiń
Tytuł tego posta określa wg mnie ten kawałek viżuala: Naszukałem się swego czasu baaardzo sporo, aby odnaleźć sposób na otwarcie tego z klawiatury, głównie dla komendy “open containing folder”. I się nie udało. Znalazłem nawet dedykowane temu problemowi pytanie na SO pozostające bez poprawnej odpowiedzi, więc uznałem, że się nie da. Ale ostatnio całkowicie niechcący… udało się.
Ostatnio czytając jedną z książek o programowaniu w Objective-C natrafiłem na sformułowanie o polimorfizmie, które spowodowało u mnie wodę z mózgu. Musiałem się nad nim naprawdę zastanowić, gdyż do tej pory w ogóle o tym w takich kategoriach, a jednak. Po dłuższym zastanowieniu się zrewidowałem swoje pojęcie co to jest polimorfizm. Wszystko zaczęło się od tego zdania:Polymorphism enables programs to be developed so that objects from different classes can define methods that share the same name. Kod w O...
Sztuka programowania 3855 dni, 23 godziny, 45 minut temu 217 źrodło rozwiń
Wpadłem na pomysł rozwiązania pewnego dręczącego mnie problemu (o którym pewnie wkrótce) w aplikacji webowej. Pomysł ten polega na wstrzyknięciu informacji o aktualnym użytkowniku w postaci JSON do HTMLa zwracanego do przeglądarki. Ot, po prostu żeby strona kliencka wiedziała z kim ma do czynienia. Aplikacja ta powstaje w Nancy – bardzo eleganckim frameworku, o którym chyba kiedyś wspomniałem, ale też którego nigdy w technicznym poście nie poruszyłem. W Nancy ...
Przeładowania metod to podstawy języka. Niestety, nieumiejętnie stosowane, mogą przystworzyć problemów nawet zaawansowanym programistom. Z tego względu, uważam, że należy po prostu unikać tych przeładować, które są zbyt trudne w zrozumieniu – powodują niepotrzebne zamieszanie. Zacznijmy od klasycznego przykładu, który jest zrozumiały dla każdego
Sztuka programowania 3861 dni, 22 godziny, 18 minut temu 241 źrodło rozwiń
Gdybyś mnie dziś zapytał jakie książki warto przeczytać aby lepiej programować to odpowiedziałbym:Pragmatyczny programista. Od czeladnika do mistrza.Czysty kod. Podręcznik dobrego programisty (Uncle Bob)Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C# (również Uncle Bob) Ot taki starter. Wszystkie książki czytałem już kilka lat temu więc nie pamiętam dokładnie co w...
Nie wiem jak wy, ale od kiedy w FF mogłem pierwszy raz użyć console.x (log etc), zakochałem się w tym czymś od razu. Alert poszedł w niepamięć, zaś by wspierać IE pisało się proste wrappery które wywoływały alert wtedy kiedy trzeba było. Ale sam nie wiem czy to przez moją nieuwagę czy też przez niechęć do czytania niektórych artykułów dłuższych niż dwa akapity (głównie tych w dokumentacji produktu :)) w ogóle nie zauważyłem metody która odmieniła ponownie moje życie :)
Raz na jakiś czas, od dawna, dość regularnie, szczególnie w okresie około-wakacyjnym, dostaję maile z pytaniami od osób zastanawiających się nad własną, szeroko pojętą, przyszłością. Przyszłością w kontekście zostania słodkim, wymiatającym, wypasionym programistą. Nie wiem właściwie skąd przeświadczenie że ja, “complete-stranger”, mogę posiadać odpowiedź na to pytanie:), ale jako że do mnie jest ono właśnie adresowanie, ...
Razor Concatenation Można wygooglować, ale ja nie od razu na to wpadłem (może nie wiedziałem jak nazwać), więc chciałbym się podzielić i zaoszczędzić czasu komuś. Jest to lepsze od string.Format(): StackOverflow: ASP.NET MVC Razor ConcatenationAbout these adsShare this:TwitterDodaj do ulubionych:LubięWczytywanie... Ten wpis został opublikowany w kategorii Tip of the day ...
O tym, że od dawna można w VS używać transformacji web|app.config pewnie każdy już wie (jeżeli nie do zapraszam do przeczytania podstaw w poście Web Deployment: Web.Config Transformation). Jak i każdy wie, że łatwo jest zmienić wartość jednej wartości z appSettings czy też ją kompletnie usunąć. Tak jak łatwo jest usunąć lub zamienić inne elementy które już istnieją. Czy jednak kiedykolwiek, próbowaliście coś dodać? Dla przykładu, jeżeli będziecie chcieli dodać tag
Sztuka programowania 3868 dni, 19 godzin, 15 minut temu 97 źrodło rozwiń
Prosta zagadka. Rozważmy następującą tabelą z dwoma kolumnami: CREATE TABLE Test ( ID Int IDENTITY(1,1) PRIMARY KEY, Name CHAR(10) ) CREATE INDEX IXTESTNAME ON dbo.Test (Name) Teraz na wejściu dostajemy pewien ciąg znaków i przechowujemy go w zmiennej: DECLARE @Variable CHAR(10); SET @Variable = '1234567890'; Chcemy znaleźć wszystkie te rekordy, dla których N pierwszych znaków w kolumnie Name jest takie samo jak N pierwszych znaków w zadanym ciągu. Można to zrobić tak (N=3)...
Bazy danych i XML 3868 dni, 19 godzin, 15 minut temu 209 źrodło rozwiń
W kilku wpisach chciałbym przedstawić różnicę między tymi dwoma typami. Osoby piszące aplikacje finansowe z pewnością znają te różnice bo to właśnie w tych typach aplikacji, double powodował bardzo poważne błędy. Przed przeczytaniem wpisu, niezbędne będzie przypomnienie sobie następujących informacji: 1. Przeliczanie systemu binarnego, szczególnie części dziesiętnej. 2. Liczby zmiennoprzecinkowe. Nie będę tego opisywał na blogu, ponieważ są to zagadnienia wyjaśniane już wiele razy – ale pisząc aplika...
Sztuka programowania 3868 dni, 19 godzin, 15 minut temu 292 źrodło rozwiń
O Simple.Data parokrotnie już pisałem na blogu. W aktualnym projekcie używamy tej biblioteki dość intensywnie – tak naprawdę zastąpiliśmy nią całkowicie NHibernate i jest to nasz jedyny sposób na kontakt z bazą. W większości scenariuszy w tym systemie ów wybór sprawdził się znakomicie. Ma to także swoje wady, ale o tym może kiedy indziej. Problem pojawia się w momencie, gdy chcemy wykorzystać Simple.Data z bazą danych, która nie jest...
Bazy danych i XML 3874 dni, 20 godzin, 42 minuty temu 192 źrodło rozwiń
Jak macie R# 8 zainstalowanego to odpalajcie jego extension manager (alt+r+x) i instalujcie Resharper Mnemonics Live Templates (możliwe że restart vs będzie wymagany albo po prostu się powiesi przy pierwszym wykorzystaniu). Rozszerzenie to dodaje szablony do tworzenia klas (c), metod (m), własności (p), opcji macie wiele, najważniejsza zasada to taka, że jeżeli pierwsza litera jest mała to jest to metoda/klasa/własność publiczna, jak jest duża to jest to statyczna publiczna. Wasza praca stała się właśn...
Czasem na prawdę małe rzeczy potrafią poprawić humor programiście. Takie drobne rozwiązania, które pozwalają na przyspieszenie tworzenia programu… Ostatnio musiałem zrobić instalator aplikacji – wybór padł na WiXa. A tam przy każdym elemencie wchodzącym w skład instalatora trzeba podać GUID.
W Gicie możemy zlecić ignorowanie zmian zachodzących w plikach na kilka różnych sposobów. Na ten temat pisałem już w poście “Git a ignorowanie plików“. Dziś skupię się na jednym z nich, a mianowicie na fladze “assume-unchanged”. Służy ona do poinstruowania Gita, aby traktował wybrane pliki, które już zostały dodane do repozytorium, jako niezmodyfikowane. Dwa przykłady zastosowania: mamy plik konfiguracyjny, który w repozy...
Pewnie każdy na swojej ścieżce programistycznej spotkał się z klasą abstrakcyjną. Wrzucamy tam kod, który zdaje się być domyślną implementacją pewnej grupy klas i szkoda nam kopiować tego zachowania do każdej z nich osobna. Skoro wszystkie zachowują się podobny sposób, czasem tylko dodając coś od siebie, to warto wykorzystać dziedziczenie i napisać mniej (DRY).
Sztuka programowania 4003 dni, 4 godziny, 51 minut temu 226 źrodło rozwiń
Wieczór, umowa z klientem na biurku, a my wciąż myślimy czy na pewno dobrze robimy pozwalając na zapis "aplikacja internetowa będzie działała w przeglądarce X, Y, Z”… w głowie dwie sprzeczne myśli: jest dobrze, damy radę i druga jest źle, przecież jest tyle różnic… Jeżeli budując aplikacje dla siebie czyli zamówienie wewnątrz-firmowe czy na zamówienie klienta zewnętrznego zawsze należy pomyśleć nad wpisem dodającym jakie przeglądarki i najlepiej jakie wersje będziemy wspierać i przez jaki czas po oddani...
Ostatnio wspomniałem o problemach, na jakie możemy natrafić bawiąc się OAuth w wersji 1. W sieci istnieje wiele różnych providerów, skracających nasze męki przy autoryzacji, jednak wcale nie ukracają one mąk jakie musimy przejść gdy chcemy coś więcej niż tylko autoryzację. Na szczęście mały projekt RestSharp przychodzi nam na ratunek. Dzięki niemu za pomocą kilku prostych metod, możemy dodać nagłówek authorization do zapytania z odpowiednimi parametrami jak iż z automatycznym podpisywaniem zapytań. Prz...
Pisząc testy jednostkowe dość często spodziewamy się identycznego zachowania w różnych testowanych scenariuszach. “Gdy zajdzie X, ma wydarzyć się A, B i C”. Z kolei “gdy zajdzie Y, ma wydarzyć się A, B i D”. W takich przypadkach, wykorzystując standardowe biblioteki do unit testów, mamy do wyboru kilka rozwiązań: wspólna klasa bazowa współdzielone metody “asercji” w ramach jednej klasy copy/paste testów pomiędzy klasami … pewnie jeszcze coś i...
Sztuka programowania 4007 dni, 2 godziny, 30 minut temu 101 źrodło rozwiń