• Основы Flutter для начинающих (Часть IX)

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

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

      Также мы попробуем использовать библиотеку Mockito, которая позволяет создавать фейковые реализации.

      Ну что ж, приступаем к тестированию!

      Read more
    • Как защититься от синдрома запястного канала? 



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

        Причины и симптоматика синдрома запястного канала


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

        Человеческий организм имеет огромное количество подобных мест: на одной лишь руке могут развиться 8 разных туннельных синдромов. Поэтому с медицинской точки зрения называть синдром запястного канала, о котором пойдет речь в сегодняшней статье, просто туннельным синдромом, без уточнения локализации патологического процесса, некорректно. Хотя справедливости ради стоит сказать, что именно карпальный туннельный синдром (так называют синдром запястного канала неврологи) является самой распространенной формой компрессионно-ишемической невропатии из всех существующих: его общая доля в популяции составляет около 5%, а ежегодный прирост заболеваемости достигает 3 случаев на каждую тысячу населения.
        Читать дальше →
      • Стандарт C++20: обзор новых возможностей C++. Часть 6 «Другие фичи ядра и стандартной библиотеки. Заключение»



          25 февраля автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов рассказал о новом этапе языка C++ — Стандарте C++20. В лекции сделан обзор всех основных нововведений Стандарта, рассказывается, как их применять уже сейчас и чем они могут быть полезны.

          При подготовке вебинара стояла цель сделать обзор всех ключевых возможностей C++20. Поэтому вебинар получился насыщенным. Он растянулся на почти 2,5 часа. Для вашего удобства текст мы разбили на шесть частей:

          1. Модули и краткая история C++.
          2. Операция «космический корабль».
          3. Концепты.
          4. Ranges.
          5. Корутины.
          6. Другие фичи ядра и стандартной библиотеки. Заключение.

          Это шестая, заключительная часть. Она рассказывает о других нововведениях ядра и стандартной библиотеки, добавленных Стандартом C++20.

          Другие фичи ядра


          Я рассказал о самых значительных нововведениях Стандарта, но это только капля в море C++20. Перейдём к менее глобальным, но не менее интересным вещам. Подробно останавливаться на каждой не буду, потому что цель обзора — рассказать пусть не всё, но обо всём.
          Читать дальше →
        • Разработка стековой виртуальной машины и компилятора под неё (часть II)

            В первой части Разработка стековой виртуальной машины и компилятора под неё (часть I) сделал свою элементарную стековую виртуальную машину, которая умеет работать со стеком, делать арифметику с целыми числами со знаком, условные переходы и вызовы функций с возвратом. Но так как целью было создать не только виртуальную машину, но и компилятор C подобного языка, пришло время сделать первые шаги в сторону компиляции. Опыта никакого. Буду действовать по разумению.

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

            Читать далее
          • Что вам нужно знать про молочные зубы у детей (и современный медицинский подход)

              image
              Дети просто полны зубами. Зубы как-то помещаются в черепе, но всё равно почти торчат в ноздрях и глазницах. Тут, например, 48 зубов одновременно, и это абсолютно здоровый пациент.

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

              Цепочка довольно простая:

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

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


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

                Если вам тоже хочется создать в сети свое личное пространство, но вы не знаете, с чего начать, или вам просто интересны такие замечательные программные продукты как Docker, Portainer, Traefik – добро пожаловать под кат.

                Введение


                Признаться честно, я не очень люблю командную строку. То есть, мне нравится сама идея легкого минималистичного универсального интерфейса, практически не требующего ресурсов, но черное окно с мигающим курсором вызывает у меня фрустрацию и чувство беспомощности. И я даже знаю откуда это у меня. 
                Читать дальше →
              • Слушаем 15 лучших ИТ-подкастов



                  Один из признаков настоящего профи — интерес к выбранному делу и готовность узнавать новое, расширяя границы выбранной профессии. Это утверждение на 100% подходит к ИТ-индустрии, которая продолжает стремительно развиваться. Мы выбрали для вас 15 интересных подкастов на эту тему.
                  Читать дальше →
                • Гексагональные тайловые миры

                  • Tutorial

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

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

                  Читать далее
                • Практическое руководство по анонимности в онлайне


                    Направленная антенна для удалённого доступа к публичному Wi-Fi

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

                    Но это возможно.

                    Предупреждение. Для усвоения информации в полном объёме требуется несколько недель.
                    Читать дальше →
                  • Стандарт C++20: обзор новых возможностей C++. Часть 3 «Концепты»



                      25 февраля автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов рассказал о новом этапе языка C++ — Стандарте C++20. В лекции сделан обзор всех основных нововведений Стандарта, рассказывается, как их применять уже сейчас и чем они могут быть полезны.

                      При подготовке вебинара стояла цель сделать обзор всех ключевых возможностей C++20. Поэтому вебинар получился насыщенным и растянулся на почти 2,5 часа. Для вашего удобства текст мы разбили на шесть частей:

                      1. Модули и краткая история C++.
                      2. Операция «космический корабль».
                      3. Концепты.
                      4. Ranges.
                      5. Корутины.
                      6. Другие фичи ядра и стандартной библиотеки. Заключение.

                      Это третья часть, рассказывающая о концептах и ограничениях в современном C++.
                      Читать дальше →
                    • Как выглядит обычная 100%-но бессерверная архитектура в AWS Lambda

                      • Translation

                      Когда мы говорим о бессерверной архитектуре, мы обычно выходим далеко за рамки модели «функция как услуга» (FaaS), одной из реализаций которой являются функции AWS Lambda.

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

                      Как же будет выглядеть такого рода архитектура в интернет-проекте?

                      Мы в Theodo очень любим бессерверные технологии и внедряем их во всё новые и новые проекты. Какие-то сервисы и модели мы применяем наиболее широко. Поэтому мы решили поделиться опытом в разработке архитектуры веб-приложений. Если бессерверные технологии вам в новинку и хотелось бы получить общие рекомендации и ответы на вопросы, то вы обратились по адресу!

                      Читать перевод далее
                    • Как LLVM оптимизирует суммы степеней

                      • Translation
                      LLVM оптимизирует суммы степеней, например:

                      int sum(int count)
                      {
                        int result = 0;
                      
                        for (int j = 0; j < count; ++j)
                          result += j*j;
                      
                        return result;
                      }

                      генерируя код, вычисляющий результат без цикла (godbolt):

                      sum(int):
                              test    edi, edi
                              jle     .LBB0_1
                              lea     eax, [rdi - 1]
                              lea     ecx, [rdi - 2]
                              imul    rcx, rax
                              lea     eax, [rdi - 3]
                              imul    rax, rcx
                              shr     rax
                              imul    eax, eax, 1431655766
                              add     eax, edi
                              shr     rcx
                              lea     ecx, [rcx + 2*rcx]
                              lea     eax, [rax + rcx]
                              add     eax, -1
                              ret
                      .LBB0_1:
                              xor     eax, eax
                              ret

                      Также обрабатываются более сложные случаи (godbolt) – то есть оптимизация здесь не просто сравнивает паттерны. В этом посте мы рассмотрим, как выполняется эта оптимизация.
                      Читать дальше →
                      • +36
                      • 4.3k
                      • 4
                    • Что такое алгоритм! Часть 3+1 «Математика»

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


                        Title

                        Читать дальше →
                      • Что недоговаривают Тинькофф Инвестиции. Вытаскиваем все данные по портфелю через API в большую таблицу Excel

                        Разбираемся, как на самом деле считаются суммы и проценты в клиентском приложении.

                        Собираем все данные по портфелю и по всем операциям через Tinkoff API.

                        Строим огромную Excel таблицу со всеми данными.

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

                        Пытаемся понять, что нам с этим делать.

                        Read more
                      • Лингвистическая фантастика. Книги, в которых язык больше, чем просто средство для общения

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

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

                          Читать далее
                        • Умное — не значит дорогое: для smart-часов за $25 от Pine64 выпустили open-source прошивку


                            Команда Pine64 часто выпускает интересные устройства и ПО к ним. Об этих гаджетах на Хабре пишут достаточно часто. Например, вот статья о Linux-смартфоне PinePhone c KDE Plasma Mobile. Эта же команда разрабатывает одноплатник с RISC-V чипом, а вот еще один одноплатник, с процессором RK3566.

                            Но речь сейчас не обо всех этих классных девайсах, а об умных часах PineTime, которые выпущены еще в 2019 году. Большинство смарт-часов через пару лет уже считаются морально устаревшими и прекращают получать обновления. Но только не в этом случае — разработчики выпустили для девайса open-source прошивку.
                            Читать дальше →
                            • +62
                            • 12.3k
                            • 9
                          • Книга «TypeScript быстро»

                              image Привет, Хаброжители! «TypeScript быстро» научит вас секретам продуктивной разработки веб- или самостоятельных приложений. Она написана практиками для практиков. В книге разбираются актуальные для каждого программиста задачи, объясняется синтаксис языка и описывается разработка нескольких приложений, в том числе нетривиальных — так вы сможете понять, как использовать TypeScript с популярными библиотеками и фреймворками. Вы разберетесь с превосходным инструментарием TypeScript и узнаете, как объединить в одном проекте TypeScript и JavaScript. Среди продвинутых тем, рассмотренных авторами, – декораторы, асинхронная обработка и динамические импорты. Прочитав эту книгу, вы поймете, что именно делает TypeScript особенным.
                              Читать дальше →
                            • 5 возможностей systemd, которые нравятся сисадминам

                              • Translation

                              Изображение: Shmuel Csaba Otto Traian (CC BY-SA 3.0)

                              Каждый специалист знает, что в современных системах происходит много чего интересного: в фоновом режиме периодически запускаются и завершаются какие-то приложения, придерживаются своего расписания автоматизированные задачи, пишутся логи, приходят отчёты об изменении статуса служб. Часто эти процессы контролируют с помощью стандартного набора Unix-утилит. Но по мере усложнения систем появились новые задачи: real-time обработка невиданного доселе объёма данных, управление контейнерами приложений, управление доступом к облачным серверам и так далее. Насколько эффективно с этим можно справиться стандартными средствами?
                              Читать дальше →
                            • Что не так с вашей консольной программой?

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

                                Но как часто мы обсуждаем наши повседневные инструменты с точки зрения читабельности, хотя пишем под web и каждый день используем консольные утилиты? Сегодня Андрей Светлов расскажет, что со всем этим делать, и чем он пользуется для консолей. Помимо того, что Андрей  CPython Core developer и понемногу развивает Python, в свободное от работы время он эксперт по asyncio, со-автор aiohttp, yarl, multidict и прочим популярным библиотекам.

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

                                  image

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

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

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


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