Новый современный набор инструментов пользовательского интерфейса Jetpack Compose был анонсирован компанией Google более года назад, и, наконец, в июле была выпущена стабильная версия 1.0. Также многие компании, такие как Twitter, lyft, Square, уже адаптировали Jetpack Compose на своих производственных уровнях, потому что он очень интуитивный, мощный и упрощает всю структуру пользовательского интерфейса, если правильно его использовать. Эта новая парадигма структуры пользовательского интерфейса поменяет в дальнейшем очень многое, также нам придется приложить еще немало усилий для миграции предыдущих вещей, связанных с пользовательским интерфейсом, таких как загрузка изображений из Url.
Программирование *
Искусство создания компьютерных программ
- Новые
- Лучшие
- Все
- ≥0
- ≥10
- ≥25
- ≥50
- ≥100
Возможности функций, возвращающих другие функции в JavaScript
JavaScript широко известен тем, что по своей природе является чрезвычайно гибким. В этом посте мы покажем несколько примеров использования этого преимущества при работе с функциями.
Поскольку функции можно передавать куда угодно, мы можем поместить их в аргументы функций.
Российская конференция для разработчиков от Microsoft: Day of the DEVs
Вы давно ждали и мы сделали крупное российское онлайн-мероприятие для разработчиков от Microsoft в России: Day of the DEVs.
12 октября систематизируем знания в 5 основных направлениях: Hybrid/Multi cloud, Security, OSS, Data&AI для приложений, Продуктивность разработчиков. Ниже подробное описание и ссылка на регистрацию. Выберите интересующий вас трек, зовите коллег и регистрируйтесь!
Архитектура как кот VS Архитектура как кол
Знаете что я больше всего ненавижу? Я люто ненавижу рамки. Ограничения, которые не дают развить мою идею. Вам знакомы эти чувства? Если да, то приглашаю в подкат поговорить.
Генераторы на корутинах C++
Я уже пару лет как развлекаюсь написанием различных программ на C++ с использованием корутин. Но до сего момента это были асинхронные приложения. Я активно использовал co_await, но ни разу еще мне не понадобился co_yield. И вот, после трех дней вынужденного ничегонеделанья в больнице, я решил этот пробел восполнить и попробовать написать собственный генератор. А заодно и получше разобраться с promise_type и coroutine_handle
Книга «Эффективный C. Профессиональное программирование»
PlantUML — инструмент продуктового разработчика
Я дико люблю ковыряться в чужом коде. Это одна из моих любимых специализаций. То есть я просто беру чужой код, анализирую его, читаю. Как я читал его раньше: я переводил код в русский язык. Описывал, что происходит по флоу кода, и пытался понять, что там происходит. Эти записи я в дальнейшем использовал как для написания статей в Confluence, так и для общего понимания происходящего.
С одной стороны, решение работающее. С другой, буквально через неделю-две я уже начинал сомневаться, достаточно точно ли я «перевел» с кода на русский язык? И тогда вспомнил про UML-диаграммы. И вместо того, чтобы записывать текст, стал визуализировать его и исписал неимоверное количество тетрадей.
Но в какой-то момент подумал, что хорошо бы перевести все это в электронный вид, чтобы какой-то инкремент оставался. Не фоткать же, например, для документации, свою тетрадь с каракулями. Так я нашел инструмент PlantUML — opensource-решение, которое использует графическую библиотеку graphviz, превращающее код в наглядные схемы.
Давайте вспомним, что такое Unified Modeling Language. Чаще всего в университете UML используется для описания диаграммы классов.
Энтерпрайзные проекты убили профессию разработчика
От переводчика: Фокусом нашей компании всегда была именно разработка корпоративных приложений. В Haulmont мы занимаемся как созданием собственно приложений, так и инструментов, позволяющих разработчикам эффективнее решать задачи, связанные с разработкой таких систем. Например, наш фреймворк Jmix предназначен для корпоративной разработки, мы это заявляем в рекламе и анонсах. И конечно же, пройти мимо статьи с таким названием мы просто не могли. В Jmix есть все, чтобы сделать разработку корпоративных приложений интересной и успешной, кроме одного: он не может повлиять на людей, которые принимают решения о методах и процессах разработки. Почитайте статью, возможно, она заставит вас задуматься, о том, как можно поменять вашу корпоративную разработку, чтобы все участники были довольны.
На эту статью меня вдохновил комментарий на HackerNews, который я больше не могу найти. Суть его была такая: “В то время, как архитектура слишком проработана, код недоработан”. Если кто-то опознает автора, я с радостью проставлю его авторство.
Заранее в свою защиту хочу сказать, что этот текст описывает только мой опыт за последние 10 лет работы консультантом. Возможно, есть методики и фреймворки, которые решают проблемы, описанные ниже, но они либо не применялись, либо применялись неправильно.
Код ME310: Почему новый продукт для нас разрабатывают студенты МФТИ, Мюнстера и Стэнфорда?
Привет, Хабр! Я хочу рассказать о нашем новом проекте, который только что был успешно запущен совместно с тремя ведущими вузами мира — Московским Физико-Техническим Институтом, Стэнфордским Университетом и Вестфальском Университете г. Мюнстера. Речь идет о платформе быстрого поиска и найма ИТ-специалистов — oneclickhiring.io — которая начнет работать в следующем году. А сегодня над концепцией платформы трудятся 12 магистрантов разных национальностей, специальностей, пола и культурной принадлежности. И в этом посте вы узнаете, почему мы выбрали такой путь для развития проекта, что такое МЕ310, зачем это нужно студентам, и какой должна получиться платформа в итоге.
Когда весь мир дружно сменил офисы на удаленную работу, в нашей отрасли произошел глобальный, можно сказать даже тектонический сдвиг. Например, в России мы наблюдаем почти 70% увеличение заработной платы ИТ-специалистов за прошлый год. Это происходит потому, что многие переключились на оказание услуг зарубежным заказчикам, продолжая при этом жить в России. Этот феномен называют разными словами, например наш CEO Павел Подкорытов говорит, что произошла “отмена географического рабства” и разрушились “зарплатные горы”. Это значит, что сегодня ситуация, когда разработчик одной и той же квалификации получает в Мехико $1 тысячу долларов, а в Сан-Франциско — 15 тысяч, стала невозможной. Люди стали искать новые возможности, и вместе с этим появилась потребность в сервисах для ИТ-шников, находящихся на другом конце света.
Поиск подходящих исполнителей для различных ИТ-проектов стал типовой задачей для большинства сервисных компаний. Например, нам в Napoleon IT уже не первый год приходится подбирать нужных специалистов для различных внедрений, разработок, интеграций и так далее. Чтобы делать это эффективно, еще несколько лет назад вместе с экспертами из ИТМО и Московской школы управления Сколково мы разработали методику оценки специалистов и компаний.
Как я писал Биномиальную кучу
Я сейчас изучаю продвинутые структуры данных и в один прекрасный вечер я решил собирать алгоритмы и структуры данных к себе на гитхаб (и до сих пор это делаю). Захотел я сделать так, чтобы сделать всё шаблонным, если что-то мне резко понадобится, то я смог за считанные секунды добавить себе шаблонный класс структуры данных или шаблонную функцию алгоритма и использовать. Звучит замечательно, особенно на контесты с codeforces.
Я столкнулся с проблемами и решил здесь поделиться опытом с тем, кто также, как и я, мало знаком с пром. прогой и до этого в основном увлекался олимпиадным программированием.
Как автоматизировано защитить Mikrotik от несанкционированного доступа через API, порт 8728
Обычно, для запрета доступа через определенные порты, открывают меню IP → Services и отключают нужный порт, путем выделения нужной строки, двойным кликом и нажатия кнопки «Disable». Как показано на рисунках ниже.
Чек-лист хороших инженерных практик в компаниях
Создание программного обеспечения — процесс, который может сильно усложниться с ростом количества разработчиков. Больше людей в команде — больше коммуникации и необходимости синхронизироваться: растет цена ошибки, система перестает умещаться в голове одного разработчика, а изменения в одном месте влияют на изменения в других местах.
В таких условиях разные команды проявляют себя по-разному. Некоторые продолжают поддерживать высокий темп разработки и регулярно выпускают новые версии. В других командах происходит сильное замедление процессов: переговоры отнимают больше времени, чем разработка, а качество кода падает.
В этой статье я расскажу о причинах такой катастрофической разницы, а также об инженерных практиках, которые позволят поддерживать высокий темп разработки:
Веб-безопасность 201
Сегодня — вторая часть теории, которую рассказал эксперт по информационной безопасности и преподаватель Иван Юшкевич (https://twitter.com/w34kp455) провел мастер-класс по безопасности на конференции РИТ++ на платформе hacktory.ai.
Практическую часть о том, как накрутить лайки в социальных сетях, украсть криптовалюту и получить доступ к самым большим секретам пользователей, вы можете посмотреть здесь и здесь. Первую часть можно посмотреть по этой ссылке.
Сегодня рассказ будет о CSRF, XSS и XXE.
Как написать FizzBuzz на собеседовании
Здравствуй, Хабр.
Недавно я проходил собеседование в одну солидную айтишную контору. Когда мы разобрались с формальностями, начался технический этап, на котором мне поручили написать fizzbuzz. По не вполне понятным мне причинам обсуждение решения этой задачи растянулось на довольно большой срок, после которого время на интервью уже вышло. Мы расстались на хорошей ноте, и мне пообещали перезвонить. Пока я жду оффер, я решил поделиться своим опытом прохождения интервью с широкой публикой, равно как и своим решением, ибо они показалось мне заслуживающим внимания.
MPIRE — быстрая альтернатива multiprocessing
MPIRE комбинирует функции, подобные map из multiprocessing.Pool, с преимуществами копирования при записи общих объектов multiprocessing.Process. В пакете также есть простые в работе функции состояния рабочего процесса, информирования о нём и индикатора выполнения. Сокращённым переводом документации делимся к старту курса по Fullstack-разработке на Python.
Почти детективная история одной «кровавой» ошибки
Дополнение статьи «Размещение кучи FreeRTOS в разделе CCMRAM для STM32», и в продолжение серии статей про различные полезности для STM32 (1, 2 и 3), хочу обратить внимание на одну особенность работы с CCM RAM памятью, которая может быть причиной совершенно не очевидных ошибок в работе устройств, одна из которых выпила у автора достаточно много крови, так что с чистой совестью её действительно можно назвать «кровавой».
А сама история такова. В логике алгоритма некого устройства засела трудноуловимая плавающая ошибка. И чтобы временно купировать её влияние, было принято решение периодически устройство перезагружать. Сам знаю, что это не очень хорошее решение, но как временный костыль пойдет.
Вот только костыль не помог. Помогало только физическое выключения питания, а программная перезагрузка микроконтроллера не помогала! Более того, даже перезагрузка с помощью кнопки RESET иногда не срабатывала! Устройство перезагружалось, но неправильное поведение устройства никуда не исчезало и в итоге все равно приходилось отключать питание физически.
Под капотом Ruby. GVL
Давным давно уже уже была написана статья о том что такое GVL (или GIL, кому как привычнее) и как он работает, однако с того времени некоторые вещи поменялись (к примеру, , а так же в Ruby 3.0 завезли Ractor'ы - новую абстракцию для реальной параллельной работы тредов. Мне стало интересно узнать что поменялось в планировщике ruby для реализации множества GVL. В этой статье я попытаюсь понять алгоритм, по которому GVL передается от одного треда к другому, как блокирующее IO позволяет продолжить работать другим тредам, а так же выяснить до сих пор ли операция добавления элемента в массив является атомарной операцией
48 полноценных бесплатных книг для программистов (happy developer's day)
Привет, Хабр! Немного запоздало (ко дню программиста) делюсь подборкой бесплатных книг по программированию. Все они полезные, уровень скорее профессиональный, хотя и для развития от базового тоже подойдет, но, к сожалению, на английском. Среди тем книг: .NET, Алгоритмы, Android, iOS, Angular, C, C++, C#, JS, Linux, Python. В целом, найдется почти любая тема, которая приходит в голову.
Дисклеймер. Все эти книги взяты с одного ресурса, который существует за счет донейшенов. Получить книги можно без осуществления донейшенов, ресурс полностью бесплатный, пожертвования опциональны. Все книги написаны на основе контента со StackOverflow и являются код-ориентированными. Книги со временем обновляются. По ссылкам -- книги, актуальные на 15.09.2021.
Пакетный обмен данными по UART
На сегодняшний день существует много способов организовать обмен данными между Desktop-приложением и устройствами на микроконтроллерах: Wi-Fi, Bluetooth, RF, USB, преобразователи интерфейсов и т.д.
В большинстве из вышеперечисленных вариантов реализован пакетный обмен данными между хостом и устройством. Передаваемые данными с гарантией целостности и доставки будут переданы от передатчика к приемнику.
В случае использования интерфейсов RS-232, RS-485, RS-422 или чистого UART организация пакетного обмена данными ложится на программиста.
В данной статье я хотел бы рассказать о своей реализации обмена данными между устройствами.
Добавляем интернационализацию в приложение на Next.js
С 10-й версии в Next.js есть встроенная обработка интернационализированной маршрутизации.
В этой статье мы рассмотрим, как добавить интернационализацию в приложение на Next.js — к концу статьи научитесь делать следующее:
• Добавлять интернационализированную маршрутизацию в приложение на фреймворке Next.js.
• Обрабатывать переключение языковых стандартов («локалей»).
• Добавлять в приложение переведенный текст.
Вклад авторов
-
olegchir 3279.2 -
alizar 3032.2 -
tangro 2672.2 -
haqreu 2510.0 -
DmitrySpb79 2296.0 -
grigoryvp 2156.2 -
MaxRokatansky 1994.8 -
lany 1631.0 -
sidristij 1507.6 -
sahsAGU 1461.4