Pull to refresh
55
0.1
Илья @WST

Инженер-программист

Send message

Google пытается оптимизировать формат JPEG, увеличив компрессию на 35%. Что это за технология?

Reading time4 min
Views14K

Формат изображений JPEG появился ещё в конце прошлого века, причём актуальность он не теряет, а, наоборот, набирает. Казалось бы, что можно изменить в технологии, которой столько лет? В Google посчитали, что сейчас самое время для оптимизации формата, а именно повышения эффективности компрессии. Что предложили в Google и как работает новая технология?

Читать далее
Total votes 20: ↑25.5 and ↓-5.5+31
Comments47

Микросервис на Python+ FastAPI

Level of difficultyEasy
Reading time19 min
Views11K

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

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

В микросервисной архитектуре приложение разбивается на несколько отдельных служб, которые выполняются в отдельных процессах. Существует другая база данных для разных функций приложения, и службы взаимодействуют друг с другом с использованием HTTP, AMQP или двоичного протокола, такого как TCP, в зависимости от характера каждой службы. Межсервисное взаимодействие также может осуществляться с использованием очередей сообщений, таких как RabbitMQ , Kafka или Redis .

Читать далее
Total votes 16: ↑15 and ↓1+14
Comments7

Создание новых экземпляров Nextcloud  с помощью скриптов Ansible

Level of difficultyEasy
Reading time8 min
Views3.1K

Всем привет! Хочу поделиться с вами вариантом скрипта для создания экземпляров Nextcloud через Ansible в vCloudDirector. Заодно опишу процесс создания экземпляров Nextcloud. Возможно, у вас тоже бывают подобные задачи, — можете не изобретать ещё один велосипед, вот один из вариантов решения.

Читать далее
Total votes 8: ↑6 and ↓2+4
Comments7

Почему мое производство пельменей умирает

Reading time9 min
Views147K

В 2018 г. я открыл производство пельменей и полуфабрикатов. Шучу, что у меня 3 класса образования церковной школы, так как мое высшее по специальности “социальная коммуникация” не кажется мне фундаментальным.

6 лет мы продаем 50 позиций пельменей, голубцов и чебуреков в 200 магазинов. В ковид ели много пельменей и у меня было 3 цеха, доходило до тонны в день. А сегодня я провожу аудит, закрыл 1 цех и думаю о закрытии остальных. Если считаете, что бабушкины пельмени лучше магазинных, ставьте лайк и пишите об этом в комментариях.

Читать далее
Total votes 352: ↑281 and ↓71+210
Comments762

Я в благородство играть не буду: как производители дешевых смартфонов закладывают срок службы в свои устройства

Level of difficultyEasy
Reading time12 min
Views73K
image

Во все времена существования мобильных телефонов, дешевый сегмент всегда оставался одним из самых прибыльных и массовых направлений мобильного бизнеса. Помимо «простозвонилок» в духе Nokia 1100 или 1202, на рынке есть огромный спрос к ультрабюджетным смартфонам ценой до 10 тысяч рублей. И если с дешевыми девайсами у локальных ритейлеров всё понятно (чипсеты 5+ летней давности, минимальный объём ОЗУ и ПЗУ, простенькие TN-матрицы низкого разрешения), то китайские магазины готовы предложить по этой цене устройства с небывало щедрыми характеристиками — и 8Gb RAM, и 512Gb ROM, и Snapdragon 888+. Для большинства покупателей неочевидно, что эти характеристики — обман, а девайс будет обладать лишь базовыми параметрами. Но что самое обидное, производитель закладывает программный и аппаратный срок службы в такие устройства, из-за чего более половины смартфонов выходят из строя через 4-5 месяцев после покупки, а в СЦ за ремонт просят половину цены от нового. Около года назад я купил почти новую китайскую реплику Huawei P30 Pro с родной коробкой и заводской плёнкой всего за 400 рублей, которая уже была не рабочей. Сегодня мы с вами: узнаем о том, как производители экономят и закладывают срок службы в бюджетные мобилки, на практике отремонтируем подобный девайс своими руками (причём ремонт обойдется нам в 70 рублей) и посмотрим, можно ли пользоваться таким бюджетником за 470 рублей на в 2023 на практике. Интересно? Тогда добро пожаловать под кат!
Читать дальше →
Total votes 172: ↑162 and ↓10+152
Comments163

Как работает сеть в контейнерах: Docker Bridge с нуля

Level of difficultyMedium
Reading time21 min
Views33K

В этой статье мы собираемся разобраться со следующими вопросами:

* Как виртуализировать сетевые ресурсы, чтобы контейнеры думали, что у них есть отдельные сетевые среды?

* Как превратить контейнеры в дружелюбных соседей и научить общаться друг с другом?

* Как выйти во внешний мир (например, в Интернет) изнутри контейнера?

* Как связаться с контейнерами, работающими на хосте Linux, из внешнего мира?

* Как реализовать публикацию портов, подобную Docker?

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

Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу

Reading time7 min
Views699K
Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.

Существует два распространенных типа подключения DPI: пассивный и активный.

Пассивный DPI

Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.
Читать дальше →
Total votes 212: ↑212 and ↓0+212
Comments352

Шпаргалка по SQL (postgres), которая выручает меня на собесах

Level of difficultyEasy
Reading time8 min
Views182K

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

Я решил посвятить свою первую статью SQL. Вопросы, рассмотренные ниже мне задавали на собеседованиях на позицию python-разработчика. Естественно отвечать правильно получалось не всегда, а если точнее то чаще не правильно, однако проведя N часов в рефлексии я составил перечень ответов, которыми пользуюсь до сих пор.

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

Читать далее
Total votes 191: ↑184 and ↓7+177
Comments177

Мифология REST

Reading time13 min
Views16K

Матчасть


Мало какая технология в истории IT вызывала столько ожесточённых споров, как REST. Самое удивительное при этом состоит в том, что спорящие стороны, как правило, совершенно не представляют себе предмет спора.


Начнём с самого начала. В 2000 году один из авторов спецификаций HTTP и URI Рой Филдинг защитил докторскую диссертацию на тему «Архитектурные стили и дизайн архитектуры сетевого программного обеспечения», пятая глава которой была озаглавлена как «Representational State Transfer (REST)». Диссертация доступна по ссылке.


Как нетрудно убедиться, прочитав эту главу, она представляет собой довольно абстрактный обзор распределённой сетевой архитектуры, вообще не привязанной ни к HTTP, ни к URL. Более того, она вовсе не посвящена правилам дизайна API; в этой главе Филдинг методично перечисляет ограничения, с которыми приходится сталкиваться разработчику распределённого сетевого программного обеспечения. Вот они:


  • клиент и сервер не знают внутреннего устройства друг друга (клиент-серверная архитектура);
  • сессия хранится на клиенте (stateless-дизайн);
  • данные должны размечаться как кэшируемые или некэшируемые;
  • интерфейсы взаимодействия должны быть стандартизированы;
  • сетевые системы являются многослойными, т.е. сервер может быть только прокси к другим серверам;
  • функциональность клиента может быть расширена через поставку кода с сервера.

Всё, на этом определение REST заканчивается. Дальше Филдинг конкретизирует некоторые аспекты имплементации систем в указанных ограничениях, но все они точно так же являются совершенно абстрактными. Буквально: «ключевая информационная абстракция в REST — ресурс; любая информация, которой можно дать наименование, может быть ресурсом».


Ключевой вывод, который следует из определения REST по Филдингу, вообще-то, таков: любое сетевое ПО в мире соответствует принципам REST, за очень-очень редкими исключениями.

Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments66

Установка Windows 98 на современный ПК

Reading time3 min
Views98K


Решил поделиться своим рецептом, как я установил Windows 98SE на относительно современный ПК. На Интернет форумах много сообщений, что Windows 98SE не устанавливается на современные ПК, не запускается на PCI-e видеокартах и т.п., поэтому статья может быть полезна тем, кто хочет позапускать старые звуковые карты типа Aureal Vortex 2, поностальгировать или просто ради спортивного интереса.
Читать дальше →
Total votes 118: ↑116 and ↓2+114
Comments136

Операционные усилители: 10 схем на (почти) все случаи жизни

Reading time15 min
Views447K
Всем привет!

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


Читать дальше →
Total votes 139: ↑137 and ↓2+135
Comments54

Windows Terminal Preview v0.10

Reading time2 min
Views15K
Представляем Windows Terminal v0.10! Как и всегда, вы можете загрузить его из Microsoft Store, либо со страницы выпусков на GitHub. Под катом подробнее рассмотрим детали обновления!

Читать дальше →
Total votes 31: ↑29 and ↓2+27
Comments23

EOF — это не символ

Reading time6 min
Views79K
Недавно я читал книгу «Компьютерные системы: архитектура и программирование. Взгляд программиста». Там, в главе про систему ввода-вывода Unix, авторы упомянули о том, что в конце файла нет особого символа EOF.



Если вы читали о системе ввода-вывода Unix/Linux, или экспериментировали с ней, если писали программы на C, которые читают данные из файлов, то это заявление вам, вероятно, покажется совершенно очевидным. Но давайте поближе присмотримся к следующим двум утверждениям, относящимся к тому, что я нашёл в книге:

  1. EOF — это не символ.
  2. В конце файлов нет некоего особого символа.

Что же такое EOF?
Читать дальше →
Total votes 104: ↑71 and ↓33+38
Comments63

Загружаем и храним в Google Drive файлы любого размера бесплатно. Баг или Фича?

Reading time3 min
Views100K
Недавно я нашел странную особенность в Google Drive. Определенная последовательность действий в Google Drive веб интерфейсе приводит к тому, что каждый может загрузить файлы любого объема в свою учетную запись и при этом не потратить ни одного байта на их хранение.

Конечно, я сразу решил сообщить об этом в Google через программу BugHunter. Но, к моему сожалению, потратив неделю на общение со специалистами Google мне так и не удалось убедить их, что это баг. Сотрудник не смог воспроизвести этот баг и я получил ответ, что «это не баг, а фича» и меня отправили в RTFM. В конце концов Google просто закрыл тикет и перестал отвечать на мои письма.

Так как переписка с Google зашла в тупик, я решил публично рассказать о этой «фиче» и, возможно, наконец привлечь внимание сотрудников Google к этой проблеме или хотя-бы понять, что я делаю не так. Ниже под катом история переписки с Google и proof of concept.
Читать дальше →
Total votes 142: ↑142 and ↓0+142
Comments125

Краткая и на 146% точная история языков программирования

Reading time4 min
Views82K


1800


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


1842


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

Читать дальше →
Total votes 195: ↑181 and ↓14+167
Comments154

Это норма: что такое карты нормалей и как они работают

Reading time6 min
Views75K
На протяжении нескольких лет я пытался разобраться в картах нормалей и в проблемах, которые обычно возникают при работе с ними.

Большинство найденных объяснений было слишком техническим, неполным или чересчур сложным для моего понимания, поэтому я решил попробовать объяснить собранную мной информацию. Я понимаю, что эти объяснения могут быть неполными или не совсем точными, но всё равно попробую.

Первые созданные человеком 3D-модели выглядели примерно так:

image

Это замечательно, но у такой модели есть очевидное ограничение: она выглядит слишком полигональной.

Наиболее очевидное решение: добавить больше полигонов, сделав поверхность более равномерной и гладкой, вплоть до того, чтобы полигоны казались единой гладкой поверхностью. Но оказывается, для того, чтобы сделать поверхности наподобие сфер гладкими, нужно огромное количество полигонов (особенно сегодня).
Читать дальше →
Total votes 72: ↑69 and ↓3+66
Comments6

Исследуем бинарные форматы на примере байткода .class файла

Reading time10 min
Views10K

image


Если вас не пугает картинка выше, если вы знаете чем отличается big-endian от little-endian, если вам всегда было интересно как "устроены" бинарные файлы, значит эта статья для ВАС!

Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments6

[Обновлено в 10:52, 14.12.19] В офисе Nginx прошел обыск. Копейко: «Nginx был разработан Сысоевым самостоятельно»

Reading time7 min
Views313K

Другие материалы по теме:


Eng version
Что значит наезд на Nginx и как это отразится на индустрииdeniskin
Open source — наше всё. Позиция Яндекса по ситуации с Nginxbobuk
Официальная позиция Программных комитетов Highload++ и других IT-конференций на претензии к Игорю Сысоевуolegbunin


По информации от одного из сотрудников, в московском офисе опенсорс-разработчиков Nginx проводят обыски в рамках уголовного дела, истцом по которому выступает Рамблер (ниже официальный ответ пресс-службы компании по этому вопросу и подтверждение наличия претензий к Nginx). В качестве доказательств приводится фото постановления о производстве обыска в рамках уголовного дела, возбужденного 4 декабря 2019 года по статье 146 УК РФ «Нарушение авторских и смежных прав».

Фото постановления о производстве обыска


Как предполагается, истцом выступает компания Рамблер, а ответчиком пока «неустановленная группа лиц», а в перспективе — основатель Nginx Игорь Сысоев.

Суть претензии: Игорь начал работу над Nginx, будучи сотрудником Рамблера, а только после того, как инструмент стал популярен, основал отдельную компанию и привлек инвестиции.

Почему Рамблер вспомнил о своей «собственности» только спустя 15 лет — неясно.
Total votes 797: ↑794 and ↓3+791
Comments1457
1
23 ...

Information

Rating
3,342-nd
Location
Красногвардейское, Адыгея, Россия
Date of birth
Registered
Activity