
Всем привет, меня зовут Иван, я Android-разработчик и сегодня мы с вами поговорим об контрактах. Я попробую рассказать и показать примеры для работы с API
User
Всем привет, меня зовут Иван, я Android-разработчик и сегодня мы с вами поговорим об контрактах. Я попробую рассказать и показать примеры для работы с API
Линус Торвальдс, создатель (и великодушный диктатор) Linux, всегда с особой критикой относился к C++, объясняя почему он отвергает его в разработке ядра Linux. Но он не просто резко высказывается против использования C++, а приводит ряд аргументов, которые мы с вами сегодня и рассмотрим.
Привет, Хабр! Я Лера, технический писатель в Авито. В этой статье я разбираю тезисы Джеймса Клира в его работе «Атомные привычки». Материал будет полезен тем, кто хочет подробно разобраться в природе привычек и понять, как незначительные изменения могут сильно улучшить траекторию ваших результатов и уровень жизни в целом.
Kotlin уже давно стал основным языком программирования на Android. Одна из причин, почему мне нравится этот язык, это то, что функции в нем являются объектами первого класса. То есть функцию можно передать как параметр, использовать как возвращаемое значение и присвоить переменной. Также вместо функции можно передать так называемую лямбду. И недавно у меня возникла интересная проблема, связанная с заменой лямбды ссылкой на функцию.
Все знают Алана Тьюринга. Он создал компьютер, который помог взломать Энигму, а также заложил основы концепции искусственного интеллекта. Его знаменитый тест «проверки на вшивость» недавно прошел ChatGPT (правда, не всех это убедило, да и к самому тесту есть вопросы).
Но вот про Алонзо Чёрча, ближайшего сподвижника Тьюринга, который сыграл огромную роль в появлении современных функциональных языков программирования, как-то редко вспоминают. Мы решили исправить эту ситуацию и рассказать про этого удивительного человека.
Возможно, вы понимаете как писать хороший код, как придерживаться хорошего дизайна. Но структурировать эти знания не получается. Книга Джона Оустерхаута “A philosophy of software design” может помочь исправить это.
Она позволила структурировать знания, накопленные мною за 3 года работы разработчиком и исправить многие ошибки в понимании хорошего дизайна кода. Она помогла четче прояснить для себя, что же это такое.
Здесь я хочу сделать краткое изложение всей книги в виде заметок, которые я записывал, когда читал её.
Уоррен Баффетт — живая легенда фондового рынка, один из богатейших людей планеты и известнейший инвестиционный гуру в мире. Его принципы стоимостного инвестирования и жизненный путь скрупулезно препарируются десятками авторов, и одно его слово до сих пор способно переворачивать с ног на голову рынок ценных бумаг.
С другой стороны, многие воспринимают его уже скорее как героя анекдотов, чем реального человека, эдакого маскота фондового рынка. Но в биографии этого человека есть много интересного. Как помогли Баффетту на пути ценные жизненные уроки, вынесенные в 11 лет, или книжки, прочитанные в семилетнем возрасте, какой момент был в его судьбе переломным, по мнению ChatGPT, и как он заработал прозвище «оракула из Омахи» — под катом.
Многие из Android-разработчиков для Dependency Injection используют Dagger или его «обёртку» Hilt. Но не многие из них используют Dagger SPI. Этот механизм предоставляет нам доступ к графу зависимостей, что позволяет нам добавить свои проверки графа и не только. В этой статье я хочу рассмотреть работу с Dagger SPI на примере поиска неиспользуемых Component Dependencies. После прочтения статьи вы сможете находить их, или при желании сможете писать свои проверки графа зависимостей. Ну или что вам там в голову взбредёт.
Среди научно‑популярных книг, которые мне доводилось переводить, особняком стоит «Мастерская памяти» от издательства «Портал» (большая часть сотрудничества с этим издательством пришлась на тревожный пандемийный период, и я могу только лишний раз поблагодарить уважаемых Веру Малышкину и Любовь Родионову за то, что тогда помогли мне от него отвлечься). Автор этой книги, Лин Келли — австралийка в возрасте за 60, которая профессионально, в спортивном режиме, выступает в своей возрастной группе в соревнованиях по «мнемонической атлетике». Книга максимально актуальна в наше время, так как помогает бороться и с дефицитом внимания, и с недостаточной концентрацией и, что вообще незаменимо — с возрастным ухудшением памяти. В этой статье я хочу подробнее рассказать об одной из самых важных рассмотренных в ней мнемонических техник, которая наиболее известна в древнегреческой трактовке и называется «чертоги разума». В английских источниках встречаются формулировки «memory palace» и «mind palace» а также «brain attic» — это вариант, в котором данную технику переосмыслил Артур Конан‑Дойл.
В этой статье рассмотрим пять лучших библиотек Python, предназначенных специально для работы с русским языком в контексте NLP. От базовых задач, таких как токенизация и морфологический анализ, до сложных задач обработки и понимания естественного языка.
Часто бывает, что после разбиения проекта на модули скорость его сборки сильно ниже ожидаемой. Причины могут быть разные, от кривых настроек Gradle до неподходящего железа. Сегодня я хочу разобрать одну из причин — бутылочные горлышки среди модулей, и как с ними бороться.
В мире разработки программного обеспечения существует множество "священных коров" — принципов и практик, которые принимаются как данность и редко подвергаются критическому анализу. Особенно показательна ситуация с принципами SOLID на русскоязычных ресурсах: достаточно открыть Хабр, чтобы найти 100500 статей о SOLID, и в каждой из них принципы интерпретируются по-разному.
Само существование такого количества "объяснительных" статей говорит о фундаментальной проблеме: если принципы требуют толкования, значит их названия не являются самодостаточными и интуитивно понятными. А если каждый разработчик понимает принципы по-своему, возникает вопрос — зачем вообще нужны принципы, которые не дают однозначного руководства к действию? Принципы SOLID, предложенные Робертом Мартином, давно стали одной из таких "священных коров". Однако пришло время честно признать: то, как мы используем SOLID сегодня, часто противоречит изначальным идеям и в целом иногда может приносить больше вреда, чем пользы. Зависит от контекста.
Самый яркий пример искажения первоначального замысла — это интерпретация принципа единственной ответственности (SRP).
Хорошая новость — в России готова к конкуренции отечественная разработка технологии для экстракции лентикулы. Плюс отличная новость: в России теперь есть VISUMAX 800 от Zeiss, который делает коррекцию всего за 9 секунд! Это — SMILE Pro. И именно он — «тот же SMILE, но современнее».
Помните, как в начале пути технология SMILE встречала яростное сопротивление с профессиональной сцены и в кулуарах? Приходилось цифрами, статистикой, публикацией книги побеждать LASIK, доказывая, что 100%-но фемтосекундная экстракция лентикулы SMILE — это лучший метод.
Шли годы и те, кто «жевал попкорн», наблюдая баталии между SMILE и LASIK, сами стали осваивать технологию. Компании-конкуренты разрабатывали «дженерики» SMILE, и с их появлением началась новая эпоха — время лазеров для лентикулярной экстракции. Эти лазеры не относились к SMILE-технологии, но везде рекламировались как «новейший, усовершенствованный SMILE.
Теперь плохая новость. Сегодня немало клиник, которые пытаются «примазаться к успеху проверенных технологий» и продать CLEAR и SmartSight как «тот же SMILE, но современнее». А страдаете от этого вы — пациенты, которые потом месяцами ждут, когда же, наконец, «просветлеет в глазах» после таких инноваций.
Так в чем же отличия? Давайте разберем, как вас могут обмануть при выборе лазерной коррекции зрения, и что нужно знать, чтобы не попасться на удочку недобросовестного маркетинга
Вчера перевели в статус Candidate новый JEP 421: Deprecate Finalization for Removal. Путь к удалению механизма финализации из Java начался в Java 9, когда метод Object.finalize()
был впервые объявлен deprecated. Рано или поздно механизм исчезнет из Java, поэтому если вы его используете, самое время задуматься об альтернативах. Однако статья не об этом.
Я думал, что довольно хорошо представляю себе все минусы механизма финализации. Многие из них перечислены, например, в этой статье. Однако, прочитав JEP, я узнал об уязвимости, о которой раньше и не думал. Оказывается, с помощью финализации можно создать объект со сломанными инвариантами.
В Java 8 кардинально переработали процедуру вывода типов выражений. В спецификации появилась целая новая глава на эту тему. Это весьма сложная штука, изложенная скорее на языке алгебры, чем на языке нормальных людей. Не каждый программист готов в этом разобраться. Я, разработчик IDE, которому приходилось ковыряться в соответствующем коде, к своему стыду тоже довольно плохо разбираюсь в этой теме и понимаю процесс только по верхам. Причём сложно не только мне, но и авторам компилятора Java. После выхода Java 8 обнаружились десятки багов, когда поведение компилятора не соответствовало спецификации, либо текст спецификации был неоднозначен. В средах разработки для Java ситуация обстояла не лучше: там тоже были баги, причём другие, поэтому код мог отображаться ошибочным в вашей IDE, но успешно компилироваться. Или наоборот. С годами ситуация улучшилась, многие баги исправили, хотя всё ещё в спецификации остались тёмные углы.
На habr ранее активно обсуждалась теория Вселенной, осциллирующей в черной дыре, которая развивается в ряде работ, в том числе моих с соавторами (но не только). Чего стоит дискуссия от 2018 года на 600 комментариев «Жизнь внутри черной дыры» (отмечу, что я не инициировал этот пост, просто меня спросили — не возражаю ли я, а я, конечно, вовсе нет). Там, конечно, много странных заявлений, но я не принимал прямое участие в этой дискуссии, потому что был слишком занят дальнейшим развитием теории. Но в этом году ситуация изменилась: работа над моделью циклической Вселенной с переменной гравитационной массой для меня практически завершена. Она подробно изложена в книге «Осциллирующая Вселенная», которая опубликована в бумажном и электронном варианте издательством Челябинского государственного университета в феврале 2023 года. Книгу (со свежими уточнениями на 25 сентября 2023 года) можно скачать на сайте Пущинской обсерватории.