Because Azure knowledge is required during the current project, I am trying to transfer my AWS experience to Azure. 🙂 This mindmap is mapping the core services from AWS to Azure.
This mind map is made through XMind Evaluation version.
A concurrency conflict occurs when one user displays an entity’s data in order to edit it, and then another user updates the same entity’s data before the first user’s change is written to the database. If you don’t enable the detection of such conflicts, whoever updates the database last overwrites the other user’s changes. In many applications, this risk is acceptable: if there are few users, or few updates, or if isn’t really critical if some changes are overwritten, the cost of programming for concurrency might outweigh the benefit. In that case, you don’t have to configure the application to handle concurrency conflicts.
Pessimistic concurrency (locking)
If your application does need to prevent accidental data loss in concurrency scenarios, one way to do that is to use database locks. This is called pessimistic concurrency. For example, before you read a row from a database, you request a lock for read-only or for update access. If you lock a row for update access, no other users are allowed to lock the row either for read-only or update access, because they would get a copy of data that’s in the process of being changed. If you lock a row for read-only access, others can also lock it for read-only access but not for update.
Managing locks has disadvantages. It can be complex to program. It requires significant database management resources, and it can cause performance problems as the number of users of an application increases. For these reasons, not all database management systems support pessimistic concurrency. Entity Framework Core provides no built-in support for it, and this tutorial doesn’t show you how to implement it.
Optimistic Concurrency
The alternative to pessimistic concurrency is optimistic concurrency. Optimistic concurrency means allowing concurrency conflicts to happen, and then reacting appropriately if they do. For example, Jane visits the Department Edit page and changes the Budget amount for the English department from $350,000.00 to $0.00. At the nearly same time, John changes it as well. More on Microsoft Docs Handle Concurrency
MMES is a great expense track app IMO, it is open source, easy to use. Even the UI is legacy, the UX cannot compare to many great Mac Store Applications or Electron Applications. Dependents on what the users care the most, if UX/UI, please not use MMEX. If privacy and data consistency, MMEX, Gnu Cash, the open source options will be the most suitable.
MMEX it has an android version too, when I found this app, I feel so amazed, the UX is better than the desktop version, with a simple sync solution, (syncthing, or dropbox etc), it can be very powerful too.
The only problem is the app itself is not well maintained or developed any more now.
As a loyal user, even the app was not developed anymore, I still keep using it, until I found an issue, when my mmex DB (SQLITE DB) size became quite big (1 Mb, I think), the app keeps crashing.
Why MMEX Android crashes when the DB becomes large
After check the source code, there is one assuming from me.
MMEX Android will query all data in once to create a queryset, not query by demand
When the transactions get more and more, this initial query became heavier and heavier, until and android app could not handle it.
Very luckily, as an un-professional mobile developer and lack of knowledge of the app. I could not fix it by myself.
There was a PR to bring MMEX Android live again(merged now) which is to make the development requirement and dependency be new and updated.
What after giving up the Fork
After I found the complexity, I gave up making MMEX android alive again. Instead, I started a new project which is Building SaaS, As I am much familiar with SaaS project building.
Unfortunately, there is no official Lineage OS 19 release yet, the new Lineage OS release usually will be later than AOSP release, but it does not mean users cannot have a look of what Lineage OS 19 will be. The video below is a user who customized Lineage OS 19 based on Android 12 on Redmi Note 7 Prop.
More about Xiaomi and Data leaking if you have a concern about privacy.
Diversity is a real concern for more and more companies. I think the reason for that is the increasing awareness of human rights protection.
I talked to many people in work place about diversity as well, I think different people have different understandings.
Questions to Ask
I knew one guy, he has opinion like this.
We are a real diversity focused team, because we have people from Asia, we have people from America, Europe, and We have local people, we have males and females.
I knew another person who cares about diversity in workplace, she asked a question I remembered during acquisition.
Nearly all the board members are male, do we have a diversity in the organization, and do we really care about it?
Honestly, I think gender diversity, nationality diversity should not be such a big concern. What is more important, is to respect the difference, and collaborate different people and understand different people to work together towards the objectives.
It does not really matter where the person is from, or whether the person is male or female.
Everyone is unique, if an employee’s review is based on whether he is social, whether he is good at a specific language, or on appearance, it would make it unfair, and it makes the problem in the workplace more serious to have a gender or race diversity.
A fair and a diverse working culture should be a person’s review is basing on
what the person does,
what the persons are good at,
how well the person communicates, (even the work language is not the person’s native language, or whether the person communicates in a tech-guy way or not).
etc
I met a colleague in workplace, he always likes to give colleagues tags, like, Social, Hard-working, Brave, Collaborating, etc. It is OK because of all these tags are neural, nothing good or bad. The only problem for that is the criteria, his standard is that, if you are not doing like me to meet people or talk to people, you are not social, if I cannot understand what you talk, you are not collaborating, if you do not match my exception in my mind, you are not hard-working. All criteria are subjective. This basically creates more problems in work place, even have a good diversity, but no respect, no objective standard for review, that only makes things worse.
So IMO the real diversity is to respect the difference and the most important thing in a work place should be Respect, Objectives, Collaboration and Happiness.
There is a weird situation for Chinese game players on Steam. There are Chinese language package packs, they do not work on Mac, but only on Windows.
I found there are 7 languages supported for Civilization 5 on Windows, but only 4 supported on Mac. Civ5 is not the only game like this, there is more.
Anyway, Civ 5 does not require much about English profeciency, not like EU4, I found EU4 is super hard to play in non-native languages.
How to solve this?
I found there are a couple of discussions and community support for the Chinese language packs.
The only problem here, is that Steam hide the BaiduYun URLs by default, and BaiduYun is not very friendly for anonymous/non-register users. It always asks users to install the App to scann the QR code to download the files. I used this online tool to get the downloading works.
Civ 5 Chinese Language Packs 文明5中文语言包
I download the languages packs and upload to IPFS.