Привет, Хабр! Представляю перевод статьи, Let me help you to understand and choose a state management solution for your app, которая попалась мне и заинтересовала в процессе изучения азов управления состоянием во Flutter. Буду рад услышать любую критику касательно данного перевода. В обратных кавычках (``) будут написаны мои личные мысли и пояснения.
User
Создание собственной цветовой палитры
4 min
44KTutorial
Translation
Адаптировано из нашей будущей книги «Рефакторинг UI»
Видели эти модные генераторы цветовой палитры? Когда выбираешь цвет, настраиваешь несколько параметров с музыкальными словечками типа «триада» или «четвёртый мажор» — и получаете пять идеальных цветов для своего веб-сайта?
Такой вычислительный и научный подход к выбору идеальной цветовой гаммы крайне соблазнителен, но не очень полезен.
Видели эти модные генераторы цветовой палитры? Когда выбираешь цвет, настраиваешь несколько параметров с музыкальными словечками типа «триада» или «четвёртый мажор» — и получаете пять идеальных цветов для своего веб-сайта?
Такой вычислительный и научный подход к выбору идеальной цветовой гаммы крайне соблазнителен, но не очень полезен.
+90
Руководство по ассемблеру x86 для начинающих
16 min
154KTranslation
В наше время редко возникает необходимость писать на чистом ассемблере, но я определённо рекомендую это всем, кто интересуется программированием. Вы увидите вещи под иным углом, а навыки пригодятся при отладке кода на других языках.
В этой статье мы напишем с нуля калькулятор обратной польской записи (RPN) на чистом ассемблере x86. Когда закончим, то сможем использовать его так:
Весь код для статьи здесь. Он обильно закомментирован и может служить учебным материалом для тех, кто уже знает ассемблер.
Начнём с написания базовой программы Hello world! для проверки настроек среды. Затем перейдём к системным вызовам, стеку вызовов, стековым кадрам и соглашению о вызовах x86. Потом для практики напишем некоторые базовые функции на ассемблере x86 — и начнём писать калькулятор RPN.
В этой статье мы напишем с нуля калькулятор обратной польской записи (RPN) на чистом ассемблере x86. Когда закончим, то сможем использовать его так:
$ ./calc "32+6*" # "(3+2)*6" в инфиксной нотации
30
Весь код для статьи здесь. Он обильно закомментирован и может служить учебным материалом для тех, кто уже знает ассемблер.
Начнём с написания базовой программы Hello world! для проверки настроек среды. Затем перейдём к системным вызовам, стеку вызовов, стековым кадрам и соглашению о вызовах x86. Потом для практики напишем некоторые базовые функции на ассемблере x86 — и начнём писать калькулятор RPN.
+45
Оптимизация графики для веба: самое важное
54 min
96KTranslation
Автор электронной книги — Эдди Османи, один из руководителей разработки Google Chrome
Оптимизацию графики обязательно надо автоматизировать. О ней легко забыть, рекомендации меняются, да и сам контент может легко проскользнуть мимо конвейера сборки. Для автоматизации при сборке используйте imagemin или libvips. Есть и много других.
Большинство CDN (например, Akamai) и сторонних решений вроде Cloudinary, imgix, Fastly Image Optimizer, Instart Logic SmartVision и ImageOptim API предлагают комплексные автоматизированные решения для оптимизации изображений.
На чтение статей и настройку конфигурации вы потратите время, которое дороже оплаты их услуг (у Cloudinary есть бесплатный тариф). Но если всё-таки не хотите отдавать работу на аутсорсинг по соображениям стоимости или из-за дополнительной latency, то выбирайте приведённые выше варианты с открытым исходным кодом. Проекты Imageflow или Thumbor предлагают альтернативу на собственном хостинге.
tl;dr
Cжатие изображений всегда должно быть автоматизировано
Оптимизацию графики обязательно надо автоматизировать. О ней легко забыть, рекомендации меняются, да и сам контент может легко проскользнуть мимо конвейера сборки. Для автоматизации при сборке используйте imagemin или libvips. Есть и много других.
Большинство CDN (например, Akamai) и сторонних решений вроде Cloudinary, imgix, Fastly Image Optimizer, Instart Logic SmartVision и ImageOptim API предлагают комплексные автоматизированные решения для оптимизации изображений.
На чтение статей и настройку конфигурации вы потратите время, которое дороже оплаты их услуг (у Cloudinary есть бесплатный тариф). Но если всё-таки не хотите отдавать работу на аутсорсинг по соображениям стоимости или из-за дополнительной latency, то выбирайте приведённые выше варианты с открытым исходным кодом. Проекты Imageflow или Thumbor предлагают альтернативу на собственном хостинге.
+61
Не делайте этого в продакшне
4 min
12KTranslation
Примерно в марте 2017 года меня попросили сделать код-ревью продукта перед запуском. У той компании были проблемы с утечками памяти, спонтанными сбоями, медленной загрузкой, скачками потребления CPU, а релиз был запланирован через несколько недель. Возможно, вы уже слышали эту историю — не от меня и не об этой компании. Она на удивление типичная.
Мы собрались на выходных и начали вместе просматривать код. Примерно через полдня обнаружился источник известных проблем, а ещё полдня заняло написать документ на исправление для разработчиков. Запуск удался, но история заставила меня задуматься: как продукт дошёл до такого состояния.
Когда я общался с разработчиками, они казались умными людьми. Единственной очевидной проблемой было отсутствие опыта. Я сталкивался с этим раньше. Это распространённое и вполне нормальное явление. Но в этом случае наблюдался гнусный изъян: опыта не хватало всем разработчикам.
Отдел разработки создали недавно, а команду нанимали в отсутствие технического директора. Даже технарю сложно проверить другого программиста — я даже не могу представить себе проверку без технических знаний. Они наняли первого разработчика, он проверил второго разработчика — и так далее, пока не сформировалась команда.
Мы собрались на выходных и начали вместе просматривать код. Примерно через полдня обнаружился источник известных проблем, а ещё полдня заняло написать документ на исправление для разработчиков. Запуск удался, но история заставила меня задуматься: как продукт дошёл до такого состояния.
Когда я общался с разработчиками, они казались умными людьми. Единственной очевидной проблемой было отсутствие опыта. Я сталкивался с этим раньше. Это распространённое и вполне нормальное явление. Но в этом случае наблюдался гнусный изъян: опыта не хватало всем разработчикам.
Отдел разработки создали недавно, а команду нанимали в отсутствие технического директора. Даже технарю сложно проверить другого программиста — я даже не могу представить себе проверку без технических знаний. Они наняли первого разработчика, он проверил второго разработчика — и так далее, пока не сформировалась команда.
+11
Кастомный подход для нормализации и сброса стилей (custom-reset.css)
9 min
28KTutorial
Здесь я поделюсь своими наработками для нормализации и сброса стилей.
За несколько лет у меня сформировался небольшой файл, за основу которого, изначально, был взят нормалайз.
Почему нормалайз, а не ресет. Он заточен именно под кросбраузерность, что очень важно. Но в чистом виде он меня вообще не устраивал, различные отступы, бордеры и т. д. только мешали, потому я немного подогнал его под свои потребности, поудаляв то, что мне было не нужно.
Со временем файл разрастался, лишнее из нормалайза удалялось, недостающее добавлялось.
Основной целью его создания было максимально подготовить основу для любого проэкта, что по-моему получилось, даже очень удачно. Файл получился довольно универсальный, но все же перед подготовкой проэкта в него нужно заглядывать и возможно что-то коректировать.
Надеюсь вы подчеркнете для себя что-то полезное, здесь вы можете ознакомиться с ним.
custom-reset.css
+19
Information
- Rating
- Does not participate
- Registered
- Activity