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

2013-02-28

Тыринг

Пару дней назад я упоминал Альфа-банк в контексте жадности и способов относительно честного отьема денег у населения. Сегодня негативная фактография пополнилась.

Как я уже говорил, чтобы не поощрять жадность Альфа-банка, я решил закрыть у них все свои счета. Открывал я их 28 февраля, оплатил услуги за год, закрывать пришел 28 февраля. Предварительно зашел в банк поинтересоваться, что конкретно, в деталях, произойдет 28 февраля. Меня клятвенно заверили, что в этот день будут перечислены проценты по депозиту и схема оплаты «пакета класс» перейдет на помесячную тарификацию.

Пришел, закрываю. Мне выдают деньги с недостачей более чем в тысячу рублей. После непродолжительного разбирательства выясняется, что 27 февраля Альфа-банк снял комиссию за год вперед (а не за месяц), тыщу двести с чем-то рублей. Особенно меня огорчил тот факт, что СМС-ка о списании этих денег ко мне не пришла. Вот другие списания отразились в СМС, а это — нет. По тихому стырили.

Какие я сделал выводы: банк меня поимел два раза за один год, на общую сумму почти в две тыщи рублей. Первый раз, когда подписали меня на избыточный для моих нужд пакет «класс», вместо подходящего «он-лайф», да еще с годовой оплатой вместо помесячной, на чем я потерял еще немного денег. Второй раз — при закрытии счетов и разрыве наших отношений, списав комиссию за год вперед, за услуги, которые никогда не будут оказаны. Поимел мошенническим способом, но так, что формально и не придерешься.
Чтобы успешно пользоваться их услугами, надо быть всегда готовым к наебалову и следить за руками. Не всем по нраву такое качество услуг. Меня так точно не устраивает. Банк, которому ты не можешь доверять — плохой банк.

Зато порадовал сотрудник банка, который помогал развязаться с этим нехорошим Альфа-Б. Был приветлив, доброжелателен и предлагал действия в нашу пользу. Например, составить и отправить требование о возврате неправедно отобранных, под видом комиссии, денег.

После 8 марта будет окончание этой истории. Обещали вернуть деньги.
Поглядим.
А потом в Альфа-банк ни ногой.

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

2013-02-27

Flask and static files

Flask это такой микро веб-фреймворк на Python. Его задача генерировать контент а не обслуживать HTTP доступ к статичным файлам типа CSS/JavaScript/картинки. Однако, бывают случаи, как у меня, например, в Картобонус ака Cartobonus, когда приложение на Flask это лишь часть, подсистема веб-решения. В этом случае веб-страницы на Flask используют CSS/JavaScript из внешних по отношению к аппликухе папок. Ну и какие проблемы? Проблема вылезает при отладке Flask-приложения, когда используется его собственный HTTP сервер, который ничего не знает про внешние папки с файлами. Если без CSS еще можно жить, то без JavaScript уже невозможно.

Итак, как научить Flask отдавать статику из любой папки
@app.route('/cartobonus/<path:path>')
def sendStatic(path):
 pth = os.path.abspath(os.path.join(app.root_path, "..", path))
 return send_from_directory(os.path.dirname(pth), os.path.basename(pth))
В данном случае, корень /cartobonus/ ведет в папку c:\Inetpub\wwwroot\Apps\app5\
где в подпапках лежат всякие компоненты.
Фласк приложение сидит в файле c:\Inetpub\wwwroot\Apps\app5\wsgi\servlets_controller.py
посему переменная app.root_path ведет в папку c:\Inetpub\wwwroot\Apps\app5\wsgi\
Об остальном несложно догадаться.

Получается вполне удобно. При отладке используется отдача статики Flask, в продакшене этот метод никогда не работает. Для особой безопасности можно добавить проверку типа
if __name__ == '__main__':
    отправлять статику

Источник знания

Ой, чуть не забыл, фигня эта ваша Editra. Подсветки совпадений нет, автодополнение кривое, фактически не работает. Кодировка вывода в консоль не регулируется.

original post http://vasnake.blogspot.com/2013/02/flask-and-static-files.html

2013-02-26

Простые радости

У дамы поломался на лексусе светоотражатель. Дама живет в Чикаго и говорит на русском. У дилера ей зарядили $300 за детальку

набираю номер телефона ближайшей к дому мастерской ( северные пригороды Чикаго). Слышу в трубку:
- Коля, ты заебал блядь на хуй! Иди делай, шо тебе говорят...
и тут же уже мне по- английски:
- Мастерская "Пипкин и Тютькин" слушает. Хау кен ай хелп ю?
Я спрашиваю:
- Вы говорите по-русски? ( как будто после посланного на хуй Коли было ещё непонятно).
-Рыба моя, мы говорим по русски, по польски, украински, испански, латышски и ваще по любому...- отвечает мужик на том конце провода.
Грустным голосом объясняю ему свою проблему. Он тут же:
-Закажем щас вам на интернете пластмаску за 40$ на свою скидку и за 10$ поставим. Приезжайте через пару дней.
- И всё? Вот так просто?- спрашиваю я.
- А вам что, нужны в жизни сложности?- по-одесски отвечает дяденька.
...


А на сэкономленные $300 дама купила себе сапожки.

Сплошной позитив :)

original post http://vasnake.blogspot.com/2013/02/blog-post_26.html

2013-02-25

Кто более цивилизован

На днях читал я пропаганду
там было написано, как легко подключить Интернет в Испании. А потом написано, что за отключение от Интернет надо отдать 180 евро. В то время как у нас, в России, достаточно просто перестать платить за услугу. А потом, в заключение, задали пропагандистский вопрос
Многие твердят о своем желании переехать в «цивилизованную страну». Готовы ли эти многие жить по правилам цивилизованного мира?

Сегодня я посетил Альфа-банк и готов дать положительный ответ на этот вопрос.
Сейчас я подписан на пакет услуг «класс», за 129 рублей/мес. Так получилось, что при открытии счетов я тормознул и меня на него подписали на целый год. Год прошел, я хочу перейти на пакет «он-лайф», за 59 рублей/мес. Как вы думаете, сколько стоит переоформить пакет? 999 рублей

Мы готовы жить по правилам цивилизованного мира, мы уже живем по ним.

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

original post http://vasnake.blogspot.com/2013/02/blog-post_25.html

2013-02-22

Synchronizing map and data grid interaction

Небольшое дополнение ко вчерашнему посту. Об отличиях в веб-картах ArcGIS Silverlight|Flex|JavaScript.

Проблема: на карте нарисованы обьекты и рядом открыта таблица с атрибутикой этих обьектов. Хочу видеть в таблице подсвеченную запись при выборе обьекта на карте. И наоборот — выбрав запись в таблице увидеть подсвеченный обьект на карте.
Они это назвали «Synchronizing map and data grid interaction».

Для JavaScript реализация есть

Для Flex реализация есть

Для Silverlight реализации нет. Ладно-ладно, есть, но очень странная, нелогичная.
Если кнопок не нажимать а просто возить мышиный курсор над картой, в таблице подсвечиваются записи, но наоборот — нет, возня мышкой над таблицей никак не отражается на обьектах карты. Если щелкнуть мышкой по записи в таблице, запись станет «выделенной» и обьект на карте станет подсвеченным, но наоборот — нет. Щелчки по обьектам карты никак не отражаются на записях таблицы.
По моему разумению это бред.

И, в качестве довеска, рецепт, как реализовать реагирование обьекта на карте на события mouseover и selected.
Сделать это очень просто, достаточно нарисовать правильный символ раскраски в xaml-файле и потом назначить этот символ для графики слоя.
<esri:FillSymbol x:Name="defaultAreaSymbol">
 <esri:FillSymbol.ControlTemplate>
  <ControlTemplate x:Name="CustomPolygonTemplate">
   <Grid>
    <VisualStateManager.VisualStateGroups>
     <VisualStateGroup x:Name="CommonStates">
      <VisualState x:Name="Normal">
       <Storyboard>
        <ColorAnimation Storyboard.TargetName="Element"
         Storyboard.TargetProperty="(Fill).(Color)"
         To="#880000FF" Duration="0:0:0.1" />
       </Storyboard>
      </VisualState>
      <VisualState x:Name="MouseOver">
       <Storyboard>
        <ColorAnimation Storyboard.TargetName="Element"
         Storyboard.TargetProperty="(Fill).(Color)"
         To="#88F000FF" Duration="0:0:0.1" />
       </Storyboard>
      </VisualState>
      <VisualState x:Name="Selected">
       <Storyboard>
        <ColorAnimation Storyboard.TargetName="Element"
         Storyboard.TargetProperty="(Fill).(Color)"
         To="#8800FFFF" Duration="0:0:0.1" />
       </Storyboard>
      </VisualState>
     </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
    <Path x:Name="Element" Stroke="Blue" Fill="#880000FF"
     StrokeStartLineCap="Round" StrokeThickness="2"
     StrokeLineJoin="Round" StrokeEndLineCap="Round" />
   </Grid>
  </ControlTemplate>
 </esri:FillSymbol.ControlTemplate>
</esri:FillSymbol>

<esri:LineSymbol x:Key="defaultLineSymbol">
 <esri:LineSymbol.ControlTemplate>
  <ControlTemplate xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows">
   <Grid>
    <vsm:VisualStateManager.VisualStateGroups>
     <vsm:VisualStateGroup x:Name="CommonStates">
      <vsm:VisualState x:Name="MouseOver">
       <Storyboard>
        <ColorAnimation BeginTime="0" Storyboard.TargetName="Element"
                 Storyboard.TargetProperty="(Line.Stroke).(SolidColorBrush.Color)"
                To="#88F000FF" Duration="0:0:0.1" />
        <DoubleAnimation BeginTime="0" Storyboard.TargetName="Element"
                 Storyboard.TargetProperty="(Shape.StrokeThickness)"
                 To="4" Duration="00:00:0.1" />
       </Storyboard>
      </vsm:VisualState>
      <vsm:VisualState x:Name="Normal">
       <Storyboard>
        <ColorAnimation BeginTime="0" Storyboard.TargetName="Element"
                 Storyboard.TargetProperty="(Line.Stroke).(SolidColorBrush.Color)"
                To="#880000FF" Duration="0:0:0.1" />
       </Storyboard>
      </vsm:VisualState>
      <vsm:VisualState x:Name="Selected">
       <Storyboard>
        <ColorAnimation BeginTime="0" Storyboard.TargetName="Element"
                 Storyboard.TargetProperty="(Line.Stroke).(SolidColorBrush.Color)"
                To="#88FFFF00" Duration="0:0:0.1" />
        <DoubleAnimation BeginTime="0" Storyboard.TargetName="Element"
                 Storyboard.TargetProperty="(Shape.StrokeThickness)"
                 To="3" Duration="00:00:0.1" />
       </Storyboard>
      </vsm:VisualState>
     </vsm:VisualStateGroup>
    </vsm:VisualStateManager.VisualStateGroups>
    <Path x:Name="Element" Stroke="Blue" StrokeThickness="2" />
   </Grid>
  </ControlTemplate>
 </esri:LineSymbol.ControlTemplate>
</esri:LineSymbol>
Обратите внимание на разницу в обращении к атрибутам
Полигон
<ColorAnimation Storyboard.TargetName="Element"
 Storyboard.TargetProperty="(Fill).(Color)"
 To="#8800FFFF" Duration="0:0:0.1" />
...
<Path x:Name="Element" Stroke="Blue" Fill="#880000FF"
 StrokeStartLineCap="Round" StrokeThickness="2"
 StrokeLineJoin="Round" StrokeEndLineCap="Round" />

Полилиния
<ColorAnimation BeginTime="0" Storyboard.TargetName="Element"
 Storyboard.TargetProperty="(Line.Stroke).(SolidColorBrush.Color)"
 To="#88FFFF00" Duration="0:0:0.1" />
...
<Path x:Name="Element" Stroke="Blue" StrokeThickness="2" />
Догадаться и сделать полилинию по аналогии с полигоном — невозможно. Надо знать, что конкретно писать в обоих случаях. А подсказки в Студии тут не работают. Если написать неправильно, все скомпилируется нормально, но во время работы плагин сильвера либо повиснет, либо вывалится.

Silverlight должен умереть.

original post http://vasnake.blogspot.com/2013/02/synchronizing-map-and-data-grid.html

2013-02-21

ArcGIS web maps

Уже изрядное время я занят разработкой вьювера (сегодня известного в узких кругах как Картобонус) на базе ArcGIS Viewer for Silverlight. Когда-то наш клиент выразил заинтересованность в таком вьювере и мы начали работы. Клиент давно уж соскочил, а мы до сих пор пытаемся из этого что-то выжать. А ведь Esri предлагает и другие варианты для работы с веб-картами.

Сначала вобью гвоздь в гроб Silverlight. Самая большая проблема связанная с использованием Silverlight, это привязка к решениям Microsoft. Грубо говоря, сильверлайтные программы работают только на MS Windows. С другими недостатками можно мириться или бороться или обходить их. Но привязку к MS Windows побороть невозможно.

ОК, закрыли тему Silverlight.

Посмотрим на ArcGIS Viewer for Flex.
Есть Application Builder
для работы которого нужен рантайм Adobe AIR. Этот билдер дает возможность в несколько щелчков мышкой сформировать папочку с картографическим веб-приложением. Если есть MS IIS или Apache HTTPD, то сразу получаем рабочую веб-карту. Клиенту, кроме браузера с плагином flash, ничего не надо.
Билдер работает несколько глюкаво, но генерирует вполне приличные карты с хорошим набором функций в обвязке ArcGIS Viewer for Flex.

Сравним с решением на Silverlight.
Достоинства: вьювер работоспособен не только на винде; доступен открытый исходный код вьювера; есть виджеты отсутствующие в сильвере. Развертывание на сервере проще; строить веб-карту легче. В галерее виджетов есть уже 135 полезняшек http://www.arcgis.com/home/search.html?q=flex%20viewer%20widget&t=content
Недостатки: нет (пока не нашел?) виджета добавления слоев; настройка и фильтрация данных слоя отсутствует.

Некоторые полезные доп.виджеты из галереи: редлайн и измерения http://www.arcgis.com/home/item.html?id=91a0014160fc4a9caadc2c7fd7089c1b

На этом про Flex всё.

Третий вариант из доступных трех — ArcGIS API for JavaScript.
Для яваскрипт нет билдера, такого как для флекс или сильлвера. Но есть функция публикации в ArcGIS Online http://www.arcgis.com/home/webmap/viewer.html
которая позволяет скачать подготовленную в их построителе карту в виде пакета для развертывания у себя. А еще есть набор шаблонов в галерее http://www.arcgis.com/home/group.html?owner=esri_en&title=Web%20Application%20Templates
Их можно использовать для того, чтобы не писать веб-карту с нуля.

Потом сохранил; опубликовал 'Make a web application', выбрал шаблон, 'download'. На компе образовался пакет в виде ZIP архива. Дальше все по инструкции, показываемой в процессе сохранения.
Распаковал в папку веб-сервера; почитал readme.html; внес несколько правок в яваскрипты приложения. Наступил на грабли.
Грабли положены вокруг переменной sharingurl. Когда она не определена, то не грузится карта с сообщением «Unable to load http://hostname/sharing/content/items/dbd1c6d52f4e447f8c01d14a691a70fe?f=json»
а как ее правильно записать - не сказано. В форуме (http://forums.arcgis.com/threads/5357-Sample-Javascript-Viewer?p=259888&viewfull=1#post259888)
нашлось решение, переменная должна выглядеть так
Тогда все работает как положено. Если не считать за грабли некоторую неактуальность readme.html, то на этом трудности заканчиваются.

Достоинства и недостатки, по сравнению с Silverlight.
Достоинства: вьювер на яваскрипт работает вообще везде; очень быстрый цикл разработки — не надо ничего компилировать и билдить; не нужно покупать MS Visual Studio или Adobe Flash Builder; доступна обширная коллекция примеров и готовых решений http://help.arcgis.com/en/webapi/javascript/arcgis/index.html; вокруг полно спецов по яваскрипт.
Недостатки: нет билдера для быстрого изготовления веб-карт; собрать полнофункциональную веб-карту трудозатратнее, чем для флекс или сильвера. Такой красоты как на флексе или сильвере, в яваскрипт достичь можно, но это будет очень непросто. Доступ к локальным ресурсам (диски на компе пользователя) сильно затруднен или вообще невозможен. В этом плане вьювер на Flex забарывает всех.

Выводы.
Заполнять сайт заказчика картами выгоднее с использованием ArcGIS Viewer for Flex - Application Builder.
Разрабатывать универсальные приложения на перспективу логичнее на JavaScript.
Silverlight должен умереть.

Вот такой обзорчик получился.

original post http://vasnake.blogspot.com/2013/02/arcgis-web-maps.html

2013-02-20

FeatureServer Using GeoAlchemy

Сижу, читаю документацию, никого не трогаю, а тут — на тебе

tgext.geo, the TurboGears2 extension for GIS makes it possible to use FeatureServer with GeoAlchemy as datasource

И далее пошаговый пример создания на Python, с нуля, картографического веб-сервиса WFS-T и пример клиента на OpenLayers. Круто, однозначно.

Получается что? Получается, что редактируемый слой (WFS-T) для карты можно сделать из данных, положенных в любую БД, поддерживаемую GeoAlchemy

GeoAlchemy provides extensions to SQLAlchemy to work with spatial databases.
The current supported spatial database systems are PostGIS, Spatialite, MySQL, Oracle, and MS SQL Server 2008.

Кстати, в примерах SQLAlchemy есть демонстрация использования ГИС-функций PostGIS.

This example was originally developed in the hopes that it would be extrapolated into a comprehensive PostGIS integration layer. We are pleased to announce that this has come to fruition as GeoAlchemy.

Короче, если нужно скриптовать/автоматизировать/вычислять геоданные и хочется делать это на любимом Python, велкам ту GeoAlchemy, расширение SQLAlchemy.

А про FeatureServer у меня уже пробегало (http://vasnake.blogspot.ru/2012/12/web-maps-platform.html).

original post http://vasnake.blogspot.com/2013/02/featureserver-using-geoalchemy.html

2013-02-19

Лень — двигатель прогресса

На что только люди не идут, лишь бы сэкономить себе пару телодвижений

... если раньше я прилежно останавливал видео на непонятном месте, перематывал назад, включал субтитры и забивал незнакомые слова в Анки, то сейчас я делаю то же самое. Разве что лень заставила этот процесс автоматизировать, что привело к созданию расширения Say It Again для проигрывателя VLC со следующими особенностями:

Навигация по субтитрам (переход к предыдущей, следующей фразе) — клавиши y, u;
Сохранение слова, его транскрипции и перевода вместе с контекстом (см. скриншот) — клавиша i;
Функция «Еще раз»: переход к предыдущей фразе, показ субтитра и пауза — клавиша backspace;
Подключение любых словарей в формате Stardict (в сети лежат словари из Lingvo x3);
Экспорт в Anki или другую программу, понимающую файлы в формате csv;


В действительности, лень это только мотиватор, основную движущую силу можно определить как «творческое начало». Человек хочет и может сотворить удобную и полезную вещь, мало того, глядишь, еще и прославится (+ честолюбие).

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

А в целом — очень достойная работа проделана добрым человеком.

original post http://vasnake.blogspot.com/2013/02/blog-post_19.html

2013-02-18

Итоги

Очередной узелок на память по результатам двенадцатидневной сессии виндсерфинга.
Что еще я осознал, кроме правильной стойки?

Гидроодежда.
Гидротапки нужны с высоким голенищем, чтобы не зачерпывать тапочками песок и не убить ноги о куски кораллов, камни и прочих ежей. У меня были конкретные тапочки — практически без голенища, так я сильно страдал от песка, попадавшего внутрь. Приходилось, отойдя от берега, все бросать, садиться на доску и промывать тапки. Потом стал заматывать стык ноги и тапок изолентой — эпиляция первосортная, зато в тапках ни песчинки.
Гидроперчатки очень нужны нам, офисным работникам. Два, три дня еще можно без перчаток, а потом ладони и пальцы начинают стремительно превращаться в мясо.
Бордшорты поверх гидрокостюма — иногда это практично и экономично. Гидрик очень легко истирается и рвется, а бордшорты помогут этого избежать. Я катался без бордшорт, в итоге гидрик на заду получил пару царапин, грозящих прорехами. Кстати, приличные бордшорты стоят сильно дешевле приличного гидрокостюма.

MFP.
Что такое mastfoot pressure ? Это когда вы толкаете гик вниз и на нос доски, вперед, проталкивая доску вперед передней ногой. Раньше я думал, что МФП это просто сильно повиснуть на гике.

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

Разжимайка.
Упражнения на развитие feeling и работу ног, рук.
По типу light wind freestyle упражнения проводить в слабый ветер на большой доске с небольшим парусом.
Уронить мачту от себя под ветер, перехватив руками гик у задней оковки с обоих сторон паруса. Вывести парус шкотовым углом вперед, перехватывая гик с новой стороны, проехаться немного, порулить. Переложить парус в нормальное положение, перехватив гик у мачты с другой стороны. Все время работаем коленями и руки не сгибаем сверх необходимого.
Обратная стойка — идя одним галсом менять положение ног как будто галс обратный. Работы с парусом нет.
Слаломная змейка — рулить на ветер, под ветер не меняя галса, ехать буквой S.
МФП — повиснуть на гике сильно согнув колени, практически сев на доску, руки прямые. Или — толкать гик вперед и вниз, проталкивая доску передней ногой вперед.
Простой фордак — увалиться взять задней рукой мачту, передней взять гик с другой стороны, ногами крутить доску вокруг мачты, по пересечении линии ветра взять гик с новой стороны как положено, сменить стойку ног.

Глиссирование.
Сначала освоить зацеп/отцеп трапеции, висение в трапеции. Потом заход в петли и выход из петель. Потом можно на воду.
Нужно - доска с петлями в положении плацебо, без шверта, достаточного размера парус, трапеция, кончики нужной длины, чтобы локоть влезал. Гик на нужной высоте, чтобы помогать висеть на кончиках.
Упирайся передней ногой в шарнир, разгоняй доску толкая гик вниз-вперед. заводи переднюю ногу в петлю, вешайся на трапецию, толкай гик от себя и вперед, разожми пальцы и упрись в гик основаниями ладоней, работай коленями. Упирайся передней частью стопы передней ноги, тяни парус вниз трапецией, заводи заднюю ногу в петлю. Поворотом бедер наружу на ветер иди ближе к ветру. Учись разгружать руки используя крюк трапеции и вес тела, работай коленями.

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

Сборка паруса.
Собрать парус довольно просто. Все за защелках, даже узлы вязать не обязательно. Нужно иметь запас шкотиков, четверка, качественных (не дешевле $20). Зажигалку для оплавления концов, резак, изоленту типа скотч. Пассатижи-круглогубцы-кусачки тоже пригодятся.
Парус разматывается после того как подготовлено все остальное.
Собрать мачту, в стыках ничего лишнего, замотать изолентой. Подготовить экстендер со шкотиком. Собрать гик, проверить шкотики клипсы и задней оковки. Размотать парус, отрегулировать вариотоп. На весу вдеть мачту в мачткарман. Не класть мачту на землю до распрямления складок паруса! Протянуть шкотик через блоки паруса и экстендера, если парус меньше шестерки то можно на два блока. Нити натяжки не должны пересекаться чтобы избежать трения. Настроить доунхол затягивая блоки, зафиксировать шкотик защелкой, остаток шкотика убрать в экстендер. Надеть на мачту гик, закрепить клипсой регулируя зажатие длиной шкотика. Зацепить стартшкот за мачту. Притянуть шкотовый угол паруса к задней оковке гика шкотиком, отрегулировать аутхол проверяя натяжение прижимая ладонью парус к гику. закрепить все болтающиеся кончики.

Выбор доски и паруса.
В слабый ветер нужна швертовая доска, как и при невозможности глиссирования. Иначе будет сложно набирать высоту. Для простого катания нужна фрирайд доска, а не слалом, формула, фристайл или вейврайдинг.
Парус надо брать себе по силам и учитывая возможности доски, плавника. Больше 6 метров это большой парус, нужен ли он тебе? Если есть сомнения, возьми парус поменьше, если что, потом поменяешь на побольше. Если сразу взять побольше — потратишь все силы на борьбу с ним и потом не сможешь катацца.
Для глиссирования доску надо литражом поменьше, Хотя в несильный ветер большие доски легче выходят на глиссер.

Мнение о досках.
Фанатик вайпер на 180 литров, со швертом и петлями.
Устойчив и управляем, но тяжелый и нос уходит под воду если не уйти на корму.
Фанатик шарк на 160 литров легкий и маневренный, всем хорош но без шверта, что мешает набирать высоту.
Нам, пока мы не стали уверенно глиссировать, лучше пользоваться вайпером, серия фемили боард.

Программа действий на будущее.
В слабый ветер крутить разжимайку на большой швертовой доске с небольшим парусом.
В сильный ветер пытаться глиссировать на доске 150-180 литров с парусом 6-7 метров, хотя это от ветра зависит, конечно.

original post http://vasnake.blogspot.com/2013/02/blog-post_18.html

2013-02-15

GraphicsLayer attribute table

Сегодня я восполню пробелы в документации к ArcGIS Viewer for Silverlight и ArcGIS API for Silverlight. Я покажу, как правильно добавить в карту слой GraphicsLayer и FeatureLayer. Ключевое слово - «правильно».

В документации и примерах добавление слоя выглядит очень просто
       
var gl = new GraphicsLayer() {
 ID = layerID,
 Renderer = new SimpleRenderer() {
  Symbol = new SimpleMarkerSymbol()
 },
 RendererTakesPrecedence = false
};
MapApplication.Current.Map.Layers.Add(gl);
MapApplication.SetLayerName(gl, layerName);

var lr = new ESRI.ArcGIS.Client.FeatureLayer() { Url = lyrUrl, ProxyUrl = proxy };
MapApplication.Current.Map.Layers.Add(lr);
MapApplication.SetLayerName(lr, layerName);
       
 

И это даже работает, в том смысле, что картинка на экране соответствует ожиданиям. Но, конечно, есть «но». Если слой добавлять таким образом, куда-то пропадает атрибутика. Мы открываем атрибутивную таблицу и наблюдаем пустоту. В настройках слоя мы не можем сконфигурировать окна popups. Почему? Потому что в вышеприведенных примерах нет кода инициализирующего атрибутику слоя.



Не все догадываются, но даже примитивный GraphicsLayer, с пометками нарисованными от руки, может работать с атрибутивной таблицей в стиле FeatureLayer.

Чтобы слои инициализировались как положено, нужна самая малость — сказать слою про его атрибутику перед добавлением слоя к карте. Например так
       
var symbIFS = new ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol() {
 Source = "/Images/MarkerSymbols/Basic/RedTag.png",
 Size = 28,
 OriginX = 0.5, OriginY = 1
};
var gl = new GraphicsLayer() {
 ID = layerID,
 Renderer = new SimpleRenderer() {
  Symbol = symbIFS
 },
 RendererTakesPrecedence = false
};
gl.Graphics = new GraphicCollection(marks);
gl.Initialize();
MapApplication.Current.Map.Layers.Add(gl);
MapApplication.SetLayerName(gl, layerName);

var lr = new ESRI.ArcGIS.Client.FeatureLayer() { Url = lyrUrl, ProxyUrl = proxy };
lr.OutFields.Add("*");
lr.Mode = FeatureLayer.QueryMode.OnDemand;
lr.Initialize();
MapApplication.Current.Map.Layers.Add(lr);
MapApplication.SetLayerName(lr, layerName);       
 

Если сделать так, все работает как положено. Но в документации об этом упоминаний нет. Какая жалость.



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

original post http://vasnake.blogspot.com/2013/02/graphicslayer-attribute-table.html

2013-02-14

Работаем коленями

В чем сила, брат? В коленях.

Работаем коленями, колени не работают — самые частые изречения инструктора Юры при разборе наших полетов.

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

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

А еще мне понравилось образное разьяснение, сделанное когда-то одним из инструкторов школы Северный Ветер: чтобы не тянуть гик к себе и не отклячивать зад, представьте следующую ситуацию.
Вы катаетесь, у вас все хорошо, но гик обмазан вонючей гадостью, вы стараетесь держать его от себя подальше. К тому, вы выиграли в лотерею миллион, но лотерейный билет спрятать некуда, вы же катаетесь. Поэтому билет пихаем в жо и зажимаем ягодицами, чтобы не потерять. Представьте себе это и вы почувствуете правильную стойку.

original post http://vasnake.blogspot.com/2013/02/blog-post_14.html

2013-02-13

Movieshell

Перед отлетом на каталку я дописывал Movieshell. Добавил код для смотрения видео с DVD — как собственно DVD-кино, так и сборники «4 в одном». Вчера навел порядок и вот, публикую.

Пакет Movieshell, вместе с исходниками, можно забрать со склада.

Что такое Мувишелл? Это программулина на Python, основное назначение которой — облегчить людям, которые с компьютерами на «у, шайтан машина», просмотр кино, складированного на внешних дисках.

Фрагмент из ридми:

Мувишелл был задуман и впоследствии исполнен как программа, упрощающая жизнь пожилых людей, желающих смотреть кино на компе, но не желающих разбираться в буковках, кнопочках, списках файлов и прочей белиберде, типа последовательности действий вызова плеера и выбора файла с диска.
А также для тех, кто хочет помочь этим людям смотреть кино без лишних напрягов.
Воткнул, нажал, смотри.
Основной сценарий такой: воткнули USB диск в комп, сработал авторан (или сами щелкнули специконку на рабочем столе), развернулось окно со списком фильмов для просмотра. Щелкаем мышкой по названию фильма и смотрим.
Аналогично работаем с DVD, хотя изначально программа заточена именно на использование внешних USB дисков.



Доп.инфо
http://vasnake.blogspot.ru/2011/10/getlogicaldrives.html

original post http://vasnake.blogspot.com/2013/02/movieshell.html

2013-02-12

Text editor vs IDE

Иногда в поле зрения попадает непостижимое. Например, некоторые на полном серьезе сравнивают PyCharm и Sublime Text. Но ведь PyCharm это полновесная IDE, тогда как Sublime Text это скриптованный текстовый редактор.


Если уж и сравнивать, то соблюдая весовые категории. Sublime Text сравним со SciTE, а PyCharm сравним с Eclipse.

В контексте разработки на Python.
Как бы то ни было, как ни сравнивай ежа с ужом, ни один из известных мне инструментов не может сделать автодополнение для обьекта переданного в функцию, типа эдакого:

class VTest:
    def callme(self, arg1='nothing'):
        print arg1

def testfunc(testobj):
    t = testobj # var t type VTest
    t.call...?

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


original post http://vasnake.blogspot.com/2013/02/text-editor-vs-ide.html

2013-02-11

Вернумшись

Праздники кончились, наступили трудо выебудни.
Мы вернулись со «спортивных сборов», проходивших с 27 января по 7 февраля на станции виндсерфинга в бухте отеля Hilton Plaza, Hurghada, Egypt (http://goo.gl/maps/odz27)

View Hilton Plaza, Hurghada, Egypt in a larger map
Конечно, ехали мы туда простыми туристами, по путевке на пляжный отдых. Но, приехав, все дни проводили на воде с доской и парусом, в попытках достичь следующей ступени развития виндсерфингиста :).



Двенадцать дней четырехчасовых тренировок дали себя знать, до сих пор все тело ломит, болят синяки и шишки. Но все это с лихвой перекрывается эйфорией от двенадцатидневной каталки!

Про каталку я еще позже буду писать, попытаюсь систематизировать приобретенный опыт. А пока про Хилтон.

Хилтон Плаза, все включено, Хургада, Египет, 27 января - 7 февраля 2013 года.
Впечатления.
Вполне приличный отель с очень дружественным персоналом.
Большая озелененная территория, но шезлонги только на крошечном пляже собственной хилтонской бухты, или у бассейна.
Общественных сортиров нам не попалось, что необычно для нас. Мы привыкли, что сортир можно найти недалеко от лобби и недалеко от бассейна. Тут этого нет.
Отель потрепан временем но пытается соответствовать новым стандартам. Сейф электронный, ключ от двери обычный а не карточка, с маленьким брелком, так что можно таскать в кармане, что мы и делали все 12 дней.
В простынях и полотенцах бывают прорехи небольшие, но не от ветхости. Порвал кто-то а прислуга либо не заметила, либо похерила.
Персонал прекрасно общается на русском и очень дружелюбен, но без навязчивозти. Любят детей.
В баре кола, пиво, сок, вода. Все остальное за отдельные деньги.
Еда неплоха, но без изысков. Вкусно поесть можно всегда, продукты качественные. Время на завтрак, обед и ужин отводят по 2.5 — 3 часа, все успеют пожрать.

Самое главное, рядом с пляжем Хилтона есть станция виндсерфинга. За 12 дней мы в ней оставили 870 евро за уроки и прокат, на двоих. И ничуть не жалко.




original post http://vasnake.blogspot.com/2013/02/blog-post_11.html

2013-02-01

А доска, она как обувь, должна быть по ноге

Про выбор доски для виндсерфинга.

Все обоснование выбора самой удобной доски отталкивается из условия, что 1 литр объема может удержать 1 килограмм веса. Так что берем ваш вес и переводим его в литры. Не надо забывать и о весе паруса. Прикинем, что в среднем парус весит порядка 10 кг. И добавим еще 15 литров объема для запаса плавучести. Т.е. такая расчетная доска будет самым идеальным вариантом.

Понимаю, что полученная цифра могла удивить многих из вас. И конечно, лаконичный вопрос, что же делать с такими досками, как 130-160 литров.
А ответ прост. Эти доски так же подбираются под вес. Что бы выбрать одну из них, просто прибавьте к своему весу число 60, и вы получите оптимальный объем. Доски этого класса, созданы как платформа для больших парусов. Их задачей является вытащить вас (с трапецией, гидрой и шортами) и большой тяжелый парус, как можно скорее на глиссирование. Они не будут хорошо работать со средними и малыми парусами, так как просто не предназначены для этого.

Выбирая доску для слабого ветра, снова обращаемся к расчетной формуле, но в этот раз к нашему весу прибавляем число 100. Доски полученного объема вероятней всего вы найдете в комплектации со швертом. Именно то, что нам и нужно. На ней можно бегать, топать, размахивать парусом и т.д. В общем тренироваться.

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

На этот вопрос есть неожиданный ответ. Для этого подойдут доски, которые мы подбирали под слабый ветер. Те самые со швертом. Они прекрасно себя ведут при ветре до 12-13 метров в секунду. К тому же шверт можно убрать, а особо внимательные товарищи заметят наличие большого количества закладных под петли для ног.

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


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

original post http://vasnake.blogspot.com/2013/01/blog-post_3050.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) Manager (15) web-browser (15) Никонов (15) Klaipeda (14) 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) 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) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)