You must add all your domains and subdomains in one command.
(From digital ocean🙂 You will also be able to choose between enabling both http and https access or forcing all requests to redirect to https. For better security, it is recommended to choose the option 2: Redirect if you do not have any special need to allow unencrypted connections. Select your choice then hit ENTER.
Error: Port 80 is required
Let’s encrypt requires port 80 to redirect to your server. So configure that redirection in your apache config.
(From digital ocean🙂 This will create a new cron job that will execute at noon and midnight every day. Adding an element of randomness to your cron jobs will ensure that hourly jobs do not all happen at the same minute, causing a server spike; python -c 'import random; import time; time.sleep(random.random() * 3600)' will select a random minute within the hour for your renewal tasks.
Press ‘Esc’, type 😡 to save, and check to see it is added to your list of cron jobs:
Note: You can pretty much answer the questions any way you want though real
answers are best. The one question that really matters here is the FQDN. It
should be: localhost.
Move the private.key and certificate.crt files from c:\wamp64\bin\apache\apache2.4.41\bin to
the c:\wamp64\bin\apache\apache2.4.41\conf\key\ folder. If the key folder
doesn’t already exist, create it.
Using a text editor like Notepad, open c:\wamp64\bin\apache\apache2.4.41\conf\httpd.conf
and un-comment following 3 lines: LoadModule ssl_module modules/mod_ssl.so Include conf/extra/httpd-ssl.conf LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Using a text editor like Notepad, open c:\wamp64\bin\apache\apache2.4.41\conf\extra\httpd-ssl.conf
and apply the following changes:
Below the line: <VirtualHost _default_:443>, check the
following parameters to ensure they are configured correctly and not commented.
————————————- DocumentRoot “c:/wamp64/www” ServerName localhost:443 ServerAdmin firstname.lastname@example.org
SSLSessionCache “shmcb:c:/wamp64/bin/apache/apache2.4.41/logs/ssl_scache(512000)” ErrorLog “c:/wamp64/bin/apache/apache2.4.41/logs/error.log” TransferLog “c:/wamp64/bin/apache/apache2.4.41/logs/access.log” SSLCertificateFile “c:/wamp64/bin/apache/apache2.4.41/conf/key/certificate.crt” SSLCertificateKeyFile “c:/wamp64/bin/apache/apache2.4.41/conf/key/private.key”
Save the file and close it.
· You are done. To
check the validity of file, at the command prompt, enter: c:\wamp64\bin\apache\apache2.4.41\bin\httpd -t and then use your web browse to go to https://localhost/
DROP TABLE IF EXISTS `_mid_products`;
CREATE TABLE IF NOT EXISTS `_mid_products` (
`product_id` int(11) NOT NULL AUTO_INCREMENT,
`active_0_1` text DEFAULT NULL,
`name` text DEFAULT NULL,
`categories_cs` text DEFAULT NULL,
`price_tax_excluded` text DEFAULT NULL,
`tax_rules_id` text DEFAULT NULL,
`wholesale_price` text DEFAULT NULL,
`on_sale_0_1` text DEFAULT NULL,
`discount_amount` text DEFAULT NULL,
`discount_percent` text DEFAULT NULL,
`discount_from_yyyy_mm_dd` text DEFAULT NULL,
`discount_to_yyyy_mm_dd` text DEFAULT NULL,
`reference_num` text DEFAULT NULL,
`supplier_reference_num` text DEFAULT NULL,
`supplier` text DEFAULT NULL,
`manufacturer` text DEFAULT NULL,
`ean13` text DEFAULT NULL,
`upc` text DEFAULT NULL,
`ecotax` text DEFAULT NULL,
`width` text DEFAULT NULL,
`height` text DEFAULT NULL,
`depth` text DEFAULT NULL,
`weight` text DEFAULT NULL,
`delivery_time_of_in_stock_products` text DEFAULT NULL,
`delivery_time_of_out_of_stock_products_with_allowed_orders` text DEFAULT NULL,
`quantity` text DEFAULT NULL,
`minimal_quantity` text DEFAULT NULL,
`low_stock_level` text DEFAULT NULL,
`send_me_an_email_when_the_quantity_is_under_this_level` text DEFAULT NULL,
`visibility` text DEFAULT NULL,
`additional_shipping_cost` text DEFAULT NULL,
`unity` text DEFAULT NULL,
`unit_price` text DEFAULT NULL,
`summary` text DEFAULT NULL,
`description` text DEFAULT NULL,
`tags_cs` text DEFAULT NULL,
`meta_title` varchar(255) DEFAULT NULL,
`meta_keywords` varchar(255) DEFAULT NULL,
`meta_description` text DEFAULT NULL,
`url_rewritten` text DEFAULT NULL,
`text_when_in_stock` text DEFAULT NULL,
`text_when_backorder_allowed` text DEFAULT NULL,
`available_for_order_0_1` text DEFAULT NULL,
`product_available_date` text DEFAULT NULL,
`product_creation_date` text DEFAULT NULL,
`show_price_0_1` text DEFAULT NULL,
`image_urls_cs` text DEFAULT NULL,
`image_alt_texts_cs` text DEFAULT NULL,
`delete_existing_images_0_1` text DEFAULT NULL,
`feature_cs` text DEFAULT NULL,
`available_online_only_0_1` text DEFAULT NULL,
`condition_` text DEFAULT NULL,
`customizable_0_1` text DEFAULT NULL,
`uploadable_files_0_1` text DEFAULT NULL,
`text_fields_0_1` text DEFAULT NULL,
`out_of_stock_action` text DEFAULT NULL,
`virtual_product` text DEFAULT NULL,
`file_url` text DEFAULT NULL,
`number_of_allowed_downloads` text DEFAULT NULL,
`expiration_date` text DEFAULT NULL,
`number_of_days` text DEFAULT NULL,
`id_name_of_shop` text DEFAULT NULL,
`advanced_stock_management` text DEFAULT NULL,
`depends_on_stock` text DEFAULT NULL,
`warehouse` text DEFAULT NULL,
`acessories_cs` text DEFAULT NULL,
PRIMARY KEY (`product_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `_mid_categories`;
CREATE TABLE IF NOT EXISTS `_mid_categories` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`active` int(11) NOT NULL DEFAULT 1,
`name` text DEFAULT NULL,
`parent_category` text DEFAULT NULL,
`root_category` text DEFAULT NULL,
`description` text DEFAULT NULL,
`meta_title` text DEFAULT NULL,
`meta_keyword` varchar(255) DEFAULT NULL,
`meta_description` text DEFAULT NULL,
`url_rewritten` text DEFAULT NULL,
`image` text DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
fill the categories table:
insert into _mid_categories
SELECT (categoryid+3) as id,catvisible as active,(catparentid+3) as `parent_category`,catdesc as description,catname as meta_title,catname as `name`,catmetakeywords as meta_keyword,catmetadesc as meta_description,replace(catname,' ','-') as url_rewritten FROM isc_categories ORDER BY catsort;
UPDATE `_mid_categories` set root_category=1 WHERE parent_category='0';
UPDATE `_mid_categories` set root_category=0 WHERE parent_category!='0';
UPDATE _mid_categories targetTable
LEFT JOIN _mid_categories sourceTable ON
UPDATE `_mid_categories` SET parent_category='2' WHERE parent_category is null;
And for exporting it to csv you have to use this query:
SELECT mc.* FROM `_mid_categories` as mc order by CASE WHEN parent_category>id THEN cast(id as unsigned) ELSE cast(parent_category as unsigned) END ASC,id asc
this fill the products table:
insert into _mid_products
(`product_id`, `active_0_1`, `name`, `categories_cs`, `price_tax_excluded`, `tax_rules_id`, `wholesale_price`, `on_sale_0_1`, `discount_amount`, `discount_percent`, `discount_from_yyyy_mm_dd`, `discount_to_yyyy_mm_dd`, `reference_num`, `supplier_reference_num`, `supplier`, `manufacturer`, `ean13`, `upc`, `ecotax`, `width`, `height`, `depth`, `weight`, `delivery_time_of_in_stock_products`, `delivery_time_of_out_of_stock_products_with_allowed_orders`, `quantity`, `minimal_quantity`, `low_stock_level`, `send_me_an_email_when_the_quantity_is_under_this_level`, `visibility`, `additional_shipping_cost`, `unity`, `unit_price`, `summary`, `description`, `tags_cs`, `meta_title`, `meta_keywords`, `meta_description`, `url_rewritten`, `text_when_in_stock`, `text_when_backorder_allowed`, `available_for_order_0_1`, `product_available_date`, `product_creation_date`, `show_price_0_1`, `image_urls_cs`, `image_alt_texts_cs`, `delete_existing_images_0_1`, `feature_cs`, `available_online_only_0_1`, `condition_`, `customizable_0_1`, `uploadable_files_0_1`, `text_fields_0_1`, `out_of_stock_action`, `virtual_product`, `file_url`, `number_of_allowed_downloads`, `expiration_date`, `number_of_days`, `id_name_of_shop`, `advanced_stock_management`, `depends_on_stock`, `warehouse`, `acessories_cs`)
p.productid as `product_id`,
p.prodvisible as `active_0_1`,
replace(p.prodname,'#','No ') as `name`,
GROUP_CONCAT(DISTINCT (cats.categoryid+3) ORDER BY cats.categoryid asc SEPARATOR ',') as `categories_cs`,
(p.prodprice/1.2) as `price_tax_excluded`,
'1' as `tax_rules_id`,
p.prodprice as `wholesale_price`,
'0' as `on_sale_0_1`,
null as `discount_amount`,
null as `discount_percent`,
null as `discount_from_yyyy_mm_dd`,
null as `discount_to_yyyy_mm_dd`,
p.prodcode as `reference_num`,
brands.brandname as `manufacturer`,
null as `ean13`,
null as `upc`,
null as `ecotax`,
null as `width`,
null as `height`,
null as `depth`,
p.prodweight as `weight`,
null as `delivery_time_of_in_stock_products`,
null as `delivery_time_of_out_of_stock_products_with_allowed_orders`,
'999999' as `quantity`,
null as `minimal_quantity`,
null as `low_stock_level`,
null as `send_me_an_email_when_the_quantity_is_under_this_level`,
'both' as `visibility`,
null as `additional_shipping_cost`,
null as `unity`,
null as `unit_price`,
SUBSTRING(p.prodmetadesc,0,800) as `summary`,
p.proddesc as `description`,
null as `tags_cs`,
p.prodname as `meta_title`,
p.prodmetakeywords as `meta_keywords`,
SUBSTRING(p.prodmetadesc,0,512) as `meta_description`,
replace(p.prodname,' ','_') as `url_rewritten`,
null as `text_when_in_stock`,
null as `text_when_backorder_allowed`,
p.prodallowpurchases as `available_for_order_0_1`,
DATE_FORMAT(FROM_UNIXTIME(p.proddateadded), '%Y-%m-%d') AS `product_available_date`,
DATE_FORMAT(FROM_UNIXTIME(p.proddateadded), '%Y-%m-%d') AS `product_creation_date`,
'1' as `show_price_0_1`,
GROUP_CONCAT(DISTINCT CONCAT('https://www.natamno.com/product_images/',imgs.imagefile) ORDER BY imgs.imagesort asc SEPARATOR ',') as `image_urls_cs`,
null as `image_alt_texts_cs`,
'0' as `delete_existing_images_0_1`,
null as `feature_cs`,
'0' as `available_online_only_0_1`,
LOWER(p.prodcondition) as `condition_`,
'0' as `customizable_0_1`,
'0' as `uploadable_files_0_1`,
'0' as `text_fields_0_1`,
null as `out_of_stock_action`,
null as `virtual_product`,
null as `file_url`,
null as `number_of_allowed_downloads`,
null as `expiration_date`,
null as `number_of_days`,
'1' as `id_name_of_shop`,
null as `advanced_stock_management`,
null as `depends_on_stock`,
null as `warehouse`,
null as `acessories_cs`
FROM isc_products as p
LEFT JOIN isc_brands as brands ON p.prodbrandid=brands.brandid
LEFT JOIN isc_categoryassociations as cats ON p.productid=cats.productid
LEFT JOIN (SELECT * FROM isc_product_images where imagefile NOT like '%_tiny.%' AND ((REPLACE(imagefile,'_thumb.','.')!=imagefile AND REPLACE(imagefile,'_thumb.','.') NOT IN (SELECT imagefile FROM isc_product_images) ) OR REPLACE(imagefile,'_thumb.','.')=imagefile ) ) as imgs ON p.productid=imgs.imageprodid
group by p.productid;
UPDATE `_mid_products` SET meta_title=REPLACE(meta_title,'>',' ');
UPDATE `_mid_products` SET meta_title=REPLACE(meta_title,'<',' ');
UPDATE `_mid_products` SET meta_description=REPLACE(meta_description,'>',' ');
UPDATE `_mid_products` SET meta_description=REPLACE(meta_description,'<',' ');
UPDATE `_mid_products` SET meta_keywords=REPLACE(meta_keywords,'>',' ');
UPDATE `_mid_products` SET meta_keywords=REPLACE(meta_keywords,'<',' ');
UPDATE `_mid_products` SET `name`=REPLACE(`name`,'>',' ');
UPDATE `_mid_products` SET `name`=REPLACE(`name`,'<',' ');
UPDATE _mid_products SET meta_description=SUBSTRING(meta_description,0,512);
Export it to CSV by just using phpMyAdmin – export function – CSV
Use this query to Export Combinations
pvc.vcproductid as product_id,
'' as productreference,
GROUP_CONCAT(CONCAT(CONCAT(pvo.voname,'-',vovariationid,'-',REPLACE(REPLACE(pv.vname,':','-'),',','-')),':select:',pvo.vovaluesort) ORDER BY pvo.vovaluesort asc SEPARATOR ',' ) as attribute,
GROUP_CONCAT(CONCAT((case when pvo.vovalue='' then '-' else pvo.vovalue end),':',pvo.vooptionsort) ORDER BY pvo.vovaluesort asc SEPARATOR ',' ) as val,
CASE WHEN pvc.vcenabled=1 THEN '999999' ELSE 0 END as qty
FROM isc_product_variation_combinations pvc
LEFT JOIN isc_product_variation_options pvo ON pvo.vovariationid=pvc.vcvariationid AND FIND_IN_SET(pvo.voptionid,pvc.vcoptionids)
LEFT JOIN isc_product_variations pv ON pvc.vcvariationid=pv.variationid
GROUP BY pvc.combinationid;
When I look at this minimalist website design, especially compared to
the other, my eyes are immediately set to ease. It’s literally like the
inner designer in me just had the most amazing glass of wine and I’m
just enjoying myself, admiring the design.
Alright, enough comparisons. Let’s just get things rolling over here.
A good color scheme always warms my heart, like grandma’s homemade apple pie on a summer’s day.
Maintaining a color scheme amongst your text, background elements, and images will automatically make you look more organized.
By using a color scheme, you can also bring focus to certain elements and manipulate the eye to go where you want it to.
By no means do you ever want a green font on a bright red background
with orange and silver elements floating around the background. Unless
you want you website to look like Christmas got a little wild at the
Christmas staff party and vomited all over your website.
Go online or on any design inspiration website and type in popular
color schemes on 2020, or color palettes, and save time and effort by
finding beautiful palettes!
We need to do things differently, and that’s why we created Appwrite. Appwrite is an open-source backend server that aims to abstract the complexity behind repeating software development tasks.
gives your project a better starting point by abstracting most of you
common backend tasks behind a simple to use REST API.
provides software developers with APIs and SDKs to quickly implement
functions that are repetitive across their projects like user authentication, file management, localization, database management, and more.
Appwrite also provides teams with tools like Appwrite Webhooks
and Appwrite Background Tasks to allow maximum flexibility and
customization to match each and each product and different scenarios
different teams might face.
comes with built-in and centralized security and is agnostic to the
technologies or frameworks developers use to build their apps. Appwrite
hides the unnecessary complexity required to make a fast and secure
application, allowing teams to create high-end products, quickly and
without compromising, features, security, or quality.
giving software projects a better starting point, we aim to provide
software developers with more time to innovate, tackle new problems, and
create better products. There is no reason we, as an industry, will
keep on struggling with the same old challenges while we can leverage
open-source to share solutions and build better and more secure tools or
Serverless is great, but it can’t work for every project. Appwrite can replace your backend servers or work alongside them.
was vital for us to leave the power and the flexibility in the
developer’s hands. It’s up for them to decide how they want to set their
important to understand that unlike other serverless solutions,
Appwrite does not aim to magically replace backend servers. Instead, it
attempts to give new projects a better starting point. Appwrite
allows developers to replace or extend their existing backend server
functionality by using tools like webhooks and background functions.
You can use Appwrite as a standalone API directly against your client app or together with your own backend servers.
Appwrite is unopinionated about the way the developer wishes to use it.
We give you the tools to make any decision you want about your app,
technology stack, or integrations.
Appwrite as a code abstraction layer, we hope to give developers and
small to big organizations more time to focus on their products and
create more room for innovation. We, as a software industry, should
always try and improve, and we hope Appwrite is another step in that
Photography has been and will always
be a key piece of design. Stock photos are no longer what they used to
be, luckily. No longer will you be seeing just those awkward group
photos of people laughing or two businessmen shaking hands.
No, there are so many stock photo sites for you to choose from with quality work from real photographers. Check out these 10 awesome free stock images websites!
I want to start this list off with a bang. Unsplash
is my personal favorite free stock image website. I use it for
everything from article writing to making designs. Unsplash has a huge
collection of images, consisting of over 110,000 high-quality free stock
images. Just type in a keyword and see hundreds of images that can suit
your needs. All images are released under Unsplash’s copyright policy.
has hundreds of new high-quality free stock images added to their
library every week. They have stock images to fit just about any
occasion you can think of. From website building to brochure making,
they having everything you need. You can find any image you need by
typing in tag words, and you’ll be presented with hundreds of images
that will be perfect for you. All images are free for you to use!
has one of the most beautiful stock images website interfaces I’ve ever
seen. Pexels provides tons of high-quality stock images that are free
for you to use under their license. With hundreds of thousands of
beautiful free images of you to choose from, surely you’ll find what you
Uniquely free photos. Handpicked, non-stocky images. Yours to use as
you wish”. That’s a pretty self-explanatory and sweet tagline. They work
hand-in-hand with amazing professional photographers and give them a
great place to display their work and be discovered. Find amazing free
stock images on Reshot!
has loads of free photos, but not only. They also have art
illustrations and vectors. All images, art illustrations vectors, etc
are released under Creative Commons CC0.
Life of Pix
Next up, we have Life of Pix.
Free high-resolution photography for everyone. Besides having loads of
amazing photos to choose from, they also feature a new photographer of
the week. Find new photographers whose work you love every week and in
turn, have tons of stock photos to choose from!
is for the foodie at heart. Which gorgeous, appetizing stock images
that look so delicious that you can almost smell them just by looking at
them. If you have a food blog or just need some inspiration, check out
this awesome stock image site.
is for the non-mainstream person. If you’re looking for the complete
opposite of the classic boring stock photo, this website is for you. You
truly won’t find photos like these anywhere else.
is a great stock website if you’re looking for a little more than just
some stock images. They have everything from free photos to videos and
is so aesthetically pleasing, it hurts. The amazing blog pictures are
everything. According to their about page, Kaboompics is one of the most
popular sources of free images for lifestyle, interior design and
specialized bloggers in the world.
Creating your own vectors can take up
so much of your precious time, and that’s why finding perfect vector
art or vector icons can be a major time-saver, but finding them for free
is like finding treasure. That’s why I picked out my 10 favorite free
vector websites. Check ‘em out.
has great free vectors for you to use for personal and commercial use.
What I really like about their vectors is that many of them are
editable. You can get everything from icons to backgrounds and designs
that are ready for print. Give them a try!
has over 300,000 vectors for you to choose from. With such a wide
variety of vectors, surely you’ll find something that’ll suit your
project and save you loads of time.
The Noun Project
The Noun Project can be summed up in icons, icons, icons! They have over 2 million royalty-free
vector icons for you to use. And what’s better? You can edit them. That
is insane, people. Don’t sleep on the noun-project. They have all those
quality things you’re looking for.
Vector 4 Free
Vector 4 Free has
vector art for everyone. Their goal is to share vector art created by
professional designers with everyone. They have all sorts of formats,
such as .ai format, but also .eps, .pdf, .svg, and even .cdr. All of
their vectors are free for personal use, but for commercial use, you
has over 708,000 free vectors for you to use for personal use and also
for commercial use. The styles vary as far as feminine and
elegant-looking invitations to vectors that are perfect for backend
technology promotion. You’ll find every style you could need here, and
you can download everything in .Ai and .EPS formats.
is full of fun and colorful cartoonish vectors. They are basically a
world full of free vector art that is simply at your fingertips. Type in
your keywords in the search bar to find vectors that suit your style,
or scroll to the end of the page and find tons of categories to browse
has thousands of gorgeous vector art for you to use. Everything is
copyright free, so you never have to worry about that. There are tons of
free vectors for you to use, or you can upgrade your account to a pro
account and have access to everything at your fingertips.
is the largest database of free icons that are available in PNG, SVG,
EPS, PSD, and BASE 64 formats to date! With a free account, you can
access thousands of free icons, or you can upgrade your account and get
millions of icons for free.
has wonderful vectors for you to choose from, and with a free account,
you have access to 2 daily downloads. Get royalty-free PNG images,
vectors, backgrounds, templates, and text effects from Pngtree.
Showing real-life visuals of your
work to your client is a vital selling point, and that’s one of the huge
reasons that mockups are so crucially important. Here are 10 free
amazing mockup websites for you to use for your next project.
is a site where you can visualize all of your designs on products
within seconds. Not only can you just upload your images, but you can
also make designs on the platform, and create videos. Create your own
design, or try out one of their 32,938 smart templates!
is the fastest web-based mockup tool out there right now. It’s
user-friendly in the manner that advanced designers and beginners alike
can use and understand their product. You can use a free account and
create 200 mockups and use basic features, or you can upgrade your
account and have access to all mockups and features.
will generate tour product mockups in literally a second. The tool is
easy to use, as it is drag-and-drop based. Download the app to your
computer to start using. You can use a free account and still have
access to lots of features and mockups, or you can upgrade your account
to have access to everything!
has a beautiful, minimalist interface and beautiful, free mockups for
you to use. The mockups are hand-crafted by professional designers and
are just waiting for you to use them.
The Mockup Club
The Mockup Club
is absolutely free and that might just be my favorite part. It’s a
one-stop shop with loads of free mockups for you to use to showcase your
has every mockup imaginable. From key-chains to shorts, to t-shirts, to
protein powder packaging, I think I can safely say they have it all.
The mockups are made by talented designers who want to share their work
with you for free. Download your favorite mockup as a PSD file and get
is an easy-to-use website where designers can find professional mockups
for free to use in their next design project. From DVDs and CD to
letterheads and brochures. They have lots to choose from.
can be summed up about something like this: High-quality, hand-picked,
premium mockups for all to use. They strive to have mockups to fit
everyone and every design. With an entire list for you to go through, I
believe that they are truly well worth your time.
Last but not least, we have Mr. Mockup. They have a team of professional and creative designers working to mockups for everyone. With a vast experience in designing just about anything, you can count on them to find beautiful mockups for your next design project.