How to sync configuration between multiple developers’ environments

D8 Configuration management is really awesome and easy to use when there’s only one developer working on a project. We are running into challenges in keeping configuration synced between environments when more than one developer is introduced to a project at the same time.

Example:

  • Developer A is working on feature A. Exports configuration to their feature branch and pushes it to a shared develop branch.
  • At the same time, developer B is working on feature B and does the same thing – pushes feature configuration to the shared develop branch.

How do you import feature A and feature B concurrently?

App that sets configuration data seems to be very inefficiently programmed

I’ve been writing my code like this for a really long time now, I am wondering if there is a more efficient way to do this. This is especially after a senior developer said my code was very amateurish.

App Purpose: I need to set some data for new employees when they join our organisation. This is a simple command app written in .net that takes an argument, splits it and then assigns the variables. A command might look like this: Setdata.exe -Marcus -true -true -false -false. The output is a file that we install on one of our sql servers.

The example below is a small one, but it is not common for the settings to hit 40-50 lines.

Code:

  internal static void ExportSolution(SqlService service, string parms)     {         try         {             parms = parms.Replace(" ", "");             string[] args = parms.Split('-');              string solutionName = args[1];             bool managed = Convert.ToBoolean(args[2]);             bool prefix= Convert.ToBoolean(args[3]);             bool profile= Convert.ToBoolean(args[4]);             bool email= Convert.ToBoolean(args[5]);             bool calendar= Convert.ToBoolean(args[6]);             bool appSettings= Convert.ToBoolean(args[7]);               AppSettingsRequestAppSettingsRequest= new AppSettingsRequest();              AppSettingsRequest.SolutionName = solutionName;              AppSettingsRequest.Managed = (managed == true) ? true : false;              AppSettingsRequest.prefix= (prefix== true) ? true : false;              AppSettingsRequest.Managed profile= (profile== true) ? true : false;              AppSettingsRequest.email= (email== true) ? true : false;              AppSettingsRequest.calendar= (calendar== true) ? true : false;              AppSettingsRequest.appSettings= (appSettings== true) ? true : false;               byte[] exportXml = exportSolutionResponse.ExportSolutionFile;             string filename = solutionName + ".zip";             File.WriteAllBytes(filename, exportXml);              Console.WriteLine("Solution exported to {0}.", filename);         }         catch (Exception ex)         {             Console.WriteLine(ex);         } 

Initial thoughts are that I could create a new class and then instantiate a new object with these variables, but is there anything to gain from doing this?

I need a good UX design that enables changing configuration on both admin and user levels

I’m working at a company hosting several web-applications and mobile apps that enable the customer to show, modify and analyse their own data. Customers might have multiple user accounts per customer. Quite some customers only have one user account as well though.

Some settings should be configurable for all users of the customer at once, but some settings need the ability to be overridden for some users. Some settings also need overrides for specific applications only, or users only. Users with administrator rights should have the ability to change settings on customer level and should be able to restrict the configurability of some settings for others.

So the matrix of configurability for each settings is ‘customer’ and ‘user’, on the one axis and ‘all applications’ and ‘specific application’ on the other axis.

How do I design my interface in such a way that the user knows how to find and alter settings (if authorized) and understands what the scope of these settings are?

How to lock configuration settings in Magento2 Admin?

There seem to be three places for configuration / settings:

  1. env.php
  2. config.php
  3. database (via Admin > Stores > Configuration > …)

For some of the settings available in Magento Admin I would prefer a read-only approach. This seems to be less flexible, but much safer to me.

I have in my mind, that configuration settings defined in the two configuration files cannot be overwritten in Magento Admin – but that turned out to be untrue in my installation (2.2.5):

  • I have some settings in Admin, which I have defined in env.php for the global scope, and I can easily edit the values after having removed the tick from the box “Use Default” / “Use Website”.
  • Other settings in Admin I cannot change at all: The field is greyed out.

I have not found out yet how I can control this behavior. How can I lock a specific setting a) globally for all stores and websites – and b) on individual levels only?

AWS Lifecycle configuration Noncurrentversion transition: Parameter validation failed

I am using aws cli to setup lifecycle management on a S3 bucket. I am using this json script:

{     "Rules": [         {             "Filter": {              },             "Status": "Enabled",             "Transitions": [         {             "Days": 30,             "StorageClass": "STANDARD_IA"         },                 {                     "Days": 365,                     "StorageClass": "GLACIER"                 }             ],             "NoncurrentVersionTransitions": {                 "NoncurrentDays":  1,                 "StorageClass": "GLACIER"                 },              "Expiration": {                 "Days": 3650             },             "ID": "Test"         }     ] } 

and I am getting this error:

Parameter validation failed: Invalid type for parameter  LifecycleConfiguration.Rules[0].NoncurrentVersionTransitions, value:  OrderedDict([(u'NoncurrentDays', 30), (u'StorageClass', u'STANDARD_IA')]),  type: <class 'collections.OrderedDict'>, valid types: <type 'list'>, <type  'tuple'> 

The script works fine when I exclude the part about the NoncurrentVersionTransitions. I was wondering how I could include the NoncurrentVersionTransitions correctly.

Thanks in advance.

Wine games configuration

I’ve got some problems while running a Unity game. When I first launch the game it’s still playable, but when you switch to another window and switch back, you can see the graphics but can’t interact with the game. The game’s animation is still running and still playing sound. The patch downloader for the game that I'm playing - Collective Card Game

Back in the day when I was playing Hearthstone, it has a black screen problem. Then I searched online for a solution, which I input a command into the Battle.net launcher, which forces it to run with DirectX. If I need to configure in the game folder, which is inaccessible for you, the game’s download link is here! Thanks for helping!