Pull to refresh
29
2.6
Рикки Мангуст @RikkiMongoose

Программист

Send message

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

Level of difficulty Easy
Reading time 26 min
Views 9.7K

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее
Total votes 27: ↑25 and ↓2 +23
Comments 22

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

Reading time 12 min
Views 11K

Очень хотелось изучить 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.

Читать дальше →
Total votes 23: ↑20 and ↓3 +17
Comments 0

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

Reading time 8 min
Views 11K

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


Давным-давно, когда люди ещё делали домашние странички, интернет был по шипучему модему, а 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 его знать не знает.
Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Comments 12

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

Reading time 2 min
Views 10K
Вот 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-ы? Или разобраться древовидными объектами, где в каждое поле уже успели насоздаваться ещё какие-то подполя?
Читать дальше →
Total votes 26: ↑12 and ↓14 -2
Comments 28

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

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

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

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

Так и родился плагин для Wordpress Rikki's WP Social Icons. Позволяет за один клик мышкой добавить ссылку на эккаунт в каком-нибудь сервисе, от социальной сети до GitHub.
Читать дальше →
Total votes 35: ↑25 and ↓10 +15
Comments 50

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

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

В 1994 году вышла известная книга «Паттерны проектирования», представив публике, среди 22-х прочих, и нашего героя, которого теперь назвали Singleton. Была там и его реализация на C++, вот такая:
Читать дальше →
Total votes 110: ↑101 and ↓9 +92
Comments 61

Information

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