Как стать автором
Обновить
193
0
Ivan Bogachev @sfi0zy

Creative frontend developer

Отправить сообщение

Код работает не в вакууме. На практике многое в этой статье не работает так, как написано, хотя на первый взгляд может показаться, что все ок. Например:

Чему равняется вычисленное значение для свойства width и height у элементов .child?

Очевидно оно зависит не только от самой grid-сетки, но и от содержимого этих самых child. Сделайте им размер шрифта побольше и удивитесь несоответствию результата вашему ответу как по высоте, так и по ширине.

Каким свойством можно сократить количество определённых свойств для псевдоэлемента ::before до трёх?

Замена установленных height и width на четверку top, right, bottom, left, и потом на inset - это, конечно здорово и спортивно, только это меняет логику работы кода. Добавьте, например, margin для ::before, и окажется, что код в вопросе и ответе работает по-разному.

Перепишите следующий код так, чтобы определение значений для свойств margin и padding было без использования 0

Свойства margin, margin-block и margin-inline (и их составляющие в виде top, right, left и bottom) имеют разную логику работы. Версии block и inline зависят от свойств writing-mode, direction и text-orientation. Так что замена обычного margin на них может сломать верстку. Код в вопросе и ответе не эквивалентен. То же имеет отношение и к padding.

Так что вопросы, конечно, хороши, но в теории. А работа есть работа. Я бы не стал такое рекомендовать для вопросов на интервью. Для себя, почитать и восхититься возможностями языка - да, но не для интервью. Штуки вроде :focus-visible гуглятся за минуту при необходимости. За смешивание гридов, флексов и инлайнов на одном элементе нужно на ревью по голове стучать, чтобы коллег не путали неявными приведениями свойств друг к другу. Код долен быть очевидным, однозначно трактуемым с первого взгляда. А вычисленные значения будут зависеть от контекста и мы в подозрительных случаях будем смотреть в DevTools, чтобы видеть весь контекст, а не играть в угадайку.

прогулки увлекают, и можно незаметно пройти несколько километров. Это мягкий способ ввести в жизнь дополнительное движение... средство отвлечься от грустной действительности, на время переключиться...

Я таким вот образом постепенно пришел к стрит-фотографии. Если долго смотреть, то на улицах можно найти много чего, не только птиц и котов.

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

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

HDR images are often used for photography. They capture more detail than traditional photos do. Now we're seeing it used in web design as well!

Не стоит смешивать фотографию и веб, а то в голове бардак настанет. Dynamic range в фотографии - это динамический диапазон. Это про то, может ли камера одновременно передать светлые и темные цвета. Обычно измеряется в ступенях. Чем больше ступеней - тем более контрастную сцену можно сфотографировать без потерь. Color depth - это глубина цвета. Это про то, насколько много оттенков камера в целом может передать. Обычно измеряется в битах. Чем больше битов, тем больше возможных значений, тем больше возможных оттенков. И эти два понятия перпендикулярны. Может быть камера с большой глубиной цвета, но с маленьким динамическим диапазоном - она будет давать "красивые цвета, богатые на оттенки", но только в условиях, где перепады освещенности будут небольшими. При сильных перепадах освещенности мы будем иметь пересветы и недосветы. А может быть камера с большим динамическим диапазоном, но с маленькой глубиной цвета. Она одновременно передаст ярко освещенный снег и глубокие тени на деревьях, но выглядить все будет "плоско, как мультик". А гамма - это вообще третье понятие, перпендикулярное этим. В рамках ограниченной глубины цвета мы можем выбрать, на какие области цветов мы хотим отдать большее количество оттенков. Мы можем в рамках одной глубины цвета сказать, что мы хотим захватить больше аццки-салатовых и ядрено-розовых цветов, пожертвовав при этом многообразием оттенков в области умеренных цветов, а можем наоборот - пожертвовать ядреными цветами и получить больше оттенков в обычных повседневных цветах. Ну или еще какой-то выбор сделать. Это будет про гаммы.

В случае фронтенда мы имеем "как всегда" смешивание понятий. Под media-выражением dynamic range в CSS у нас подразумевается не динамический диапазон в том виде, в котором он есть в фотографии, а некая дискретная сущность, которая зависит и от динамического диапазона, и от глубины цвета, и еще от максимально возможной яркости монитора. Можно было бы обозвать это дискретный флаг по другому: "у пользователя крутой монитор?" (с возможными значениями "да" и "нет") - это было бы понятнее.

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

о которых некуда сообщить

У них же есть репозиторий на гитхабе, можно issue создать. Активность там присутствует. Они даже для не-программистов сделали формочку на своем сайте, чтобы делать все там. Так что сообщить можно. Но по поводу стабильности не могу не согласиться. Есть такое субъективное впечатление, что проект увяз в техническом долге и с годами глючит все сильнее и сильнее.

GIMP, конечно, не Photoshop и уж тем более, не Lightroom. И хотя мне не часто приходится заниматься обработкой фото, тем не менее, это боль

Думаю, что lightroom по функционалу лучше сравнивать с darktable. Некоторых людей почему-то с порога отпугивают его два режима работы (scene-referred и display-referred), но для обработки фотографий эта штука очень даже хороша. GIMP - это все же немного другой инструмент.

Я не понимаю, что это значит — «Защищено под NDA». Вы боитесь, что мы свяжемся с предыдущим работодателем и узнаем о том, чем же таким секретным вы там занимались?

Но с другой стороны — если человек письменно договорился не разглашать какие-то сведения о чем-то, а потом кому-то взял и все рассказал и показал, потому что «а что такого» — значит он «за свой базар не отвечает», деловая репутация для него ничего не стоит и он может любые договоренности покрутить на известном месте.

А вопросы типа «Кем вы меня видите, чем я могу быть полезен», пожалуйста, не задавайте никогда.

А мне вот вопрос очень нравится. Вскрывает реальность и позволяет перейти от красивых рассказов друг о друге к разговору по существу. Это из той же серии, что и вопрос «как вы видите идеального кандидата на эту должность?». Да он многих ставит в ступор, но при этом помогает узнать, какую работу реально нужно делать, и насколько можно применить или развить свои навыки в процессе.
Думаю никакими сервисами он не пользуется, он много лет говорил про все это, и там сейчас сарафанное радио работает лучше любого сервиса. И да, у него на сайте есть страничка с инструкцией о том, как принять участие в проекте:
TO PARTICIPATE
If you know a pair of doubles that can be put together for a photo or if you are one of them you can participate in the I'm not a look-alike! project by writing at the email address below.
The information needed is the following: ...
Можно и так сказать. Тут получается, что вопрос больше в удобстве. Издательство становится такой небольшой прослойкой, которая за пару тысяч рублей избавляет от необходимости со всем разбираться самостоятельно.
ее даже на полку в библиотеке не определят, т.к. там не будет кода библиотечного коллектора ББК, не будет кода ISBN

Есть вариант, когда ты приходишь в менее пафосное издательство со своей готовой книгой, выбираешь себе бумагу/тип обложки/тип печати/что там еще можно выбрать (это не так сложно, как кажется), платишь денежку, они доверстывают вторую и последнюю страницу, присваивают и УДК, и ББК, и авторский знак, и ISBN, и штрих-код сзади, и потом все печатают и отправляют законные 16 экземпляров в библиотеки. Получается, что книга есть, а вот этого длинного процесса общения с классическим издательством — нет. Единственное, что выдает отсутствие процесса — на последней странице вместо имен сотрудников издательства написано «в авторской редакции». Для каких-то изданий для небольшого круга читателей — это очень даже неплохой вариант. Это как бы самиздат — книга получается именно такая, какую ты сам хочешь, но как бы не совсем — все формальности там будут соблюдены.
Наверное стоило про это более подробно написать. Вы правы в том, что применить трансформацию можно. В теории. А на практике, когда мы ее применим к элементу внутри SVG и начнем его анимировать, все будет не так однозначно. Там будет появляться неопределенное поведение, когда на одном элементе это работает — а на другом нет, в одном браузере все работает — в другом отдельные анимации не работают, и.т.д. В первый раз у меня ушло очень много времени на то, чтобы методом тыка угадать, что после разнесения трансформаций по разным элементам все заработает. Я тогда так и не нашел упоминания в стандартах на тему того, какие там есть исключения. А потом это повторилось. И опять сидел, и не понимал, что с кодом не так. Опыт показывает, что у такого сложения трансформаций на одном элементе нет 100% надежности в анимациях. Там есть какой-то элемент случайности, когда оно может работает, а может — нет. Это в чем-то напоминает другую ситуацию из мира CSS-трансформаций с обычными HTML-элементами, когда трансформированный элемент именно во время анимации обрезается границами родительского элемента. Возможно вы сталкивались. Визуально кажется, что там появляется overflow: hidden у родителя, хотя его там нет, и не должно быть. Это не всегда случается. Но иногда бывает. Такие проблемы сложно воспроизвести на другой странице, это что-то очень ситуативное. И сложно предсказать, когда это случится, по стандартам ничего такого быть не должно. С этими трансформациями тоже речь идет о какой-то такой штуке, которая вроде как должна работать, а не деле — что-то может пойти не так, в зависимости от чего-то, что мы не знаем, и это не настолько очевидно, чтобы сразу сообразить, что сделать, чтобы все починилось.
Не уверен, насколько я понял вопрос, но в сети достаточно примеров с рисованием линий. Они сами по себе не очень большие, их библиотеками называть язык не поворачивается. Как пример:

Есть и полноценные SVG-редакторы, если нужно. Тут стоит вопрос уточнить, какие линии и как вы хотите рисовать.
Так я в первом абзаце и сказал, что здесь не будет разбора каждого атрибута — все это описано на том же MDN. Цель этой статьи — дать общее представление о том, что бывает, сориентировать человека, который только пришел в тему и не понимает, что вообще происходит, закрыть какие-то глобальные заблуждения по поводу SVG, которые я постоянно встречаю у коллег и студентов.
Я же говорю про свое дело, а не про вообще все. Кто-то в физике шарит, кто-то код пишет, кто-то дизайны рисует. Каждому свое. Например у нас был препод, у которого школьники в 7-8 классе занимались моделированием жидкостей и газов на C++ и OpenGL. К концу школы это будет 4-5 лет копания в теме, сильно за рамками стандартных учебников. У них может не хватает понимания процессов разработки и управления коллективом, но технических знаний явно больше, чем у ребят с курсов, не говоря уже о среднестатистических школьниках с уроками информатики. Мне некомфортно это признавать со своей колокольни, но я уверен, что некоторые из этих «школьников» в компьютерной графике шарят куда лучше меня. А в институте они начинают с самых основ программирования, и хорошо, если программа их догонит — они ведь тоже не на месте стоят. Здесь речь не идет про мегагениальность, здесь про процессы, про то, что если у увлеченного школьника есть возможность погрузиться во все заранее, то потом, попав в среду, рассчитанную на тех, кто идет в рамках условной школьной программы, он воспринимает все по-другому. И не во всякой среде он легко приживется. Счастливые истории бывают, но бывают и не очень.
олимпиады, экзамены, специальные классы, целые школы и ВУЗы для талантливых детей создают нездоровую образовательную атмосферу, в которой на раз-два вылетаешь из заведения

Есть еще обратная сторона вопроса, связанная с олимпиадно-лицейной атмосферой (по крайней мере там, где она еще остается). С малых лет в детей вкладывают идею, что важны личные достижения. Важно, что ты сам умеешь, чего ты сам добился, важет результат. В мировоззрении появляется стойкая концепция, что у тебя есть призвание, ты должет быть хорош в своем деле. Ты должен быть лучшим. Ну или по крайней мере очень хорошим специалистом. И ты потом идешь по этому пути много лет, учишься думать, собирать информацию, анализировать задачи, искать простые и красивые решения в рамках своей специальности. А тем временем ЗавУчи ставят отметки по физкультуре и ОБЖ с закрытыми глазами, прикрывают твои слабые места и вытягивают медалистов. Они не скажут об этом открыто, но для них физкультура тоже не важна. Им важны рейтинги школы, а их делают как раз отличники и олимпиадники. Тут как бы win-win. Им выгодно, чтобы ты был хорош в том, в чем ты хорош. К концу школы у тебя есть специализация и какой-то план на будущее, тогда как сверстники все еще выбирают специальность по принципу «у меня институт рядом с домом». Вроде бы все красиво идет по намеченному маршруту, мир полон возможностей, но есть нюанс.

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

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

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

Преподаватель читает пару лекций на свою тему и на смену ему приходит другой.

Вот это кстати важный момент. Когда один преподаватель на курс и когда они меняются постоянно — это совсем не одно и то же. Мне кажется, что если преподавателей много — там должен быть невероятно талантливый методист, чтобы не получился хаос.
Проблема №1. Кто не знает — тот прекрасно говорит, кто знает — тот двух слов связать не может. Кстати, легко понять — “рассказывает” преподаватель или “создает понимание”, т.е. действительно стремится создать новые нейронные связи в мозгах слушателей. Достаточно посчитать, как часто он запрашивает обратную связь от аудитории.

Выскажу непопулярное мнение, что это не совсем правда. Точнее есть нюанс, который нужно добавить к уравнению, как мне кажется. Мне не раз встречались преподаватели в разных учебных заведениях, про которых среди учащихся ходили слухи, что их тяжело слушать, и что они вообще редиски. Но на деле оказывалось, что эти преподаватели не то, чтобы говорить не умеют, они скорее ожидают, что их будут слушать. От перебиваний и тупых вопросов из аудитории они начинали грустить и запинаться, т.к. не могли еще проще объяснить вещи, которые и так считали очевидными, и, более того, не важными. А если им из-за этого еще и не хватало времени, чтобы охватить те темы, которые они считали важными — то начинали грустить еще сильнее. Но стоило аудитории заткнуться, и начать входить в ритм лекций, обдумывая сказанное между ними, вникая в идеи и подходы, которые там давались, а не мелкие детали, как выяснялось, что в этих лекциях такая кладезь опыта, которую ни в каком учебнике не получишь. По одной лекции это оценить сложно, т.к. система в голове еще не начала строиться, это длительный процесс. Там могут дни уйти только чтобы сформулировать, что именно тебе не понятно. Но когда ты сформулируешь — преподаватель тебе откроет новый взгляд на вещи. Но потом придется еще подумать, чтобы его осознать. И глядя назад спустя годы я могу сказать, что именно эти преподаватели дали мне системные представления о тех предметных областях, которые я с ними изучал. Сложно ли с ними было? Да. Нужно было много думать своей головой. Стоило ли оно того? — Однозначно. И сейчас, если нужно изучить какую-то тему, я стараюсь найти именно таких преподавателей, потому что базовые вещи я могу и сам загуглить, а вот этот опыт самому набирать — уйдут годы. А в нем самая ценность.
Итого вы написали тупо и логично, а дальше сидите меняете исключительно через полнотекстовый поиск по особым комментариям-меткам, которые вы расставили (расставили же? нет? упс) в тексте, чтоб в 100500 местах поменять один и тот же логически связанный параметр.

Если у меня будет задача иметь именно в коде CSS единые константы для всего интерфейса (грубо говоря набор констант из дизайн-системы) — я подумаю взять препроцессор и воспользоваться константами. Они решат эту конкретную задачу. У них будут человеко-понятные имена (на опечатки линтер проверит), будет сразу понятно, что это, откуда и зачем. Возможно от этого код даже станет еще более понятным, чем был, т.к. некоторые логические связи между компонентами станут явными. Так что пример как-то не в тему моего комментария.

CSS custom properties дают другой функционал, работающий в реальном времени, очевидно отличный от констант препроцессора. Иногда он нужен, иногда — нет. В моей практике почти никогда не нужен, т.к. состояния компонентов задаются классами для состояний компонента, которые формируются на этапе разработки, а именно рассчитывать какие-то значения в CSS на лету уже не нужно. Хотя могу представить интерфейс, где это может пригодиться. Опять же — вопрос в задачах.

работает (если взять нормальные инструменты и применять по назначению)

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

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

Специалист
Senior