<?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>Roy Top Boy</title><generator>teletype.in</generator><description><![CDATA[Roy Top Boy]]></description><image><url>https://teletype.in/files/6c/cf/6ccf5f24-ea59-4ae3-a929-2712d8420583.png</url><title>Roy Top Boy</title><link>https://teletype.in/@learnscript</link></image><link>https://teletype.in/@learnscript?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/learnscript?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/learnscript?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Thu, 09 Apr 2026 05:10:53 GMT</pubDate><lastBuildDate>Thu, 09 Apr 2026 05:10:53 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@learnscript/iiY73lnkR</guid><link>https://teletype.in/@learnscript/iiY73lnkR?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript</link><comments>https://teletype.in/@learnscript/iiY73lnkR?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript#comments</comments><dc:creator>learnscript</dc:creator><title>КУРСЫ ПО JAVASCRIPT. Урок 3</title><pubDate>Mon, 13 Apr 2020 11:48:15 GMT</pubDate><description><![CDATA[Сегодня мы поговорим про циклы for и while, они используются, когда надо повторять один и тот же скрипт много раз, допустим, 1000 раз.
]]></description><content:encoded><![CDATA[
  <p>Сегодня мы поговорим про циклы for и while, они используются, когда надо повторять один и тот же скрипт много раз, допустим, 1000 раз.<br /></p>
  <h2>Цикл «while» :</h2>
  <pre>Синтаксис : while (condition) {
                // код
                // также называемый &quot;телом цикла&quot;
            }
</pre>
  <p><strong>Смысл</strong> :  Пока выполняется условие будет работать код.<br /></p>
  <p>Условие -  <code>condition.<br /><br /></code>Пример цикла : </p>
  <p><code>let i = 0;<br />while (i &lt; 3) { // выводит 0, затем 1, затем 2<br />  alert( i );<br />  i++;<br />}</code></p>
  <p>Одно выполнение тела цикла по-научному называется <em>итерация</em>.</p>
  <h2>Цикл «do…while» :</h2>
  <pre>do {
  // тело цикла
} while (condition);</pre>
  <p>Цикл сначала выполнит тело, а затем проверит условие <code>condition</code>, и пока его значение равно <code>true</code>, он будет выполняться снова и снова.</p>
  <p>Пример цикла:<br /><code>let i = 0;<br />do {<br />  alert( i );<br />  i++;<br />} while (i &lt; 3);</code></p>
  <h2>Цикл «for» : </h2>
  <p>Синтаксис : <br /><code>for (начало; условие; шаг) {<br />  // ... тело цикла ...<br />}</code></p>
  <p>Пример цикла :<br /><code>for (let i = 0; i &lt; 3; i++) { // выведет 0, затем 1, затем 2<br />  alert(i);<br />}</code></p>
  <p>То есть, <em>начало </em>выполняется один раз, а затем каждая итерация заключается в проверке <em>условия</em>, после которой выполняется <em>тело </em>и <em>шаг.</em></p>
  <h2>Прерывание цикла: «break»</h2>
  <p>Но мы можем выйти из цикла в любой момент с помощью специальной директивы <code>break</code>. </p>
  <p>Вообще, сочетание «бесконечный цикл + <code>break</code>» – отличная штука для тех ситуаций, когда условие, по которому нужно прерваться, находится не в начале или конце цикла, а посередине.</p>
  <h2>Переход к следующей итерации: continue</h2>
  <p><br />Директива <code>continue</code> – «облегчённая версия» <code>break</code>. При её выполнении цикл не прерывается, а переходит к следующей итерации (если условие все ещё равно <code>true</code>).</p>
  <p>Её используют, если понятно, что на текущем повторе цикла делать больше нечего.<br /><br /><br />Важно усвоить этот материал, циклы будут вам встречаться каждый день, поэтому в этот раз я дал вам мало теории, но побольше практики.<br /></p>
  <h2>Домашнее задание :</h2>
  <ol>
    <li>Проверить,  что будет, если в цикле<strong> for</strong> убрать условия частично или же полностью.</li>
    <li>Решить задачку: <br />Написать скрипт, который получает число N через prompt(), потом последовательность из N чисел, надо найти и вывести в консоль 3 числа, дающих максимальное  произведение(тройки не обязательно рядом)</li>
  </ol>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@learnscript/qC2stDGFt</guid><link>https://teletype.in/@learnscript/qC2stDGFt?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript</link><comments>https://teletype.in/@learnscript/qC2stDGFt?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript#comments</comments><dc:creator>learnscript</dc:creator><title>Универсальный солдат или узкий специалист? Что должен знать и уметь DevOps-инженер</title><pubDate>Sat, 11 Apr 2020 09:31:28 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/c7/c0/c7c01e72-e578-4669-891e-f443917f3cf4.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/39/f6/39f68d3c-19db-4102-8405-64fdb70943b4.jpeg"></img>DevOps — восходящий тренд в IT, популярность и востребованность специальности постепенно растет. У GeekBrains не так давно открылся факультет DevOps, на котором готовят специалистов соответствующего профиля. К слову, профессию девопса часто путают со смежными — программированием, системным администрированием и т. п.]]></description><content:encoded><![CDATA[
  <figure class="m_column">
    <img src="https://teletype.in/files/39/f6/39f68d3c-19db-4102-8405-64fdb70943b4.jpeg" width="1271" />
  </figure>
  <p>DevOps — восходящий тренд в IT, популярность и востребованность специальности постепенно растет. У GeekBrains не так давно открылся <a href="https://geekbrains.ru/geek_university/devops" target="_blank">факультет DevOps</a>, на котором готовят специалистов соответствующего профиля. К слову, профессию девопса часто путают со смежными — программированием, системным администрированием и т. п.</p>
  <p>Для того чтобы прояснить, что вообще такое DevOps и для чего нужны представители этой профессии, мы поговорили с Николаем Бутенко, архитектором <a href="https://mcs.mail.ru/" target="_blank">Mail.ru Cloud Solutions</a>. Он принимал участие в разработке программы курса факультета DevOps и одновременно преподает студентам третьей четверти.</p>
  <h2>Что вообще должен знать и уметь хороший DevOps?</h2>
  <p>Здесь лучше сразу сказать, чего он не должен уметь. Существует миф, что представитель этой профессии — человек-оркестр, который может написать отличный код, затем протестировать его, а в свободное время идет и чинит принтеры коллегам. Возможно, еще помогает на складе и подменяет бариста.</p>
  <p>Для того чтобы знать, что должен уметь DevOps-специалист, вернемся к определению самого понятия. DevOps — это оптимизация времени от разработки продукта до выпуска продукта на рынок. Соответственно, специалист оптимизирует процесс между разработкой и эксплуатацией, говорит на их языке и строит грамотный пайплайн.</p>
  <p>Что нужно знать и уметь? Вот то, что является важным:</p>
  <ul>
    <li>Нужны хорошие soft skills, поскольку требуется одновременно взаимодействовать с несколькими отделами внутри одной компании.</li>
    <li>Аналитическое структурное мышление, чтобы смотреть на процессы сверху и понимать, как их оптимизировать.</li>
    <li>Надо самому разбираться во всех процессах разработки и эксплуатации. Только тогда их можно оптимизировать.</li>
    <li>Нужны еще и отличные навыки планирования, анализа и проектирования для создания унифицированного производственного процесса.</li>
  </ul>
  <h2>Все представители DevOps одинаковы или есть различия внутри специальности?</h2>
  <p>В последнее время возникло несколько ответвлений внутри одной специальности. Но в целом, в понятие DevOps включены в основном три направления: SRE (администратор), Developer (разработчик), Manager (отвечает за взаимодействие с бизнесом). DevOps-специалист понимает потребности бизнеса и организовывает эффективную работу между всеми путем создания унифицированного процесса.</p>
  <p>Он также хорошо представляет себе все процессы цикла разработки продукта, архитектуру, разбирается в информационной безопасности на том уровне, чтобы оценивать риски. Кроме того, DevOps знают и понимают подходы и средства автоматизации, а также пред и пост-релизную поддержку программ и сервисов. В целом, задача DevOps — как раз видеть всю систему, как единое целое, направлять и управлять процессами, которые способствуют развитию этой системы.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/6b/8a/6b8a661a-e05a-43a1-8eaf-d8354a00a517.gif" width="540" />
  </figure>
  <p>К сожалению, что в России, что за границей работодатели далеко не всегда понимают суть DevOps. Просматривая публикуемые вакансии можно заметить, что называя вакансию DevOps, компании ищут то сисадминов, то Kubernetes-администраторов, то вообще тестеров. Особенно сильно бросается в глаза весьма разнородный фарш знаний и умений в вакансиях по DevOps с HH.ru, LinkedIn.</p>
  <p>Важно отметить, что DevOps — не просто специальность, это, в первую очередь, методология отношения к инфраструктуре как к коду. В результате внедрения методологии все участники команды разработки видят и понимают не только свой участок работ, у них возникает видение работы всей системы.</p>
  <h2>Чем может помочь DevOps компании, в которой работает?</h2>
  <p>Одна из важнейших метрик для бизнеса — Time-to-Market (TTM). Это время выхода на рынок, то есть отрезок времени, в течение которого выполняется переход от идеи создания продукта к выводу продукта в продажу. TTM особенно важен для тех отраслей, где продукты быстро устаревают.</p>
  <p>При помощи DevOps целый ряд известных ритейлеров в РФ и зарубежье стали развивать новые направления. Эти компании массово переходят в онлайн, полностью или частично отказываясь от офлайн-площадок. В этих условиях нужна быстрая разработка приложений и сервисов, которая невозможна без использования DevOps-инструментов.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/c6/69/c6698666-deec-4423-b872-162729e40c1f.gif" width="695" />
  </figure>
  <p>В итоге некоторым ритейлерам удалось ускорить процесс вывода необходимых для приложений и сервисов буквально за день. А это — важнейший фактор конкуренции в условиях современного рынка.</p>
  <h2>Кто может стать DevOps?</h2>
  <p>Конечно, здесь будет проще представителям технических специальностей: программистам, тестировщикам, сисадминам. Тому, кто собирается в эту сферу без соответствующего образования, нужно быть готовым к изучению основ программирования, тестирования, управления процессами и системного администрирования. И только потом, когда все это освоено, можно будет приступать к изучению DevOps-концепции как единого целого.</p>
  <p>Лучше всего DevOps дается тем людям, кто обладает аналитическим складом мышления и способен использовать системный подход. Сложно сказать, сколько времени понадобится новичку для того, чтобы стать классным DevOps’ом. Здесь все зависит от начальной базы, а также от окружения и задач, которые нужно решать, плюс от масштаба компании. В числе компаний, которым нужны девопсы много технологических гигантов: Amazon, Netflix, Adobe, Etsy, Facebook и Walmart.</p>
  <p>В качестве вывода можно сказать, что более половины размещенных вакансий по поиску DevOps на самом деле предназначены для опытных системных администраторов. Тем не менее, потребность в DevOps постепенно растет, и сейчас очень не хватает грамотных специалистов этого профиля.</p>
  <p>Для того чтобы стать таким специалистом, нужно изучать новые технологии, инструменты, использовать системный подход в ходе работы и грамотно применять автоматизацию. Без нее очень сложно, если вообще возможно, грамотно организовать DevOps.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@learnscript/aS0z960za</guid><link>https://teletype.in/@learnscript/aS0z960za?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript</link><comments>https://teletype.in/@learnscript/aS0z960za?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript#comments</comments><dc:creator>learnscript</dc:creator><title>КУРС ПО JAVASCRIPT. Урок 2</title><pubDate>Wed, 08 Apr 2020 06:29:38 GMT</pubDate><description><![CDATA[В данном уроке мы рассмотрим две темы : введение в объекты и логические операторы.]]></description><content:encoded><![CDATA[
  <p>В данном уроке мы рассмотрим две темы : введение в объекты и логические операторы.</p>
  <h2>Введение в объекты :</h2>
  <p>Еще раз повторим, как записывается объект :</p>
  <p><code>let value = {</code></p>
  <p><code>     firstName : &#x27;Andrey&#x27;,</code></p>
  <p><code>     age : 27,</code></p>
  <p><code>     &#x27;city&#x27; : &#x27;Moscow&#x27;     </code></p>
  <p><code>}</code></p>
  <p>При записи ключа &#x27;&#x27; или же &quot;&quot; используются для записи, когда ключ состоит из нескольких слов <code>&#x27;our key&#x27;: &#x27;front-end&#x27;;</code></p>
  <p>Значение может быть любого типа. Давайте добавим свойство с логическим значением:</p>
  <pre>value.isAdmin = true;</pre>
  <p> Выводим  значение: </p>
  <p><code>alert(value.age);</code></p>
  <p>Для удаления свойства : </p>
  <p><code>delete value.isAdmin;</code></p>
  <p>На начальном этапе это все, что вам потребуется знать об объектах, позже мы подробнее разберем данную тему. </p>
  <h2>Логические операторы :</h2>
  <p>Некоторые логические операторы мы знаем из жизни : +, -, *, / . Но в программирование есть также != (не равно), ==(нестрогое равенство), ===(строгое),&gt;=(больше или равно),&gt;(больше),&lt;(меньше),&lt;=(меньше или равно).</p>
  <p>Но в языках программирования есть также условные операторы : <br />Синтаксис: </p>
  <p><code>if(условие) {</code></p>
  <p><code>      //actions</code></p>
  <p><code>}else{</code></p>
  <p><code>      //else actions</code></p>
  <p><code>}</code></p>
  <p>Примет использования : <br />let value = 10;</p>
  <p><code>if(value == 10){<br />       console.log(Yes, value);<br />}else {<br />        console.log(No, value);<br />}</code><br /></p>
  <p>Также с помощью оператора if можно проверить существует ли переменная, не равно ли она undefined или же объект на пустое множество, в этом случае мы просто пишем переменную в условие : </p>
  <p>let value = {};</p>
  <p><code>if(value) {<br />    console.log(true);<br />}else{<br />    console.log(false);<br />}</code></p>
  <h2>Домашнее задание : </h2>
  <ol>
    <li>Написать программу, которая получает на вход значение из модульного окна (используем prompt, если не знакомы <a href="https://learn.javascript.ru/alert-prompt-confirm" target="_blank">https://learn.javascript.ru/alert-prompt-confirm</a>), если это число, то переводит в строку, если булевый тип, то в number, выводим переменную и её тип.</li>
    <li>Изучить материал</li>
    <li>Повторить предыдущий</li>
  </ol>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@learnscript/SUlFAc65F</guid><link>https://teletype.in/@learnscript/SUlFAc65F?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript</link><comments>https://teletype.in/@learnscript/SUlFAc65F?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript#comments</comments><dc:creator>learnscript</dc:creator><title>КУРС ПО JAVASCRIPT. Урок 1.</title><pubDate>Tue, 07 Apr 2020 02:09:20 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/f7/50/f750c632-5854-4b8f-bc6d-69b1227ab679.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/7e/65/7e657801-4273-4d8f-a5c1-846f3e8fa05a.png"></img>Привет! Если ты попал на этот курс, значит тебе охото изучить или же вспомнить JavaScript, в этом я смогу помочь тебе! Наш курс будет разбит на 4 блока: 
]]></description><content:encoded><![CDATA[
  <p>Привет! Если ты попал на этот курс, значит тебе охото изучить или же вспомнить JavaScript, в этом я смогу помочь тебе! Наш курс будет разбит на 4 блока: <br /></p>
  <ul>
    <li>Основы языка</li>
    <li>Асихронный JavaScript</li>
    <li>ООП</li>
    <li>Модули</li>
  </ul>
  <p>После окончания курсов я постараюсь дать напутствие каждому для дальнейшего развития вас, как Front-end developer. В каждом блоке мы будем стараться делать по 1 проекту, без практики никуда. Будет выдаваться домашнее задание, которое вам надо будет сделать и отправить в личные сообщения боту. Я использую редактор VSCode, его можно скачать с <a href="https://code.visualstudio.com/" target="_blank">официального сайта,</a> установленные плагины : </p>
  <figure class="m_column">
    <img src="https://teletype.in/files/7e/65/7e657801-4273-4d8f-a5c1-846f3e8fa05a.png" width="1366" />
  </figure>
  <h2>Теория:</h2>
  <p>Итак, сегодня мы разберем базовые составляющие языка : <strong>типы данных, переменные, преобразование типов данных, числа и строки.</strong></p>
  <h2>Типы данных:</h2>
  <p>  1. Примитивные</p>
  <p> - Number: 2019, 1.5, NaN(особый тип, который получаем при ошибке в вычислении)  , Infinity(при делении на 0)</p>
  <p> - String: &#x27;Hello&#x27;, &quot;Hello&quot;, &#x60;Hello&#x60;( &#x60; &#x60; , косые верхние запятые используется, чтобы ввести переменную)</p>
  <p> - Boolean: true, false</p>
  <p> - Null: null(указывает на то, что значение не известно, не получено)</p>
  <p> - Undefined: undefined(переменная ничему не равна,не задана),</p>
  <p> - Symbol()(уникальный индификатор)</p>
  <p>Попробуем выведем пару штук в консоль :</p>
  <p><code>console.log(2019, 1.5);</code></p>
  <p><code>console.log(&#x27;Hello&#x27;, &quot;Hello&quot;, &#x60;Hello&#x60;);</code></p>
  <p><code>console.log(null);</code></p>
  <p>Типы данных:</p>
  <p>  2. Объекты. (Reference type) Передаются по ссылке.</p>
  <p> - Object: { name: &#x27;Denis&#x27;, age: 30 }</p>
  <p> - Array: [1, 2, 3]</p>
  <p> - Function: function foo() {}</p>
  <p> - Date: new Date()</p>
  <p>   ....</p>
  <p>Попробуем вывести в виде таблицы в консоль :</p>
  <p><code>console.table({ name: &#x27;Denis&#x27;, age: 30 });  //Чистой воды объект      {ключ1 : значение1, ключ2: значение2}</code></p>
  <p><code>console.log([1, 2, 3, 4]);  //Массив также относится к объектам, через запятую указываем элементы массива, индекс счета начинается с 0</code></p>
  <h2>Переменные:</h2>
  <p>Объявление переменных раньше раньше писалось через var, например, <code>var city = &#x27;Moscow&#x27;;</code>. С недавних пор var ушел, и стали использоваться let и const, у var было слишком много минусов. Можно было несколько раз объявлять переменную с одним и тем же именем или же происходило наслаивание кода. Теперь же мы используем такие записи : </p>
  <p><code>let city = &#x27;Moscow&#x27;;</code></p>
  <p><code>const city = &#x27;Moscow&#x27;; // не изменяемая переменная </code></p>
  <p>Есть четыре вида записи переменной userAge, user_age,  UserAge,  userage, следует выбрать один стиль написания и использовать его везде, не изменяя традициям.</p>
  <p>Переменные можно переназначать, например : </p>
  <p><code>let city = &#x27;Moscow&#x27;;</code></p>
  <p><code>city = &#x27;Ufa&#x27;;</code></p>
  <p><code>city = &#x27;Kazan&#x27;</code></p>
  <p>Это не будет являться ошибкой, просто каждый раз переменная принимает другое значение.</p>
  <p>Чтобы объявить объект следует использовать следующий синтаксис :</p>
  <p><code>let имя_объекта = {</code></p>
  <p><code>      ключ1 : значение1;</code></p>
  <p><code>      ключ2 : значение2;</code></p>
  <p><code>}</code></p>
  <p>Для записи одного из ключей : </p>
  <p><code>имя_объекта.ключ1 = значение1;</code></p>
  <p>Для записи ключа, если имя ключа не однострочное : </p>
  <p>имя_объекта[&#x27;ключ1&#x27;] = значение1;</p>
  <h2>Преобразование типов данных:</h2>
  <ol>
    <li>Преобразование в строку(Type to string) : используется метод toString()   </li>
  </ol>
  <p><code>value = (10).toString(); value = String(10);</code></p>
  <p>     2. Преобразование в число (Type to number) : используется Number()</p>
  <p>     <code>value = Number(&#x27;23&#x27;);</code></p>
  <p>     3 Преобразование в булевое значение (Type to boolean) : используется  Boolean()</p>
  <p><code>value = Boolean(&#x27;0&#x27;);</code></p>
  <p>Для вывода типа данных используется <code>typeof</code> :</p>
  <p><code>console.log(typeof value);</code></p>
  <h2>Числа : </h2>
  <p>С числами в Javascript используется те же операции, что и в жизни, но так же есть так называемый Math, который имеет множество функций, полезных для работы.</p>
  <p>Например:</p>
  <p><code>value = Math.PI;</code></p>
  <p><code>value = Math.random();</code></p>
  <p><code>value = Math.ceil(2.1);</code></p>
  <p><code>value = Math.floor(2.9);</code></p>
  <p><code>value = Math.min(2, 12, 15, 0, 12);</code></p>
  <p><code>value = Math.max(2, 12, 15, 0, 12);</code></p>
  <p></p>
  <p>Это самые основные функции, который следует знать, об их значении надо будет прочитать самостоятельно в документации!</p>
  <h2>Строки:</h2>
  <p>Строки(string) записываются с помощью &#x27; &#x27; , например :</p>
  <p><code>const firstName = &#x27;Andrey&#x27;;</code></p>
  <p>Для начала нам следует понять по какому принципу происходят операции со строками:</p>
  <p><code>const firstName = &#x27;Andrey&#x27;;</code></p>
  <p><code>const city = &#x27;Ufa&#x27;;</code></p>
  <p><code>value = firstName + &#x27;was born&#x27; + city;</code></p>
  <p><code>console.log(value)</code></p>
  <p>Выведется : Andrey was born Ufa.</p>
  <p>Попробуйте сами поиграться и понять, почему же именно так происходит вывод.</p>
  <p><code>value = firstName.length;</code> - используется для вычисления длины переменной, проблемы тоже учитываются.</p>
  <p>Так же есть ряд методом, которые следует освоить :</p>
  <ul>
    <li>toUpperCase()</li>
    <li>concat()</li>
    <li>indexOf()</li>
    <li>includes()</li>
    <li>slice()</li>
    <li>replace()</li>
  </ul>
  <p>Их вам следует изучить самостоятельно, они вам будут часто попадаться в работе.</p>
  <h2>Домашнее задание:</h2>
  <ol>
    <li>Установить редактор кода с нужными плагинами</li>
    <li>Изучить всю теорию, если что-то непонятно написать в бот</li>
    <li>Лично проверить все примеры, а лучше придумать самому и опробовать</li>
    <li>Объявите 5 различных переменных</li>
    <li>Выполните 5 математических операций с Math</li>
    <li>Выполните 5 операций со строками</li>
    <li>Изучить самостоятельно нужные материалы и на них сделать 10 примеров ( строки concat()....  ) </li>
  </ol>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@learnscript/mZB2n__i7</guid><link>https://teletype.in/@learnscript/mZB2n__i7?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript</link><comments>https://teletype.in/@learnscript/mZB2n__i7?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript#comments</comments><dc:creator>learnscript</dc:creator><title>А ты сможешь решить 3 логические задачи для настоящего программиста?</title><pubDate>Tue, 31 Mar 2020 08:44:39 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/c2/98/c2989308-c8e0-40ed-9027-793effbe6c32.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/0b/cc/0bcc487e-199e-46d3-bacb-e87215660a0d.jpeg"></img>Компании любят проверять молодых специалистов на различные логические задачи. Мы подобрали три интересных задачи, которые заставят вас задуматься.]]></description><content:encoded><![CDATA[
  <figure class="m_column">
    <img src="https://teletype.in/files/0b/cc/0bcc487e-199e-46d3-bacb-e87215660a0d.jpeg" width="770" />
  </figure>
  <p>Компании любят проверять молодых специалистов на различные логические задачи. Мы подобрали три интересных задачи, которые заставят вас задуматься.</p>
  <h4>№1 – Как на счёт кофе?</h4>
  <p><em>Предположительная ситуация:</em> в вашем офисе поставили 3 автомата, которые делают разнообразные напитки. Первый автомат изготавливает кофе, второй делает чай, а третий способен давать один из перечисленных напитков, но не предоставляет право выбора. Чтобы воспользоваться любым аппаратом требуется кинуть 1 монету. На автоматах присутствуют специальные наклейки, обозначающие тип выдаваемого напитка. <u>Одна проблема</u> – по техническим причинам завод перепутал все обозначения. Каждый автомат имеет неправильную наклейку. Вопрос, сколько потребуется монет, чтобы правильно определить тип автоматов?</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/59/ac/59acb955-9310-41e9-9a37-3b2748c8b4a2.jpeg" width="1020" />
  </figure>
  <p><strong>Ответ:</strong> Задача только на первый взгляд сложная, от этой мысли следует абстрагироваться, решение лежит на поверхности.</p>
  <ol>
    <li>Подходим к аппарату с пометкой «кофе-чай» и бросаем таксу в виде монетки. Помним, что все наклейки неправильные, соответственно здесь либо чай, либо кофе.</li>
    <li>Предположим, что аппарат выдал чай, соответственно модель с надписью кофе не может выдавать кофе (все наклейки неправильные) и чай, так как ранее уже был найден аппарат с ним.</li>
    <li>При помощи исключения возможных вариантов несложно определить, где выдаётся кофе.</li>
  </ol>
  <p><strong>Итог:</strong> 1 монеты достаточно.</p>
  <h4>#2 – Фальшивые монеты</h4>
  <p>Программирование и математика непосредственно связаны, но логика профессии должна выходить за пределы предмета. Как на счёт попробовать интересную задачу с весами.</p>
  <p>Перед нами 12 монет, среди них 11 штук оригинальные, а одна из них фальшивая. Поддельная копия монеты имеет отличительный вес. Суть задания необходимо определить фальшивую монету за минимальное количество взвешиваний. В ходе процедуры применяются чашечные весы.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/f5/a0/f5a0b9a4-b1cf-4504-a98d-ea70f1b61a6a.jpeg" width="893" />
  </figure>
  <p><strong>Ответ:</strong> Элементарная задача, но все равно не редко появляется путаница, половина отвечает 1 или 2. Для определения поддельной копии следует провести 3 взвешивания, так как у нас не получится узнать какая конкретно монета является поддельной за меньшее количество попыток. Соответственно, большая часть монет должна быть с одинаковым весом, так как они настоящие, а третья монета, из последнего взвешивания, будет поддельной.</p>
  <p><strong>Итог:</strong> потребуется 3 взвешивания.</p>
  <h4>#3 – Вода в бочке</h4>
  <p>Перед вами пустая и герметичная бочка. Задача заключается в том, чтобы наполнить ёмкость водой, а сложность – тара должна быть заполнена ровно на <code>50%</code>. Важное условие! Использовать длинные предметы вроде палки и подобного запрещено.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/97/cf/97cf8fd3-916c-4bab-97ff-b89dcb64b8de.jpeg" width="400" />
  </figure>
  <p><strong>Ответ:</strong> Перед нами физика, вас это смущает? Программист должен быть всесторонне развит, особенно те представители профессии, которые заняты разработкой искусственного интеллекта. Подобные задачки могут пригодиться в жизни.</p>
  <ol>
    <li>Берём шланг и наливаем в бочку побольше воды, не обязательно заполнять полностью, но важно получить уверенность, что воды больше 50%.</li>
    <li>Бочку следует постепенно наклонять до получения угла 45° по отношению к ровной поверхности. Все излишки воды просто вытекут, а необходимый объём останется.</li>
  </ol>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@learnscript/OAoaeNh8D</guid><link>https://teletype.in/@learnscript/OAoaeNh8D?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript</link><comments>https://teletype.in/@learnscript/OAoaeNh8D?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript#comments</comments><dc:creator>learnscript</dc:creator><title>Что выбрать C++ или C#? С чего лучше начать?</title><pubDate>Sun, 29 Mar 2020 17:19:22 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/a1/24/a1248a90-2f76-4a40-bffc-f00e7a133442.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/37/88/3788ec54-68c3-46cb-b356-3c20ebe22155.jpeg"></img>Между собой оба языка очень похожи, при отсутствии опыта разобраться в различиях очень сложно. Статья поможет расставить всё по своим местам и укажет верный язык на основании поставленных задач.]]></description><content:encoded><![CDATA[
  <figure class="m_original">
    <img src="https://teletype.in/files/37/88/3788ec54-68c3-46cb-b356-3c20ebe22155.jpeg" width="640" />
  </figure>
  <p>Между собой оба языка очень похожи, при отсутствии опыта разобраться в различиях очень сложно. Статья поможет расставить всё по своим местам и укажет верный язык на основании поставленных задач.</p>
  <p>Большинство программистов утверждают о необходимости начала изучения чистого C, но моё мнение – это пустая трата времени, которая не оправдается в будущем. Нет смысла изучать языки, которые уже давно устарели и были заменены на более перспективные, функциональные и интересные. Устаревшие языки не имеют нововведений, они практически не поддерживаются, а вакансии вовсе не появляются на различных биржах. </p>
  <p>Единственная сфера использования – поддержание работоспособности проектов, которые ещё не перешли на обновлённые языки. Если проект качественный, он в скором времени обновится, иначе будет постепенно терять популярность, соответственно, все равно нет перспективы развития. При желании заняться изучением нового языка стоит предпочесть <code>C++</code> или <code>C#</code>.</p>
  <h4>Особенности C#</h4>
  <p>После пропуска большого этапа «обучения» на Си, можно задаться вопросом куда же всё-таки направляться и какое состояние в сфере программирования на C#. При выборе этого языка стоит помнить, что программист строго привязан к операционной системе <strong>Windows</strong>, можно даже не учитывать преимущества <u>Mono Develop</u>, так как основной недостаток – полная зависимость от дальнейших действий <em>Microsoft.</em></p>
  <figure class="m_column">
    <img src="https://teletype.in/files/d1/62/d1621091-6abf-4e16-a8d3-7d9a48653765.jpeg" width="770" />
  </figure>
  <p>В большей части вакансии <strong>C# </strong>связанные с Asp.net – это веб разработка и всё тому подобное. Здесь уже выбор каждого. В отношении обучающего материала лучше сразу начинать с <strong>Шилдта</strong>, его способ описания ООП достаточно понятен и ясен, хотя и сам язык не вызывает особых сложностей, особенно если есть хоть какие-то знания. После его прочтения стоит перейти к <strong>Троелсену</strong>, который позволит почувствовать фундамент под ногами и даст более-менее приличные знания. После базового освоения языка можно дополнить информацию с помощью Рихтера, который детальнее раскроет особенности работы с .NET платформой.</p>
  <p> </p>
  <h4>Достоинства C++</h4>
  <p>Теперь стоит обратиться к изучению С++, который хорошо показал себя за счёт абстракционного мышления. Иначе говоря, программист волен сам выбирать писать ли ему на высоком или низком уровне, изменяя способ написания в зависимости от задачи. </p>
  <p><strong>С++</strong> уже позволяет писать программы, которые могут работать на разных платформах, с этой целью разработан Qt. </p>
  <figure class="m_column">
    <img src="https://teletype.in/files/d9/19/d919052f-d5b6-45e1-8503-fdc0cc2819d4.jpeg" width="532" />
  </figure>
  <p>В отношении методичной литературы стоит посоветовать <strong>Страуструпа</strong>, его книга представлена в форме справочника, которая хорошо знакомит с принципами языка и методами работы. Когда с ним будет покончено можно перейти к <strong>Саттеру </strong>и <strong>Мейерсу</strong>, но для закрепления материала нужно обязательно использовать практические навыки. Этого уже достаточно для понимания языка выше среднего.</p>
  <p>Если судить в целом, то все языки представляют собой только инструмент. Правильное использование – это залог успеха, состав мозгов и способ мышления помогают добиваться впечатляющих результатов всегда. Вовсе не обязательно изучать языки наизусть, напротив, заучивание даже плохо, достаточно всего лишь понимать принципы работы. Чтобы нам не углубляться в алгоритмы, стоит изучить книгу Кормена. </p>
  <p>У каждого языка различаются сферы использования. Если акцент ставится на написание игр, лучше предпочесть <strong>С#</strong>, ведь язык применяется в основе распространённого движка Unity. Он позволяет создавать игры как с 2-мерной графикой, так и полноценные <strong>3D</strong>. В противовес можно сказать, что <strong>С++</strong> применяется в основе <u>Unreal Engine</u>, он отличается большей мощностью и требуется для написания масштабных игр для ПК.</p>
  <p></p>
  <h4>Сравнение языков</h4>
  <h3>1. Скорость написания</h3>
  <p>C# обеспечивает быстрейший старт в сфере программирования, прототип можно создать значительно быстрее. Если в приоритете лежит скорость изначальной разработки, стоит выбирать C#, который выигрывает у С++.</p>
  <p>После создания инфраструктуры, подбора основных методов работы, подключения, изучения библиотек и настройки билда скорость приблизительно выравнивается, значительного преобладания на одном из языков не отмечается. </p>
  <p>Вывод следующий, если цель стоит в создании небольшого проекта с малым бюджетом, стоит выбирать C#, так как это позволит сократить время и затраты. Для создания продолжительных, крупных проектов преимущество будет незначительным.</p>
  <h3>2. Кроссплатформенность</h3>
  <p>В отношении кросплатформенности С++ сильно превосходит конкурента, хотя и есть определённые оговорки. Придётся прибегнуть к дополнительным затратам и между некоторыми платформами отмечается бинарная несовместимость.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/72/e9/72e94e8a-ec42-421c-bede-4b0b4edd4d27.jpeg" width="1068" />
  </figure>
  <p>C# не кросплатформенный, существует разработанное решение со стороны на .net, оно позволяет связывать сразу несколько платформ. Изначально планировалось создание языка для кросплатформенного кодинга, но с течением времени направление развития было изменено. </p>
  <p>Сейчас под <strong>Windows </strong>разработана достаточно полноценная инфраструктура на .net, а в остальных платформах такого решения не было запущено.</p>
  <h3>3. Библиотеки</h3>
  <p>Выбор между библиотеками можно сделать в пользу С++, так как не только их количество больше, но и ассортимент качественнее. За длительную историю разработки удалось достичь хорошей оптимизации и было устранено большее количество недочётов. Многие библиотеки находятся в открытом доступе, могут использоваться на разных платформах и имеют открытый код. </p>
  <p>Даже с учётом ряда положительных сторон всё не настолько радужно, ведь многие библиотеки С++ разработаны по различным структурам, порой даже без них. Нередко встречается структурно-процедурная форма построения, причина такого недостатка – перенос библиотеки с Си.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/cc/b9/ccb98826-3a34-473c-b9ca-dc1c7a697b50.png" width="630" />
  </figure>
  <p>Дополнительным минусом можно выделить формирование и переопределение основных типов данных. В множестве библиотек С++ возникает необходимость создавать собственные контейнеры, изменять базовые типы данных и строки. Со стороны логического обоснования – это обеспечивает повышенную производительность, улучшение кросплатформенности, устранение недостатков кода. Несмотря на очевидные позитивные стороны вопроса значительно снижается удобство пользования и красота кода. </p>
  <p>Среди базовых библиотек C++ выбор не такой обширный, по функционалу С# превосходит их. Основная сложность и задача программиста – это правильный подбор библиотек и это потребуется даже при выполнении небольшого проекта.</p>
  <h3>4. Стоимость поддержки</h3>
  <p>Значительной разницы в цене поддержки между обоими языками не отмечается. Важно осознавать, что отдельные баги внутри приложений на С# сложно поддаются устранению методами .net. Если потребуется исправление багов, цена резко увеличится, а поддержание станет дороже. Если коснётся рефакторинга, то чаще всего проекты С# проще поддаются изменению.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@learnscript/_GSc0i91-</guid><link>https://teletype.in/@learnscript/_GSc0i91-?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript</link><comments>https://teletype.in/@learnscript/_GSc0i91-?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript#comments</comments><dc:creator>learnscript</dc:creator><title>Что должен знать каждый Full Stack разработчик?</title><pubDate>Sun, 29 Mar 2020 14:38:54 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/48/79/48795d66-bc74-4170-a727-4ed53da9f3c2.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/30/c8/30c82510-27c8-4442-abb5-1a7a845a4af4.jpeg"></img>Умеете ли вы видеть в простоте красоту? Для разработчика это значит везде применять только один инструмент. В статье мы поговорим про 10 вещей, что должен знать каждый Full Stack.]]></description><content:encoded><![CDATA[
  <figure class="m_column">
    <img src="https://teletype.in/files/30/c8/30c82510-27c8-4442-abb5-1a7a845a4af4.jpeg" width="1956" />
  </figure>
  <p>Умеете ли вы видеть в простоте красоту? Для разработчика это значит везде применять только один инструмент. В статье мы поговорим про 10 вещей, что должен знать каждый Full Stack.</p>
  <p>Наверняка вы знаете, что язык JavaScript можно использовать как во front-end, так и в back-end. Может вы даже задумывались о таком варианте или уже активно им пользуетесь. Как бы то ни было, есть еще много вещей, которые необходимо узнать каждому, кто собирается стать Full-Stack JS веб-разработчиком. </p>
  <h4>1. Фундаментальное понимание языка</h4>
  <p>Конечно же, нереально стать разработчиком JS Full Stack без хорошего владения JavaScript. Причем асом быть не обязательно: хватит и среднего хорошего понимания. Многие ошибочно считают JavaScript простым языком, но это не совсем так. JS имеет множество своих особенностей и странностей. Но привыкнув к ним, вы найдете его очень интересным и удобным. Первое время примеры кода при запуске часто будут оказываться нестабильными. Тем не менее, научившись применять JavaScript правильно, вы станете писать весьма выразительно.</p>
  <p>Обладателям объектно-ориентированной базы будет сложно воспринять тот факт, что JS является динамическим и прототипным одновременно. На первых порах работу может сильно облегчить один маленький нюанс, который, к сожалению, я сам узнал слишком поздно.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/c2/12/c2122838-c986-496a-bf65-94f409162019.png" width="922" />
  </figure>
  <p>В целом язык имеет 2 типа данных: примитивы (их 5) и объекты (все остальное, в том числе функции, массивы). Некоторые примитивы вдобавок содержат объектные дубликаты – их JS автоматически приводит во время выполнения определенных операций.</p>
  <p>Рассмотрим пример: <code>«hello».length</code> создаст обертку объекта String для примитива string. Если изучать объекты на фундаментальном уровне, их можно представить в виде пары ключ (string) и значение (что угодно: один из примитивов или любой объект).</p>
  <p>Наверное, следующим важным аспектом языка можно назвать его акцент на асинхронную разработку, что дает возможность продолжать главный поток выполнения кода параллельно с ожиданием завершения прочих методов. Делается это с помощью таких основных способов как колбэк и промисы.</p>
  <h4>2. Frontend-фреймворк</h4>
  <p>Благодаря высокой производительности одностраничные приложения сейчас стали очень популярными. Чтобы создавать их, желательно изучить любой Frontend-фреймворк. Самые востребованные – это Angular, Vue и React, но никто не запрещает вам выбрать какой-нибудь другой.</p>
  <p>В мире JS постоянно ведутся споры о том, какой фреймворк самый лучший. Попробуйте загуглить обзоры и сравнения: вы найдете сотни статей, в которых детально разбираются плюсы и минусы каждого из них.</p>
  <h4>3. HTML/CSS</h4>
  <p>Вы в любом случае захотите использовать свои стили CSS и немного изменять применяемые фронтенд-библиотеки. Большинство из тех действий, которые касаются CSS, можно просто загуглить. Но если вам нравится заниматься дизайном тщательно, и вы хотите сделать сайт “живым”, придется познакомиться с CSS поближе. </p>
  <figure class="m_column">
    <img src="https://teletype.in/files/12/6d/126dd326-0574-49cf-a2f3-bd67860a7241.jpeg" width="900" />
  </figure>
  <p>Например, желательно изучить импортирование шрифтов пользователя, их стилизацию, установка свойств в зависимости от ширины экрана (здесь не помогут Bootstrap-сетки) и применение селекторов. </p>
  <p>И HTML, и CSS не обязательно учить заранее – это лучше делать в процессе работы над проектом. Но до того как приступать к своим шаблонам, все-таки разберитесь с разницей между строчными и блочными элементами. Это спасет вас от лишней головной боли в процессе написания CSS-кода.</p>
  <h4>4. Bootstrap 4</h4>
  <p>В наши дни каждое приложение должно корректно смотреться на всех устройствах. А чтобы написать для этой цели весь требующийся CSS-код, придется потратить слишком много времени и усилий.</p>
  <figure class="m_original">
    <img src="https://teletype.in/files/0e/9c/0e9cfdb9-b567-4d07-8771-98063f8e3fea.png" width="250" />
  </figure>
  <p>Кроме того, Frontend содержит много фич, призванных улучшить пользовательский опыт (popovers, элементы навигации, popups и т.д.). Чтобы реализовать их вручную, придется создать громадный бойлерплейт-код, на разработку и дальнейшую поддержку которого уйдет целая вечность. </p>
  <p>Вот почему вам нужно изучить Bootstrap – библиотеку для фронтенда от компании Twitter. Она предоставляет широкий функционал, содержащий в том числе стили и интерактивность. С ее помощью вам не грозит начинать с нуля.</p>
  <p>Конечно, никто не заставляет вас постигать все функции и возможности Bootstrap сразу. Мы советуем первым делом обратить внимание на rid-макет. Также, еще до работы над первым проектом, освойте панели навигации, которые сейчас используются абсолютно везде благодаря тому, что делают веб-страницы дружественными ко всем мобильным устройствам. Если вы пользуетесь Angular или React, то можете не переживать о совместимости с ними функций Bootstrap: в этих фреймворках предусмотрены библиотеки для интегрирования. </p>
  <h4>5. NodeJS, а также Backend-фреймворк</h4>
  <p>Как и любому другому языку программирования, JavaScript нужна специальная среда для запуска на сервере. NodeJS работает на движке V8, как и браузер, хотя разница между ними все-таки есть. Главное отличие заключается вот в чем: API браузером добавляется для получения доступа к DOM, тогда как Node делает это для взаимодействия с ОС. Каждый Full-Stack JS веб-разработчик должен знать NodeJS, чтобы не пришлось учить дополнительный язык.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/dd/53/dd531268-deb7-4f36-8244-3f83a8d03ab6.png" width="3800" />
  </figure>
  <p>Выбирая backend-фреймворк (как и front-end), вы можете остановиться на любом варианте. Чаще всего используют ExpressJS, который разгоняет сервер и помогает приступить к написанию APIs. Желающим попробовать что-то другое, мы все-таки советуем вам для начала изучить Express, а уже потом экспериментировать с прочими имеющимися бэкенд-фреймворками.</p>
  <h4>6. TypeScript</h4>
  <p>По правде говоря, в JavaScript есть много проблем, например, с межбраузерной совместимостью, разными версиями NodeJS, сложным масштабированием из-за отсутствия типобезопасности и др. </p>
  <p>TypeScript позволяет транспилировать в чистый ES5, что решает массу проблемы с совместимостью. Кроме того, вы сможете писать на JS как и на C# или Java, т.е. более привычным традиционным ОО-способом.</p>
  <h4>7. Инструмент для вызова API</h4>
  <p>Одна из самых распространенных ошибок начинающих разработчиков полного цикла – во время разработки Backend-а запускать APIs front-end-а. Из-за этого реализация кода требует гораздо больше времени. Приходится после каждого обновления страницы указывать значения по-новой и переходить к части front-end-а, в которой происходит вызов APIs.</p>
  <p>Для ускорения процесса необходимо заниматься front-end-ом и backend-ом отдельно друг от друга. Существуют такие полезные инструменты для вызова API, как Postman и SoapUI. С их помощью вы сможете вызывать APIs без обращения к фронтенду и использовать их для работы с аутентифицированными маршрутами.</p>
  <h4>8. Основы SQL</h4>
  <p>Реляционные БД по-прежнему остаются самыми подходящими для многих веб-приложений, даже несмотря на шумиху вокруг NoSQL и MongoDB. Не имеет значения, станете ли вы применять JS для backend-а: все Full-stack разработчики должны хорошо знать SQL. Первым делом обратите внимание на базовые понятия, например, создание таблиц и заполнение их данными.</p>
  <p>Большая часть реляционных БД, в том числе MySQL или PostgreSQL, великолепно комбинируются с NodeJS. Обращаться к ним можно так же просто, как к NoSQL и всем другим СУБД. Нам кажется, что SQL-запросы гораздо более интуитивно понятны, чем тех БД, которые используют JSONs. К тому же MySQL и PostgreSQL позволяют хранить данные в виде объектов JavaScript.</p>
  <h4>9. Сквозное и блочное (или модульное) тестирование</h4>
  <p>Никогда не пренебрегайте тестами. Тем более во front-end, где многие сильно недооценивают важность модульного тестирования. А ведь оно не только позволяет предотвратить появление багов, но и повышает надежность кода, принуждая вас совершать code review. Фреймворки вроде Angular обладают встроенными инструментами для проведения тестов, поэтому вам не грозит долгая возня с настройками: сразу начнете писать тесты.</p>
  <p>Блочным тестированием должны проверяться все элементы, для которых предусмотрено изменение поведения после определенных действий пользователя. Что касается backend-а, в нем тестированию подлежат все маршруты, а также публичные методы, запускаемые пользователями.</p>
  <p>Сквозное тестирование рекомендуется для всех действий пользователя, затрагивающих больше одной страницы и обращающихся к backend-у. К примеру, <strong>e2e</strong>-тестированию нужно подвергать вход в аккаунт, после которого предусмотрено перенаправление (чаще всего на пользовательскую страницу).</p>
  <h4>10. Аутентификация пользователя</h4>
  <p>Безопасность сайта обеспечивается многими способами: identity-токены и access-токены, пользовательские хранилища для сессии или использование сторонних инструментов вроде Active Directory от Microsoft. Вы не должны знать каждый из них, но общее представление о существующих вариантах у вас должно быть. Поверхностно познакомившись со всеми, выберите наиболее простой способ и начните углубляться конкретно в него.</p>
  <p>Также не помешает иметь базовые знания о распространенных формах хакерских атак. Это не значит, что вы должны стать экспертом в сфере кибербезопасности, просто вам стоит знать, каким видам атак может подвергаться ваш сайт. </p>
  <p>Начать работу над безопасностью APIs backend-а мы рекомендуем с JWT. NodeJS имеет несколько отличных сторонних библиотек, которые используются с Express и весьма просты в применении.</p>
  <p>JSON Web Token – это разновидность аутентификации в клиент-серверных приложениях, с помощью которой вы можете только валидным пользователям позволять отправлять запросы к backend-у. JWTs к тому же могут содержать зашифрованные JSON-данные, поэтому у вас появится возможность вычислять тех, кто отправляет защищенные запросы.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@learnscript/i_DYMApTu</guid><link>https://teletype.in/@learnscript/i_DYMApTu?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript</link><comments>https://teletype.in/@learnscript/i_DYMApTu?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript#comments</comments><dc:creator>learnscript</dc:creator><title>Что сейчас с PHP и что ждёт его завтра?</title><pubDate>Sun, 29 Mar 2020 07:46:24 GMT</pubDate><description><![CDATA[<img src="https://teletype.in/files/21/56/21563f99-104c-4681-a245-ab410e064871.jpeg"></img>В ходе статьи мы расскажем о сегодняшнем положении вещей и самом вероятном ближайшем будущем противоречивого языка PHP.]]></description><content:encoded><![CDATA[
  <figure class="m_column">
    <img src="https://teletype.in/files/21/56/21563f99-104c-4681-a245-ab410e064871.jpeg" width="770" />
  </figure>
  <p>В ходе статьи мы расскажем о сегодняшнем положении вещей и самом вероятном ближайшем будущем противоречивого языка PHP.</p>
  <p>Среди айтишников PHP обладает далеко не идеальной репутацией – это ни для кого не секрет. К его минусам относят крайне плохую организацию кода, который получается небезопасным и полным «дыр», нестабильные библиотеки, отсутствие богатого опыта у разработчиков и многое другое.</p>
  <p>Тем не менее, PHP все еще остается одним из самых популярных языков для создания веб-приложений. Большая часть недостатков осталась в прошлом, поэтому сейчас его с уверенностью можно назвать достойным инструментом, с помощью которого пишутся надежные, управляемые и актуальные проекты</p>
  <h4>Начнем с начала</h4>
  <p>До того, как углубиться в детали, выясним, как у PHP дела обстоят сейчас. На сегодняшний день последней версией является 7.4. Под конец 2020-го будет выпущена следующая – PHP 8.</p>
  <p>После 5-ой версии создатели языка начали успешно придерживаться последовательного цикла создания апдейтов. Они сумели соблюдать годовой план на протяжении последних 4-ех лет. Все новые релизы поддерживались по 2 года, а на третий активная поддержка сменялась «security fixes only».</p>
  <p>Сейчас над PHP трудится группа волонтеров, далеко не все из которых получают зарплату за полную ставку. Есть специальная <a href="https://externals.io/" target="_blank">доска обсуждений</a>, открытая для всех желающих, где можно увидеть активное обговаривание темы развития языка. Если интересно, обязательно зайдите и почитайте.</p>
  <h4>Фреймворки </h4>
  <p>Есть два главных фреймворка для веб-разработки – это Symfony и <a href="https://itproger.com/course/laravel" target="_blank">Laravel</a>. Кроме того существуют и более мелкие инструменты вроде Laminas, Code Igniter, Cake и прочих; но тем, кто хочет погрузиться в современную PHP-разработку, лучше выбрать любой из двух основных.</p>
  <p>Предназначение этих фреймворков заключается в разработке. Поэтому, если вас интересует исключительно управление контентом, используйте WordPress, Statamic или CraftCMS, ведь у них есть такое важное преимущество, как постоянное совершенствование.</p>
  <h4>Экосистема</h4>
  <p>Фреймворки обладают широкой экосистемой пакетов, а также полностью готовых продуктов. Это и админки, и системы управления взаимоотношениями с клиентами, и автономные пакеты, и серверы веб-сокетов, платежные интеграции и много других полезных штук.</p>
  <p>Чтобы оценить сегодняшнее состояние экосистемы языка PHP, нужно посмотреть на главный репозиторий: приблизительно 25 миллионов загрузок каждый день. </p>
  <p>А это график, показывающий, как со временем увеличивается число пакетов и версий:</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/ae/c3/aec3f4b0-2ac1-4b75-a3ea-8a34b921cf6d.png" width="1501" />
  </figure>
  <p>Намного больше статистики можно найти на сайте <a href="https://packagist.org/statistics" target="_blank">Packagist</a>. </p>
  <p>Кроме фреймворков и систем управления содержимым, сейчас наблюдается рост количества асинхронных фреймворков (среда <a href="https://www.swoole.co.uk/" target="_blank">Swool</a>, среда <a href="https://amphp.org/" target="_blank">Amp</a> и библиотека <a href="https://reactphp.org/" target="_blank">ReactPHP</a>). Данный софт создан на языках, которые позволяют пользователям работать с асинхронным кодом, в том числе на PHP.</p>
  <h4>Производительность</h4>
  <p>Если говорить о временах 5-ой версии, производительность PHP можно назвать максимум средней. Но в 7-ой версии ядро сильно переписали, тем самым увеличив его эффективность в несколько раз. Второй важной причиной, повышающей производительность, стал прелоадинг, за счет которого появилась возможность хранить в памяти скомпилированные участки кода.</p>
  <p>В PHP 8 еще одной ускорялкой станет JIT-компилятор. Помимо прочего он должен открыть для PHP двери в другие области кроме веб-разработки.</p>
  <h4>Итог</h4>
  <p>Судя по всему, восьмая версия будет решительным шагом вперед. Даже в данный момент PHP является очень хорошим инструментом для разработки разных веб-сайтов. При этом нужно учесть, что он непрерывно обновляется, а значит, точно не скоро потеряет свою актуальность.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@learnscript/M90GnIH2Q</guid><link>https://teletype.in/@learnscript/M90GnIH2Q?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript</link><comments>https://teletype.in/@learnscript/M90GnIH2Q?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript#comments</comments><dc:creator>learnscript</dc:creator><title>Бьерн Страуструп отвечает на топ-4 вопроса по C++ со Stack Overflow</title><pubDate>Fri, 27 Mar 2020 08:22:44 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/ba/31/ba3106f1-b46b-4841-9df5-fe85ea24fb7b.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/7f/03/7f037e4e-8ea0-4e21-899a-31b4058d0bfc.png"></img>Мариэль Фрэнк и Сонни Ли, авторы курса Learn C++ на Codecademy, недавно получили возможность взять интервью у доктора Бьерна Страуструпа, создателя C++.]]></description><content:encoded><![CDATA[
  <figure class="m_column">
    <img src="https://teletype.in/files/7f/03/7f037e4e-8ea0-4e21-899a-31b4058d0bfc.png" width="1000" />
  </figure>
  <p>Мариэль Фрэнк и Сонни Ли, авторы курса Learn C++ на Codecademy, недавно получили возможность взять интервью у доктора Бьерна Страуструпа, создателя C++.</p>
  <p>В рамках этого интервью он ответил на вопросы по C++, набравшие наибольшее количество голосов на Stack Overflow Хотя все интервью достойно полного прочтения, Codecademy великодушно разрешили нам поделиться его частью.</p>
  <p>Если вы когда-нибудь задумывались, существуют ли на Stack Overflow определяюще исчерпывающие ответы, то вот нечто ближайшее к этому, что вы можете получить наверняка (хотя мы ожидаем, что кто-то может не согласиться).</p>
  <p><strong><a href="https://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster-than-processing-an-unsorted-array" target="_blank">Почему обработка отсортированного массива быстрее, чем обработка несортированного массива?</a></strong></p>
  <p>Одной из причин является предсказание ветвлений: ключевая операция в алгоритме сортировки — “if(v[i] &lt; pivot]) …” или эквивалент. Для отсортированной последовательности этот тест всегда верен, тогда как для случайной последовательности выбранная ветвь изменяется случайным образом.</p>
  <p>Другая причина заключается в том, что когда вектор уже отсортирован, нам никогда не нужно перемещать элементы в правильное положение. Эффект этих маленьких деталей дает коэффициент равный приблизительно пяти или шести, который мы наблюдали.</p>
  <p><strong><a href="https://stackoverflow.com/questions/1642028/what-is-the-operator-in-c" target="_blank">Что такое оператор --&gt; в C++?</a></strong></p>
  <p>Это старый вопрос с подвохом. В С ++ нет оператора --&gt;.Рассмотрите следующее:</p>
  <pre>if(p - - &gt; m = = 0) f(p);</pre>
  <p>Это фактически означает: посмотрите, больше ли p--, чем m (так оно и есть), а затем сравните результат (true) с 0. Что ж, true != 0, поэтому результат равен false и f() не вызывается.</p>
  <p><strong><a href="https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list" target="_blank">Лучшее руководство и список книг C++</a></strong></p>
  <p>К сожалению, нет канонического списка книг по C++. Такого в принципе не может быть. Не всем нужна одинаковая информация, не у всех одинаковый опыт, и лучшие практики C++ постоянно развиваются.</p>
  <p>Я провел небольшое исследование в Интернете и нашел удивительный набор рекомендаций. Многие были серьезно устаревшими, а некоторые были просто плохими. Новичок, ищущий хорошую книгу без руководства, будет очень смущен!</p>
  <p>Вам действительно нужна книга, потому что методы, которые делают C++ эффективным, нелегко найти в нескольких блогах по конкретным темам, и, конечно, блоги также страдают от ошибок, устаревания и плохих объяснений. Часто они также фокусируются на продвинутых новых темах и игнорируют основные принципы.</p>
  <p>Я рекомендую свое <a href="https://amzn.to/2LGYthA" target="_blank">Программирование: Принципы и Практика использования C++ (2-е издание) для людей, только начинающих учиться программировать, и Тур по C++ (2-е издание)</a> для людей, которые уже являются программистами и которым необходимо ознакомиться с современным C++. Люди с сильным математическим образованием могут начать с <a href="https://amzn.to/2LEFCDS" target="_blank">Открытия современного C++: интенсивный курс для ученых, инженеров и программистов </a> Питера Готшлинга.</p>
  <p><strong><a href="https://stackoverflow.com/questions/57483/what-are-the-differences-between-a-pointer-variable-and-a-reference-variable-in" target="_blank"> Каковы различия между переменной-указателем и ссылочной переменной в C++?</a></strong></p>
  <p>Чтобы узнать больше о ссылках и указателях, ознакомьтесь с <a href="https://www.codecademy.com/learn/learn-c-plus-plus" target="_blank">Learn C++</a>.</p>
  <p>Обе представлены в памяти как машинный адрес. Разница в их использовании. Чтобы инициализировать указатель, вы даете ему адрес объекта. Для чтения и записи через указатель мы используем оператор разыменования (*). Когда мы присваиваем один указатель другому, они оба будут указывать на один и тот же объект.</p>
  <p>Обратите внимание, что указатель может указывать на разные объекты в течение своего жизненного цикла. Это основное отличие от ссылок. Ссылка привязывается к объекту при его создании и не может быть переделана в ссылку на другой.</p>
  <p></p>
  <p><em>Бьярн Страуструп — технический партнер и управляющий директор Morgan Stanley в Нью-Йорке и приглашенный профессор Колумбийского Университета. Он также является создателем C++.</em></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@learnscript/BED40UQYa</guid><link>https://teletype.in/@learnscript/BED40UQYa?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript</link><comments>https://teletype.in/@learnscript/BED40UQYa?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=learnscript#comments</comments><dc:creator>learnscript</dc:creator><title>Подборка книг по разработке под Android</title><pubDate>Thu, 26 Mar 2020 11:51:04 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/45/29/45298fdc-ffd8-4ef1-be95-c797daf0247f.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/3f/2b/3f2b0cd0-6087-4345-9520-c40c293035d2.jpeg"></img>Все учебные приложения были спроектированы таким образом, чтобы продемонстрировать важные концепции и приемы программирования под Android и дать опыт их практического применения.]]></description><content:encoded><![CDATA[
  <figure class="m_column">
    <img src="https://teletype.in/files/3f/2b/3f2b0cd0-6087-4345-9520-c40c293035d2.jpeg" width="1920" />
  </figure>
  <h3>Android. Программирование для профессионалов. 3-е издание</h3>
  <figure class="m_original">
    <img src="https://teletype.in/files/94/6a/946a6493-041f-4b86-bbfc-7457b0def391.jpeg" width="200" />
  </figure>
  <p>Все учебные приложения были спроектированы таким образом, чтобы продемонстрировать важные концепции и приемы программирования под Android и дать опыт их практического применения.</p>
  <p></p>
  <h3>Head First. Программирование для Android. 2-е издание</h3>
  <figure class="m_original">
    <img src="https://teletype.in/files/0a/1b/0a1becb7-f50c-4088-84db-aca5e9f59011.jpeg" width="243" />
  </figure>
  <p>Эта книга простым языком учит правильно формировать структуру приложений, проектировать гибкие и интерактивные интерфейсы, запускать службы в фоновом режиме, обеспечивать работу на разных устройствах и многое другое.</p>
  <h3>Android для разработчиков. 3-е издание</h3>
  <figure class="m_original">
    <img src="https://teletype.in/files/c0/ee/c0ee7d43-650b-4d12-8154-c7fb3c1a93cd.jpeg" width="198" />
  </figure>
  <p>В основе книги лежит принцип разработки, ориентированной на приложения, — концепции показаны на примере полностью работоспособных приложений Android, а не фрагментов кода.</p>
  <h3>Android. Сборник рецептов. Задачи и решения для разработчиков приложений. 2-е издание</h3>
  <figure class="m_original">
    <img src="https://teletype.in/files/5d/56/5d565ec9-d7bb-435f-86a5-c287d14b7486.jpeg" width="204" />
  </figure>
  <p>Книга идеально подходит для разработчиков, владеющими языком Java, основами платформы Android и интерфейса Java SE API. Она содержит рецепты, предоставленные более чем тридцатью разработчиками. Каждый рецепт содержит четкое решение и пример кода, готовый к использованию.</p>
  <h3>Эффективное использование потоков в операционной системе Android. Технологии асинхронной обработки данных</h3>
  <figure class="m_original">
    <img src="https://teletype.in/files/47/00/4700ca67-a1df-44eb-83e0-2a25445f2029.jpeg" width="191" />
  </figure>
  <p>Эта книга с практической точки зрения описывает несколько асинхронных механизмов, доступных в программной среде Android SDK, а также рассматривает основные принципы и правила выбора одного из них, лучше всего подходящего для создаваемого приложения.</p>

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