Search
Write a publication
Pull to refresh
49
96.2
Рикки Мангуст @RikkiMongoose

Программист

Send message

Тот самый звук

Reading time11 min
Views14K

Это интересное явление — то, как в головах даже профессионалов десятилетиями живут настоящие заблуждения. Особенно поразительно, когда они касаются вещей, находящихся буквально под носом.

По случаю чудесного воскресного дня поговорим о том, что нас развлекает ещё со времён каменного века: о музыке.

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

А вот если вы учились на комбике — особенно ламповом, — то с бездушными цифровыми плагинами справитесь без труда. Такие утверждения нередко можно услышать даже от признанных гитаристов, например Сергея Калугина или Сергея Табачникова. Последний, например, заявляет, что через цифровую обработку гитара звучит как MIDI-клавиатура — все ноты одинаковы, а вот через аналог слышны мельчайшие нюансы, включая шуршание медиатора (а также пуканья гитариста, но это не точно). Калугин же утверждает (со слов своего бас-гитариста), что для звука уровня Фли (басиста Red Hot Chili Peppers) нужен аппарат за 5000 долларов, причём высшего класса должны быть все компоненты — от гитары до проводов. У них на студии якобы даже есть специальный серебряный провод за отдельную плату.

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

Читать далее

В пещере Голого Короля

Level of difficultyEasy
Reading time26 min
Views1.5K

— А о чем с тобой говорил доктор Термер, мой мальчик? Я слыхал, что у вас был долгий разговор.

— Да, был. Поговорили. Я просидел у него в кабинете часа два, если не больше.

— Что же он тебе сказал?

— Ну… всякое. Что жизнь — это честная игра. И что надо играть по правилам. Он хорошо говорил. То есть ничего особенного он не сказал. Все насчет того же, что жизнь — это игра и всякое такое. Да вы сами знаете.

— Но жизнь действительно игра, мой мальчик, а играть надо по правилам.

— Да, сэр. Знаю. Я все это знаю.

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

Дж. Д. Сэлинджер, “Над пропастью во ржи”

Читать далее

Неожиданная роль Эдуарда Лимонова в истории языка C

Level of difficultyEasy
Reading time3 min
Views8.7K

В биографии Эдуарда Лимонова — писателя, диссидента и политика — есть неожиданный эпизод: в конце 1970-х годов, во время жизни в США, он подрабатывал в IT-сфере и, по некоторым данным, участвовал в разработке ранних версий языка C.

Читать далее

Мозговой шторм: что нужно знать о методе мозгового штурма

Level of difficultyEasy
Reading time27 min
Views3.3K

Почти 80 лет назад человечество узнало о методе мозгового штурма.

С тех пор про него писали даже в журнале "Трамвай" и назвали в его честь него один из стандартных шаблонов презентаций в Microsoft Powerpoint. Многие из читателей этой статьи, возможно, успели в нём поучаствовать. А организаторы напридумывали огромное количество причудливых вариантов, которые постоянно пытаются продать под видом бизнес-консультации.

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

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

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

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

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

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

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

Штурмовать

Генерируем в maven Java-модуль для OpenAPI из Swagger YAML

Level of difficultyEasy
Reading time4 min
Views3.5K

Допустим отдел аналитики подготовил нам Swagger YAML с описанием API доступа к какому-то сервису: xyz-swagger-v1.0.0.yaml.

Как автоматизировать генерацию библиотеки для доступа к API по этому описанию, если у вас maven? Полного мануала почему-то нигде нет, так что я собрал в одну всю информацию о реализации и возможных проблемах.

Читать далее

Здесь могли быть деньги ваших клиентов

Level of difficultyEasy
Reading time5 min
Views1.6K

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

Особенность китайских чаев — они допускают многократный пролив. То есть их можно заваривать быстро и несколько раз

Разумеется, наш стандартный заварочный чайник делался под индийские чаи, которые завариваются одним проливом и по многу. Чтобы пить чай китайский, его надо завариватаь прямо в чашке, но ещё лучше запастись стандартным набором:

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

2. Чахай или проливной чайник. Китайские чаи горчат, если их передержать. Поэтому как только в гавани заварилось — его либо разливают по пиалам (тогда в последней будет самый крепкий), либо переливают в чахай, чтобы остывал и смешался. Так и проходит чайная церемония — допили из проливного, заварили в заварочном, вылили в проливной.

3. Чашки или пиалки.

Чайный поднос и чайные инструменты пока оставим.

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

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

Давайте посмотрим, кто же готов получить мои деньги?

Кто же получил мои деньги?

Психологический тупик

Level of difficultyEasy
Reading time26 min
Views11K

— …Вот, например, ты пишешь: «коллективное бессознательное». А ты знаешь, что это такое?

Татарский пошевелил в воздухе пальцами, подбирая слова.

— На уровне коллективного бессознательного, — ответил он.

— А ты не боишься, что найдется кто-то, кто знает отчетливо?

Татарский шмыгнул носом.

— Господин Азадовский, — сказал он, — я этого не боюсь. Потому не боюсь, что все, кто отчетливо знает, что такое «коллективное бессознательное», давно торгуют сигаретами у метро.

Виктор Пелевин, «Generation П»

У меня нет психологического образования. Я просто экспериментировал с индустрией и смотрит на неё глазами клиента.

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

И дело тут не в корпоративной солидарности. Психолог смотрит с другой стороны и видит саму ситуацию под другим углом.

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

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

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

Читать далее

Пишем Ruby gem для Yandex Direct API

Reading time12 min
Views12K

Очень хотелось изучить Ruby получше, а рабочего проекта не было. И я попробовал написать gem для работы с Yandex Direct API.


Причин было несколько. Среди них: Yandex Direct API очень типичен для Яндекса и современных REST-сервисов вообще. Если разобраться и преодолеть типичные ошибки, то можно легко и быстро написать аналоги для прочих API Яндекса (и не только). И ещё: у всех аналогов, которые мне удалось найти, были проблемы с поддержкой версий Директа: одни были заточены под 4, другие под новую 5, и поддержке units я нигде не нашёл.


Метапрограммирование — великая вещь


Основная идея gem-а — раз в языке вроде Ruby или Python можно создавать новые методы и JSON-подобные объекты на лету, то методы интерфейс для доступа к REST-сервису могут повторять функции самого Rest-сервиса. Чтобы можно было писать так:


request = {
    "SelectionCriteria" => {
      "Types" => ["TEXT_CAMPAIGN"]
    },
    "FieldNames" => ["Id", "Name"],
    "TextCampaignFieldNames" => ["BiddingStrategy"]
}

options = { token: Token }
@direct = Ya::API::Direct::Client.new(options)
json = direct.campaigns.get(request)

А вместо того, чтобы писать справку, отсылать пользователей к мануалам по указанному API.

Читать дальше →

Как сделать всплывающие подсказки в JavaFX

Reading time8 min
Views12K

Забытое искусство подсказки


Давным-давно, когда люди ещё делали домашние странички, интернет был по шипучему модему, а Napster казался опасной провокацией коммунистов, простенькие оконные приложения под Windows очень часто писали на библиотеке VCL. Одни пользовались Delphi (но признавались только домашним), другие смело запускали её из C++ Builder (и удивлялись ещё одному String, а также спискам, которые начинаются с 1). А кто-то ухитрялся писать на нём под unix-ы (вы помните Kylix? А он был!)

В VCL почти у всех визуальных компонент были свойства ShowHint и Hint. Если быть точным, они были у всех компонент оконного типа (кнопок, выпадающих списков и прочих панелек).

В строковой Hint писался текст подсказки, а булевый ShowHint мог её отключить. А более прокачанные даже знали, что можно сделать расширенный вариант подсказки. Если написать в Hint Нажми меня|Кнопка просит, чтобы вы её нажали, то левая часть всплывёт, а правая будет передана в событие. Это событие перехватывали и показывали полученный текст в строке состояния.

Настолько простые и удобные подсказки были предметом величайшей зависти тех, кто сидел на MFC (никаких WinForms в тогдашней Visual Studio ещё не было, не говоря о WPF), поддерживал OWL или штурмовал чистый WinAPI с Петцольдом наперевес. Кто знает, может быть кто-то из них и приложил свою мозолистую от кодинга руку к тому, что уникальная по своей удобности технология подсказок оказалась полностью утрачена в JavaFX.

Что у нас есть?


В JavaFX за подсказки отвечает компонент Tooltip. По всей видимости, это тайный компонент, потому что, к примеру, SceneBuilder его знать не знает.
Читать дальше →

JSonCmp — сравниваем в JavaScript правильно

Reading time2 min
Views11K
Вот JavaScript-овый объект, сериализованный в JSon:

var source1 = '[{"vConfig":{"vType":"objectview","serverItemType":"TrackerObject"}}]';


А вот ещё один JavaScript-овый объект, тоже сериализованный в JSon:

var source2 = '[{"vConfig":{"serverItemType":"TrackerObject","vType":"objectview"}}]';


У них одинаковая структура, одинаковые параметры, одинаковые значения в этих параметрах. По всем признакам, и в source1, и в source2 у нас одно и то же.

Но интерпретатор JavaScript с нами, разумеется, не согласен. И он вполне резонно считает, что source1 и source2 — разные строки. А если мы десериализуем их обратно, то получим два object-а, которые расположены по различным адресам памяти и… тоже не равны друг другу.

А если вы, впридачу, работает с Ext.js, щедро генерируете свои классы и не забываете про jSon, то может дойти до полного затмения. Как сравнить эти огромные простыни сведений о контролах, которые собираются в JSon-ы? Или разобраться древовидными объектами, где в каждое поле уже успели насоздаваться ещё какие-то подполя?
Читать дальше →

Wordpress Plugin длиной в одну страницу

Reading time12 min
Views29K
Почему люди любят Wordpress? Потому что с ним просто работать. В нём нет гибкости большущих CMS вроде Joomla и Drupal, — а значит, не запутаешься. И ещё он очень популярен — а значит, можно найти плагины на все случаи жизни.

Неспроста несмотря на осуждение со стороны Lurkmore.ru, Wordpress-ом пользуются и Герб Саттер, и Марк Шаттлворт, и много кто ещё. Например, я.

В своих записях я очень часто ссылаюсь на чужие блоги. И мне пришла идея — а почему бы не показывать рядом с ником человека, на которого я ссылаюсь, ещё и значок его сервиса? Например, птичку из твиттера или букву B из блогспота? Похожий функционал есть, например, в Википедии, да и многие блогохостинги это позволяют (например, Dreamwidth).

Так и родился плагин для Wordpress Rikki's WP Social Icons. Позволяет за один клик мышкой добавить ссылку на эккаунт в каком-нибудь сервисе, от социальной сети до GitHub.
Читать дальше →

Три возраста паттерна Singleton

Reading time5 min
Views96K
Паттерн Singleton появился, пожалуй, как только появились статичные объекты. В Smalltalk-80 так был сделан ChangeSet, а чуть в самых разных библиотеках стали появляться сессии, статусы и тому подобные объекты, которых объединяло одно — они должны были быть одни-единственные на всю программу.

В 1994 году вышла известная книга «Паттерны проектирования», представив публике, среди 22-х прочих, и нашего героя, которого теперь назвали Singleton. Была там и его реализация на C++, вот такая:
Читать дальше →

Information

Rating
141-st
Location
Долгопрудный, Москва и Московская обл., Россия
Date of birth
Registered
Activity