MCP

суббота, 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 г.

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

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

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

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

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

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

четверг, 22 ноября 2012 г.

Смена темы в Windows 8 на тему из Release Preview

Я писал уже раньше, что Aero в Windows 8 у меня вызывает рвотный рефлекс. При том, что в Windows 8 Release Preview была шедевральная тема (чем-то даже лучше чем в Windows 7). И тут меня посетила мысль: а почему бы не попробовать подсунуть в релиз тему из релиз-кандидата.

Что удивительно, получилось совершенно без проблем (надеюсь не до первого сервис-пака ).
Собственно 2 картинки:
было

Стало
На мой взгляд гораздо приятнее, а ещё и с тенюшечкой и человеческой подсветкой при наведении.

Собственно, если вам это захотелось тоже проделать, то нужно поступить так.
В зависимости от версии (32 или 64 бита) скачать нужный архив:

Затем его распаковать в C:\Windows\Resources\Themes\Aero\ (нужны админские права. Возможно получится и без них в другую папку, но это уж вы сами).

После этого вам нужно создать какую-нибудь тему, сохранить её, например как "my theme", найти файл: C:\Users\<имя вашего пользователя>\AppData\Local\Microsoft\Windows\Themes\my theme.theme

Открыть его (например блокнотом). И поменять (ближе к концу):
[VisualStyles]
Path=%SystemRoot%\resources\Themes\Aero\Aero.msstyles

на

[VisualStyles]
Path=%SystemRoot%\resources\Themes\Aero\Aero_p.msstyles

После этого зайти в персонализацию и выбрать тему my theme. Всё. Можно пользоваться!

Для любителей, есть ещё встроенная тема AeroLite (можно применить таким же редактированием), но внешний вид сомнителен:


пятница, 16 ноября 2012 г.

Про SSD

Заказал себе ещё SSD, а пока заказывал, решил выяснить про них, как можно больше. Результатами исследование решил поделиться в этом небольшом чеклисте. Возможно пригодится, если кто-то ещё захочет взять SSD:
  • В работе SSD на функционал влияют 3 важные части:
    • Модули памяти
    • Контроллер
    • Прошивка
  • Модули памяти бывают построены по трём разным технлогиям
    • SLC — один бит на ячейку. Очень быстрые и очень надёжные. Стоят безумных денег и почти не попадаются. Выдерживают 100000 циклов записи.
    • MLC — два бита на ячейку. Практически все SSD на этом типе. 3000-5000 циклов
    • TLC — 3 бита на ячёйку. Пока такие только видел у Samsung 840. Но чувствую, что дальше будет больше. 1000 циклов перезаписи
  • Также у памяти бывает 3 основных интерфейса
    • Toggle NAND — одна из самых быстрых
    • Синхронный ONFi — почти такой же быстрый, как и Toggle NAND, но дешевле. Разница перекрывается прошивкой.
    • Асинхронный ONFi — более медленный, ещё дешевле. В некоторых случаях разница с синхронным практически незаметна
  • Ёмкость и производительность: текущая архитектура памяти приводит к тому, что 256Gb имеют одну из самых максимальных скоростей, 128 и 64 могут быть медленнеее (зависит от контроллера). 512 — особо не приводит к увеличению производительности.
  • Меньший техпроцесс означает меньшее количество циклов перезаписи и меньшую скорость. Так что старая память и старый SSD чем-то могут выигрывать перед новыми.
  • Контроллер
    • Есть дешёвые контроллеры в дешёвых SSD — Phison, JMicron. Тут я не исследовал, ибо некоторые факторы говорят, что дешёвый медленный SSD возможно будет хуже HDD
    • Есть SandForce — на нём построены большинство SSD. Есть некоторые проблемы, но большинство из них уже решили, также отличается сжиманием данных, что приводит к завышенным цифрам в характеристиках и плавающими скоростями в зависимости от данных
    • Есть Samsung, Indilinx Everest 2, Marvell, LAMD. Все имеют свои особенности, но самые быстрые
  • Прошивка.
    • Обновляется. Очень желательно следить и обновлять по возможности самостоятельно
    • В ней все алгоритмы работы. В некоторых случаях, кардинально повышается производительность и исправляются баги
    • В качестве примера, SSD от Intel на SandForce имеют собственную прошивку и на голову рвут остальных с тем же контроллером и той же памятью.
  • Производители: есть огромное количество производителей с практически идентичными характеристиками, ибо память одинаковая, контроллер одинаковый, для производства нужно купить мешок контроллеров, 8 мешков памяти и упаковать это всё в красивый корпус. Что из них брать — особо не принципиально.
  • Ёмкость.
    • SSD имеют "честные" гигабайты, но в целях балансировки часть места отводится под системные нужды и гигабаты становятся "маркетинговыми". Некоторые SSD позволяют изменить этот объём, но судя по всему при небольшом свободном месте производительность падает настолько, что луше не допускать этого.
    • Некоторые производители отрезают ещё 8% (и объём становится 60, 120, 240), ради надёжности (используются проверочные суммы, накопитель может работать даже при одном мёртвом модуле).
  • IOPS и производительность.
    • Свежий и загруженный диск имеют абсолютно разные скорости. Чем больше свободного места, тем быстрее.
    • Есть встроенный Garbage Collector, но лучше чтобы операционная система поддерживала команду TRIM, это эффективнее очищает диск и восстанавливает скорость.
    • Из-за ошибок прошивки после TRIM скорость может восстанавливаться не полностью. Т.е. работа нового и старого/пустого будет разной (привет SandForce!)
  • Соответственно при высокой нагрузке на SSD скорость будет проседать, вплоть до того что HDD будет быстрее. Лечение — дать отдохнуть диску.
  • Время жизни — не исследовал вопрос. Математика говорит про срок работы больше чем моральное устаревание, практика говорит что дохнут периодически все.
  • Чем больше ёмкость, тем больше срок жизни при равной нагрузке.
  • Лучшие накопители на данный момент и на мой взгляд  OCZ Vertex 4, Plextor M5 Pro и Samsung 840 Pro
  • RAID. Тут местами хорошо, местами плохо. Плохо в том плане, что RAID-контроллеры не поддерживают TRIM, поэтому при некачественной сборке мусора внутри SSD очень сильно просядет запись. С чтением всё хорошо. Так что при желании RAID думаю нужно:
    • Выяснить, может ли RAID-контроллер делать TRIM
    • Использовать софтовый RAID
    • Использовать SSD с хорошей сборкой мусора (т.е. не SandForce и Samsung)
А себе я заказал Samsung 830, уже достаточно старую модель, но из-за этого подешевевшую, при этом достаточно шуструю. А как мне сообщил пользователь SSD: "после 300Мб/с — разница в производительности не очень заметна."