суббота, 17 апреля 2021 г.

[prog.wtf] Пример творческого подхода некоторых софтописателей к трактовке спецификаций

Есть такой простой как две копейки протокол: SOCKS5. Этот протокол подразумевает последовательный обмен всего лишь несколькими сообщениями. Но именно обмен в режиме "запрос-ответ". Т.е. клиент отсылает первое сообщение, затем ждет, что ответит сервер, потом шлет второе сообщение.

Процедура подключения клиента к SOCKS5 серверу проста.

Клиент подключается и шлет первый PDU, в котором перечисляются методы аутентификации, поддерживаемые клиентом (например: без аутентификации вообще, на базе username/password).

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

Получив ответ от сервера клиент должен прислать следующее сообщение, в котором будут находится параметры для выбранного способа аутентификации. Так, если клиент и сервер договорились об использовании метода username/password, то во втором сообщении от клиент должны прийти username и password.

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

Однако, как оказалось, некоторые софтописатели применяют любопытный хак: они шлют два первых сообщения от клиента сразу. Так, в первом PDU клиент говорит, что он желает использовать только способ аутентификации по username/password. И тут же приклеивает к первому PDU второй, который как раз и содержит username/password.

вторник, 13 апреля 2021 г.

[life.music] Продолжение саги о выборе хороших, но недорогих наушников на Aliexpress. Хороший звук за минимальный бюджет

Продолжаю делится впечатлениями от процесса поиска на Aliexpress недорогих, но хороших наушников. Делать обзор побывавших у меня наушников-вкладышей пока не готов (да и сомневаюсь, что это будет кому-то интересно). Поэтому сегодня расскажу о том, на что бы я сейчас, имея мой сегодняшний опыт, потратил бы деньги. Чтобы и хороший звук получить, и чтобы обошлось это в небольшую сумму, и чтобы не приходилось выходить за наш РБшный лимит в 25 USD за одну посылку.

Дисклаймер. Под хорошим звуком я понимаю звук, который устраивает меня. Т.е. когда я надеваю наушники, начинаю слушать музыку и меня перестает волновать через какие именно устройства я слушаю, какие у них характеристики, сколько они стоят и пр. Наверняка бывалые аудиофилы, профессионалы в обработке звука, да и просто люди с музыкальным слухом имеют совсем другое мнение по поводу понятия "хороший звук", но мне фиолетово :)

Главный фокус -- источник звука

Многие, наверняка, знают, что качество звучания во многом определяется качеством музыкального материала. Т.е. если мы слушаем MP3 с низким битрейтом, то звук, определенно будет хуже, чем если мы слушаем тоже самое, но в виде FLAC или WAV. Поэтому многие уже предпочитают держать свои фонотеки либо в MP3 с высокими битрейтами, либо во FLAC-е, либо еще в чем-то продвинутом.

Но гораздо меньше людей задумываются о том, что следующим важнейшим фактором является источник звука, т.к. устройство, которое и воспроизводит наш качественный MP3- или FLAC-файл. Я, например, на эту тему даже не задумывался. А зря.

понедельник, 12 апреля 2021 г.

[prog.c++] Наглядно на тему сложности освоения SObjectizer-а

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

Одной из самых серьезных проблем с продвижением SObjectizer-а в массы является недостаток публичных "историй успеха" на которые мы могли бы ссылаться. Из-за этого у нас всегда сложности с ответом на вопрос "Да кто вашим поделием вообще пользуется?"

Фокус здесь в том, что SObjectizer распространяется бесплатно и под пермиссивной лицензией BSD. Поэтому никто не обязан с нами связываться, спрашивать у нас разрешения, что-то нам платить и вообще хоть как-то ставить нас в известность. Люди просто берут SObjectizer и используют.

О том, что SObjectizer где-то и как-то применяется мы узнаем, как правило, из двух источников:

  • во-первых, кто-то считает нужным нам об этом сообщить. Кстати говоря, большое спасибо вам за это;
  • во-вторых, кто-то задает нам вопросы о SObjectizer-е.

И вот второй источник мало того, что дает нам информацию о том, что SObjectizer кто-то пробует, так еще и многое говорит о качестве и объеме справочной информации, которой мы снабдили SObjectizer. Поскольку по большей части это не вопросы из категории "у меня что-то не компилируется, почему?", а обращения за советом как быть в той или иной ситуации. Т.е. люди нашли SObjectizer, изучили его базовые принципы, попробовали что-то сделать, дошли до какой-то не самой тривиальной ситуации и только после этого решили спросить наше мнение.

Совсем свежий пример в Google-группе. Человек разобрался с SObjectizer-ом, сделал далеко не самый простой имитатор того, что ему нужно в его предметной области, и спросил совета по достаточно интересной и неоднозначной теме.

Так что SObjectizer -- это вовсе не "образцовое ненужно" (на смотря на то, что меня в этом настойчиво убеждают благожелатели в Интернетах). Этим инструментом интересуются, его пробуют, его используют.

То, что мы вынуждены приостановить работы над нашими OpenSource проектами (включая SObjectizer), не означает, что проект заброшен. Без поддержки, как можете видеть, пользователей не оставляем. Ну а как представится возможность, так и продолжим снабжать SObjectizer/so5extra и RESTinio новыми фичами.