<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>@progway</title><generator>teletype.in</generator><description><![CDATA[Всем привет, если вам интересны уроки по C# и другим it - темам
Одна из интересных особенностей канала это опыт смены языка с Python на C#.]]></description><image><url>https://teletype.in/files/54/c3/54c30b45-d83d-433c-8c60-58b54ebe2a65.png</url><title>@progway</title><link>https://teletype.in/@progway</link></image><link>https://teletype.in/@progway?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/progway?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/progway?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Wed, 22 Apr 2026 12:10:12 GMT</pubDate><lastBuildDate>Wed, 22 Apr 2026 12:10:12 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@progway/l7-I38h2z</guid><link>https://teletype.in/@progway/l7-I38h2z?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway</link><comments>https://teletype.in/@progway/l7-I38h2z?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway#comments</comments><dc:creator>progway</dc:creator><title>media запросы</title><pubDate>Thu, 24 Sep 2020 19:03:00 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/dc/ce/dcce544e-4a4a-467b-93ae-a9da7855e8a5.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/dc/ce/dcce544e-4a4a-467b-93ae-a9da7855e8a5.png"></img>Современная веб-разработка не может обойтись без media-запросов, ведь это самый практичный способ сделать сайт адаптивным. Сегодня предлагаю вам познакомиться с ними и сделать простенькое адаптивное меню]]></description><content:encoded><![CDATA[
  <p>Современная веб-разработка не может обойтись без media-запросов, ведь это самый практичный способ сделать сайт адаптивным. Сегодня предлагаю вам познакомиться с ними и сделать простенькое адаптивное меню</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/dc/ce/dcce544e-4a4a-467b-93ae-a9da7855e8a5.png" width="1920" />
  </figure>
  <h2>Как это работает?</h2>
  <p>Как же работает медиа запрос? - По факту, он просто изменяет указанные css-стили в зависимости от указанного свойства.</p>
  <p>Почему нельзя использовать js функции для масштабирования блоков? - медиа запрос работает мгновенно, в то время как js сначала подгрузить оригинал и только потом его видоизменит</p>
  <h2>Синтаксис</h2>
  <p>Медиа запросы прописываются в css файле и имеют довольно логичный синтаксис</p>
  <pre>@media (свойство) {
    .классы блоков для изменения
}</pre>
  <p>В целом, все интуитивно понятно. Ключевое слово @madia для объявления запроса, в скобах указывается свойство в зависимости от которого будут меняться стили( в данной статьей мы рассмотрим вариант бального масштабирования, поэтому будем использовать свойство max-width: n px )</p>
  <p>Ну а в теле запроса указываются стили для определенных html-объектов.</p>
  <h2>Практика</h2>
  <p>Теперь предлагаю использовать наши знания на практике, сверстав адаптивное меню</p>
  <p>P.s. код использован из моей последней работы</p>
  <p>Разбираться верстку и стили я не вижу смысла поэтому просто покажу исходный код</p>
  <p>html:</p>
  <pre>&lt;header&gt;
    &lt;div class=&quot;container&quot;&gt;
        &lt;nav class=&quot;menu&quot;&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;div class=&quot;logo&quot;&gt;&lt;a href=&quot;/&quot;&gt;G3&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
                &lt;li class=&quot;menuelems&quot;&gt;&lt;a href=&quot;/news&quot;&gt;Новости&lt;/a&gt;&lt;/li&gt;
                &lt;li class=&quot;menuelems&quot;&gt;&lt;a href=&quot;http://&quot;&gt;Информация&lt;/a&gt;&lt;/li&gt;
                &lt;li class=&quot;menuelems&quot;&gt;&lt;a href=&quot;http://&quot;&gt;Учительская&lt;/a&gt;&lt;/li&gt;
                &lt;li class=&quot;menuelems&quot;&gt;&lt;a href=&quot;http://&quot;&gt;Наша жизнь&lt;/a&gt;&lt;/li&gt;
                &lt;li class=&quot;menuelems&quot;&gt;&lt;a href=&quot;http://&quot;&gt;Стажировка&lt;/a&gt;&lt;/li&gt;
                &lt;li class=&quot;menuelems&quot;&gt;&lt;a href=&quot;http://&quot;&gt;Медиацентр&lt;/a&gt;&lt;/li&gt;
                &lt;li class=&quot;menuelems&quot;&gt;&lt;a href=&quot;http://&quot;&gt;Файлы&lt;/a&gt;&lt;/li&gt;
                &lt;li class=&quot;menuelems&quot;&gt;&lt;a href=&quot;http://&quot;&gt;Прочее&lt;/a&gt;&lt;/li&gt;
                &lt;li class=&quot;hiddenmenu&quot;&gt;&lt;a href=&quot;http://&quot;&gt;&lt;img src=&quot;/static/img/shortmenu.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
       &lt;/nav&gt;
   &lt;/div&gt;
&lt;/header&gt;</pre>
  <p></p>
  <blockquote>Вы можете заметить тут li-элемент с классом hiddenmenu, запомните его он пригодится нам в дальнейшей работе</blockquote>
  <p>css:</p>
  <pre>header {
    background: rgb(00, 00, 00);
}
ul {
    display: flex;
    list-style-type: none;
}
.container {
    max-width: 1500px;    
    margin: auto 10%;    
    padding-top: 1.5%;    
    padding-bottom: 1.5%;
.menu ul li {
    list-style-type: none;    
    font-size: 17px;    
    width: 15%;    
    padding-right: 1.5%;    
    padding-left: 1.5%;    
    color: white;    
    text-align: center;    
    line-height: 100%;
}
.menu ul li a {
    line-height: none;    
    display: inline-block;    
    vertical-align: middle;    
    text-decoration: none;
}
.menuelems a {
    color: white;    
    font-family: &#x27;Pacifico&#x27;, serif;
}
.logo {
    font-size: 30px;    
    font-family: &#x27;Mrs Sheppards&#x27;, cursive;
}
.logo a {
    color: rgb(105,136,184);
}
.hiddenmenu {
    display: none;    
    float: right;
}
.hiddenmenu a {
    display: inline-block;
    width: 100%;
}
.hiddenmenu a img {
    width: 60%;
}</pre>
  <blockquote>Еще одно важное правило для веб-разработки - весь контент должен находиться в контейнерах, они помогают контролировать масштаб контента через один стиль</blockquote>
  <p>И так, что тут следует отметить:</p>
  <ul>
    <li>Во-первых, элемент с классом hiddenmenu. В обычно состоянии этого элемента не видно благодаря заданному параметру <strong>display: none</strong></li>
    <li>Во-вторых, для удобства я задал всем элементам меню один стиль, чтобы у них не возникало трудностей с исчезновением</li>
  </ul>
  <p>Теперь начинаем творить волшебство, объявляем media-запрос с условием max-width: 420px. Делать будем адаптив под мобильные устройства. То есть, если экран пользователя меньше или равен 420px( а это чуть больше чем ширина 8 plus ) то стили указанные в теле запроса будут применены.</p>
  <pre>@media (max-width: 420px ) {
   .menuelems {
       display: none;    
   }    
   .hiddenmenu {
       display: block;        
       margin-left: 55%;    
   }    
   .container {
       padding-top: 3%;        
       margin: auto;    
   }    
   .logo {        
       line-height: 100%;    
   }
}</pre>
  <p>Примерно так выглядит мой media-запрос, самое главное что здесь происходит - это изменение значения display у menuelems и у hiddenmenu. Как вы помните изначально hiddenmenu у нас был скрыт, а menuelems обладал свойством flex. Сейчас же мы немного изменили ситуацию и скрыли от пользователя menuelems, а вместо него проявили hiddenmenu</p>
  <p><strong>ВАЖНО</strong></p>
  <p>Медиа-запросы нужно всегда писать в конце css-файла.</p>
  <p></p>
  <p>Надеюсь я все понятно объяснил, а вот не посредственно результат нашего кода:</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/02/c4/02c4f9d2-be87-4c9f-8e04-a4e615477362.png" width="1903" />
    <figcaption>Стандартная версия</figcaption>
  </figure>
  <figure class="m_original">
    <img src="https://teletype.in/files/dd/3b/dd3b9dc7-a66c-4e5a-abde-bd5137854256.png" width="415" />
    <figcaption>Адаптивная версия</figcaption>
  </figure>
  <p></p>
  <p>Если вам был интересен и полезен урок, то дайте знать фит-бэком)</p>
  <p>Удачи, программисты!</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/91/91/91913194-33e7-4e5d-923f-b6644ada79ce.jpeg" width="2500" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@progway/tmBV57DqT</guid><link>https://teletype.in/@progway/tmBV57DqT?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway</link><comments>https://teletype.in/@progway/tmBV57DqT?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway#comments</comments><dc:creator>progway</dc:creator><title>Weekly log #2</title><pubDate>Sun, 20 Sep 2020 12:51:49 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/3d/fc/3dfc40b3-8ba3-4484-ac51-3ef9adc7e952.jpeg"></media:content><description><![CDATA[<img src="https://teletype.in/files/3d/fc/3dfc40b3-8ba3-4484-ac51-3ef9adc7e952.jpeg"></img>Всех приветствую, извиняюсь за столь долгое отсутствие. Объяснить его могу только хорошей погодой и школой, из-за этих двух факторов я стал больше гулять и меньше уделять время коду. А про телеграмм вообще молчу..]]></description><content:encoded><![CDATA[
  <p>Всех приветствую, извиняюсь за столь долгое отсутствие. Объяснить его могу только хорошей погодой и школой, из-за этих двух факторов я стал больше гулять и меньше уделять время коду. А про телеграмм вообще молчу..</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/3d/fc/3dfc40b3-8ba3-4484-ac51-3ef9adc7e952.jpeg" width="1920" />
  </figure>
  <p>И так, что я сделал за эти 2 недели, если честно почти нихуя :)</p>
  <ul>
    <li>Я сверстал один лендинг для портфолио </li>
    <li>Понял, что отзываться на заказы пока что смысла нет. Во-первых, я пока что реально не готов. А во-вторых нужно хотя бы 10 - 15 работ в портфолио, без этого никак</li>
    <li>Начал разбираться с медиа-запросами, так как без адаптива в этом мире никуда. В целом все легко и просто, думаю запилить вам статейку о медиа-запросах с небольшой практической частью.</li>
    <li>Отобрал несколько ВУЗов, сейчас буду следить за их олимпиадами и принимать в них участие.</li>
  </ul>
  <p>На данный момент я пишу сайт для школы( это работа для портфолио если что ), который планирую доделать до конца. То есть не только верстку и анимации, но и бэкенд завести. Все таки про node.js забывать нельзя его тоже нужно тренить.</p>
  <p>Хочу еще раз поставить себе цели на сентябрь-октябрь. Как по-мне с ними лучше понимаешь что именно нужно делать.</p>
  <ul>
    <li>Заполнить портфолио. Хотя бы создать 10 разнообразных работ, если вам нужен какой-то сайт. То пишите в лс сделаю все максимально дешево, при условии что разрешите разместить работу в портфолио</li>
    <li>Выучить какой-то фронтенд фреймворк до среднего уровня. Скорее всего это будет React</li>
    <li>Делать минимум одну статью в две недели помимо отчетов.</li>
    <li>Постараться добить 1000 подписчиков в телеграмме</li>
  </ul>
  <p></p>
  <p>С понедельника начну работать по времени, чтобы все успевать и при этом уделять время как учебе в школе, так и саморазвитию. Спасибо всем кто остается тут, не смотря на мое отсутствие.</p>
  <p>На этом все,<br />Удачи программисты!</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/91/91/91913194-33e7-4e5d-923f-b6644ada79ce.jpeg" width="2500" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@progway/-6h6gv6qz</guid><link>https://teletype.in/@progway/-6h6gv6qz?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway</link><comments>https://teletype.in/@progway/-6h6gv6qz?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway#comments</comments><dc:creator>progway</dc:creator><title>Weekly log #1</title><pubDate>Sun, 06 Sep 2020 19:18:14 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/3d/fc/3dfc40b3-8ba3-4484-ac51-3ef9adc7e952.jpeg"></media:content><description><![CDATA[<img src="https://teletype.in/files/3d/fc/3dfc40b3-8ba3-4484-ac51-3ef9adc7e952.jpeg"></img>Всех приветствую, вот и прошла первая учебная неделя. В школе сейчас творится полный хаус из-за пандемии и новой учебной программы. Если вдаваться в подробности, то мы первая паралель у которой будет четкое разделение по профильным предмета, из-за этого у класса порой получается два урока в одно время, а это приводит к нехватке учителей и кабинетов. Плюс еще и пандемия... Вообщем, одним словом пиздец.]]></description><content:encoded><![CDATA[
  <p>Всех приветствую, вот и прошла первая учебная неделя. В школе сейчас творится полный хаус из-за пандемии и новой учебной программы. Если вдаваться в подробности, то мы первая паралель у которой будет четкое разделение по профильным предмета, из-за этого у класса порой получается два урока в одно время, а это приводит к нехватке учителей и кабинетов. Плюс еще и пандемия... Вообщем, одним словом пиздец.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/3d/fc/3dfc40b3-8ba3-4484-ac51-3ef9adc7e952.jpeg" width="1920" />
  </figure>
  <h3>Отчет</h3>
  <ul>
    <li>Сейчас активно занимаюсь фрилансом. Верстаю работы для портфолио и отвечаю на все заявки, которые смогу осилить, пока что никто не откликнулся НО ВСЕ ВПЕРЕДИ.<br />На этой неделе сверстал два лендинга. Один на тему балльных танцев, а второй для магазина автозапчастей. В целом получилось неплохо, но есть куда расти</li>
    <li>Начал активно изучать тему вузов. Даже екселевский файл для этого создал, пока что топ три в списке желаний это СПБГу, ИТМО и Питерский политех. Да-да, я хочу свалить в питер</li>
    <li>Про школу упомянул, пока что ничего нового, но год обещает быть интересным. Так как у меня полностью убрали из программы химию, биологию, географию и второй ин яз, и компенсировали это 6 часами математики,  4 информатики и 5 физики. Класс!</li>
  </ul>
  <p>На следующей неделе продолжу делать работы в портфолио, еще хочу попробовать сделать одну анимацию на Js. Если получится замучу вам урок :D</p>
  <p>Удачи, программисты!</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/91/91/91913194-33e7-4e5d-923f-b6644ada79ce.jpeg" width="2500" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@progway/tYFicHiOG</guid><link>https://teletype.in/@progway/tYFicHiOG?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway</link><comments>https://teletype.in/@progway/tYFicHiOG?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway#comments</comments><dc:creator>progway</dc:creator><title>Подводим итоги 2-ух месячного марафона</title><pubDate>Mon, 31 Aug 2020 18:48:51 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/f8/d3/f8d3c1d0-4193-4617-b0b3-ff17943fa533.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/75/96/759673d4-4933-4f0a-8c5b-1b739dba22c4.jpeg"></img>Привет друзья! Сегодня 31 августа, а это говорит о том что мой марафон окончен и сейчас я хочу подвести его итоги.]]></description><content:encoded><![CDATA[
  <p>Привет друзья! Сегодня 31 августа, а это говорит о том что мой марафон окончен и сейчас я хочу подвести его итоги.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/75/96/759673d4-4933-4f0a-8c5b-1b739dba22c4.jpeg" width="1920" />
  </figure>
  <p>Цели, которые я ставил вы можете посмотреть здесь - <a href="https://teletype.in/@progway/JlajR-21O" target="_blank">https://teletype.in/@progway/JlajR-21O</a> А сейчас я расскажу о том как проходил этот марафон и как я изменился после него.</p>
  <p>Ну во-первых, любые цели мотивируют тебя работать. Так же это случилось и со мной, последние два месяца я писал код примерно по 5-8 часов в день и это дало свои плоды:</p>
  <ul>
    <li>Я закончил 3 проекта. Морской бой, Блог и телеграм бот( о нем расскажу в ближайшие дни в отчете )</li>
    <li>Из-за интенсивной работы я сильно импрувнулся, если раньше сверстать лэндинг с формой регистрации и админ панелью для меня было сложной, объемной задачей. То сейчас я выполняю это за 3-4 дня под музычку и даже особо не напрягаясь( ладно я пизжу, баги бывают везде и всегда не зависимо от того насколько ты импрувнулся ). Для примера, верстка блога у меня заняла дня 3, а лендинг для портфолио я сверстал часов за 7 непрерывной работы</li>
    <li>Я начал выходить на фриланс. Пунктом выше упомянул, что сейчас нахожусь в стадии заполнения портфолио и отвечаю на каждый заказ, который смогу выполнить.</li>
    <li>По-мимо программирования я развивал свой телеграмм канал и за время марафона объем нашего комьюнити вырос примерно на 280 человек. До тысячи нам осталось меньше 150 участников, поэтому планирую преодолеть эту отметку к концу сентября.</li>
    <li>Про спорт и режим особо разглагольствоваться не буду, просто хочу сказать, что стал вести более правильный образ жизни. И это реально увеличило мою продуктивность, то есть правильный режим сна, спорт и питания безумно сильно влияет на продуктивность в любой занятости.</li>
  </ul>
  <h3>Что будет дальше?</h3>
  <p>Раз уж я взялся я объемную разговорную статью, то предлагаю поднять тему контента и моей занятости в ближайшие 9 месяцев.</p>
  <p>Кто не знал мне 16, поэтому я пойду в 10 класс =&gt; у меня будет примерно в 2 раза меньше времени на канал и программирование. Все это я говорю к сокращению кол-ва постов в телеге... Скорее всего они будут выходить раз в неделю( обязательно ) и время от времени чаще.</p>
  <p>Про контент. Это преимущественно будут отчеты по типу постов под #марафон, только сейчас это станет weekly_logами. Так же хотя бы раз в месяц-два буду брать интервью( возможно они будут браться в дискорде и публиковаться на ютубе в виде подкастов ), ну и делать образовательный контент по мере его надобности.</p>
  <p>Вообщем, все будет так же круто. Просто приоритет программирования больше, чем у телеграма и думаю это логично :)</p>
  <p></p>
  <p>Как-то так, увидимся через неделю<br />Удачи, программисты!</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/91/91/91913194-33e7-4e5d-923f-b6644ada79ce.jpeg" width="2500" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@progway/5NcSAdaWn</guid><link>https://teletype.in/@progway/5NcSAdaWn?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway</link><comments>https://teletype.in/@progway/5NcSAdaWn?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway#comments</comments><dc:creator>progway</dc:creator><title>Deploy node.js приложения на heroku</title><pubDate>Thu, 27 Aug 2020 11:13:37 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/85/b0/85b0cbd7-3797-4703-8cdb-c6bfce6cde09.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/f7/57/f75759aa-0294-4e1e-b678-8f57f0e9bc4d.png"></img>Привет, ребят! Сегодня мы поговорим о безусловно важной вещи в веб-программировании, а именно о деплое приложения на хостинг.]]></description><content:encoded><![CDATA[
  <p>Привет, ребят! Сегодня мы поговорим о безусловно важной вещи в веб-программировании, а именно о деплое приложения на хостинг.</p>
  <p>В качестве хостинга мы будем использовать heroku, так как он бесплатный. </p>
  <figure class="m_column">
    <img src="https://teletype.in/files/f7/57/f75759aa-0294-4e1e-b678-8f57f0e9bc4d.png" width="1920" />
  </figure>
  <p>И так, для начала нам нужно пройти регистрацию на <a href="http://heroku.com" target="_blank">сайте</a> Она там банальная, так что не вижу смысла ее демонстрировать.</p>
  <p>В корне вашего проекта создайть файл .gitignore со следующим содержимым:</p>
  <pre>node_moduls</pre>
  <p>Все папки и файлы записанные в этот список не будут добавляться в git-репозиторий</p>
  <p>После регистрации заходим в консоль и открываем папку нашего приложения. Теперь прописываем следующие команды:</p>
  <ul>
    <li><code>heroku login</code> - после чего нужно будет нажать на любую клавишу кроме &quot;q&quot; и залогиниться на открывшемся в браузере окне</li>
    <li><code>git init</code> - инициализируем локальный git-репозиторий в проекте</li>
    <li><code>git add . </code>- добавляем все файлы</li>
    <li><code>git commit -m &quot;Ваша комментарий&quot;</code> - заливаем все в репозиторий</li>
  </ul>
  <p>Теперь нужно перейти по этой ссылке <a href="https://dashboard.heroku.com/apps" target="_blank">https://dashboard.heroku.com/apps</a> и создать новое приложение( кнопка в правом верхнем углу ). После чего оно появится в списке ваших проектов, теперь нажимаем на него и переходим в пункт deploy</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/8e/cb/8ecbcf96-5a8c-4e2d-8f91-4ec46b462619.png" width="1920" />
  </figure>
  <blockquote>Далее команды будут немного расходится с вашими, так как мы будем использовать разные heroku-проекты. Поэтому копируйте ваш код и используйте его со мной в одном порядке</blockquote>
  <p>Теперь клонируем все на наш удаленный репозиторий:</p>
  <ul>
    <li><code>heroku git:remote -a progwaytest</code></li>
  </ul>
  <p>И пушим его на сам хост:</p>
  <ul>
    <li><code>git push heroku master</code></li>
  </ul>
  <p>Прописываем в консоль heroku open и наслаждаемся рабочим приложением.</p>
  <p></p>
  <p>На этом все,</p>
  <p>Удачи программисты!</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/91/91/91913194-33e7-4e5d-923f-b6644ada79ce.jpeg" width="2500" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@progway/-fMcU6BIB</guid><link>https://teletype.in/@progway/-fMcU6BIB?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway</link><comments>https://teletype.in/@progway/-fMcU6BIB?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway#comments</comments><dc:creator>progway</dc:creator><title>Анимация на ванильном js</title><pubDate>Sat, 08 Aug 2020 11:05:53 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/16/03/1603df59-3e6e-4c98-8035-3805b592e3e6.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/cb/b5/cbb5e1e6-0eb4-4352-b5a2-f193f82ed9d0.png"></img>Всех приветствую, сегодня хочу рассказать как я сделал первую в своей жизни анимацию на javascript. Думаю можно начинать без лишних слов]]></description><content:encoded><![CDATA[
  <p>Всех приветствую, сегодня хочу рассказать как я сделал первую в своей жизни анимацию на javascript. Думаю можно начинать без лишних слов</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/cb/b5/cbb5e1e6-0eb4-4352-b5a2-f193f82ed9d0.png" width="1920" />
  </figure>
  <h3>Теория</h3>
  <p>Наша анимация будет работать при помощи интервального вызова одной функции, которая в свою очередь задает новый класс для hr полоски.</p>
  <p>Кстати, анимация у нас будет накладываться на hr, расположенный под блоком меню.</p>
  <h3>Практика</h3>
  <p>Сейчас я покажу вам верстку, стили и js файл моего меню. Начнем мы с верстки и думаю здесь рассказывать нечего</p>
  <pre>&lt;nav class=&quot;menu&quot; id=&quot;menu&quot;&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;div class=&quot;logo&quot;&gt;&lt;a href=&quot;/&quot;&gt;
            &lt;ul&gt;
                &lt;h1&gt;&lt;span class=&quot;prog&quot;&gt;Prog&lt;/span&gt;&lt;span class=&quot;way&quot;&gt;Way&lt;/span&gt;&lt;/h1&gt;
            &lt;/ul&gt;&lt;/a&gt;
        &lt;/div&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a onmouseover=&quot;animation(&#x27;soft&#x27;, &#x27;over&#x27;)&quot; onmouseout=&quot;animation(&#x27;soft&#x27;, &#x27;out&#x27;)&quot; class=&quot;amenu&quot; href=&quot;/soft&quot;&gt;Софт&lt;/a&gt;&lt;hr class=&quot;step0&quot; id=&quot;soft&quot;&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a onmouseover=&quot;animation(&#x27;quizs&#x27;, &#x27;over&#x27;)&quot; onmouseout=&quot;animation(&#x27;quizs&#x27;, &#x27;out&#x27;)&quot; class=&quot;amenu&quot; href=&quot;/quizs&quot;&gt;Задачи&lt;/a&gt;&lt;hr class=&quot;step0&quot; id=&quot;quizs&quot;&gt;&lt;/li&gt;            
        &lt;li&gt;&lt;a onmouseover=&quot;animation(&#x27;posts&#x27;, &#x27;over&#x27;)&quot; onmouseout=&quot;animation(&#x27;posts&#x27;, &#x27;out&#x27;)&quot; class=&quot;amenu&quot; href=&quot;/posts&quot;&gt;Статьи&lt;/a&gt;&lt;hr class=&quot;step0&quot; id=&quot;posts&quot;&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/nav&gt;</pre>
  <p>Теперь рассмотрим стили</p>
  <pre>.menu {
    display: block;    
    width: 100%;    
    padding-bottom: 0;    
    box-shadow: 0px 15px 5px 10px #272933;  
}

ul {
    list-style: none;
    margin: 0% 0%;
}

.menu li {
    padding-top: 1em;
    width: 100%;    
    text-align: center;
}

.menu ul {
    display: flex;      
    background: #18171c;    
    padding-left: 15%;    
    padding-right: 15%;    
    height: 100%;
}

.menu a {
    height: 100%;    
    display: block;    
    color: white;    
    font-weight: bold;    
    background: #18171c;    
    text-decoration: none;    
    font-size: 18px;
}

.menu li {
    width: 15%;    
    padding-left: 4.3%;    
    height: 100%;    
    text-align: center;    
    vertical-align: middle;
}

.amenu {
    padding-top: 4%;    
    font-family: &#x27;Didact Gothic&#x27;, sans-serif;
}

.prog {
    color: white;    
    font-size: 25px;
}

.way {
    color: #9966cc;    
    font-size: 25px;
}

.step0 {
    width: 0%;
}

.step1 {
    width: 10%;
}

.step2 {
    width: 20%;
}

.step3 {
    width: 30%;
}

.step4 {
    width: 40%;
}

.step5 {
    width: 50%;
}

.step6 {
    width: 60%;
}

.step7 {
    width: 70%;
}
 
.step8 {
     width: 80%;
}
 
.step9 {
    width: 90%;
}

.step10 {
    width: 100%;
}</pre>
  <p>А сейчас самое интересное... JAVASCRIPT код, но перед этим предлагаю подробнее рассмотреть верстку отдельного элемента меню</p>
  <pre>&lt;li&gt;&lt;a onmouseover=&quot;animation(&#x27;soft&#x27;, &#x27;over&#x27;)&quot; onmouseout=&quot;animation(&#x27;soft&#x27;, &#x27;out&#x27;)&quot; class=&quot;amenu&quot; href=&quot;/soft&quot;&gt;Софт&lt;/a&gt;&lt;hr class=&quot;step0&quot; id=&quot;soft&quot;&gt;&lt;/li&gt;</pre>
  <p>Элементу &lt;a&gt; мы задаем функцию <strong>animation </strong>в аргументы <strong>onmouseover </strong>и <strong>onmouseout</strong>. А функция в свою очередь принимает id hr-а( будет нужен для выбора определенного hr ) и over/out( это будет влиять на одно из условий в функции )</p>
  <p>Элементу &lt;hr&gt; мы изначально задаем класс step0 и id, в моем случае это &quot;soft&quot;.</p>
  <p>Теперь перейдем в javascript-файл и изучим код функции</p>
  <pre>var timerover;
var timerout;
function animation(id, where) {
    var hr = document.getElementById(id)
    if (where == &quot;over&quot;){
        clearInterval(timerout)
        timerover = setInterval(morewidth, 20);
        
        function morewidth(){
            var classnow = hr.className
            if (classnow == &quot;step0&quot;){
                hr.className = &quot;step1&quot;
            } else if (classnow == &quot;step1&quot;){
                hr.className = &quot;step2&quot;
            } else if (classnow == &quot;step2&quot;){
                hr.className = &quot;step3&quot;            
            } else if (classnow == &quot;step3&quot;){
                hr.className = &quot;step4&quot;
            } else if (classnow == &quot;step4&quot;){
                hr.className = &quot;step5&quot;            
            } else if (classnow == &quot;step5&quot;){                
                hr.className = &quot;step6&quot;            
            } else if (classnow == &quot;step6&quot;){                
                hr.className = &quot;step7&quot;            
            } else if (classnow == &quot;step7&quot;){                
                hr.className = &quot;step8&quot;            
            } else if (classnow == &quot;step8&quot;){                
                hr.className = &quot;step9&quot;            
            } else if (classnow == &quot;step9&quot;){                
                hr.className = &quot;step10&quot;                
                clearInterval(timerover)
            }
        }
    } else if (where == &quot;out&quot;) {
        clearInterval(timerover)
        timerout = setInterval(lesswidth, 20);
        
        function lesswidth(){
            var classnow = hr.className
            if (classnow == &quot;step10&quot;){
                hr.className = &quot;step9&quot;
            } else if (classnow == &quot;step9&quot;){                
                hr.className = &quot;step8&quot;            
            } else if (classnow == &quot;step8&quot;){                
                hr.className = &quot;step7&quot;            
            } else if (classnow == &quot;step7&quot;){                
                hr.className = &quot;step6&quot;            
            } else if (classnow == &quot;step6&quot;){                
                hr.className = &quot;step5&quot;            
            } else if (classnow == &quot;step5&quot;){                
                hr.className = &quot;step4&quot;            
            } else if (classnow == &quot;step4&quot;){                
                hr.className = &quot;step3&quot;            
            } else if (classnow == &quot;step3&quot;){                
                hr.className = &quot;step2&quot;            
            } else if (classnow == &quot;step2&quot;){                
                hr.className = &quot;step1&quot;            
            } else if (classnow == &quot;step1&quot;){                
                hr.className = &quot;step0&quot;                
                clearInterval(timerout)            
            }
        }    
    } 
}</pre>
  <p>Давайте по порядку:</p>
  <ul>
    <li>В самом начале мы создаем 2 переменных: timerover и timerout. Они нам нужны для начала и завершения интервалов.</li>
    <li>Потом уже в теле функции мы задаем проверку на аргумент &quot;where&quot;( предлагаю изучить первое ответвление, так как второе почти полностью индентично )</li>
    <li>Здесь мы отчищаем timerout и запусткаем интервал timerover. В аргумент интервала передаем функцию( в данном случае morewidth, и частоту запуска 20мс )</li>
    <li>Теперь приступим к функции morewidth. Тут мы получаем класс hr на данный момент и проверяем его. При выполнении условия мы меняем его класс, тем самым увеличивая width элемента на 10%. И если доходим до step10 отчищаем интервал.</li>
  </ul>
  <p><strong>ВАЖНО</strong></p>
  <p>Не забывайте чистить интервал, иначе две функции буду противодействовать друг другу.</p>
  <p></p>
  <h3>Итог</h3>
  <p>Это один из вариантов реализации анимации, я показал как это сделать именно на ванильном javascript&#x60;е. А что у нас получилось можете посмотреть в моем <a href="https://t.me/TheProgWay/270" target="_blank">телеграм канале</a>.</p>
  <p></p>
  <p>На сегодня все,<br />Удачи, программисты!</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/91/91/91913194-33e7-4e5d-923f-b6644ada79ce.jpeg" width="2500" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@progway/0fPrC8CfH</guid><link>https://teletype.in/@progway/0fPrC8CfH?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway</link><comments>https://teletype.in/@progway/0fPrC8CfH?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway#comments</comments><dc:creator>progway</dc:creator><title>Мой софт для программирования</title><pubDate>Thu, 06 Aug 2020 20:31:14 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/0c/e2/0ce22272-876d-4891-9d85-feeb09ca0ad6.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/63/fb/63fb3dd9-5815-4d74-8284-f90a8ab7b86c.png"></img>Всех приветствую, вы просили - я рассказываю. Сегодня расскажу вам о 4-ех программах, которые я запускаю почти каждый день.]]></description><content:encoded><![CDATA[
  <p>Всех приветствую, вы просили - я рассказываю. Сегодня расскажу вам о 4-ех программах, которые я запускаю почти каждый день.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/63/fb/63fb3dd9-5815-4d74-8284-f90a8ab7b86c.png" width="1920" />
  </figure>
  <h3>ConEmu</h3>
  <p>Программисты это те люди, который пользуются командной строкой и всех этим пугают... Но стандартная cmd у винды безумно не удобная, как минимум в ней нельзя пользоваться комбинациями клавиш!!!</p>
  <p>Поэтому я предлагаю вам очень крутую замену - ConEmu. Это очень удобный аналог cmd, который вы можете полностью настроить под себя:</p>
  <ul>
    <li>Надоел черный фон? - Легко, в conemu можно сделать кастомный фон</li>
    <li>Нужно несколько окон, но между ними бесит перемещаться? - Каждое новое окно будет отображаться во вкладках.</li>
    <li>Часть пользуетесь комбинациями клавиш? - Вуаля, здесь можно все!!!</li>
  </ul>
  <p>И это только самый важные настройки для меня. Так что всем советую</p>
  <p><a href="https://conemu.ru/ru/" target="_blank">https://conemu.ru/ru/</a></p>
  <h3>VS Code</h3>
  <p>Да, это возможно не совсем то что вы ожидали. Но я хочу рассказать пожалуй о самым лучшем редакторе кода( из всех что я пробовал ). Из плюсов это приятный дизайн( как по мне это очень важно, ведь в программе вы будите сидеть почти 24/7). А второй плюс, это ОГРОМНОЕ КОЛ-ВО плагинов, которыми вы можете настроить vscode полностью под себя</p>
  <h3>Colormania</h3>
  <p>Если вы верстаете сайты, то вы 100% нуждаетесь в красивых цветах. Это приложение поможет получить вам, любой нужный вам цвет во всех форматах.</p>
  <p><a href="https://colormania.ru.uptodown.com/windows" target="_blank">https://colormania.ru.uptodown.com/windows</a></p>
  <h3>Subcolor</h3>
  <p>Это не совсем софт, но я этим пользуюсь очень часто. Этот сайт позволит вам создать градиет цветов, для использования во фронтенд разработке.</p>
  <p>Сам сайт - <a href="https://subcolor.github.io/" target="_blank">https://subcolor.github.io/</a></p>
  <h3>Workbench</h3>
  <p>Если вы веб-разработчик, то 100% работаете с базами данных. В том же самом node.js или asp.net таблицы можно создавать непосредственно в коде, но как по мне это не удобно.</p>
  <p>Поэтому я предлагаю вам приложение Workbench, в котором вы с можете работать с вашей базой данных напрямую через язык mysql. Даже если вы не знаете этот язык, вы выучите его за 5 секунд. ЭТО ПРОСТО АНГЛИЙСКИЙ</p>
  <p><a href="https://dev.mysql.com/downloads/workbench/" target="_blank">https://dev.mysql.com/downloads/workbench/</a></p>
  <p></p>
  <p>Вот такой вот список, если вы нашли для себя что-то полезное - поставьте лайк &lt;3</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/91/91/91913194-33e7-4e5d-923f-b6644ada79ce.jpeg" width="2500" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@progway/p_0eIl7pB</guid><link>https://teletype.in/@progway/p_0eIl7pB?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway</link><comments>https://teletype.in/@progway/p_0eIl7pB?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway#comments</comments><dc:creator>progway</dc:creator><title>Split Strings решение</title><pubDate>Wed, 29 Jul 2020 20:32:42 GMT</pubDate><description><![CDATA[И так, эта задача уже посложнее... Приступим!]]></description><content:encoded><![CDATA[
  <p>И так, эта задача уже посложнее... Приступим!</p>
  <p>Изначально нам нужно проверить четное или не четное кол-во элементов хранит наша строка.</p>
  <ul>
    <li>Если в строке четное кол-во символов, то запускаем цикл с шагом в 2 единицы и в итоговый массив добавляем пару символов. Номер шага и номер шага + 1</li>
    <li>А если результат проверки обратный, мы опять же запускаем цикл с шагом в 2 единицы. Но каждый шаг проверяем typeof(i + 1 элемент) на то что он undefined. Если приравнен создаем пару элемент [шаг] и &quot;_&quot;. В обратном случае, идем по плану сверху указанного кода.</li>
  </ul>
  <p>Вот код функции:</p>
  <pre>function solution(str){
  var res = []
  var midres = &quot;&quot;;
  if (str.length % 2 == 0){
    for (var i = 0; i &lt; str.length; i = i + 2){
      midres = str[i] + str[i + 1]
      res.push(midres)
    }
  } else if (str.length % 2 != 0){
    for (var i = 0; i &lt; str.length; i = i + 2){
      if (typeof(str[i + 1])== &quot;undefined&quot;){
        midres = str[i] + &quot;_&quot;
        res.push(midres)
      } else {
        midres = str[i] + str[i + 1]
        res.push(midres)
      }
    }
  }
  return res
}</pre>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@progway/v1GE7ErJI</guid><link>https://teletype.in/@progway/v1GE7ErJI?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway</link><comments>https://teletype.in/@progway/v1GE7ErJI?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway#comments</comments><dc:creator>progway</dc:creator><title>Does my number look big in this? Решение</title><pubDate>Mon, 27 Jul 2020 20:41:28 GMT</pubDate><description><![CDATA[И так, нам в функцию дается число. Нам нужно каждый его элемент возвести в кол-во элементов числа и сложить все это]]></description><content:encoded><![CDATA[
  <p>И так, нам в функцию дается число. Нам нужно каждый его элемент возвести в кол-во элементов числа и сложить все это</p>
  <p>Нам нужно в локальную переменную передать конвертированное в строку value. После чего запустить цикл, каждый элемент возводить в степень длинны строки и добавлять в локальный res</p>
  <p>В конце проверять равенство res и value, и в зависимости от этого возвращать true/false</p>
  <pre>function narcissistic(value) {
  var sval = String(value)
  var res = 0;
  for (var i= 0; i &lt; sval.length; i++){
    res += Math.pow(sval[i], sval.length)
  }
  if (res == value){
    return true
  } else {
    return false
  }
}</pre>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@progway/DSD38s6A8</guid><link>https://teletype.in/@progway/DSD38s6A8?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway</link><comments>https://teletype.in/@progway/DSD38s6A8?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=progway#comments</comments><dc:creator>progway</dc:creator><title>List Filtering решение</title><pubDate>Fri, 24 Jul 2020 19:23:21 GMT</pubDate><description><![CDATA[И так, приступим к решению. По условию нам дается массив с двумя типами данных:]]></description><content:encoded><![CDATA[
  <p>И так, приступим к решению. По условию нам дается массив с двумя типами данных:</p>
  <ul>
    <li>Строки</li>
    <li>Числа</li>
  </ul>
  <p>Поэтому мы будем получать массив, затем перебирать его при помощи for и проверять тип каждого элемента( это мы будем делать при помощи функции typeof() )</p>
  <p>Ну а если этот элемент является числом, то добавляем его в итоговый массив.</p>
  <pre>function filter_list(l) {
    var res = []
    for (var i = 0; i &lt; l.length; i++){
      if (typeof(l[i]) == &quot;number&quot;){
        res.push(l[i])
      }
    }
    return res
}</pre>

]]></content:encoded></item></channel></rss>