Жуть какая и в статье и в комментариях :) Я уже больше 10 лет пользуюсь корпоративным тарифом у Билайна, на него же, на общий счёт, перевёл все телефоны ближайших родственников и ни разу не сталкивался ни с одной подобной ситуацией. Может это не везде так, а только в нашем регионе, но тем не менее ситуация именно такая, всё это мракобесие нас как-то обходит стороной.
PHPStorm — лучшее что я использовал для разработки, просто хочу воспользоваться возможностью и поблагодарить команду JetBrains за этот великолепный продукт!
Лично мне вообще продукция компании Apple в принципе не нравится, но цена здесь не определяющий фактор. В первую очередь не нравится de facto отсутствие выбора когда ты имеешь "свободу выбора" между macbook и macbook (iphone или iphone и т.п.) т.е. по факту "жри что дают, не нравится — твои проблемы". Ситуация с touch bar в этом плане весьма показательна по-моему. Да и в целом позициия компании "мы лучше знаем что вам нужно" мне претит.
К счастью есть другие экосистемы где выбор существенно выше и можно принимать решения самостоятельно. Я вот планирую отказаться от новой модели Dell Precision в пользу ThinkPad из-за того что они Home / End убрали с клавиатуры, хотя до этого перешёл на Dell из-за того что в ThinkPad в своё время (в районе T540) испохабили клавиатуру.
Ну IdeaPad — это consumer electronics, к ним и требования соответствующие. ThinkPad и другие "профессиональные" линейки ноутбуков других производителей существенно лучше по качеству, надёжности, upgradeability, ремонтопригодности и т.п., но и стоят, конечно, дороже.
Не знаю, не интересовался т.к. пользуюсь другими линейками ноутбуков. ThinkPad T500 живёт уже почти 10 лет без проблем, только батарею заменил, Dell Precision — 5 лет, никаких проблем.
В целом всё-таки по-моему надо помнить что Apple — не боги и не инопланетяне. Их продукция использует более-менее те же комплектующие (cpu, gpu, hdd/ssd, память и т.п.) что и остальные участники рынка, поэтому сделать из них что-то отличающееся от других кардинальным образом не получится. Различий было больше когда они использовали PowerPC, но сейчас совсем кастомных комплектующих внутри MacBook почти нет, это (по железу) просто ещё один ноутбук среди многих. Кто-то находит в нём что-то притягательное для себя, кто-то — наоборот отвратительное, но от этого он не становится принципиально другим. Детали конечно важны и во многом определяют продукт, здесь было бы странно утверждать обратное, но основа не отличается от другой продукции на рынке. Если батарея физически изнашивается за N лет — она износится вне зависимости от наклеенной на ней надписи. Если оптимальный температурный режим работы CPU/GPU не обеспечивается (а тепловое рассеяние никто не отменял) — то либо будет проседание по производительности либо проблемы с работой, и т.п. Можно оптимизировать отдельные параметры, особенно в контролируемой среде, но против физики не попрёшь :)
Интересная штука, подскажите пожалуйста — более толстый ноутбук там будет нормально держаться? У меня Dell Precision M4800, в раскрытом виде нижняя часть — 23мм толщиной
Ну три года в таком темпе — это не так и много. У меня первый отпуск был более чем через 10 лет после того как я серьёзно окунулся в учёбу и работу, а так формат "с утра до ночи без выходных" — это было обычное дело :) При этом временами я работал и на 3-4 работах, несколько раз в формате "сутки и более не вылезая из-за компа". Хотя, конечно у меня тогда семьи не было, это тоже немаловажный фактор.
Для меня этот режим не выглядит чем-то особенным, хороший формат для того чтобы эффективно расти в выбранной профессии. Особенно если супруга поддерживает.
Спасибо за комментарий. Примеров использования всяких сложных селекторов у меня на самом деле немало в разных проектах. Не факт, конечно, что все они функционально необходимы, но всякое бывает.
К примеру не раз сталкивался с задачей когда необходимо обеспечить отображение только полностью заполненных рядов элементов (галерея какая-нибудь, заказчик хочет чтобы было красиво). Разумеется с учётом responsive, когда количество элементов в строке может меняться — это решается скрытием части элементов. На CSS реализуется с использованием техники, описанной, например в этой статье, но в итоге там получаются селекторы вида (в SCSS) #{$selector}:first-child:nth-last-child(#{$in-html}) ~ #{$selector}:nth-last-child(#{$n}).
Ещё пример: в текущем проекте есть галерея у которой требуется различное поведение в зависимости от количества элементов в ней — где-то выводить thumbnails, где-то нет, что-то скрывать, да ещё и количество скрытых элементов показывать. Решается на чистом CSS, но в итоге там местами встречаются селекторы вида .gallery-image:not(:nth-child(1)):not(:nth-child(2)):not(:nth-child(3)):not(:nth-child(4)). Конечно в SCSS всё это намного компактнее и выглядит существенно проще, но результирующий код именно такой.
Также, раз уж есть возможность, хотел бы задать ещё один интересующий меня вопрос относительно БЭМ: на практике очень часто встречаются ситуации когда внешний вид и поведение блоков зависит от некоторого внешнего состояния (обычно описываемого через дополнительные классы в body). Банальный пример — темы. Да, я знаю что предлагается использовать модификаторы вида --theme-name, но если тема меняется динамически — придётся прописывать этот модификатор всем элементам в DOM дереве и не факт что он везде нужен. Или я неправ? Другой пример навскидку приходящий в голову: открытие модального окна или меню когда необходимо "заморозить" body который явно не является блоком. Как БЭМ предлагает работать с этими ситуациями?
Я в текущем проекте насчитал 15 @for и 17 @each не считая библиотечных функций с циклами.
Функционально — всё то же самое для чего используются циклы в обычных языках программирования: либо итерация по чему-либо (например конфигурации или списку элементов) либо генерация последовательности элементов с разными значениями. Элементарный пример с созданием стилей для заголовков разного уровня здесь где-то мельках в комментариях, практических вариантов применения сильно больше. Вот банальный пример, да простит меня заказчик :) Имена категорий поменяны, но в остальном реальный код
Вообще работа с maps в scss без циклов выглядела бы довольно сомнительной во многих случаях.
Или вот другая практическая задача из текущего проекта: необходимо было сделать возможность задания произвольных layout'ов для расположения контентных элементов. Всё прекрасно и легко решалось бы через CSS grids если бы не наш "любимый" IE11 в котором, как известно, реализована старая спецификация CSS grids. В ней, помимо всего прочего напрочь отсутствуют gaps между ячейками. Таким образом отступы между элементами нормально было не сделать, шаблоны grid'а там тоже не поддерживаются, синтаксис отличается.
В итоге просто был сделан map с описанием структуры grid'а и в цикле по нему генерируется нормальный CSS grid, а затем (с пересчётом номеров ячеек т.к. отступы для IE11 сделаны через дополнительные ячейки) из него же генерится отдельный синтаксис для IE11. С учётом поддержки в этом пересчёте col/rowspan'ов и ряда дополнительных функций, с учётом того что структура сеток меняется для разного типа устройств — получилось около 250 строк scss кода и немного конфигурации, объём же создаваемого CSS явно больше, да и писать (а тем более поддерживать его) вручную я бы точно не взялся.
Т.е. миксины, шаблоны, функции и прочую "ересь" тоже стоит запретить? :) Тогда мы придём к чистому CSS что в целом и неплохо, но многие вещи придётся делать руками вместо того чтобы автоматизировать.
Просмотрел комментарии, раз здесь столько специалистов по БЭМ — воспользуюсь случаем и задам вопрос :)
Современный CSS предоставляет множество очень гибких селекторов которые позволяют элегантно решать множество практических задач. Статья для примера из того что навскидку вспомнилось, хотя их, конечно, намного больше.
Собственно вопрос: как БЭМ, как методология относится к использованию всей этой мощи? Несколько моих попыток изучения БЭМ не дали однозначного ответа на этот вопрос, так что помощь более опытных специалистов была бы очень кстати, благо судя по комментариям — многие здесь неплохо разбираются в вопросе.
Ну почему же, выделение до начала / конца файла. А уж простой переход в начало / конец строки по Home / End при редактировании кода — постоянно. В общем лучше иметь отдельные стандартные клавиши. Я год назад не стал обновлять свой Precision именно из-за того что они Home / End перенесли на курсор, сейчас их вернули, но забрали Insert… Издеваются в общем...
Да ладно бы только тут, но ведь даже на новых Precision (даже на 17" модели!) убрали Insert и сделали мелкие кнопки стрелок и Page Up / Page Down…
DellEMCTeam может вы объясните логику? Вам реально не хватает места для одной кнопки? На 15" и 17" ноутбуке? Или в Dell реально нет никого кто пользовался бы, к примеру, Total Commander или продуктами JetBrains где Alt+Ins или даже Shift+Ctrl+Alt+Ins — вполне себе часто нажимаемые комбинации. Я уже молчу про тех кто всё ещё работает с clipboard'ом через Ctrl+Ins / Shift+Ins. А зачем кнопки стрелок делать меньше? Тоже места не хватает? Или какие-то исследования показывают что людям которые используют профессиональную технику удобнее использовать мелкие клавиши?
Сам пишу это сообщение с Precision M4800. В своё время выбрал его вместо ThinkPad именно из-за клавиатуры т.к. у Lenovo тогда был период безумных экспериментов с клавиатурами. Однако стоит признать что следующим моим ноутбуком скорее всего будет ThinkPad T580 именно из-за того что они вернули на место Insert, тогда как у Dell он впал в немилость. Хорошо хоть Home / End вернули на отдельные кнопки...
Для того чтобы сборщик собрал всё необходимое — как раз и нужны импорты, он же по ним строит дерево зависимостей. Иначе как он узнает порядок включения файлов (который имеет значение)?
Жуть какая и в статье и в комментариях :) Я уже больше 10 лет пользуюсь корпоративным тарифом у Билайна, на него же, на общий счёт, перевёл все телефоны ближайших родственников и ни разу не сталкивался ни с одной подобной ситуацией. Может это не везде так, а только в нашем регионе, но тем не менее ситуация именно такая, всё это мракобесие нас как-то обходит стороной.
Трипофобия?
Помнится на Speccy этот эффект (с практически идентичным алгоритмом реализации) был весьма популярен году в 1997-м или даже несколько раньше.
PHPStorm — лучшее что я использовал для разработки, просто хочу воспользоваться возможностью и поблагодарить команду JetBrains за этот великолепный продукт!
Однозначно не дороже и это радует :)
Лично мне вообще продукция компании Apple в принципе не нравится, но цена здесь не определяющий фактор. В первую очередь не нравится de facto отсутствие выбора когда ты имеешь "свободу выбора" между macbook и macbook (iphone или iphone и т.п.) т.е. по факту "жри что дают, не нравится — твои проблемы". Ситуация с touch bar в этом плане весьма показательна по-моему. Да и в целом позициия компании "мы лучше знаем что вам нужно" мне претит.
К счастью есть другие экосистемы где выбор существенно выше и можно принимать решения самостоятельно. Я вот планирую отказаться от новой модели Dell Precision в пользу ThinkPad из-за того что они Home / End убрали с клавиатуры, хотя до этого перешёл на Dell из-за того что в ThinkPad в своё время (в районе T540) испохабили клавиатуру.
Ну IdeaPad — это consumer electronics, к ним и требования соответствующие. ThinkPad и другие "профессиональные" линейки ноутбуков других производителей существенно лучше по качеству, надёжности, upgradeability, ремонтопригодности и т.п., но и стоят, конечно, дороже.
Не знаю, не интересовался т.к. пользуюсь другими линейками ноутбуков. ThinkPad T500 живёт уже почти 10 лет без проблем, только батарею заменил, Dell Precision — 5 лет, никаких проблем.
В целом всё-таки по-моему надо помнить что Apple — не боги и не инопланетяне. Их продукция использует более-менее те же комплектующие (cpu, gpu, hdd/ssd, память и т.п.) что и остальные участники рынка, поэтому сделать из них что-то отличающееся от других кардинальным образом не получится. Различий было больше когда они использовали PowerPC, но сейчас совсем кастомных комплектующих внутри MacBook почти нет, это (по железу) просто ещё один ноутбук среди многих. Кто-то находит в нём что-то притягательное для себя, кто-то — наоборот отвратительное, но от этого он не становится принципиально другим. Детали конечно важны и во многом определяют продукт, здесь было бы странно утверждать обратное, но основа не отличается от другой продукции на рынке. Если батарея физически изнашивается за N лет — она износится вне зависимости от наклеенной на ней надписи. Если оптимальный температурный режим работы CPU/GPU не обеспечивается (а тепловое рассеяние никто не отменял) — то либо будет проседание по производительности либо проблемы с работой, и т.п. Можно оптимизировать отдельные параметры, особенно в контролируемой среде, но против физики не попрёшь :)
На Dell XPS можно посмотреть к примеру, когда последний раз сравнивал — по спецификациям было весьма близко, да и внешне тоже.
Интересная штука, подскажите пожалуйста — более толстый ноутбук там будет нормально держаться? У меня Dell Precision M4800, в раскрытом виде нижняя часть — 23мм толщиной
Можно пойти дальше и заменить процесс написания текстов программ на что-то более эффективное :)
Ну три года в таком темпе — это не так и много. У меня первый отпуск был более чем через 10 лет после того как я серьёзно окунулся в учёбу и работу, а так формат "с утра до ночи без выходных" — это было обычное дело :) При этом временами я работал и на 3-4 работах, несколько раз в формате "сутки и более не вылезая из-за компа". Хотя, конечно у меня тогда семьи не было, это тоже немаловажный фактор.
Для меня этот режим не выглядит чем-то особенным, хороший формат для того чтобы эффективно расти в выбранной профессии. Особенно если супруга поддерживает.
Спасибо за комментарий. Примеров использования всяких сложных селекторов у меня на самом деле немало в разных проектах. Не факт, конечно, что все они функционально необходимы, но всякое бывает.
К примеру не раз сталкивался с задачей когда необходимо обеспечить отображение только полностью заполненных рядов элементов (галерея какая-нибудь, заказчик хочет чтобы было красиво). Разумеется с учётом responsive, когда количество элементов в строке может меняться — это решается скрытием части элементов. На CSS реализуется с использованием техники, описанной, например в этой статье, но в итоге там получаются селекторы вида (в SCSS)
#{$selector}:first-child:nth-last-child(#{$in-html}) ~ #{$selector}:nth-last-child(#{$n})
.Ещё пример: в текущем проекте есть галерея у которой требуется различное поведение в зависимости от количества элементов в ней — где-то выводить thumbnails, где-то нет, что-то скрывать, да ещё и количество скрытых элементов показывать. Решается на чистом CSS, но в итоге там местами встречаются селекторы вида
.gallery-image:not(:nth-child(1)):not(:nth-child(2)):not(:nth-child(3)):not(:nth-child(4))
. Конечно в SCSS всё это намного компактнее и выглядит существенно проще, но результирующий код именно такой.Также, раз уж есть возможность, хотел бы задать ещё один интересующий меня вопрос относительно БЭМ: на практике очень часто встречаются ситуации когда внешний вид и поведение блоков зависит от некоторого внешнего состояния (обычно описываемого через дополнительные классы в
body
). Банальный пример — темы. Да, я знаю что предлагается использовать модификаторы вида--theme-name
, но если тема меняется динамически — придётся прописывать этот модификатор всем элементам в DOM дереве и не факт что он везде нужен. Или я неправ? Другой пример навскидку приходящий в голову: открытие модального окна или меню когда необходимо "заморозить"body
который явно не является блоком. Как БЭМ предлагает работать с этими ситуациями?Я в текущем проекте насчитал 15
@for
и 17@each
не считая библиотечных функций с циклами.Функционально — всё то же самое для чего используются циклы в обычных языках программирования: либо итерация по чему-либо (например конфигурации или списку элементов) либо генерация последовательности элементов с разными значениями. Элементарный пример с созданием стилей для заголовков разного уровня здесь где-то мельках в комментариях, практических вариантов применения сильно больше. Вот банальный пример, да простит меня заказчик :) Имена категорий поменяны, но в остальном реальный код
Вообще работа с maps в scss без циклов выглядела бы довольно сомнительной во многих случаях.
Или вот другая практическая задача из текущего проекта: необходимо было сделать возможность задания произвольных layout'ов для расположения контентных элементов. Всё прекрасно и легко решалось бы через CSS grids если бы не наш "любимый" IE11 в котором, как известно, реализована старая спецификация CSS grids. В ней, помимо всего прочего напрочь отсутствуют gaps между ячейками. Таким образом отступы между элементами нормально было не сделать, шаблоны grid'а там тоже не поддерживаются, синтаксис отличается.
В итоге просто был сделан map с описанием структуры grid'а и в цикле по нему генерируется нормальный CSS grid, а затем (с пересчётом номеров ячеек т.к. отступы для IE11 сделаны через дополнительные ячейки) из него же генерится отдельный синтаксис для IE11. С учётом поддержки в этом пересчёте col/rowspan'ов и ряда дополнительных функций, с учётом того что структура сеток меняется для разного типа устройств — получилось около 250 строк scss кода и немного конфигурации, объём же создаваемого CSS явно больше, да и писать (а тем более поддерживать его) вручную я бы точно не взялся.
Т.е. миксины, шаблоны, функции и прочую "ересь" тоже стоит запретить? :) Тогда мы придём к чистому CSS что в целом и неплохо, но многие вещи придётся делать руками вместо того чтобы автоматизировать.
Просмотрел комментарии, раз здесь столько специалистов по БЭМ — воспользуюсь случаем и задам вопрос :)
Современный CSS предоставляет множество очень гибких селекторов которые позволяют элегантно решать множество практических задач. Статья для примера из того что навскидку вспомнилось, хотя их, конечно, намного больше.
Собственно вопрос: как БЭМ, как методология относится к использованию всей этой мощи? Несколько моих попыток изучения БЭМ не дали однозначного ответа на этот вопрос, так что помощь более опытных специалистов была бы очень кстати, благо судя по комментариям — многие здесь неплохо разбираются в вопросе.
А чем вас, простите, циклы в стилях не устраивают? :)
Ну почему же, выделение до начала / конца файла. А уж простой переход в начало / конец строки по
Home
/End
при редактировании кода — постоянно. В общем лучше иметь отдельные стандартные клавиши. Я год назад не стал обновлять свой Precision именно из-за того что ониHome
/End
перенесли на курсор, сейчас их вернули, но забралиInsert
… Издеваются в общем...Сочетание
Shift+Ctrl+End
смотрит на предложениеHome
/End
черезFn
с неодобрением :)Да ладно бы только тут, но ведь даже на новых Precision (даже на 17" модели!) убрали
Insert
и сделали мелкие кнопки стрелок иPage Up
/Page Down
…DellEMCTeam может вы объясните логику? Вам реально не хватает места для одной кнопки? На 15" и 17" ноутбуке? Или в Dell реально нет никого кто пользовался бы, к примеру, Total Commander или продуктами JetBrains где
Alt+Ins
или дажеShift+Ctrl+Alt+Ins
— вполне себе часто нажимаемые комбинации. Я уже молчу про тех кто всё ещё работает с clipboard'ом черезCtrl+Ins
/Shift+Ins
. А зачем кнопки стрелок делать меньше? Тоже места не хватает? Или какие-то исследования показывают что людям которые используют профессиональную технику удобнее использовать мелкие клавиши?Сам пишу это сообщение с Precision M4800. В своё время выбрал его вместо ThinkPad именно из-за клавиатуры т.к. у Lenovo тогда был период безумных экспериментов с клавиатурами. Однако стоит признать что следующим моим ноутбуком скорее всего будет ThinkPad T580 именно из-за того что они вернули на место
Insert
, тогда как у Dell он впал в немилость. Хорошо хотьHome
/End
вернули на отдельные кнопки...Для того чтобы сборщик собрал всё необходимое — как раз и нужны импорты, он же по ним строит дерево зависимостей. Иначе как он узнает порядок включения файлов (который имеет значение)?