Как контекст повлиял на оригинальную концепцию MVP и как сегодня стоит подходить к его разработке, чтобы запустить действительно успешный на рынке продукт.
User
Подпись коммитов в git при помощи gpg
В этой статье я расскажу о том, как и зачем подписывать и верифицировать коммиты в git при помощи gpg.
1. Введение в Unicode (опять?)
Всем здравствуйте, меня зовут Антон, и этой статьей я открываю новый цикл публикаций про Unicode. Сразу может возникнуть вопрос — зачем? Их же и так море?
На Хабре, как и вообще в русскоязычном сегменте Интернета, в‑основном можно найти обзорные статьи, дающие лишь общее представление о Юникоде, но о том, как с ним работать — информации крайне мало. Сами же его разработчики, Unicode Consortium, предоставляют довольно подробную… но очень объемную документацию, которую при этом мало просто прочитать — для полного понимания много чего в ней стоит прокодить.
Самые распространённые логические ошибки
Изучение логических ошибок помогает в развитии критического мышления, необходимого во всех сферах жизни. School of Thought проделала отличную работу, описав 24 наиболее распространенные логические ошибки.
Бардак в идеальном мире. Часть 1
Откуда берëтся динамический хаос в простейших механических системах? Как его изучать? А это настоящий хаос или просто что-то очень сложное?
Я начинаю мини-серию статей, в которой мы будем понемногу знакомиться с элементами теории хаоса. За последние полвека сформировался набор классических примеров, кочующих из одного популярного введения в другое: аттрактор Лоренца, логистическое уравнение, двойной маятник, подкова Смэйла и т.п. Я, конечно, их упомяну, но мне бы хотелось показать что, кроме классики, есть хаотические системы, обойдённые вниманием, но, тем не менее, имеющие малую размерность и вполне ясные физические модели, при этом способные порождать красивые и сложные, примеры хаотического поведения, поддающиеся объяснению.
Это пример небольшого исследования, доступного студентам младших курсов, поэтому я позволю себе привести некоторые подробности анализа, которые искушённому читателю могут показаться излишними. Моя задача показать, что даже очень простые системы могут быть очень интересными, красивыми и доступными для глубокого анализа. И, конечно же, это повод показать симпатичные картинки, как правило, фрактальные. Ведь все же любят фракталы, верно? Ну, поехали!
Почему работает алгоритм преобразования инфиксной записи в постфиксную
Существуют алгоритмы, короткие и простые по формулировке, но не очень лёгкие для понимания. Один из них - алгоритм преобразования выражения в инфиксной форме в постфиксную (она же обратная польская нотация), (он же алгоритм сортировочной станции).
Приведенные рассуждения помогут понять алгоритм и, при необходимости, восстановить по памяти и реализовать самостоятельно.
Почему Trino такой быстрый: архитектура оптимизатора SQL-запросов
Аналитические системы должны эффективно обрабатывать сложные пользовательские запросы к десяткам и сотням терабайт данных (пета-?). Продвинутый оптимизатор запросов является важнейшим компонентом любого big data движка. В данной статье мы рассмотрим, как устроен оптимизатор запросов в массивно-параллельном аналитическом SQL-движке Trino.
Поговорим об оптимизирующих компиляторах. Сказ первый: SSA-форма
Всем привет. Сегодня я хотел бы поговорить об устройстве современных оптимизирующих компиляторов. Я никогда не публиковался на Хабре ранее, но надеюсь, что мне удастся написать серию статей, которая просуммирует мой опыт в этой области.
Коротко обо мне. Меня зовут Макс, и так получилось, что я вот уже 10 лет, почти с самого начала своей карьеры, занимаюсь оптимизирующими компиляторами. Я начинал в Intel, потом перешёл в Azul Systems, год провёл в Cadence и вернулся обратно, всё это время занимаясь компиляторными оптимизациями для Java, C++ и нейросетевых моделей. На момент написания статьи у меня чуть за 900 патчей в LLVM, большинство из них посвящено цикловым оптимизациям.
За это время я провёл десятки собеседований на позиции как интернов, так и инженеров сеньорного уровня, и довольно часто люди, приходя на эти собеседования, многих вещей не знают или знают поверхностно. И я подумал: а мог бы я написать такой цикл статей, чтобы человек, прочитав их, узнал бы всю ту базу, которая, на мой собственный взгляд, необходимо начинающему компиляторному инженеру? Очень бы хотелось, чтобы новичку в этой области можно бы было дать один (относительно небольшой по объёму) набор текстов, чтобы он получил оттуда всё необходимое для старта. Это не перевод, текст оригинальный, поэтому в нём могут быть ошибки и неточности, которые я буду рад исправить, если вы мне их укажете.
Итак, поехали.
Кросс-компиляция под RISC-V для самых маленьких
Архитектура RISC-V корнями уходит к началу 1980-х годов, группа под руководством Дэвида Паттерсона в стенах университета Беркли разработала архитектуры RISC-I и RISC-II. Долгое время архитектуре приходилось существовать в тени лицензируемых ARM и MIPS ядер. Архитектура RISC-V появилась в 2010 году, и поддерживается Linux Foundation. Отметка в 10 миллиардов произведенных ядер была преодолена за 12 лет.
Сейчас RISC-V может сыграть большую роль в становлении российской микроэлектроники. Компании CloudBEAR и Syntacore работают над процессорами собственной микроархитектуры, совместимыми с системой команд RISC-V. Архитектура RISC-V позволяет нашим разработчикам создавать энергоэффективные процессоры сравнимого с мировым уровня и сохранять программную совместимость со всеми программами, созданными для экосистемы RISC-V во всем мире.
В данной статье мы попробуем на примере RISC-V платы MangoPi разобраться, как выполняется кросс-компиляция под RISC-V.
Моя дорога в Арч
Что ж. Я таки запишу это.
Всё началось с того, что я уже около двадцати лет пользуюсь такими ништяками, как Total Commander с заточенными плагинами, настройками, выученными хот-кеями и прочим фаршем, AIMP с лаконичным, но наглядным скином, кастомными PotPlayer, IrfanView, Notepad++, Process Explorer... И всё это приправлено ...
Так, мне нужен хот-кей для сохранения снимка активного монитора.
И это всё было приправлено вымученной Виндой: панель управления в стиле Windows 10; файервол в стиле Windows 10; антивирус в стиле Windows 10; произвольное включение сразу после перехода в спящий режим (даже с запретом на подобные таймеры) и т.д. Не исключаю, однако, что я излишне придираюсь.
Зачем разработчику нужен Linux вообще и терминал в частности
Тема "Windows vs Linux" является частой причиной холиваров. Спорить бессмысленно, так как для каждой задачи требуется свой инструмент. Позвольте заинтересовать вас чудесным миром Linux и теми бонусами, которые вы можете получить от использования терминала в повседневной деятельности. Всё разберём на примерах реального использования.
Какая ты кривая, или математика вокруг нас
Слово «математика» у кого-то ассоциируется с вечной зубрёжкой и строгим учителем, другие же представляют себе некоторую абстракцию, существующую отдельно от нашего мира, но есть и те, кто видит проявления этой науки в нашей повседневной жизни.
О том, как я сломал Ubuntu и убил день на то, чтобы починить
Бывало у вас такое, что Snapd User Session Agent входит в бесконечный цикл? Вы вводите правильный пароль и... попадаете на тот же экран входа.
Это широко известная ситуация, которая может происходить из-за самых разных факторов. Не менее широко известен и универсальный рецепт: попадите в терминал bash через tty (Ctrl + Alt + F1), найдите проблему и устраните её.
Однако что, если вы не можете попасть в терминал по какой-либо причине? Например, раскладка вашей клавиатуры по умолчанию отличается от раскладки вашего логина и пароля? Этому особому кейсу я и хотел бы посвятить статью, так как потратил на него уйму времени и ещё больше - нервных клеток.
Итак, вы впервые сталкиваетесь с infinite login loop и пытаетесь залогиниться в терминал при помощи tty. Но тут вас встречает "родная" русская раскладка вместо родной английской. Никакие хоткеи не работают: вы попробовали Shift + Alt, Alt + Shift, Cmd (Win) + пробел и все до единой остальные. Ничего не помогает. Можно сколько угодно стрессовать и сомневаться в своей вменяемости ("каким идиотом надо быть, чтобы поставить русскую раскладку как основную на машине Ubuntu???"), это не отменяет тупиковой ситуации. Как итог - вход невозможен. Вы перезагружаете машину, зажимаете Esc (иногда также Shift, но не в моем случае), чтобы попасть в grub menu и входите в recovery mode. Но - о ужас - и тут вас преследует ненавистная раскладка.
На просторах форумов и тредов StackOverflow вы встретите людей, которые дошли до этого этапа из-за греческой или русской раскладки и отчаялись, попросту переустановив операционную систему с флешки или другого физического накопителя. Не поступайте так, суицид - не выход.
Математический подход к выбору девушки*. Правило 37%
В наше время многие находят вторую половинку в интернете: на тематических форумах и в онлайн-сообществах, в играх, на сайтах знакомств и приложениях вроде «Тиндера», где знакомства вообще поставлены на конвейер. Если десять лет назад 22% всех браков в США начинались со знакомства в интернете, то сейчас доля онлайн-знакомств превысила 39%. По сути, интернет стал основным способом знакомства мужчин и женщин, как долговременного, так и краткосрочного. Это очень удобно для гиков и специалистов с техническим образованием, поскольку мы получаем конкурентное преимущество, используя привычные инструменты. Например, можно поддерживать десятки чат-сессий в десктопном приложении или применять методы численного анализа в Excel/Google Sheets.
*Примечание. Под «девушкой» здесь и далее подразумевается любой объект, поочерёдно рассматриваемый из ограниченного пула схожих объектов с отличающимися характеристиками. Это может быть не только девушка, но и мужчина, квартира для съёма, автомобиль на вторичном рынке, домик в деревне, работодатель и т. д.
Руководство по Кросс-Платформенному Системному Программированию для UNIX и Windows: Уровень 1
С помощью этого учебного материала мы научимся писать кросс-платформенный код на Си, используя системные функции популярных ОС (Windows, Linux/Android, macOS и FreeBSD): управление файлами и файловый I/O, консольный I/O, пайпы (неименованные), запуск новых процессов. Мы напишем свои небольшие вспомогательные функции поверх низкоуровневого системного АПИ (API), для того чтобы наш основной код, используя эти функции, мог работать на любой ОС без изменений. Этот учебный материал — начального уровня. Я делю сложные вещи на части, чтобы примеры кода здесь не были слишком заумными для тех, кто только что начал программировать на Си. Мы обсудим различия между системными АПИ и разберёмся, как создать кросс-платформенный программный интерфейс, который скрывает все эти различия от пользователя этого интерфейса.
Carbonyl — графический веб-браузер для Linux-консолей
Консоль Linux обычно имеет дисплей с клавиатурой и используется для подключения к главному компьютеру для обмена данными и отображения результатов обработки. В большинстве случаев сама обработка выполняется хост-компьютером. Однако есть гики, которые хотят на консоли просматривать веб-страницы, и есть программное обеспечение, такие как текстовые браузеры типа «Browsh», которые могут отображать веб-сайты в графическом виде без графического интерфейса.
Большинство основных дистрибутивов Linux поставляются с предустановленными Firefox или Falkon. И идея текстового браузера для консоли Linux может показаться абсурдной. В конце концов, первые браузеры были основаны на графическом интерфейсе, а современный Интернет так вообще состоит из графики и JavaScript — элементов, с которыми консольным браузерам трудно или даже невозможно работать. Но именно эта несовместимость с современной Сетью делает консольные браузеры такими привлекательными для некоторых пользователей. Для этого есть несколько причин. Интерфейсы таких браузеров чрезвычайно просты в компоновке и работают очень быстро. Текстовые браузеры требуют меньше пропускной способности для работы, и загружают страницы намного быстрее, чем графические. Кроме того, графические браузеры потребляют больше ресурсов ЦП для Javascript, CSS и т. д. Также изображения, автоматически воспроизводимые видео и звуковые эффекты могут отвлекать внимание пользователя.
Но как можно сохранить малое потребление ресурсов ЦП текстовых браузеров, при этом отображая графику через консоль?
Через Carbonyl.
Пишем форк Chrome, который рендерит браузер в терминале
Несколько месяцев назад я писал о форке Chrome, превращающем HTML в SVG, а сегодня хочу сделать нечто похожее, заставив его выполнять рендеринг в терминал.
Представляю вашему вниманию веб-браузер Carbonyl!
Как красиво писать формулы c LaTeX?
Привет, Хабр!
Меня зовут Шайдурова Арина, я Data Scientist и участник профессионального сообщества NTA. Сегодня я поделюсь с вами своим опытом использования LaTeX для написания математических формул. Всё просто и с примерами, идеально подойдет для новичков синтаксиса LaTeX.
LaTeX является очень популярным инструментом для написания различных материалов: в нём можно написать и книгу, и резюме, и дипломную работу, создать постер и даже календарь. Среди его пользователей он ценится за многие качества, но основную ценность для технических задач представляет его удобное, гибкое и легкое написание всевозможных математических формул!
Казалось бы, простой вопрос: что такое паттерны проектирования?
В индустрии разработки ПО есть ряд тем, о которых ведутся споры почти в каждой компании. Я считаю, что история паттернов проектирования — одна из них. Можно найти сколько угодно постов, статей и ответов на Quora/Stackoverflow в пользу и не в пользу паттернов проектирования. Например, на днях я наткнулся на этот старый вопрос на Quora:
«Почему сейчас программисты меньше говорят о паттернах проектирования? Какие паттерны (если они есть) все еще представляют ценность?»
Как не надо объяснять людям задачи и изменения
Мы меняем процессы разработки в компании, и поэтому я постоянно каждый день объясняю что-то разным людям. Любое изменение — даже банальная постановка задачи на стендапе — требует понимания того, как это надо и как это не надо делать. Смысл в том, что если вы хотите руководить командой, то нужно уметь убедить, договориться, отстоять свою позицию — иначе вы неизбежно будете делать то, что вам скажут. В том числе те, кто разбирается в вопросе хуже вас.
Быть руководителем в ИТ сегодня = быть переговорщиком.
Но этого мало. С подвешенным языком можно только чуть улучшить понимание задачи. Изначально нужно выстроить такую систему, чтобы весь процесс целиком был понятен участникам, они могли на него повлиять и чувствовали это. Хороший лидер не приказывает, а создаёт такие условия, что не выполнить задачу уже невозможно, потому что всем очевидно, что нужно делать.
Сейчас расскажу несколько случаев эпических провалов, когда руководитель хотел сделать что-то хорошее, а получалось только стечь под стол и облажаться.
Ещё нужно понимать, что не со всеми людьми работает логика. Есть прогрессивные разработчики, есть early adopters, есть люди-юристы, есть динозавры-кинестетики. Начну, пожалуй, как раз с последних, потому что в нашем кровавом энтерпрайзе они создают реальные проблемы.
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Registered
- Activity