Pull to refresh
7
0
Send message

Управление состоянием приложения в Flutter

Reading time5 min
Views20K
Привет, Хабр! Представляю перевод статьи, Let me help you to understand and choose a state management solution for your app, которая попалась мне и заинтересовала в процессе изучения азов управления состоянием во Flutter. Буду рад услышать любую критику касательно данного перевода. В обратных кавычках (``) будут написаны мои личные мысли и пояснения.

Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments4

Создание собственной цветовой палитры

Reading time4 min
Views44K
Адаптировано из нашей будущей книги «Рефакторинг UI»

Видели эти модные генераторы цветовой палитры? Когда выбираешь цвет, настраиваешь несколько параметров с музыкальными словечками типа «триада» или «четвёртый мажор» — и получаете пять идеальных цветов для своего веб-сайта?



Такой вычислительный и научный подход к выбору идеальной цветовой гаммы крайне соблазнителен, но не очень полезен.
Читать дальше →
Total votes 94: ↑92 and ↓2+90
Comments12

Руководство по ассемблеру x86 для начинающих

Reading time16 min
Views146K
В наше время редко возникает необходимость писать на чистом ассемблере, но я определённо рекомендую это всем, кто интересуется программированием. Вы увидите вещи под иным углом, а навыки пригодятся при отладке кода на других языках.

В этой статье мы напишем с нуля калькулятор обратной польской записи (RPN) на чистом ассемблере x86. Когда закончим, то сможем использовать его так:

$ ./calc "32+6*" # "(3+2)*6" в инфиксной нотации
30

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

Начнём с написания базовой программы Hello world! для проверки настроек среды. Затем перейдём к системным вызовам, стеку вызовов, стековым кадрам и соглашению о вызовах x86. Потом для практики напишем некоторые базовые функции на ассемблере x86 — и начнём писать калькулятор RPN.
Читать дальше →
Total votes 51: ↑48 and ↓3+45
Comments26

Оптимизация графики для веба: самое важное

Reading time54 min
Views94K
Автор электронной книги — Эдди Османи, один из руководителей разработки Google Chrome

tl;dr


Cжатие изображений всегда должно быть автоматизировано


Оптимизацию графики обязательно надо автоматизировать. О ней легко забыть, рекомендации меняются, да и сам контент может легко проскользнуть мимо конвейера сборки. Для автоматизации при сборке используйте imagemin или libvips. Есть и много других.

Большинство CDN (например, Akamai) и сторонних решений вроде Cloudinary, imgix, Fastly Image Optimizer, Instart Logic SmartVision и ImageOptim API предлагают комплексные автоматизированные решения для оптимизации изображений.

На чтение статей и настройку конфигурации вы потратите время, которое дороже оплаты их услуг (у Cloudinary есть бесплатный тариф). Но если всё-таки не хотите отдавать работу на аутсорсинг по соображениям стоимости или из-за дополнительной latency, то выбирайте приведённые выше варианты с открытым исходным кодом. Проекты Imageflow или Thumbor предлагают альтернативу на собственном хостинге.
Читать дальше →
Total votes 61: ↑61 and ↓0+61
Comments31

Не делайте этого в продакшне

Reading time4 min
Views12K
Примерно в марте 2017 года меня попросили сделать код-ревью продукта перед запуском. У той компании были проблемы с утечками памяти, спонтанными сбоями, медленной загрузкой, скачками потребления CPU, а релиз был запланирован через несколько недель. Возможно, вы уже слышали эту историю — не от меня и не об этой компании. Она на удивление типичная.

Мы собрались на выходных и начали вместе просматривать код. Примерно через полдня обнаружился источник известных проблем, а ещё полдня заняло написать документ на исправление для разработчиков. Запуск удался, но история заставила меня задуматься: как продукт дошёл до такого состояния.

Когда я общался с разработчиками, они казались умными людьми. Единственной очевидной проблемой было отсутствие опыта. Я сталкивался с этим раньше. Это распространённое и вполне нормальное явление. Но в этом случае наблюдался гнусный изъян: опыта не хватало всем разработчикам.

Отдел разработки создали недавно, а команду нанимали в отсутствие технического директора. Даже технарю сложно проверить другого программиста — я даже не могу представить себе проверку без технических знаний. Они наняли первого разработчика, он проверил второго разработчика — и так далее, пока не сформировалась команда.
Читать дальше →
Total votes 31: ↑21 and ↓10+11
Comments19

Кастомный подход для нормализации и сброса стилей (custom-reset.css)

Reading time9 min
Views27K


Здесь я поделюсь своими наработками для нормализации и сброса стилей.
За несколько лет у меня сформировался небольшой файл, за основу которого, изначально, был взят нормалайз.

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

Надеюсь вы подчеркнете для себя что-то полезное, здесь вы можете ознакомиться с ним.
custom-reset.css
Читать дальше →
Total votes 27: ↑23 and ↓4+19
Comments34

Information

Rating
Does not participate
Registered
Activity