• Гугл финанс перестал транслировать данные российских акций — что делать?

    • Tutorial

    С 5 июня 2021 года сайт гугла, и самое главное гугл таблицы - перестали отдавать данные с Московской биржи. 

    При попытке получить любые котировки с префиксом MCX, например для Сбербанка, формулой из гугл таблиц =GOOGLEFINANCE("MCX:SBER") теперь всегда возвращается результат #N/A.

    А при поиске любой российской бумаги на сайте Google находятся любые рынки, кроме Московской биржи.

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

    Google Finance давай, до свидания!
  • Винный гид России. Аналитика

      Эта статья, как ни странно, про российское вино. Достопочтенную публику прошу не злиться, во-первых, на Хабре уже есть несколько статей на винную тематику, а, во-вторых, речь не столько про само вино, сколько про открытые данные и их анализ.

      Надеюсь, моя статья будет интересна любителям вина. Особенно российского.

      Месяц назад Роскачество презентовало очередной выпуск ежегодника "Винный гид России". Он посвящен (внезапно!) российским винам. Но не всем, а лишь находящимся в ценовом сегменте до ±1000 рублей и широко представленным в обычных продуктовых сетях. В общем, винные снобы могут сразу пройти мимо, речь пойдет о самом что ни на есть масс-маркете.

      Гид доступен в печатном и электронном виде. Последний представляет собой, по сути, рейтинг вин, которые можно отфильтровать по различным критериям. Это позволяет легко найти конкретное вино, его оценку и прочую информацию о нем. Но вот на более общие вопросы с помощью этого сайта я ответить не смог. А именно:

      1. Какова картина в целом? Большинство вин откровенно плохи? Или наоборот прекрасны?

      2. Не хочу запоминать и искать конкретные вина. Какие винодельни стабильно показывают достойное качество?

      3. Как цена влияет на качество? Есть ли разница между вином за 150 рублей и за 500? А за 500 vs 1000?

      Но раз есть сайт с данными, значит их можно спарсить и ответить на все свои вопросы самостоятельно.

      Так что все те, кому интересен мир российского вина, и кто не воротит нос при фразе "вино дешевле 1000 за бутылку", добро пожаловать под кат!

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

      Читать далее
    • Нужно ли стартапу в 2021 выдавать опционы сотрудникам? Разбираем что это и как оформить

      В 21 веке, где ни одного программиста не удивишь теннисным столом, PS5 и ящиком снеков в офисе, нужно задумываться о новых способах мотивации. Ни один стартап не может позволить себе конкурировать с зарплатами талантливых сотрудников, в том числе программистов, гигантов технологического рынка. Чтобы заинтересовать сотрудника в свой проект, чтобы он также как и владелец переживал за развитие компании — нужно делиться. Делиться временем. Делиться хорошим вознаграждением за проделанную работу. И делиться акциями или правильнее «опционами на акции». За время и деньги все понятно. С опционами разберемся.


      image

      Читать дальше →
    • Отображение текста в Android


        Отображение текстовой информации — наверное, самая базовая и важная часть многих Android-приложений. В данной статье пойдет речь о TextView. Каждый разработчик, начиная с «Hello World», постоянно сталкивается с этим элементом пользовательского интерфейса. Периодически в работе с текстом приходится задумываться о реализации различных дизайнерских решений или улучшении производительности при отрисовке экрана.


        Я расскажу об устройстве TextView и некоторых тонкостях работы с ним. Основные советы были взяты из докладов прошедших Google I/O.

        Читать дальше →
        • +41
        • 24,5k
        • 8
      • Свойства против методов


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

          Читать дальше →
        • Атопический дерматит (нейродермит): что сломалось и как лечить

            image
            Одно из возможных проявлений атопического дерматита

            Знаете, чему учат студентов-медиков, когда они в первый раз попадают на курацию по кожно-венерологическим заболеваниям? Правильно общаться с пациентом и корректно его осматривать. Типичный студент, увидевший кожу с неприглядными корочками или покраснениями, сразу отодвигается на полтора метра и делает круглые глаза. А потом чуть ли не палочкой пытается тыкать в пациента, стараясь не приближаться. Людей это расстраивает, особенно с учётом того, что большинство пациентов там вовсе не болеет чем-то страшным и заразным.

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

            1. Базовая причина связана с генетическими дефектами, которые мы пока не можем чинить, несмотря на все успехи генотерапии.
            2. Есть куча непонятных факторов, которые могут запускать этот процесс.

            В итоге можно попытаться загнать заболевание в постоянную ремиссию. Сегодня мы поговорим:

            1. Что это за патология, с которой сталкивается около 20 % людей.
            2. Что ломается в организме у атопиков.
            3. Как это связано с аллергией.
            4. Что лучше мазать на кожу.
            5. Почему антидепрессанты могут сильно помочь.

            Под катом будет несколько фотографий повреждённой кожи, но не ужас-ужас, как вы и просили.
            Читать дальше →
          • Заповеди тимлида Авито

              Мы уже публиковали свои внутренние документы с ожиданиями от инженеров и менеджеров продукта в плейбуке на Гитхабе. Пришло время поделиться ещё одним — кодексом тимлида.


              Читать дальше →
            • Поддержание аккуратной истории в Git с помощью интерактивного rebase

              • Перевод

              Interactive rebase — один из самых универсальных инструментов Git'а. В этой статье от автора Git-клиента Tower рассказывается, как корректировать сообщения при коммитах и исправлять свои ошибки.

              Читать далее
            • Как безболезненно мигрировать с RxJava на Kotlin Coroutines+Flow

                Для выполнения асинхронных операций в Android-приложениях, где нужна загрузка и обработка любых данных, долгое время использовали RxJava — и о том, как перейти на RxJava 3, мы уже писали в нашем блоге. Сейчас на смену фреймворку постепенно приходят инструменты Kotlin — Coroutines+Flow. Актуальность этой связки подтверждается тем, что Google сделал Kotlin приоритетным языком для Android-разработки. 

                Корутины позволяют тратить меньше системных ресурсов, чем RxJava. Кроме того, поскольку они являются частью Kotlin, Android предоставляет удобные инструменты для работы с ними — например, viewModelScope и lifecycleScope. В этой статье мы рассмотрим use cases, распространенные в Rx Java, и то, какие возможности вы получите при переходе на Flow.

                Читать дальше →
              • Кастомный ItemDecoration для RecyclerView

                • Перевод
                • Tutorial

                Как-то раз мне нужно было создать собственный ItemDecoration, и я обнаружил, что в Интернете. почти нет ответов на этот вопрос. Надеюсь, что эта стать будет кому-нибудь полезна.

                Читать далее
              • Mathematics Driven Design: размеры и отступы

                  Здравствуйте, меня зовут Дмитрий Карловский и я… дизайнер. Дизайнер от слова design (проектирование), а не от слова style (дизайн). Я разрабатываю высокоуровневый фреймворк $mol. Одна из основных концепций которого — Лего. То есть это набор очень маленьких кирпичиков с простым и универсальным интерфейсом коммуникации. Комбинируя эти кирпичики в разных комбинациях можно строить приложения любой сложности.


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


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



                  Далее я расскажу, почему всё именно так, и никак иначе...

                  Читать дальше →
                • Kotlin Android Extensions deprecated. Что делать? Инструкция по миграции

                    Возможно, вы уже слышали, что Kotlin Android Extensions — плагин для Kotlin теперь deprecated.
                    kotlinx.android.synthetic is no longer a recommended practice. Removing in favour of explicit findViewById

                    Безусловно, это было очень удобно, особенно если у вас проект полностью на Kotlin. Однако, мир меняется и теперь нужно искать альтернативы. В этой статье мы кратко рассмотрим, что такое плагин Kotlin Android Extension, какие были проблемы с ним и что теперь нам, Android-разработчикам делать. Частично, использовался материал этой статьи. Итак, поехали.
                    Читать дальше →
                  • История одного pet-проекта

                      Если помните, в детстве были такие книжки, где ты читаешь, а в конце есть вариант развилки — пойти направо или налево, убить кого-то или помиловать. В зависимости от вашего выбора в книжке было написано: «Перейдите на такую-то страницу и на такую-то строчку». У Александра Зимина появилась идея для pet-проекта – сделать маркетплейс с дизайном Netflix или онлайн-кинотеатров и где было бы много таких игр.

                      Александр учился в Высшей Школе Экономики на факультете ФКН и руководил встречами CocoaHeads, пока не уехал из России. Участвовал в разных европейских и американских стартапах, но в то же время успел поработать и full-time в лондонском Badoo. Сейчас Александр участвует в проектах в доле. В своем докладе на конференции App Live 2019 Александр рассказал о том, что помогло ему сделать проект прибыльным, и какой путь он прошёл для этого. Его рассказ — от идеи до результата, — мы расшифровали и публикуем сегодня.


                      Читать дальше →
                      • +37
                      • 7,8k
                      • 1
                    • Автоматический Code Improvement при коммите в Android Studio

                      Работать с гитом в Android Studio, как известно, можно двумя способами.


                      Первый способ классический — использовать консоль. Плюсом такого подхода являются в первую очередь надежность. GUI может залагать и например, зависнуть на этапе rebase так, что abort/continue/переключение на другую ветку не поможет. Консольные команды вам в помощь, они всегда безотказны.


                      Второй способ — использовать GUI, предоставляемый Android Studio. Плюсы очевидны — меньший порог входа, более понятно, что вообще можно делать. А также есть различные плюшки от самой студии для удобства работы с гитом. Об одном из них и пойдет речь. Кстати, используя GUI, тоже можно оставлять в покое мышку и использовать hotkey

                      Читать дальше →
                    • Как спроектировать пошаговое заполнение данных в мобильном приложении

                        Привет! Меня зовут Вита Соколова, я Android Team Lead в Surf.

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

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


                        Читать дальше →
                      • «Холодный» запуск Android-приложения

                        • Перевод
                        Всем приветъ! Давно ничего не писал.

                        Это будет серия постов о процессе «холодного» запуска Android приложения, с момента нажатия на иконку и до создания процесса приложения.

                        image
                        Читать дальше →
                        • +17
                        • 5,5k
                        • 2
                      • За двумя мобильными сервисами: HMS и GMS в одном приложении



                          Привет, Хабр! Меня зовут Андрей, я делаю приложение «Кошелёк» для Android. Уже больше полугода мы помогаем пользователям смартфонов Huawei оплачивать покупки банковскими картами бесконтактно — через NFC. Для этого нам потребовалось добавить поддержку HMS: Push Kit, Map Kit и Safety Detect. Под катом я расскажу, какие проблемы нам пришлось решать при разработке, почему именно так и что из этого вышло, а также поделюсь тестовым проектом для более быстрого погружения в тему.
                          Читать дальше →
                          • +14
                          • 3,3k
                          • 2
                        • Как устроен Push Kit от Huawei

                            Привет, Хабр! В мае прошлого года, оставшись без сервисов и API гугла, мы основательно взялись за работы над своей платформой Huawei Mobile Services. Это наш давний проект, к которому мы вернулись после введения американских санкций. Проблема «отрезанных» сервисов постепенно сошла на нет. Мы добавили недостающие компоненты: почтовый клиент, свои карты и другие сервисы и HMS Core — набор API, SDK и прочих сервисов для разработки и улучшения приложений. В этот набор входит Push Kit — облачная служба для рассылки уведомлений — и не только. Под катом расскажем, как устроен этот инструмент, чем выделяется и как его можно использовать.

                            Читать далее
                          • Kotlin. Автоматизация тестирования (часть 1). Kotest: Начало

                            Kotlin. Автоматизация тестирования (часть 1). Kotest: Начало


                            Kotest


                            Хочу поделиться опытом создания системы автоматизации функционального тестирования на языке на Kotlin.
                            Основой для создания / конфигурирования / запуска / контроля выполнения тестов — будет набирающий популярность молодой фреймворк Kotest (в прошлом Kotlin Test).
                            Проанализировав все популярные варианты для Kotlin — выяснилось, что есть всего два "нативных":



                            Либо бесконечное кол-во из Java мира: Junit4/5, TestNG, Cucumber JVM или другие BDD фреймворки.
                            Выбора пал на Kotest с бОльшим кол-вом "лайков" на GitHub, чем у Spek.


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

                            Читать дальше →
                            • +10
                            • 5,3k
                            • 4
                          • Превращаем EditText в SearchEditText

                              image

                              Пробовали ли Вы когда-нибудь настроить внешний вид или поведение стандартного компонента SearchView? Полагаю, да. В этом случае, я думаю что вы согласитесь, что далеко не все его настройки являются достаточно гибкими, для того, чтобы удовлетворить всем бизнес-требованиям отдельно взятой задачи. Одним из способов решения этой проблемы является написание собственного «кастомного» SearchView, чем мы сегодня и займемся. Поехали!

                              Примечание: создаваемое view (далее – SearchEditText), не будет обладать всеми свойствами стандартного SearchView. В случае необходимости, вы можете без труда добавить дополнительные опции под конкретные нужды.
                              Читать дальше →