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

Пользователь

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

Как работать с разрешениями для чтения и записи файлов в Android 13+ на примере React Native

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

В МойОфис мы разрабатываем iOS- и Android-приложения цифрового рабочего пространства Squadus с помощью кроссплатформенного фреймворка React Native. В функциональность нашего приложения входит загрузка и отправка различных вложений другим пользователям.

В какой-то момент мы получили фидбек, что пользователи с Android не могут отправить медиафайлы и посмотреть превью. Наши доблестные QA-инженеры выяснили, что проблема напрямую связана с тем, какая именно версия Android стоит у пользователей. Сложности начинались с версии 13 — оказалось, что Android добавил новые Permissions для повышения безопасности приложений.

Под катом рассказываю, как работают новые Permissions, как Android рекомендует реализовывать запрос к пользователю, и каким образом наша команда решила проблемы при реализации новых разрешений. Думаю, наш опыт будет интересен специалистам, погруженным в тему Permissions на Android, да и вообще всем React Native и Android разработчикам, так как особенности версионирования разрешений будут жить с нами ещё долго.

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

Объединили мессенджер, ВКС и совместную работу с документами в одном приложении. Изучаем новый Squadus PRO от МойОфис

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

Полтора года назад МойОфис представил цифровое рабочее пространство Squadus — полноценную замену решений иностранных вендоров. Сегодня мы выпустили новый продукт Squadus PRO, в котором объединили возможности сразу нескольких наших решений в одном интерфейсе. Помимо корпоративного мессенджера со структурированными каналами коммуникации, видео-конференц-связью, вебинарами и календарем, в Squadus PRO доступны встроенные веб-редакторы документов и файловое хранилище. А также Bot SDK для автоматизации типовых действий.

Подробности о том, что умеет Squadus PRO и кому это может быть полезно, читайте под катом.

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

История Git: на этот раз не так весело

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

Линус Торвальдс как-то написал в своей книге, что создавал Linux для развлечения, но в итоге это привело к революции. Git, его второе творение, также оказалось «случайной революцией» — и сегодня это стандартный инструмент для людей в ИТ. Однако процесс его создания был уже не таким «весёлым» — по крайней мере, для самого Линуса. 

Читать далее
Всего голосов 98: ↑97 и ↓1+113
Комментарии56

Не потеряться в данных: оптимизируем аналитику с помощью DataHub

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

Как не потеряться в данных для аналитики? 

Когда количество их источников ограничено, а аналитикой занимается пара человек, в целом всё понятно: обеспечить прозрачность вполне можно на уровне ведения документации (если заниматься этим ответственно). 

Но что, если данных в компании много, они отличаются сложной структурой и поступают из разных источников? Едут и из MongoDB, и из PostgresSQL, и из MS SQL; при этом постоянно появляются новые продукты и направления, данных становится ещё больше. Документация по ним устаревает примерно в тот момент, когда заканчиваешь её писать.

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

Упростить жизнь в такой ситуации призван Data Catalog, и в Сравни мы выбрали популярный вариант — DataHub. Под катом рассказываем, как меняется работа с данными для аналитики, когда в твоей жизни появляется визуализация потоков данных.

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

Прогнозируем солнечные затмения с помощью ~100 строк кода Python

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

8 апреля 2024 года автор статьи, основатель и СЕО компании Modal Labs, Эрик Бернхардссон планировал посмотреть свое первое полное солнечное затмение. За день до этого ему пришла в голову идея — что, если попробовать рассчитать периодичность этого явления в прошлом и будущем, используя Python? Несмотря на незначительные сложности с системой координат, автору удалось создать работоспособное решение всего за несколько часов.

Под катом читайте, как с помощью ~100 строк кода удалось вычислить и проследить путь каждого солнечного затмения в период с 2020 по 2030 год.

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

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

Как UX-писателю защищать тексты. 5 советов из практики

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

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

Под катом читайте, как UX-писателю убедительно и профессионально отстаивать идеи и на что опираться в своих аргументах.

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

4 типовые ловушки в работе со строками в С и С++ и как их избежать

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

Некорректное использование строк может стать настоящей ахиллесовой пятой защиты программы. Поэтому так важно применять актуальные подходы к их обработке. Под катом разберём несколько паттернов ошибок при работе со строками, поговорим о знаменитой уязвимости Heartbleed и узнаем, как сделать код безопаснее.

Читать далее
Всего голосов 32: ↑30 и ↓2+37
Комментарии17

Вы просили катастрофоустойчивость в почте? Мы сделали. Рассказываем про релиз Mailion 1.9

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

От сбоев и аварий любого масштаба не застрахована ни одна крупная ИТ-система, однако их последствия можно сделать незначительными для работы компании. Именно поэтому, основной упор в новой версии корпоративной почты Mailion 1.9 мы сделали на катастрофоустойчивости – защите данных в любой непредвиденной ситуации. Другие новые функции в этом релизе упрощают миграцию из Exchange и дают возможность контролировать перенос и синхронизацию всей важной информации.

Под катом детально разберём реализацию катастрофоустойчивости и остальные улучшения в релизе 1.9.

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

Как внедрить и развить культуру обмена знаниями в компании: 9 важных шагов

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

По некоторым данным, обмен знаниями сокращает количество повторяющихся ошибок в организации, помогает сотрудникам принимать более обоснованные решения и повышает KPI на 20-30%. Обмениваясь знаниями, коллеги могут учиться друг у друга и находить новые, более эффективные способы выполнения задач. А сохраняющая ценные знания компания создает основу для постоянного развития и инноваций, даже если ключевые работники уходят.

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

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

Как мы создавали собственную дизайн-систему для ускорения процессов разработки

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

Может ли в 2024 году фронтенд-разработчик не тратить время сперва на изучение макета, а затем на его реализацию в коде, в условиях быстро меняющихся требований бизнес-задач? Да, если использовать готовую дизайн-систему. 

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

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

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

Rust и асинхронные функции: как улучшить структуру кода и повысить производительность с помощью абстракций

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

В начале 2010-х годов в программировании появился новый подход к реализации параллелизма с использованием абстракций future и promise, а также синтаксического приёма async/await. Эти технологии облегчили работу с асинхронным кодом, но вызвали ожесточённые споры среди разработчиков. Автор статьи, системный программист Saoirse Shipwreckt*, рассматривает две противоположные точки зрения на future от их апологета Мариуса Эриксена и критика Боба Нистрома. 

Под катом читайте о преимуществах и недостатках абстракций, а также о различных видах параллелизма в Rust и способах улучшения структуры кода с помощью future.

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

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

Пишем простые расширения VS Code для автоматизации задач командной строки

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

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

Для написания расширений используется Typescript, который достаточно просто освоить. Однако существенным препятствием является то, что в документации часто нет ответов на вопросы, которые возникают при реальной разработке.

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

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

Перформанс ревью: как подготовиться и взять от ежегодной оценки всё возможное

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

Перформанс ревью (performance review) — система оценки компаниями профессиональных качеств сотрудников. Это – популярный и эффективный инструмент, который используют крупные мировые и отечественные бренды, например, Google, Яндекс и Авито.

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

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

Читать далее
Всего голосов 13: ↑11 и ↓2+11
Комментарии8

Вот что я нагуглила за неделю в качестве старшего инженера-программиста

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

Три года назад разработчик Софи Кунин* опубликовала пост под названием «Вот что я нагуглила за неделю в качестве профессионального инженера-программиста», и он явно нашел отклик у читателей, поскольку стал довольно вирусным. За эти три года многое произошло. Софи повысили, теперь она старший инженер-программист и руководитель направления веб-разработок в Monzo. Но одно не изменилось: она по-прежнему много гуглит, каждый божий день. Вот что она нагуглила за неделю, версия 2022 года.

Очевидный дисклеймер: эта статья слегка отредактирована, поскольку автор удалила большую часть того, что не относится к работе.

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее
Всего голосов 42: ↑32 и ↓10+27
Комментарии20

Я провёл 400 собеседований за год. Мне есть что сказать

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

Я немного преувеличил с количеством — часто я был «вторым пилотом» на собеседованиях. Но какой-то опыт проведения собеседований у меня всё- таки есть, ведь только за 3 месяца весны я провел 150 собесов. В статье я выделил некоторые важные моменты от которых зависит — скажу я кандидату «Да» или «Нет», и собрал очень субъективные рекомендации как проходить собесы. Но учитывая то, какое количество людей через меня прошло, статья будет полезна тем, кто только начал проводить собеседования, кому это только предстоит, и тем, у кого впереди поиск работы. 

Читать далее
Всего голосов 160: ↑78 и ↓82+2
Комментарии306

Два года обновлений. Как мы улучшали офисные редакторы по запросам пользователей

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

В августе нашей компании исполнилось 9 лет. За это время МойОфис прошел путь от амбициозного стартапа до лидера рынка отечественного офисного ПО. Ежегодно мы выпускаем несколько крупных обновлений — только в 2022 году вышло уже три таких релиза с сотнями улучшений. А общее число нововведений, которые появились в наших продуктах за последнюю пару лет, измеряется тысячами.

Реализация новой функциональности практически всегда сопряжена с запросами наших клиентов. Мы проанализировали запросы, поступившие в нашу техподдержку за прошедшие 2 года, и отобрали для рассказа некоторые функции, которые были реализованы в редакторах «МойОфис Стандартный» после обращений клиентов. Подробнее читайте под катом.

Читать далее
Всего голосов 89: ↑85 и ↓4+84
Комментарии58

Предотвращаем утечки памяти в Go, ч. 1. Ошибки бизнес-логики

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

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

Но, по сообщениям некоторых пользователей, у программ, написанных на Go, течёт память. Issue-трекер языка Go на github по запросам «high memory usage», «memory leak», «out of memory» выдаёт сотни и тысячи тикетов. А в самом популярном вопросе на stackoverflow по словосочетанию «golang memory» автор пытается разобраться, почему потребление оперативной памяти в рантайме в 4 раза превышает количество реально сделанных аллокаций. Обращения, в которых люди рапортуют о перерасходе оперативной памяти в Go, стали массовым явлением.

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

Читать далее
Всего голосов 68: ↑66 и ↓2+69
Комментарии9

Языковая модель GPT-3 умеет объяснять код — рассказываем, как это можно использовать

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

За два года с момента релиза GPT-3 эту языковую модель использовали в множестве интересных задач — например, для сочинения поэзии, написания футурологических эссе и подготовки научных статей. Но как алгоритм обработки естественного языка может быть полезен программистам?

На этот вопрос в своей новой статье отвечает британский разработчик Саймон Уиллисон* — директор по архитектуре Eventbrite и один из создателей веб-фреймворка Django. Среди различных вариантов применения языковой модели GPT-3 Уиллисон особенно подчеркивает ее способность объяснять, что делает код. По словам специалиста, в этом GPT-3 поразительно эффективна, поскольку явно обучалась на огромном количестве исходного кода.

Под катом — наш перевод материала, в котором автор демонстрирует недавние примеры из своей практики: объяснение кода на Python, JavaScript, SQL, а также работу в рамках GPT-3 с математическими формулами.

*Обращаем ваше внимание, что позиция автора не всегда может совпадать с мнением МойОфис.

Читать далее
Всего голосов 90: ↑87 и ↓3+90
Комментарии7

Что читать разработчику C++

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

В этой подборке — не только классические рекомендации книг для C++ программистов. Обычно советуют издания про паттерны, развитие стандарта или успехи большой компании. Но за всем этим изобилием «экспертных советов» и best practices теряется одна простая мысль: язык программирования — это средство выражения мысли от одного разработчика другому, а также средство описания пользовательского API в самом широком смысле.

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

Первые 5 книг этой подборки — в меньшей степени про технику, в большей степени об осознанности деятельности C++ программистов любого уровня. Остальные — «золотой фонд» классической литературы для C++ разработчиков.

Читать далее
Всего голосов 95: ↑85 и ↓10+76
Комментарии16

Информация

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

Специализация

Application Designer, Game Designer
Middle