Przejdź do głównej zawartości

Posty

Wyświetlanie postów z 2019

Naprawiam kamerę Foscam

Od czasu pewnego incydentu zakupiłem kamery do obserwacji terenu wokół mojego domu. Jedna z nich (pierwsza, jaką nabyłem) jest produkcji firmy Foscam, model FI9900P V1. Niestety moja kamera padła w ostatnim dniu gwarancji. Na szybko ją spakowałem i wysłałem, żeby załapać się na naprawę gwarancyjną. Naprawa trwała ponad miesiąc ale i tak kamera po powrocie nie działała, zupełnie tak samo jak przed wysłaniem.  Postanowiłem zmierzyć się sam z naprawą. Przy braku doświadczenia naprawiania podobnych rzeczy naprawdę trudno jest znaleźć punkt w którym zacząć. W moim przypadku, podłączałem kamerę i obserwowałem wiresharkiem ruch sieciowy, żeby sprawdzić czy kamera próbuje pobrać adres z dhcp (żadnego pakietu nie było), czy skonfiguruje się na adresach APIPA przy braku dhcp, czy w końcu można się z nią połączyć na domyślnym ip. Nic. Kolejnym krokiem był update firmwaru. Skontaktowałem się z firmą foscam, opisałem mój problem i poprosiłem o pomoc. Wysłano mi plik z firmwarem i instrukcje j

C# F# - różne dźwięki .NETa

Lubię porządne języki programowania a C# z pewnością jest jednym z nich. To moje główne narzędzie pracy. Nie jest to jednak jedyny dobry język programowania na świecie. Kiedy w pracy pojawiła się okazja napisać jeden z naszych serwisów w F#, byłem bardziej niż szczęśliwy. Niektóre projekty były już napisane w C# i przepisywałem je na F#, inne trzeba było pisać od zera. Myślałem, że F# jest tylko kolejnym językiem z dziwną składnią, który robi te same rzeczy w taki sam sposób. Byłem w całkowitym błędzie. Miałem problem z napisaniem metody w interfejsie, potem z zaimpelemtowaniem jej. A potem z użyciem jej w innym miejscu. To wszystko jest tak bardzo inne od C#, że ciężko to wyrazić w słowach. Poza inną składnią obiekty buduje się też i używa w inny sposób (jak choćby to, że w domyśle są niezmienne). Deklaracja metody w C# wszystko mówi o typach już w pierwszej linijce: string method( string param1, int param2) Podczas gdy w F# może wyglądać bardziej jak to: let method param1 p

Xamarin Forms Jest Wielki

Pisanie aplikacji na iOS jest przyjemne, Xcode jest wyśmienitym środowiskiem a praca w nim jest zabawą. Mam apkę na iOS, którą chciałbym przenieść również do Androida. Myślałem o przepisaniu jej w Xamarin.Forms. Okazało się, że apki pisane w Xamarinie (obecnie część Visual Studio), też są przyjemne do pisania. Wybrałem Xamarin.Forms, żeby zminimalizować rozmiar kodu specyficznego dla platformy. Apka jest dostępna na githubie: https://github.com/jaropawlak/MyExpenses.Xamarin i ma większość funkcjonalności, którą miała moja oryginalna aplikacja. Jest jednak pewien problem, DUŻY problem. To rozmiar binarki. Podczas gdy moja oryginalna aplikacja na iOS zajmuje mniej niż 2MB na urządzeniu, wersja Xamarin.Forms zajmuje około 100MB. To jest nie do zaakceptowania dla tak małej aplikacji. Nie przeszkadza mi kiedy jest jakiś powód dla dużego rozmiaru paczki, zniósłbym to też, gdyby nie sprawiało, że apka wolniej się ładuje. Ale sprawia. Zobacz tu: Fajne, co? Natywna jest super szybka

Let's GO

    C# jest super. Każda kolejna wersja bierze najlepsze rozwiązania z innych języków i utrzymuje go na wysokim poziomie. Aczkolwiek pisanie ciągle tylko w C# i w pracy, i w domu czasami staje się nudne. Lubię się uczyć nowych języków bo to dobre ćwiczenie dla mózgu. Postanowiłem napisać prosty program w Go. A z racji, że nie mam pomysłu co napisać, wezmę aplikację poprzednio pisaną dla .NET Core i przepiszę ją w Go. Aplikacja ściąga historię dziennych kursów kryptowalut na giełdzie Binance. Chcę ściągnąć wszystkie kursy od początku czasu aż do teraz. Przepisywanie rozpocząłem od najprostszej możliwej rzeczy: package main const hostUrl = "https://binance.com" const apiResourceUri = "/api/v1/klines" const apiGetSymbolUri = "/api/v1/exchangeInfo" const downloadLocation = "data" //katalog z zapisanymi danymi Na razie nieźle. Otwarcie urla http://binance.com/api/v1/exchangeInfo daje między innymi listę wszystkic symboli jakie ta giełda obsługu

Coredata i Cloudkit

Z iOS 13 dostaniemy nową fajną rzecz: bazę coredata z backupem do cloudkit. Dokładnie to, czego potrzebuję. Pech, że moje stare urządzenie nie dostanie tego updatu. Mój lekarz powiedział, że powinienem zapisywać co jem. Dokładniej - powinienem podzielić mój dzień na przedziały 2-3 godzinne i jeśc mały posiłek w każdym z nich. I zapisywać co jem i pokazać to lekarzowi kiedy się spotkamy żebyśmy mogli porozmawiać o tym co pownieniem jeść, a czego nie. Przez kilka tygodni zapisywałem wszystko w arkuszu Excela ale apka byłaby dużo wygodniejsza! Myślałem o prostym loggerze na iOS i stronce do generowania raportów. W tym miejscu przydałby się ten bajer z backupem coredata do cloudkit. Okazało się, że zrobienie tego ręcznie też nie jest bardzo pracochłonne. Oto jakie zmiany były potrzebne: // przed...  class Repository { func createLogItem() -> LogItem { return LogItem( context: context!) } func deleteItem(_ item: LogItem) { context?.delete(item)