Welcome to the first, or actually, the episode number 0 of my first online course ever named “Becoming a software developer”. o what is it all about? The goal is simple – I’ll be acting as a mentor to a friend of mine Patryk Huzarski, who would like to become a software developer.
Tworzenie aplikacji na najświeższą platformę Windows (Universal Windows Platform) nie powinno sprawiać dużych problemów nawet początkującym osobom w tym temacie. Warto jednak już od pierwszych kroków wyposażyć się w ciekawy zbiór bibliotek od Microsoftu, który uprzyjemni pracę w UWP. Zróżnicowany zestaw pomocnych elementów znacznie usprawni programowanie na platformie Windows.
Nowadays, asynchronous programming isn’t something unusual. We all know that when it comes to do some I/O operations or HTTP request, we should do it async. Why? There’re several reasons but two most important are:Efficiency. In many cases, the code might work faster. That’s because it’s not forced to wait for the result. Instead, it can work on some other stuff and then come back for the response when it’s ready. Simple is that.Comfort. Async improves the comfort of using our applications. We don’t blo...
Sztuka programowania 2864 dni, 1 godzinę, 9 minut temu 334 źrodło rozwiń
Programowanie współbieżne – jeden z najbardziej zaawansowanych tematów programistycznych. Z jednej strony programowanie równoległe jest już standardem, z którym mają styczność (może w pewnym stopniu nieświadomie) nawet początkujący programiści. Z drugiej strony nadal tylko niewielu programistów potrafi pisać poprawny oraz efektywny kod współbieżny.
Sztuka programowania 2864 dni, 1 godzinę, 9 minut temu 270 źrodło rozwiń
It’s been a few months already since I’ve started working for good with distributed systems using (micro)services and asynchronous processing via service bus. Many issues and question raised and one of these was how to not lose the information about commands and events being processed and even more importantly, how to notify the user once the request has completed? I’ve had to come up with some solution that seems to be sufficient (at least for now) and I’d like to share it with you.
Architektura 2865 dni, 5 godzin, 21 minut temu 146 źrodło rozwiń
Reading time ~4 minutes This post is an analysis of a very interesting optimization proposed by Nicholas Frechette in the comments under the previous post. He proposed to use one of the oldest tricks in performance cookbook - divide and conquer. Well, it did not turn out as I expected.Saga Before I go further here are some link to the previous posts on the problem of calculating similarities and then optimizing. This thread grew to a few post. Here are all of them:How I calculate similariti...
Sztuka programowania 2874 dni, 18 minut temu 82 źrodło rozwiń
Kilka słów o tym, że nie zawsze idzie poprawnie wyszpiegować co siedzi w binarce. Czasami kod znacznie odbiega od rzeczywistości i to bez użycia obfuskacji.
It’s been quite a while since I posted the latest update of the Warden project designed for monitoring the resources in general. After a lot of back-end coding and refactoring, the time has come to finally focus on the new web interface implementation. And this is where the things start to become interesting (I promise).
Visual studio simplifies creating of WCF service by providing project templates. First way to create WCF service is to use the New Web Site option and then choose WCF Service. It will create a new web site with a sample WCF service implementation linked to a .svc file, with related configuration in the web.config file. In this approach Visual Studio does not just create the core WCF project and add the needed assembly references, but it also builds the host application.
Programowanie rozproszone 2894 dni, 4 godziny, 51 minut temu 73 źrodło rozwiń
Very often WCF is translated to ABC which corresponds to basic WCF concepts such as: Address, Binding, Contract.
Programowanie rozproszone 2898 dni, 10 godzin, 4 minuty temu 40 źrodło rozwiń
Reading time ~1 minute This will be a fast errata to the previous one. This time I will expand the oldest performance mantra: The fastest code is the one that doesn’t execute. Second to that is the one that executes once Last time I’ve forgot to mention one very important optimization. It was one of two steps that allowed me to go from 1530 to 484 seconds in the sample run.Saga Before I go further here are some link to the previous posts on the problem of calculating similarities and then...
Programowanie rozproszone 2898 dni, 10 godzin, 4 minuty temu 49 źrodło rozwiń
Reading time ~6 minutes Last time I’ve shown how I’ve gone from 34 hours to 11. This time we go faster. To go faster I have to do less. The current implementation of Similarity iterates over one vector and checks if that ingredient exists in the second one. Since those vectors are sparse the chance of a miss is big. This means that I am losing computational power on iterating and calling TryGetValue. How to iterate only over the mutually owned ones and do it fast? Saga Before I go furth...
Sztuka programowania 2895 dni, 9 godzin, 44 minuty temu 59 źrodło rozwiń
One thing that surprised me the most about the C# was the fact that it does not support multiple inheritances (which I knew from the C++). How can we deal with that? Of course, we use interfaces, since one class can implement more than one. But quickly we come to the very common problem...
Sztuka programowania 2893 dni, 8 godzin, 28 minut temu 188 źrodło rozwiń
The first problem raised on the exam from WCF technology is Creating a WCF Service. Here are the subtasks for the problem: Create contracts (service, data, message callback, and fault);Implement message inspectors;Implement asynchronous operations in the service; First let's start from question what WCF is?
Programowanie rozproszone 2898 dni, 23 godziny, 18 minut temu 154 źrodło rozwiń
Sometimes it happens that we use mechanisms/features of specific language without beeing aware of it. That’s fine, but if you’ll want to discuss your code in a future to the audience or coworkers, soon or later you’ll be forced to learn it and understand (or at least name it using technical nomenclature). Therefore, today I’m going to discuss two related „mechanisms” of C# which are covariance and contravariance. Covariance Covariance is a type conversion from the specific type to the more general (ba...
Sztuka programowania 2898 dni, 23 godziny, 18 minut temu 189 źrodło rozwiń
Necessity is the mother of invention – that’s basically why I did create a new open source project called Lockbox. Its main purpose is to provide a centralized and secured storage for the application settings that can be easily fetched via HTTP request. Sounds interesting? Then let me guide you through the most important concepts of the Lockbox.
Today I’ll show you a quite nice example of the Strategy pattern from a real project I was working on some time ago.
Sztuka programowania 2903 dni, 5 godzin, 11 minut temu 197 źrodło rozwiń
There are times that you need to call native (C/C++) code from .NET environment. To do so, you have several options: use C++/CLI, use P/Invoke mechanism, use some sort of inter-process communication like pipes, memory mapped files etc persuade yourself that it's gonna be easy to port this cool C/C++ library to C#. Shoot yourself in the head when trying to do it. We will discuss option 2.
Not so long ago, I’ve eventually decided to dive into the world of microservices. I did look for an opportunity to make use of this architectural pattern for quite some time and finally was able to do so. After 3 months of trying out the new things and learning stuff mostly on my own (the hard way) I believe it’s a good time to share some of my experience. I have no doubts that at some point in the future when I look back at this post I might be like – “oh God, what was I thinking back then, it’s so wro...
Programowanie rozproszone 2908 dni, 9 godzin, 59 minut temu 207 źrodło rozwiń
Przemysław Walkowski No w końcu znalazłem porządne i wygodne miejsce do codziennych ćwiczeń programistycznych – dostępne on-line i dość sensownie zrobione. Nie wielu programistów korzysta z takich rozwiązań. Nie wiem dlaczego. Jednak ja polecam codzienne ćwiczenia w pisaniu kodu i wymyślaniu algorytmów, bo tylko dzięki temu praktycznie zwiększymy szybkość pisania oraz będziemy elastycznie podchodzić do problemów. Jak to wygląda w praktyce napisze poniż...
Sztuka programowania 2908 dni, 9 godzin, 59 minut temu 624 źrodło rozwiń