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

2013-09-30

Vagrant

THANKSGIVING DAY. Let us all give humble, hearty, and
sincere thanks now, but the turkeys. In the island of Fiji
they do not use turkeys; they use plumbers. It does not
become you and me to sneer at Fiji.
Pudd'nhead Wilson's Calendar

Vagrant (бродяга) — инструмент для создания и развертывания виртуальных машин. Но не просто машин, а сконфигурированных и настроенных согласно некоему конфигу — vagrant file.

Once you or someone else creates a single Vagrantfile, you just need to vagrant up and everything is installed and configured for you to work. Other members of your team create their development environments from the same configuration, so whether you're working on Linux, Mac OS X, or Windows, all your team members are running code in the same environment, against the same dependencies, all configured the same way. Say goodbye to "works on my machine" bugs.


Полезняшка, однозначно.



original post http://vasnake.blogspot.com/2013/09/vagrant.html

2013-09-27

Закрытие сезона

Few things are harder to put up with than the annoyance of
a good example.
Pudd'nhead Wilson's Calendar

19 сентября, температура воздуха 14-16 градусов Цельсия, по градуснику; температура воды градусов 12, по ощущениям. Ветер 5-10 метров в секунду, по прогнозу, а по факту — 5-7. Дождя нет, но все небо в тучах.
Поскольку последние две недели холодно и дождь, то такой «удачный» день упускать было грешно. Мы и не упустили — заехали в Строгино и покатались на Пароходе системы авианосец. Получилось довольно удачно: и не холодно (если в воду не падать) и ветер стабильный, хоть и слабый. Поплавали три часа и довольные поехали жрать пиццу.

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



original post http://vasnake.blogspot.com/2013/09/blog-post_20.html

2013-09-26

dijit

It were not best that we should all think alike; it is
difference of opinion that makes horse races.
Pudd'nhead Wilson's Calendar

Dojo, dijit, widget — странные слова и странная библиотека. Но, как бы то ни было, ArcGIS Javascript API предполагает использование этих инструментов. А инструменты эти очень непросто осваивать, в силу их масштабности и слабой распространенности. Не хватает документации и примеров. Поэтому здесь я оставлю шаблон виджета в стиле dijit.

Допустим, виджет будет называться «agsdir» и его файлы будут базироваться в папке
javascript\vs\dijit\
внутри вебприложения.

Тогда скрипт будет называться agsdir.js:
define("vs/dijit/agsdir",
    ['dojo/_base/declare', 'dijit/_WidgetBase', 'dijit/_Templated',
        'dojo/_base/array', "dojo/dom-construct", "dijit/_TemplatedMixin",
        "dijit/layout/ContentPane", "dijit/layout/LayoutContainer", "dijit/form/ValidationTextBox",
        "dijit/_WidgetsInTemplateMixin",
        "dojo/text!./templates/agsdir.html"
    ],
    function(declare, _WidgetBase, _Templated,
        array, domConstruct, _TemplatedMixin,
        ContentPane, LayoutContainer, ValidationTextBox,
        _WidgetsInTemplateMixin,
        dirTemplate) {

        var AGSDIR = declare("vs.dijit.agsdir", [_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], {

constructor: function(params, srcNodeRef) {
    params = params || {};
    if (!params.map) {
        throw new Error('no map defined in params for AGSDIR');
    }
    dojo.mixin(this, params);
},

templateString: dirTemplate,
baseClass: "layersAGSDir",

buildRendering: function() {
    this.inherited(arguments);
},

postCreate: function() {
    this.inherited(arguments);
},

startup: function() {
    this.inherited(arguments);
    var frm = dijit.byId('agsdirURLform');
    frm.on("submit", dojo.hitch(this, function() {
        try {
            var val = dijit.byId('agsdirURLtb').get('value').trim();
            this.processUI(val);
        } catch(ex) {
            this.log('agsdirURLform on submit, error: ' + ex.message + ex. description + ex.stack);
        }
        return false;
    }));
    dojo.byId('agsdirURLtb').focus();
}
        }); // declare AGSDIR

return AGSDIR;
}); // define("vs/dijit/agsdir"
Внутри функции «startup» вызывается метод «processUI». Не ищите в этом примере реализацию этого метода, напишите его сами — он должен делать полезную работу. Имеющую прикладной смысл.

Как нетрудно заметить, скрипту нужен шаблон формы templates/agsdir.html:
<div id="agsDirLayoutContainer" data-dojo-type="dijit/layout/LayoutContainer" data-dojo-props="design:'headline'">
    <div id="agsDirTopPane" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'">
<!-- текстовое поле "URL-адрес |cgis.allgis.org (arcgis/rest/services)       |" -->
        <table cellpadding="0" cellspacing="0"><tbody>
            <tr>
                <td><label>URL-адрес:</label></td>
                <td>&nbsp;</td>
                <td colspan="2">
                <div id="agsdirURLform" data-dojo-type="dijit/form/Form">
                    <script type="dojo/on" data-dojo-event="submit">
                        console.log('agsdirURLform.submit');
                        return false;
                    </script>
                    <input name="agsdirURLtb" id="agsdirURLtb" type="text" required="true"
                        value="cgis.allgis.org"
                        data-dojo-type="dijit/form/ValidationTextBox"
                        data-dojo-props="regExp:'[^\\s]+',
                            invalidMessage:'http://cgis.allgis.org/arcgis/rest/services',
                            promptMessage:'cgis.allgis.org/arcgis/rest/services',
                            missingMessage:'http://cgis.allgis.org',
                            placeHolder:'http://server/arcgis/rest/services'" />
                    <button id="agsdirURLsubmit"
                        data-dojo-type="dijit/form/Button"
                        data-dojo-props="iconClass:'dijitEditorIcon dijitEditorIconPaste', showLabel: false"
                        type="submit">
                        Go
                    </button>
                </div> <!-- form -->
                </td>
            </tr>
        </tbody></table>
    </div> <!-- agsDirTopPane -->
</div>
CSS рассматривать не будем, эти вопросы решаются вполне традиционно.

С виджетом понятно. А как его создать, внедрить в страницу?
Где-то в файле index.html, перед подключением dojo:
<script type="text/javascript">
var path_location = location.pathname.replace(/\/[^/]+$/, '');
var dojoConfig = {
  parseOnLoad: true,
  packages: [{
    name: "utilities",
    location: path_location + '/javascript'
  }, {
    name: "vs",
    location: path_location + '/javascript/vs'
  }]
};
</script>
Что дает нам неймспейсы «vs» и «utilities».

Далее, где-то в скрипте приложения, по событию нажатия на кнопку, допустим, пишем код создания экземпляра виджета:
require(["vs/dijit/agsdir"], function(agsdir) {
    var agsdirDijit = dijit.byId('agsdirDijit');
    if(agsdirDijit) { ; }
    else {
        agsdirDijit = new agsdir({
            id    : 'agsdirDijit',
            map   : map
        });
        dojo.byId('agsdirPanel').appendChild(agsdirDijit.domNode);
    }

    if (dojo.isIE === 8) {
        setTimeout(function () {
            agsdirDijit.startup();
        }, 100);
    } else {
        agsdirDijit.startup();
    }
});
Как несложно заметить, где-то в HTML должен быть элемент с id='agsdirPanel', предназначенный для всобачивания в него созданный виджет.

Как-то так.




original post http://vasnake.blogspot.com/2013/09/dijit.html

2013-09-25

Python + Excel

He is useless on top of the ground; he ought to be under
it, inspiring the cabbages.
Pudd'nhead Wilson's Calendar

Python + Excel → PyExcelerate

PyExcelerate is a Python 2/3 library for writing Excel-compatible XLSX spreadsheet files, with an emphasis on speed.

Библиотека кода, заточенная на быструю запись (создание) таблиц типа XLSX. Другими словами, если вам надо сформировать табличку/документ Ёкселя (Excel), то вы можете воспользоваться этой интересной библиотекой.

Примеры:
from pyexcelerate import Workbook
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # data is a 2D array
wb = Workbook()
wb.new_sheet("sheet name", data=data)
wb.save("output.xlsx")

ws = wb.new_sheet("test")
ws.range("B2", "C3").value = [[1, 2], [3, 4]]
wb.save("output.xlsx")

ws = wb.new_sheet("sheet name")
ws[1][1].value = 15 # a number
ws[1][2].value = 20
ws[1][3].value = "=SUM(A1,B1)" # a formula
ws[1][4].value = datetime.now() # a date
wb.save("output.xlsx")

ws = wb.new_sheet("sheet name")
ws.cell("A1").value = 12
wb.save("output.xlsx")

ws = wb.new_sheet("sheet name")
ws[1][1].value = 15
ws.range("A1", "B1").merge()
wb.save("output.xlsx")




original post http://vasnake.blogspot.com/2013/09/python-excel.html

2013-09-24

Секреты скорости 6

Even the clearest and most perfect circumstantial evidence
is likely to be at fault, after all, and therefore ought to
be received with great caution. Take the case of any pencil,
sharpened by any woman; if you have witnesses, you will find
she did it with a knife; but if you take simply the aspect
of the pencil, you will say she did it with her teeth.
Pudd'nhead Wilson's Calendar

Гонщики (клуб «а я ехал быстрее 40 узлов») рассказывают о том, что необходимо быстрому виндсерферу. Быстрее (Faster).

Ролик 6/6
Хотите быстрей — увалитесь под ветер, курс градусов 125.

Честно скопипижжено с http://windsurf.smugmug.com/Windsurfing



original post http://vasnake.blogspot.com/2013/09/6.html

2013-09-23

Секреты скорости 5

APRIL 1. This is the day upon which we are reminded of what
we are on the other three hundred and sixty-four.
Pudd'nhead Wilson's Calendar

Гонщики (клуб «а я ехал быстрее 40 узлов») рассказывают о том, что необходимо быстрому виндсерферу. Быстрее (Faster).

Ролик 5/6
Chop, gusts and lulls — чоп, порывы и провалы, как с ними справляются чемпионы.

Честно скопипижжено с http://windsurf.smugmug.com/Windsurfing



original post http://vasnake.blogspot.com/2013/09/5.html

2013-09-20

Секреты скорости 4

It is often the case that the man who can't tell a lie
thinks he is the best judge of one.
Pudd'nhead Wilson's Calendar

Гонщики (клуб «а я ехал быстрее 40 узлов») рассказывают о том, что необходимо быстрому виндсерферу. Быстрее (Faster).

Ролик 4/6
FFF — fast fat friend. Иногда мне удается обогнать White, когда он стоит по шею в воде.
Про то, как плавник, петли, мастфут и набивка паруса позволяют добавить скорости еще чуть-чуть.

Честно скопипижжено с http://windsurf.smugmug.com/Windsurfing

original post http://vasnake.blogspot.com/2013/09/4.html

2013-09-19

Секреты скорости 3

Гонщики (клуб «а я ехал быстрее 40 узлов») рассказывают о том, что необходимо быстрому виндсерферу. Быстрее (Faster).

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


Честно скопипижжено с http://windsurf.smugmug.com/Windsurfing

original post http://vasnake.blogspot.com/2013/09/3.html

2013-09-18

ssl_error_rx_record_too_long

OCTOBER 12, THE DISCOVERY. It was wonderful to find
America, but it would have been more wonderful to miss it.
Pudd'nhead Wilson's Calendar

Как и обещал, история про httpd Apache и ошибку:
SSL received a record that exceeded the maximum permissible length.
(Error code: ssl_error_rx_record_too_long)

Если попытаться передать самую суть разнообразных причин, вызывающих такое сообщение в Firefox, то это будет примерно так:
ответ сервера не соответствует протоколу SSL.

Например, если на 443 порту оказывается сервис HTTP.

В моем случае так и было. В конфиге ports.conf были директивы
Listen 80
Listen 443
но конфига для включения SSL на порту 443 сервер найти не мог.

Когда-то, я написал конфиг и положил его в файл
/etc/apache2/sites-enabled/alwaysglum
где он успешно работал до недавнего времени. И вдруг перестал, откуда и ошибка. Я долго читал гугель
форумы
документацию
Долго менял всяческие опции в конфиге — все безуспешно.

В какой-то момент до меня дошло — у файла конфига нет суффикса «.conf»! Этот файл просто не попадал в поле зрения апача, ибо все дополнительные конфиги собираются по фильтру «*.conf».

И как только я привел имя конфига к требуемому, всё тут же заработало как положено.

mv /etc/apache2/sites-available/alwaysglum /etc/apache2/sites-available/alwaysglum.conf
a2ensite alwaysglum
rm /etc/apache2/sites-enabled/alwaysglum
/etc/init.d/apache2 restart

Кстати, две очень полезных команды для отладки httpd:
curl -k https://localhost/
openssl s_client -connect 192.168.1.9:443 -state -debug


Резюме: причина такой ошибки может быть любой. Ищите.

original post http://vasnake.blogspot.com/2013/09/sslerrorrxrecordtoolong.html

2013-09-17

www-less

Firefox: SSL received a record that exceeded the maximum permissible length. (Error code: ssl_error_rx_record_too_long)

Chrome: Error code: ERR_SSL_PROTOCOL_ERROR

Если у вас Nginx и вы получаете в браузере вот такую ошибку, то, возможно, вы пытаетесь сконфигурить редирект типа такого:
    server {
 listen 443;
        server_name www.clubwindsurf.info;
        rewrite ^/(.*) https://clubwindsurf.info/$1 permanent;
    }
    server {
 listen 443;
        server_name clubwindsurf.info;
        # actual https config ...
    }

Так дело не пойдет. Фишка в том, что соединение SSL устанавливается до того, как на сервер попадет информация о том, какой хост хочет запросить браузер. Другими словами, SSL соединение устанавливается по IP адресу и вот такие типичные для 80-го порта реврайты не работают.

Рабочий вариант выглядит так:
server {
    listen              443;
    server_name         clubwindsurf.info www.clubwindsurf.info;
    if ($host !~* ^(clubwindsurf.info)$) {
        rewrite ^(.*) https://clubwindsurf.info$1 permanent;
        # actual https config ...
}

Кого интересуют подробности, читайте тут:

Интересный рецепт можно найти тут

To find out if your nginx supports SNI, run:
nginx -V
If it does, you will see the line
TLS SNI support enabled
in the output

server {
        listen   80; ## listen for ipv4
        listen   [::]:80; ## listen for ipv6
        listen   443 ssl;
        listen   [::]:443 ssl;
        ssl_certificate /etc/ssl/certs/www.hostmauritius.net.pem;
        ssl_certificate_key /etc/ssl/private/www.hostmauritius.net.key;
        server_name  www.hostmauritius.net hostmauritius.net;
        root /var/www/www.hostmauritius.net/web;
        if ($http_host != "www.hostmauritius.net") {
                 rewrite ^ $scheme://www.hostmauritius.net$request_uri permanent;
        }
        ...


Позже напишу про аналогичную историю с httpd Apache.

original post http://vasnake.blogspot.com/2013/09/www-less.html

2013-09-16

Iceweasel vs Firefox

Let us endeavor so to live that when we come to die even
the undertaker will be sorry.
Pudd'nhead Wilson's Calendar

Сегодня я узнал еще один фокус по теме «Iceweasel vs Firefox in Debian». Можно сделать так:
su -l
ln -s /opt/firefox/firefox /usr/bin/firefox.real

update-alternatives --install /usr/bin/x-www-browser x-www-browser /usr/bin/firefox 50
update-alternatives --install /usr/bin/gnome-www-browser gnome-www-browser /usr/bin/firefox 50
update-alternatives --set x-www-browser /usr/bin/firefox
update-alternatives --set gnome-www-browser /usr/bin/firefox


и тогда при запуске просто «firefox» будет запускаться /opt/firefox/firefox
даже альтернативы можно не обновлять.

Как раз мой случай. Почему это работает? А вы попробуйте посмотреть
cat /usr/bin/firefox

Сцылки по теме:


original post http://vasnake.blogspot.com/2013/09/iceweasel-vs-firefox.html

2013-09-13

Gnome 3 Shell

Интересные особенности и возможности Gnome 3 Shell:

Alt+[key above Tab] (eg, Alt+` on a US keyboard) — переключение между окнами текущего приложения. Например между документами в Office.

Alt+F2 — открывает командную строку, в которой можно набрать любую команду. Работает автодополнение. Если нажать Ctrl+Enter то команда запустится в новом окне терминала.

В пользовательском меню (правый верхний угол) можно открыть пункт «Power off» нажав Alt на клавиатуре.

Alt+F1 или Win кнопки открывают режим overview.

Ctrl+click на иконке приложения (dash, favorites) запускает еще одно окно приложения.

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

Control+Shift+Alt+R запускает (и останавливает) запись скринкаста. Файл вы найдете в папке ~/Videos

Alt+F2, r (restart), Enter — перезапускает Gnome Shell.

Ctrl+Alt+Up/Down arrow — переключение между воркспейсами.

Ctrl+Alt+Shift+Up/Down arrow — перенос текущего окна на другой воркспейс.

Alt+F2, rt, Enter — перезапускает тему Gnome Shell (The theme file is share/gnome-shell/theme/gnome-shell.css).

Alt+F2, lg, Enter — запускает Looking Glass — девелоперскую консоль Gnome Shell.




original post http://vasnake.blogspot.com/2013/09/gnome-3-shell.html

2013-09-12

Календарь простофили Вилсона

Великий Марк Твен:

Training is everything. The peach was once a bitter almond;
cauliflower is nothing but cabbage with a college
education.
Pudd'nhead Wilson's Calendar

Remark of Dr. Baldwin's, concerning upstarts: We don't care
to eat toadstools that think they are truffles.
Pudd'nhead Wilson's Calendar




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

2013-09-11

Красивый прогноз

5-6 сентября 2013 года, две синих звезды - Very good wind. Don't leave your 5.x meter sails at home!
Но холодно!
Большая редкость для Москвы - ветер 9-19 метров/секунду.

Но холодно, менее 10 градусов по Цельсию. И ливень.

А в Хургаде 35 тепла, солнечно и ветер метров 10-12 в секунду.

original post http://vasnake.blogspot.com/2013/09/blog-post_2349.html

2013-09-10

Секреты скорости 2

Гонщики (клуб «а я ехал быстрее 40 узлов») рассказывают о том, что необходимо быстрому виндсерферу. Быстрее (Faster).

Ролик 2/6
Тут будет про петли для ног, про настройку паруса, стиль (манера держаться, стойка). Но побеждает не тот у кого самая «правильная» стойка, а тот, кто умело управляется с ветром и оборудованием.



Честно скопипижжено с http://windsurf.smugmug.com/Windsurfing

original post http://vasnake.blogspot.com/2013/09/2.html

2013-09-09

Запретный плод

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

Как можно догадаться, я слушаю аудиокнигу Марка Твена – Простофиля Вилсон. И не могу не поделиться находками.

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


Adam was but human—this explains it all. He did not want
the apple for the apple's sake, he wanted it only because it
was forbidden. The mistake was in not forbidding the
serpent; then he would have eaten the serpent.
Pudd'nhead Wilson's Calendar


В оригинале, как мне кажется, более точно (и смешнее) сделан акцент на запрете. Мой вариант перевода:

Адам был просто человеком – этим все обьясняется. Он не хотел яблоко потому, что это яблоко, он хотел его потому, что оно было запрещено. Ошибка была в том, что не запретили змею; тогда бы он сьел бы змею.


Как Вилсон стал «простофилей».

В том же месяце Пристань Доусона обогатилась еще одним жителем. Это был некто Дэвид Вильсон, молодой человек шотландского происхождения. Родом из центральной части штата Нью-Йорк, он попал в этот городок в поисках счастья. Ему было двадцать пять лет, он окончил колледж и прошел недавно курс юридических наук в университете одного из восточных штатов.
Дэвид Вильсон был некрасивый, рыжеватый малый с веснушчатым лицом и умными голубыми глазами, которые смотрели открыто и приветливо, а по временам искрились добродушным лукавством. Не сорвись у него с языка одно неудачное замечание, успешная карьера была бы ему обеспечена. Но Вильсон произнес эту злосчастную фразу в первый же день своего появления в городке, и эта оплошность стала для него роковой. Дело было так. Познакомившись кое с кем из местных жителей, он стоял с ними на улице, как вдруг позади забора какая-то собака начала рваться, лаять и рычать, явно проявляя свой дурной нрав, и Вильсон промолвил, словно про себя:
- Я хотел бы, чтобы половина этой собаки принадлежала мне.
- Зачем? - спросил его "то-то.
- Тогда я мог бы убить свою половину.
Собеседники уставились на Вильсона - кто с любопытством, кто с испугом, но, не найдя никакой разгадки, никакого ключа к пониманию, шарахнулись от него, как от зачумленного, и, уединившись, принялись о нем судачить.
Один сказал:
- Кажется, он дурак.
- Не кажется, а так оно и есть, - поправил другой.
Третий уточнил:
- Только идиот способен пожелать, чтоб ему принадлежала половина собаки. Что же станет, по его мнению, со второй половиной, если он убьет свою? Неужели он думает, что вторая половина останется жить?
- Наверняка думает так, если этот идиот может думать. Не думай он так, он пожелал бы быть хозяином всей собаки, а не половины! Он бы понимал, что если убьет одну половину, то другая все равно тоже околеет и ему придется отвечать за свою собаку; и никого не будет интересовать, какую именно часть он убил: свою или чужую. Что вы скажете, джентльмены, прав я или нет?
- Прав, разумеется. Владей он продольной половиной общей собаки, все равно так оно и было бы; и даже владей он поперечной половиной, все равно так оно и было бы; а в первом случае - особенно: ведь если убить продольную половину общей собаки, никто не может сказать, чья именно половина убита, но владей он поперечной половиной, может быть, он и сумел бы убить свою половину, и...
- Нет, все равно у него ничего не получилось бы, все равно ему пришлось бы отвечать, если бы и вторая половина издохла, а она обязательно бы издохла. По-моему, этот человек просто сошел с ума.
- Да ему и сходить-то не с чего!
Обыватель номер три заметил:
- Да что там спорить, это же олух!
- Вот именно! - подхватил обыватель номер четыре. - Болван, это прямо на лице у него написано.
- Да уж что верно, то верно - дурень! - сказал номер пятый. - Пусть другие думают, как хотят, а я остаюсь при своем мнении.
- Согласен с вами, джентльмены, - сказал номер шестой. - Это совершеннейший осел, короче говоря - простофиля. Уж если он не простофиля, тогда я, значит, не умею судить о людях!
Так Вильсона и прозвали Простофилей.




original post http://vasnake.blogspot.com/2013/09/blog-post_6544.html

2013-09-06

Секреты скорости

Гонщики (клуб «а я ехал быстрее 40 узлов») рассказывают о том, что необходимо для быстрого виндсерфера. Быстрее (Faster).

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

Профики катаются на кастомах, раскрашенных под «продакшн». У каждого профика в «туре чемпионата Мира» по 12 досок – на разные места по три доски «слабый, средний, сильный ветер». При том что, любой профик на входной двери, снятой с петель, будет кататься лучше, чем я на его кастоме

Ролик 1/6

Честно скопипижжено с http://windsurf.smugmug.com/Windsurfing

original post http://vasnake.blogspot.com/2013/09/blog-post_3801.html

2013-09-05

Водный старт

Очередная серия обучающего видео для начинающих виндсерферов.

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

Вот, водный старт во всех деталях. В девяти роликах.



























Честно скопипижжено с http://windsurf.smugmug.com/Windsurfing



original post http://vasnake.blogspot.com/2013/09/blog-post_5.html

2013-09-04

Оверштаг

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

Джем Холл показывает, как разучить поворот оверштаг (overtack, tack) – самый главный поворот для виндсерфингиста. Ключевые моменты: работа ног, хват гика, направление взгляда.

Обратите внимание, как он ногами проворачивает доску, в итоге поворот проходит по очень компактной дуге, чуть ли не с заносом кормы (занос 1.5 метра – надпись на корме трамвая).




Тут же захотелось побежать на воду и крутить овершатаги – так он их вкусно исполняет.



original post http://vasnake.blogspot.com/2013/09/blog-post_1.html

2013-09-03

Surfin' Bird

Песенка из 1963 года, после которой рок изменился навсегда.

Прослушайте и взбодритесь.


A-well-a everybody's heard about the bird
B-b-b-bird, bird, bird, b-bird's the word
A-well-a bird, bird, bird, the bird is the word
A-well-a bird, bird, bird, well the bird is the word
A-well-a bird, bird, bird, b-bird's the word
A-well-a bird, bird, bird, well the bird is the word
A-well-a bird, bird, b-bird's the word
A-well-a bird, bird, bird, b-bird's the word
A-well-a bird, bird, bird, well the bird is the word
A-well-a bird, bird, b-bird's the word
A-well-a don't you know about the bird?
Well, everybody knows that the bird is the word!
A-well-a bird, bird, b-bird's the word
A-well-a...

A-well-a everybody's heard about the bird
Bird, bird, bird, b-bird's the word
A-well-a bird, bird, bird, b-bird's the word
A-well-a bird, bird, bird, b-bird's the word
A-well-a bird, bird, b-bird's the word
A-well-a bird, bird, bird, b-bird's the word
A-well-a bird, bird, bird, b-bird's the word
A-well-a bird, bird, bird, b-bird's the word
A-well-a bird, bird, bird, b-bird's the word
A-well-a don't you know about the bird?
Well, everybody's talking about the bird!
A-well-a bird, bird, b-bird's the word
A-well-a bird...

Surfin' bird
Bbbbbbbbbbbbbbbbbb... [retching noises]... aaah!

Pa-pa-pa-pa-pa-pa-pa-pa-pa-pa-pa-pa-pa-p­a-pa-pa-
Pa-pa-pa-pa-pa-pa-pa-pa-pa-pa-pa-pa-pa-p­a-ooma-mow-mow
Papa-ooma-mow-mow

Papa-ooma-mow-mow, papa-ooma-mow-mow
Papa-ooma-mow-mow, papa-ooma-mow-mow
Ooma-mow-mow, papa-ooma-mow-mow
Papa-ooma-mow-mow, papa-ooma-mow-mow
Papa-ooma-mow-mow, papa-ooma-mow-mow
Oom-oom-oom-oom-ooma-mow-mow
Papa-ooma-mow-mow, papa-oom-oom-oom
Oom-ooma-mow-mow, papa-ooma-mow-mow
Ooma-mow-mow, papa-ooma-mow-mow
Papa-a-mow-mow, papa-ooma-mow-mow
Papa-ooma-mow-mow, ooma-mow-mow
Papa-ooma-mow-mow, ooma-mow-mow
Papa-oom-oom-oom-oom-ooma-mow-mow
Oom-oom-oom-oom-ooma-mow-mow
Ooma-mow-mow, papa-ooma-mow-mow
Papa-ooma-mow-mow, ooma-mow-mow
Well don't you know about the bird?
Well, everybody knows that the bird is the word!
A-well-a bird, bird, b-bird's the word

Papa-ooma-mow-mow, papa-ooma-mow-mow


original post http://vasnake.blogspot.com/2013/09/surfin-bird.html

2013-09-02

Медиагалерея

Frog - замечательное веб-приложение для разворачивания в локальной сети. Если трафик безлимитный, можно и в Интернет вывести.

Frog is a Server and Client solution for hosting and serving media files. The initial build was intended for creative studios, but could be used for anything, even a home solution. It was not meant for a front facing tool as the bandwidth costs would be outrageous.


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

Сервер сделан на Django.

Вот так это работает:


original post http://vasnake.blogspot.com/2013/08/blog-post_30.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)