Сразу оговорюсь, что описанное ниже носит исключительно информационно-образовательный характер, и не имеет целью нанесение какого-либо ущерба компаниям, использующим защиту из заголовка статьи. По этим же причинам фокусировка статьи именно на том, как получить заветный html «как из браузера» в автоматизированном режиме, и здесь не будет идти речь о каких-то массовых распараллеливаниях через proxy и VPN, подкладываниях отпечатков (finger prints) браузеров и т. д.
Пользователь
Ветераны IT: Как найти программистов прошлых поколений языков

При словосочетании «Ветераны IT» вы наверное представили себе сразу же старичков в пиджаках с нашивками из микросхем и шумным стационаром. Но это не совсем то, что мы подразумеваем под Ветеранами IT.
Разбираем самый маленький JPEG в мире

Недавно на Хабре была опубликована статья Разбираем самый маленький PNG в мире. Интересно, а какой самый маленький файл JPEG? В ответах на StackOverflow и Reddit можно встретить размеры 107, 119, 125, 134, 141, 160 байтов. Все они представляют серый прямоугольник 1 на 1. И кто прав? Все правы, просто такая разница объясняется различными режимами кодирования и степенью строгости соответствия стандарту. Описание всех нюансов разрослось до целой статьи cо всеми необходимыми подробностями для более-менее хорошего знакомства с самыми маленькими jpeg-ами. После краткой теории разберем 159-байтный файл на КДПВ, а затем рассмотрим способы его уменьшения.
Люди не понимают ООП

«ООП для меня означает лишь обмен сообщениями, локальные ограничения и защиту, сокрытие состояния процесса и крайне позднее привязывание», — Алан Кэй (человек, придумавший термин «объектно-ориентированное программирование»)1
Похоже, многим не нравится объектно-ориентированное программирование. Первое, что приходит в голову, когда слышишь эту трёхбуквенную аббревиатуру — это пример с автомобилем, наследование, геттеры, сеттеры и ObjectFactoryFactorySingleton.
Мне это всегда казалось довольно странным. Мне не только нравится ООП, я ещё и считаю, что часто это лучший/наиболее очевидный способ моделирования задачи. И ниже я расскажу, почему.
WordPad всё же удалили из Windows. Просьбы пользователей не помогли, востребованный текстовый редактор стал историей

Корпорация Microsoft довольно давно начала предупреждать о скором удалении WordPad, можно сказать, исторического текстового редактора из комплекта встроенных программ Windows. Появился он без малого 30 лет назад и долгое время пользовался популярностью, поскольку обеспечивал базовые возможности работы с текстом, будучи бесплатным. Но компания посчитала его устаревшим и удалила. Пользователи обращались к Microsoft с просьбой оставить нужную им программу, но на этот раз представители редмондской корпорации не прислушались к их мнению. Подробности — под катом.
Настройка C++ проекта c OpenMP. Обертывание С++ для Python с помощью pybind11 и CMake

В статье описан практический пример настройки проекта на языке C++ с использованием, в качестве примера, библиотеки для многопоточных вычислений OpenMP , а также дальнейшее обёртывание для использования в проектах написанных на Python при помощи библиотеки Pybind11. В качестве системы сборки используется CMake. Основное внимание уделено именно сборке проекта. В качестве инструмента обёртывания используется библиотека pybind11, в качестве системы сборки CMake.
Оптимизация операционных систем

Приходилось ли вам загружать операционную систему с механического жёсткого диска в начале 2 декады XXI века? Вероятно, то ещё удовольствие...
И тем не менее, накопители SSD объёмом от 1 Тб всё ещё весьма недёшевы, менее 1 Тб не всегда удобны для хранения значительного объёма используемых программ, перевод ПО большого объёма на дополнительный HDD не всегда удобен, а гибридные накопители всё ещё имеют только необходимый минимум SSD кэша, не всегда достаточный для скоростного доступа как к файлам ОС, так и к файлам регулярно используемого ПО и часто открываемых документов. А если эти документы совсем не текстовые, а графические или редактируемые видеоролики - их открытие снова упрётся в быстродействие вашего дешёвого и надёжного HDD. И хотя HDD и близко не сравнится по своему быстродействию со своим значительно более дорогим конкурентом SSD, ситуацию всё же можно немного улучшить, а затем регулярно поддерживать в состоянии, далёком от катастрофического. Тем более, что и срок службы HDD всё ещё заметно выше, чем SSD.
Попробуем разобраться, что для этого нужно, на примере трёх разных семейств операционных систем - MacOS, Linux и Windows.
Хабр — стоп кран (восклицательный знак)

Кто у нас там насегодня за главного? Денис? Алексей?
Давайте поговорим по-честному. Мы все прекрасно понимаем, что СММ и генеративный контент сводят Хабру в могилу. Я не люблю просто блеять о проблемах, и хотел бы предложить решение. Давайте сделаем что-то, чтобы разобраться с раком, убивающим Хабру.
ChatGPT + Kandinsky, или формула рекордного ROI на Чёрную пятницу

История о том, как искусственный интеллект помог hh.ru придумать проект на Чёрную пятницу и достичь ROI 10 900%.
Пишем трассировщик лучей для ZX Spectrum

Я люблю трассировщики лучей и даже посвятил им половину своей книги. Менее известна моя любовь к ZX Spectrum — домашнему компьютеру 1982 года, с которым я вырос и с которого начался мой интерес к графике и программированию. По современным стандартам эта машина столь смехотворно слаба (и даже по стандартам 1980-х), поэтому возникает неизбежный вопрос: в какой степени удастся портировать трассировщик лучей из книги Computer Graphics from Scratch на ZX Spectrum?
В ZX Spectrum установлен процессор Z80 на 3,5 МГц (в тысячу раз медленнее, чем современные компьютеры), который не может умножать числа (!!!), и 48 КБ ОЗУ (в миллион раз меньше); он имеет графический режим 256x176 (примерно в двести раз меньше современного разрешения), способный отображать 15 цветов (в миллион раз меньше, к тому же с довольно необычными особенностями). Интересная машина для графического приложения, активно задействующего CPU!
Я планирую реализовать его на Sinclair BASIC — встроенном языке программирования Spectrum. Это не просто BASIC, а древний, очень ограниченный диалект BASIC. Например, единственные структуры управления в нём — это FOR
и IF
(а у IF
нет ELSE
и даже ENDIF
); все переменные глобальны; не существует вызовов функций, только GO TO
и GO SUB
; и так далее. Кроме того, он интерпретируемый, то есть сверхмедленный. Но, по крайней мере, он реализует программное умножение! Если мне нужна будет производительность, то я всегда могу переписать трассировщик на ассемблере.
Я настроил минимально необходимую среду: код на BASIC я пишу в VS Code, компилирую его с помощью BAS2TAP и запускаю в эмуляторе FUSE. Благодаря этому скорость итераций оказалась достаточно высокой.
Важные аспекты Unicode, о которых должен знать каждый разработчик JavaScript

Должен признаться: на протяжении очень долгого времени я испытывал страх перед Unicode. Когда была необходимость в работе с Unicode, я предпочитал искать альтернативные пути решения, поскольку не совсем понимал, что делаю.
Я старался избегать работы с Unicode до тех пор, пока не столкнулся с проблемой, требующей глубокого понимания этого стандарта, а других вариантов решения просто не было.
Приложив определенные усилия, прочитав кучу статей — я постепенно начал понимать что к чему, и это оказалось не так уж трудно. Хотя, некоторые статьи приходилось перечитывать раза по 3.
Как оказалось, Unicode — это универсальный и удобный стандарт, но работать с ним может быть непросто из-за множества абстрактных терминов.
Если у вас есть пробелы в понимании Unicode, то сейчас самое подходящее время их заполнить! Заварите себе вкусный чай или кофе ☕. И давайте погрузимся в удивительный мир абстракций, символов, астралов (astrals) и суррогатов (surrogates).
В этой статье объясняются основные концепции Unicode, которые создадут необходимую базу для работы с ним.
Вы также узнаете, как JavaScript взаимодействует с Unicode и какие трудности могут возникнуть на этом пути.
А также, каким образом новые функции из ECMAScript 2015 могут помочь в решении этих проблем.
Готовы? Давайте начнем!
Суперсемейка против Unicode: Эластика и ее противник гибкий UTF-8

Кодировка символов – это про то, как символы которыми мы пишем наши сообщения выглядят в двоичном коде.
В мире существует множество кодировок, но самые популярные из них, это;
ASCII – это самая первая кодировка в мире, она была создана в Америке. Собственно благодаря ей, 8 бит равны 1 байт.
UTF-8, 16 и 32 – данные кодировки были созданы организацией Unicode (Юникод). Если по простому, то они это то же самое что и ASCII, но более вместительные, что означает, что они занимают больше памяти.
Все бы ничего, легкая тема, но есть одно но – кодировка UTF-8 имеет, как по мне, гениальную особенность: она умеет "растягиваться". То есть адаптироваться под большое кол-во символов.
Вас просто стало слишком много

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

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

Иконки — визитные карточки для любого приложения в App Store. Наличие кроссплатформенного приложения подразумевает понимание контекста, в котором будет отображаться иконка.
Когда дело доходит до новых технологий, таких как visionOS, убедитесь, что у вас есть всё необходимое для эффективной адаптации значка приложения. Цель состоит в том, чтобы создать многослойную иконку, которую можно использовать в системе для придания эффекта глубины, когда пользователь выбирает приложение взглядом.
Как защититься от «бестелесных» веб-шеллов

В сегодняшней статье эксперты Сайбер ОК проведут вас за руку по лабиринту хакерских уловок и на пальцах объяснят, что такое "бестелесные" веб-шеллы и как защитить от них свои ресурсы.
Принят новый стандарт Fortran 2023
Всё-таки заменят нас нейросети или нет?

Не хотел затрагивать эту хайповую тему, честное слово, но есть два момента, из-за которых всё же хочу высказаться. И знаете что? Написать статью, которая остро ставить вопрос о нейросетях мне поможет нейросеть! Это будет интересный эксперимент!
Как потерять $5000, не уехать в США и остаться должником в $17000+

Ранее на Хабре уже выходила статья Повесть о том как потерять 3тыс. долларов и не уехать в США, в которой @Iliya_karin рассказал о своём опыте сотрудничества с компанией, которая помогает переехать в США IT-специалистам - oCitizens (uDevs).
Илья и я стали клиентами oCitizens практически в одно и то же время (24 октября 2020 года). Так или иначе, моя история несколько отличается от истории Ильи - мне удалось дойти с этой компанией до отказа петиции на визу О1 от иммиграционной службы США (USCIS).
Гайд по Scratch для детей: как запустить игру на Android

Детское программирование стремительно набирает популярность. Многие школьники, интересующиеся видеоиграми, нередко задумываются о создании собственного виртуального мира. К счастью, сейчас для этого есть множество технических возможностей: в большинстве современных семей есть компьютеры, а дети идут в первый класс уже со смартфонами.
Information
- Rating
- Does not participate
- Location
- Yerevan, Yerevan, Армения
- Date of birth
- Registered
- Activity