Pull to refresh
-2
0

Программист

Send message

Небезопасная многопоточность или Race Condition

Level of difficultyMedium
Reading time13 min
Views17K

Как я и люблю - мы начнем с условных основ и будем двигаться постепенно всё глубже и глубже. Ближе к концу разберём, как эксплуатировать. При написании статьи было использовано много разных источников. К чему это? А к тому, что я начну со слов, которые нашел в статье у Бума - про него будет дальше. Что ж, приятного чтения.

Пора познавать дзен
Total votes 3: ↑2 and ↓1+1
Comments0

Об одной тестовой задаче

Level of difficultyMedium
Reading time5 min
Views9.3K

Недавно Youtube (*сайт, нарушающий закон РФ) порекомендовал мне любопытный с различных сторон видеоролик. В нём рассматривалась задача, которую, по словам автора, задают на собеседовании при приёме на работу в Apple.

Читать далее
Total votes 8: ↑6 and ↓2+7
Comments147

21 фича современного C++, которые вам обязательно пригодятся

Reading time10 min
Views34K

Итак, судьба снова свела вас с C++, и вы поражены его возможностями с точки зрения производительности, удобства и выразительности кода. Но вот незадача: вы теряетесь в этом многообразии замечательных новых фич и, как следствие, затрудняетесь сходу определить, что из этого всего вам действительно стоило бы взять на вооружение в своей повседневной работе по написанию кода. Не стоит расстраиваться, в этой статье вашему вниманию будут представлены 21 новая фича современного C++, которые помогут сделать ваш проект лучше, а работу над ним легче.

Сообщество C++ дополняет стандарт чаще, чем Apple выпускает новые iPhone. Благодаря этому C++ теперь больше похож на большого слона, а съесть целого слона за один присест невозможно. Вот почему я решил написать эту статью, чтобы дать вашему путешествию по современному C++ своего рода отправную точку. Моя целевая аудитория здесь — люди, которые переходят со старого (т.е. 98/03) С++ на современный (т.е. 2011 и далее) С++.

Я отобрал ряд фич современного C++ и постарался объяснить их на лаконичных примерах, чтобы вы научились определять места, где их можно использовать.

Читать далее
Total votes 52: ↑47 and ↓5+53
Comments160

Dart 3 на практике: что принесёт нам мажорное обновление языка

Level of difficultyMedium
Reading time13 min
Views22K

Dart 3 – самое мажорное обновление языка со времён Null Safety: он изменит многое в том, как мы пишем код и какие библиотеки используем. Рассказываем, как новые фичи помогут вам на практике и как от этого изменится способ взаимодействия с языком.

Читать далее
Total votes 19: ↑19 and ↓0+19
Comments25

32 полезных Rust крейта, о которых вы могли не знать

Level of difficultyEasy
Reading time19 min
Views8.2K

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

Читать далее
Total votes 16: ↑16 and ↓0+16
Comments16

Sass: разрабатываем дизайн-систему

Reading time9 min
Views13K


Привет, друзья!


В данной статье мы разработаем простую, но относительно полноценную дизайн-систему для веб-приложения средствами Sass.


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


При разработке дизайн-системы в части терминологии, названий, значений переменных и т.п. я буду ориентироваться, в основном, на Bootstrap и немного на Tailwind.


Код проекта на GitHub.


Если вам это интересно, прошу под кат.

Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments9

Где хранить секретные файлы на случай БП

Reading time7 min
Views40K


Всю информацию человека можно разделить по степени важности, примерно так:

  • системные бэкапы (важность 1/10);
  • текущие рабочие файлы (3);
  • личный архив: фотографии, видео (6);
  • копии бумажных документов (8);
  • секреты: ключи, пароли, кошельки (10/10).

Терять файлы всегда неприятно. Поэтому мы делаем резервные копии. Но степень параноидальности усилий по защите информации зависит от важности. Есть категория файлов, которую нельзя терять ни при каких обстоятельствах, даже в случае БП. Это наши главные секреты, то есть ключи, пароли и кошельки.
Читать дальше →
Total votes 29: ↑27 and ↓2+37
Comments13

Sliver во Flutter, или как работает скролл

Reading time11 min
Views19K

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

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

Читать далее
Total votes 8: ↑7 and ↓1+6
Comments4

Байт, байт, кладбище, юзер, или Смерть в цифровую эпоху

Reading time7 min
Views6.1K

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

По данным Good Trust — американского сервиса по управлению цифровыми архивами — на одном  только Facebook насчитывается около 30 миллионов аккаунтов умерших людей. По мере роста цифрового имущества (аккаунты, подписки, домены, фотоархивы, электронные кошельки), проблема их наследования становится все более важной: на эту тему выпускают книги, а СМИ пишут подробные инструкции, как подготовиться к загробной цифровой жизни.

Во многих компаниях есть политики, касающееся смерти пользователя. Вслед за Google и Facebook, в конце 2021 года Apple запустила функцию Digital Legacy. Пользователь может назначить до пяти «контактов-наследников», которые смогут унаследовать его Apple ID и все данные в случае смерти. Наследникам нужно будет принять приглашение и предоставить доказательства, и как только они будут одобрены, у них будет полный доступ к паролям, фотографиям, документам, сообщениям и прочим данным Apple ID.

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

Читать далее
Total votes 13: ↑12 and ↓1+15
Comments9

Секреты запуска Flutter в production. Создаем IT-верфи

Reading time30 min
Views17K


Про нас


Привет! Мы Даниил Левицкий и Дмитрий Дронов, мобильные разработчики компании ATI.SU — крупнейшей в России и СНГ Бирже грузоперевозок. Хотим поделиться с вами своим видением разработки приложений на Flutter.


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


Ссылка на шаблон и детали реализации под катом.

Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments21

1 CPU 1 Гб – а я хочу мониторинг, как у больших дядей

Reading time14 min
Views56K


Я обожаю читать на хабре статьи про то, как устроены системы больших интернет-компаний. Кластеры SQL-серверов, монг и редисов. Тут у нас кластер ELK собирает трейсинг, там – сборка логов, здесь балансер выдает входящим запросам traceID и можно отслеживать, как запрос ходит по всем нашим микросервисам. Класс. Но, допустим, у вас совсем маленький проект и вы можете себе позволить лишь VPS минимальной конфигурации. Реально ли на ней сделать мониторинг не хуже, чем у больших проектов? Я решил – надо попробовать.
Читать дальше →
Total votes 64: ↑62 and ↓2+78
Comments82

Базовая структура HTML-документа с объяснением каждой строчки

Reading time9 min
Views115K
<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width">

  <title>Unique page title - My Site</title>

  <script type="module">
    document.documentElement.classList.remove('no-js');
    document.documentElement.classList.add('js');
  </script>

  <link rel="stylesheet" href="/assets/css/styles.css">
  <link rel="stylesheet" href="/assets/css/print.css" media="print">

  <meta name="description" content="Page description">
  <meta property="og:title" content="Unique page title - My Site">
  <meta property="og:description" content="Page description">
  <meta property="og:image" content="https://www.mywebsite.com/image.jpg">
  <meta property="og:image:alt" content="Image description">
  <meta property="og:locale" content="en_GB">
  <meta property="og:type" content="website">
  <meta name="twitter:card" content="summary_large_image">
  <meta property="og:url" content="https://www.mywebsite.com/page">
  <link rel="canonical" href="https://www.mywebsite.com/page">

  <link rel="icon" href="/favicon.ico">
  <link rel="icon" href="/favicon.svg" type="image/svg+xml">
  <link rel="apple-touch-icon" href="/apple-touch-icon.png">
  <link rel="manifest" href="/my.webmanifest">
  <meta name="theme-color" content="#FF00FF">
</head>

<body>
  <!-- Content -->
  <script src="/assets/js/xy-polyfill.js" nomodule></script>
  <script src="/assets/js/script.js" type="module"></script>
</body>
</html>


Под катом — разбор каждой строчки
Читать дальше →
Total votes 44: ↑36 and ↓8+34
Comments9

Полезные консольные Linux утилиты

Reading time13 min
Views117K

В этой подборке представлены полезные малоизвестные консольные Linux утилиты. В списке не представлены Pentest утилиты, так как у них есть своя подборка.


Осторожно много скриншотов. Добавил до ката утилиту binenv.


binenv — cамая интересная утилита для установки новых популярных программ в linux, но которых нет в пакетном менеджере.

Читать дальше →
Total votes 96: ↑92 and ↓4+110
Comments110

Реализация архитектуры Redux на MobX. Часть 1: «Проблемные места Redux»

Reading time11 min
Views11K

Эта часть статьи будет об осмыслении составляющих Redux. Так ли они необходимы, что является их аналогом. Также будет предложена более удобная альтернатива хука useReducer.

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

В этой части статьи я хочу показать, что:

— редьюсеры - это аналог обычных чистых функции для получения нового состояния.

селекторы - это аналоги обычных функций с мемоизацией, которые возвращают данные.

— dispatch + action + action creators - это аналог обычных вызовов функций, и разбиение на dispatch, action, action creators является зачастую ненужным и используются не к месту.

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments30

Typescript Compiler API: возьми управление компилятором в свои руки

Reading time16 min
Views12K


В разработке приложений на Typescript всегда есть этап сборки проекта. Обычно для этого используются системы сборки и автоматизации workflow, такие как webpack или gulp, обвешанные достаточным количеством плагинов, либо процесс сборки размазывается в командах package.json и шелл-скриптах с использованием нативного tsc или команд CLI используемого в проекте фреймворка. Все эти решения имеют свои плюсы и минусы. Зачастую в процессе сборки нужно сделать что-то нестандартное, и оказывается, что используемая система сборки не предоставляет нужную функциональность из коробки, а имеющиеся плагины делают не совсем то, что надо. В такие моменты работа над проектом встает, и начинается судорожное ковыряние в конфигах и поиск подходящего плагина. В какой-то момент понимаешь, что за время, потраченное на поиск подходящего костыля, можно было написать свое решение.

Во многих случаях критичные процессы в проекте можно автоматизировать скриптами на javascript, выразительность и функциональность которого вполне позволяет описать нужный workflow и выбирать из всего разнообразия библиотек, не заморачиваясь наличием для них плагинов под конкретную систему сборки. Важное преимущество такого подхода – полный контроль над процессами и максимальная гибкость. Для проектов, в которых используется Typescript в качестве основного языка разработки, возникает вопрос, как встроить процесс его компиляции в свой workflow. Здесь на помощь приходит Typescript Compiler API. В этой статье мы посмотрим, как его можно использовать для того, чтобы выполнить компиляцию проекта, реализованного на Typescript, взаимодействуя с компилятором на разных этапах его работы и напишем скрипт для hot-reloading’а REST-сервера, разработанного на Nest.js.
Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments19

Правила компоновки во Flutter, которые должен знать каждый

Reading time14 min
Views79K


Когда новичок во Flutter спрашивает, почему какой-то виджет с width: 100 не ширины 100 пикселей, обычно ему отвечают, что надо обернуть этот виджет в Center, верно?


Не надо так делать


Если так отвечать, то к вам будут возвращаться снова и снова, спрашивая, почему какой-то FittedBox не работает, почему этот Column переполнен или как работает IntrinsicWidth.


Сначала объясните, что Flutter компоновка очень отличается от HTML компоновки (особенно, если говорите с веб-разработчиком), а затем скажите, что необходимо запомнить следующее правило:


Ограничения для виджетов объявляются в родителях. Размеры (желаемые) задаются в самом виджете. Позиция виджета на экране устанавливается родителем

На мой взгляд, это правило нужно изучить, как можно раньше, так как без него по-настоящему понять компоновку во Flutter нельзя.

Total votes 25: ↑25 and ↓0+25
Comments6

Типизация REST API для фронтенд разработчика

Reading time4 min
Views24K
Сегодня широкое распространение имеют следующие подходы для описания взаимодействия браузера и сервера, такие как OpenApi & GraphQL.

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


Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments24

RxDart для самых маленьких… проектов

Reading time4 min
Views14K


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


Ниже буквально в 50 строк я на известном примере покажу, что реактивность


а) это не про оффлайн/онлайн
б) это очень просто
в) очень хороша для упрощения практически любого кода

Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments30

Хеви-метал оболгали: на самом деле тяжелая музыка положительно влияет на здоровье своих поклонников

Reading time3 min
Views62K
Автор оригинала: Nick Perham — старший преподаватель кафедры прикладной психологии Университета Кардиффа.


Из-за экстремального звучания и агрессивных текстов хеви-метал обычно ассоциируется со скандалами. Этот жанр обвиняли в оскорблении чувств верующих, массовых школьных расстрелах и провоцировании самоубийств. Но если это такое «плохое» направление, то почему у него до сих пор столько фанатов? И могут ли у него вообще быть негативные эффекты?
The show must go on!
Total votes 48: ↑38 and ↓10+28
Comments182
1
23 ...

Information

Rating
Does not participate
Location
London, England - London, Великобритания
Date of birth
Registered
Activity