Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2013-12-30

школа второго типа

Чупер доносит до нас свет знания:
КДПВ.

послушаем, например, мнение Питера Харта. В журнале Windsurf March 2006, p.045 “ Right idea-wrong gear” есть интересные доводы про оборудование, с которыми я согласен:

- разница между «экспертом» и «катающимся» не столь и велика, просто «эксперт» всегда умеет правильно подбирать оборудование «по погоде», что и дает ему уверенное и свободное катание (вместе с радостным ржанием)

- на досках entry-level/all round /Family если поставить петли для ног на края - в более агрессивное положение, ехать гораздо труднее, чем на более узкой нормальной доске

- на досках Family если поставить петли в переднее (учебное положение «плацебо»), то при ветре 8-10 м\сек вы будете «ловить боковой драг», вас будет сильно тащить вбок. Причина- перегруз носа доски. Легко «вылететь в катапульту»

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

- «прикатайтесь» на Family в слабый ветер к «агрессивному» положению петель, в сильный ветер переходите на нормальную доску с меньшим объемом.

-даже на современных широких досках, одновременно влезть в петли, сбалансировать плавник, не открыть парус, не утопить корму и при этом не «словить катапульту» - очень трудновыполнимая задача.

- на более маленьких, легких, узких досках легче учиться кататься в петлях, особенно засовывать заднюю ногу. Это простая физика. Легкие вещи быстрее и легче разогнать и поддерживать их движение. Вы можете начать брать более легкие паруса.

- Конечно, большие доски (150 литров) нужны, например, для катания на болотах, когда дует 4-5 м\сек и можно глиссировать с огромным «лопухом»- такая ситуация чаще всего на внутренних водоемах. Это сочетание прекрасно работает и может приносить удовольствие - почему бы и нет?! Но когда подует 10 м\сек и вода перестанет быть гладкой, амбициозному начинающему райдеру весом 75 кг с парусом 5.5 и доской 150 литров придется встретить проблемы: как только он влезет в трапеционные кончики и петли для ног и получит глиссирование, ситуация выйдет из под контроля. Нос взлетит в облака, доска будет подпрыгивать на каждой кочке , потом внезапное уваливание и оглушительная катапульта. И, что характерно, постоянно повторяющаяся…
Чтобы хотя бы приехать домой, нужно встать в sailing position (выйти из трапеции и петель для ног, приоткрыть парус, передняя нога у мачты, собраться всему в согнутую позу и ползти на ветер). Это совсем не похоже на расслабленную манеру катания на самых последних и модных surf-DVD и от этого можно жутко разочароваться. Причина- несоразмерность оборудования. Доска кажется слишком большой и тяжелой, так как парус слишком легкий и не может прижать нос и доску в горизонтальное положение. При коротком гике, центр парусности очень впереди, не над плавником- поэтому доска стремится съезжать по ветру, уваливается сама. При том же ветре, опытный райдер на Формуле может гонять комфортно с парусом 10 кв.м.

- Если вам не нужны напрасные проблемы в море с чопом, то при ветре 10-12 м\сек берите парус 5.5 и доску 100 литров или меньше.

-просто уменьшать площадь паруса – ухудшать контроль за доской. У доски есть рекомендованные паруса, с ними доска работает нормально.

-кататься на большой доске с маленьким парусом- наживать неправильные привычки. Катание в сильный ветер- это умение справится с большими нагрузками. Можно тренироваться в слабый ветер с большим парусом. Например, если поставить на 150 литров парус 7.5 при ветре 8 м\сек, то вам придется все делать очень быстро и нет времени на ошибки. Также вы учитесь ощущению того, как парус контролирует и тянет доску по воде. Так как оборудование сочетается и сбалансировано, то вы вынуждены вставать в «правильную» стойку. Чем дольше вы катаетесь и имеете контроль, тем больше вы учитесь правильным ощущениям. И тем быстрее вы сможете перейти на меньшие доски-паруса.

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

-при водном старте труднее залезть на большую доску, так как доска толще- шарнир выше над водой, приходится тратить больше сил

-здоровенный парус труднее вытащить из воды, чем маленький. Здоровенный парус тяжелее. Большая площадь пленки прилипает к воде. На больших парусах катаются с высоким гиком- труднее поставить мачту вертикальнее из воды. Если вы пытаетесь сделать водный старт с парусом больше 7.0, встает вопрос «а зачем?!». Лучше тяните за веревку- это более легко и логично.

-Если ваш вес 70-80 кг, то можно учиться на досках 150-130 литров, главное чтобы вы могли вытащить парус из воды за стартшкот. Тем не менее, чем больше доска тонет, тем меньше силы нужно чтобы встать на доску. Идеальный парус 5.5 кв.м. Маленькие паруса легче, но они могут «сбрасывать ветер», когда это не нужно (способность « On-Off» ). Обязательно найдете место с ровным ветром для водного старта, для обучения поначалу это очень важно. Потом вы научитесь соединять свои усилия и порыв ветра и можете делать водный старт где угодно. Неплохо, если вы немного «overpowered» (парус великоват для ветра, вы перегружены). Плохо если вы в волнах- волны закрывают ветер, сбивают доску с курса. Водный старт изменит вашу жизнь. К лучшему…


и там еще много.



original post http://vasnake.blogspot.ru/2013/12/blog-post_30.html

2013-12-27

Корабли бороздят

Чупер пишет про вторую ступень обучения виндсерфингу — начало глиссирования:

Следующий этап – доска для знакомства с ощущением и навыками глиссирования. Знакомства, как начала развития отношений!
Класс доски называется «семейная или для начинающих» (family\entry board). Впервые такую доску Viper («Гадюка»- неплохое название, а ?!!) выстругали в Fanatic,...
Доска весила уже как доска, а не как плот для новичков.
У доски была «любимая ширина»- 80 см, доска легко выскакивала на глиссирование, но быстро не ехала - что давало впервые испытывающему ощущения полета и глиссирования, но так «низэнько, низэнько…»
Самое важное - на доске было насверлено много дырок, для того чтобы можно было ставить петли для ног где угодно.
Ощущение того, что обе ваши ноги зафиксированы в петлях – совсем не радует очень многих людей, у них возникает много различных опасений и страхов по этой причине.
НО! Теперь нам нужен навык работы перемещения центров тяжести (верхнего - плечи и нижнего - бедра) только за счет ИЗМЕНЕНИЯ МАНЕРЫ СТОЯТЬ, при том что руки-ноги «защелкнуты в систему ноги- в футстрапс, руки- на гике верхним хватом на ширине плеч, вес тела- на трапеции». Ноги больше не могут и не должны бегать по палубе, руки не должны «хватать и тянуть».


Про навык работы перемещения центров тяжести — это архиважно! Ибо именно перемещая центры тяжести мы удерживаем баланс на вылетающей в глиссер доске. И чтобы вывести доску на глиссер, тоже надо работать — сместить центры тяжести вперед, но не до катапульты; давить через гик мачту вниз и чуть вперед – MFP, выравнивая доску; потом смещая тушку назад, по мере ускорения. У кого талант есть, тот ухватит суть сразу. А тормозам, вроде меня, придется много плавать (после полета из катапульты).
Зато сколько веселухи!



original post http://vasnake.blogspot.com/2013/12/blog-post_17.html

2013-12-26

Лао-цзы

Верные слова не изящны. Красивые слова не заслуживают доверия. Добрый не красноречив. Красноречивый не может быть добрым. Знающий не доказывает, доказывающий не знает. Совершенномудрый ничего не накапливает. Он все делает для людей и все отдает другим. Небесное дао приносит всем существам пользу и им не вредит. Дао совершенномудрого -- это деяние без борьбы.
Лао-цзы

Красивые слова, нет? А вот еще:

В древности те, кто следовал дао, не просвещали народ, а делали его невежественным. Трудно управлять народом, когда у него много знаний. Поэтому управление страной при помощи знаний приносит стране несчастье, а без их помощи приводит страну к счастью. Кто знает эти две вещи, тот становится примером для других. Знание этого примера есть знание глубочайшего дэ. Глубочайшее дэ, оно и глубоко и далеко. Оно противоположно всем существам, но приводит их к полному соответствию [с ним].


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

Трактат Дао Дэ Цзин написан на древнекитайском языке, который с трудом понимают сегодняшние китайцы. При этом его автор намеренно использовал многозначные слова. Кроме того, некоторые ключевые понятия не имеют точных соответствий ни в английском, ни в русском языках. Джеймс Леже в своем предисловии к переводу трактата пишет: «Письменные знаки китайского языка отображают не слова, но идеи, и последовательность этих знаков представляет не то, что автор хочет сказать, но то, что он думает.»




original post http://vasnake.blogspot.com/2013/12/blog-post_16.html

2013-12-25

Оптимизация: 41 день превратился в 20 часов

Дэйв Боуман рассказывает, как он оптимизировал вычисление координат:

We are doing a project for a state DOT where we needed to get the location of photos taken along the roadway... And, they have these photos taken every year, so in total, we needed to locate roughly 24 million of these photos for this project.
Through some complex SQL machinations that I will skip here, we were able to get the route and mile post (measure) for each photo, into a set of tables in a SQL Server database. The tables also had empty columns for x,y in Web Mercator and Lat, Long, which we would populate by looking up these values on the Linear Reference System (LRS) feature class, based on the route and mile post. Simple!
A few years ago we wrote an ArcGIS Server REST Server Object Extension (SOE) using .NET and ArcObjects, which would return the x,y (in web mercator) from an LRS feature class, based on a specified route and mile post.
However, some initial testing showed that each of these lookups via the REST SOE were taking ~ 150ms. This a lightning fast when doing a single lookup (you can check out this page which uses another version the same function), but in a tight loop, it was looking like 41 days of processing time.
The first thing I did was decide to ditch the REST SOE. There is no question that there is a ton of overhead in running this sort of a process through an SOE.
Thus, I fired up Visual Studio, and created an ArcGIS Console Application using the templates provided with the ArcGIS desktop SDK. From there, I dumped in the ArcObjects code from the SOE, and started scaffolding up code around it. For those interested, the core code for this is in a gist at the end of the post…
My initial tests on a batch of 10,000 photos ran in a few minutes, with an average lookup time of 5ms! Problem solved! Woot!
Then I unleashed it on a test batch of 100,000 records. Blammo! About 12,000 records in, an OutOfMemoryException is thrown. Darn. And I had not even gotten to writing out the output text file!
The solution to this was to run the processing in batches. At the beginning of a batch, I’d open the feature class, run through the batch, and then close it.
By this time I’d re-run the same 10,000 and 100,000 record test datasets at least 50 times, and this seemed to be a waste of time. Why not use my test runs to process real data? In my refactoring, I also wanted to ensure that the process could fail at any time, and re-starting things would pick up where it left off – zero wasted cycles.
so I set two of these processes running on Friday evening and went to bed pretty pleased with myself. Saturday morning, I found that, with less than 1 million records processed, both processes crashed due to SQL time outs. At least I was glad I’d built in that fault tolerance so that the ~900,000 records which completed and were stored would not have to be re-run.
I extended the timeouts in Massive, and started them back up, but noticed that now, the average time for a route & mile post lookup was ~30ms. What?
I suddenly had an idea what the issue was. The variation in the look up time was likely because some routes features are longer than others. And longer routes have more vertices, which simply take more time to be read from disk. Not only that, in the code, I was searching for the route feature on every single iteration, so we would see this tiny variation in performance magnified.
What if, when I did that SELECT TOP query, I made sure that every record I got back was on the same route? That way, I would only have to search for the route feature once per batch, and the tight loop over the batch would be working with the same geometry, simply looking up the point along that feature at the specified measure value.
This took a little refactoring, and some SQL indexes, but it had an amazing effect. As I’m typing this, the process is now running rock solid at ~3ms per look up, which is roughly 1.2 million lookups per hour.


Знакомо, да. Особенно то раздражение, которое возникает, когда запускаешь процесс, длящийся сутки-другие, и уходишь. А когда возвращаешься, оказывается, что процесс отвалился через 10 минут после того как ты ушел.
Отладка, тщательность и устойчивость к сбоям — наше все.


original post http://vasnake.blogspot.com/2013/12/41-20.html

2013-12-24

Инструменты разработчика Plone

Martin Aspeli, автор прекрасной книги Professional Plone Development, делится опытом разработки ну очень высоко нагруженного Plone сайта. Какими инструментами пользовались разработчики, какими принципами руководствовались — у людей есть чему поучиться.

I can't talk too much about the project itself, except to say that when it launches, it will probably be one of the highest-traffic Plone 4 sites in existence. Moreover, it's a site with long lulls followed by huge spikes in traffic, that needs to cater for both logged-in members of the public and anonymous users, with different load profiles.
I do want to talk a bit about the tools and technologies we used, in the hopes that others will find it interesting. This is easily the most sophisticated stack I've ever used in a real-world project. And on the whole, it's worked extremely well so far.


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


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


original post http://vasnake.blogspot.com/2013/12/plone.html

2013-12-23

Как обеспечить браузеру диету

Какому веб-мастеру не хочется, чтобы его супер сайты летали и порхали в браузере. Ведь это такая жопа, когда сайт тормозит, не прорисовывается или по всякому жрет время посетителей.
Если архитектурно ускорить уже не получается, может быть немного помогут 25 советов из статьи «How to lose weight in the browser»:

25. Избегайте использование inline и вложенного кода
24. Стили сверху, скрипты снизу
23. Сжимайте HTML код
22. Включайте асинхронно
21. Сжимайте стили
20. Объединяйте CSS файлы
19. Используйте <link> вместо @import
18. Загружайте сторонний контент асинхронно
17. Храните размер массива
16. Избегайте использование document.write
15. Избегайте излишнего перерисовывания элементов
14. Избегайте излишних манипуляций с DOM
13. Сжимайте скрипты
12. Объединяйте несколько js файлов в один
11. Всегда используйте последнюю версию jQuery
10. Селекторы
9. Используйте for вместо each
8. И не используйте jQuery... … пока в этом нет необходимости :)
7. Используйте CSS спрайты
6. Data URI - Эта техника — альтернатива CSS спрайтам.
5. Не меняйте масштаб изображений
4. Оптимизируйте изображения
3. Используйте умное кэширование
2. gzip
1. Инструмент диагностики — ваш верный друг


Смысл этих советов детально расписан в статье, читайте и обрящете.

Особо ценный камент к статье:



original post http://vasnake.blogspot.com/2013/12/blog-post_12.html

2013-12-20

Про юзабилити

Какие пункты надо проверить перед тем как показывать свой новый сайт народным массам — usability checklist:

User experience

  • Персонализация. Валюта, язык, специфичные для определенных стран моменты, налоги и опции доставки должны меняться в зависимости от того, откуда пользователь. Геолокация по IP не должна быть включена без разрешения пользователя.
  • Регистрация несет за собой смысл. Например, кнопка «бесплатный период использования» (free trial) несет вполне ощутимый толк, а вот просто ссылка на форму регистрации нет.
  • «Прозрачное ценообразование». Цены сразу видны, нет никаких «подводных камней», аля мелкие ценники внизу, звездочки, сноски и т.д.
  • Страницы сами не обновляются. Пользователь может быть крайне удивлен, если, например, на новостном сайте вдруг сверху выскочит новость.
  • Информация на вашем ресурсе достоверная. Нет битых ссылок, ссылки ведут на соответствующие тематике ресурсы, правильные контакты (по которым можно дозвониться или найти офис), на сайте размещены фото реальных людей (которые действительно имеют отношение к тематике сайта или его функционированию). Ну и не забывайте про качественный дизайн (напомню, статья не про дизайн, а про usability).
  • Изображения должны доносить всю необходимую информацию: должна быть возможность увеличить изображение и рассмотреть детали.
...


и дополнительно

Что характерно, большая часть каментов к посту на Хабре посвящена ЧПУ (человеку понятным урлам), в то время как более важные темы заволокло пылью столкновения мнений.



original post http://vasnake.blogspot.com/2013/12/blog-post_5608.html

2013-12-19

Django Blog Zinnia

Если кому-то надо что-то, то это найдется, определенно.
Сайт на Django и хочется к нему прикрутить блог? Пожалуйста – Blog Zinnia.

Simple yet powerful and really extendable application for managing a blog within your Django Web site, Zinnia has been made for publishing Weblog entries and designed to do it well.
Basically any feature that can be provided by another reusable app has been left out. Why should we re-implement something that is already done and reviewed by others and tested ?
Actually more than 1486 Websites use Zinnia, for a total of 34150 entries. Why not your ?




original post http://vasnake.blogspot.com/2013/12/django-blog-zinnia.html

2013-12-18

12 разгневанных мужчин

На днях посмотрел фильму: 12 Angry Men (1957). Главгероя играет Генри Фонда.
Занятный и поучительный фильм. Все действие происходит в одной комнате (я еще видел подобный фильм — Carnage (2011), тоже очень занимательный). 12 мужиков — присяжных полтора часа обсуждают вопрос — можно ли на 100% быть уверенным в том, что обвиняемый совершил преступление? Или в деле есть место для обоснованного сомнения (reasonable doubt)? Несмотря на такие декорации, фильм захватывает, не оторваться.

Оказывается, решение присяжных засчитывается только в том случае, если все 12 единогласно голосуют либо «виновен», либо «не виновен» а если хоть один из присяжных идет не в ногу, то вердикт не выносится до тех пор, пока либо он не убедит остальных 11 в верности своей точки зрения, либо пока они его не склонят в свою сторону. Ну еще есть вариант с hung jury, там либо судья выносит приговор, либо дело рассматривается еще раз — я не очень понял.
А еще оказывается, что для оправдательного приговора достаточно только наличия этого reasonable doubt — сомнения в том, что обвиняемый совершил преступление.


Посмотрите кино, интересно и будит мыслительные процессы. Сплошная польза.

original post http://vasnake.blogspot.com/2013/12/12.html

2013-12-16

Bootstrap Expo

Где надергать идей набраться вдохновения для выстругивания дизайна нового сайта? В галерее:
 http://expo.getbootstrap.com/

Кстати, в разработке Bootstrap используется Grunt, сайт которого, в свою очередь, сделан с использованием Bootstrap. Вот это я понимаю, симбиоз.
А сайт симпатичный, да:



original post http://vasnake.blogspot.com/2013/12/bootstrap-expo.html

2013-12-13

Thread Scalability

Где-то тут у меня уже было про Майкла Ронстрома. Потрясающими вещами парень занимается — масштабирует MySQL Cluster до каких-то безумных чисел.
Вот, например:

Almost all software designed for multithreaded use cases in the 1990s have some sort of big kernel mutex, as a matter of a fact this is also true for some hyped new software written in this millenium and even in this decade. Linux had its big kernel mutex, InnoDB had its kernel mutex, MySQL server had its LOCK_open mutex. All these mutexes are characterized by the fact that these mutexes protects many things that often have no connection with each other.
What we have done in MySQL Cluster 7.3 is that we have fixed this bottleneck. We have split the transporter mutex and replaced it with mutexes that protects sending to a specific data node, mutexes that protects receiving from a certain data node, mutexes that protect memory buffers and mutexes that protect execution on behalf of a certain NDB API connection.
This means a significant improvement of throughput per API node. If we run a benchmark with just one data node using the flexAsynch benchmark that handles around 300-400k transactions per second per API node, this improvement increases throughput by around 50%. A Sysbench benchmark for one data node is improved by a factor of 3.3x. Finally a DBT2 benchmark with one data node is improved by a factor of 7.5x.


Что позволило достичь почти миллиона транзакций в секунду на один узел!

Вот такие люди делают БигДату доступной.
Кстати, не забываем — Большой Брат присматривает за тобой все чаще и внимательнее, благо БигДата позволяет.



original post http://vasnake.blogspot.com/2013/12/thread-scalability.html

2013-12-12

House

Сегодня отсмотрел последнюю, 177 серию House M.D.
Прекрасный сериал, смотрел все сезоны — и все хорошие. Обязательно буду пересматривать. Потом, когда-нибудь.

Louis Prima - Enjoy Yourself (It's Later Than You Think)


original post http://vasnake.blogspot.com/2013/12/house.html

2013-12-11

Бас еще профундее


Действующие лица.

Облздрав. Довольно крупный начальник. Бас профундо.
Минздрав. Ну, вы в курсе. Бас — ещё профундее.
Обязательное медицинское страхование — организация, у которой почему-то оказались все деньги, выделяемые на медицину. Сладкий тенорок.
Судья. Просто судья. Драматический баритон.
Врач. Вечно крайняя фигура. Хриплый лирический баритон.

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

Минздрав:

Что там за шум?

Облздрав:

Врачи забастовали.

Минздрав:

Они очешуели? Им нельзя!
Зачинщиков под суд — и все дела!

Облздрав:

Никак нельзя. Они по-итальянски:
Работают, но лишь по нормативу,
А это всё равно, что ничего!

Минздрав, всердцах:

Кто отменил им крепостное право?!
Молчи. То риторический вопрос.
Что скажет обаятельный медужас?
Пардон муа — обязательный медстрах?

Обязательное медицинское страхование:

Ребята, я совсем не понимаю,
Зачем им деньги вообще платить:
С подлодки, что в глубокой автономке,
Не то чтоб нету выхода совсем.
Он есть — через торпедные отсеки.

Минздрав, с досадой:

Конкретней. Не испытывай на прочность
Мой бедный ассоциативный ряд.

Обязательное медицинское страхование:

Куда они пойдут, коль их уволить?
Они шесть лет учились на врача!
Уборщицей? Кассиром? В слесаря?
Да им же просто гордость не позволит!
Давайте увеличим норматив:
Тыщ сто на одного специалиста.
Тогда и пригрозим им уголовкой!
Увидите: весь гонор пропадёт.

Минздрав, с облегчением:

Прекрасно! Вот за что тебя люблю —
Так это за умение конфетку
Слепить из... чем анализы сдают.
(громко) Подать сюда врача! Сейчас попляшет...
Ишь, забастовку мне тут учинил!

Входит врач.

Облздрав, грозно:

Ну что, пришёл, Емелька Пугачёв?
Сейчас тебе устроим садо-мазо.
О премии забудь. И о надбавках.
Работать будешь, милый, за харчи.

Минздрав, сокрушённо качая головой:

Ну как со мной ты мог так поступить?
Ведь я тебе почти родное папо!
Тебе же увеличили зарплату,
Мы даже отчитались (тычет пальцем в потолок) наверху.

Врач:

О да, вы отчитались. Хитрый ход.
Макиавелли даже и не снилось!
Немного увеличили оклад —
И на корню срубили все доплаты,
В итоге, не меняя ничего,
Добавили и штрафы, и нагрузку.
Осталось лишь поставить турникет
И деньги брать за выход на работу.

Обязательное медицинское страхование:

Какая обалденная идея!
Постой, я конспектирую, мой друг.

Врач:

Меня ты с кем-то путаешь. Твои
Друзья в овраге лошадь доедают!
Когда такое было, чтоб посредник,
На ровном месте прыщ, простой делец
Мне диктовал, кого и чем лечить,
И сколько принимать народу за день?

Облздрав:

Вот так всегда. Пригрел змею на рюмке -
В итоге ни посуды, ни вина!
Ты в курсе, на кого батончик крошишь?
Судья! Сюда! Готовь свой приговор!

Входит судья.

Судья:

Я умываю руки, господа,
Поскольку выполненье нормативов,
Как ни крути — совсем не криминал.
Что, не могли подбросить героину?
Иль пачку крупных меченых купюр?

Судья уходит.

Минздрав:

Чего ты добиваешься, несчастный?

Врач:

Немногого, коль здраво рассудить.
Зарплаты не в размере подаянья.
Рабочей смены, что не на полсуток.
Народа в смену меньше, чем полста.
Лечить, а не плодить макулатуру.
Как видите, работать я не прочь.
Но только, ради бога, не мешайте!

Облздрав:

Ты только посмотри! Каков нахал!
Не нравится — никто тебя не держит!

Врач пристально глядит на облздрав, затем окидывает взором остальных.

Врач, кивая в сторону облздрава:

Кроме него, найдутся кандидаты
На пеший эротический поход?
С таким начальством и врагов не надо:
Я заподозрил бы коварный план,
Когда б не непременное условье:
Чтоб план составить, надобны мозги,
А ими здесь, похоже и не пахло.
Когда совсем загнусь я от работы,
Апостола Петра я попрошу,
Чтоб на воротах впредь с таких, как вы,
Просил души он флюорографию.
И полис страховой. И по талонам.
И объявлял, что нету райских коек,
Зато избыток сковородко-мест.


Минздрав сидит в кресле. Обязательное медицинское страхование, полулёжа на диване, курит бамбук. Звонит телефон. Минздрав берёт трубку. Потом вскакивает и вытягивается по стойке «смирно».

Минздрав


Да, шеф! Вы не извольте сомневаться!
Нет-нет, не надо, это очень больно!
Как следует мне надо разобраться,
Чтобы кого попало наказать!

Минздрав кладёт трубку, с досадой поворачивается в сторону дивана.

Минздрав


Опять ты куришь? Я предупреждаю...

Обязательное медицинское страхование, обращаясь к потолку

Минздрав, ты ведь докаркаешься, друг.
Ты что-то стал бледнее спирохеты.
Стрялось чего? Не вызвать ли врача?

Минздрав

Не смейся, медицинское страшило.
Скажи мне лучше: где всё то бабло,
Что надо было вбухать в регионы?

Обязательное медицинское страхование

Так вбухали. Как ты и повелел.

Некоторое время спустя минздрав обращается к прессе и телевидению.

Минздрав


Дошло мне, о великий повелитель...
(запинается, прячет листок в карман, достаёт другой)
Прошу прощенья. Полон рот забот!
Я не пойму, с чего такой сыр-бор:
Мы на зарплату деньги выделяли,
На шестьдесят один процент поболе,
Чем в прошлый год. Куда они пошли?
Повелеваю: учинить проверку
Всех главврачей — они источник зла!
Ах да, и не забудьте наказать
Главу республиканского минздрава.

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

Министр республиканского здравоохранения


Они меня назвали пилорамой!
Они грозились кресло отобрать!

Президент республики

Как учит нас великий Лао Цзы,
«Ни сы!» Что означает в переводе:
«Будь безмятежен, друг мой, аки лотос,
что открывает лепестки заре
у самого подножья Храма Судеб».
Пойду-ка, всем по тыкве настучу.

Спустя некоторое время, на заседании госсовета республики.

Президент республики


Короче, я не понял. Что за нафиг?
Вам не даёт покоя призрак фронды?
Решили, как в семнадцатом году?
Или как в девяностом? Не прокатит!
И, кстати, почему разведка спит?
Ведь ясен пень, кто ветры подпускает:
У ЦРУ опять метеоризм
И недержанье денег для диверсий!
Вы разберитесь, кто там подстрекал
Троих врачей устроить голодовку!

Начальник республиканской ФСБ, возводя очи горе, тихо про себя

Твою же ж мать, и этот про шпионов!
Сдались им нафиг эти доктора!

Президент республики, продолжая разгромную речь

Ишь, замахнулись аж на десять тыщ,
И чтоб притом не сильно напрягаться!
Арбайтен по-стахановски, и чтобы
Спины тут мне не смели разогнуть!
А что до этих дятлов-отморозков,
Что вдруг себя скворцами возомнили -
Они мне не указ! Тут я хозяин!
Кого наказывать — уж это мне решать!

Интернет и пресса, срочно запасаясь поп-корном

Вот это жжёт! Практически, напалмом!
Нет, в этой удивительной стране
Цирк никогда не будет популярен,
Вокруг и так сплошной парад але!

Президент республики, переходя на увещевательный тон

Ну, как не стыдно, взрослые же люди,
Что скажет наш почётный Обеликс?

Где-то в Бельгии Жерар Депардье, безуспешно пытаясь справиться с икотой, глядит на пачку счетов за коммунальные услуги.

Депардье


Квартиры надо срочно продавать,
Их ЖКХ меня по миру пустит!

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

Пациент


Так я не понял: мне куда податься?
К шаману? В храм? А может быть, и вовсе
Себе животворящий огурец
Засунуть, где и солнце не светило?

Врач-пенсионер

Да полно! Ну куда мы друг без друга!
Смотри: они сейчас наобещают
Зарплату нам повысить в перспективе,
Кого-нибудь прилюдно ата-та,
И вновь всё на круги своя вернётся,
Как учат нас акулы диамата.
Потом опять история виток
Начнёт — и будут медики в почёте,
И будут им готовы заплатить,
И снова люди вспомнят о призваньи,
Когда не страшно будет отправлять
Ребёнка на учёбу в медицинский...
ВОТ ТОЛЬКО МЫ С ТОБОЙ НЕ ДОЖИВЁМ!

Пациент, в обнимку с доктором, удаляются, напевая:

Разлука ты, разлука,
Чужая сторона,
Никто нас не разлучит,
Лишь мать сыра-земля..




original post http://vasnake.blogspot.com/2013/12/blog-post_4.html

2013-12-10

GeoFlow

Это раньше он был GeoFlow, теперь это Excel Power Map.

Корпорация Microsoft представила дополнение GeoFlow для табличного процессора Excel. Оно предназначено для трехмерной визуализации данных, имеющих географическую и временную привязку.

The Microsoft Excel Power Map Preview is a new mapping extension for Excel 2013 and Office 365 that is currently (as of October 2013) released as a community technology preview.


Просто праздник для презентаторов, новый аддон Power Map позволяет очень красиво и насыщенно пудрить мозги с помощью красивых картинок, привязанных географически. А еще анимация и видеоролики.



original post http://vasnake.blogspot.com/2013/12/geoflow.html

2013-12-09

Gnome 3.8.4

Как владельцу системы с установленной ОС Debian testing/jessie, мне на днях привалило счастье — обновление Gnome до версии 3.8.4.
Как и положено всякой уважающей себя новинке, Гном выпендривается — отказался запускаться, демонстрируя черный экран с мигающим курсором.
Информация о проблеме есть тут: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=724731
говорят, что баг пофиксен, но лично у меня, как и у многих других, Гном не запускается.

В тонкие материи я не углублялся, а из того, что понял, делаю вывод: заточка gdm3 под systemd сильно повредила Гному.

Методом научного тыка я нащупал рецепт запуска Гнома:
su -l
killall systemd-logind
chmod -R 777 /run/user/0
service gdm3 restart

Или, если gdm3 по прежнему артачится, можно сделать так:
dpkg-reconfigure kdm
и выбрать умолчальным kdm
service kdm restart
как ни странно, перезапустив kdm я все равно получаю Гном, только окно логина от kdm.

А еще плагины шелла отвалились. А еще клавиатурные раскладки испорчены — в русской раскладке не работают стандартные шорткаты типа Ctrl-C, Ctrl-V.

В такие моменты я начинаю сомневаться в правильности выбора тестовой ветки для домашней системы.

original post http://vasnake.blogspot.com/2013/11/gnome-384.html

2013-12-06

Silverlight vs HTML5

Есть такая компания — Netflix. Занимается прокатом видео (фильмы, кино) онлайн. Нам, в России, это по барабану, ибо вещание на нашу территорию не идет. Так вот:

Компания Netflix намерена перевести свой сервис потокового видеовещания, предоставляющий услуги по цифровому прокату фильмов, с использования системы Microsoft Silverlight на технологии HTML5. Выбор Silverlight был обусловлен необходимостью поддержки DRM-механизмов (Digital Rights Management) для защиты контента от несанкционированного копирования
В настоящее время популярность мобильных устройств существенно возросла и Netflix уже не может игнорировать данный сегмент рынка. Более того, Microsoft заявила о прекращении развития технологии Silverlight. В связи с этим Netflix планирует осуществить повсеместный перевод сервиса на использование HTML5
В своей инициативе перехода на HTML5, сервис Netflix не отказывается от использования DRM и планирует использовать для обеспечения защиты контента интенсивно продвигаемый в качестве web-стандарта механизм Encrypted Media Extensions


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

Технологии меняются гораздо быстрее общественных устоев, традиций и коллективного бессознательного.



original post http://vasnake.blogspot.com/2013/11/silverlight-vs-html5.html

2013-12-05

Книги

When I wrote the first edition, we put the chapters online free after four years and found that this boosted sales of the paper edition. People would find a useful chapter online and then buy the book to have it as a reference.
Ross Anderson

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

Две книги, доступные онлайн. Первая полезна как набор практических занятий по освоению Python; вторая — как учебник по системной безопасности:

"Hacking Secret Ciphers with Python" (PDF, HTML) - книга, одновременно знакомящая с программированием на языке Python и криптографией.


"Security Engineering, Second Edition" - руководство по созданию надёжных и безопасных распределённых систем, охватывающее широкий спектр вопросов - от основ компьютерной безопасности до проблем и особенностей построения с нуля безопасных систем


Про безопасность надо почитать обязательно.



original post http://vasnake.blogspot.com/2013/11/blog-post_28.html

2013-12-04

11 Things

11 Things I Wish I Knew About Django Development Before I Started My Company

Автор SocialQ рассказывает о том, что ему открылось в процессе создания сайта/сервиса, построенного на Python/Django:

* Start off with the right directory structure
* Use Celery for asynchronous tasks AND cron jobs (no need to use unix crontab)
* Use Gunicorn instead of Apache for your webserver
* Don’t be afraid of using MongoDB as your primary data store
* Use named URLs, reverse, and the url template tag
* Get your settings.py file right
* Use supervisor for process monitoring
* Pick the right AJAX/JSON mechanism
* Use Redis - because it will eventually be your best friend
* Use munin and statds for process monitoring
* Use jammit for static asset compression


Собственно, best practices. Подробности внутре.

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

original post http://vasnake.blogspot.com/2013/11/11-things.html

2013-12-03

Python coroutines

Сопроцедуры, корутины, как их там по русски?

Презентация на 39 слайдах:

Python Coroutines Present and Future
Agenda:
Coroutines are wonderful for async
…but weird.
Understanding the weirdness.
Coroutine Kung Fu.
The Future!


И правда ведь, коллбеки сильно портят читаемость кода. Куда как понятнее читать псевдопоследовательный код.



original post http://vasnake.blogspot.com/2013/11/python-coroutines.html

2013-12-02

RESTful API

RESTful API для чайников — как сделать веб-сервис и снабдить его правильным API. Инструменты: Python, Flask.

APIs are awesome. By following the REST guidelines, you can design a logical and powerful web service that others can use. In this article, we built a RESTful API using Python and Flask. The concepts can be extended to create other more complex APIs.
In a RESTful API, only two URLs are needed per resource. The first URL is for a collection, which for the UFO sightings dataset is /sightings/. The second URL is for a specific element, which in our case is /sightings/<id>.
When we apply the HTTP verbs to these two resources, we get the following grid:

POST
GET
PUT
DELETE
/sightings/
Add a new sighting to the collection
Show all sightings
Update all sightings
Delete all sightings
/sightings/<id>
(Error)
Show <id>
Update <id> if it exists; else error
Delete <id>
The grid describes the effect each HTTP verb has on the two resources. For instance GET /sightings/ should return a list of all UFO sightings while GET /sightings/<id> should display that specific sighting.


В статье подробно рассмотрены начальные шаги построения веб-сервиса поверх базы данных.
Очень просвещающе. Что особо полезно — статья чисто практическая и небольшая, для пробуждения интереса и демонстрации принципов.
Нубам — читать.

original post http://vasnake.blogspot.com/2013/11/restful-api.html

2013-11-29

loxodrome

A ‘rhumb line’ (or loxodrome) is a path of constant bearing, which crosses all meridians at the same angle.
Sailors used to (and sometimes still) navigate along rhumb lines since it is easier to follow a constant compass bearing than to be continually adjusting the bearing, as is needed to follow a great circle. Rhumb lines are straight lines on a Mercator Projection map (also helpful for navigation).
Rhumb lines are generally longer than great-circle (orthodrome) routes. For instance, London to New York is 4% longer along a rhumb line than along a great circle – important for aviation fuel, but not particularly to sailing vessels. New York to Beijing – close to the most extreme example possible (though not sailable!) – is 30% longer along a rhumb line.


Превосходный сборник формул, вместе с реализацией на Javascript, для вычисления дистанции, азимута и прочей широта/долгота геометрии. При рассчетах Земля считается круглой (не эллипс).
Очень удобно, если надо что-то GPS-ное посчитать прям сразу — все калькуляторы есть прямо на странице, с подробнейшими разьяснениями, как и что считается.
Мастхэв, однозначно.

А это применение формулы haversine (дистанция по круглой земле) в запросе к базе MySQL:
SELECT id,
    ( 6371 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) )
        AS distance
    FROM markers
    HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
Запрос отбирает 20 ближайших маркеров, находящихся в 25-ти километровой зоне для заданных (в градусах) lat, lng.
Просто, не правда ли?




original post http://vasnake.blogspot.com/2013/11/loxodrome.html

2013-11-28

Был JBoss Application Server, стал WildFly

Наши корреспонденты сообщают:

Компания Red Hat представила новый открытый проект WildFly, призванный заменить собой Java EE сервер приложений JBoss и сосредоточить развитие на интенсивном продвижении новых технологий. Кроме смены бренда и переосмысления задач, новый продукт будет отличаться поддержкой Java EE 7, модульной структурой, ориентацией на высокую производительность, увеличением гибкости и реализацией современных методов разработки.
...
Анонсированное изменение затрагивает только JBoss Application Server, который переводится под бренд WildFly
WildFly будет сфокусирован на быстром внедрении инноваций и продвижении новых технологий. В качестве основной области использования WildFly рассматривается разработка и быстрое внедрение прототипов.


JBoss устарел, да здравствует WildFly! В нем даже WebSockets будет, во как. Лучше поздно чем никогда, точно.


РедХатовцы таки молодцы. Умудряются и деньги зарабатывать и ОпенСорц развивать.

original post http://vasnake.blogspot.com/2013/11/jboss-application-server-wildfly.html

2013-11-27

Nvidia GeForce 560

Если у вас вдруг стала виснуть MS Windows и, так ужвышло, видеокарта типа Nvidia GeForce 560, то, возможно, проблема вызвана свежим обновлением винды. Во всяком случае, лично у меня так и было. Винда накатила обновление, а в нем свежий драйвер для GeForce. И началось: пропадания курсора, рывки и, как итог — глухой зависон, тремя пальцами не поднять. Причем виснет два-три раза в день, в 2D. Целый день игрулек в режиме 3D не выявил никаких отклонений от нормы.

Это что ж надо было сделать с драйвером, что стал глючить старый добрый 2D?!

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


original post http://vasnake.blogspot.com/2013/11/nvidia-geforce-560.html

2013-11-26

И так тоже бывает

Намедни испытал разрыв шаблона.
Обычное дело, покупаешь что-нибудь на Ebay, ждешь, пока наши таможня с почтой управятся, через месяц-полтора получаешь свою посылку, отстояв не менее получаса в очереди в почтовом отделении. Никогда иначе не было, норма.
И тут, внезапно, в среду меня будят звонком из FedEx, говорят — к обеду привезем посылку, встречайте и из дома не отлучайтесь. Внезапность тут в том, что в среду посылка уже у меня, причем с доставкой на дом, а отправлена она была из солнечной Англии в понедельник. Вечером. То есть, что же получается? Посылка ехала фактически одни сутки?

Ну ладно, это все-таки FedEx, не слоупочта. Самое смешное, что такая сверхскоростная доставка не стоила мне (формально) ни копейки. Я просто закупился на 300 фунтов в http://stores.ebay.co.uk/surfdomeshop/
А доставку они сделали бесплатно. Да еще и лишнюю футболку по распиздяйству в пакет добавили, и не простую а золотую дорогую, 35-фунтовую.

Это реклама, да.


original post http://vasnake.blogspot.com/2013/11/blog-post_21.html

2013-11-25

Idiocracy

Намедни отсмотрел фильму Idiocracy (2006).
Ожидаемо, фильма сильно понравилась. Компьютерная графика так себе, да и в сюжете есть натяжки, но это напрочь перекрывается иллюстративностью идеи. А идея очень простая — с ростом технического прогресса, эволюция человечества повернула вспять. Отбор перестал быть естественным.
Настоятельно рекомендую засмотреть — смешно и поучительно, как и полагается сказке.

Довольно давно я видел еще один фильм от Mike Judge, Office Space (1999). Тоже весьма неплохо.

Короче, теперь вы знаете, что засмотреть в выходные.


original post http://vasnake.blogspot.com/2013/11/idiocracy.html

2013-11-22

Whole thing in memory

Since the traditional means of retrieving the data from a relational database is not fast enough and 11 million records is not such a big set after all, I decided to put the whole thing in memory

Я просто тащусь от того, как этот парень решает задачки. Профи в BigData.

Вот еще пример.
Дано: 11 миллионов записей неких данных, в виде CSV файла.
Надо: сделать веб-карту на которой пользователи могут видеть плотность распределения этих данных, в зависимости от заданных параметров.

Решение: засунуть все данные в BigMemory, заодно написав параллельный загрузчик; написать веб REST интерфейс к этим данным, реализующий ArcGIS Rest JSON interface for an ArcGISDynamicLayer; написать рендерер, рисующий растровую картинку по отобранным данным. За кадром осталось решение выборки и агрегации (нужна же плотность?) данных.
Ну и развернуть приложение: на Амазоне поднять три инстанса, на двух — хранилище данных, на одном веб-сервис (и, видимо, веб-карта).

И все это писано на Java, исходники лежат на Github.

Since the traditional means of retrieving the data from a relational database is not fast enough and 11 million records is not such a big set after all, I decided to put the whole thing in memory. BTW, this is a meme that has been trending for while now, and the most vocal about it is SAP HANA.
I decided to use Terracotta's BigMemory to hold the data in the "off-heap" and use its EHCache query capability to aggregate and fetch the data.  Now despite the name, I used the cache "eternal" capabilities to forever hold the data elements.




original post http://vasnake.blogspot.com/2013/11/whole-thing-in-memory.html

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Klaipeda (15) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) Baltic (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) seaside (1) serialization (1) shore (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)