Как стать автором
Обновить
-11
0
Рогин Василий @roginvs

Пользователь

Отправить сообщение

Важные аспекты Unicode, о которых должен знать каждый разработчик JavaScript

Уровень сложностиСредний
Время на прочтение22 мин
Количество просмотров8.7K


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


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


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


Как оказалось, Unicode — это универсальный и удобный стандарт, но работать с ним может быть непросто из-за множества абстрактных терминов.


Если у вас есть пробелы в понимании Unicode, то сейчас самое подходящее время их заполнить! Заварите себе вкусный чай или кофе ☕. И давайте погрузимся в удивительный мир абстракций, символов, астралов (astrals) и суррогатов (surrogates).


В этой статье объясняются основные концепции Unicode, которые создадут необходимую базу для работы с ним.


Вы также узнаете, как JavaScript взаимодействует с Unicode и какие трудности могут возникнуть на этом пути.


А также, каким образом новые функции из ECMAScript 2015 могут помочь в решении этих проблем.


Готовы? Давайте начнем!

Читать дальше →
Всего голосов 43: ↑43 и ↓0+43
Комментарии6

Теория игр за 15 минут

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров59K

Многие из вас, я уверен, слышали о теории игр в какой-то момент своей жизни. Если вы хотите выглядеть умным и произвести впечатление на свою девушку — просто упомяните «игру с нулевой суммой» или «эволюционную стратегию», и ваши шансы отвести её домой сегодня вечером только что подскочили на 50%. Или вы можете использовать теорию игр, чтобы принимать решения в инвестировании своих денег (чтобы их полностью потерять и разориться) или, например решая, на какой девушке жениться (что также очень вероятно вас разорит). Как видите, это очень полезная теория.

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

Читать далее
Всего голосов 92: ↑89 и ↓3+103
Комментарии30

Нельзя писать безопасный код на C++ без санитайзеров

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров19K

С++ видится мне огромным франкенштейном: очень уж много разнообразных способов описать свои намерения. В добавок к этому язык пропагандирует политику zero-cost abstractions, из которой следует (помимо прочего), что программист в ответе за все свои действия. Однако, работая с большими кодовыми базами, становится крайне тяжело держать в уме различные тонкости языка, которые держать в уме нужно — иначе Undefined Behavior.

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

Читать далее
Всего голосов 34: ↑26 и ↓8+24
Комментарии157

Что нам недодали в C++

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров24K

C++ последний десяток с лишним лет стремительно развивается. Тем не менее в наших кодовых базах все еще присутствуют многочисленные helper-файлы и классы, которые помогают восполнить пробелы в стандартной библиотеке языка. Как же так вышло, что там в этих ваших helper-файлах, и когда это закончится?

Читать далее
Всего голосов 64: ↑62 и ↓2+81
Комментарии177

Малоизвестные и интересные особенности C и C++

Уровень сложностиСредний
Время на прочтение43 мин
Количество просмотров47K

В C и C++ есть особенности, о которых вас вряд ли спросят на собеседовании (вернее, не спросили бы до этого момента). Почему не спросят? Потому что такие аспекты имеют мало практического значения в повседневной работе или попросту малоизвестны.

Целью статьи является не освещение какой-то конкретной особенности языка или подготовка к собеседованиям, и уж тем более нет цели рассказать все потайные смыслы языка, т. к. для этого не хватит одной статьи и даже книги. Напротив, статья нужна для того, чтобы показать малоизвестные и странные решения, принятые в языках C и C++. Своего рода солянка из фактов. Вопрос “что делать с этими знаниями?” я оставляю читателю.

Если вы, как и я, любите и интересуетесь C/C++, и эти языки являются неотъемлемой частью вашей жизни, в том числе и его углубленного изучения, то эта статья для вас. По большей части я надеюсь, что эта статья сможет развлечь и заставить поработать головой. И если получится, рассказать что-то, чего вы, возможно, еще не знали.

Читать далее
Всего голосов 127: ↑126 и ↓1+159
Комментарии61

Удаленка. Утопия или возможность?

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров17K

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

Делюсь своими лайфхаками, наработанными 10 годами опыта.

Читать далее
Всего голосов 23: ↑11 и ↓12+3
Комментарии89

Оценка эффективности схем разделения секрета

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров1.8K

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

Читать далее
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

4 миллиарда операторов if

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров113K

Просматривая недавно соцсети, я наткнулся на этот скриншот. Разумеется, его сопровождало множество злобных комментариев, критикующих попытку этого новичка в программировании решить классическую задачу computer science: операцию деления с остатком.

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

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

Читать далее
Всего голосов 312: ↑295 и ↓17+342
Комментарии153

Почему B-деревья быстрые?

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров49K

B-дерево — это структура, помогающая выполнять поиск в больших объёмах данных. Она была изобретена более сорока лет назад, однако по-прежнему используется в большинстве современных баз данных. Хотя существуют и более новые структуры индексов, например, LSM-деревья, B-дерево пока никто не победил в обработке большинства запросов баз данных.

После прочтения этого поста вы будете знать, как B-дерево упорядочивает данные и выполняет поисковые запросы.

Читать далее
Всего голосов 151: ↑150 и ↓1+183
Комментарии13

Простой саботаж в мире ПО

Время на прочтение6 мин
Количество просмотров34K

В кульминационный момент Второй мировой войны ЦРУ выпустило потрясающую книгу Simple Sabotage. В ней изложены различные способы, которыми диверсанты могут снижать продуктивность компании. Некоторые из этих советов не стареют, например, раздел «Общие помехи организациям и производству»:

1. Настаивайте на том, чтобы всё выполнялось через «каналы». Не допускайте того, чтобы для ускорения реализации решений выбирались кратчайшие пути.

2. Делайте «доклады». Говорите как можно чаще и пространнее. Иллюстрируйте свои «идеи» долгими историями из жизни и ссылайтесь на личный опыт. С готовностью делайте «патриотические» комментарии.

3. По возможности отправляйте все вопросы в комитеты для «более глубокого изучения и рассмотрения». Стремитесь делать комитеты как можно больше, не менее чем из пяти членов.

4. Как можно чаще поднимайте вопросы о несущественных проблемах.

5. Спорьте о чётких формулировках в общении, протоколах, резолюциях.

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

7. Советуйте «быть аккуратными». Будьте «разумны» и подталкивайте других участников совещаний к «разумности», к тому, чтобы они избегали спешки, которая может в будущем вызвать неудобства или сложности.

8. Беспокойтесь о правильности каждого решения, поднимайте вопрос о том, будет ли рассматриваемое действие относиться к юрисдикции группы или оно может вызвать конфликт с политикой какого-то более высокого эшелона.

Меня всегда поражало, насколько хорошо эти советы прошли проверку временем.

Читать далее
Всего голосов 66: ↑64 и ↓2+86
Комментарии35

Менеджмент сосредотачивается

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров10K

image


В июле журнал Forbes собрал лидеров своего рейтинга «30 до 30» на конференцию. На неё съехались предприниматели, топ-менеджеры, деятели спорта, науки и искусства, представители медиасферы, добившиеся финансового успеха к 30 годам. Содержание докладов было частично опубликовано и представляет немалый интерес.


О чём была конференция


Красной нитью через статью проходит мысль «работать некому». Её повторяют на все лады:

Читать дальше →
Всего голосов 39: ↑35 и ↓4+40
Комментарии40

Создание анимированных видео в нейросети Stable Diffusion, пошаговое руководство

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров45K

Друзья, всем привет, даже от меня вы уже не раз слышали, что в нейросетях сейчас можно делать буквально все: создавать тексты, генерировать музыку, делать дипфейки, создавать изображения и даже видео. Раньше генерировать видео можно было только в больших платных проектах типа Gen-2 от Runway или в пока еще бесплатном дискорд боте Pika Labs. Локальные решения были плохими или требовали топовых видеокарт.

Осторожно, много тяжелых гифок.

Читать далее
Всего голосов 30: ↑28 и ↓2+35
Комментарии27

На какие вопросы викторин интереснее всего отвечать

Время на прочтение12 мин
Количество просмотров17K


Нам нравится быть умными.

Это не очень сексуально, но это эволюционно-полезно. Хорошо решивший задачу примат-предок получал мёд из улья, вкусный фрукт с ветки, мясо из ракушки — ну или просто выживал. Ещё нам нравится что-то упорно искать с низким шансом на успех, потому что мы где-то в глубине собиратели. Нам нравится доказывать себе, что мы можем что-то удачно быстро и точно вспомнить — потому что когда-то мы запоминали деревья со вкусными фруктами и считали матожидание их созревания.

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

А вот дальше начинается интересное, потому что хороший вопрос — это не на энциклопедические знания и не на умение быстро считать.

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

Так что хороший вопрос викторины должен быть смешной, как удар лопатой в темноте.
Читать дальше →
Всего голосов 41: ↑40 и ↓1+52
Комментарии70

Олег Бартунов о премии Highload++: лидерство обязывает всё время доказывать, что ты чего-то стоишь

Время на прочтение9 мин
Количество просмотров4.8K

Мне подавать заявку на Премию Highload++ не пришлось. Тогда организаторы и сообщество сами выбирали наиболее влиятельных в сообществе людей. Мне просто сообщили, что наградят и позвали на церемонию.

Я горжусь тем, что у нас в России очень хорошее Postgres сообщество, и что сам активно участвовал в его создании. Люди это отметили и это очень приятно.

Читать далее
Всего голосов 23: ↑21 и ↓2+23
Комментарии7

Переизобретаем файловую систему: (Open)ZFS

Уровень сложностиПростой
Время на прочтение17 мин
Количество просмотров19K


Хранение данных — это всегда боль, у которой может быть больше 50 оттенков: железо, кэш, гарантии, производительность, скорость восстановления при проблемах, удобство и прочее. Как решить большинство из них, при этом получив что-то легко обслуживаемое, да ещё бесплатно? Сегодня поговорим про файловые системы на примере не совсем дефолтной OpenZFS.
Читать дальше →
Всего голосов 50: ↑49 и ↓1+60
Комментарии80

Как перезагрузиться, пройдя пешком 250 км, или каким был для меня Путь Сантьяго

Время на прочтение11 мин
Количество просмотров9.5K

Всем привет! Меня зовут Катя Черных, я бизнес аналитик в Х5 Tech, работаю на продукте Ценообразование. Живу в Москве, со времён ковида работаю удалённо и большую часть дня провожу дома. Поэтому к планированию отпуска отношусь серьёзно, стараюсь уезжать подальше из своего домашнего офиса, чтобы максимально перезагрузиться. Люблю природу, хайкинги, трекинги и всякие трейлы. 

В мае 2023 года я прошла паломнический Путь Сантьяго (Эль Камино-де-Сантьяго).  Мой маршрут начинался в северной Португалии в Порту и за 11 дней я прошла 250 километров до испанского города Сантьяго-де-Компостела. 

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

Читать далее
Всего голосов 25: ↑21 и ↓4+25
Комментарии13

CRC — это просто (деление столбиком)

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров16K

Целостность можно достичь различными способами. Например, чек-суммами. Вот как раз была такая задача - обеспечить целостность с помощью чек-сумм.

На ум сразу пришел CRC. Ну тут просто - взял скопировал готовый код, бери не хочу, реализаций на разных языках куча.

Но это простой путь слишком просто - так не интересно (да и лишних часов на таску надо тоже поставить). Поэтому решил усложнить себе жизнь разобраться в работе CRC!

Читать далее
Всего голосов 23: ↑22 и ↓1+25
Комментарии8

Разбираем TLS по байтам. Где собаки зарыты?

Уровень сложностиСредний
Время на прочтение34 мин
Количество просмотров15K


Подключение к сайту бывает защищённым, а бывает нет — это надо знать всем детям. Только не все дети знают, что это значит и как работает. Кажется я это уже писал? Ах да, это же вторая часть статьи с разбором TLS.

В первой мы увидели, что такое «защищённое соединение», сколько и каких ключей для него нужно, кто кого шифрует и подписывает, и что такое «сертификат». Сейчас разберёмся, как всё это дело реализуется в протоколе TLS: как выглядит рукопожатие, как сделать ключ шифрования своими руками, в каком виде данные передаются по сети.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии2

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

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров5.1K

Почему люди понимают линейные рисунки? Почему мы мгновенно узнаём объекты на линейных рисунках, хотя они не относятся к явлениям естественного мира? Многие исследования показывают, что люди, никогда ранее не видевшие такие изображения, могут их понимать; нам не нужно этому учиться.

Классический ответ на этот вопрос — та гипотеза, которую я буду называть Lines-As-Edges. Она гласит, что рисунки симулируют естественные образы, потому что признаки линий активируют рецепторы краёв в зрительной системе человека. Насколько я могу судить, такое убеждение широко распространено в среде исследователей зрения; многие люди вспоминают эту гипотезу, когда я говорю о восприятии рисунков, а также многие комментаторы под недавним постом в Twitter. Обобщением этой идеи становится то, что линии соответствуют некому внутреннему представлению, заставляющему нейроны реагировать на контуры объектов. Я называю эту гипотезу Line-As-Internal-Representation и расскажу о ней в этой статье.

Читать далее
Всего голосов 28: ↑28 и ↓0+28
Комментарии5

Линейный код более читаем

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров19K

Бунтарём себя можно считать только тогда, когда люди на самом деле защищают противоположную вашей позицию. Я не согласен с одной из best practices, недавно представленной в Google Testing Blog . Обычно это очень хороший ресурс, ведь этот пост не случайно попал в мою читалку новостей!

Авторы представили две версии функции и спросили, какая из них более читаема.

Читать далее
Всего голосов 38: ↑32 и ↓6+39
Комментарии181

Информация

В рейтинге
5 433-й
Откуда
Великий Новгород (Новгород), Новгородская обл., Россия
Дата рождения
Зарегистрирован
Активность