Русский
Русский
English
Статистика
Реклама

Пятничное

MAD (otoMAD) безумие или искусство?

04.12.2020 08:08:46 | Автор: admin

Интервью c авторами "The Glorious Octagon of Destiny", восьмиминутного ролика, на создание которого ушло почти два года. В производстве видео принимало участие около тридцати человек. Ролик является качественным образчиком otoMAD-культуры, набирающей мировую популярность.

Привет! Расскажи, что такое otoMAD? Какие особенности отличают этот жанр видео?

MMaker: "Я думаю, otoMAD, вероятно, может быть классифицирован как "ремиксовый" жанр видео, но самое большое отличие otoMAD от остальных ремиксов в том, что большая часть исходного контента (аудио и видео) не делается с нуля, а берётся из уже существующего.
Идея состоит в том, чтобы увидеть, насколько можно использовать оригинальный материал, чтобы сделать из него что-то креативное. Существует масса разных стилей otoMAD, и у каждого автора свой вкус, но в конце концов все они, как правило, имеют некие общие паттерны."

SafNine: "По моему мнению, особенностью жанра otoMAD является то, насколько креативными могут быть авторы, редактируя источники, чтобы создать красивую, гармоничную музыку и анимацию. Поскольку мы делаем это исключительно из энтузиазма, а не за деньги, мы можем быть настолько креативными, насколько захотим. Полная свобода творчества!"

Marlon: "Я бы описал это как ремикс уже существующего видеоконтента с музыкой, которая (обычно) также берется из существующего источника. Поскольку есть много разных стилей otoMAD, трудно дать конкретное определение. В целом, почти все такие видео используют сдвиг высоты тона и смешивание фонем/слов в качестве основных техник."

В чем разница между MAD, otoMAD, YTPMV?

MMaker: "Выбор стилистики и регион происхождения в первую очередь (YTPMV - западные, а MAD - восточные), но это может вызывать споры, поскольку одно и то же видео может быть определено разными людьми как относящееся как к YTPMV, так и к otoMAD.
В основном, различия сводятся к выбору исходников, otoMAD, как правило, более акцентирован на визуальное содержание, тогда как YTPMV делает фокус на создании кавера на песню с меньшим вниманием к графике.
Коллаборация "The Glorious Octagon of Destiny" рассматривается сообществом как гибрид между otoMAD и YTPMV, поскольку Octagon основан на западных источниках. Но, поскольку коллаборация испытала сильное японское влияние в стилистическом плане, то, по моему мнению, большинство участников считают, что они сделали otoMAD, а не YTPMV.
Отличие между MAD и otoMAD - в стилистике аудио. В MAD, как правило, звук никак не редактируется, а просто подбирается визуальный ряд под существующий трек. В otoMAD же музыка ремиксуется."

SafNine: "MAD известен на Западе как AMV. Это аниме-сцены, отредактированные под музыку. OtoMAD отличается от MAD большей динамичностью, большим использованием монтажа, спецэффектов, а также редактированием музыки. Жанр otoMAD наиболее популярен в Восточной Азии, особенно в Японии, где он и возник. Даже если автор otoMAD не из Японии, то, как правило, он будет использовать источники, которые были впервые использованы в Японии, такие, как, например, музыка из серии игр Touhou Project или "Gachimuchi рестлинг-видео (NSFW!)".
OtoMAD возник на NicoNicoDouga, а YTPMV - на YouTube. Эти жанры схожи между собой, но otoMAD характеризуется использованием японского контента, а также, на мой взгляд, более качественным исполнением видео и аудио. "

Marlon: "На мой взгляд, otoMAD и YTPMV это одно и то же, хотя со мной могут поспорить, сказав, что эти жанры отличаются своими стилями. Возможно, раньше так и было, но за годы оба этих жанра испытали сильное взаимовлияние, и теперь между ними сложно провести чёткую границу. Основное отличие в том, что один из них появился в Японии, а другой - на Западе."

Я попытался определить признаки, по которым можно узнать видео в стиле otoMAD:
- набор часто используемых треков и/или ремиксов (
RED ZONE, Evans, саундтреки из популярных в Японии игр/франшиз: Touhou Project, Mario, Kirby, Undertale, и т.д.);
- важна синхронизация визуального ряда с битом фоновой музыки;
- набор часто используемых видеоисточников (аниме, японская реклама, и т.д.)
Так ли это?

MMaker: "Да, всё верно. Частым приёмом является стилизация видео под оригинальный клип фоновой музыки. Если играет "Dance Robot Dance", видео будет стилизовано под клип этого трека, а также стилизация/пародирование аниме-опенингов. Авторы также часто делают шутки/стилизации на основе других видеороликов, например, когда играет Big Blue, в середине визуальный ряд переключается (NSFW!) на Inmu (NSFW!), или когда играет RED ZONE, во время "хоровой части" видео делится пополам, причём в одной половине "играет" соло, в другой - бас. Иногда мы также упоминаем конкретное видео с целью выразить уважение автору."

SafNine: "Часто используемыми источниками являются Gachimuchi, "Улица Сезам: Джек Блэк объясняет восьмиугольник", реклама Old Spice c Терри Крюсом, "Кухонный ствол" (скетч из Шоу Питера Серафиновича), и т.д."

Marlon: "Да, люди склонны использовать знакомые/известные материалы, это касается как видео, так и аудио. Часто песня связана с каким-либо спецэффектом. Сообществу нравится переиспользовать оригинальный монтаж, придавая ему собственный вид или используя другой источник, отдавая таким образом дань уважения автору.
Что-то похожее есть и с видео-исходниками, с которыми тоже связаны определённые шутки. Посмотрев достаточно видео, вы начнёте их узнавать. Особенно популярные исходные видео формируют собственные направления otoMAD, например, Gachimuchi, Cookie, Inmu.
Мы любим следовать определенным трендам, но, я думаю, otoMAD больше определяется стилем редактирования. Есть много видео, в которых используются непонятные видео- и аудиоматериалы, но, я думаю, они всё ещё могут быть классифицированы как otoMAD."

Какова история otoMAD? Как ты узнал об этом и начал делать ролики?

MMaker: "Жанр otoMAD имеет длинную историю, но большая проблема в том, что она на японском языке. И даже на нём она, как правило, передаётся из уст в уста, как и история YTPMV. Сейчас мало кто занимается переводом, раньше у NicoNicoDouga была английская версия, но они отказались от неё из-за отсутствия интереса.
Впервые я увидел перезалитые на YouTube MAD несколько лет назад, но не разбирался в них до тех пор, пока не посмотрел несколько видео MowtenDoo, который с Запада и считает себя автором otoMAD. После этого я стал делать видео в стиле YTPMV, но сейчас больше сместился в стиль otoMAD."

Marlon: "Я слабо знаком с историей otoMAD. Я увлёкся этим много лет назад, когда смотрел YouTube в 2007-2008 годах, и видел там ранние YTPMV и перезалитые с NicoNicoDouga otoMAD. Сначала я увлекался YTP, но затем переключился на YTPMV.
Своё первое видео я смонтировал ещё в 2009 году , когда мне было 12 лет, и я совершенно не понимал, что делаю.
Но я продолжал делать ролики, и постепенно они становились лучше и лучше, а также знакомился с сообществом. За это время мой стиль изменился, и я стал больше интересоваться otoMAD примерно с 2015 года, в основном из-за интереса к Gachimuchi в то время."

Расскажи подробнее о производстве ролика "The Glorious Octagon of Destiny". Сколько времени это заняло, сколько человек участвовало? Насколько сложно сделать такое видео? Какое программное обеспечение использовалось?

MMaker: "Изначально мы планировали сделать это видео за 6 месяцев, но в итоге производство заняло 2 года. Так как мы занимаемся этим в свободное время, сроки премьеры могут откладываться.
Участвовало около трёх десятков человек, участники выбираются из тех, кого мы знаем, что они хороши в своём деле, талантливы, креативны, знакомы с исходником и т.д. Почти все участники знают друг друга годами. У нас не было какой-то "формы подачи заявки на участие" или типа того. Если вы монтируете ролики, вы, как правило, заводите связи с другими авторами, и таким образом попадаете в подобные коллаборации.
Софт может сильно различаться, но в основном мы используем REAPER для аудио и Adobe After Effects для визуальных эффектов. Многие создатели YTPMV используют Vegas как для аудио, так и для видео, а японцы обычно пользуются REAPER для аудио и AviUtl для визуальных эффектов.
Видео разбито на отрезки, на каждый назначается своя команда, обычно это два человека - один работает с видео, другой с аудио. Мы много общаемся, что гарантирует то, что конечный результат будет выглядеть органично и отрывки будут плавно переходить от одного к другому. А затем отрывки сводятся вместе. Этим я и занимался в том числе. Также я был главным организатором проекта."

SafNine: "Я работал над визуальной частью одного из отрывков. С момента, когда меня пригласили в 2018 году, и премьеры видео в 2019, я работал около года. Но, разумеется, это не был год непрерывной работы, поэтому у меня было время попробовать новый софт и идеи. Но наша коллаборация - особенный случай, так как это последнее видео в серии, обычно это не занимает столько времени."

Marlon: "Основная часть работы была сделана в последние несколько месяцев.
Сделать видео такого уровня довольно сложно, но большинство участников уже имели такой опыт.
Вот краткое описание производственного процесса:
- руководители проекта составляют список треков, на которые они хотят сделать видео;
- в сообществе ищутся добровольцы для участия;
- делается саундтрек (в нашем проекте его сделал NOMA);
- каждому назначаются роли (редактирование видео/аудио или всего вместе);
- убеждаемся в том, что у каждого есть план работы и помогаем друг другу, если необходимо;
- производство аудио сопровождается производством видео;
- затем всё собирается вместе.
Это большой труд, отнимающий много времени. Я был одним из руководителей проекта, помогал с такими вещами, как выбор музыки и назначение участников, а также немного помогал им, ещё редактировал несколько отрывков видео и аудио."

Что посоветуешь для начала ознакомления с otoMAD? Желательно что-то понятное для западного/европейского менталитета. SFW, конечно.

SafNine: "Для новичков я бы советовал сборники otoMAD, поскольку они содержат большое разнообразие, так как много участников создают для них визуальные и звуковые эффекты. Я бы порекомендовал эти, поскольку они хорошо сделаны и не содержат исходников NSFW:
- The Glorious Octagon of Destiny;
- Muscular Wonders - Terry Crews' Greatest Hits;
- Kitchen Gun - 3 Shots Of Derek Bum;
-CollaborationGabe Newell Birthday Extravaganza.
Начните с этих, а дальше всё сделают алгоритмы YouTube. Нужна хорошая акустика или наушники, иначе вы не оцените уровень качества обработки звука."

Что тебя вдохновляет при создании роликов?

MMaker: "В основном это видео других авторов, и я думаю, что это относится ко многим людям, все сообщество живет своего рода бесконечным циклом обратной связи, что на самом деле довольно приятно.
Кроме того, меня лично вдохновляют многие японские художники по анимационной графике, а также мои собственные интересы в целом. Я работаю программистом на своей повседневной работе, поэтому меня, естественно, интересуют многие технические аспекты создания видео и визуальных эффектов, поэтому эти аспекты иногда находят отражение в моей работе."

Marlon: "Разные вещи. В зависимости от того, над чем я работаю, я смотрю на песню, над которой я работаю, и придумываю способы включить ее в визуальные эффекты. Я также часто смотрю на другие понравившиеся мне otoMAD в качестве справочника."

MajorMilk: "Я художник, и рассматриваю видео как ещё один способ самовыражения."

Твоя работа связана с видео? Как ты этому научился?

MMaker: "Нет, моя работа с этим не связана, я сам учился редактировать. Я не проходил какого-то специального обучения".

SafNine: "Создание анимированной графики для меня - просто хобби. На создание своих otoMAD меня сподвигли другие видео в Интернете, поэтому я изучил Adobe After Effects.
Освоить софт проще, чем развить хорошее чувство стиля. Я думаю, что это верно как для создания видео, так и для аудио.
Изучая работы других людей и получая отзывы о своей работе, вы разовьете навыки, чтобы ваши визуальные и звуковые эффекты выглядели хорошо. Важно быть частью сообщества otoMAD/YTPMV, оно поможет."

Можно ли считать otoMAD видом искусства?

MMaker: "Я бы сказал, да, это ещё одна форма ремиксов, которые являются искусством. Но пока это скорее локальный японский феномен, где он пользуется наибольшей популярностью."

SafNine: "Да. Однажды я показал несколько otoMAD-видео другу и он назвал их постмодернистским искусством."

MajorMilk: "Это форма преобразующего искусства. Вы берете исходный материал и модифицируете его достаточно, чтобы создать что-то новое. Это также делает нас очень уязвимыми для жалоб на нарушение авторских прав."

Нужно ли знать японский язык, чтобы понимать юмор/мемы в надписях/фразах?

MMaker: "Не всегда, зависит от конкретного видео. Во многих видео есть просто визуальные приколы, но во многих из них также есть шутки в аудио/диалогах, и, конечно, желательно их понимать. Но, конечно, незнание японского не помешает наслаждаться непосредственно визуальной частью/музыкой"

MajorMilk: "Желательно иметь базовые знания. Например, уметь читать катакану/хирагану. Это улучшает восприятие, и, я думаю, это важно. Как смотреть фильм. Обычно у этих видео есть какой-то сюжет, связанный со способом создания звука, много предложений "пропевается" под музыку."

Есть ли примеры "русского otoMAD" или otoMAD с русскоязычными исходниками?

SafNine: "Есть авторы otoMAD из России, но они, как правило, пользуются общепринятыми (японскими) исходниками. А видео с исходниками на русском языке я почти не встречал, кроме что разве этого(на самом деле, украинское - прим. ред.) хотя, например, музыка из "Тетриса" является довольно популярной, в некоторых сборниках встречаются визуальные отсылки к России".

Подробнее..

Как я создал лучший colorpicker

18.01.2021 18:09:31 | Автор: admin

Эта статья посвящена тому, как я решил написать свой выбор цвета для сайта, потому что не устраивала кривая работа и тяжеловесность аналогов. Мой код не содержит ни одного плагина или библиотеки, поэтому он максимально простой и производительный.

Начнём с самого начала. Создаём базовую HTML-разметку:

<!doctype html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport"          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title>Document</title></head><body>    <div id="app">        <header>            <h1 id="title">Color Picker</h1>        </header>    </div>    <div id="colors-block"></div></body></html>

Далее надо вывести все цвета. Я решил выводить их на PHP, чтобы пользователь после открытия страницы уже видел палитру, а не ждал, пока это отрендерится у него на клиенте. Выводить решил в шестнадцатеричном варианте. Для этого делаем 6 вложенных циклов for и выводим блоки 1x1 px.

Код
<?php$color = '';        for($i=0;$i<15;$i++) {            $a = $i;            switch($i) {                case 10:                    $a = 'A';                    break;                case 11:                    $a = 'B';                    break;                case 12:                    $a = 'C';                    break;                case 13:                    $a = 'D';                    break;                case 14:                    $a = 'E';                    break;                case 15:                    $a = 'F';                    break;            }            for($j=0;$j<15;$j++) {                $b = $j;                switch($j) {                    case 10:                        $b = 'A';                        break;                    case 11:                        $b = 'B';                        break;                    case 12:                        $b = 'C';                        break;                    case 13:                        $b = 'D';                        break;                    case 14:                        $b = 'E';                        break;                    case 15:                        $b = 'F';                        break;                }                for($k=0;$k<15;$k++) {                    $c = $k;                    switch($k) {                        case 10:                            $c = 'A';                            break;                        case 11:                            $c = 'B';                            break;                        case 12:                            $c = 'C';                            break;                        case 13:                            $c = 'D';                            break;                        case 14:                            $c = 'E';                            break;                        case 15:                            $c = 'F';                            break;                    }                    for($l=0;$l<15;$l++) {                        $d = $l;                        switch($l) {                            case 10:                                $d = 'A';                                break;                            case 11:                                $d = 'B';                                break;                            case 12:                                $d = 'C';                                break;                            case 13:                                $d = 'D';                                break;                            case 14:                                $d = 'E';                                break;                            case 15:                                $d = 'F';                                break;                        }                        for($m=0;$m<15;$m++) {                            $e = $m;                            switch($m) {                                case 10:                                    $e = 'A';                                    break;                                case 11:                                    $e = 'B';                                    break;                                case 12:                                    $e = 'C';                                    break;                                case 13:                                    $e = 'D';                                    break;                                case 14:                                    $e = 'E';                                    break;                                case 15:                                    $e = 'F';                                    break;                            }                            for($n=0;$n<15;$n++) {                                $f = $n;                                switch($n) {                                    case 10:                                        $f = 'A';                                        break;                                    case 11:                                        $f = 'B';                                        break;                                    case 12:                                        $f = 'C';                                        break;                                    case 13:                                        $f = 'D';                                        break;                                    case 14:                                        $f = 'E';                                        break;                                    case 15:                                        $f = 'F';                                        break;                                }                                $color = "#{$a}{$b}{$c}{$d}{$e}{$f}";                                                                echo '<div class="color__item" style="width:1px; height:1px;background:'.$color.';"></div>';                                $color = '';                                                            }                        }                    }                }            }        }

Если i>=10 то заменяем на символ из шестнадцатеричной кодировки.

В итоге через пару минут ожидания я решил выключить пылесос, который почему-то лежал включенный. Но оказалось, что это не он, а кулер моего ноутбука. Я понял, что, видимо, вывожу сразу слишком много цветов, поэтому решил выводить только первые 10 000 цветов для тестирования. Получилась такая красота:

Неплохо, но попадать по цветам, слишком неудобно. Поэтому увеличим размеры "пикселей"

Отлично! Но есть одна проблема: здесь только синий цвет, но хотелось бы получить побольше. К сожалению, мой слабенький ноут не может отобразить всю палитру сразу, несмотря на то, что я не использую даже сторонних плагинов. Поэтому я решил выводить различные палитры для основных цветов в зависимости от GET-параметра. Для этого создаем меню:

<header>  <h1 id="title">Color Picker</h1>  <nav>    <ul>      <li><a href="?x=blue">Blue colors</a></li>      <li><a href="?x=green">Green colors</a></li>      <li><a href="?x=red">Red colors</a></li>    </ul>  </nav></header>

А в самом PHP и придумал хитрый способ чтобы переписывать нужны было как можно меньше. Теперь цвета выводятся вот так:

<?php$x = $_GET['x'];if ($x == 'red') {$color = "#{$e}{$f}{$c}{$d}{$a}{$b}";} elseif ($x == 'green') {$color = "#{$a}{$b}{$e}{$f}{$c}{$d}";} else {$color = "#{$a}{$b}{$c}{$d}{$e}{$f}";}$q++;if ($q <=10000) {  echo '<div class="color__item" style="width:2px; height:2px;background:'.$color.';"></div>';  $color = '';}

Что получилось:

Остальные палитры доработаю чуть позже или можете доработать их сами!)

Теперь нам нужно непосредственно сделать выбор цвета и сохранение его в элемент формы. В HTML добавляем такой код:

<h3>Selected Color:</h3><div id="selected-color"></div><input type="hidden" id="color" name="color" value="rgb(255,255,255)">

А вот так выглядит JS:

document.querySelectorAll('.color__item').forEach((item, i, arr) => item.onclick = (e) => {document.querySelector('#selected-color').style.background = e.target.style.background; document.querySelector('#color').value = e.target.style.background});

Отлично! Теперь на все цвета вешается обработчик клика и выбранный цвет записывается в наш input[type='hidden'], который можно будет передать с остальной формой. Также мы показываем выбранный цвет пользователю

Безопасность

Не забудем и о безопасности. Так как название палитры передается как GET-параметр и обрабатывается нашим PHP, то есть вероятность XSS-инъекции! Чтобы защититься от инъекции, я позаимствовал код из этой статьи: http://personeltest.ru/aways/habr.com/ru/post/470193/ Автор показал очень простой и эффективный способ защиты, так что не будем городить костыли и воспользуемся им. Код вставлять сюда не буду, т.к. он идентичен коду в той статье, поэтому не буду дублироваться.

Теперь при открытии страницы появляется ошибка: <b>Call to undefined function mysql_real_escape_string()</b>. Я сначала хотел просто удалить эту строку, но подумал, что если кто-то из вас будет пользоваться моим кодом, то наверняка у вас будет работа с базой данных, поэтому проблему нужно решить.

Я вспомнил, что mysql в PHP устарел, и надо использовать mysqli. Поэтому соответствующим образом исправил вызов функции.

Умная IDE подсказывает, что не хватает обязательного параметра. Поэтому вторым аргументом я просто добавил true. Я нередко видел, как вторым аргументом передают булево значение. Например, в json_decode()

Однако, это не сработало, появился warning, говорящий, что аргумент должен быть строкой. Пришлось обернуть true в кавычки, и это, конечно же, помогло.

$v = mysqli_real_escape_string( $v, 'true' );

Однако, теперь ругается на первый аргумент, говоря, что аргумент должен быть объектом mysqli(), поэтому вместо "$v" я передал "new mysqli()". Он опять начал ругаться на что-то, но у меня плохо с английским, и я не понял суть. Поэтому решил забить и просто закомментировать строку. Скорее всего это баг из-за того, что PHP8 вышел лишь недавно, и многое работает криво.

Зато от XSS мы теперь защищены!

Запоминание цветов

Наша палитра отлично работает, но хотелось бы иметь возможность "запомнить цвет" - чтобы пользователь в случае закрытия страницы смог быстро восстановить цвет, который он выбирал. Для этого добавляем следующий код:

<div id="save-color-block"><button id="save-color__button">Запомнить мой цвет</button></div>

Как и говорил, у меня плохо с английский языком, и я не знаю как переводится "запоминать". Поэтому, написал по-русски (приношу извинения перед англоязычными пользователями моего кода (I am sorry)).

Теперь будем сохранять данные на сервере по клику на кнопку. Для этого пользователь должен будет ввести любой ключ по которому можно будет в будущем извлечь его цвет. Для ввода ключа воспользуемся функцией prompt(), т.к. самописные модальные окна - зло, и они пользователей бесят. Затем, для отправки на сервер будем использовать fetch - никаких jQuery, axios и т.п. Ведь наша задача сделать код простым и производительным, который поддерживать и использовать будет приятно.

Код получился вот таким:

document.querySelector('#save-color__button').onclick = () => {  const color = document.querySelector('#color').value;  const key = prompt('Write your key:');  const formData = new FormData();  formData.append('key', key);  formData.append('color', color);  fetch('save-color.php', {    method: 'POST',    body: formData  }).then((response) => {    if (response.status === 200) {      alert('success!');    } else {      alert('error!');    }  })

Теперь нам нужно создать файл "save-color.php". Код его будет крайне простым

<?php$key = $_POST['key'];$value = $_POST['color'];file_put_contents($key.'.txt', $value);

Вот и всё! Теперь мы можем просто вбить в адресную строку mydomain.ru/{key}.txt и увидеть цвет, который мы выбирали!

Заключение

Вот так, буквально за пару часов мы реализовали свой функционал выбора цвета. Да, он ещё несовершенный, но каждый может править код под себя и использовать в своё удовольствие! Если эта статья не уйдёт в минус, то дальше я покажу, как очень просто можно найти все ключи ассоциативного массива с помощью простейшего перебора строк. А на этом всё. Пишите качественный и производительный код.

Ну и напоследок

/sarcasm

Подробнее..

JS и его запретные тайны

06.11.2020 16:10:59 | Автор: admin
Так вышло, что наша компания искала разработчиков. В работе мы используем стандартный набор веб-технологий: HTML, CSS, Javascript, PHP, SQL. Во время проведения собеседований я был не то чтобы расстроен, а скорее обескуражен. Вопросы, на которые не могли ответить кандидаты, а именно разработчики с тремя и более годами опыта, были тривиальными. Они практически не касались специфики фреймворков или сложных алгоритмов, это просто скрининговые вопросы на знание языка и программирования в целом.

Не задачи, подчеркну, именно вопросы. От соискателей никто не требовал написать на доске программу для парсинга обратной польской нотации. Более того, не требовалось даже давать какие-то академические определения просто как-то объяснить что такое Х и для чего его можно применять.

Особо меня впечатлили навыки JS и я бы хотел предоставить вашему вниманию список вопросов, которые вызывали затруднение у опытных разработчиков.


Вопросы


Ключевые слова объявления переменных(var, let, const)
Я обычно задавал этот вопрос в качестве разогрева, чтобы дать понять кандидату, что жести не будет. Однако же кандидата это отнюдь не успокаивало Люди реально не понимают зачем вообще эти все тонкости. Для многих let и var равносильны, просто var устарело. У большинства кандидатов вызывал полное непонимание вопрос со звёздочкой, почему в константном массиве можно изменять значения элементов а в константной строке нельзя изменять текст.

Поведение разных типов данных при передачи их в качестве аргументов функции.
Разные вариации на тему того, как повлияет выполнение функции на переданные в неё аргументы разных типов. Достаточно понимать разницу в передаче по ссылке и по значению. Легко запомнить, что массивы и объекты передаются по ссылке. Как правило, проблем незнание этой особенности не создаёт, просто приводит к написанию неэффективного кода. Зато, уж если проблемы появляются, то устранять их оказывается очень сложно.

Преобразование и сравнение разных типов данных
Известная особенность языка, например:
(0 == "0") == (0 == "")("123" == "   123    ") !=  (123 == "   123   ")

С одной стороны рождает массу способов выстрелить в ногу себе и ни в чём неповинным коллегам, с другой позволяет писать лаконичный код.
Надо заметить что === избавляет от большинства таких проблем, но сильно усложняет код в некоторых ситуациях. С учётом того, что JS это всё-таки язык логики интерфейсов, пытаться писать на нём сложные вычисления как минимум странно. Разумным кажется использовать язык именно по назначению, а не пытаться с маниакальным упорством побороть его кажущиеся недостатки чтобы применять в финансовых расчётах или умном доме.
Отдельно хочу уточнить, что вопросы были не надуманные ребусы, а вполне рабочие ситуации вида 'Abc' > 'abc' или 0.1 + 0.2 == 0.3

Замыкания и this
Большинство разработчиков как правило понимают эту концепцию, но далеко не все. Обычно проблемы возникают на вложенных функциях.
function a(){  this.counter = 1;  function b(){    this.counter = 2;  }  b();console.log(this.counter);}a();

Что выведется в консоль? А если так?
const b = {a: a};b.a();


for(.., .., ..), for ( in ..), for ( of ..)
По каким-то таинственным причинам, многих людей ставят в тупик вопросы на знание таких конструкций. Единственное моё предположение заключается в том, что они просто не работали с достаточно низким уровнем языка и использовали исключительно фреймворки и библиотеки. Как можно не знать базовый for я вообще не представляю, однако же встречался и такой самородок.
Как правило, for ( in ..), for ( of ..) требуются для написания обходов сложных структур и сборки данных из нескольких разнотипных источников.

Обработка исключений (try, catch, finally, throw)
Тоже весьма страный случай. Хотя в современных фреймворках обработку исключений напрямую проводить практически не приходится, но знать принцип работы механизма исключений крайне важно. Это базовый синтаксис языка и, зачастую, необходимое средство написания нужного алгоритма.

Методы работы с массивами map, reduce, forEach, filter, every, some, indexOf, includes, splice
Базовый функционал, на котором строится большинство типовых операций с массивами. Сохранение копии исходных данных, сортировка таблицы, фильтрация результата, поиск по пунктам меню, форматирование Мало кто может себе позволить их не знать, но как правило только из-за применения Underscore или другого специфичного инструмента.
Нормальным я считаю помнить сигнатуру первых трёх из них и знать что гуглить, чтобы найти остальные.

Асинхронное/синхронное выполнение кода
К сожалению, сейчас это жизненно важное знание. Типовой проект устроен в виде API, данные из которого подтягиваются во фронт через запросы. Такая архитектура позволяет практически полностью отвязать фронт от бэка, но в замен заставляет строить кучу логики на промисах. Вопросы были несложными, например как гарантировать выполнение запроса B только после успешного выполнения запроса A.

Заключение


Это были вопросы с собеседования мидла с зарплатой в районе 2к$ на руки. На них не могли ответить соискатели с годами опыта. Что же пошло не так?..

Я бы не хотел показаться излишне заносчивым или высокомерным. Я не выдумывал абстрактных задач с нелепыми требованиями, брал только практические вещи, с которыми сталкиваешься постоянно. Более того, Javascript соискатели указывали своим ключевым навыком и указывали в резюме годы опыта, то есть должны были отвечать с лёгким недоумением когда же начнутся сложные вопросы?

Многие из нас просто невероятно самоуверены. Не скрою я и сам весьма самодовольный тип, хотя меня легко подловить на какой-то специфичной теме, например я давно забыл как использовать Canvas и не смогу из головы написать код для проксирования объекта. Однако, незнание базового синтаксиса языка нельзя объяснить никак. Вообще. Ну просто нельзя быть разработчиком не зная язык.

В JS около 20 реально применяемых ключевых слов(мало кто применяет в реальных задачах экзотику типа void или with). Это на вечер изучения.

Не указывайте JS своей специализацией если вы не можете дать ответы на простые вопросы по синтаксису языка. Будьте себе на здоровье Seneor React Developer или Fellow Angular Evangelist, но не утверждайте, пожалуйста, что вы знаете Javascript.
Подробнее..

Просветительская деятельность как профилактика синдрома самозванца

02.04.2021 10:12:46 | Автор: admin

Дисклеймер: я не психолог и даже не стремлюсь им стать. Если у вас уже имеются какие-то симптомы, лучше обратиться к специалистам. То что я буду описывать, это скорее метод профилактики и личный опыт.

Что такое синдром самозванца?

Тут было много статей на эту тему и я не буду повторять заново определения. Запишу свои соображения, откуда он берется и какие его принципы. Все мы знаем что какие-то знания или умения при их освоении кажутся сложными только пока ты их не освоил. После того как все нужные связи в мозгу образовались и оптимизировались, начинает казаться, ну чего тут сложного, раз раз и готово. Но это ощущение приходит только когда из области активного обдумывания, которая у нас не очень производительная, знания или умения уходят в более преспособленные для быстрого решения уже понятных задач зоны мозжечка и дефолт системы. Таким образом знания или умения покидают нашу сознательную часть и как бы становятся автоматическими, частью нас самих. Что в итоге происходит? Нам начинает казаться, что если нам не сложно выполнять ежедневную работу и она не вызывает никаких трудностей, то и сложной она не является и объективная оценка ценности, через субъективизацию, начинает падать, нам кажется, что мы занимаемся какой-то ерундой и она не заслуживает даже той оценки в виде нашей зарплаты и признания коллег, которая имеется.

Связь между выгорающем и синдромом самозванца

Более компетентные люди могут поправить меня в комментариях. Но я считаю, что эти два синдрома идут рука об руку и имеют общие корни. Когда тебе не кажется что ты делаешь что то значимое, что твои знания ценны, а действия меняют мир к лучшему. Тупое повторение ежедневных ритуалов и куча работы, которая по нашей собственной оценке не стоит того чтобы ее делать, предсказуемо ведет нас к полной потере интереса к той деятельности которую мы выполняем, заодно обесценивая и себя как профессионала . Мы не видим ничего нового, никакой мотивации к росту в профессии, потому что мозг привык к тому что делает автоматически и начинает попросту лениться. Зачем стремиться к чему-то, если все и так получается. Но без новых мотиваций, без новых применений нашим знаниям мы как раз и начинаем выгорать.

Как командная работа погубила нашу мотивацию

Все мы работаем в среде аджайл и подобных, эти ежедневные совещания, где все высказывают наболевшее, обсуждаются проблемы и их решения, каждого выслушают и все мирно обсудят. Но предствьте себе, как это необычно для нашего мозга, который эволюционно привык к взаимодействию в стае. Где есть вожак, высокоранговые обезьяны, низкоранговые. Где все понятно кого нужно слушать, а кого не нужно. Сейчас же мы все "решаем общую проблему" и в общем-то никто единый не диктует как мы ее будем решать, а между собой мы все равны, что хорошо с точки зрения процессов, но подтачивает мотивацию. Где бесконечно брать силы на новые рационализаторские предложения, если это просто скидывается в общий бэклог, разбивается на задачи и идет в работу, без какой либо ачивки в нашу систему вознаграждений в мозге. Да можно очень долго имитировать энтузиазм, но в такой схеме взаимодействий мы все видим к чему это приводит, падение мотивации, выгорание, синдром самозванца. Так что в итоге, просто смириться и ждать предсказуемого результата? Можно попробовать получить мотивацию на стороне. Ведь мозгу не важно откуда брать положительные подкрепления, у кого-то это могут быть хобби, какие-то личные проекты, любое занятие где у вас лично что-то хорошо получается и по результату ваш мозг выдает заветное "Какой ты молодец!".

Причем тут просветительская деятельность?

Раз уж мы пошли в объединения и обобщения всего и вся, давайте объясним просвятительскую деятельность. К ней я отношу любые выступления на конференциях, составления руководств и запись онлайн уроков, менторство. Любая деятельность где вы являетесь источником знаний и имеется какая-то другая сторона в виде одного или многих людей, которые принимают от вас эти знания. Не знаю, что сейчас будет с ней с приходом нового закона о контроле такой деятельности, но надеюсь нам не запретят выступать на конференциях и учить людей тому что мы знаем, иначе не видать нам профилактики выгорания и синдрома самозванца. Итак давайте рассмотрим что в нас есть и почему нам так важно этим делиться.

Как стать "вожаком" в своей стае

Есть один интересный эксперимент на приматах Конарда Лоренца. Где низкоранговую мартышку отселили от её стаи и научили доставать из специльной корбки банан. Потом подселили всех ее сородичей и дали им понаблюдать, как мартышка демонстрировала не доступное для всех остальных умение. Думаете все остальные тут же принялись за ней повторять? Как бы не так. Они просто били эту мартышку и отбирали банан, а её посылали за следующим. Потом эксперимент повторили с высокоранговым самцом. Его научили доставать банан и запустили остальных. Может потому что отобрать у него банан не представлялось возможным, может из за его авторитета. Но во втором случае все научились сами доставать бананы и история на этом закончилась. Выводы можно делать разные. Но в целом нам, в контексте статьи, будет важным предположение, что обучая кого-то, мы чувствуем себя чуть выше по рангу в этой стае и это подпитывает наш иерархиечский инстинкт. Ведь всем нам хочется быть оцененными, получить одобрение и какую-то похвалу. Так вот чем не метод самому себе организовать стаю и стать в ней "вожаком". Делясь знаниями, готовясь к конференциям, записывая какаие то руководства или уроки мы не только обеспечиваем себя аудиторией но и боремся с синдромами выгорания и самозванца. Потому что простая попытка изложить заново на бумагу или в печатном виде того, что для вас "просто" или само собой разумеется, заставляет вас самих крепко задуматься, так ли это просто, то чем вы занимаетесь. Я испытывал подобное проводя собеседования, когда кандидат, на вопросы, которые для вас кажутся элементарными, мнется и не знает что ответить, хотя, судя по его резюме обязательно должен был с этим столкнуться или хотя бы предположить, как можно решить подобную задачу, но на другом конце молчание и в вашей голове возникает мысль "хм, оказывается не все это знают". Готовясь к конференции или составляя план онлайн урока подключается еще и мысль как это объяснить условному новичку, что в этих знаниях является структурой, а что наполнением. Я даже не подозревал, какой положительный эффект на меня это окажет. Когда ты пытаешься структурировать то, что уже знаешь, приходит какой-то еще один, новый уровень понимания и удовольствие от того, что сейчас это еще и оценят по достоинству. (ну или захейтят в коментах, хотя с проф. знаниями вероятность поменьше)

"Правильная" командная работа

Я никогда не выступал на конференциях и не занимался чем-то подобным, мне всегда казалось, что люди делают это из тщеславия, мол посмотрите как я крут. Я не считал что мне необходима такая подпитка. Сев в пандемию дома, как все, я стал задумываться, чего же мне не хватает, почему мотивация стала падать? Но после того, как я почитал из различных источников, насколько для человека важно взаимодействие в команде, социализация и общая цель с группой людей, я стал искать выходы на такое взаимодействие. Казалось бы работа сама по себе должна давать нам это все, но как я писал выше, атмосфера равноправия и ритуалы аджайл это синтетическая командная работа, на самом деле мы не очень чувствуем ту цель и то взаимодейтсиве которое бы дало нашему мозгу ощущение "стаи" и принадлежности к ней.

По этому когда я стал взаимодействовать с различными людьми, которые готовят конференции, ведут образовательные проекты, я окунулся в новый для себя мир, ничего по сути не меняя. Я все еще оперирую своими знаниями, но как бы в новом ключе. Не практически применяя их для решения рабочих задач, а пересобирая ту же информацию, но уже в виде образовательного контента. Таким образом ценность этих знаний для меня повышается и я чувствую что это нужно и важно. А командная работа в новой для меня среде, новые дедлайны и созвоны, приносят вместо стресса интерес и вознаграждающую мозг подпитку. Ощущение что ты нужен, важен и кто-то ждет выполнения того что ты пообещал и не на опостылевшей работе, а в твоем личном проекте, где важность того что ты делаешь ключевая, без твоего контента не будет курса, а без выступления не состоится блок на конференции. Пойдя дальше по этому пути, я конечно могу столкнуться с тем, что и такая деятельность станет привычной и перестанет приносить удовольствие. Но пока выгорание и синдром самозванца отодвинуты на неопределенный срок и при первой их поступи, можно будет придумать что-то еще. Ведь зачем нам голова, не только же, чтобы шапку носить.

Основные мысли статьи сводятся к следующему. Новая командная деятельность, где вы обладаете ключевой ролью предотвращает выгорание, зажигает новый интерес к деятельности и обеспечивает положительное подкрепление. Пересборка текущих знаний под новым углом позволяет не только выйти на новый уровень понимания предмета, но так же повышает субъективную ценность ваших знаний для самого себя и повышает самооценку, что предотвращает синдром самозванца.

Всем спасибо, надеюсь я донес свои не хитрые мысли объемно, на вопросы могу поотвечать в комментариях. Напишите ваши истории и методы, как вы справляетесь с надвигающимися симптомами наших профессиональных болячек.

Подробнее..

Самурай с мечом подобен самураю без меча или Где на самом деле ошибался Джигарханян?

01.05.2021 20:09:31 | Автор: admin

Не так давно мне попалось эссе, затрагивающее философские вопросы, написанное известным физиком. Оно навело меня на кое-какие мысли о компьютерах, курсах компьютерной грамотности, и даже выразительности языков программирования.

Но сначала надо объяснить, откуда взялся заголовок. (Надеюсь, характер заголовка достаточно ясно показывает, что это статья выходного дня, чтиво, не претендующее ни на что серьёзное).

В далёком 1996-м (или 1997-м?) году в журнале КомпьюТерра вышла колонка тогдашнего главреда под названием Где ошибался ...анян? Я решил, что писать про реального ...аняна, наверно, не стоит, а лучше заменить его выдуманным персонажем по имени Джигарханян. Мой Джигарханян, в отличие от настоящего, работал преподавателем в техникуме (директор которого отличился неумением посчитать процент в прямом эфире). Ещё он занимался сексологией. Наконец, в 90-х Джигарханян написал и опубликовал книжку Фигачим по клавиатуре!, фрагменты которой публиковались в одном компьютерном журнале (откуда и взялось название колонки). То, что Джигарханян, возможно, допустил ошибку, написав и опубликовав свою книжку, говорили многие злые языки. Но в чём именно она состояла лично мне пришло в голову совсем недавно.

Отвлечёмся пока от его книги и вернёмся к философии. Философия для многих болтологическая лженаука, максимально оторванная от реальности и обладающая невысокой практической ценностью. Неудивительно, что пародийной квинтэссенцией такого отношения для них стала шутка: Самурай без меча подобен самураю с мечом, но только без меча. Особенно в стране, где слово гуманитарий является почти ругательным, а инженер последнюю сотню лет воспринимался чуть ли не единственной формой существования разумной материи.

Тем интереснее бывает читать, когда за философию берётся хороший естественник, например, физик. Да не просто физик, а физик выдающийся, отмеченный престижными наградами, профессор Оксфорда! (Называть его с ходу я пока не хочу, но если вы его узнали пишите в комментариях). А конкретно за рассмотрение философского свойства подобия с физической точки зрения.

В первую очередь возникает вопрос: является это свойство субъективным (случайным атрибутом, произвольным измышлением) или же объективным (отражающим какое-то фундаментальное свойство физической реальности, некую закономерность)?

Как найти на него ответ при помощи эксперимента, хотя бы мысленного? Давайте (мысленно) сделаем яркую, красочную и качественную фотографию Млечного пути, каким мы видим его с Земли. Пусть фотография будет сделана в высоком разрешении и распечатана по лучшей доступной технологии полиграфии. Покажем её тем немногим оставшимся на нашей планете жителям изолированных островов, которые видели небо и Млечный путь, но не имели дела с фотографией. Можно повторять этот эксперимент раз за разом, с вариациями, и вновь и вновь убеждаться, что люди находят связь между фотографией и реальным небом. Правда, связь эту некоторые назовут всё-таки субъективной, потому, что в эксперименте в качестве измерительного инструмента задействованы люди. Что ж, избавимся от людей, заменив их нейронной сетью, натренированной отслеживать, когда изображение, поступающее с камеры, является Млечным путём. Если направить камеру не на Млечный путь, а на его фотографию, компьютер с высокой степенью вопроизводимости сможет зафиксировать наличие подобия. А это значит, что подобие действительно является не искуственным философским построением, а объективным свойством реальности, подтверждаемым экспериментами!

Далее наш физик предлагает внимательно поглядеть на это привычное на первый взгляд свойство природы. Какие у него самого могут быть свойства? (Иными словами, мета-свойства). А они у подобия действительно интересные!

Во-первых, зачастую непонятно, на какой сопле вообще держится это самое подобие. Давайте сравним физико-химические свойства объекта-оригинала (звёзд) и объекта, подобного звёздам (фотографии).

Температура звёзд тысячи и миллионы кельвинов. Температура фотографии что называется, комнатная. Более того, фотография при приближении её температуры к звёздной быстро перестанет быть фотографией (и просто быть).

Звёзды излучают много энергии. Мощность этого излучения поражает: весьма малая часть лучей нашего не самого яркого Солнышка попадает на Землю, но обеспечивает почти все происходящие на ней процессы. И излучать так оно может миллиарды лет (что Солнце, в общем-то, и делает). Фотография, напротив, почти ничего не излучает. (Нет, что-то она, не будучи тёмной материей, всё-таки излучает, но несопоставимо мало и запас энергии для этого в ней меньше в огромное число раз). Более того, в тех диапазонах частоты и интенсивности, в которых мы наблюдаем свойство подобия (видимый свет), фотография не излучает вообще ничего!

Фотография содержит большое количество сложных органических молекул, без которых она перестанет быть фотографией. Звёзды, дай бог, чтобы обладали сколько-нибудь заметной металличностью. (Напомню, что у астрономов металлами называются все элементы тяжелее водорода и гелия).

И так далее, и так далее. Ещё можно вспомнить давление, плотность, структуру (во многих смыслах). Всё это у фотографии и звёзд будет отличаться, и сильно. Что не мешает, однако, существованию подобия между ними.

Во-вторых, свойство подобия часто является хрупким. Не в том смысле, что для разрушения звёзд надо постараться, а для разрушения фотографии достаточно чиркнуть зажигалкой. Если на лакированную поверхность фотографии нанести неглубокие, но частые борозды, в результате чего она начнёт иначе преломлять свет, подобие сильно пострадает или вовсе исчезнет. Между тем, свойства её изменятся при этом не слишком существенно. Химсостав, например, останется тем же самым, лишь некоторое количество молекул на поверхности изменит своё положение. Ещё нагляднее будет, если мы возьмём электронную фоторамку и отключим питание. Что в ней поменяется? Всего лишь электронные конфигурации некоторых атомов! И этого будет достаточно, чтобы подобие полностью пропало. Что в этом случае мы увидим, взглянув на фотографию? Всего лишь саму эту фотографию! (Ведь раньше, глядя на неё, мы её вовсе не видели, а видели звёзды). Вдобавок, на помощь нам спешит лингвистика. Естественно будет сказать: Да ничего. Увидим экран, вот и всё. Или, как формулирует наш физик, возьмите достаточно сложный и чувствительный лабораторный прибор, обладающий высокой степенью подобия изучаемому предмету, внесите в него совсем небольшие изменения и всё, что вы увидите, это кучу деталей, из которых он состоит.

В-третьих, подобие может быть (а может и не быть) универсальным. Бумажная фотография будет обладать высокой степенью подобия, но абсолютно никакой универсальностью (ничему другому, кроме звёзд, она подобна быть не может). Экран компьютера, на который может быть выведена любая фотография, обладает высокой степенью не только подобия, но и универсальности.

Физические объекты, обладающие универсальным подобием редкие гости в нашей Вселенной! Если их и нельзя назвать экзотической материей, то уж экзотическим состоянием обычной материи можно наверняка! И компьютеры, которые появились в конце прошлого века, были на этом пути одним из величайших изобретений с тех пор, как эволюция изобрела органы чувств.

Мы привыкли считать глаза частью себя, но мы, всё-таки наш мозг. Когда мы на что-то смотрим, в действительности мозг (то есть, мы) смотрит на глаза объект, обладающий универсальным высоким подобием... Чему? Да чему угодно, воспринимаемому в видимом диапазоне! Любому объекту, на который направлен наш взгляд: звёздам с температурой в миллионы кельвинов, жидкому газу с температурой, близкой к абсолютному нулю, а кроме того фотографии, обладающей своим, независимым, подобием.

Что нового добавляют к этому компьютеры? Чему вообще может быть подобен компьютер?

  • Всему, что мы можем непосредственно видеть. (Выражение взято в кавычки потому, что как следует из написанного выше, мы ничего не видим непосредственно). То есть, объектам физического мира, которым могут быть подобны наши органы чувств (развившиеся в результате биологических адаптаций Homo sapiens). Например, тем же звёздам. Или смешным котятам.

  • Тому, что мы НЕ можем непосредственно видеть объектам физического мира, которым НЕ могут быть подобны наши органы чувств. Например, электронам. (Если вы возразите, что на экране можно наблюдать лишь некоторые аспекты электронов, я отвечу, что невооружённым взглядом тоже можно наблюдать лишь некоторые аспекты звёзд).

  • Объектам, с которыми мы могли встретиться в физическом мире, но не встречались инопланетным городам, невиданным животным, вымышленным людям.

  • Абстракциям, которые не встречаются в виде физических объектов. Например, отрезку, не имеющему толщины. (Его можно визуализировать, если рендерить с одной и той же толщиной независимо от масштаба).

  • Бесконечному числу других вещей.

В итоге, бывает трудно объяснить миллениалам, с детства окружённым ноутами-смартфонами-планшетами, каким откровением стали для нас в конце прошлого века компьютеры, ранее нам вовсе недоступные. Это действительно было окно в бесконечное число новых миров!

Стоит, правда, добавить, что степень и универсальность подобия этих компьютеров была не так, что бы очень высока. (Мультимедиа-компоненты, например, шли дополнительным комплектом! Проще говоря купил компьютер, а на нём ни кино не посмотреть, ни музыку не послушать, не говоря о 3D-графике). Зато хрупкость этого подобия превосходила всякие приличия. Достаточно вспомнить, что plug-n-play появился позже, а изначально нормой было сообщение: Ваша клавиатура не подсоединена, для продолжения нажмите любую клавишу. Неверно выставил параметры диска в BIOS'e? Белая строчка на чёрном экране! Неверно указал системный диск? Белая строчка на чёрном экране! Успешно загрузилась операционная система?.. Правильно белая строчка на чёрном экране! На котором нужно было затем набирать текстовые команды, чтобы добиться подобия компьютера хоть чему-то ещё.

Когда в начале 90-х компьютерами стали обзаводиться дяденьки, присвоившие их в госорганах, и тётеньки, успешно торганувшие сникерсами, эта проблема встала перед ними в полный рост. И на помощь им пришла книжка Фигачим по клавиатуре! Типичный отрывок оттуда выглядел примерно так:

Наберите фыва сто раз. Наберите олдж ещё сто раз. Уложитесь в пять минут. Закройте левый глаз, сядьте на правую руку и попытайтесь побить свой рекорд.

Ну, всё правильно! Если не рассматривать компьютер как объект, который при должном управлении способен стать подобным чему угодно, что же ещё остаётся? Рассматривать его как набор деталей! Из которых самая очевидная, занимающая наибольшую площадь, лежащая непосредственно перед глазами клавиатура. Коей и была посвящена, по сути, вся книга. Но несправедливо будет умолчать о преимуществах такого метода обучения компьютерной грамотности. Например, при нём абсолютно не требуется электропитание! Да и компьютер как таковой.

(На самом деле, я глубоко уважаю Владимира. Если некоторым людям нужен был наставник, чтобы хотя бы знать, с какой стороны подойти к этим самым компьютерам, честь ему и хвала. Тем более, что человек он хороший).

Годится ли физико-философское представление о свойстве подобия ещё хоть на что-то, кроме сведения счетов с писателями, публиковавшимися четверть века назад? Ну, разумеется многое в нашей культуре и даже в нашей биологии построено вокруг него!

Что лучше посмотреть интересный фильм в разрешении 400x300, или фильм категории Г в 4K? (Что важнее: слабое подобие интересному объекту или более сильное менее интересному?) А насколько интересным делают фильм спецэффекты? (Которые сильнее уподобляют экран тому, что мы знаем, или, наоборот, тому, чего мы вовсе не видели!)

Или вот нетипичное программирование. (Пусть уж у нас сегодня никто не уйдёт обиженным!) Инструмент для создания программ, например, язык программирования, должен обладать высокой степенью универсального подобия. Хороший язык общего назначения может быть подобен чему угодно от бухгалтерии до кровавой бани в марсианском аду. Это свойство мы и называем выразительностью. Но если посмотреть на код, написанный на языке не столь выразительном... мы увидим в первую очередь сам этот язык, и хорошо ещё, если во вторую или третью очередь программу на нём. (Именно такое чувство и возникает лично у меня при взгляде на разбросанные там и сям reinterpret_cast<> и прочие элементы, мешающие видеть, что тут происходит). А такие вещи, как вычисление факториала на шаблонах, или умение предсказать результат вывода в консоль следующего кода:

function a(value) { return true - value; }
var b = a('4') + a('-4') + a(-'4') + a(4);
console.log(b);

почему-то считаются ныне глубоким знанием инструмента и вообще делом чести и доблести. (Я знаю многие неплохие конторы с сильными и талантливыми программистами, где задают такие вопросы на собеседованиях). В то время как с моей точки зрения гораздо большее уважение заслуживает умение распознавать такие ситуации, в которых ослабевает подобие предметной области, и всячески с ними бороться.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru