Pull to refresh
23
0
Send message

КОМПАС-3D и Linux → Часть 1

Reading time3 min
Views81K

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

Вот, в рамках этой задачи, мы “поковырялись” и расскажем про наш опыт запуска системы КОМПАС-3D  в операционной системе Ubuntu с помощью Wine.

Узнай как настроить КОМПАС-3D под Linux

Accompanist — первый аккорд. Обзор библиотеки для Jetpack Compose

Reading time8 min
Views9K

Обычно новым фреймворкам не хватает хороших примеров использования, туториалов и инструментов. Но не в случае с Jetpack Compose: параллельно с разработкой фреймворка Google развивал репозиторий, богатый на примеры использования. Вырисовывался набор полезных утилит, переиспользуемых виджетов и прочих удобств для разработки. 

Так из репозитория с примерами вырос Accompanist — набор библиотек для Jetpack Compose, которые можно добавить в свой проект как зависимость. В статье рассмотрим подробнее, какой инструментарий он предоставляет.

Читать далее

Detekt — пишем свои правила

Reading time6 min
Views8.5K

Мы в «Ситимобил», используем статический анализатор кода Detekt. Это инструмент, который при запуске проходит по проекту и показывает допущенные в коде code smell.
Сегодня мы расскажем, как написать свое правило и помочь команде соблюдать уникальные для проекта договоренности написания кода.

Читать далее

Vulkan-tutorial. Урок 1.1 — Вступление

Reading time5 min
Views55K

В связи с тем, что у меня не так много времени для ресерча каких-то новых штук и написания статей о них, я решил перевести серию уроков по Vulkan. Надеюсь, что мои переводы будут кому-то полезны и не очень плохого качества. Для начала обучения — прошу под кат.


Автор оригинала дал свое согласие на перевод. Также, когда я доперевожу все статьи и у меня будет время отформатировать их для github, он добавит русский перевод на свой сайт.

Читать дальше →

Ontol: подборка видео-лекций и каналов для продвинутых программистов

Reading time4 min
Views16K
image

Недавно на HackerNews обсуждали видео и каналы, где можно поучиться продвинутому программированию. Под катом — подборка из 30 полезняшек.

В перерывах между полетами на реактивном ранце и переводами материалов Y Combinator, я делаю проект «Ontol» — такое место в сети, где максимальная концентрация полезного, апгрейдящего мировоззрение материала (ценного на горизонте 10+ лет, например, такого), которым можно делиться бесплатно в 1 клик. (канал в телеграм: t.me/ontol)

Вот мои предыдущие бесплатные образовательные подборки:


Реализация Undo в Snackbar на Jetpack Compose

Reading time6 min
Views3.1K

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

Если приложение будет выводить AlertDialog по поводу и без, пользователю это вряд ли понравится.

Как этого избежать?

Свою квалификацию программиста можно повысить, если разбираться в деталях разных технологий

Reading time7 min
Views13K

Фрагмент комикса с простым объяснением, что такое числа с плавающей запятой

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

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

Дело в том, что многие программисты используют технологии не задумываясь, как они работают. И это нормально. Люди выполняют поставленные задачи. От них не требуют понимания всей сути, потому что детали отвлекают от главной задачи и зачастую ничем не помогают в её выполнении.
Читать дальше →

Jetpack Compose Desktop

Reading time2 min
Views16K

Несколько дней назад компания JetBrains в своём блоге рассказала о выходе нового инструмента для создания дескопных приложений Jetpack Compose Desktop. Компания с русскими корнями не особо жалует русскоязычную аудиторию и не спешит рассказать нам о новинке, поэтому возьму на себя роль популяризатора.

Разработчики под Android уже могли слышать про Compose, которая доступна в предварительной версии Android Studio 4.2. Я не любитель устанавливать бета-версии, поэтому не мог пощупать новую технологию своими руками. Но когда услышал новость про Compose Desktop, то не удержался и поставил себе IntelliJ IDEA Early Access Program.

Для начала я установил версию IDEA 2020.3, где уже есть все необходимые настройки и шаблоны.

Создаём новый проект и выбираем шаблон Desktop uses Kotlin 1.4.0. Минимальная версия Java SDK должна быть не ниже 11. Проверял на Windows 10, других платформ у меня нет.

Читать далее

Под капотом у Emoji

Reading time6 min
Views29K
image


В течение последних нескольких недель Nikita Prokopov внедрял поддержку эмодзи для Skija. Он решил поделиться несколькими мелкими деталями того, как это «самое большое новшество в человеческом общении со времен изобретения буквы image» работает под капотом.

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

Unicode


Каждый символ на компьютере кодируется числом. Самая популярная кодировка — Unicode, а две самые распространенные подвариации — UTF-8 и UTF-16.

Unicode выделяет 221 (2 млн) символов, назывемых «codepoints». Из этих двух миллионов сейчас определены только ~150k символов. В эти 150 000 символов впихнули все языки, мёртвые и живые и прочие украшательства. Можно использовать различные шрифты, писать задом наперед и кверх ногами: image, а также отобразить «GHz» как один глиф: image.

Направленная вправо двуглавая стрела с оперением и двумя вертикальными штрихами: image или семиглазый монстр: image. И утка:

image

Читать дальше →

JAVA SOUND API основы

Reading time22 min
Views35K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Java Sound, Getting Started, Part 1, Playback».

Звук в JAVA, часть первая, Начало. Проигрывание звука



Это начальный из серии в восемь уроков, который полностью ознакомит вас с Java Sound API. 
Читать дальше →

CompositionLocal в Jetpack Compose. Что это и как с его помощью реализовать реактивную локализацию приложения

Reading time9 min
Views15K

Власть в блоге Технократии переходит андроид-разработчикам. Владислав Титов рассказывает, как добиться непрерывающегося UI при смене локализации.

Читать далее

Есть ли жизнь без Nvidia? Запускаем TensorFlow на Radeon RX 580

Reading time4 min
Views50K

На новом рабочем месте меня посадили за ПК, оборудованный процессором Ryzen 2600 и видеокартой Radeon RX 580. Попробовав обучать нейронные сети на процессоре, я понял, что это не дело: уж слишком медленным был процесс. После недолгих поисков я узнал, что существует как минимум 2 способа запуска современных библиотек машинного обучения на видеокартах Radeon: PlaidML и ROCm. Я попробовал оба и хочу поделиться результатами.

Читать далее

Интуитивное объяснение интеграла. Часть I — от умножения натуральных чисел до Ньютона и Лейбница

Reading time10 min
Views65K

Если у Вас нет математического образования, если Вы хотите по-настоящему разобраться в том, что из себя представляет интеграл и интегрирование, зачем всё это надо, как математика пришла к идее интеграла, то в таком случае Вы пришли по адресу — добро пожаловать!

Читать далее

Kotlin Multiplatform. Работаем с многопоточностью на практике. Ч.1

Reading time5 min
Views8.7K
Доброго всем времени суток! С вами я, Анна Жаркова, ведущий мобильный разработчик компании «Usetech»
Я давно занимаюсь не только нативной разработкой (как iOS, так и Android), но и кросс-платформенной. В свое время я очень плотно писала на Xamarin (iOS, Android, так и Forms). Так как я интересуюсь различными технологиями шаринга кода, то не прошла и мимо Kotlin Multiplatform (KMM). И сегодня мы с вами поговорим об этом SDK, и как с ним работать на практике.

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



Для начала немного вводной информации. Если вы уже знакомы с Kotlin Multiplatform, то листайте ниже до примера. Если хотите сразу перейти к advanced примеру, то вам сюда.

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

Согласно концепции JetBrains, Kotlin Multiplatform не является фреймворком. Это именно SDK, который позволяет создавать модули с общим кодом, подключаемые к нативным приложениям.



Для взаимодействия с платформами используются специфические для платформы версии Kotlin: Kotlin/JVM, Kotlin/JS, Kotlin/Native. Данные версии включают расширения языка Kotlin, а также специфичные для конкретной платформы библиотеки и инструменты. Написанный на Kotlin модуль компилируется в JVM байткод для Android и LLVM байткод для iOS.
Читать дальше →

Kotlin Multiplatform. Работаем с многопоточностью на практике. Ч.2

Reading time7 min
Views7.5K
Доброго всем времени суток! С вами я, Анна Жаркова, ведущий мобильный разработчик компании «Usetech».

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



В прошлом примере нам помогла библиотека Ktor, которая взяла на себя всю основную работу по обеспечению асинхронности в сетевом клиенте. Это избавило нас от необходимости использовать DispatchQueue на iOS в том конкретном случае, но в других нам бы пришлось использовать задание очереди исполнения для вызова бизнес-логики и обработки ответа. На стороне Android мы использовали MainScope для вызова suspended функции.
Читать дальше →

Изучаем RISC-V с нуля, часть 1: Ассемблер и соглашения

Reading time19 min
Views28K


Издеваться мы будем над микросхемой GD32VF103CBT6, являющейся аналогом широко известной STM32F103, с небольшим, но важным отличием: вместо ядра ARM там используется ядро RISC-V. Чем это грозит нам, как программистам, попробуем разобраться.


Кратко перечислю характеристики контроллера:


  • Напряжение питания: 2.6 — 3.6 В
    • Максимальная тактовая частота: 108 МГц
    • Объем ПЗУ (flash): 128 кБ
    • Объем ОЗУ (ram): 32 кБ
    • Объем Backup регистров (сохраняемых после сброса): 42 х 16 бит = 84 байта.
    • АЦП+ЦАП: 2 штуки АЦП по 10 каналов и 12 бит каждый плюс 2 ЦАП по 12 бит.
    • Разумеется, куча прочей периферии вроде таймеров, SPI, I2C, UART и т. д.

Koin — библиотека для внедрения зависимостей, написанная на чистом Kotlin

Reading time5 min
Views30K

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

Читать далее

Исследование возможных заимствований и нарушений условий лицензирования в Java-коде на GitHub

Reading time19 min
Views4.2K
Меня зовут Ярослав Голубев, я работаю в JetBrains Research, в лаборатории методов машинного обучения в программной инженерии. Некоторые мои коллеги уже писали здесь о своих проектах (например, о подсказках для онлайн-курсов). Общая цель нашей группы — сделать работу программистов проще, удобнее и эффективнее, используя данные о том, что и как люди программируют. Однако процесс создания программных продуктов состоит не только из написания кода — есть еще документация, комментарии, рабочие обсуждения и многое другое — и со всем этим людям тоже можно и нужно помогать.

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

Любая помощь людям начинается с исследования сложившейся ситуации — во-первых, сбор данных необходим для возможности дальнейшей автоматизации, а во-вторых, их анализ позволит нам узнать, что именно люди делают не так. В этой статье я опишу именно такое исследование: познакомлю вас с основными видами лицензий ПО (а также несколькими редкими, но примечательными), расскажу об анализе кода и поиске заимствований в большом объеме данных и дам советы о том, как правильно обращаться с лицензиями в коде и не допускать распространенных ошибок.
Читать дальше →

Что .jar сторонний нам готовил…

Reading time9 min
Views16K

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

Читать дальше →

Product Manager & Product Designer: поиск сходств и отличий

Reading time11 min
Views6.6K
Меня зовут Ростислав Салата, я работаю в киберспортивной организации без малого три года. Пришел в компанию на должность проектировщика интерфейсов, дорос до UX-лида, и в настоящее время являюсь продуктовым менеджером.

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

Почему я поднял эту тему? Мы провели очень много собеседований с продуктовыми дизайнерами. Опираясь на свой опыт и опыт коллег, могу смело сказать, что вопрос о круге обязанностей задает каждый претендент. Разное понимание зон ответственности может впоследствии привести к конфликтам, которые пагубно повлияют на продукт.

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

Information

Rating
Does not participate
Registered
Activity