Как стать автором
Обновить
10
0

Моя литера Т стремится к равнозначности линий

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

Dart 2. Асинхронное программирование: потоки данных

Время на прочтение8 мин
Количество просмотров11K

Асинхронное программирование: потоки данных


Содержание



Что важно:


  • Потоки обеспечивают асинхронную последовательность данных.
  • Последовательности данных содержат пользовательские события и данные, считываемые из файлов.
  • Поток можно обработать с помощью await for или listen() из Stream API.
  • Потоки предоставляют способ реагирования на ошибки.
  • Существует два типа потоков: потоки-подписки (single subscription) и широковещательные (broadcast).
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии4

Dart 2. Асинхронное программирование: futures

Время на прочтение9 мин
Количество просмотров27K

Асинхронное программирование: futures


Содержание



Что важно:


  • Код в Dart работает в одном треде (прим. thread — поток) выполнения.
  • Из-за кода, который долго занимает (блокирует) тред выполнения, программа может зависнуть.
  • Объекты Future (futures) представляют результаты асинхронных операций — обработки или ввода-вывода, которые будут завершены позже.
  • Чтобы приостановить выполнение до завершения в будущем, используйте await в асинхронной функции (или then() при использовании Future API).
  • Чтобы поймать ошибки, используйте в асинхронной функции конструкцию try-catch (или catchError() при использовании Future API).
  • Для одновременной обработки создайте изолят (или worker для веб-приложения).
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии1

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

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

Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии4

Про Flutter, кратко: Основы

Время на прочтение12 мин
Количество просмотров331K

Про Flutter, кратко: Основы


После доклада Юры Лучанинова, я решил для себя попробовать Flutter. Чтобы мозг размять, и чтобы было о чем похоливарить с мужиками на кухне. Дело пошло. Я начал смотреть, потом читать, потом писать. И вроде все получается, приложения запускаются, и то что объясняют — понятно, все просто. Но не без “но” — объясняют не все. А поскольку платформа, ЯП, подходы и даже предметная область для меня новые, то подобное вызывает раздражение, ведь у тебя “не запускается”, а ты даже не знаешь что гуглить: Dart/Flutter/Window/Screen/Route/Widget?


Перечитывать всю документацию Dart, Flutter и его виджетов конечно же не хотелось, ведь времени у меня не много, и мне лишь хотелось присмотреться к Flutter. Вот было бы здорово, если бы был небольшой гайд, в котором описано все нужное, но не больше, для понимая и написания не слишком сложных приложений на Flutter!

Читать дальше →
Всего голосов 40: ↑37 и ↓3+34
Комментарии53

Порхающие* велосипеды. Что делать с сохранением состояния во Flutter?

Время на прочтение9 мин
Количество просмотров11K

(*одно из значений слова flutter — порхать)


Разбираемся, есть ли жизнь сохранение состояния во Flutter-приложении. Что будет, если ОС решит его перезапустить. Куда денется пользовательский ввод и навигация, и как с этим справляться.


Дисклеймеры:


  • для понимания нужно иметь стартовые знания о Flutter;
  • рассуждаю с точки зрения Android, про iOS — это не ко мне;
  • не являюсь специалистом по Flutter/Dart, подхожу с позиции новичка;
  • в некоторых местах опускаю второстепенные моменты (например, реализации вспомогательных функций), найти недостающее можно в полном коде проекта.
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии12

Асинхронное программирование в Dart (часть 1)

Время на прочтение3 мин
Количество просмотров16K
image

В данной серии статей я не буду касаться азов программирования на самом Dart, а коснусь вопросов асинхронности в Dart.

Библиотеки Dart полны функций, которые возвращают Future или Stream объекты. Эти функции асинхронны.

В документации читаем:

Future — подобен обещанию когда-то в будущем предоставить результат.
Stream — это способ получить последовательность значений, таких как, например, последовательность событий (поток).

Future и Stream входят в библиотеку dart:async, которую можно использовать как в скриптах веб-приложений, так и в скриптах, запускаемых из консоли.

Импортируем библиотеку так:

import 'dart:async';

Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии12

Нейропластичность: как развивать свой мозг после 25 лет

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров32K

Многие верят, что с возрастом мы перестаем развиваться, потому что наш мозг заканчивает прогрессировать примерно в 25 лет. Этот миф в обществе существует уже очень долго. Однако в современном мире всё меняется стремительно: профессии устаревают и, чтобы оставаться востребованными, нам нужно постоянно обучаться.

Но почему кто-то обучается быстрее других? Как удается некоторым оттачивать своё мастерство до невероятного уровня? И как люди, ставшие инвалидами, не просто продолжают вести полноценную жизнь, а даже становятся настоящими киборгами?

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

Читать далее
Всего голосов 84: ↑78 и ↓6+94
Комментарии23

Люди не понимают ООП

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров116K

«ООП для меня означает лишь обмен сообщениями, локальные ограничения и защиту, сокрытие состояния процесса и крайне позднее привязывание», — Алан Кэй (человек, придумавший термин «объектно-ориентированное программирование»)1

Похоже, многим не нравится объектно-ориентированное программирование. Первое, что приходит в голову, когда слышишь эту трёхбуквенную аббревиатуру — это пример с автомобилем, наследование, геттеры, сеттеры и ObjectFactoryFactorySingleton.

Мне это всегда казалось довольно странным. Мне не только нравится ООП, я ещё и считаю, что часто это лучший/наиболее очевидный способ моделирования задачи. И ниже я расскажу, почему.
Читать дальше →
Всего голосов 126: ↑119 и ↓7+140
Комментарии458

Реализация чата на Flutter при помощи вебсокетов

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров4.1K

Всем привет, на связи PurplePlane! В этой статья мы хотели бы рассмотреть реализацию простого чата на языке Dart, используя пртокол websocket.

Рассмотрим пример использования вебсокета при реализации простого чата с помощью библиотеки web_socket_channel.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Работаем с Git: трудовые будни

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров32K

Прошлая статья «Работаем с Git: первые шаги в GitHub» была посвящена установке, настройке Git и классическим операциям из набора для новичков GitHub. А теперь перейдём к практике и рассмотрим «горячие» сценарии, которые делают трудовые будни куда веселее. Или не очень.

Читать далее
Всего голосов 19: ↑16 и ↓3+16
Комментарии18

Как шутят математики. Решение первого шифра Олама

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров15K

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

Итак, Лос-Аламос объединил одной целью многих видных учёных того времени. Одним из них был замечательный учёный Ричард Фейнман. Разумеется, основным предметом его интереса всегда была физика, но помимо потрясающих познаний в ней, профессор Фейнман отличался и другими талантами. Из его автобиографии (всем, кто ещё не читал, настоятельно рекомендую) известен факт, что профессор особенно гордился своими реактивными скилами решения головоломок и математических задач.

Читать далее
Всего голосов 26: ↑26 и ↓0+26
Комментарии16

Программисты всё вымирают и вымирают

Уровень сложностиПростой
Время на прочтение18 мин
Количество просмотров127K

Да вымереть не могут.

Откуда это всё пошло? Чем так условные «программисты» не угодили? И почему именно программисты?

Читать далее
Всего голосов 335: ↑323 и ↓12+373
Комментарии583

Система статусов для проектов в Obsidian

Уровень сложностиСредний
Время на прочтение25 мин
Количество просмотров14K

Статья о том, как внедрить и как продуктивно использовать систему статусов в персональных проектах.

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

Obsidian и проекты – это мощь!
Всего голосов 15: ↑15 и ↓0+15
Комментарии12

Это один из лучших подходов к изучению английского, что я видел за последние годы — коллокации

Время на прочтение7 мин
Количество просмотров120K

Значение слова – это его использование в языке
Людвиг Витгенштейн (сурс) 

Что это вообще за магия такая? Коллокация – это просто пара или группа слов, которые часто возникают вместе. Такие комбинации звучат естественно для носителей языка, однако, тем, у кого язык не родной, бывает сложно догадаться до этой естественной комбинации.

А что если я скажу, что они улучшают сразу и вашу способность органично говорить, и канонично писать, и что совсем удивительно воспринимать английский от носителей языка на слух? И главный вопрос, который меня мучает – почему я узнал об этой технике изучения языка только полгода назад? (Рассказ об этой подготовке здесь.) 

Внимательно посмотрите на пример с картинки. Как только собеседник начал(а) произносить “pitch d…” ваш мозг, зная нужные коллокации, подскажет, что там должно быть “dark”. Даже если вы плохо расслышали эту часть. Это один из механизмов, через который коллокации позволяют лучше воспринимать язык на слух.

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

Disclaimer: если у вас филологическое образование, то вам наверное будет смешно, что кто-то открыл для себя коллокации и их использование для изучения иностранного языка в 202N году, а вот если вы, как и я, когда-то читали “randomize” как “рандомизе”, то возможно эта статья будет вам полезной.

Добро пожаловать под кат
Всего голосов 72: ↑71 и ↓1+95
Комментарии116

Отслеживание ради анализа гипотез

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров4.4K

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

По умолчанию в статье я считаю, что вы являетесь пользователем Obsidian. Однако это не является чем-то ключевым – идеи из статьи вы сможете довольно легко реализовать и в иных инструментах.

Организовать слежку за собой
Всего голосов 6: ↑5 и ↓1+6
Комментарии9

Как я с 0 поднял свой уровень английского до B2 и подтвердил этот уровень на экзамене IELTS Academic

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров157K

Привет, Хабр!

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

Начнем с бекграунда и причин.

Я – инженер машиностроитель (мой профиль – торцевые уплотнения вращающихся валов). Я начал работать в своей отрасли сразу после бакалавра, параллельно заканчивая магистратуру, и как только я начал работать, я стал стараться впитать как можно больше теоретических знаний по моей специальности из академических источников. Достаточно бысто я понял, что последняя серьезная книга по моей специальности на русском языке была написана в 1978 году. И спустя больше чем 40 лет технологии сильно поменялись, а вот их описание на русском языке отсутствовает. Зато я нашел на reddit людей работающих в штатах в моей же отрасли. Они мне насоветовали кучу классной литературы. Разумееется, она вся на английском, и русского перевода не имеет.

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

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

Читать далее
Всего голосов 150: ↑146 и ↓4+165
Комментарии220

Почему B-деревья быстрые?

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров48K

B-дерево — это структура, помогающая выполнять поиск в больших объёмах данных. Она была изобретена более сорока лет назад, однако по-прежнему используется в большинстве современных баз данных. Хотя существуют и более новые структуры индексов, например, LSM-деревья, B-дерево пока никто не победил в обработке большинства запросов баз данных.

После прочтения этого поста вы будете знать, как B-дерево упорядочивает данные и выполняет поисковые запросы.

Читать далее
Всего голосов 151: ↑150 и ↓1+183
Комментарии13

Трудности перевода: как научиться понимать то, что нарисовал дизайнер

Время на прочтение6 мин
Количество просмотров4.8K

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

Если у вас только один фронтенд, все еще не так плохо. Однако, когда их количество достигает 10, микроошибки в компонентах могут отнимать до 200-300 человеко-часов в год. С учетом современных зарплат, это значительная сумма. А помимо фронтенда у нас также есть бекенд, девопс и тестирование, что также требует значительных затрат. Давайте вместе разберемся, как можно справиться с этой проблемой.

Читать далее
Всего голосов 12: ↑11 и ↓1+12
Комментарии3

System Design 101

Уровень сложностиСредний
Время на прочтение42 мин
Количество просмотров83K



О сложных системах простыми словами.


В шпаргалке на высоком уровне рассматриваются такие вещи, как протоколы коммуникации, DevOps, CI/CD, архитектурные паттерны, базы данных, кэширование, микросервисы (и монолиты), платежные системы, Git, облачные сервисы etc. Особую ценность представляют диаграммы — рекомендую уделить им пристальное внимание. Полагаю, шпаргалка будет интересна всем, кто хоть как-то связан с разработкой программного обеспечения и, прежде всего, веб-приложений. Буду признателен за помощь в уточнении/исправлении понятий, терминологии, логики/алгоритмов работы систем (в рамках того, что по этому поводу содержится в оригинале), а также в обнаружении очепяток.


Выражаю благодарность Анне Неустроевой за помощь в редактировании материала.


Возможно, немного другой формат шпаргалки покажется вам более удобным.


System Design (сборник на английском языке).

Читать дальше →
Всего голосов 79: ↑79 и ↓0+79
Комментарии17

Архитектура Android. Понятно и подробно

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров25K

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

Читать правила
Всего голосов 21: ↑18 и ↓3+20
Комментарии48

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность