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

2013-10-31

Pass out vs. Pass away

Фразами. Учить разговорный язык надо целыми фразами. Расхожими.

Американцы, как., впрочем, и британцы, пользуются т.н. глагольными фразами. Таких конструкций нет в русском языке, и наш человек не может понять зачем говорить «go on”, если можно сказать одним понятным словом «continue”.

Проблема в том, что берется глагол, к нему добавляется предлог и выходит слово ничего не имеющее ни с первым, ни со вторым.
Ну, еще в детском садике учат "When I get up in the morning....”. Вот этот самый get up и есть Phrasal Verbs.
Пример. Tomorrow I will give up smoking. Give up. Give – это давать, up – это вверх. "Давать вверх" на самом деле будет бросать, отказываться.

С одной моей студенткой приключился на основе этих Phrasal Verbs курьезный случай.
Они с подружками бурно отмечали день рождения в далласком ресторане. Вдруг одной из подруг резко поплохело от выпитого. И она выключилась на какое-то время. Ну, подруги похлопали ее по щекам, мол, водка стынет и гуляют дальше. А официант видит, дело-то плохо. Девица лежит и посапывает. Позвал менеджера. Менеджер вежливо так спрашивает Russian girls, мол, все ли ОК с вашей подружкой.
Вот моя студентка и хотела ему сказать, да, все нормалёк, просто она отключилась. Ну, примерно так «Don't worry, she is fine, she just passed out, Russians always drink so much. We will take care of her”.
Pass out – быть в отключке.
Она так и сказала. Почти так. Вот как она сказала: «Don't worry, she is fine, she just passed away, Russians always drink so much. We will take care of her”.
Pass away – скончаться, умереть.

Бедный менеджер. Он поседел, наверное. В ресторане труп, а ему говорят, мол, расслабься, мы о ней позаботимся, это русские так пьют.


Словарный запас должен быть не столько обширным, сколько употребимым. Вот смотрю я выступление президента Обамы и понимаю, что он хочет сказать. Слушаю Путина на английском — и не понимаю ничего. Слова архаичные, фразы громоздкие. Ну, просто как из учебника Качаловой и Израилевича 1948 года выпуска.
Конечно, те кто учит английский с преподавателем — носителем языка в бОльшем выигрыше, нежели те, кто учит на курсах с преподавателем — пенсионером.
Еще лучше язык у тех, кто приехал изучать его в Штаты, таких, как оказалось, достаточно много, даже в нашем Далласе. Тинейджеры из России за 5-6 месяцев входят в среду обитания и в языковую без малейшего сомнения и сопротивления. Их словарный запас пусть и невелик, но достаточен для нормального общения.




original post http://vasnake.blogspot.com/2013/10/pass-out-vs-pass-away.html

2013-10-30

Pro secrets. Start to finish 7/9

Секреты профессионалов. От старта до финиша. Ролик 7/9.
Слаломисты (широкие доски, формула, огромные камберные паруса) рассказывают и показывают — как лучше стартовать на гоночной дистанции, чтобы поиметь преимущества более чистого ветра, меньших помех, уверенности.
Честно скопипижжено с http://windsurf.smugmug.com/Windsurfing

original post http://vasnake.blogspot.com/2013/10/pro-secrets-start-to-finish-79.html

2013-10-29

Ковбой на глиссе

Прыг-скок, вжик — получился ковбой:
http://youtu.be/sCRT8XRCdRM


original post http://vasnake.blogspot.com/2013/10/2013-10-29.html

2013-10-28

Zero based indexing

Habit is habit, and not to be flung out of the window by
any man, but coaxed downstairs a step at a time.
Pudd'nhead Wilson's Calendar

Откуда вообще началось использование 0-based индексации?
Есть мнение, что начало было положено создателем языка BCPL, который делал язык, приближенный к машинному коду. Где регистры и машинные слова содержат числа, представляющие что угодно. Где адресная арифметика логично начинается с 0:

The fact of it is this: before pointers, structs, C and Unix existed, at a time when other languages with a lot of resources and (by the standard of the day) user populations behind them were one- or arbitrarily-indexed, somebody decided that the right thing was for arrays to start at zero.
As for BCPL and C subscripts starting at zero. BCPL was essentially designed as typeless language close to machine code. Just as in machine code registers are typically all the same size and contain values that represent almost anything, such as integers, machine addresses, truth values, characters, etc. BCPL has typeless variables just like machine registers capable of representing anything. If a BCPL variable represents a pointer, it points to one or more consecutive words of memory. These words are the same size as BCPL variables. Just as machine code allows address arithmetic so does BCPL, so if p is a pointer p+1 is a pointer to the next word after the one p points to. Naturally p+0 has the same value as p.


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

Познавательно.

А знаете, почему в Python индексация zero-based? Гвидо решил, что в таком случае слайсы выглядят изящнее:

Using 0-based indexing, half-open intervals, and suitable defaults (as Python ended up having), they are beautiful: a[:n] and a[i:i+n]; the former is long for a[0:n].
Using 1-based indexing, if you want a[:n] to mean the first n elements, you either have to use closed intervals or you can use a slice notation that uses start and length as the slice parameters. Using half-open intervals just isn't very elegant when combined with 1-based indexing. Using closed intervals, you'd have to write a[i:i+n-1] for the n items starting at i. So perhaps using the slice length would be more elegant with 1-based indexing? Then you could write a[i:n]. And this is in fact what ABC did -- it used a different notation so you could write a@i|n.(See http://homepages.cwi.nl/~steven/abc/qr.html#EXPRESSIONS.)
But how does the index:length convention work out for other use cases? TBH this is where my memory gets fuzzy, but I think I was swayed by the elegance of half-open intervals. Especially the invariant that when two slices are adjacent, the first slice's end index is the second slice's start index is just too beautiful to ignore. For example, suppose you split a string into three parts at indices i and j -- the parts would be a[:i], a[i:j], and a[j:].
So that's why Python uses 0-based indexing.


Такие дела.



original post http://vasnake.blogspot.com/2013/10/zero-based-indexing.html

2013-10-25

Dropbox

One of the most striking differences between a cat and a
lie is that a cat has only nine lives.
Pudd'nhead Wilson's Calendar

Намедни я обнаружил, к своему неудовольствию, что у меня перестали синхронизироваться папки Dropbox-а. Пользуюсь я им уже так давно, что забыл — сколько лет в точности, и вот, первыйразвпервыйкласс.
Когда нибудь это же должно было случиться, да?

Как лечить.
Для начала можно установить свежую версию дропбокса.

Потом можно убить все файлы в папке
~/Dropbox/.dropbox.cache/
на линуксовой машине
%USERPROFILE%\My Documents\My Dropbox\.dropbox.cache\
на виндовой машине
и «ищите папку .dropbox.cache» в любом другом случае.

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

Все детали, но по аглицки, найдете тут:
you can solve these issues almost every time by clearing Dropbox’s hidden cache folder



original post http://vasnake.blogspot.com/2013/10/dropbox.html

2013-10-24

Plotting Time Series

The holy passion of Friendship is of so sweet and steady
and loyal and enduring a nature that it will last through a
whole lifetime, if not asked to lend money.
Pudd'nhead Wilson's Calendar

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

Короче, плоттер — это клево.

Plotting Time Series with Pandas DatetimeIndex and Vincent:
The Pandas Time Series/Date tools and Vega visualizations are a great match; Pandas does the heavy lifting of manipulating the data, and the Vega backend creates nicely formatted axes and plots. Vincent is the glue that makes the two play nice, and provides a number of conveniences for making plot building simple.


Убойное комбо — обработка временных серий, визуализатор и Python-JS транслятор.

Больше графиков, красивых и разных.

original post http://vasnake.blogspot.com/2013/10/plotting-time-series.html

2013-10-23

Python Number Conversion Chart

Consider well the proportions of things. It is better to be
a young June bug than an old bird of paradise.
Pudd'nhead Wilson's Calendar

Небольшая шпаргалка для питонистов. Как переводить числа из формата в формат:
From
To
Expression
45
"45"
str(data)
45
"101101"
bin(data)
45
"2D"
hex(data)
45
"\x00\x00\x00\x2d"
struct.pack('!i', data)
"45"
45
int(data)
"45"
"3435"
data.encode('hex')
"101101"
45
int(data, 2)
"2D"
45
int(data, 16)
"2D"
"\x2d"
binascii.unhexlify(data) or data.decode('hex')
"\x00\x00\x00\x2d"
45
struct.unpack('!i', data)[0]
"\x2d"
"2D"
binascii.hexlify(data)
"3435"
"45"
data.decode('hex')

Очевидно, табличка не полная, зато общеупотребимая.


original post http://vasnake.blogspot.com/2013/10/python-number-conversion-chart.html

2013-10-22

toolz

Why is it that we rejoice at a birth and grieve at a
funeral? It is because we are not the person involved.
Pudd'nhead Wilson's Calendar

Интересный пакет для разработки на Python: PyToolz.

The Toolz project provides a set of utility functions for iterators, functions, and dictionaries. These functions are designed to interoperate well, forming the building blocks of common data analytic operations. They extend the standard libraries itertools and functools and borrow heavily from the standard libraries of contemporary functional languages.

Toolz provides a suite of functions which have the following virtues:

Composable: They interoperate due to their use of core data structures.
Pure: They don’t change their inputs or rely on external state.
Lazy: They don’t run until absolutely necessary, allowing them to support large streaming data sets.

This gives developers the power to write powerful programs to solve complex problems with relatively simple code which is easy to understand without sacrificing performance. Toolz enables this approach, commonly associated with functional programming, within a natural Pythonic style suitable for most developers.


Библиотека дает питонистам инструменты, которыми гордятся пишущие на функциональных языках

While Python was originally intended as an imperative language [Guido], it contains all elements necessary to support a rich set of features from the functional paradigm. In particular its core data structures, lazy iterators, and functions as first class objects can be combined to implement a common standard library of functions shared among many functional languages.

This was first recognized and supported through the standard libraries itertools and functools which contain functions like permutations, chain and partial to complement the standard map, filter, reduce already found in the core language. While these libraries contain substantial functionality they do not achieve the same level of adoption found in similar projects in other languages. This may be because they are incomplete and lack a number of commonly related functions like compose and groupby which often complement these core operations.

A completion of this set of functions was first attempted in the projects itertoolz and functoolz (note the z). These libraries contained several functions that were absent in the standard itertools/functools libraries. The itertoolz/functoolz libraries were eventually merged into the monolithic toolz project described here.

Most contemporary functional languages (Haskell, Scala, Clojure, ...) contain some variation of the functions found in toolz. The toolz project generally adheres closely to the API found in the Clojure standard library



Рекомендовано всем, кому не хватает функциональности в императивности.

original post http://vasnake.blogspot.com/2013/10/toolz.html

2013-10-21

Дневник виндсерфера

It is easy to find fault, if one has that disposition.
There was once a man who, not being able to find any other
fault with his coal, complained that there were too many
prehistoric toads in it.
Pudd'nhead Wilson's Calendar

Дневник виндсерфера (меня), литературно обработанный мною. Написан на смартфоне во время послеобеденных и предужинных отдыхов во время каталки в октябре 2013, Хургада.
Вся каталка прошла под воображаемым баннером «учись делать оверштаг и водный старт, сосунок». Несколько дней дуло как из аэродинамической трубы, а я, без оверштага и водного старта, бездарно сидел в бухте, опасаясь не вернуться из моря после падения на первом же развороте.

Пояснения: «доска х» означает «доска объемом х литров», обычно Fanatic Shark. «Парус х» означает «парус площадью х метров квадратных».

2 октября, среда.
Доска Фанатик Шарк 160 литров чувствуется как родная, я даже перестал акцентировать внимание на доске. Сперва пробовал парус 7. Ходить с ним хорошо, но ворочать им в поворотах тяжко. Потом взял доску 130 с парусом 6.6 — очень неустойчиво, боюсь голову повернуть, чтобы равновесие не потерять. А тут еще ветер сдох, опереться не на что. Вышел из бухты и быстро слился вниз. Патамучта маленький/узкий плавник вверх не идет при слабом ветре. Час выгребал обратно бабочкой.
Из бухты вышел за Наташкой, хотел ее догнать и предупредить, что она сливается вниз а ветер закисает. В итоге ее не догнал, сам слился, а она нормально вернулась.



3 октября, четверг.
С утра дуло 7-10 м/с. Взял парус 7 и доску 160, пошел в море. Глиссера не получилось — мало ветра! Наташка тоже вышла в море и очутилась в Сахаре, ибо долго догоняла доску после падения. Пытался сделать водный старт — не выходит. Просто делал галсы в трапеции, привыкал к парусу. На поворотах на волне роняю парус. Пока подниму — уходят все силы. Последний раз думал — не подниму. Устал как собака.
После обеда взял парус 5 доску 115 и с бичстарта пошел! До первого поворота. Сронял парус и не смог поднять — доска выкручивается из под ног. После 5 попыток, вплавь дошел до берега, взял доску 135 и ходил галсами. Неустойчиво, но терпимо. На поворотах роняю парус, поднимаю и иду дальше. Через полчаса повороты стали получаться через один. После обеда ветер был 3-4 метра/с.



4 октября, пятница.
С утра дуло 9-12 м/с. Взял парус 5.8 доску 160, летал глиссом от пляжа до выхода из бухты, привыкал к управлению парусом и доской на скорости. Старался не падать и не ронять парус на поворотах, особенно на волнах. Понял на опыте, что на глиссе парусом не рулят а рулят задавливанием бортов и кормы. Во всяком случае, акцент на ноги а парусу не дать сильно отклониться от положения "тяга". К обеду руки так устали, что уже не держали гик. Это потому как я разгонялся на руках, по совету Джема Холла. Добрый человек (спасибо, Сергей) сказал, что Джем Холл с его советом разгоняться на руках — не абсолют. Если силы слабые, то сразу цепляй трапецию и потом разгоняйся и вставай в петли. Силы тебе понадобятся, когда упадешь на повороте.
После обеда ветер 10-14 м/с. Взял доску 115 и парус 4.5. Долго не мог сделать бичстарт. Потом сделал один галс и упал. Залезть на доску уже не смог — волны. Понял, что для меня доски меньше 130 откроются только после освоения водного старта. А на доску 130 я могу залезть и за веревочку поднять парус. Догреб до берега и час отрабатывал водный старт с парусом 5.3. Вроде научился поднимать парус из воды и один раз почти залез на доску. Потом взял доску 130 и парус 5.8. Пошел глисс гонять. Сразу вынесло в полет с такой силой, что я понял — вот он, передоз. Вернулся и взял парус 5.3. С ним тоже полетел, но не так мощно. Первым же галсом залез в буйки и пока выбирался — кончилось время. Я долетел до пляжа и красиво завалился на спину, жалея что полет быстро кончился.



5 октября, суббота.
Юра говорит, что ветрено бывает в начале и конце лунного цикла.
С утра ветер 13-16 м/с. Взял доску 150 и парус 5.3 ибо 5 показалось маловато, хотя дядечка летал в море на 4.7. Я делал бич старт, летел глиссом до выхода из бухты и пытался делать оверштаг. Как правило — безуспешно. Зато насобачился поднимать парус за веревочку. Кое как делал обратный галс глиссом и без сил падал у берега. Отдыхал. Потом опять. И так до обеда. По ощущениям попыток оверштага было не больше 10 за 4 часа.
Парус я взял Юрин, на нем трапконцы 28 но по виду все 30 дюймов — длинные. Ужасно удобно — садишься в них как в кресло и летишь пока парус работает.
После обеда снял защиту от солнца, взял доску 135 и парус 5.3. Пошел в левую часть бухты, где ветер ровнее, учил водный старт 1.5 часа. Удачно вышло 4 попытки — я доволен. Осознал хитрости подъема паруса и движение вкатывания на доску. Дядечка посоветовал в начале класть шкотовый угол на корму, чтобы задняя кромка паруса не тонула, я же кладу мачту.
На ветру весь день было прохладно, да и в целом не жарко. Черная лайкра не дала замерзнуть.



6 октября, воскресенье.
С утра дуло 13-16 м/с, на 4.5 - 4.7. Я взял доску 130, парус 4.2 и хотел пойти в море. Но гик поставили высоко а трапшкоты короткие — на выходе из бухты не смог зацепить трапу и упал. Попытался поднять парус за веревочку — не смог. Ну, думаю — судьба, стал делать водный старт. И через полчаса сделал! Вернулся к берегу отдохнуть, вплавь, потомучто стартовал левым галсом и на повороте упал. Правым галсом водный старт делать не умею.
А на берегу Наташка пытается бичстартнуть думая что делает водный старт. Я пошел ее учить и учил до обеда. Заодно и сам практиковался бичстарту в сильный ветер. К обеду Наташка нормально стартовала — я великий учитель бичстарта!
После обеда ветер стих до 12-13 м/с. Взял доску 145 и новенький парус 5.8. Пошел делать галсы глиссом с последующим разворотом. Доска после разворота поехала юзом и не захотела идти прямо. Сменил ее на 150 потому что 130 мне не оставили. Зато на 150 стали получаться оверштаги. То ли из-за доски, то ли из-за стихшего ветра — хз. Полтора часа покрутился и на этом кончилось время. Что интересно — в глиссе не смог управлять курсом, это беда. И еще шарнир застрял в мачте, так и оставили парус с шарниром в хранилке, вот.



7 октября, понедельник.
С утра дуло до 14 м/с. Доска 160, парус 5.8. Сделал пару ходок до выхода из бухты и понял, что не могу закрыть парус — много. Взял 5.3 и катался до обеда. Под конец осмелел и раза 4 выбрался в море, недалеко. Поворот без падения сделал только один. Ветер к обеду подкис и 5.3 стало мало, но менять не захотел ибо трапшкоты длинные, любимые. Один раз прокатился в обеих петлях. В общем — гонял в трапеции и передней петле короткие галсы; пытался оверштагить. Наверное ошибка в том, что я делаю поворот недостаточно быстро.
После обеда ветер сдулся до 8-11м/с. Взял доску 160 и парус 6.2. У него оказались длинные трапшкоты — 30 дюймов, мой любимый размер. Паруса еле хватало на глисс. Делал галс метров 100, потом оверштаг, обратный галс, оверштаг, галс, оверштаг — и на берег отдыхать. Все правда — секрет маневра в скорости его исполнения. А на выходе надо совсем низко сесть разворачивая доску. Плюс — парусом не размахивать а аккуратно провести на нос, и все получится.
Пару раз курсом на берег в увал так разгонялся, что вылетал на бластинг. Страшная скорость! Вечерняя сессия мне очень понравилась — и полетал и оверштаги хорошие поделал.



8 октября, вторник.
С утра ветер 10-12 м/с. Доска 160, парус 6.2 с длинными трапшкотами (на пару дней это будет моя любимая комбинация, потому у меня заберут и доску и парус — уедут на сафари). На первом же галсе в бухте сронял парус и вытягивая — оторвал стартшкот. Вернее вырвал петлю крепления на гике — родовой дефект таких гиков. Решил делать водный старт. Час попыток — нет успеха ибо ветра мало как и мастерства. Привязал веревку за мачту и кое-как вытянул веревочный старт. Вернулся на базу, починился и давай гонять галсы в море, до отмели. Даже оверштаги почти получаются. Пару раз зазевался и катапультировался. Пару раз пролетел в увал на плавнике. В заднюю петлю встать пока не удается, Юра говорит — я сижу на задней ноге. Надо подать бедра вперед и разгрузить заднюю ногу (а еще подать парус вперед и повиснуть на трапеции).
Еще я замотал скотчем голенища сапожек — ни одна песчинка не забралась. Сапожки надо брать с затяжкой по голенищу (или пришить ленту велкро).
После обеда дуло 7-9 потом 5-7 м/с. Доска 160 парус 6.2. Крутил оверштаги в море, на волне. Надо следить за волной чтобы неожиданно не получить пинка. В целом — получалось. Даже несколько фордачков сделал. Приятная тихая каталка после нескольких дней ветрища. Прям как в Строгино, только лучше.



9 октября, среда.
С утра ветер 8-12 м/с. Потом сдулся до 4-5. Доска 160, парус любимый 6.2. Раз 5 сходил в море и немного глиссировал. Учился вставать в заднюю петлю — таз вперед, трапу загрузить, заднюю ногу освободить — встать в петлю. Заднюю ногу под себя, переднюю от себя чтобы доска не приводилась. Успешно вставал в обе петли.
С Юрой два раза сопроводили Наташку до отмели, чтобы ей не так страшно было по волнам катацца.
Потом крутил оверштаги — стабильность повышается. Поделал фордачки, типа пауэр джайб.
Тепло и тихо без ветра. Солнечно, как всегда тут.
После обеда дуло меньше 5 м/с. Доска 130, парус 6.2. Делал оверштаги. Не очень стабильно, но в целом получается. Под конец ветер почти пропал и стало почти невозможно делать маневры. Пришлось прекратить цирк раньше времени.



10 октября, четверг.
С утра дуло 8-9 м/с потом 5-6. Доска 160, парус 6.2 — любимый. Сходили в море где на развороте я упал. Наташка тоже. Я залез на доску и Наташку было уже не видно. Пока я ее выглядывал — слился. Галсом к берегу въехал в камни входа в бухту. Потерял шапку. Залез на доску — а шапка где? А вон она на камнях. Умудрился добраться до шапки и не покалечиться в камнях, и оборудование не разбить. Добрался до Юры и сказал, что пропала Наташка. Вылез на берег, взял парус 7. Пошел в море выглядывать Наташку. Парус не вытягивает, Наташку не видно. Вылез, взял бинокль и пошел на мыс обзирать. Как раз увидел как везут ее на базу на моторке.
Оказалось от нее уплыло оборудование и она за ним плыла аж до берега, километр. Отель Бейрут, весь берег в ежах и на одного она наступила — тапочки не спасли. Потом мазали подсолнечным маслом — Наташка чуть не орала — горячо!. А масло то холодное. Это остатки ежа вступали в реакцию с маслом. Через полчаса она уже каталась опять.
А я крутил оверштаги. Сделать 1000 повторений — видимо, это для меня единственный способ освоить разворот без падений и потерь паруса.
После обеда ветер 3-5 м/с. Тихо, тепло, никого нет, даже Наташка ушла на берег. Один я показываю цирк с конями — доска 130 парус 6.2, делаю оверштаги. Потихоньку совершенствуюсь. Но 1000 повторений это месяц работы минимум.



11 октября, пятница.
С утра дуло 9-12 м/с. Доска 160, парус 6.2. Я летал! Встаешь в две петли, подача всего вперед и полетел. Реально круто (даже нереально круто). Все легкое и только доска над волнами - ффиуу.
Оверштаги на волне не хотят выполняться. Долго готовлюсь и плохо приседаю. Да и ноги-руки после полета дрожат адреналиновой дрожью.
На возврате в бухту чуть не наехал на Сашу. Оба были очень недовольны и весьма накупаны. Я и так еле проходил мимо камней, а тут он веревочный старт делает. Он тут еле встает, а тут я в него еду. Нехорошо получилось.
К обеду ветер сдулся до 7-8 м/с. Сопровождал Наташку в море. Слилась, потом упала. Но чудом вырезалась обратно в бухту. Хотя мимо камней не прошла, пришлось помогать отплыть от камней. Говорит — ходила в двух петлях. Молодец.
После обеда ветер 5-6 м/с. Доска 150, парус 6.2. Крутил оверштаги. Выходит все лучше, парус сронял всего пару раз, да раз упал. Но по утрам в море на волне — караул. Доска 150 больше похожа на 130 чем на 160 — любопытно.
На пляже почти доломали патио, которое не патио.



12 октября, суббота.
С утра дуло 8-13 м/с. Мой любимый комплект уехал на сафари, поэтому: доска 150 старый шарк. Парус сначала 4.7 потом 5.4 потом 6.6 потом 7. Ветер сдувался потихоньку до 7-9 м/с. Я полетал совсем чуть. И ветра не хватало и доска не та. На ней вставать в петли надо уже сильно разогнавшись, а я не мог разогнаться. А разогнавшись долго входил в петли — терял ход и приводил и наклонял доску. Как результат — падение, веревочный старт, курс на берег, отдых и все сначала. Один раз так "подал все вперед" в процессе входа в петли что словил катапульту. Так жалко, что доску 160 забрали, на ней бы я летал а не купался. А теперь надо учиться и привыкать к петлям на новой доске.
Опять меня подрезал катер — подкрался со спины и дунул в ухо. Пришлось разворачиваться, а я только разогнался.
После обеда дуло 7-9 м/с. Взял новый шарк 150, который зелененький, и парус 7. Доска красивая но ветра мало. Вылезли с Наташкой в море, вернулись. Она занялась ковбоем а я оверштагами.
Странный день — ничего не получается. Ни полетать ни разворачиваться. Все как-то с занозами, образно говоря.
По случаю субботы набежало народу, все катаются, один я как лох — выйду в море, упаду и иду обратно отдыхать.



13 октября, воскресенье.
Ветер с утра 8-14 м/с. За час до открытия Юра уже катался, да и остальные подтянулись. Доска 150 зеленая шарк, парус 5. Несколько раз сходил в море, один раз полетел на порыве. Вместо разворота — падение на закисоне или катапульта на усилении — патамучта не умею впрыгивать в петли и выпрыгивать обратно. Долго захожу и долго выхожу — ветер успевает поиметь меня.
Потом ветер закис до 6-9 м/с. Взял парус 7 и сходил в море — не тянет. Взял парус 5.8 новый и пошел крутить оверштаги — не выходят. Занятно, парус 5.8 новый тянет не хуже аналогичного 7 старого. Юра сказал — семерку неправильно настроили.
Сделали таки Наташке защиту на голень. Сходили с ней в море до отмели.
После обеда ветер 7-9 м/с. Можно было бы сходить в море с 7-кой, но полное брюхо+усталость были против. Взял доску 150 и парус 5.8 натурал норс сейлс. Парус симпатичный и тянет хорошо, пока новый. крутил оверштаги с переменным успехом.



14 октября, понедельник.
С утра ветер 8-13 м/с. Доска 150, парус 6.6. Ходил в море и удалось полетать. Но летел недолго — на волне не могу удержать доску ровно. Падал, когда долго вставал в заднюю петлю и ветер затихал. Потом точил водный старт на глубоком дне — пару раз получилось.
Ветер стих до 7-9 м/с. Крутил оверштаги — неплохо.
Первая половина дня порадовала продуктивностью, хотя в море веревочным стартом все силы себе вымотал.
После обеда дуло 7-9 м/с. Доска 150 зелененькая, парус 5.8. Прогулялись с Наташкой в море до отмели. Потом она крутила ковбоя а я оверштаги. Оба успешно. Еще 500 повторений и оверштаг я буду делать автомагически.



А 15 октября покататься не получилось, Анекс тур с НордВинд Эйрлайнс нас ограбили.


2013-10-18

Rotate jpg photo

All say, "How hard it is that we have to die"— a strange
complaint to come from the mouths of people who have had to live.
Pudd'nhead Wilson's Calendar

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

Даю заклинание в одну строчку, для разворота повернутых снимков. Обрабатывается текущий каталог, для переписываемых файлов делается резервная копия, нормальные фотки не обрабатываются:
find -iname '*.jpg' -type f -exec sh -c '[ "0$(jpegexiforient -n "{}")" -le "1" ] || exiftran -aibp "{}"' \;

Для тех, у кого нет под рукой нормальной ОС (Linux), пользуйтесь IrfanView или XnView.

Подробности ищите тут:



original post http://vasnake.blogspot.com/2013/10/rotate-jpg-photo.html

2013-10-17

Имеются файлы, ожидающие записи на диск

There are three infallible ways of pleasing an author, and
the three form a rising scale of compliment: 1—to tell him
you have read one of his books; 2—to tell him you have read
all of his books; 3—to ask him to let you read the
manuscript of his forthcoming book. No. 1 admits you to his
respect; No. 2 admits you to his admiration; No. 3 carries
you clear into his heart.
Pudd'nhead Wilson's Calendar

Как известно, в MS Windows есть встроенное средство записи файлов на компакт-диски (CD/DVD). И многие им пользуются.
А потом задают вопросы типа

Я и сам потратил пять минут на поиск адекватного решения:

Открываешь ме6ню "Пуск", в строке поиска пишешь shell:cd burning и жмешь Enter

Смысл в том, что с помощью волшебной команды «shell:cd burning» мы попадаем в папку, где MS Windows складывает файлы предназначенные для записи на компакт-диск. Остается только удалить эти файлы, чтобы избавиться от проблемы и, заодно, освободить место на харде.


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

2013-10-16

Back in the USSR

When angry, count four; when very angry, swear.
Pudd'nhead Wilson's Calendar

Вот и кончился отпуск, мигом пролетели волшебные две недели моря, солнца, ветра и каталки. В Хургаде температура воздуха от 35, воды от 25, ветер до 10 м/с и больше, на небе ни облачка. А здесь — хмарь, холодно, все небо в тучах, дождь.
Есть такое слово — Родина, сынок.

Спасибо школеСеверный Ветер за прекрасный отпуск! Немного фоток:



Факты, особенности и характерности, на память.

Я сумел выполнить все запланированное: глиссирование в режиме planning/blasting/лечу на плавнике; водный старт; покататься на маленьких досках, на больших парусах. Я крут (в прошлый раз программу не осилил:)

На волнах и в сильный ветер всё совсем, нет совсем иначе, нежели на гладкой воде и в слабый ветер. Например, я думал, я умею делать оверштаг. Ха. Я его совсем не умею делать. Из десяти попыток оверштага в море, 5 заканчиваются моим падением, 4 падением паруса и только один завершается успешно. Пришлось зарядить себе программу «1000 повторений», после которой оверштаг я должен выполнять автоматически, в любых условиях. Поэтому, когда не катался — крутил оверштаги. Штук 200-300 уже сделал.

Лететь на плавнике — невероятные ощущения. Это реально полет, доска над водой, парус легкий, адреналин в кровь бьет фонтаном — я быстро ехал? - нет вы низко летели. Можно много про это написать, но понять это можно только испытав на своей шкуре.

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

Доска Fanatic Shark 160L — лучше нет для первых полетов, ибо в петли заходить — одно удовольствие. Да и на курсе не вихляет.

Для меня доска 130 литров — пока нижний предел. На такой доске я еще могу поднять парус за веревочку. На доске 115 литров при подъеме паруса — падаю. Маленькие доски для полетов и водных стартов. Еще один предел — парус 7 метров. Его я еще могу удержать и при необходимости поднять за веревочку. Но я расту над собой.

Для тех кто хочет летать, необходимы два основных умения (кроме умений вывести доску в полет и в нем оставаться) — это разворот на обратный галс и водный старт. Если эти два умения есть, можно сберечь массу сил и потратить их на катание. Иначе они тратятся на купание и веревочный старт.

В октябре в Хургаде уже нужен короткий гидрик — в сильный ветер можно замерзнуть, несмотря на температуры воды и воздуха 25/35 соответственно. Черная лайкра помогает согреться на солнце. Белая и не пригодилась.

Мало высоких гидротапочек, надо еще затяжки/застежки на голенища. Только тогда есть гарантия, что песок не попадет внутрь тапочек.

Перчатки с короткими/обрезанными пальцами — зло. Я в два дня попортил себе пальцы швами и краями перчаток.

В отеле Hilton Plaza рядом с бассейном по вечерам устраивают оглушительные шоу. Поэтому все номера, выходящие окнами на бассейн (третий этаж и выше) совершенно не годятся для раннего отхода ко сну. У нас был номер 324, как раз напротив будки с громкоговорителями — мы прокляли и Хилтон и того креакла, который придумал устраивать шоу по вечерам у бассейна. Ну почему не на пляже?!
Совет: берите номер на втором или первом этаже — шум от бассейна вам не помешает.

Авиа компания Nordwind Airlines http://www.nordwindairlines.ru/ наряду с туроператором Anex tour http://www.anextour.ru/ – это абсолютное зло. Если точнее, то чартеры Nordwind Airlines и организация контактов с туристами в Хургаде – ниже всякой критики. Это черное пятно на светлых одеждах нашего туризма, которое должно быть уничтожено.
Смотрите сами: наш чартер должен был вылететь из Хургады в 17:30, вторник, 15 октября. Но кто-то решил, что в этот день самолет может выполнить еще один рейс, и уплотнил расписание. Поэтому, наш рейс перенесли на 7:30, вторник, 15 октября. На десять часов раньше! Причем эта информация стала доступна только после 19:00 понедельник, 14 октября, когда было уже поздно менять наши планы на утро вторника.
Если кто не понял, где тут зло — я поясню, что эти числа значили для нас.
Мы не покатались утром во вторник, фактически 1/14 нашей виндсерфовой программы была отнята.
Мы не смогли забрать наши вещи из хранилки серфовой станции, это попадалово на деньги, причем заметные.
Мы не смогли позавтракать, хотя в стоимость тура этот завтрак был включен (впрочем как и обез дня заезда, также пропущенный).
Мы не смогли выспаться, ибо с вечера дискотека, а в 3 утра уже вставать. А ведь эта ночь тоже была оплачена.
Нам на весь вечер понедельника испортили настроение объявлением, что все наши планы на вторник летят прахом.
Нам не дали шанса как-то смягчить последствия, сделав это объявление в последний момент, за 8 часов до отъезда из отеля.

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

Что же касается организации контактов с туристами, то началось с того, что гид не оставил своих контактных данных. А закончилось тем, что во время трансфера в аэропорт он два (два!) часа гонял автобус с сонными и злыми туристами в поисках тех, кого он потерял. Этот, с позволения сказать, гид, не удосужился накануне выяснить, кто где находится. Хорошо еще, телефонная связь худо-бедно работает и кое-как смогли связать концы с концами и найти потеряшек.
В итоге поездка в аеропорт заняла два часа вместо 20 минут. Чуть не опоздали на регистрацию.

Нет, на чартерах я отныне не летаю. в Anex tour, как и в Nordwind Airlines — ни ногой. Лучи кровавого поноса им в жопу. Они изгадили предпоследний день отпуска и отобрали последний. Горите в аду, редиски.

Но в целом отпуск удался — 13 ветреных солнечных теплых дней на море с доской и парусом — я хочу туда еще!



original post http://vasnake.blogspot.com/2013/10/back-in-ussr.html

Pro secrets. Start to finish 6/9

As to the Adjective: when in doubt, strike it out.
Pudd'nhead Wilson's Calendar

Секреты профессионалов. От старта до финиша. Ролик 6/9
Слаломисты (широкие доски, формула, огромные камберные паруса) рассказывают и показывают — как готовиться к гонкам, тренироваться, настраиваться.

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

original post http://vasnake.blogspot.com/2013/09/pro-secrets-start-to-finish-69.html

2013-10-15

pip & virtualenv

Courage is resistance to fear, mastery of fear—not absence
of fear. Except a creature be part coward, it is not a
compliment to say it is brave; it is merely a loose
misapplication of the word. Consider the flea!—incomparably
the bravest of all the creatures of God, if ignorance of
fear were courage. Whether you are asleep or awake he will
attack you, caring nothing for the fact that in bulk and
strength you are to him as are the massed armies of the
earth to a sucking child; he lives both day and night and
all days and nights in the very lap of peril and the
immediate presence of death, and yet is no more afraid than
is the man who walks the streets of a city that was
threatened by an earthquake ten centuries before. When we
speak of Clive, Nelson, and Putnam as men who "didn't know
what fear was," we ought always to add the flea—and put him
at the head of the procession.
Pudd'nhead Wilson's Calendar

Незаменимые инструменты любого приличного питониста — pip и virtualenv. Краткая информация для входа в тему:

pip is a tool for installing packages from the Python Package Index.
virtualenv is a tool for creating isolated Python environments containing their own copy of python, pip, and their own place to keep libraries installed from PyPI.
It's designed to allow you to work on multiple projects with different dependencies at the same time on the same machine.
You can see instructions for installing it at virtualenv.org.
After installing it, run virtualenv env to create a new environment inside a directory called env.
You'll need one of these environments for each of your projects. Make sure you exclude these directories from your version control system.
To use the versions of python and pip inside the environment, type env/bin/python and env/bin/pip respectively.
You can "activate" an environment with source env/bin/activate and deactivate one with deactivate. This is entirely optional but might make life a little easier.


Статья объясняет – что это, зачем это и какие проблемы это решает.


original post http://vasnake.blogspot.com/2013/09/pip-virtualenv.html

2013-10-14

Pro secrets. Start to finish 5/9

When I reflect upon the number of disagreeable people who I
know have gone to a better world, I am moved to lead a
different life.
Pudd'nhead Wilson's Calendar

Секреты профессионалов. От старта до финиша. Ролик 5/9
Слаломисты (широкие доски, формула, огромные камберные паруса) рассказывают и показывают — как лихо стартовать левым галсом (приоритетный правый). Тактика гонок.

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


original post http://vasnake.blogspot.com/2013/09/pro-secrets-start-to-finish-59.html

2013-10-11

Add to map ArcGIS tiled mapservice with different spatialreference

October. This is one of the peculiarly dangerous months to
speculate in stocks in. The others are July, January,
September, April, November, May, March, June, December,
August, and February.
Pudd'nhead Wilson's Calendar

По всему Интернету не найти рецепта, рассказывающего: как добавить к карте со spatialReference.wkid = 102100 тайловый слой с другим spatialreference. Отличающимся. Формально, это невозможно. Документация ArcGIS говорит о том, что tiled layers перепроецировать (при добавлении к карте) невозможно. Нужно такой слой добавлять поверх подложки, имеющей совпадающий spatialreference.

Да и ладно бы. Но самый главный Есраевский вьювер
умудряется справится с такой непростой и даже невозможной задачей.
На эту карту вполне можно добавить слой
у которого spatialreference.wkid = 28407.
Как? Как они это делают?

Эти шельмы — разработчики Самого Главного Вьювера — обманывают API, используя конструктор (и «драйвер») слоя типа ArcGISDynamicMapServiceLayer вместо ArcGISTiledMapServiceLayer!

Вот, смотрите рабочий код функции добавления слоя в карту по URL. Javascript API ArcGIS:
//~ dynamiclayer // http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Petroleum/KSPetro/MapServer
//~ featurelayer // http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Hydrography/Watershed173811/MapServer/0
//~ tiledMap     // http://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer
addAGSLayer: function(layerURL) {
    var req = esri.request({
        url: layerURL,
        content:{"f": "json"},
        callbackParamName:"callback"
    });
    req.then(
        dojo.hitch(this, function(lyrmeta) {
            var tiledMap = lyrmeta.singleFusedMapCache || false;
            var haveLayers = lyrmeta.layers || false;
            if(haveLayers) haveLayers = true;
            var lyr = null;
            if(tiledMap) {
                if(lyrmeta.spatialReference.wkid == map.spatialReference.wkid) {
                    lyr = new esri.layers.ArcGISTiledMapServiceLayer(layerURL, {id: layerURL} );
                } else {
                    lyr = new esri.layers.ArcGISDynamicMapServiceLayer(layerURL, {id: layerURL});
                }
            } else {
                if(haveLayers) {
                    lyr = new esri.layers.ArcGISDynamicMapServiceLayer(layerURL, {id: layerURL});
                } else {
                    lyr = new esri.layers.FeatureLayer(layerURL,
                        { id: layerURL,
                          mode: esri.layers.FeatureLayer.MODE_ONDEMAND,
                          outFields:["*"]
                        } );
                }
            }
            if(lyr) {
                map.addLayer(lyr);
            }
        }),
        dojo.hitch(this, function(err) {
            alert("addAGSLayer failed, url: " + layerURL);
        })
    ); // req.then
}
Возмутительно, но это работает.

А мужики-то не знают:



original post http://vasnake.blogspot.com/2013/09/add-to-map-arcgis-tiled-mapservice-with.html

2013-10-10

Python Wrapper for NVD3

The true Southern watermelon is a boon apart, and not to be
mentioned with commoner things. It is chief of this world's
luxuries, king by the grace of God over all the fruits of
the earth. When one has tasted it, he knows what the angels
eat. It was not a Southern watermelon that Eve took: we know
it because she repented.
Pudd'nhead Wilson's Calendar

Python Wrapper for NVD3 это библиотека кода на Python, для рисования потрясающих графиков с помощью NVD3.js.

After installation use python-nvd3 as follows
from nvd3 import pieChart

#Open File to write the D3 Graph
output_file = open('test-nvd3.html', 'w')

type = 'pieChart'
chart = pieChart(name=type, color_category='category20c', height=450, width=450)
chart.set_containerheader("\n\n<h2>" + type + "</h2>\n\n")

#Create the keys
xdata = ["Orange", "Banana", "Pear", "Kiwi", "Apple", "Strawberry", "Pineapple"]
ydata = [3, 4, 0, 1, 5, 7, 3]

#Add the serie
extra_serie = {"tooltip": {"y_start": "", "y_end": " cal"}}
chart.add_serie(y=ydata, x=xdata, extra=extra_serie)
chart.buildhtml()
output_file.write(chart.htmlcontent)

#close Html file
output_file.close()




original post http://vasnake.blogspot.com/2013/09/python-wrapper-for-nvd3.html

2013-10-09

Pro secrets. Start to finish 4/9

Nothing so needs reforming as other people's habits.
Pudd'nhead Wilson's Calendar

Секреты профессионалов. От старта до финиша. Ролик 4/9
Слаломисты (широкие доски, формула, огромные камберные паруса) рассказывают и показывают — как влияют и как настраивать: петли, летучку набивки по гику, трапшкотики. Набивка паруса, выбор плавника и прочие хитрости про оборудование.

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

original post http://vasnake.blogspot.com/2013/09/pro-secrets-start-to-finish-49.html

2013-10-08

vsftpd on CentOS

Behold, the fool saith, "Put not all thine eggs in the one
basket" —which is but a manner of saying, "Scatter your
money and your attention"; but the wise man saith, "Put all
your eggs in the one basket and—WATCH THAT BASKET!"
Pudd'nhead Wilson's Calendar

Если вдруг нужно поднять FTP сервер (на CentOS), то в сети можно найти достаточно инструкций как это сделать. Например:

Но этого поста не было бы, если бы всё было так просто. Большинство инструкций подразумевают, что SELinux выключен, хотя обычно это не так. Почему и возникают ошибки вида «VSFTPd 500 OOPS: cannot change directory».

Короче, сначала обычная настройка vsftpd:
yum install vsftpd
nano /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
nopriv_user=ftpsecure
local_enable=YES
chroot_local_user=NO
listen=YES
#local_root=/var/www/ftp
EOF

chkconfig vsftpd on

adduser ftpsecure
passwd ftpsecure
usermod -s /sbin/nologin ftpsecure

system-config-firewall-tui
nano /etc/sysconfig/iptables
nano /etc/sysconfig/iptables-config
iptables -L -vn
service iptables stop # а вдруг оно не работает из-за файрволла?

service vsftpd restart
После чего проверяете с помощью FileZilla (потому как разговорчивая она), как все работает. Обычно — не работает.

Вот теперь надо вспомнить про SELinux:
getsebool -a | grep ftp
setsebool -P ftp_home_dir on

И после того, как FTP заработал, можно включить файрволл обратно:
service iptables start
    iptables: Applying firewall rules:                         [  OK  ]
    iptables: Loading additional modules: nf_conntrack_ftp     [  OK  ]
iptables -L -vn
    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination
      489  174K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
        8   438 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:21
       61  9185 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

nano /etc/sysconfig/iptables-config
IPTABLES_MODULES="nf_conntrack_ftp"
EOF
и проверить работу еще раз.

Ежели вдруг вам захочется, чтобы FTP клал/брал файлы не из домашней папки подключившегося юзера, то придется сделать так:
nano /etc/vsftpd/vsftpd.conf
chroot_local_user=NO
local_root=/var/www/ftp
EOF

mkdir -p /var/www/ftp
chown -R ftpsecure:ftpsecure /var/www
chmod -R 777 /var/www

setsebool -P allow_ftpd_full_access on
service vsftpd restart
Хотя это и не рекомендуется. Не безопасно.

Как узнать, какой параметр SELinux надо включить:
audit2allow -a

А как узнать, в каком пакете эта программа:
yum provides \*/audit2allow
    policycoreutils-python-2.0.83-19.30.el6.i686 : SELinux policy core python utilities
    Repo        : base
    Matched from:
    Filename    : /usr/bin/audit2allow


Источники:



original post http://vasnake.blogspot.com/2013/09/vsftpd-on-centos.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)