MCP

суббота, 18 мая 2013 г.

Люди деньги и время

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

При этом, покупая, скажем, телевизор, за 31000 руб и зная, что чуть постаравшись, можно взять его за 30000, не будут возиться и возьмут здесь и сейчас вариант, которой дороже. Разница-то в процентах небольшая! Хотя на сэкономленную тысячу можно тупо покупать дорогие батоны и не париться с поиском дешёвых.

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

Что это значит в программировании? Если вы путём неимоверных усилий сократите расчёты с одного часа до 55 минут, никто этого и не заметит. А если с двух секунд до одной, то вы просто гениальные оптимизаторы. Имейте это ввиду, и вкладывайте ресурсы туда, где пользователи их оценят, даже если другие части будут совершенно неоптимальными. 

понедельник, 6 мая 2013 г.

Торренты vs лицензия

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

Но недавно, в связи с выходом Heart of Swarm от близзарда решил не ждать кряков а просто купить лицензионный диск... Лучше бы я этого не делал.
По факту оказалось, что ещё надо докупить Wings of Liberty, без него работать ничего не будет, но это мой личный факап, и надо было внимательнее гуглить про это. Проблемы же начались гораздо раньше.

Во-первых, нужно завести аккаунт на Battle.net, указав о себе тучу личной информации, чуть ли не заставили указать цвет носков. Блин, я тупо хочу поиграть локально, не надо мне всё это! Но меня никто не спрашивал.
Минут 10 я потратил на придумывание пароля. Он был то слишком длинным, то слишком сложным (в нём нельзя использовать спецсимволы, но обязательно цифры и большие буквы, ну что за бред?). Письмо с подтверждением регистрации я получил только через час. Т.е. я сижу с диском, который не работает и ничего не могу сделать.

Но в коцне-концов зарегистрировался, выяснил, что надо купить ещё одну игру, я её купил и... И я теперь могу играть в Wings of Liberty! Но не могу играть в Heart of Swarm, потому что близзарду нужно 72 часа, чтобы что-то там сделать у себя перед тем как вводить ключ из коробки с диском. Пипец. Приехали. Я купил диск, купил ещё одну игру, но должен ждать, пока что-то там произойдёт.

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

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

В общем, после такого, только торренты! Там нет никаких идиотских защит, не надо постоянно вводить пароли и выслушивать предупреждения о том, как я незащищён. Я просто хочу запустить игру и начать играть! А лицензии так и буду покупать задним числом, а коробку и распаковывать не буду. Всё равно внутри ничего полезного нет.

Update: Мой аккаунт блокировали 3 раза, пока не добавил мобильный аутентификатор.

суббота, 6 апреля 2013 г.

Странные изменения в Такси

Уже постепенно перехожу на сервисы по заказу такси через интернет со смартфона, но вчера решил позвонить обычным способом и заказать машину. Удивлению моему не было предела. По какой-то причине у такси сменился алгоритм заказа (я в 3 звонил), и появились идиотские информаторы. Теперь по-порядку.

Раньше, я звонил, говорил: "Хочу машину из пункта А в пункт Б". Мне уточняли по срокам и принимали заказ. Сейчас политика изменилась на: "Я вам перезвоню" без уточнения заказа. Т.е. тебя сразу ставят уже в позу ожидания, хотя ты даже не выяснил будут ли принимать заказ.

Возможно, они думали, что я на этом остановлюсь... Хех... я позвонил в 3 такси. Ну а чего, с таким качеством информирования об услуге — сами напросились.

Потом оказалось, что 20 минут меня дожидалось одно из такси, при этом по телефону говорили что машина едет, а с водителем связаться не получалось. Это уже просто качество сервиса говно.

Дальше началось интересно. Я уже ехал на машине, как всё-таки одни позвонили и уточнили, нужна ли ещё машина. А вот вторые 3 раза звонили роботом чтобы сказать: Вашей машины ещё нет! Хех, я только в третий раз дослушал, оказывается, чтобы отказаться нужно нажать 1, а если просто отбиться, это означает, что ты ждёшь. Да не жду я уже! Впрочем, спустя час мне всё-таки отправили смс и позвонили голосом, что машина приехала. Я уже был дома. Наверное стал даже стал плохим клиентом.

В общем, жду с нетерпением, когда можно у меня в городе заказывать Такси через телефон с выбором. Ибо несмотря на удобство, выбора у нас нет (всего 2 службы такси и заказываются разными программами).

среда, 27 марта 2013 г.

HttpWebRequest некоторые неочевидности

Я последнее время достаточно много работал с классом HttpWebRequest (позволяет делать запросы к серверу на .NET) и столкнулся с некоторыми моментами, которые весьма неочевидны, но о которых следует знать, если им активно пользоваться.


  • Сколько бы вы не создали клиентов, в реальности одновременно к серверу будут идти 2 запроса, остальные попадут в очередь. Планируйте это при реализации параллельности. Изменить количество можно установив ServicePoint.ConnectionLimit или уникальный ConnectionGroupName
  • Балансировка запросов в настоящий момент достаточно туповатая, поэтому, если вам в принципе достаточно небольшого количества одновременных коннекций, но некоторые могут занимать долгое время, вы можете получить нехорошую проблему: запрос зависнет в очереди. Происходит это тогда, когда кончаются все доступные коннекшены, запрос уходит в очередь к какому-либо из них, и продолжится когда тот закончится. Если при этом освобождаются другие — это ни на что не влияет. Т.е. вы можете получить пиковую нагрузку, очередь и толпу отвалившихся запросов, в случае если один будет долгим, а другие пристроятся ему в хвост.
  • Timeout на самом деле ограничивает время выполнения всего запроса, а не ожидания данных. Т.е. если вы не спеша получаете файл в 10Gb, вам плюнется таймаут. Не забудьте увеличить. А проблемы с долгим соединением решайте вручную парой Begin/End
  • Если вы используете Begin/End (BeginGetRequestStream, например), и решаете забросить запрос в случае долгого ответа, не забудьте сделать Abort, а то запрос может дойти, когда его уже никто не ждёт и не хочет обрабатывать
  • Несмотря на возможность установить AllowWriteStreamBuffering в false, память всё равно будет сжираться где-то в его недрах (возможно поправят поведение, ибо кажется багом, т.к. данные уходят по факту), так что при передаче гигабайт данных для надёжноти включите чанкинг
  • Размер данных, при которых будет отправка не регулируется, опытным путём установлено, что при чанкинге он 1024 байта. Т.е. если вы хотите медленно посылать небольшие порции данных на сервер, вы можете посылать их тупо в буфер, так что лучше не делать подобное и посылать всё целиком (получать данные с сервера маленькими кусками можно)
  • Если на сервере используется недоверенный https сертификат, то чтобы не получать ошибку соединения, надо подписаться на ServicePointManager.ServerVerificationCallback и там проверять сертификат на корректность. Метод статичный, так что следите за тем, чтобы не перехватывать чужие запросы (если в вашем приложении ещё кто-то посылает данные)
  • HttpWebRequest использует своё кеширование DNS, по умолчанию 2 минуты. Что странно, т.к. резолв идёт через системный DNS-кеш, т.е. накладных расходов не происходит. Можно изменить это время в ServicePointManager.DnsRefreshTimeout, и аккуратнее с KeepAlive, т.к. при его наличии будет держаться коннекшен к серверу некоторе время, и резолва не произойдёт.
  • Если сервер вам посылает данные очень медленно, то проверить не умер ли он, можно установив ServicePoint.SetTcpKeepAlive, что позволит пинговать сервер средствами TCP, и получить ошибку в случае если сервер реально пропал.
На этом пока всё, если будут ещё интересные моменты, то буду обновлять пост.

пятница, 8 февраля 2013 г.

История про винду поганую и крипто-про не лучше

Жил был компьютер. И жил он долго и счастливо, и решил владелец обновить его, да с седьмой винды, да на восьмую.
И обновился компьютер, и сказал, буду я работать и всё у меня будет хорошо, но не буду я апдейты ставить. Ибо 800B0001!

И пошёл владелец папки catroot2 да SoftwareDistribution удалять, очередь у службы bits вычищать, регистрировать и перерегистрировать COM-компоненты. Да не помогло это ни хрена. А гугл буржуйский только тех же страдальцев показывает, да переустановить систему с нуля предлагает.
И выяснил тут совершенно случайно владелец, что CryptoPro, продукт православный может козни подобные строить, и удалил он этот продукт с концами. И заработали апдейты, и поставились патчи, и заговорила Винда человеческим голосом: "Не выключай меня, добрый молодец, ибо обновляюсь я!". И всё стало хорошо до поры до времени.

Суть да дело, а геморроище злобное подобралось со стороны неожиданной (что для геморроев действительно неожиданно). Выяснил добрый молодец, что оказывается весь SSL'юшка сломан на виндоузе да на восьмом. Точнее не весь, а ровно половина: исходящие пакеты уходят, а локально опять же да и не работает ни хрена, как и было ранее сказано, да про апдейты. Причём, что презобавненько, коннекшен вроде бы устанавливается, сертификат отдаётся, ну а дальше-то жопенько: Сервер неожиданно взял да и разорвал соединение.

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

Но одолел страшилище добрый молодец, и включился тут SSL православный и апдейты, и те не сломались!

И я там был, винду материл, крипто про материл, всё подряд материл, да невыматериволся!

вторник, 5 февраля 2013 г.

Программы для восстановления полноценной кнопки Пуск в Windows 8

Я как-то писал, что сделал суррогатную замену кнопки Пуск, но в реальности, конечно жить с этим трудно и подходит только для узкого редкого применения в виртуалках, когда кнопки Win тупо нет.

Собственно, люди уже написали просто гору различных программ, которые восстанавливают или эмулируют эту кнопку, и почему бы их и не использовать?

В общем, я проверил около десятка программ, которые восстанавливают именно классическое семёрочное меню, те, которые делают что-то своё не рассматривал. Например, весьма популярная Classic Shell имеет хороший функционал, бесплатная, но меню совершенно другое, так что для моих условий не подошла. Т.е. я упростил себе задачу и мне не пришлось перебирать 30 программ. Всего лишь десяток.  

В общем, большинство решений пришлось сразу отбросить. Причины:
  1. У авторов нет вкуса и выглядит всё ущербно
  2. Совсем непохоже или сильно непохоже в мелочах на стандартное меня
  3. Глючит, тормозит и тупит
И по факту оказалось, что достойны внимания всего 3 программы, две из которых платные, а одна хак. 

Собственно делюсь:

Ex7forW8

ссылка

Это, собственно хак, который заключается в запуске проводника из Windows 7 под Windows 8. В результате исчезает вся восьмёрочность, и выглядит всё классически. Пользовался я им мало, поскольку восьмёрочность всё-таки иногда нужна, но особых глюков не заметил.

StartIsBack

ссылка

Судя по всему сделана русским разработчиком. Триал на 30 дней, программа стоит $3 за 2 лицензии (т.е. на двух компьютерах можно поставить). Т.е. вполне бюджетно. По внешнему виду выглядит почти идентично семёрочному, но есть скины, которые могут сделать небольшой микс в сторону восьмёрки, и результат будет совсем замечательным. Проблем не выявлено.

Start8

ссылка

Очень навороченный продукт от StarDock с кучей скинов и настроек. В общем, рюшечек хоть отбавляй. Стоит $5 за одну лицензию. Проблем не выявлено. Работает как надо.




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

вторник, 22 января 2013 г.

Про вегетарианцев

Меня давно интресовали вегетарианцы, но не сами по себе, а особенности их поведения. Ведь вроде бы с одной стороны, они говорят, как это хорошо, вкусно и полезно, а с другой...

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

Ну так вот, я долго не мог понять, в чём же тут дело, что за когнитивный диссонанс у людей. Но тут, кажется начало доходить, и хочется поделиться этой идеей. На мой взгляд, проблема у вегетарианцев не в том, что им не нравится мясо, а в том что они его не могут есть по психологически причинам. Попытаюсь объяснить: у вегетарианцев есть некое психическое заболевание, и когда они едят мясо, им становится плохо от этого (не знаю что они представляют, может опарышей, а может невинно убиенную коровку (хотя сомневаюсь)). Как плохо? Представьте, едите вы кролика, и тут кто-то говорит: "А это ведь не кролик, это похоже кошка!". Я думаю многих от такого заявления стошнит, кто-то будет терпеть это всё, хотя его изнутри будет выворачивать, при этом само мясо не стало менее вкусным, просто психологически его уже неприятно есть. Так и с вегетарианцами, только у них проблема на любое мясо.

А дальше вступает правило: Есть две причины, истинная и та, которая красиво звучит. Вегетарианцы не могут признаться в том, что им хочется мясо, но они не могут его есть. И они начинают сублимировать про коровок, про то как это полезно и прочее. Но при этом, внутри они таки продолжают завидовать тем, кто питается мясом, и эта зависть выражается ненавистью и оскорблением.

Так что новость о том, что вегетарианство причислили к психическим заболеваниям, мне теперь не кажется такой уж странной.