Как не надо делать дейтинг
Итак, social economics открывает нам огромное поле для манипуляций. К сожалению, я гуманист, чтобы мне было интересно быть манипулятором, но тем не менее.
Широко известен эксперимент, в начале которого половине испытуемых давали копеечный стакан газировки, а потом просили об услуге на рубль. Те, которым предлагали газировки, и они приняли, соглашались оказать «в ответ» рублевую услугу на N% чаще чем те, которым газировки не предлагали.
На одном сайте знакомств есть кнопка «лайк», как на фейсбуке.
Первоначальная гипотеза была в том, что если залайкать всех подряд, то многие заметят и будут чувствовать себя обязанными сделать что-то в ответ. Автоматическая «лайкалка» написалась минут за семь.
Всё в моем духе, ага.
Я не учел главного — что нажатие кнопки «лайк» создает сообщение от твоего имени в чат с девушкой, сообщение стандартное и звучит как «ты мне нравишься».
Создатели сайта выстрелили себе и многим мужчинам в ногу: представьте, вы видите в анкете фейсбучный лайк, решаете, что это минимальный знак внимания, нажимаете на него, бабе уходит «ты мне нравишься», а в ответ приходит гневное «да вы заебали со своими шаблонными фразами!».
И действительно, практически никто из баб не знал, что это автоматическое сообщение. Я тоже не знал о его существовании, но быстро догадался. В результате я проспамил десятки тысяч женщин фразой «ты мне нравишься» (хотя не хотел этого).
С другой стороны, непопулярные девушки (которых никто не лайкал) реагировали хорошо, например: «спасибо, очень оригинально начал диалог. А то уже надоел вопрос: „можно познакомиться?“..))»
За два дня мне ответило 2000+ женщин, а анкету просмотрели 6 тысяч раз.
На типовое сообщение — типовые ответы, разумеется.
Большинство ответило «спасибо» и смайликами с вариантами, что естественно.
Многие ответили «я рада», шутку про раду я пошутил раз 20, потом надоело.
Открытого негатива было предельно мало, в основном это собственные демоны, связанные с инфернальным образом «женатика», который сидит на сайте знакомств и втайне от жены ищет любовницу. Попыток начать набивать себе цену было гораздо больше, все они сводились к форме «и не тебе одному».
Несколько особенно отчаявшихся женщин после этого писали мне безответно в течение двух дней, до сих пор сердце кровью обливается. Гореть мне за это в аду.
Много женщин предложило сегодня же встретиться, среди них было даже несколько симпатичных.
Самые оригинальные (это примерно 30%) замечали, что я люблю киви. Больше зацепиться было не к чему, что родило с моей стороны миллион шуток про киви разной степени паршивости.
В целом же моя вера в женщин серьезно пошатнулась.
На сайте меня в итоге забанили — либо за это, либо за слово «страпон» в анкете (оно там было совершенно не к месту).
Создатели этого сайта, который называет себя «первый приличный сайт» вообще — глупые люди, которым нарвится запрещать все подряд, там во внутреннем чате нельзя послать друг другу ссылку (ну да, боремся со спамом), слово «хуй», указать, что ты женат (!), делать поиск «девушка ищет девушку», в блоге (там можно вести блог!) модератор не дал разметить рассказ про Лену, и прочее и прочее.
В результате основной контингент — тем, кому за 35, а мужика все нет.
И вы знаете — принцип «позвольте вам впендюрить?» замечательно работает на больших числах. Ну то есть впендюрить там при желании было бы кому, а вот общаться хочется продолжать максимум с двумя.
Из двух тысяч.
Я обиделся на бан — все-таки, вел я себя прилично, а они даже не написали письма перед тем, как забанить. Даже не так — я обиделся не на сам бан, на то, что они забанили молча, при этом дырку они не закрыли, так что проспамить десятки тысяч баб можно до сих пор, могу выложить скрипт, с помощью которого это сделает каждый, бугага.
Кстати, альтернативная точка зрения — что меня все-таки забанили на слово «страпон» в информации о себе, потому что стоило мне его написать, как через пять минут анкета пропала, в то время, как мои шалости со спамом тупо игнорировались несколько дней.
Это в духе пидорастов с первого приличного сайта, в принципе.
Кризис среднего школьного возраста
Посвящается Кате.
Позавчера, ковыляя по слякотным улицам Москвы, я глянул в лужу на свое отражение, и мозг услужливо подсунул релевантное воспоминание.
Мне 13.
Я возвращаюсь с тренировки по бальным танцам, на которой я реализовывал мечту матери танцевать. На улице Новосибирска мокро и темно. Дорога привычная, три раза в неделю туда-обратно, достаточно короткая, чтобы не быть неприятной или слишком монотонной, но оставляющая минут двадцать на мальчишечьи мечты и раздумья.
Хозяйственный магазин отмеряет две трети пути, трамвайные пути выныривают слева — еще треть, а там поворот и бетонная дорожка до Дворца Культуры.
Жюль Верн, конечно же, уже был, русская фантастика, например, запавшие в душу из-за «мушкетерского» описания мужской дружбы никому неизвестные «Всадники ниоткуда» — тоже.
Я шел и обдумывал мой фантастический роман. Ну, на крайний случай, повесть. Как «Всадники». С продолжением. Как они же.
В романе мне 13, и я возвращаюсь с тренировки. На улице мокро и темно. В точности, как сейчас, но гроза не прошла час назад, а только надвигается. Или нет, пусть лучше идет.
Ко мне приближается рослый стройный человек в длинном плаще с поднятым воротником и низко надвинутой шляпе «как у Индианы Джонса». Фигура таинственная, но я смелый мальчик и ничего не боюсь. Район не самый лучший, квартира куплена у семьи алкоголиков, и мы переехали в нее после общежития.
Я предлагаю отцу называть квартиру «Гранитным дворцом» — так в романе «Таинственный остров» называется жилище, которое полюбившиеся нам поселенцы делают своим трудом, и которое превосходит палатку, где они ютились до этого, настолько, насколько квартира превосходит общежитие. Предложение не встретило широкого отклика.
Импозантный незнакомец в плаще — не худшее, что можно встретить в этом районе ночью, скорее наоборот — обычно вдоль домов прошмыгивают лишь редкие сгорбленные тени морлоков.
Он приближается, и я вижу, что он прихрамывает. Наверняка за этим есть такая-то загадочная история.
Он начинает говорить, и я отмечаю, что он едва заметно заикается — примерно так, как мой руководитель Станислав. Стасу двадцать пять, он строен, молод и харизматичен. Для меня он очень взрослый. Но его речь начинает немного запинаться, когда он возмущен. А возмущен он тогда, когда мы халтурим.
Этот небольшой дефект придает ему, такому уверенному и харизматичному, небольшую «изюминку», как у той почти не картавящей девочки, которая говорит скорее как француженка — с сопутствующим эротическим контекстом. «Да, Димочка», — сказала она язвя и передразнивая, когда мы стояли в кустах и обсуждали наши детские дела, весь смысл которых был в «перестань за мной бегать по всему двору». Да, Димочка, конечно! Чего Димочка захотел, не перестану!
Мать, проходя мимо, расслышала как-то вот эту «Димочку» и потом еще несколько дней была не в себе — для нее «Димочка» было естественной и неотъемлемой частью фразы «Димочка, дорогой, я, простая девка из простой семьи в неудачном районе, хочу от тебя детей, возьми меня здесь и сейчас».
Меня даже не пустили с ней купаться на котлован. Это же купальники — плюс вот этот «Димочка».
Незнакомец чуть заикается, потому что хочет сообщить что-то очень, очень важное, и просит не волноваться меня. Я мгновенно пропитываюсь к нему каким-то странным доверием. Сверкает молния, я отчетливо вижу вороные волосы с частыми прожилками седины (за этим явно стоит вторая загадочная история), я смутно узнаю лицо.
«Я — это ты из будущего», — говорит он.
Остальное действие романа происходит во временном промежутке между тем, когда я-из-будущего сказал что-то мне, 13-летнему и тем, когда я-из-будущего стал я, настоящим.
Спасение планеты, всякие тайны и приключения — это все придумается потом, главное — вот так на улице, в свете молний, в плаще — и ух.
Я заглянул в московскую лужу и пошел дальше. Еще метров через тридцать по мне мурашками пробежали детали воспоминания.
Не так давно я купил фетровую шляпу, к ней — длинное пальто, похожее на плащ, или плащ, похожий на пальто. У меня рано появились прожилки седины, как и у отца. Когда мне надо сказать что-то, что мне не безразлично, человеку, который мне не безразличен, я начинаю немного заикаться. Поэтому я могу начать запинаться в разговоре с женой, но на публичных выступлениях не надо представлять аудиторию голой.
Недавно обострился артроз — полученный, как я люблю думать, в качестве последствий этих тренировок, лелея в душе то, что по-другому их можно называть «десять лет легкой атлетики», чего я никогда не делаю; всегда отвечаю «бальные танцы», если спрашивают — и наблюдаю за реакцией.
Из-за артроза я прихрамываю.
У меня нет машины времени, но в кармане лежит айфон. Я бы легко мог вообразить его в 13 лет, в качестве еще одного трофея из будущего — у меня уже был настольный и довольно миниатюрный компьютер с 48 килобайтами оперативной памяти, развитие идеи было бы именно таким.
Я достиг этой точки. Я — это воображаемый взрослый я из будущего, с совпадением до деталей.
Крутую шляпу «как у Индианы Джонса» сейчас носит каждый второй хипстер, мода на нее вернулась не только для храбрых путешественников по времени и спасителей человечества.
Плащ к ней прилагается стилистически (UNI QLO, всего 5600 рублей), а за сединой и хромотой не стоят никакие истории.
Атлант расправил плечи
С радостью дочитываю «Атлант расправил плечи».
Это очень хорошая книга, написанная в Америке лет 50 назад (1957) русской эмигранткой еврейского происхождения.
«Несколько» затянутая, «...является одним из самых длинных романов, написанных на европейских языках», — говорит нам Википедия. «Я научила женщин говорить, но как теперь их замолчать заставить?», — как раз про это.
Роман приятно сочетает в себе русскую классическую многословность и американскую привычку долбить читателя повторяющимися примерами в качестве «аргументов» (характерную для не художественной литературы больше всего): если мы 10 раз повторим одно и то же в разных выражениях и рассказав историю 10 разных людей, значит, это универсальное правило!
Книга рассказывает о том, как борется честный Предприниматель против государственного блата. Описывается, разумеется, Россия, под видом «альтернативной» Америки, в которой к власти пришли «социалисты» и устроили, натурально, рейдерские захваты.
Роман в последнее время стал популярен у нас, и очевидно, почему: он наглядно показывает, что за 50 лет в сраной Рашке не изменилось нихуя. Тогда был «совок» и правящие партийцы, которые прикрывались нуждой народа, сейчас — совок и правящие менты, которые уже ничем не прикрываются.
Как призыв «надо ехать», «Атлант» — самое то.
Книга написана такими резкими мазками, что о них можно порезаться. Кругом — как минимум титаны и богоборцы, ницшеане и прометеи.
Как и вся фантастика духа, книга «заряжает» и «не оставляет равнодушным». Ну, если где-то есть такие Атланты (пусть даже просто у автора в голове), значит, и я могу!
Все в книге хорошо и правильно, кроме одного маленького изъяна: по совершенно непонятной для меня причине книга борется за звание «философской», а позиция героев — за право называться «философией разумного эгоизма», новой, никому до этого не известной и великой.
Это не так.
Ничего нового автор нам не сказала, в качестве идеала описывается банальный анархо-капитализм, причем с анархической половиной я готов мириться, ибо сам анархист (скорее всего с социалистическим уклоном), но капиталистическая часть описана на наивном уровне «Америка — страна равных возможностей».
Тут всё в куче: и протестантская мораль, и культ золотого тельца, и даже «только в Америке могло родиться замечательное выражение „делать деньги“» — это почти дословно, и «благо конкуренции», и «свободный рынок», и все-все-все.
При этом капитализм такой дикий, что нарушает один из принципов анархизма — взаимопомощь, заменяя его «конкуренцией», от которой якобы только одна польза.
Понятно, что за 50 лет это даже не «устарело», а, скорее, «показало истинное лицо».
В романе описаны Великие Промышленники, но «делать деньги» теперь можно, не производя вообще ничего, кроме дополнительных денег. Конкуренция за пользователя оказалась дешевле, чем конкуренция за качество. Конкуренция вообще приводит к перерасходу ресурсов и перепроизводству благ. Ну и так далее.
Получился такой детско-идеальный мир, в котором Промышленники стараются быть лучше — например, главный герой изобретает чудо-металл — а общество понимает это своим «разумом» и награждает их деньгами.
«Мораль» при этом как-то особо не нужна, «разума» достаточно.
В современном же мире «разум» оказался довольно хитрой штукой: например, владельцам железной дороги выгодно, чтобы пассажиры пользовались ей регулярно и часто, предпочитая ее. Выход простой: надо снижать цены (опять-таки, в великой конкурентной борьбе), повышать качество, использовать нанотехнологии.
Выигрывают все, особенно пользователи.
С другой стороны, какой-нибудь фармацевтической компании выгодно — ну, не знаю, давайте проведем аналогию — чтобы пользовались ее продуктами регулярно и часто, предпочитая их. То есть — чтобы люди постоянно болели и постоянно лечились. Ну, с точки зрения банального разума.
В современном мире корпорации — это новые государства, как по уровню влияния, так и по уровню паразитизма и принуждения.
Это все мелочи, ода «правильному» капитализму, созданная в 1957 году, вполне имеет право на существование, особенно как исторически-художественная книга. Тем более, что термин «анархо-капиталлизм» как раз в 60-ых и появился. Но никто же не будет читать экономистов, а тетеньку, которая описала это в красочной форме — вполне.
Роман написан «титанами для титанов», и каждый легко сможет поставить себя на место главных героев, потому что каждый — лучше среднего.
Если все-таки задуматься, что не все могут быть титанами, и задать себе вопрос — какова роль «маленького человека», то легко можно понять, что автор уготовила ему традиционную роль разумного винтика.
А это уже по-настоящему смешно, потому что именно в этом месте разбиваются все утопии.
Хорошей DB должно быть монго
Много-много лет назад, великий гений, коим я, несомненно, являюсь, осознавал неуместность использования реляционных баз данных в веб-программировании и регулярно травил пхп-программистов, которые любили писать, например, логи в базы.
И действительно, даже при разработке «типа CMS» для того, чтобы по адресу /about выводился какой-нибудь текст, в 99% случаев достаточно сделать файл about.txt и пихать все туда, если надо запихать больше одного значения («текст и заголовок») — то serialize и вперед (нет, не xml и прочее гавно).
Да и вообще, CMS никому не нужны.
У меня был движок блога, «написанный на файлах» и была даже специальная кнопочка, на которой значилось «no sql». У Болка движок блога, кстати, до сих пор на файлах работает, а ведь уже 21 век на дворе.
С тех пор прошло много времени, остальное отсталое человечество дозрело и движение nosql действительно завелось и стало трендом, похуже mysql.
Я же совершенно случайно и безотносительно ко всяким трендам попробовал mongodb и полюбил.
Пользоваться mongodb надо не из-за производительности, масштабируемости, nosql (забудьте все, что я говорил выше), а только хотя бы потому, что после ее использования внутри остается теплое приятное чувство, что Сделал Всё Правильно.
В mongo можно пихать «документы», при этом документ — это массив. Поднимите руки, что любит массивы так же, как люблю их я? Ага, молодцы, возьмите с полки пирожки.
Что самое смешное — на предыдущем проекте я написал простенькую «оболочку» для mysql, которая позволяет работать с «документом», как с «массивом» (ну, чисто формально оно и сейчас позволяет, после запроса возвращается же массив? А теперь попробуйте изменить в нем одно значение и запихать его обратно, ага).
Документы не обязаны иметь строгую структуру, это называется «schema-less». Не, ну я любил заниматься анальными извращениями и решать, где для столбика в mysql хватит tinyint, а где и вовсе bit(4), но всему есть предел, к тому же после второго раза это уже не так интересно.
Тем те менее, несмотря на то, что нет «обязательных» полей, строить по ним индексы мы все равно можем. А потом искать по ним (впрочем, искать можно и вовсе без индексов, причем иногда более оптимально, чем с ними — когда требуется перебор всей таблицы, например).
Таким образом, «коллекция» в mongo представляет собой просто набор массивов, куда можно свободно писать, свободно модифицировать и свободно делать любые выборки по любому количеству полей, не хуже, чем в mysql.
Кстати, запросы для выборок — тоже массивы. Очень удобно генерировать их автоматически, не надо подставлять «SELECT .... FROM» в нужных местах, просто создал массив — и вперед. То есть, если документ-массив целиком же кинуть в выборку в качестве запроса, то он найдет и вернет самого себя (что логично), если часть документа, напимер, массив user => acerbial, то оно вернет все документы, где user => acerbial.
«Но без join-ов».
В этом — прелесть номер два. Так как пихать можно любые массивы (это называется «Document Store»), половина join-ов отпадает естественным образом.
Например, заметка и комментарии к ней — это один документ, а не 1+N запись в базе данных (где N — количество комментариев).
Учитывая, что максимальный размер документа — 4 мегабайта, и ты не обязан работать с ним целиком, не только нет причин не хранить комментарии отдельно, но это является единственным логичным и правильным способом.
Сразу решается «проблема» удаления текста и удаления комментариев к нему.
Очень просто решаются задачи, типа «закладки пользователя» — они принадлежат, натурально, пользователю.
Ну давайте уже признаем, что в вебе хранятся и выводятся документы — сразу станет легче жить.
Многие мелочи заботливо сделаны «для веба», да и просто — заботливо сделаны. У каждого документа есть автоматически создаваемый уникальный id («аналог» int autoincrement в mysql), о котором не надо заботиться — он просто есть и работает. Более того, когда ты запишешь новый документ в коллекцию, mongo вернет этот id сам, mysql же придется об этом просить отдельно.
Есть capped collection — коллекция, которая обрезает себя сама («хранить 100 последних документов»), идеально для ведения логоподобной ерунды. Есть upsert — «если документ не существует, то создать», это позволяет писать один и тот же код для создания и редактирования. (Что тоже меня всегда бесило в MYSQL — там update и insert это две разные команды).
Можно не только указать, какие поля возвращать («как в mysql»), но и обратное — указать, какие не возвращать.
В результате всех этих мелочей код у меня выходит раза в два меньше (и раза в два медленней, смакую удовольствие) и пока что нет никакой необходимости создавать обертки вокруг mongodb, все стандартные классы делают ровно то, что нужно.
Инъекций, как легко догадаться, тоже не существует в принципе, как можно сделать инъекцию в массив?
Mongo просто очень приятный и покрывает все потребности «домашних веб-движков блогов» лучше, чем это делает mysql.
Скорее всего, он более подходит и для «серьезных, масштабируемых проектов», но в эти дебри мне углубляться не хочется, потому что там все сводится к аргументу «99.99% стартапов никогда не умрут от излишней посещаемости, поэтому не выебывайтесь, и делайте на mysql+php».
Проблема в том, что на mysql просто физически неприятно после того, как попробовал mongo.
Главный минус — Монго пока что мало где стоит, и уж явно не стоит на хостингах за 5 баксов.
Собственно, поэтому и я агитирую — ставьте, пробуйте, требуйте в магазинах города. Так победим.
Остальные «минусы» Монго вытекают из плюсов — ну, знаете, как с девушками: «страшная, но ебливая», и являются не минусами, а «архитектурными решениями».
Например, по умолчанию Монго пишет на диск когда захочет (Mongo writes when it pleases, ага). За счет этого достигается феноменальная скорость работы (проще просто сказать «ага, записал» на очередной запрос, а записать как-нибудь потом) и феноменальное умение проебывать данные за последнюю минуту и портить всю базу, если отрубилось питание (поправимо с помощью --repair, но осадочек остается).
С одной стороны, это все поправимо, никто не запрещает делать запросы с опцией принудительной записи, с другой — в этом и прелесть, за супермегапроизводительность надо чем-то платить.
(Рекомендуемая книга — MongoDB: The Definitive Guide, хотя для начала мануала на сайте хватает «за глаза»).