Tak, lubię, jak okazuje się, że można zrobić coś, czego uczymy się że nie można tego zrobić.
Na przykład tego, że „strings are immutable”, albo jak kto woli, że łańcuchy znakowe są niezmienne. To znaczy jak mamy zmianę, to tak naprawdę tworzy się dla nas pod spodem nowy string. Czy to prawda? No jeżeli zamkniemy się do bezpiecznego kodu zarządzalnego to jest prawda, jednakże ogólnie da się zmodyfikować stringa, pod warunkiem że odtańczymy taniec szamana (użyjemy wskaźników), przeskoczymy nad ogniem (czyli nasz kod będzie w sekcji unsafe) i zagrozimy śmieciarzowi by trzymał się od naszej zmiennej z daleka (więc zablokujemy „wskaźnik” na stercie).
Więc zróbmy tak, by w naszym stringu poszło oczko.
Kategoria: programowanie
Po miesiącu wrócił do mnie z gwarancji lapek – w pełni sprawny i gotów do działania. Trzeba więc na powrót przenieść do niego wszelakie projekty. W tym… api webowe.
Zależało mi na selfhostowaniu – ktoś mógłby powiedzieć – przecież iis nie ma takich problemów. Ale to już serwer HTTP i tak ręka mi drży jak mam go odpalić, więc wolę nie, przynajmniej na razie.
Mówiłam już jak bardzo kocham projekty webowe? Między innymi dlatego.
Mam taką manierę, że jak ogarnęłam jak się coś robi w jednym miejscu, czasami się rzucam na pałę i zbyt analogicznie próbuję to zrobić w drugim.
Bawiłam się w autofac pod desktopem i fajnie było, więc próbując uczyć się pisać webapi (pod kątem pisania pracy dyplomowej) postanowiłam że sobie też poużywam, bo zaczęło mi się podobać, że jak chcę użyć funkcji z innej klasy, to zamiast kombinować z tworzeniem klas z jej zależnościami, po prostu wrzucam interfejs w konstruktor i gotowe, mam całkiem świeży obiekt na moje potrzeby.
Także miałam sobie klasę z jedną metodą
Jedną z zalet tego, jak coś się robi jest to, że czasami coś udaje że działa. A jak to mówi mój wybranek życiowy – „Jak coś czasami nie działa, to to nie działa”. Także piszę sobie kod uczelniany typowo, i w którymś momencie, ten wg mnie „skończony” projekt próbuję odpalić poza debuggerem. I tak zaczyna się moja historia, bo okazuje się, że to NIE działa. No chyba że uruchomię poza debuggerem i potem debugger podepnę.
Zacznę może od opisania problemu jaki miałam wczoraj w pracy. Ładuję sobie z bazki dane (acz ich źródło jest w tym momencie tak istotne jak skład obecnego parlamentu, czyli wcale), aby je po dość banalnej obróbce pokazać użytkownikowi.
Kolejna notka z pola bitwy pod Oraclem. Znowu błąd z cyklu „pod MS SQLem działa”.
ORA-06502: PL/SQL: błąd liczby lub wartości: za mały bufor tekstowy
No i znowu ten Type Initialization Exception.
Tym razem w pracy (pozdro dla szefa- pozwolił mi na opisanie przypadku) zdarzyła mi się taka sytuacja.
Zrobiłam drobną zmianę w kodzie, by umożliwić sterowanie testemi (wstrzeliwany config z wiersza poleceń- . Wszystko pięknie ładnie na zielono, odpalam apkę….
Istnieje pewna klasa błędów, których rozwiązanie sprowadza się do edycji (lub przeniesienia) jednej linijki kodu. Do tych błędów należy ten, który udało mi się ostatnimi czasy popełnić (hmm… nie podam dokładnie kiedy, bo za cholerę nie jestem w stanie sobie przypomnieć daty urodzenia napisanego z rąsi ostatniego kawałku kodu). Ok, nie był do końca napisany ręcznie, bo użyłam snippetu „propdp”, który służy do genowania propert które sobie możemy użyć potem z poziomu XAMLa chociażby.
Mam takiego współpracownika, nazwijmy go piłkarz z gitarą, jako że wolał pozostać anonimowy (ale zezwolił na publikację zadania i rozwiązań). W którymś momencie podszedł do tablicy i napisał „Sum(1)(2)(3)()) -> ma zwrócić liczbę” i powiedział, że mamy 10 minut od teraz. Jeszcze coś wspomniał, że zadanko to ma potencjał do bycia zadaniem rekrutacyjnym dla seniorów, bo trzeba pomyśleć trochę nieszablonowo.
Ilekroć piszemy testy w których wstawiamy jakiś string, często mamy do wyboru: słowo „dupa” losowe przebiegnięcie po klawie „reytudgihjlkgeuriwomudhcsdbysfhdxilkmcndbile8worfoe” Słowa typu „another string”, „it must…
Chyba wrócę do bycia interopem. Można dostać euforii (żeby nie nazwać tego inaczej) kiedy wywołuje się w swoim kodzie czyiś kod, zwłaszcza, jeżeli nie był on dedykowany specjalnie na Twoją platformę. Kiedy wywołujesz jakąś losową dllkę, napisaną w czymkolwiek pod cokolwiek… a już najwyższym stopniem tejże euforii będzie … wywołanie funkcji z dllki systemowej. Takiej wiecie, System32 czy coś… takiej, no weźmy kernel32.dll. Brzmi strasznie. Zróbmy coś, od czego komp nie wybuchnie. Ustawmy mu czas.
Choroba ma swoje dobre strony. Jak akurat nie boli, można się za coś wziąć. Na przykład za napisanie posta na blogu, na którym nie pisało się nic od prawie roku.
No to i piszę;)
Dziś wezmę na tapetę modyfikatory dostępu. Temat zdaje się prosty i oklepany. Mamy ich kilka i są dobrze zdefiniowane:
• Private – dostęp tylko z klasy
• Protected – dostęp z klasy i jej dzieci (klas dziedziczących po klasie)
• Public – dostęp skąd popadnie
• Internal – dostęp w zakresie jednego assembly
• Protected internal– dostęp w zakresie jednego assembly, nielimitowany dla dzieci (dzieci nie muszą być z tego samego assembly, ale nie-dzieci już muszą)
i …
Hejo.
Trzeba napisać jakiegoś technicznego posta do DSP, a tu wyjazd i nie ma jak;). Na szczęście jadę dopiero jutro, więc mam jeszcze kilka godzin dnia dzisiejszego, aby coś popisać.
Mam nadzieję, że jakiś kod mimo wszystko powstanie w pociągu, acz z publikacją posta może być gorzej, tak czy inaczej, postanowiłam opisać coś, co może być przydatne na początku kariery, jednocześnie nie jest to żadne rocket science wymagające większego przygotowania.
A więc…
Tego posta miało nie być. W bardziej zwięzłej formie miałam napisać (i napisałam) zwykły komentarz na blogu. Niestety nie dało rady z tym komentarzem u niego, w takim razie opiszę tutaj.
Owo zamieszanie wywołało we mnie zdanie:
DISCLAIMER:
Artykuł jest pisany na poziomie ameby tudzież ucznia podstawówki. Jeżeli masz choć blade pojęcie na temat .net czy c# zrezygnuj z czytania tego artykułu i zajmij się czymś ciekawszym.
Pewnego razu trafiło mi się na facebookach takie pytanie „dlaczego z listy konwertuje na IEnumerable a odwrotnie nie” -cytat jest skopiowany żywcem, autor wolałby pozostać anonimowy. Jako że nie ma głupich pytań i każdy kiedyś zaczynał, odpowiem koledze i innym ciekawym.
Hej,
Z góry przepraszam że mnie wcięło, pociągi mi bokiem wychodzą, jak i ta cała praca. Nie tak dawno temu minął mi rok, z czego się bardzo cieszę. Jeszcze tylko rok i milestone przepracować pierwsze dwa lata życia będzie zaliczony.
Kiedy akurat nie czytam książki, nie śpię lub nie pracuję, przeglądam inne blogi. Siedzę a to na dotnetomaniaku, a to u któregoś ze slackowych (ircowym coś się nie chce blogować ostatnio) znajomych odpalę arta czy dwa, no i okazało się, że procent robi fajny konkurs. Tzn nie tyle konkurs fajny (acz nagroda przednia), co propozycje tematów. Art nie pasuje do żadnej z kategorii, ale nawiązuje tematycznie do całego wydarzenia. No może trochę. A z pewnością stanowiło inspirację. Tak czy inaczej, zapraszam do lektury.
Z komunikatami o błędach w produktach Microsoftu jest tak, że jeśli znajdziemy wskazówkę jak błąd naprawić to musimy skopiować ją do wyszukiwarki zamiast wykonać, ponieważ jej wykonanie może nam coś zepsuć, a zazwyczaj nic nie naprawi. Tak było i w tym przypadku.
Udało mi się wyskrobać templejt do Visual Studio. Używam go do generowania wyjątków. Nic, tylko rzucać. Oczywiście tutaj jest domyślne działanie, które nie zawsze nam…