Pull to refresh
102
Karma
21
Rating
Евгений @Izaron

Программист C++

Несоответствия исторических пластов Windows 11 — если копнуть, на дне сохранились даже элементы Windows 3.1

Дата-центр «Миран» corporate blog Interfaces *Development for Windows *Design Software
Retrospective
Translation


Спустя несколько лет Windows 11 доросла до более-менее нормального состояния, так что ею с удовольствием пользуется большинство людей. В сентябре вышло обновление Sun Valley (22H2) с давно назревшими изменениями в дизайне. Но достаточно ли их, чтобы устранить исторические несоответствия в UI?

Давайте посмотрим.

Примечание. В данном исследовании используется Windows 11 build 25267, последняя сборка Insider Dev на данный момент (01.01.2023 г).
Читать дальше →
Total votes 131: ↑127 and ↓4 +123
Views 39K
Comments 303

Разбираемся с интерфейсами в Go

VK corporate blog Programming *System Analysis and Design *Perfect code *Go *
Tutorial
Translation

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

  1. Человеческим языком объяснить, что такое интерфейсы.
  2. Объяснить, чем они полезны и как вы можете использовать их в своём коде.
  3. Поговорить о том, что такое interface{} (пустой интерфейс).
  4. И пройтись по нескольким полезным типам интерфейсов, которые вы можете найти в стандартной библиотеке.
Читать дальше →
Total votes 52: ↑46 and ↓6 +40
Views 73K
Comments 18

Обработка ошибок и C++

Programming *C++ *

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

О чём будет: разные способы обработки ошибок в C++, несколько советов от сообщества и немного заметок о различных жизненных (и не очень) ситуациях.

Обработать ошибки.
Total votes 27: ↑26 and ↓1 +25
Views 18K
Comments 20

WebAssembly: что и как

Website development *JavaScript *Browsers WebAssembly *


Эта статья основана на моём выступлении на конференции ITSubbotnik, прошедшем 2 ноября 2019 года в Москве.


Вообще я бэкенд программист, но меня заинтересовала эта технология, она позволяет использовать мои знания бэкенда на фронте.


Проблема


Начнём с проблемы, которая решается этой (относительно новой) технологией. Проблема эта — быстро исполнять код в браузере. Быстро — это значит, «быстрее чем JavaScript», в идеале настолько быстро, насколько позволяет имеющийся у нас процессор.

Читать дальше →
Total votes 62: ↑60 and ↓2 +58
Views 81K
Comments 136

Топ-10 докладов на С++ конференциях 2019-2022 года

PVS-Studio corporate blog C++ *Conferences

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

Читать далее
Total votes 21: ↑19 and ↓2 +17
Views 7.8K
Comments 3

Смерть Mozilla — это смерть открытого Интернета

ISPsystem corporate blog Browsers IT-companies
Translation

Если взглянуть на доли рынка популярных настольных браузеров, то выяснится, что Chrome принадлежит почти 70%. То есть 70% Интернета контролируется только одной компанией, причем компанией, которая зарабатывает деньги, продавая данные пользователей и размещая рекламу. Более того, у Google есть огромная мотивация установить как можно больший контроль над веб-стандартами, чтобы увеличить свою прибыль.

Доминирование Google на рынке браузеров приобретает еще более устрашающий вид, если включить в список остальные браузеры на базе Chromium, такие как Edge и Opera. В этом случае доля всех Chromium-браузеров составит более 80%. Ситуация становится еще серьезнее, если включить в рассмотрение мобильные браузеры. Safari, не основанный на Хроме, действительно составляет 25% доли рынка мобильных устройств, если учитывать iPhone. Но если убрать iPhone и оставить только устройства на базе Android, то Firefox (и его форки) — это единственный мобильный браузер, не использующий движок Chromium, и его доля составляет всего 0,5%.

Читать далее
Total votes 170: ↑166 and ↓4 +162
Views 54K
Comments 541

Почему аспирантура — зло

IT career Reading room
✏️ Technotext 2022

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

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

Читать далее
Total votes 237: ↑216 and ↓21 +195
Views 85K
Comments 481

Пиксель-арт: от черновика до игрового ассета

Game development *Graphic design *Game design *
Translation
imageimage
В этой статье я постараюсь визуализировать общий подход к работе. Итак, вы решили учиться арту: вы скачали какое-то ПО, запустили его и увидели все эти опции, бесконечные цвета и многое другое, быстро всё закрыли, удалили программу и выбросили свой ноутбук в окно.

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

Если вам это знакомо, то данная статья как раз для вас, так что продолжайте читать.

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

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

Если возьмётесь за работу очень усердно, то, возможно, получите неплохие результаты через несколько месяцев.
Читать дальше →
Total votes 104: ↑103 and ↓1 +102
Views 98K
Comments 20

Лучший технический вопрос, который мне задавали на собеседовании

Entertaining tasks Programming *C++ *Algorithms *Database Administration *
Translation

Много воды утекло с тех пор, как я в последний раз участвовал в собеседовании по программированию как соискатель. Но до сих пор помню особенно полюбившийся мне вопрос с такого собеседования. Дело было в MemSQL, году так в 2013. (Они даже успели переименоваться, поэтому, полагаю, конкретно этот вопрос они на собеседовании уже не задают. Не чувствую вины за то, что выдаю его. Это отличная история, которая также кажется мне поучительной; просто раньше я о ней никогда не писал).

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

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

Читать далее
Total votes 32: ↑28 and ↓4 +24
Views 34K
Comments 22

Как кушать вилкой

System Programming *C *

...или о fork() в двух словах.

Как люди решают задачи

Обычно у каждой задачи есть одно простое решение, которое воспринимается всеми как правильное. Люди воспринимают такое решение правильным либо исходя из личного опыта¹; исходя из опыта других людей² или просто не задумываясь о правильности³. И самое удивительное, что мир не взорвался, никто (массово) от этого не умер, код работает и приносит деньги.

¹ "всегда так пишу код, никто не умер"
² "копирую код из stack overflow который набрал больше всех плюсов"
³ "копирую первый попавшийся код из stack overflow"

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

Однако мы отвлеклись. Поставим перед собой задачу:

Нам необходимо наиболее правильным способом запустить из своего кода другую программу.

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

Содержание статьи

* Как кушать пингвина вилкой?
Общие знания о запуске процессов под LINUX-системами
*
Как кушать корову если есть вилка?
Copy-on-write, что это и зачем? vfork и почему он не лучше
*
Как кушать икру?
posix_spawn и почему он не замещает fork()
*
Как кушают клоны?
clone() под капотом у fork()
*
Почему когда ешь суп вилкой он утекает?
Утечка дескрипторов после fork() и как этого избежать
*
Почему у вилки три зуба?
Важность обработки всех вариантов возврата fork()
*
Как кушать демонов вилкой?
Запуск демонизирующихся процессов при помощи fork()
*
Как наложить вилкой в другую тарелку?
Переназначение дескрипторов вывода для нового процесса
*
Как сигналить вилке?
Взаимоотношения обработки сигналов и fork()
*
Как пользоваться вилкой когда сломалась ручка?
Самоликвидация дочернего процесса после завершения материнского
*
Как подготовиться к использованию вилки?
Сценарии использования pthread_atfork()
*
Как поцарапать окно вилкой?
Запуск дочернего процесса под Windows-системой
*
Как систематически пользоваться вилкой?
Почему вам не стоит пользоваться system()
*
Заключение
Благодарности и выводы

Читать далее
Total votes 74: ↑74 and ↓0 +74
Views 15K
Comments 24

Как английский язык изменил корейский: быт, работа, K-pop

EnglishDom corporate blog Reading room Learning languages

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

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

Читать далее
Total votes 21: ↑19 and ↓2 +17
Views 8.6K
Comments 19

Особенности реализации STL в Clang, GCC и Microsoft С++

VK corporate blog Programming *C++ *
✏️ Technotext 2022

Любая программа состоит из данных и алгоритмов их обработки. Для написания программ на C++ в начале 90-х годов прошлого века Александр Степанов с коллегами разработал библиотеку STL. Я, Михаил Полукаров из команды разработки VK Teams, заглянул под капот этой библиотеки чтобы разобраться, как правильно ей пользоваться, в каких случаях лучше использовать другие библиотеки, а в каких стоит написать что-то своё. 

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

Читать далее
Total votes 79: ↑77 and ↓2 +75
Views 17K
Comments 12

Основы Linux (обзор с практическим уклоном)

System administration **nix *
Tutorial
Sandbox
✏️ Technotext 2022

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

В последние несколько лет все больше и больше людей ищут возможность войти в ИТ или поглубже изучить Linux, повысив уровень своей квалификации. Вместе с тем полноценных обзоров с практическом уклоном по типу «все и сразу» написано не так уж и много (особенно на русском языке).

Главная задача данной статьи – указать начинающим специалистам направление развития, дать ключевые понятия для дальнейшего изучения и показать несколько простых практических приемов. По этой причине (а еще, безусловно, вследствие недостаточной квалификации автора) теоретический материал достаточно сильно упрощен.

Читать далее
Total votes 76: ↑72 and ↓4 +68
Views 152K
Comments 44

Инструкция для тех, кто решил что уже пора

IT-emigration

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

Начнем с плохих новостей. Да, на свете есть страны, в которых обсуждается тема "Зайцы охренели до такой степени, что жрут корм, оставленный для птиц" и все ждут выступление президента по этому поводу, потому что это самая серьезная проблема в стране. Но если мысль понаехать туда у тебя появилась только на прошлой неделе — это значит ты не занимался подготовкой предыдущие два года и, сори, тебе нужно заниматься подготовкой следующие два года. Может показаться что два года — это слишком и "мне то нужно завтра, какие два года". Но тут история такая: к началу текущей спецоперации ты уже не успел. У тебя есть шанс успеть к началу следующей. Воспользуешься ты им или нет - зависит только от тебя.

Опять же, я понимаю, что кто-то закончил языковую школу и при выступлении британской королевы подмечает стилистические ошибки ее английского, а кто-то консультировал Оракл при разработке HashMap и для них переезд — это вопрос желания, а не возможности. Но я говорю о неком "среднестатистическом случае", когда инглиш не флюент, а за плечами нет 10 лет опыта в аду.

В целом, до того, как начинать читать статьи "какие документы нужны для переезда в Швейцарию" у тебя, будущий ауслэндер, должны присутствовать четыре ключевых фактора успеха

Читать далее
Total votes 192: ↑169 and ↓23 +146
Views 179K
Comments 452

Планковские единицы: существует ли фундаментальный предел пространства и времени?

RUVDS.com corporate blog Popular science Nanotechnologies Physics Quantum technologies

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

  • Учёный в интервью оговаривается, что «длина Планка — это минимальное значимое расстояние», что является сильным упрощением.
  • Журналисты и популисты передают фразу дальше, пока она не деформируется в «длина Планка — это как размер пикселя для Вселенной», что неверно.
  • Учёные замечают ошибку и начинают поправлять, чтобы устранить недоразумение: «Планковская длина не похожа на размер пикселя для Вселенной. Это как раз тот масштаб, где квантовая гравитация становится актуальной». Что, безусловно, правильно, но…
  • Научпоп пережёвывает это, пока понятие не трансформируется в «планковская длина никогда не была минимальным расстоянием, это заблуждение. Это просто масштаб, на котором наши нынешние теории разрушаются, и ничто не указывает на то, что мы не можем достичь меньших масштабов». Это звучит разумно, но неверно.

Так что будет полезным разобраться, откуда все-таки следуют эти единицы и, собственно, для чего они задают предел.
Читать дальше →
Total votes 129: ↑128 and ↓1 +127
Views 40K
Comments 111

Три архитектуры эльфам, семь гномам, девять людям… где же искать ту, что объединит их все?

System Analysis and Design *Algorithms *Compilers *CPU
✏️ Technotext 2021

Проводится сеанс разоблачения магии (CISC, RISC, OoO, VLIW, EPIC, ...).
Без традиционной рубрики “а что, если” тоже не обошлось.

Добро пожаловать под кат, правда, лёгкого чтения ожидать не стоит.

Читать далее
Total votes 141: ↑141 and ↓0 +141
Views 23K
Comments 55

Как мы отказались от JPEG, JSON, TCP и ускорили ВКонтакте в два раза

VK corporate blog High performance *Website development *Network technologies *IT Standards *
✏️ Technotext 2021

На протяжении всей жизни мне приходится экономить вычислительные и сетевые ресурсы: сначала были компьютеры с 300 кГц (кило — не гига!) и 32 Кбайт RAM, интернет по dial-up. Потом я решал олимпиадные задачки. Теперь имею дело с терабайтами трафика и 50 млрд событий в сутки. И хотя современные телефоны в 1 000 раз мощнее любого оборудования двадцатилетней давности, я до сих пор оптимизирую. Думал даже, что это со мной что-то не так. Но потом понял, что все постоянно что-нибудь оптимизируют. 

Эта статья в меньшей степени о том, почему нужно бороться за производительность, и в большей о том, на что сейчас стоит заменить устаревший стек из JPEG, JSON, gzip и TCP — и как это сделать. 

Спойлер: у нас есть решение и мы его не только показываем — ссылки на open source в конце статьи.

Читать далее
Total votes 435: ↑423 and ↓12 +411
Views 154K
Comments 298

Inside The JeMalloc. Базовые Структуры Данных: Pairing Heap & Bitmap Tree

Programming *C++ *Algorithms *C *
image

Тема Аллокаторов частенько всплывает на просторах интернета: действительно, аллокатор — эдакий краеугольный камень, сердце любого приложения. В этой серии постов я хочу в подробностях рассказать о одном весьма занимательном и именитом аллокаторе — JeMalloc, поддерживаемый и развиваемый Facebook и используемый, например, в bionic[Android] lib C.

В сети мне не удалось найти каких-либо подробностей, полностью раскрывающих душу данного аллокатора, что по итогу сказалось на невозможности сделать какие-либо выводы о применимости JeMalloc при решении той или иной задачи. Материала вышло очень много и, дабы читать его было не утомительно, начать предлагаю с основ: Базовых Структур Данных используемых в JeMalloc.

Под катом рассказываю о Pairing Heap и Bitmap Tree, формирующих фундамент JeMalloc. На данном этапе я не затрагиваю тему многопоточности и Fine Grained Locking, однако, продолжая серию постов, обязательно расскажу про эти вещи, ради которых, собственно, и создается разного рода Экзотика, в частности и та, что описывается ниже.
Читать дальше →
Total votes 17: ↑17 and ↓0 +17
Views 5.5K
Comments 1

Самые интересные блоги и сайты для C++ программистов

PVS-Studio corporate blog C++ *

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

Читать дальше →
Total votes 26: ↑23 and ↓3 +20
Views 14K
Comments 1

Статья для тех, кто как и я не понимает, зачем нужен std::common_type

PVS-Studio corporate blog C++ *

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


common_type_ru/image1.png

Читать дальше →
Total votes 21: ↑19 and ↓2 +17
Views 7K
Comments 11
1

Information

Rating
250-th
Location
Ян де нова о-ва
Registered
Activity