Here I will share with you a step-by-step guide to choosing your wedding decor and my personal experience in doing so.
Simultaneously with your appearance, the wedding decor is another perfect way to show your charisma on your BIG day.
However, before you start to check off items from your checklist, remember: there’s more to the process than just choosing the first things you come across.
Selecting wedding decor that’s breathtaking and reflective of your desire as a couple calls for a lot of planning, but don’t worry it will most certainly be worth it in the end!
It’s impossible to choose a wedding decor without having an idea of the way you want your venue to look – Glamorous, Classic, Shabby Chic (check out more shabby chic ideas here), Romantic, Bohemian….etc.
So, step number one is to pinpoint a specific wedding style.
At first it might be overwhelming while looking through magazines or wedding websites. Personally, the more I looked the more I liked. There was a point in which I wanted everything I saw. Of course, that was impossible.
You might be tempted to stock up on decor, order some things online, but honestly, don’t. Inspirational overload happens often and you might end up spending money on items you will not need or use.
Until you have chosen your wedding style and have a clear vision of how you want your venue to look, you might do more damage than good by gathering random decorative elements.
Don’t panic! The original idea of your wedding is more than likely to change throughout the early stages of your wedding process, especially when you take into consideration the season, budget, guest count, etc.
Are you struggling in choosing or describing your wedding aesthetic?
I know how difficult it can be to make your dream wedding vision come to life. You might find putting it all in words or sticking to one style extremely hard. For this reason, don’t think of your wedding style as “the be-all and end-all”.
Aim your attention towards the feeling you wish your wedding to conjure; romantic, modern, edgy, etc., rather than limiting yourself to an exact theme (Vintage, Rustic, etc).
For example, you can tell your vendors that you would like a romantic atmosphere with bohemian undertones. This way they can leave some room for creativity and resilience when choosing your wedding decor.
Although its essential to know the overall colors you want, stay open-minded and try using the color palette as a guideline for your wedding decor instead of overwhelming yourself and trying to thoroughly match everything.
Rather than having “blue and white“, for instance, try to think of a neutral color palette which consists of warmer or cooler undertones. The warmer blues will be towards the green colors (turquoise) and and cooler blues more towards the violet tones. With this approach you have the freedom in choosing several ‘focus’ colors while adding like tones to your decor, eventually creating a genuine look.
Personally, I did not want to have a specific wedding color. I have always thought that is so cliché. Just the thought of everything being pink, blue, green, purple, red, etc. made me go crazy.
I was fond of a few colors and decided to use all of them somehow. I wanted to have a different wedding, not the typical one; therefore I chose to go with pastel colors that would look very gentle and at the same time elegant.
I chose pastel pink, green, yellow, lilac and blue.
Okay, so now that I had chosen the overall colors I had to decide what type of flowers I would like to have in the bouquets and throughout the entire décor.
My favorite flower is the calla lily. Guess what?! I decided that I would not incorporate this flower into my wedding. I did not want white flowers (and before you say that the calla lily comes in other colors besides white I just didn’t think it was the right choice).
I did not want white flowers because the color merges with the wedding dress, table cloths etc.
My advice is to avoid white or very light colors, especially for the bride’s bouquet – unless you incorporate another color to go with it so that it stands out! If you look at wedding photos of a bride holding a bouquet with white flowers, they seem to be missing – there is no contrast; you can see this in the photo below.
The flowers which I mainly chose for the decoration were roses, prairie gentian, paeonia lactiflora. Below you can see a photo of our bridesmaid bouquets.
For my bridal bouquet I chose a mixture of roses, prairie gentian, paeonia lactiflora and echeveria moranii.
Quick tip: When choosing your decor and flowers you can incorporate elements from your attire. For example, my wedding dress had a lot of lace details which I decided to use in the bridal and bridesmaid bouquets as well as decorative hanging jars (you can see them later in the article), this way everything fit within the same style and was the perfect match.
Here is a photo of my bridal bouquet:
After choosing your wedding style, point your focus towards your venue. There is a possibility that it may already have charm or other decorations which can be to your advantage (an example of such can be: landscaped gardens, stained glass windows, scenery walls, fountains, ceiling beams, etc.) Thus, you should think about how you can arrange your wedding decor in a way to highlight those particular details, and how you can benefit from them as well as save some money.
Based on the venue and its design, you might benefit from skipping decor in certain areas due to the existing design. For instance, our venue had a green wedding arch which did not need much decor. We used hanging jars decorated with lace and filled with flowers.
Here are a couple of photos of our arch decor:
In the photo below you can see my bridal bouquet as well as the arch decor – (by using lace and alike colors in both you can see how well everything came into place).
If you choose to get married at an outdoor venue like a lakefront, beach, or a location with a beautiful view, you might not need a lot of decor in the first place.
Actually, if you go crazy by having too much decor, that could draw away from the venue’s scenery. You definitely don’t want that, as that is probably the main reason you chose the location.
Make sure to use photos of the venue you have chosen in order to help yourself envision the decor you want to use, and where.
If you have decided to work with an event stylist or wedding planner, ask them to create mockups of the venue with different variations of the decor so that you can have an idea of what the end result will look like.
Personally, we decided to hire a wedding planner to help us arrange our decor. She sent us a lot of ideas based on our desires and examples of previous decors she had done similar to what we wanted our venue to look like. This helped us envision the end result and what would be best to incorporate.
At this stage, you should have chosen your venue and have a pretty good idea what it requires to turn into the best place for your big day.
Without a doubt, it’s time to begin selecting your wedding decor!
In order to prevent becoming overwhelmed when you begin to go through your wedding decor checklist, begin with the most important items. This consists of all the functional parts, such as chairs, tables, lighting, flatware, china. Also, you will need to have escort cards or a seating chart, in order for the guests to know where they will sit during the reception.
Afterwards, continue with the decorative essentials, like reception centerpieces, ceremony aisle markers, table numbers, altar backdrop. Remember that none of these elements are a must in regards to functionality, but they are essential in terms of constructing and altering the look and feel of your wedding space, notably the centerpieces.
You might want to choose simple votive candles and greenery or lavish hanging arrangements. No matter what centerpieces you desire to have, they will be the main focus points in your reception area, therefore they must match your wedding style by including the same colors and overall vibe to your decor.
We decided to use a flower centerpiece on top of a round mirror with crystals all surrounded by clear glass (decorated with lace) votive candles (shown in the photo below).
Regarding aisle markers, for our wedding we chose lanterns and bird cages filled with the same flowers throughout the entire decor placed in jars decorated with lace. Also, inside was a book, candle and other greenery which went along with the outdoor environment of the venue. You can see this decor in the photos shown below:
After you have chosen the most essential wedding decor elements, you can aim your attention on the smaller details.
Try and think about items that aren’t mandatory, but they will increase your guests’ overall experience and act as an addition to your wedding style.
For instance, you can choose to use place cards if you want to assign your guests to a particular seat at their table, and you may choose from various different options that go beyond the classical paper cards.
Menu cards are also available as a choice, particularly if your guests have chosen their food on the RSVP cards. However they are awesome as they create an explicit atmosphere as well as remind everyone of their meal choices.
Finally, a wedding signage is an effortless way to complete your venue. You can exhibit signs to draw attention to a particular thing or use them simply as decorative highlight that features a romantic quote or a worthwhile sentiment.
If you have not gone over your budget, you might take into consideration adding some extravagant items.
You might have dreamt of having luxurious backdrops (hanging macrame) or vintage furniture. Such items can be a great addition to areas in your venue that need to be filled, or if you desire to dazzle your guests with a stunning element.
If you are looking to create a celebrity style wedding, you might consider adding a flower wall.
Adding a dessert display is also an option that can surprise your guests in a nice way.
There are many examples in which you can astonish your guests and create an atmosphere that will allow them to have an amazing time.
We decided to include a wedding photo corner. We thought this would bring more elegance to our venue as well as provide us with an area where we can take photos with all of our guests.
To conclude, choosing your wedding decor can be an overwhelming process. Take your time, relax, and make sure to plan ahead.
There will always be something that you could have and should have done better, trust me.
Every year there are new and more modern ideas that brides incorporate in their weddings. We cannot have it all in only one day. Just make sure you’re happy with what you choose and don’t make compromises that will lead to regrets in the end.
I am sure your wedding day will be perfect and your wedding decor will be beautiful.
I would love to hear from you and see the wedding decor you decided to use for your Big day.
Leave a comment below and share your photos and thoughts of your breathtaking wedding decor.
Don’t forget to check out the fundamental guide on How to choose your wedding dress (With Examples)
[Viktoria Dobreff]
Keep yourself motivated during your wedding preparation with our wedding quotes:
[quotes type=”love” author=’Ariel Levy’ limit=’5′]
[quotes type=”dreams” author=’Lance Bass’ limit=’5′]
]]>Here we will show you how you can easily and fast, setup multiple working environments, using single Vagrant machine (from single box).
[dropcap]V[/dropcap]agrant is a Hashicorp product, which “is a tool for building and managing virtual machine environments in a single workflow“.
With it, you can emulate pretty much every server environment, you or your team is using for production.
Vagrant is the perfect solution for local development out there, and even if there are others like Docker for instance, they posses way too many flaws compared to what you could achieve with Vagrant.
Here is what you will achieve in the end:
What you need in order to have Vagrant up and running locally:
Not much huh?!
Most common configuration used out there is VartualBox + Vagrant.
Vagrant is a free software as well as VirtualBox – you can download these on whatever your preferred operating system is.
As this document scope does not cover the details about how to install Vagrant, we will focus on a very basic explanation.
For more detailed explanation you could refer to official documentation located here: Vagrant – getting started.
Vagrant works with so called boxes – they are from different providers (you could create your own if you want) and they contain different pre-installed configurations (usually, but not only, Linux based).
After installing VBox and Vagrant you need to initialize project in directory of your choice with the following (in this case we will use bionic64 from Hashicorp which is for VBox provider and it is based on Ubuntu Bionic Beaver)
$ vagrant init hashicorp/bionic64
$ vagrant up
After executing the commands above, Vagrant will create a file named Vagrantfile in your current directory with a predefined configuration in it, and download and start the virtual machine.
It will also create a sub-directory named .vagrant (leading dot is not a mistake ). Those two we will use for our multi-project configuration with single virtual machine.
That’s it – you have just installed your Vagrant virtual machine successfully!
Now type:
$ vagrant ssh
And voila – you are in!
Now – exit from the machine by typing:
$ exit
or just press Ctrl-D simultaneously – that will end your Vagrant session and will bring you back in the console of your own computer. Now stop Vagrant:
$ vagrant halt
The very basic Vagrant commands you must be familiar with are:
In order to work, Vagrant needs Vagrantfile present, so it will know how to start and configure your machine.
It checks directory hierarchy to try to find one – you can check the documentation here. But in our example we will presume that it always will be in the directory where your project is, and you will always start it from that particular directory.
Vagrantfile contains more or less the following:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.box = "hashicorp/bionic64"
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 80, host: 8080
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
#
# View the documentation for the provider you are using for more
# information on available options.
# Enable provisioning with a shell script. Additional provisioners such as
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
# documentation for more information about their specific syntax and use.
# config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2
# SHELL
end
Again – there are many different options you could play with, but we will focus on ones that will give us the ability to use one virtual machine for more than one project.
Those options are:
That option will give us the ability to “see” our virtual machine from the local network. The options you should set in your Vagrantfile are:
config.vm.network "public_network", :use_dhcp_assigned_default_route => true
Which tells Vagrant to start the machine assigning the IP from the public network (our local network in this case) and ask the DHCP for the dynamic IP which it could use for the machine.
With this set, next time we run vagrant up, it will ask DHCP for dynamic IP from the network and will assign it to the virtual machine. If you are using Linux, after starting Vagrant, log into it and type:
$ifconfig
I know – ifconfig is deprecated and should not be used beacuse of IPv6 support bla-bla. I really doubt that your local network is using IPv6
You can easily install it by typing:
sudo apt install net-tools -y
But if you still think that this is bad idea – use this command instead:
ip -c a
That will give you pretty much the same results (check for eth1).
From here you should see the IP assigned to the machine:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255
inet6 fe80::a00:27ff:febb:1475 prefixlen 64 scopeid 0x20
ether 08:00:27:bb:14:75 txqueuelen 1000 (Ethernet)
RX packets 905 bytes 113854 (113.8 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 683 bytes 115420 (115.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.222 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::a00:27ff:fefe:60ec prefixlen 64 scopeid 0x20
ether 08:00:27:fe:60:ec txqueuelen 1000 (Ethernet)
RX packets 43 bytes 8244 (8.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 14 bytes 1236 (1.2 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 14 bytes 1188 (1.1 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 14 bytes 1188 (1.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Here you can see the IP from the eth1 – inet 192.168.1.222
, which means that you can access your machine on that IP – via browser, ping or whatever you prefer, from every computer located in the same network.
If you have more than one network adapter assigned to your computer, and Vagrant could not decide which one to use automatically it will show the following after vagrant up is executed:
==> default: Available bridged network interfaces:
1) en0: Wi-Fi (AirPort)
2) en1: Thunderbolt 1
3) en2: Thunderbolt 2
4) bridge0
5) p2p0
6) awdl0
7) llw0
==> default: When choosing an interface, it is usually the one that is
==> default: being used to connect to the internet.
==> default:
default: Which interface should the network bridge to?
and will wait for you to select the proper one. Choose (like it suggests) the one connected to the internet – usually that is your WiFi adapter, in our example that is en0: Wi-Fi (AirPort)
, select 1 (in our case) and Vagrant will continue with booting the machine.
If you want you can put that in the Vagrantfile configuration, so from now on, when you are booting the machine it will not wait for your choice before continuing. To achieve that add the following to the config.vm.network:
config.vm.network "public_network", :use_dhcp_assigned_default_route => true, :bridge => "en0: Wi-Fi (AirPort)"
Where of course you should change the en0: Wi-Fi (AirPort)
, with your adapter’s name.
From now on the Vagrant will use that adapter and wont ask you to choose one.
That option tells Vagrant to map folder from you computer (host) to your Vagrant machine. More details for that option you could see here.
In order to explain how to use that option we will presume the following:
You have the main projects directory, lets say it is MyProjects, located in your home directory. In that directory you have sub directory for every project, lets say it is MyFirstProject. In that folder you have cloned (GIT) the project (in sub directory), lets say it is my_first_project, so we have the following:
~/MyProjects/MyFirstProject/my_first_project/
Vagrant is initiated in ~/MyProjects/MyFirstProject and Vagrantfile and .vagrant directory are in that directory.
That project is a PHP project which needs to run from /var/www/html on your Vagrant machine.
So, given the above presumptions you need to map your host directory ~/MyProjects/MyFirstProject/my_first_project into /var/www/html on your Vagrant machine.
To achieve that you need to add the following to your Vagrantfile (located in ~/MyProjects/MyFirstProject):
config.vm.synced_folder "./my_first_project", "/var/www/html",
:owner => 'vagrant',
:group => 'www-data',
:mount_options => ['dmode=775', 'fmode=775']
with that you are telling the Vagrant to use my_first_project directory and map it to the /var/www/html on the virtual machine, set the owner to vagrant (that is the default vagrant user for Vagrant machine), set the group for those files to www-data (if you using default Apache config, otherwise – change that group respectively), and sets the permissions to 775.
That’s it – next time you boot the machine, you will have my_first_project in your Vagrant machine with the location /var/www/html
So your final Vagrantfile should look similar to:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.box = "hashicorp/bionic64"
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 80, host: 8080
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
config.vm.network "public_network", :use_dhcp_assigned_default_route => true, :bridge => "en0: Wi-Fi (AirPort)"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
config.vm.synced_folder "./my_first_project", "/var/www/html",
:owner => 'vagrant',
:group => 'www-data',
:mount_options => ['dmode=775', 'fmode=775']
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
#
# View the documentation for the provider you are using for more
# information on available options.
# Enable provisioning with a shell script. Additional provisioners such as
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
# documentation for more information about their specific syntax and use.
# config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2
# SHELL
end
That directory is created when you init your Vagrant project. In that directory, Vagrant stores information about the machine, like name, ID, how to provision that machine etc.
That directory has the following structure:
.vagrant
├── machines
│ └── default
│ └── virtualbox
│ ├── action_provision
│ ├── action_set_name
│ ├── box_meta
│ ├── creator_uid
│ ├── id
│ ├── index_uuid
│ ├── private_key
│ ├── synced_folders
│ └── vagrant_cwd
└── rgloader
└── loader.rb
The information we are interested in is located in:
~/MyProjects/quotecites/.vagrant/machines/default/virtualbox
We will get back to it later, when explaining how to start another project using the same machine.
You already have your Vagrant setup and working. Lets see how we could use the same machine for another project (without the need to init, download and setup another one – which takes both – your precious time and resources (HDD).
We will follow the presumptions we made above. So your new project (we will call it MySecondProject) will go to the MyProjects dir. And the git project is cloned into my_second_project dir. Now we have the following structure:
MyProjects
├── MyFirstProject
│ └── my_first_project
└── MySecondProject
└── my_second_project
All you have to do is to copy Vagrantfile from ~/MyProjects/MyFirstProject to the ~/MyProjects/MySecondProject
And copy .vagrant (with all the content in it) dir as well – from ~/MyProjects/MyFirstProject/.vagrant to ~/MyProjects/MySecondProject/.vagrant
Now we have to change one thing in the VagrantFile, and that is the path to the mapped directory (synced folder) from this:
config.vm.synced_folder "./my_first_project", "/var/www/html",
:owner => 'vagrant',
:group => 'www-data',
:mount_options => ['dmode=775', 'fmode=775']
To that:
config.vm.synced_folder "./my_second_project", "/var/www/html",
:owner => 'vagrant',
:group => 'www-data',
:mount_options => ['dmode=775', 'fmode=775']
There is only one other step. We must delete 2 files, they are located inside .vagrant directory:
.vagrant
└── machines
└── default
└── virtualbox
├── synced_folders
└── vagrant_cwd
Delete them (synced_folders and vagrant_cwd) and your setup is done.
Get back to ~/MyProjects/MySecondProject and run:
$ vagrant up
And voila – your Vagrant is now using your new configuration and you can start working on second project without the need to download and setup a new machine. It will use the same machine, every software and service installed and running on it, and the only difference will be the content of the /var/www/html directory – where your second project is now located.
If the machine is running already (on another project), then of course, you must stop / halt it before using it. For that reason my preferred set of commands for starting Vagrant are:
$ vagrant halt
$ vagrant up
With that you can be sure that there will be no collision with other instance of the same machine.
Lets say, that you have to work on multiple WordPress projects using Vagrant. That of course could be challenging if you work from lets say – home and office, and the DHCP assigns different IPs.
That could be a real pain in the ass, having to set the siteurl and home variables under WP. Or even worse if (God forbid) you need to work on the multiple sites under WP .
So lets make our lives easier by doing the following:
Open /etc/hosts (Windows users, please check with Google where it is on your OS) and add human readable domain to the IP assigned to your Vagrant like this:
(Linux like users (MacOS included)) make sure you are editing as admin when you are doing this:
Add anywhere on a separate line:
192.168.1.222 my-first-local-project.com
Where 192.168.1.222
is the IP of your Vagrant machine (you know how to get that from config.vm.network section of this article) and the my-first-local-project.com
is the domain name which could be anything you like.
With that configuration in place you can access your Vagrant virtual machine by just using this domain. In case you are working on WP project – you could safely set that for siteurl and home. And next time you get a different IP address for some reason (switching networks for instance), just edit /etc/hosts and change the line with a new IP and restart Vagrant – that’s it.
(Stoil Dobreff)
See also:
Vagrant image for PHP developing
https://app.vagrantup.com/sdobreff/boxes/ubuntu-20-php-all-in
What is included:
To use the image:
vagrant box add sdobreff/ubuntu-20-php-all-in
vagrant destroy
vagrant init sdobreff/ubuntu-20-php-all-in
That will initialize your vagrant box and will create file named Vagrantfile in the current dir.
See also:
Use single Vagrant for multiple projects
Turns out there is no good tutorial for that.
First – you have to keep in mind that this is set up for sub domain, but that could be easily changed if that does not cover your needs.
Goto https://owncloud.com/download-server/ and check the proper name of the archive file for the current OwnCloud version.
cd /tmp
wget https://download.owncloud.org/community/owncloud-complete-20201216.zip
unzip owncloud-complete-20201216.zip
sudo mv owncloud /var/www/owncloud
After that, run the commands below to set the correct permissions for ownCloud to function.
Then run command below to allow www-data user to own the ownCloud directory.
sudo chown -R www-data:www-data /var/www/owncloud/
sudo chmod -R 755 /var/www/owncloud/
Create new configuration for your nginx. We will do that using the following command:
sudo vim /etc/nginx/sites-available/owncloud
then past that in it:
you can find that file content here: https://github.com/sdobreff/owncloud-nginx-conf/blob/main/ouncloud.conf
upstream php-handler {
server unix:/var/run/php/php7.4-fpm.sock;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /path/to/your/ssl/certificate.pem;
ssl_certificate_key /path/to/your/ssl/certificate.key;
error_log /tmp/sslerror.log;
root /var/www/owncloud;
index index.php index.html index.htm;
server_name domain.name sub.domain.name;
# Add headers to serve security related headers
# Before enabling Strict-Transport-Security headers please read into this topic first.
#add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# The following 2 rules are only needed for the user_webfinger app.
# Uncomment it if you're planning to use this app.
#rewrite ^/.well-known/host-meta /owncloud/public.php?service=host-meta last;
#rewrite ^/.well-known/host-meta.json /owncloud/public.php?service=host-meta-json last;
location = /.well-known/carddav {
return 301 $scheme://$host/owncloud/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host/owncloud/remote.php/dav;
}
location /.well-known/acme-challenge { }
location ^~ / {
# set max upload size
client_max_body_size 512M;
# Disable gzip to avoid the removal of the ETag header
gzip off;
# Uncomment if your server is build with the ngx_pagespeed module
# This module is currently not supported.
#pagespeed off;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
location / {
rewrite ^ /index.php$uri;
}
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
return 404;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
return 404;
}
location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
fastcgi_param front_controller_active true;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off; #Available since nginx 1.7.11
}
location ~ ^/(?:updater|ocs-provider)(?:$|/) {
try_files $uri $uri/ =404;
index index.php;
}
# Adding the cache control header for js and css files
# Make sure it is BELOW the PHP block
location ~* \.(?:css|js)$ {
try_files $uri /index.php$uri$is_args$args;
add_header Cache-Control "public, max-age=7200";
# Add headers to serve security related headers (It is intended to have those duplicated to the ones above)
# Before enabling Strict-Transport-Security headers please read into this topic first.
#add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
# Optional: Don't log access to assets
access_log off;
}
location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
try_files $uri /index.php$uri$is_args$args;
# Optional: Don't log access to other assets
access_log off;
}
}
}
Change the:
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /path/to/your/ssl/certificate.pem;
ssl_certificate_key /path/to/your/ssl/certificate.key;
to your certificate locations (if you are planing to use SSL to access your OwnCloud server). If not – replace those lines with:
server {
listen 80;
listen [::]:80;
set you proper VirtualHost root location – root /var/www/owncloud;
and set proper subdomain name – server_name domain.name sub.domain.name;
(replace domain.name and sub.domain.name accordingly).
then set the server unix:/var/run/php/php7.4-fpm.sock;
pointing your PHP version and path.
Save the file and exit.
After saving the file above, run the commands below to enable the new site, then restart Nginx server.
sudo ln -s /etc/nginx/sites-available/owncloud /etc/nginx/sites-enabled/
sudo systemctl restart nginx.service
For this example I’m using MySql, but you can use Maria DB if you prefer.
Logon to MySql database console using your credentials with the commands below:
sudo mysql -u root -p
Then create a database called owncloud
CREATE DATABASE owncloud;
Next, create a database user called ownclouduser and set password
CREATE USER 'ownclouduser'@'localhost' IDENTIFIED BY 'new_password_here';
Then grant the user full access to the database.
GRANT ALL ON owncloud.* TO 'ownclouduser'@'localhost' WITH GRANT OPTION;
Finally, save your changes and exit.
FLUSH PRIVILEGES;
EXIT;
At the time of this article writing, there is problem with the OwnCloud server which returns 500 error like this:
2020/12/31 10:14:33 [error] 629022#0: *105 FastCGI sent in stderr: "PHP message: PHP Fatal error: Cannot redeclare normalizer_is_normalized() (previously declared in /var/www/owncloud/lib/composer/symfony/polyfill-intl-normalizer/bootstrap.php:15) in /var/www/owncloud/lib/composer/patchwork/utf8/src/Patchwork/Utf8/Bootup/intl.php on line 20" while reading response header from upstream, client: 1.1.1.1, server: code.domain.name, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.4-fpm.sock:", host: "code.domain.name"
Open the intl.php file
vim /var/www/owncloud/lib/composer/patchwork/utf8/src/Patchwork/Utf8/Bootup/intl.php
and comment out the following lines:
#function normalizer_is_normalized($s, $form = s\Normalizer::NFC) {return s\Normalizer::isNormalized($s, $form);}
#function normalizer_normalize($s, $form = s\Normalizer::NFC) {return s\Normalizer::normalize($s, $form);}
]]>
[dropcap]M[/dropcap]editation is such a powerful tool that anyone can use at any point in their life.
If you want to improve the health of your mind you’ve chosen the right place to start.
If you are a beginner, meditation might seem strange in the beginning.
You can choose to meditate in order to free your mind from stress, anxiety, fear, etc or perhaps you want to become more focused as your life is full of distraction.
When was the last time that you decided to take a break from everything?
When did you last decide to put down your phone, stopped working on your computer and put all distractions around you aside?
When was the last time that you did nothing?
Meditation can truly help you be less distracted and can bring you a great joy in your life.
Meditation is a skill in which you can learn to train your mind so that you can have a calmer mind and a greater sense of ease.
You can choose to meditate by yourself or with others.
What meditation really means is to remove ourselves for a few minutes, pause and train our minds to be more at ease and less distracted.
But what does that mean and how can we achieve that?
In order to train our minds we must change our relationship with our passing thought and feelings. We must learn to view them with a little more perspective, thus naturally we will find our place of calm.
Is it normal during the exercise to forget to focus and become distracted? Of course, but we must come back and continue to be perfectly at ease in both body and mind.
One of the fundamental techniques of managing that place of calm is called “focused attention”. So, when we train our mind it’s very important to focus on something. It could be a phrase, word, visualization, a question. However, the most popular thing to focus on is the breath.
Once we have that certain aspect on which we can focus on, it allows us to always come back to it once our mind has wondered off somewhere. And it’s normal for this to happen at times. So this object, such as the breath, allows us to return to that calm and focused attention.
The actual technique of focusing on the breath evolved from techniques which were created over 3,000 years ago.
In the past 2 decades, scientists have been able to explain what the actual focus on the breathe does physiologically. They have been able to measure what happens to blood pressure, stress levels, heart rate and even the structure of the brain.
It has been proven that meditation reduces stress, pain, depression and frustration, as it increases happiness.
Just by sitting quietly and meditating you can be sure that you are changing your life for the better!
Let’s explore a variety of techniques in meditation that can be used in different situations in your life.
Let me ask you something.
Do you have something that you are holding onto at the moment? Something in your life which makes you feel weighed down and heavy as if you have too much baggage?
If yes, it’s time to explore letting go as well as a meditation technique which includes a visualization that can help you feel more at ease in your life.
However, remember that it’s not so easy to let go of what’s going on in your mind. It does take time and consistency. So, don’t get upset if it doesn’t happen as quickly as you thought it would.
Most of the time, our minds are quite busy. It’s similar to a little monkey that jumps around all the time and never really stops or rests. Thus, we often feel tired and overwhelmed.
We tend to miss the sense of rest and relaxation.
Usually, what most of us aim to do is try and think our way out of the problem.
Instead, we should try and find a way to experience peace and learn to relax, but not only physically. We must try to do this internally in order to find relaxation in the mind.
Thus, what we must do is to create an environment in which we can naturally let go.
So, let’s look at an example.
Think of the blue sky as your mind. The blue sky always exists.
Of course, there will be days where there will be lots of clouds (which represent our thoughts) and you may not be able to see the blue sky. There might be long periods in our lives where there are so many clouds that we tend to forget what the blue sky even looks like, but that doesn’t mean that it has stopped to exist.
If we begin to think of the mind in this way, we actually allow the clouds of our thoughts to disappear in order for us to experience more of the blue sky.
There is no need to go anywhere, it’s always present.
So, at first visualization might be difficult, but it’s a pretty simple technique to learn. It doesn’t require a lot of effort.
You can just focus on a place that makes you feel good, that you enjoy. Just remember to focus less on the clarity of the image and more on the feeling that it brings to the meditation, and in time the image will naturally become clearer.
The more we meditate, the more comfortable we become with it. Hence, we not only get the benefits from the meditation, but it carries on and over into the rest of our life.
Here is a guided meditation video from headspace where you can practice the technique of letting go:
As human beings we tend to want to be somewhere else or with someone else and we miss what’s going on in the current moment.
We are so busy thinking about life, dreams, family, work, fear, etc. and we forget to stop and appreciate the preciousness of life.
It’s awesome to feel genuinely grateful and directly experience that feeling of what it means to be alive. This is what we usually take for granted as we are caught up in our everyday life. Always chasing after the future, looking back in the past and not appreciating that our mind at times can be troublesome, but it can be healthy and happy as well.
Let’s explore how through appreciation we can fall in love with life again.
What or who do you appreciate the most in your life at the moment?
At times, it might be something very simple as in getting up in the morning and making your cup of coffee and having that stillness and quiet moment where you can be with your thoughts.
It’s okay to appreciate the little things even though we have bigger ones to be grateful for, as these are opportunities where we can truly be more present to feel a greater sense of gratitude in our life.
So, just remember that there are different ways in which you can appreciate and fall in love with life.
One way is to start with the thinking mind, thus consider aspects in your life that are going well. This might be something which occurs on a daily basis. It might be your physical health. It might be the people around you. It might be the environment or place you live in.
As you can see, there are so many ways that we can find areas of our life which are working very well. However, the tough part is that it doesn’t always connect to the story which we have in our mind.
But we have all experienced a point in our lives where something or someone has touched us in a way that has allowed us to experience that feeling of appreciation. So we must create a space for that.
Start out by sitting up in bed once you wake up and take about 20 to 30 seconds to just appreciate that you have woken up.
When you eat your breakfast take another 20 to 30 seconds and think about where the food has come from and appreciate it.
Also, when spending time with someone instead of having your mind wonder off into your own thoughts, spend time with that person and appreciate them.
As you can see, there are so many ways that you can tap into that feeling of appreciation everyday. As long as we know where these opportunities are and how to look after them, our life will begin to look and feel very differently, instantly.
So, in order to tap into that feeling of appreciation in life, let’s use the technique called “reflection” in a meditation session. It’s an unusual mediation technique, however it is very effective.
Practicing reflective meditation is a way of creating space in the mind where we can choose a topic or a question of contemplation and focus our attention on it.
The intention of the reflective technique is to encourage a quiet, clear space in the mind into which we can then drop a question. But remember, it’s not about trying to answer the question. What we don’t want is to be in our usual everyday thinking where we try to solve the problem. Instead, what we want is to observe what is happening when we drop that question in.
It’s really interesting what comes out into the surface… it may be a thought, a feeling or a physical sensation.
At times, the result might seem related to the question, other times, not at all. For this reason, it’s important to frame the question in the second person and to ask, “What do you think?” rather than “What do I think?”. When doing this, the exercise becomes less conceptual. Thus, our mind becomes more open and naturally curious. What we might do is to either laugh, cry or even both. But remember, it doesn’t matter because there isn’t a right or wrong answer.
This exercise is about learning to listen to the mind, to be interested, to be curious. What’s crucial is to understand that it’s about the journey instead of the destination.
The intention of this meditation is to establish an environment where we touch the emotion instead of just touching the thought, ensuring that we’re actually grateful for life, to the extent that it becomes precious as well as positive while we are alive.
So, why is it crucial that we do feel a sense of gratefulness in our life?
To be grateful isn’t just a great idea. Science contributes to our sense of happiness as well as our overall well-being and how it can actually make us feel different in our life.
To sum up, the results mean that if we can find a way of introducing that greater sense of gratitude at any time in our day, it can undoubtedly boost happiness and help us learn to fall in love with life again.
Over time this exercise allows us to train our mind to remember the feeling in order for it to arise oftentimes. When it does arise it tends to last a bit longer. When we train our mind in this way we can begin to feel more gratitude, not only while we meditate, but in our everyday life.
Just remember, meditation is a practice, hence we must practice it as well as this technique in order to experience it daily.
Here is a video from headspace on reflective meditation. Start practicing now:
Have you ever felt overwhelmed about being overwhelmed? Have you felt anxious about feeling anxious?
Let’s explore how we can eliminate our stress and anxiety so that we can live a happier and healthier way of life.
Most of us don’t actually realize how much stress comes from our own thinking.
Have you been in a situation where at first you are so excited about something, but in the end you are so frustrated and upset that the outcome wasn’t as you wanted nor expected?
Usually the stress comes from inside. It’s really about the way we approach life. It’s the way we think about the mind and the way we work with the mind.
If we were to begin to change the way we work with the mind by changing our perspective of the feelings and thoughts that emerge in our mind, there is a very big chance that we can change not only the way we feel internally, but the way we show up in life for others as well.
We are human and it’s natural for us to experience stress and anxiety. These feelings aren’t necessarily bad, however we feel them so often and to such an extent that they begin to feel overwhelming, thus this becomes an issue because they unfavorably impact the way we feel in our lives.
We usually run away from these thoughts and feelings as we believe that they are going to hurt us, that they will cause us pain, and will only worsen the feelings of helplessness.
So it’s really central to meditation to be able to see these things in a different way and have a different perspective.
It’s kind of like learning to swim in the ocean. Some days the water is calm, other days it’s full of waves and this might make us feel overwhelmed. However, we must learn to understand that we cannot control these conditions similarly to the way we cannot control the conditions in our mind. But as we spend more time in the water, we begin to understand and know these conditions, and we learn how to be more comfortable with the waves which are similar to the thoughts and feelings in our mind. Hence, we stop feeling overwhelmed. Even during the most difficult situations we are able to maintain our sense of balance and calmness.
Just remember, that we cannot complete wipe away stressful thought or feelings in our life, but we can learn to alter our relationship with them.
So let’s explore a meditation technique called “noting”.
This technique is extremely helpful if you often tend to feel distracted by thoughts, especially the ones of anxiety and stress.
When we are meditating and our mind begins to wonder off, we sometimes do not know how to react. Noting gives us a sense of clarity and confidence, hence, in that moment we stop and recognize the nature of distraction.
When we have noted our distraction it kind of feels as if we have dealt with it, thus making it simple to let go of the distraction, and be able to return to the object of focus (for instance our breath).
When this occurs again, which it is normal to happen, just apply the same approach.
When we start off noting, it becomes tempting to try and capture every feeling and thought. However, this is pointless and it quickly becomes tiring. The only times when we need to note the distraction is when we realize that we have been lost in thought. And even at that moment it’s a very moderate acknowledgement.
To sum up, noting is when we notice that the mind has wondered. We recognize it. We simply note the nature of the distraction. We let it go and simply return to the object of focus.
What’s really important in the noting technique is to really just acknowledge and accept unpleasant feelings rather than try and fight them.
Overall, it’s not just about learning to be present, but about changing the way we relate to our experiences, being less judgemental, changing our perspective, less critical towards ourselves and those around us, and when we do this we automatically will feel less stressed.
Let’s practice noting with this video from headspace:
To sum up, in this first part of “Improve your life instantly with these Meditation Techniques”, we explored the what meditation actually is and three meditation techniques (Letting Go, Reflective Meditation, and Noting). Practicing them regularly will guarantee a positive change to our daily lives.
Stay tuned for Part Two of “Improve your life instantly with these Meditation Techniques” where we will look at judgement and the judging mind, managing pain through meditation, how to deal with anger and ways to achieve your limitless potential, each with its own meditation technique.
[Viktoria Dobreff] [Headspace guide to meditation]
]]>I’m using Vagrant for my development, and that’s why I have to find a way to run it inside Vagrant guest machine.
It turns out that all the tutorials online are for XCode 2, and no matter what I’ve tried it does not work. So – lets start with how to enable XDebug 3 on Visual Studio code.
In my configuration I’m using PHP 7.4, Ubuntu 20, and of course after installing the XDebug (for which to achieve you must do the following):
$ sudo apt update
$ sudo apt install php-xdebug
And this installs XDebug v.3 for PHP (if you are using configuration similar to mine, or latest dictionaries).
Restart PHP:
$ sudo service php7.4-fpm restart
Check XDebug:
$ php -i | grep xdebug
/etc/php/7.4/cli/conf.d/20-xdebug.ini,
xdebug
Support Xdebug on Patreon, GitHub, or as a business: https://xdebug.org/support
Enabled Features
(through 'xdebug.mode' setting)
xdebug.auto_trace => (setting renamed in Xdebug 3) => (setting renamed in Xdebug 3)
Next setup is to proper setup your xdebug.ini – in my case it is located here: /etc/php/7.4/mods-available/xdebug.ini
edit that file
$ sudo vim /etc/php/7.4/mods-available/xdebug.ini
and add the following:
zend_extension=xdebug.so xdebug.mode = debug xdebug.start_with_request = yes xdebug.client_port = 9000 xdebug.discover_client_host=1 xdebug.log_level = 0 xdebug.remote_enable=1 xdebug.idekey = VSCODE xdebug.remote_autostart = 1 xdebug.client_host=10.0.2.2 xdebug.client_connect_back=1
That configuration is for XDebug 3 (it wont work for 2.x ver). Keep in mind that this is for Linux like systems, for Mac / Win xdebug.client_host probably is different.
The above is global configuration – will be available in CLI and FPM PHP. That file is soft linked in the following dirs:
/etc/php/7.4/cli/conf.d/
/etc/php/7.4/fpm/conf.d/
If you need different configurations, just remove the soft link and copy the original file from /etc/php/7.4/mods-available/xdebug.ini
Change the port – this is the only change you have to make, that will help you separate the debugging into the VScode.
For the proper xdebug.client_host ip, if you are not sure, execute the following:
fpm service (if you are using php-fpm):
$ route -nee
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface MSS Window irtt
0.0.0.0 10.0.2.2 0.0.0.0 UG 100 0 0 eth0 0 0 0
0.0.0.0 192.168.43.1 0.0.0.0 UG 100 0 0 eth2 0 0 0
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0 0 0
Get the IP form the Gateway column.
Restart your fpm service (if you are using php-fpm):
$ sudo service php7.4-fpm restart
If you are using apache don’t forget to restart it either:
$ sudo service apache2 restart
Check your phpinfo() and see if everything is installed:
Or use console:
$ php -i | grep xdebug
First thing you need to do is to install xDebug for VS Code, then goto VS and select debug view:
Look for the gear next to selected debug session (top of the screen) and click on it:
It will show in the editor configuration file – launch.json – add the following:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "php",
"request": "launch",
"name": "Listen for XDebug",
"pathMappings": {
"/var/www/html": "${workspaceFolder}",
"${workspaceFolder}": "${workspaceFolder}",
},
"port": 9000,
"log": true,
},
{
"type": "php",
"request": "launch",
"name": "Listen for CLI",
"pathMappings": {
"/var/www/html": "${workspaceFolder}",
"${workspaceFolder}": "${workspaceFolder}",
},
"port": 9001,
"log": true,
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000
}
]
}
Where the interesting part is to set "/var/www/html": "${workspaceFolder}",
– /var/www/html is where my project is mapped on the Vagrant machine (check my tutorial for setting up Vagrant), and ${workspaceFolder} links to root in my VS code project (my root is the same as the mapped folder, if that is not your case – set it appropriately).
Other interesting thing to have in mind is port 9000 (on the Vagrant machine) if 9000 does not work for you change it (both xdebug.ini
and this configuration).
That’s it – you are ready to start your debug session in PHP.
Check out the video:
(Stoil Dobreff)
]]>Probably Ubuntu and other Linux distribution will follow that as well.
Fact is – zsh could turn your every day console live.
You are Mac User fan or Linux guru? Does not matter – if you like ZSH, you must definitely start using Oh my ZSH right away.
I often switch to different servers and shells and really hate that old fasion console. So I decided to put together everything needed to make the zsh shell more friendly.
That is the reason I’ve created that guide with plugins I’m using.
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
That’s easy – right? Now its time to put some powerful tools in place. One of the best is of course – themes. There are tens of those, but my favorite is Powerlevel10k.
To install it:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc
Now – restart your shell. You will see the installation screen for Powerlevel10k, follow it and set your preferences.
Thats it – you just had your Powerlevel10k configured for your specific needs.
Lets jump to next powerful thing – plugins that you may find very useful.
https://github.com/marlonrichert/zsh-autocomplete
git clone https://github.com/marlonrichert/zsh-autocomplete.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autocomplete
zsh-autocomplete
to your plugin list – edit ~./zshrc
and change plugins=(...)
to plugins=(... auto-autocomplete)
https://github.com/zsh-users/zsh-autosuggestions/
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
zsh-autosuggestions
to your plugin list – edit ~./zshrc
and change plugins=(...)
to plugins=(... auto-autosuggestions)
https://github.com/MichaelAquilina/zsh-auto-notify
git clone https://github.com/MichaelAquilina/zsh-auto-notify.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/auto-notify
~./zshrc
and change plugins=(...)
to plugins=(... auto-notify)
https://github.com/julienXX/terminal-notifier
brew install terminal-notifier
The you are ready to install zsh-notify
https://github.com/marzocchi/zsh-notify
git clone git@github.com:marzocchi/zsh-notify.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/notify
~./zshrc
and change plugins=(...)
to plugins=(... notify)
https://github.com/zdharma/fast-syntax-highlighting
git clone https://github.com/zdharma/fast-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting
~./zshrc
and change plugins=(...)
to plugins=(... fast-syntax-highlighting)
If you don’t want to go through all the troubles above – there is on line command I’ve created:
sh -c "$(wget -O- https://raw.githubusercontent.com/sdobreff/oh-my-zsh-plugins/main/oh-my-zsh-plugins-install.sh)"
during the installation, new zsh session will be created – exit from it with the ctrl-d (do not close the window), and the installation script will continue.
Next step – find plugins section in your .zshrc file in home directory and add the following:
plugins=(
auto-notify
git
zsh-autosuggestions
fast-syntax-highlighting
)
Start new zsh session – set you preferences and you are all set – enjoy your new console!
See also:
Vagrant image for PHP development
Single Vagrant for multiple projects
Has that happened to you?
Trying to find your dream dress can be very stressful. Nevertheless, most likely you have never tried one on before, and it’s one of the most costly articles of clothing a woman ever owns, so it can be overwhelming and pressure might build up while you are shopping for a wedding dress.
What may also become overwhelming is trying to decode all of the silhouettes – similar to learning a new language – mermaid, fit and flare, modified a-line, sheath, A-line, organza, and the list goes on.
If you want to learn a little more about dress terminology, check out dressanomalie’s guide to wedding dress terminology.
Another trend seen in previous years is the fact that brides are choosing multiple dresses – a formal one for the ceremony and a party-centric (a dress easier to dance in) one for the reception, which makes the shopping even more tense.
Moreover, the dress you choose will set the tone for the entire wedding, no matter what venue and wedding decor you select.
When I was a bride I didn’t have anyone to guide me and give me useful tips in order to save time as well as understand how important the dress actually is in regards to the wedding style you pick.
So, from personal experience, I have created this fundamental guide on Wedding dress shopping, from finding your dream dress to selecting the ideal veil and bridal accessories.
All eyes are always on the bride. Not to mention the memories which you’ll have for years to come, photos and videos, you want to make sure you look impeccable for your big day.
But what is your image of impeccability?
For some brides the wedding dress should be a princess-like ballgown. Others look for a sexy sheath dress that will show off her lovely curves, or a look which enables her to dance freely.
The selection process might seem mind-boggling. However, no matter your personal style, timeline, or budget this fundamental guide will most certainly help you find the wedding dress of your dreams.
It’s guaranteed that you will love it now, on your wedding day and 25+ years from now when you look through your wedding videos and photos.
Question is:
How is it possible to choose only one dress?
Of course, you cannot try on all the dresses in the catalogue and most likely you will be disappointed as they will let you choose a few of them to try on during your appointment at the bridal boutique.
Here it gets tough. The elimination begins.
The first time you go and try on wedding dresses is the hardest; you don’t know what style suits your figure best.
Bridal Tip: What I would suggest for the first time fitting is to try one from each style that catches your eye. This way you will be able to determine what you like, what fits you best, and from that point forward you will know which type of dress suits you the most, thus what style to look for.
I guarantee you that once you go home after the fitting, some of the pictures you downloaded to your phone or computer will be deleted.
Why? Well, what looks great on photographs doesn’t mean it will look as good on you. Don’t forget that wedding catalogues are created to make sure you like what you see and to make you want it.
This is the best way to eliminate what you don’t like and what you will be definitely searching for in the future.
That said:
Begin trying on dresses 10 to 12 months prior to your wedding day. This way you can have the time to choose what suits you best and be able to order in by the 6 to 8 month deadline that most bridal salons request.
In case you do not have that much time you still have the option of getting a “made-to-order-gown”. These gowns can be made in about 4 weeks. Just make sure you are ready to pay for this, as it usually costs an extra 10 to 15%, which does not include rush alteration fees.
If you do have the time, know that most wedding gowns take between 4 and 8 months to be produced, and once your dress arrives, you have to make sure that there is some extra time for adjustments and adding any accessories that you desire.
However, keep in mind that if you have a long engagement and you begin your dress shopping too early, the one you have bought might have gone out of style, or there is a chance you might find another one which suits you better.
Personally, I began looking and trying on dresses a year and a half prior to my wedding. Honestly, it was way too early because everything was so far away and at that point we didn’t even have a date set, nor had we thought about what type of wedding theme we would like to have.
Bridal Tip: Try and figure out what the best time to buy your dress is. Take into consideration some aspects such as your budget, wedding theme, venue, and whether you want to create your own style dress rather than purchasing one from a bridal boutique.
Searching the web to find the best looking, most ravishing dress there is, is a journey that every girl makes. From the design to the shade of color you choose – what can possibly be the perfect fit?
Here is what you should start with:
After going through different sources and you have picked out your favorite gowns, go through them again and try to pinpoint a connecting theme. For instance, are they lacy, voluminous, tight fit, embellished? Are they all with an open back? Find a few similarities among them, compile them and bring them with you for your first fitting.
Even though this is a great first step, keep in mind that what you see on photographs might look absolutely stunning, however can you really determine what look you should go with just by judging from a few photos online or a magazine?
Advice: Go and try some on!!! That will be a game changer.
Prior to dress shopping, determine the theme of your wedding, whether it would be a formal, rustic, garden party, vintage, etc.
Keep in mind your theme and venue during your shopping spree, because in the end you want your dress to match the style of your wedding so that everything fits perfectly.
Before you begin booking appointments with bridal boutiques, make sure you know who is paying for your wedding gown (you and your partner or family members), so that you know what budget to work with.
Bridal tip: Let’s say the budget for your dress is $3,000, you shouldn’t buy a dress worth the same price. Why? Well because you have to take into consideration aspects such as accessories (shoes, veil, jewellery, purse, etc.) and tailoring.
If your budget is small and you want to save some money, you can also look for a second hand gown.
Check out these top 3 online websites that offer used wedding dresses:
Another option you might want to consider in order to save money is to rent a wedding gown.
Instead of buying, some bridal boutiques offer to rent a dress for your wedding day. However, remember that there are both pros and cons to a rental.
Pros:
When renting a wedding gown you don’t have to think about cleaning, preserving and storing the dress afterwards.
Cons:
Nonetheless, you might have limited options, you will be responsible for any damages and the sentimental elements won’t be the same.
Click here to review some aspects before deciding to rent a wedding dress.
Do not forget to conduct thorough research on bridal boutiques you want to visit.
If you want to save yourself some time, make sure the shop offers dresses that interest you and provides great customer service.
Ask around and get referrals from your married friends. Also, check out online reviews in order to find bridal salons with substantial reputations.
After determining which Bridal boutiques you would like to make appointments with, call them ahead of time. Gather the information which interests you, such as;
This will save you a lot of time and effort before making a visit to the boutique.
Once you are at the salon, you will notice that the gowns aren’t displayed in the same way you are used to in a retail store. You won’t be able to browse through them all on your own. For this reason, you have to make an appointment with a bridal consultant in order for them to help you with the selection and trial.
Bridal tip: Book your first appointment with the least-expensive bridal salon. If you don’t find anything that suits you there, keep going up until you do. The same tip applies for the dresses you try on. First try on the cheapest one, and keep going up until you reach the most expensive one (based on your budget). This way you might automatically choose a less expensive dress without even trying on the high-priced ones.
At the bridal boutique you will be warmly welcomed to look through their bridal catalogues and pick a few dresses to try on.
Oh trust me it gets overwhelming as there are SO MANY beautiful gowns that you just want to put on and leave with.
To steer your bridal consultant in the right direction, bring photos of your color palette, your venue, and dresses which you admire. They will most likely tell you that nearly all brides usually walk in with a set idea of what they see themselves in so they try it on and in the end they don’t actually like what they see. Instead, they are head over heels for something that they have never considered previously.
Remember to keep an open mind during your wedding dress shopping spree. You might leave with a dress that you have never thought or known that it would be your dream dress.
For every girl this experience will be different, some will find their dress from the first try and others will go on to different bridal boutiques and they will be so confused that they will not know what to do next.
So, let’s take a look at how we should prepare ourselves for our wedding gown shopping spree.
Bridal boutiques during the weekends are a nightmare. In order to avoid this and make sure you get that extra attention, try to visit a bridal salon during the week.
Use some personal time off from work, so that you can save yourself some trouble.
Trying on gowns can take a long time. Putting a wedding dress on and off is moderately slow. To avoid being rushed, plan a few hours so that you have enough time to browse and try on dresses.
Do not overwhelm yourself with having too many people come with you when you try on bridal gowns. Coming to an agreement among fewer individuals is always easier.
So, choose two or three of your closest ladies whose points of view are of a great significance to you.
If you end up choosing to try on a strapless dress or one with very thin straps, wearing a colorful bra will be a bad choice, instead go with a white strapless one. Or if you want to see how a tight dress that shows off your curves looks on you, you want to make sure you are wearing seamless underwear, such as a nude thong.
What does Bridal sizing mean?
Well, it means that wedding gowns are usually one – two sizes higher than your regular clothing. Don’t get frustrated about it because no one will know the size, but you.
Most brides plan to lose weight before their wedding day, however when shopping for a wedding gown months before, make sure to buy a dress for your current size. Do not go smaller, because if you do lose weight right before your wedding, the dress can be taken in easily rather it being too tight.
Even though I had my dress sewn for me, 2 weeks before the wedding I had lost a little bit of weight due to the stress and a few corrections needed to be made.
Trying on the beautiful wedding gowns is an amazing experience. I mean you only get married once right? Or at least for the most part – the first time is always oh so special.
Once you put on the first dress and look at yourself in the mirror you will be stunned.
The fairy tale will begin to feel so real. Then the next one will be so different and the next and next. Your head will be spinning by the end of the day.
Here’s how to make sure your Bridal Salon visit is worthwhile:
Take your time when trying on different gowns. Even if the dress isn’t the One you want, stay in it for a few minutes. Pinpoint the elements you like and dislike, and afterwards use this to reduce your dress hunt.
Choose a gown in which you’ll feel great to spend a whole day in. Try to dance, walk, and sit in it.
Have those wonderful ladies you decided to bring with you take photos of you with the gowns you admire the most. Have them capture the front, back and side so you can view the gowns from different angles. You might consider to even have a video taken, this way you can see how the dress moves around.
Here are some of my favorite wedding dress fittings:
In case the bridal salon doesn’t allow photos/videos, take notes on each dress by listing all the pros and cons.
Once you go home and look through the photos of you and those gorgeous wedding gowns you will be very confused, but will have a better idea of what you are looking for from now on.
If you still have not decided on a dress, the next step is to look some more online and schedule another fitting with a different bridal boutique.
The journey might be long or it may be very short depending on whether you know exactly what you want or when you put on a particular dress you know that it’s the one.
I guess it is similar to buying a car.
When you sit it in for the first time you know it is THE ONE.
Well, that is how it was for me with my car, but let’s not get carried away.
Usually, wedding dresses are made to order. When you have decided on which dress to buy, the bridal consultant will take your measurements and ask the designer for the closest fit.
Afterwards, you will pay a deposit fee (normally it’s 50%), and when the dress is ready and shipped to you (either the salon or your home), you will pay the remaining costs.
Some bridal salons might give you an offer payment plan, others on the other hand might give you a deal on your accessories, in-house alterations, or veil. So make sure to ask!
Keep in mind that you will most likely have between 2 and 5 fittings. They are likely to be scheduled three months before the wedding – this may cost you up to 15% of the dress’s price.
In case the salon does not offer a seamstress, look for recommendations near you. Just remember, that you need to make sure to find someone who can handle the job – you definitely don’t want anyone ruining your expensive bridal gown.
Nearly all wedding dresses have a built-in bra, however if you desire to have additional support, take your favorite bra to your tailor and ask him/her to sew it into the dress.
In my case, I had my entire dress sewn for me, I had the choice of how I wanted my underpinnings to be. Due to the fact that my dress had an open back, I wanted to make sure I had extra support and I wasn’t worried about any part of my upper body being exposed in any way. I bought a bra especially for the dress, so that it can be cut and sewn in an unnoticeable way.
That said:
For me personally, the widely spread wisdom
When I put on the dress I will now it is THE ONE
did not happen.
Not trying to scare you or anything, but unfortunately I did not find THE DRESS anywhere.
So you ask what now?
Well, I decided to come up with my own design and found a seamstress to make everything happen.
Oh, what an experience that was!
I had a picture of the dress I wanted in my head so how hard could it be?!
The best part was picking out the fabric and lace that I most certainly wanted and imagined. I was so excited that I couldn’t wait and see how my dream dress will become a reality.
However, the day we bought the fabric and everything was all set I went home and I started to panic. I literally had nightmares because I was scared that there is no way my dress will be what I pictured and I should have just settled with something at one of the bridal boutiques.
Soon the first fitting came and I thought I would be relieved. Well, that did not happen.
I began to panic even more because the dress was so strange. The laces were pinned all over the top and the skirt didn’t look much of a skirt. But I was assured that everything would begin to fall into place as we discuss the changes.
Here is a photo of one of the first fittings:
After a few fittings, the dress started to become full and we had to choose where each lace should go (should it be facing up or down); all very hard decisions to make.
After months of sewing and numerous fittings my wedding gown was finally ready. I had the perfect princess shoes for my glamorous ball gown.
I was finally going to take my dress home.
When I put on the gown I was so happy, excited and my eyes were full of tears. I had finally found THE DRESS. It was a perfect fit and I was so ready to rock it down the aisle.
Here is the end result of my wedding dress:
If you want to have a veil, think about the kind you prefer and take into consideration your venue. For instance, a cathedral veil might not be suitable on a windy beach, therefore you will need to think of a shorter option.
Based on your budget and desire, you can order a veil from a bridal designer, purchase it off the rack or have one created by a veil specialist.
Personally, I asked my seamstress to create one for me from the same fabric as the wedding gown. She then measured how long it should be based on the length of the dress’s train.
Bridal Tip: When taking into account the length of your veil (especially if you want it to fall in front of your face) make sure you have chosen your wedding hairstyle beforehand. This is an important part of the veil preparation, as it may be too short if you decide to have a big and high bun, thus the end result might not be what you expected.
If you have chosen the jewellery you want to wear for your big day, bring them to one of your first fittings so that you can see how well they go with your dress. The same goes for any hair accessories that you want to use.
Also, don’t forget to bring your shoes to your fitting so that the tailor can adjust the hem.
Here is what I decided to use for my hair accessory:
Finding your wedding dress is tough work, but remember that it’s all worth it in the end.
Follow this ultimate guide and your journey in finding THE DRESS will be easy and the result is guaranteed to meet your expectations.
And remember that:
For every bride there is a perfect dress! If you can’t find it, create it!
I would love to hear from you and see photos of your big day and beautiful wedding gown.
Leave a comment below and share photos of your astounding look.
[Viktoria Dobreff]
]]>