Docker Disk Cleanup on Windows
Software Principles
Configure Traefik to use custom domain name, Let’s Encrypt and Azure DNS Zone
Configure Traefik to use traefik.me domain name
Edit Android’s emulator hosts file
Recently, I’ve developed Android app that during the development requires access to the backend service that is run in the docker behind reverse-proxy with custom myservice.traefik.me domain name.
For sure, from emulator you can get access to your local service when connect to it by IP address with specified port. But this approach leads to some issues and ugly workarounds in a code.
There are several solutions to this problem like edit hosts file, run own DNS server etc. But the simplest one is just simply editing hosts file on emulator.
Swift. Two-way communication between an iOS app and watchOS app. PART 2
In the previous article we created very simple SyncService service that can send and receive data between iOS as watch app. Which is good for very simple scenarios, but when application complexity is growing it is really important to keep you code clean, and well organized. In this article we will try to isolate sync logic from the rest of the application.
In one of my project I had to synchronize data based on different events, in different part of application. But all that code had a lot in common. So, to clean up it a bit and make it more reusable I introduced generic SyncObject class that encapsulates all basic sync logic.
Swift. Two-way communication between an iOS app and watchOS app. PART 1
So, you have decided to create iOS application with its watch companion application. And, you need to exchange some data between two of them. For this scenario Apple provides simple WatchConnectivity framework, that specifically designed for this type of scenarios. This framework does most of the heavy lifting and your goal is simply to implement the business logic.
In this article consists of two parts:
- Part 1. Minimum you need to sync data.
- Part 2. One of the approaches to encapsulate complex sync data logic.
Lets get started. To isolate all logic in one place lets create a service. First of all we need to import WatchConnectivity framework. Also, we need to implement WCSessionDelegate delegate protocol that defines methods for receiving messages from WCSession.
Swift. JSON serialization/deserialization
Working with JSON format, probably one of the most common task in the software development, whether you organizing the data storage or send data over network or any other reason. Therefore it will be very common task in the mobile development. Likely, Swift provides build in functionality to work with JSON format.
To encode (serialize) or decode (deserialize) our object to JSON format we need to make sure that object implements Encodable protocol and/or Decodable protocol. Or simply it can implement Codable protocol that combines both Encodable and Decodable protocols.
Swift. Get Application Basic Info
Very often you need to get basic application information, for example to show user an application version or maybe some issue has occurred and you want to collect some details about user device. Some information are relatively easy to get some are not so.
So, lets get some basic information. Personally, I prefer keep that information isolated and in one place. Lets create AppInfo struct and add couple of imports.
Configure Synology VPN Server with Custom Domain
Probably you heard a lot about VPN services that became very popular in past several years and wondered if you need one. If you are using public Wi-Fi a lot in coffee shops, hotels, malls (you know it is dangerous, right?) or you want to get access to the content that is not accessible in your region then yes you need it. So, you can buy one of those service or if you have Synology device you can configure your own VPN Server for free. Unfortunately, your own VPN Server will address only public Wi-Fi problem, for accessing content that is not available in you region you still need to buy VPN service, unless you have Synology devices in different region.
Host you domain in Azure DNS
There are many cases when you want to dynamically add/remove CNAME, A/AAA records to your domain. To do that you should get familiar with yours domain registrar API (if any) and its limits (like requests per day, throttling, etc.). But, if you’re already working with Azure it is much easier to use Azure DNS zone instead, because it provides full control over your domain and familiar experience. So, lets get started.
Enhance the ASP.NET dictionary model binder for Multipart requests
Connect your app to Azure Cosmos DB Emulator on Docker. PART 2
In this article we are going to focus on how to connect our application to the Cosmos DB Emulator from Docker. This article is continuation of the Part 1 of this series. I suggest to read it first before continue, because this part is based on previous one.
Add Docker support to our application
Before we continue we need to add Docker support to our application we created in Part 1 of this article.
Connect your app to Azure Cosmos DB Emulator on Docker. PART 1
Recently I’ve tried to use official Cosmos DB Emulator on docker , but quickly encountered some issues that I’ll try to address in this article.
Hosting Hugo site on Azure Static Web Apps
Recently when I decided to start my own blog, one of the first questions I had where and how I’m going to host it. Long story short I’ve decided to use Azure Statics Web App , because Azure provides a free account. So, if it is free why not 😄.