The simplest case, for example. There is a person who owns a company that helps motorists stuck in winter. The budget is limited. What do we see and what can we offer? The audience is not demanding, the competition is relatively low in our region, and is it a matter of motion and design, when you are late for work, stuck on the road. Request in the search engine -> phone number -> call. We make the simplest site, serve advertising + seo, that's it. He gets clients, we get him satisfied, who will tell his acquaintances about us, and, most likely, will order a higher level development in the future, having the means. And this site is not done for free.
Type of development: typical.
Position on price: catalog.
Menu structure:
- The main
- About company
- Repair
- Parts catalog
- News
- Contacts
Domain: simple.ru
sudo apt-get install tasksel sudo tasksel # LAMP server, Enter etc. sudo a2enmod rewrite sudo apt-get install phpmyadmin sudo apt-get install git
mkdir /var/www/simple.ru sudo nano /etc/apache2/sites-available/simple-ru.conf # - http://pastebin.com/1aWZhurE sudo a2ensite simple-ru.conf sudo service apache2 reload sudo nano /etc/hosts # 127.0.0.1 simple.ru
cd /var/www/simple.ru git clone git@bitbucket.org:%username%/kosher_wordpress.git mysql -uroot -p mysql> CREATE DATABASE `simple-ru` CHARACTER SET utf8 COLLATE utf8_general_ci; mysql -u username -p simple-ru < dump.sql
define('DB_NAME', 'simple-ru'); define('DB_USER', 'root'); define('DB_PASSWORD', 'pass'); define('DB_HOST', 'localhost');
/* Theme Name: */
: href="css/ : href="<?php bloginfo('template_url');?>/assets/css/ : src="js/ : src="<?php bloginfo('template_url');?>/assets/js/ : src="img/ : src="<?php bloginfo('template_url');?>/assets/img/
<?php /* * Template Name: */ ?>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ShapeBootstrap Clean Template</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content=""> <meta name="author" content=""> <!-- Bootstrap --> <link href="<?php bloginfo('template_url');?>/assets/css/bootstrap.css" rel="stylesheet"> <link href="<?php bloginfo('template_url');?>/assets/css/bootstrap-responsive.css" rel="stylesheet"> <link href="<?php bloginfo('template_url');?>/assets/css/style.css" rel="stylesheet"> <!--Font--> <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,300,400,600' rel='stylesheet' type='text/css'> <!-- HTML5 shim, for IE6-8 support of HTML5 elements --> <!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <!-- Fav and touch icons --> <link rel="shortcut icon" href="<?php bloginfo('template_url');?>/assets/favicon.ico"> <link rel="apple-touch-icon-precomposed" sizes="144x144" href="<?php bloginfo('template_url');?>/assets/ico/apple-touch-icon-144-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="<?php bloginfo('template_url');?>/assets/ico/apple-touch-icon-114-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="<?php bloginfo('template_url');?>/assets/ico/apple-touch-icon-72-precomposed.png"> <link rel="apple-touch-icon-precomposed" href="ico/apple-touch-icon-57-precomposed.png"> <!-- SCRIPT ============================================================--> <script src="http://code.jquery.com/jquery.js"></script> <script src="<?php bloginfo('template_url');?>/assets/js/bootstrap.min.js"></script> </head> <body> <!--HEADER ROW--> <div id="header-row"> <div class="container"> <div class="row"> <!--LOGO--> <div class="span3"><a class="brand" href="#"><img src="<?php bloginfo('template_url');?>/assets/img/logo.png"/></a></div> <!-- /LOGO --> <!-- MAIN NAVIGATION --> <div class="span9"> <div class="navbar pull-right"> <div class="navbar-inner"> <a data-target=".navbar-responsive-collapse" data-toggle="collapse" class="btn btn-navbar"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a> <div class="nav-collapse collapse navbar-responsive-collapse"> <ul class="nav"> <li class="active"><a href="index.html">Home</a></li> <li class="dropdown"> <a href="about.html" class="dropdown-toggle" data-toggle="dropdown">About <b class="caret"></b></a> <ul class="dropdown-menu"> <li><a href="about.html">Company</a></li> <li><a href="about.html">History</a></li> <li><a href="about.html">Team</a></li> </ul> </li> <li><a href="service.html">Services</a></li> <li><a href="blog.html">Blog</a></li> <li><a href="contact.html">Contact</a></li> </ul> </div> </div> </div> </div> <!-- MAIN NAVIGATION --> </div> </div> </div> <!-- /HEADER ROW --> <div class="container"> <!--PAGE TITLE--> <div class="row"> <div class="span12"> <div class="page-header"> <h1> Blog </h1> </div> </div> </div> <!-- /. PAGE TITLE-->
</div> <!-- /.Row View --> <!--Footer ==========================--> <footer> <div class="container"> <div class="row"> <div class="span6">Copyright © 2013 Shapebootstrap | All Rights Reserved <br> <small>Aliquam tincidunt mauris eu risus.</small> </div> <div class="span6"> <div class="social pull-right"> <a href="#"><img src="<?php echo bloginfo('template_url');?>/assets/img/social/googleplus.png" alt=""></a> <a href="#"><img src="<?php echo bloginfo('template_url');?>/assets/img/social/dribbble.png" alt=""></a> <a href="#"><img src="<?php echo bloginfo('template_url');?>/assets/img/social/twitter.png" alt=""></a> <a href="#"><img src="<?php echo bloginfo('template_url');?>/assets/img/social/dribbble.png" alt=""></a> <a href="#"><img src="<?php echo bloginfo('template_url');?>/assets/img/social/rss.png" alt=""></a> </div> </div> </div> </div> </footer> <!--/.Footer--> </body> </html>
<?php get_header();?> <!--Carousel ==================================================--> <div id="myCarousel" class="carousel slide"> <div class="carousel-inner"> <div class="active item"> <div class="container"> <div class="row"> <div class="span6"> <div class="carousel-caption"> <h1>Example headline</h1> <p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p> <a class="btn btn-large btn-primary" href="#">Sign up today</a> </div> </div> <div class="span6"> <img src="<?php bloginfo('template_url');?>/assets/img/slide/slide1.jpg"></div> </div> </div> </div> <div class="item"> <div class="container"> <div class="row"> <div class="span6"> <div class="carousel-caption"> <h1>Example headline</h1> <p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p> <a class="btn btn-large btn-primary" href="#">Sign up today</a> </div> </div> <div class="span6"> <img src="<?php bloginfo('template_url');?>/assets/img/slide/slide2.jpg"></div> </div> </div> </div> </div> <!-- Carousel nav --> <a class="carousel-control left " href="#myCarousel" data-slide="prev"><i class="icon-chevron-left"></i></a> <a class="carousel-control right" href="#myCarousel" data-slide="next"><i class="icon-chevron-right"></i></a> <!-- /.Carousel nav --> </div> <!-- /Carousel --> <!-- Feature ==============================================--> <div class="row feature-box"> <div class="span12 cnt-title"> <h1>At vero eos et accusamus et iusto odio dignissimos</h1> <span>Contrary to popular belief, Lorem Ipsum is not simply random text.</span> </div> <div class="span4"> <img src="<?php bloginfo('template_url');?>/assets/img/icon3.png"> <h2>Feature A</h2> <p> Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. </p> <a href="#">Read More →</a> </div> <div class="span4"> <img src="<?php bloginfo('template_url');?>/assets/img/icon2.png"> <h2>Feature B</h2> <p> Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </p> <a href="#">Read More →</a> </div> <div class="span4"> <img src="<?php bloginfo('template_url');?>/assets/img/icon1.png"> <h2>Feature C</h2> <p> Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. </p> <a href="#">Read More →</a> </div> </div> <!-- /.Feature --> <div class="hr-divider"></div> <!-- Row View --> <div class="row"> <div class="span6"><img src="<?php bloginfo('template_url');?>/assets/img/responsive.png"></div> <div class="span6"> <img class="hidden-phone" src="<?php bloginfo('template_url');?>/assets/img/icon4.png" alt=""> <h1>Fully Responsive</h1> <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p> <a href="#">Read More →</a> </div> </div> <?php get_footer();?>
<?php get_header(); ?> <div class="row"> <div class="span9"> <!--Blog Post--> <div class="blog-post"> <h2>There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour</h2> <div class="postmetadata"> <ul> <li> <i class="icon-user"></i> <a href="#">Author Name</a> </li> <li> <i class="icon-calendar"></i>September 20th, 2013 </li> <li> <i class="icon-comment"></i> <a href="#">100 Comments</a> </li> <li> <i class="icon-tags"></i> <a href="#">Themes</a>, <a href="#">Template</a> </li> </ul> </div> <img src="<?php bloginfo('template_url');?>/assets/img/img1-870x400.jpeg"> <p>The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum et Malorum" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham.</p> <a class="btn btn-primary" href="blog-details.html">Read More</a> </div> <!--===============--> <div class="blog-post"> <h2>There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour</h2> <div class="postmetadata"> <ul> <li> <i class="icon-user"></i> <a href="#">Author Name</a> </li> <li> <i class="icon-calendar"></i>September 20th, 2013 </li> <li> <i class="icon-comment"></i> <a href="#">100 Comments</a> </li> <li> <i class="icon-tags"></i> <a href="#">Themes</a>, <a href="#">Template</a> </li> </ul> </div> <img src="<?php bloginfo('template_url');?>/assets/img/img1-870x400.jpeg"> <p>The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum et Malorum" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham.</p> <a class="btn btn-primary" href="blog-details.html">Read More</a> </div> <!--/.Blog Post--> <!--Pagination--> <div class="pagination"> <ul> <li> <a href="#">Prev</a> </li> <li> <a href="#">1</a> </li> <li> <a href="#">2</a> </li> <li> <a href="#">3</a> </li> <li> <a href="#">4</a> </li> <li> <a href="#">5</a> </li> <li> <a href="#">Next</a> </li> </ul> </div> <!--/.Pagination--> </div> <div class="span3"> <div class="side-bar"> <h3>Categories</h3> <ul class="nav nav-list"> <li><a href="#">Web Design</a></li> <li><a href="#">Typography</a></li> <li><a href="#">Inspiration</a></li> <li><a href="#">Business</a></li> </ul> </div> <div class="side-bar"> <h3>Tags</h3> <a href="#">cras</a>, <a href="#">sit</a>, <a href="#">amet</a>, <a href="#">nibh</a>, <a href="#">libero</a>, <a href="#">gravida</a>, <a href="#">nulla</a> </div> <div class="side-bar"> <h3>Recent Post</h3> <ul class="recent-post"> <li><a href=""><strong>The standard chunk of Lorem Ipsum used since </strong></a> <small><i class="icon-user"></i> <a href="#">Author Name</a>, <i class="icon-calendar"></i>Jul 20th, 2013</small> </li> <li><a href=""><strong>The standard chunk of Lorem Ipsum used since </strong></a> <small><i class="icon-user"></i> <a href="#">Author Name</a>, <i class="icon-calendar"></i>Jul 20th, 2013</small> </li> <li><a href=""><strong>The standard chunk of Lorem Ipsum used since </strong></a> <small><i class="icon-user"></i> <a href="#">Author Name</a>, <i class="icon-calendar"></i>Jul 20th, 2013</small> </li> </ul> </div> </div> <!--==================--> </div> <?php get_footer(); ?>
<?php get_header();?> <div class="row"> <div class="span12"> <h2>Welcome to Fornax</h2> <img class="pull-left" alt="" src="<?php bloginfo('template_url');?>/assets/img/img2.png" /> <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p> <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p> <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p> </div> </div> <div class="hr-divider"></div> <?php get_footer();?>
<?php get_header(); ?> <!--GOOGLE MAP--> <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script> <script> var map; function initialize() { var mapOptions = { zoom: 8, center: new google.maps.LatLng(-34.397, 150.644), mapTypeId: google.maps.MapTypeId.ROADMAP }; map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); } google.maps.event.addDomListener(window, 'load', initialize); </script> <div class="row"> <div class="span12"> <div id="map-canvas"></div> </div> <span class="span6"> <form> <fieldset> <h3>Get in Touch</h3> <input class="input-xxlarge" type="text" placeholder="Name" /> <input class="input-xxlarge" type="text" type="email" placeholder="Email" required/> <textarea class="input-xxlarge" rows="10" placeholder="Your Message"></textarea> <br> <button type="submit" class="btn">Submit</button> </fieldset> </form> </span> <span class="span6"> <h3>Address</h3> <address> <strong>Fornax, Inc.</strong><br> 795 Folsom Ave, Suite 600<br> San Francisco, CA 94107<br> <abbr title="Phone">P:</abbr> (123) 456-7890 </address> <address> <strong>Full Name</strong><br> <a href="mailto:#">first.last@example.com</a> </address> <p> Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. </p> </span> </div> <?php get_footer(); ?>
<?php /* * Template Name: */ ?> <?php get_header(); ?> <div class="span12"> <ul class="thumbnails"> <li class="span4"> <div class="thumbnail"> <img alt="" src="<?php bloginfo('template_url');?>/assets/img/team1.jpg"> <div class="caption"> <strong>DERRICK JEFFERSON</strong> / UI DESIGNER <p> Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit. </p> <p> </p> </div> </div> </li> <li class="span4"> <div class="thumbnail"> <img alt="300x200" src="<?php bloginfo('template_url');?>/assets/img/team2.jpg"> <div class="caption"> <strong>ENJAMIN GARRETT</strong> / MARKETING <p> Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit. </p> <p> </p> </div> </div> </li> <li class="span4"> <div class="thumbnail"> <img alt="300x200" src="<?php bloginfo('template_url');?>/assets/img/team3.jpg"> <div class="caption"> <strong>DASIA KATELYN</strong> / IOS DEVELOPER <p> Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit. </p> <p> </p> </div> </div> </li> </ul> </div> <?php get_footer(); ?>
<title>ShapeBootstrap Clean Template</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content=""> <meta name="author" content="">
<title></title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <?php wp_head();?>
<link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,300,400,600' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Open+Sans:200,300,400,600&subset=latin,cyrillic' rel='stylesheet' type='text/css'> <!-- assets/css/style.css Soure Sans Pro Open Sans, CTRL+R -->
<?php wp_footer();?>
. class="dropdown-toggle" data-toggle="dropdown">About <b class="caret"></b>
... <div class="nav-collapse collapse navbar-responsive-collapse"> <ul class="nav"> <li class="active"><a href="index.html">Home</a></li> <li class="dropdown"> <a href="about.html" class="dropdown-toggle" data-toggle="dropdown">About <b class="caret"></b></a> <ul class="dropdown-menu"> <li><a href="about.html">Company</a></li> <li><a href="about.html">History</a></li> <li><a href="about.html">Team</a></li> </ul> </li> <li><a href="service.html">Services</a></li> <li><a href="blog.html">Blog</a></li> <li><a href="contact.html">Contact</a></li> </ul> </div> ...
<?php /* functions.php */ class Bootstrap_Walker_Nav_Menu extends Walker_Nav_Menu { /** * Display Element */ function display_element( $element, &$children_elements, $max_depth, $depth, $args, &$output ) { $id_field = $this->db_fields['id']; if ( isset( $args[0] ) && is_object( $args[0] ) ) { $args[0]->has_children = ! empty( $children_elements[$element->$id_field] ); } return parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output ); } /** * Start Element */ function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) { if ( is_object($args) && !empty($args->has_children) ) { $link_after = $args->link_after; $args->link_after = ' <b class="caret"></b>'; } parent::start_el($output, $item, $depth, $args, $id); if ( is_object($args) && !empty($args->has_children) ) $args->link_after = $link_after; } /** * Start Level */ function start_lvl( &$output, $depth = 0, $args = array() ) { $indent = str_repeat("t", $depth); $output .= "\n$indent<ul class=\"dropdown-menu list-unstyled\">\n"; } } add_filter('nav_menu_link_attributes', function($atts, $item, $args) { if ( $args->has_children ) { $atts['data-toggle'] = 'dropdown'; $atts['class'] = 'dropdown-toggle'; } return $atts; }, 10, 3); add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2); function special_nav_class($classes, $item){ if( in_array('current-menu-item', $classes) ){ $classes[] = 'active '; } return $classes; } ?> <?php /* header.php */ $args = array( 'container' => 'div', 'menu_class' => 'nav', 'container_class' => 'nav-collapse collapse navbar-responsive-collapse', 'walker' => new Bootstrap_Walker_Nav_Menu ); wp_nav_menu( $args ); ?>
<?php /* header.php */ ?> <?php if(!is_home()):?> <!--PAGE TITLE--> <div class="row"> <div class="span12"> <div class="page-header"> <h1> <?php wp_title('');?> </h1> </div> </div> </div> <!-- /. PAGE TITLE--> <?php endif;?>
<?php ... $options = array( /* * , */ array( 'id' => 'standard', 'type' => 'opentab', 'name' => __(', ', 'slickadmin'), ), array( 'name' => __('', 'slickadmin'), 'id' => 'logo', 'type' => 'upload', ), array( 'name' => __(', #1', 'slickadmin'), 'id' => 'copy1', 'type' => 'text', ), array( 'name' => __(', #2', 'slickadmin'), 'id' => 'copy2', 'type' => 'text', ), array( 'type' => 'closetab', ) ); ... ?>
<?php echo sa_option($id);?>
, Add fields for social networks and is ready. <?php get_header();?> <div class="row"> <div class="span12"> <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <?php the_content(); ?> <?php endwhile; ?> <?php else: ?> <p><?php _e('Sorry, no posts matched your criteria.'); ?></p> <?php endif; ?> </div> </div> <div class="hr-divider"></div> <?php get_footer();?>
<?php /* * Template Name: */ ?> <?php get_header(); ?> <div class="span12"> <?php $args = array( 'post_type' => 'products', 'posts_per_page' => '-1' ); $the_query = new WP_Query($args); ?> <?php if ($the_query->have_posts()) : ?> <ul class="thumbnails"> <?php while ($the_query->have_posts()) : $the_query->the_post(); ?> <?php $url = wp_get_attachment_url(get_post_thumbnail_id($the_query->post->ID)); $image = vt_resize(null, $url, 600, 300, true); if (!$image['url']) $image['url'] = 'http://placehold.it/600x300&text=NO IMAGE'; ?> <li class="span4"> <div class="thumbnail"> <img alt="<?php echo the_title(); ?>" src="<?php echo $image['url']; ?>"> <div class="caption"> <strong><?php echo the_title(); ?></strong> <p><?php the_excerpt();?></p> </div> </div> </li> <?php endwhile; ?> <?php wp_reset_postdata(); ?> </ul> <?php else: ?> <p><?php _e('Sorry, no posts matched your criteria.'); ?></p> <?php endif; ?> </div> <?php get_footer(); ?>
<?php get_header(); ?> <div class="row"> <div class="span9"> <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <?php $url = wp_get_attachment_url(get_post_thumbnail_id($post->ID)); $image = vt_resize(null, $url, 870, 400, true); if (!$image['url']) $image['url'] = 'http://placehold.it/870x400&text=NO IMAGE'; ?> <div class="blog-post"> <h2><?php the_title();?></h2> <div class="postmetadata"> <ul> <li> <i class="icon-calendar"></i><?php the_date();?> </li> <li> <i class="icon-tags"></i> <?php echo get_the_tag_list();?> </li> </ul> </div> <img src="<?php echo $image['url'];?>"> <p><?php the_content('');?></p> <?php if(!is_singular()):?> <a class="btn btn-primary" href="<?php the_permalink();?>"> </a> <?php else:?> <a class="btn btn-primary" href="/novosti"> </a> <?php endif;?> </div> <?php endwhile; ?> <div class="pagination"> <?php global $wp_query; wp_corenavi($wp_query);?> </div> <?php else: ?> <p><?php _e('Sorry, no posts matched your criteria.'); ?></p> <?php endif; ?> </div> <div class="span3"> <div class="side-bar"> <h3></h3> <?php echo get_the_category_list(); ?> </div> <div class="side-bar"> <h3></h3> <?php echo get_the_tag_list();?> </div> </div> </div> <?php get_footer(); ?>
/>
[text* name class:input-xxlarge akismet:author placeholder ""]
<?php echo do_shortcode('[contact-form-7 id="4" title=" "]');?>
Source: https://habr.com/ru/post/252531/
All Articles