Pull to refresh
0
0
Вячеслав Кузнецов @ya_ne_znau

User

Send message

Как минимально жизнеспособный продукт стал максимально переоцененной концепцией

Level of difficultyEasy
Reading time5 min
Views7.1K

Как контекст повлиял на оригинальную концепцию MVP и как сегодня стоит подходить к его разработке, чтобы запустить действительно успешный на рынке продукт.

Читать далее
Total votes 14: ↑14 and ↓0+14
Comments17

1. Введение в Unicode (опять?)

Level of difficultyMedium
Reading time25 min
Views16K

Всем здравствуйте, меня зовут Антон, и этой статьей я открываю новый цикл публикаций про Unicode. Сразу может возникнуть вопрос — зачем? Их же и так море?

На Хабре, как и вообще в русскоязычном сегменте Интернета, в‑основном можно найти обзорные статьи, дающие лишь общее представление о Юникоде, но о том, как с ним работать — информации крайне мало. Сами же его разработчики, Unicode Consortium, предоставляют довольно подробную… но очень объемную документацию, которую при этом мало просто прочитать — для полного понимания много чего в ней стоит прокодить.

тут есть что почитать
Total votes 48: ↑46 and ↓2+56
Comments18

Самые распространённые логические ошибки

Level of difficultyEasy
Reading time12 min
Views67K

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

Читать далее
Total votes 68: ↑63 and ↓5+74
Comments101

Бардак в идеальном мире. Часть 1

Level of difficultyMedium
Reading time14 min
Views28K

Откуда берëтся динамический хаос в простейших механических системах? Как его изучать? А это настоящий хаос или просто что-то очень сложное?

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

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

Читать далее
Total votes 153: ↑153 and ↓0+153
Comments60

Почему работает алгоритм преобразования инфиксной записи в постфиксную

Level of difficultyMedium
Reading time4 min
Views7.7K

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

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

Читать далее
Total votes 17: ↑14 and ↓3+19
Comments15

Почему Trino такой быстрый: архитектура оптимизатора SQL-запросов

Reading time12 min
Views25K

Аналитические системы должны эффективно обрабатывать сложные пользовательские запросы к десяткам и сотням терабайт данных (пета-?). Продвинутый оптимизатор запросов является важнейшим компонентом любого big data движка. В данной статье мы рассмотрим, как устроен оптимизатор запросов в массивно-параллельном аналитическом SQL-движке Trino.

И как же он устроен?
Total votes 14: ↑14 and ↓0+14
Comments2

Поговорим об оптимизирующих компиляторах. Сказ первый: SSA-форма

Level of difficultyMedium
Reading time9 min
Views17K

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

Коротко обо мне. Меня зовут Макс, и так получилось, что я вот уже 10 лет, почти с самого начала своей карьеры, занимаюсь оптимизирующими компиляторами. Я начинал в Intel, потом перешёл в Azul Systems, год провёл в Cadence и вернулся обратно, всё это время занимаясь компиляторными оптимизациями для Java, C++ и нейросетевых моделей. На момент написания статьи у меня чуть за 900 патчей в LLVM, большинство из них посвящено цикловым оптимизациям.

За это время я провёл десятки собеседований на позиции как интернов, так и инженеров сеньорного уровня, и довольно часто люди, приходя на эти собеседования, многих вещей не знают или знают поверхностно. И я подумал: а мог бы я написать такой цикл статей, чтобы человек, прочитав их, узнал бы всю ту базу, которая, на мой собственный взгляд, необходимо начинающему компиляторному инженеру? Очень бы хотелось, чтобы новичку в этой области можно бы было дать один (относительно небольшой по объёму) набор текстов, чтобы он получил оттуда всё необходимое для старта. Это не перевод, текст оригинальный, поэтому в нём могут быть ошибки и неточности, которые я буду рад исправить, если вы мне их укажете.

Итак, поехали.

Погрузиться
Total votes 93: ↑91 and ↓2+117
Comments58

Кросс-компиляция под RISC-V для самых маленьких

Level of difficultyEasy
Reading time6 min
Views7.7K

Архитектура 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 votes 9: ↑9 and ↓0+9
Comments10

Моя дорога в Арч

Level of difficultyMedium
Reading time10 min
Views8.8K

Что ж. Я таки запишу это.

Всё началось с того, что я уже около двадцати лет пользуюсь такими ништяками, как Total Commander с заточенными плагинами, настройками, выученными хот-кеями и прочим фаршем, AIMP с лаконичным, но наглядным скином, кастомными PotPlayer, IrfanView, Notepad++, Process Explorer... И всё это приправлено ...

Так, мне нужен хот-кей для сохранения снимка активного монитора.

И это всё было приправлено вымученной Виндой: панель управления в стиле Windows 10; файервол в стиле Windows 10; антивирус в стиле Windows 10; произвольное включение сразу после перехода в спящий режим (даже с запретом на подобные таймеры) и т.д. Не исключаю, однако, что я излишне придираюсь.

Читать далее
Total votes 16: ↑12 and ↓4+12
Comments25

Зачем разработчику нужен Linux вообще и терминал в частности

Level of difficultyEasy
Reading time8 min
Views27K

Тема "Windows vs Linux" является частой причиной холиваров. Спорить бессмысленно, так как для каждой задачи требуется свой инструмент. Позвольте заинтересовать вас чудесным миром Linux и теми бонусами, которые вы можете получить от использования терминала в повседневной деятельности. Всё разберём на примерах реального использования.

Читать далее
Total votes 47: ↑37 and ↓10+33
Comments324

Какая ты кривая, или математика вокруг нас

Level of difficultyEasy
Reading time15 min
Views22K

Слово «математика» у кого-то ассоциируется с вечной зубрёжкой и строгим учителем, другие же представляют себе некоторую абстракцию, существующую отдельно от нашего мира, но есть и те, кто видит проявления этой науки в нашей повседневной жизни.

Читать далее
Total votes 94: ↑94 and ↓0+94
Comments37

О том, как я сломал Ubuntu и убил день на то, чтобы починить

Level of difficultyEasy
Reading time2 min
Views44K

Бывало у вас такое, что 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 вы встретите людей, которые дошли до этого этапа из-за греческой или русской раскладки и отчаялись, попросту переустановив операционную систему с флешки или другого физического накопителя. Не поступайте так, суицид - не выход.

Читать далее
Total votes 86: ↑79 and ↓7+88
Comments190

Математический подход к выбору девушки*. Правило 37%

Level of difficultyEasy
Reading time7 min
Views46K


В наше время многие находят вторую половинку в интернете: на тематических форумах и в онлайн-сообществах, в играх, на сайтах знакомств и приложениях вроде «Тиндера», где знакомства вообще поставлены на конвейер. Если десять лет назад 22% всех браков в США начинались со знакомства в интернете, то сейчас доля онлайн-знакомств превысила 39%. По сути, интернет стал основным способом знакомства мужчин и женщин, как долговременного, так и краткосрочного. Это очень удобно для гиков и специалистов с техническим образованием, поскольку мы получаем конкурентное преимущество, используя привычные инструменты. Например, можно поддерживать десятки чат-сессий в десктопном приложении или применять методы численного анализа в Excel/Google Sheets.

*Примечание. Под «девушкой» здесь и далее подразумевается любой объект, поочерёдно рассматриваемый из ограниченного пула схожих объектов с отличающимися характеристиками. Это может быть не только девушка, но и мужчина, квартира для съёма, автомобиль на вторичном рынке, домик в деревне, работодатель и т. д.
Читать дальше →
Total votes 56: ↑52 and ↓4+63
Comments188

Руководство по Кросс-Платформенному Системному Программированию для UNIX и Windows: Уровень 1

Reading time68 min
Views11K

С помощью этого учебного материала мы научимся писать кросс-платформенный код на Си, используя системные функции популярных ОС (Windows, Linux/Android, macOS и FreeBSD): управление файлами и файловый I/O, консольный I/O, пайпы (неименованные), запуск новых процессов. Мы напишем свои небольшие вспомогательные функции поверх низкоуровневого системного АПИ (API), для того чтобы наш основной код, используя эти функции, мог работать на любой ОС без изменений. Этот учебный материал — начального уровня. Я делю сложные вещи на части, чтобы примеры кода здесь не были слишком заумными для тех, кто только что начал программировать на Си. Мы обсудим различия между системными АПИ и разберёмся, как создать кросс-платформенный программный интерфейс, который скрывает все эти различия от пользователя этого интерфейса.

Читать далее
Total votes 20: ↑19 and ↓1+24
Comments27

Carbonyl — графический веб-браузер для Linux-консолей

Level of difficultyMedium
Reading time5 min
Views16K

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

Большинство основных дистрибутивов Linux поставляются с предустановленными Firefox или Falkon. И идея текстового браузера для консоли Linux может показаться абсурдной. В конце концов, первые браузеры были основаны на графическом интерфейсе, а современный Интернет так вообще состоит из графики и JavaScript — элементов, с которыми консольным браузерам трудно или даже невозможно работать. Но именно эта несовместимость с современной Сетью делает консольные браузеры такими привлекательными для некоторых пользователей. Для этого есть несколько причин. Интерфейсы таких браузеров чрезвычайно просты в компоновке и работают очень быстро. Текстовые браузеры требуют меньше пропускной способности для работы, и загружают страницы намного быстрее, чем графические. Кроме того, графические браузеры потребляют больше ресурсов ЦП для Javascript, CSS и т. д. Также изображения, автоматически воспроизводимые видео и звуковые эффекты могут отвлекать внимание пользователя.

Но как можно сохранить малое потребление ресурсов ЦП текстовых браузеров, при этом отображая графику через консоль?

Через Carbonyl.
Читать дальше →
Total votes 30: ↑24 and ↓6+28
Comments12

Пишем форк Chrome, который рендерит браузер в терминале

Level of difficultyMedium
Reading time12 min
Views5.8K

Несколько месяцев назад я писал о форке Chrome, превращающем HTML в SVG, а сегодня хочу сделать нечто похожее, заставив его выполнять рендеринг в терминал.

Представляю вашему вниманию веб-браузер Carbonyl!
Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments13

Как красиво писать формулы c LaTeX?

Level of difficultyEasy
Reading time5 min
Views34K

Привет, Хабр!

Меня зовут Шайдурова Арина, я Data Scientist  и участник профессионального сообщества NTA. Сегодня я поделюсь с вами своим опытом использования LaTeX для написания математических формул. Всё просто и с примерами, идеально подойдет для новичков синтаксиса LaTeX.

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

Читать далее
Total votes 18: ↑18 and ↓0+18
Comments41

Казалось бы, простой вопрос: что такое паттерны проектирования?

Reading time6 min
Views18K
image

В индустрии разработки ПО есть ряд тем, о которых ведутся споры почти в каждой компании. Я считаю, что история паттернов проектирования — одна из них. Можно найти сколько угодно постов, статей и ответов на Quora/Stackoverflow в пользу и не в пользу паттернов проектирования. Например, на днях я наткнулся на этот старый вопрос на Quora:
«Почему сейчас программисты меньше говорят о паттернах проектирования? Какие паттерны (если они есть) все еще представляют ценность?»
Читать дальше →
Total votes 17: ↑15 and ↓2+22
Comments3

Как не надо объяснять людям задачи и изменения

Level of difficultyEasy
Reading time11 min
Views11K


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

Быть руководителем в ИТ сегодня = быть переговорщиком.

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

Сейчас расскажу несколько случаев эпических провалов, когда руководитель хотел сделать что-то хорошее, а получалось только стечь под стол и облажаться.

Ещё нужно понимать, что не со всеми людьми работает логика. Есть прогрессивные разработчики, есть early adopters, есть люди-юристы, есть динозавры-кинестетики. Начну, пожалуй, как раз с последних, потому что в нашем кровавом энтерпрайзе они создают реальные проблемы.
Читать дальше →
Total votes 25: ↑21 and ↓4+25
Comments19

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity