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

2014-02-28

distribution

Про Python, пакеты и дистрибуцию.

В прошлый раз я показал, как код на Python оформить в пакет (package). Если совсем кратко, то пакет — это папка в которой есть маркерный файл __init__.py

Продолжим. Сегодня я покажу как пакет Python оформить в виде дистрибутива, опять же, на примере https://github.com/vasnake/transbot/tree/package

ОК, перехожу в папку проекта:
pushd ~/projects/translit.bot
активирую virtualenv:
source env/bin/activate
Внутри папки проекта у меня есть папка-пакет и три файла:
translitbot/
CHANGELOG
COPYING
README.rst
Папка translitbot — это пакет, остальное — сопроводительная документация.

Чтобы сделать дистрибутив, в папку проекта надо положить еще один файл — setup.py:
from setuptools import setup

with open('README.rst', 'r') as infile:
    long_description = infile.read()

setup(
    name = 'translitbot',
    description = "XMPP chat bot for translit service",
    long_description = long_description,
    keywords = "XMPP GTalk chat bot translit",
    url = 'https://github.com/vasnake/transbot',
    download_url = 'https://github.com/vasnake/transbot/archive/master.zip',
    version = "0.1.2",
    license = 'GPLv3',
    author = "Valentin Fedulov",
    author_email='vasnake@gmail.com',
    packages = ['translitbot'],
    scripts = [],
    install_requires = ['dnspython', 'trans', 'xmpppy'],
    classifiers = [ # https://pypi.python.org/pypi?%3Aaction=list_classifiers
        'Development Status :: 3 - Alpha',
        'Intended Audience :: Education',
        'Topic :: Communications :: Chat'
    ],
    zip_safe = False
)
Можно считать, что дистрибутив у нас в кармане.

Параметры в setup.py вполне очевидные, разве, что особое внимание следует уделить двум:
    packages = ['translitbot'],
    install_requires = ['dnspython', 'trans', 'xmpppy'],
первый — список моих пакетов для включения в дистрибутив. Второй, это зависимости — список пакетов, которые необходимо установить перед установкой translitbot.
Кстати, о зависимостях. Использование песочницы virtualenv дает дополнительный бонус, возможность получить список использованных в проекте пакетов:
pip freeze > requirements.txt
После чего можно использовать полученный файл requirements.txt для воспроизведения среды:
pip install -r requirements.txt

Теперь, когда есть setup.py, можно проделать некоторые интересные и нужные фортели.
Проверить сетап:
python setup.py check

Собрать дистрибутив типа sources:
python setup.py sdist 
После чего проверить содержимое файла dist\translitbot-0.1.2.tar.gz на предмет — а вдруг чего не хватает?

Установить пакет в режиме разработки:
python setup.py develop
в этом режиме в список доступных пакетов записываются только ссылки, что дает возможность править исходный код и тут же использовать пакет, без повторной переустановки после каждой правки.

В отличие от режима разработки, установка:
python setup.py install
вписывает пакет внутрь общего списка пакетов среды, в нашем случае — песочницы env.

После создания дистрибутива sdist можно/нужно проверить, как он устанавливается в чистой песочнице (в отдельной, временной папке):
valik@snafu:~/t$ virtualenv env 
valik@snafu:~/t$ source env/bin/activate 
(env)valik@snafu:~/t$ pip install ~/projects/translit.bot/dist/translitbot-0.1.2.tar.gz 
Эта проверка показала, что пакет xmpppy невозможно установить, лог:
Downloading/unpacking xmpppy (from translitbot==0.1.2) 
  Could not find a version that satisfies the requirement xmpppy (from translitbot==0.1.2) (from versions: 0.5.0rc1) 
Cleaning up... 
No distributions matching the version for xmpppy (from translitbot==0.1.2) 
Эта проблема не связана с моим дистрибутивом (во всяком случае — не напрямую) и решается так:
wget http://downloads.sourceforge.net/project/xmpppy/xmpppy/0.5.0-rc1/xmpppy-0.5.0rc1.tar.gz
pip install ./xmpppy-0.5.0rc1.tar.gz
После чего можно повторить установку
pip install ~/projects/translit.bot/dist/translitbot-0.1.2.tar.gz 
На этот раз — успешно.

Думаю, на сегодня достаточно. В следующий раз рассмотрим: зачем в дистре нужны setup.cfg, manifest.in и как выложить свой дистр на PyPI.

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




original post http://vasnake.blogspot.com/2014/01/distribution.html

2014-02-27

PP4D

Вчера таки дочитал книгу Professional Plone 4 Development за авторством Martin Aspeli.

Прочел от корки до корки, хотя книга, заряженная в аппликуху Kindle для Android, никаких корок не имеет. Читал на плафоне Samsung GT-N7000 Galaxy Note, во время поездок на метро.
Довольно удобно, особенно возможность посмотреть незнакомое слово в словаре Киндлы.

Книга замечательная. После ее усвоения полностью исчезает налет загадочности и непостижимости Plone/Zope. Мартин осветил, и не просто бросил луч света а подробно, с примерами, разжевал все этапы построения кастомного сайта на базе Plone, заодно показав внутреннюю архитектуру сервера приложений.

Вообще, архитектура, суть ZCA (Zope Component Architecture), довольно проста. Все построено на использовании интерфейсов и реестров. В реестрах компоненты регистрируются и отыскиваются, а интерфейсы, помимо декларации функциональности, постоянно используются как маркеры при отыскании нужной компоненты в разных реестрах.
Ничего сложного.


Рекомендую, книга — супер.


original post http://vasnake.blogspot.com/2014/01/pp4d.html

2014-02-26

Dirsizecalc

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

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

Короче, давайте я вам расскажу, как почистить диск, удалив ненужное в «домашней» папке пользователя Винды.

Инструмент — total commander, домашняя папка, это та, внутри которой находится Desktop.
Найти самые большие (тяжелые, объемные) папки легко — комбо ALT+SHIFT+ENTER показывает размер каждой папки, остается только отсортировать их по размеру и провести инспекцию по порядку.

Сложнее найти папки, где мертвым грузом лежат всякие кеши и прочая чушь — там не столько размер, сколько количество мелких файлов отягощает жизнь нам и самой системе. Я недавно (перед чисткой) насчитал 26 000 файлов — комбо CTRL+L показывает эту инфу. После чистки осталось 5 000 файлов с хвостиком.
Так вот, для totalcmd есть плагин dirsizecalc, который, среди прочего, умеет считать количество файлов в папках и показывать их в дополнительных колонках панелей TC.
Установить плагин просто, достаточно скачать zip-файл и нажать на нем Enter, находясь в TC. После чего, открыть настройки TC, раздел Custom columns, создать новую конфигурацию колонок, добавив в нее колонку File count из плагина. Если не понятно — смотрите скриншот.
Теперь можно папки отсортировать по количеству лежащих в них (и подпапках) файлов, после чего провести чистку по порядку.

После удаления мусора, необходимо обновлять панель TC, кнопкой F2, например.



original post http://vasnake.blogspot.com/2014/01/dirsizecalc.html

2014-02-25

Транзакционные издержки

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

На днях, когда я объяснял начальнику, почему я не люблю приезжать в офис, я сказал, что современные средства коммуникации (Скайп в том числе) позволяют свести проблему удаленной работы к проблеме привычки. Он на это задал вопрос – «а как же транзакционные издержки?», подразумевая, вероятно, неэффективность общения по проводу по сравнению с переговорами в реале.

Давайте я вам расскажу про эти издержки. И покажу.

Вот средний офисный работник, Васисуалий, вышел из дому. Полтора часа на дорогу, от уютных тапочек до рабочего стола = три часа в день. Восемь часов Вася усердно работает, отвлекаясь на перекуры и общение с окружающими не более чем на 15 минут каждый час. Меньше тоже нельзя — охрана трудовых ресурсов против. Выходит — шесть часов относительно эффективного труда в день. Добавим сюда перерыв на обед — один час.
Что получается? 3 + 8 + 1 = 12 часов в день Васисуалий тратит на добывание денег и развитие бизнеса в стране. Из этих 12 часов только 6 посвящены собственно труду. Эффективность на уровне рабского труда. Я уж не говорю о фрустрации Васи, когда он внезапно понимает, что из оставшихся 12 часов ему остается один, много — два часа на то, чтобы ощутить радость бытия и заняться самосовершенствованием. Ведь спать надо Васе не менее 8 часов, еще надо позавтракать и поужинать, помыть посуду и прибраться в квартире. Не говоря уже о походах в магазин, общении с родней и тому подобном.

Транзакционные издержки — 100%

Шесть часов работаем, шесть — сливаем в сортир.


original post http://vasnake.blogspot.com/2014/01/blog-post_29.html

2014-02-24

Исходники

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

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

Короче, тут такой подарок образовался, благодаря добрым людям Matthieu Caneill, Stefano Zacchiroli, онлайновая библиотека исходников всех пакетов проекта Debian:

Стефано Закироли (Stefano Zacchiroli), ранее занимавший пост лидера проекта Debian, представил новый сайт sources.debian.net, на котором развёрнута система для навигации по исходным текстам программ, присутствующим в репозиториях пакетов дистрибутива. Доступны как средства выборки кода на основе имён программ и пакетов, с возможностью выбора конкретных версий пакетов, так и функции полнотекстового поиска по коду ветки Unstable, организованной через интеграцию с сервисом Debian Code Search.

В настоящее время на сайте представлены все официальные пакеты с исходным кодом, доступные в архиве Debian, в том числе ветки от oldstable до experimental, *-updates, *-proposed-updates и *-backports. Данные обновляются 4 раза в день, что позволяет отразить на сайте актуальное состояние архива пакетов. При просмотре поддерживается подсветка синтаксиса, предоставлены возможности формирования ссылок с выделением определённых строк и указанием комментариев (пример) , доступен JSON API для интеграции со сторонними сервисами.






original post http://vasnake.blogspot.com/2014/01/blog-post_8940.html

2014-02-21

TOX

В наши времена тотальной слежки и прослушки, когда считавшийся непрослушиваемым Skype выкуплен Microsoft-ом, когда спецслужбы уже и не маскируются — не могут не появлятся такие проекты как TOX (http://tox.im/#home).
Токс — это instant messenger, использующий шифрование трафика и технику DHT для отыскания адресатов. Очевидный недостаток этой замечательной программы — не все кто хочет, смогут ею воспользоваться. У кого нет прямого выхода в Интернет и/или нет возможности пробрасывать порты IP, тем Токс не поможет. В общем, если торренты у вас не качаются, то и Токс у вас не заработает.

А всем остальным — мастхэв.

Одной из ключевых задач проекта является обеспечение приватности и тайны переписки, в том числе защита от возможного анализа трафика спецслужбами. Для обеспечения адресации пользователей используется распределённая хэш-таблица (DHT), работа с которой организована в стиле BitTorrent. Канал связи организуется при помощи надстройки над протоколом UDP с реализацией сеансового уровня (Lossless UDP).

Для идентификации каждого пользователя используется специальный публичный ключ, который также применяется как открытый ключ для шифрования. Отдельно генерируется закрытый ключ для расшифровки сообщений, зашифрованных с использованием идентификатора/открытого ключа. Для организации коммуникаций требуется соединение к пиру (каждый клиент сети является пиром), который может быть определён вручную или найден автоматически (доступна функция поиска пиров в локальной сети).




original post http://vasnake.blogspot.com/2014/01/tox.html

2014-02-20

Лучше, потому как привычней

Скоро будет 10 лет, как появился Google Maps. По этому поводу можно почитать рекламную статью, написанную Matt Toon, в которой он расписывает дивный новый мир — мир ГИС, где не надо тратиться на инфраструктуру и обучение пользователей. Почему не надо? Потому, что Гугель уже построил инфраструктуру и предоставляет ее нам бесплатно (почти). Потому, что Гугель уже подсадил пользователей на онлайновую картографию и все умеют ей пользоваться. А нам, продавцам ГИС-решений, остается только добавить чуть требуемой заказчиками специфики и рубить капусту.

Читаем и радуемся:




original post http://vasnake.blogspot.com/2014/01/blog-post_26.html

2014-02-19

waze

Казалось бы, у всех уже есть свои картографические сервисы и приложения: у Google, у Apple, у Microsoft & Nokia, у нашего Яндекса, у всех, короче. Возможно ли в таком окружении придумать еще один велосипед? В смысле, картографический сервис, пользующийся спросом.
Ответ — возможно.

Летом 2013 года прозвучало сообщение:

Интернет-компания Google закрыла сделку по покупке израильского стартапа Waze, который ведет разработку мобильных картографических и навигационных технологий, сообщил вице-президент по геопродуктам Google Брайан Макклендон в корпоративном блоге.
Сумма сделки не раскрывается, однако, по данным источников агентства Рейтер, она составила чуть более миллиарда долларов. По словам гендиректора Waze Ноама Бардина, команда стартапа выбрала путь присоединения к крупной компании, а не IPO, поскольку хочет сосредоточиться на продукте.

выдрано отсюда http://citforum.ru/news/30408/

Компании заплатили лярд долларов США и, при этом, оставили ей свободу.

Ноам Бардин, директор Waze:

Bardin discussed the partnership with Google since the deal, and explained that Waze functions as a completely independent company, in terms of the application, marketing, PR, and other departments, but that the two companies do collaborate in some specific ways. “Our search is now Google search, and we send our incidents to Google Maps,” he said.


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

Так что за велосипед придумали в Waze?

at Waze we’ve taken one use-case, and we’ve gone very deep on that use-case. Our use-case is commuting, and when you leave your home every day, you should be turning on Waze, and we’re going to try and save you five to ten minutes a day. We’re going to look at alternate routes, and we’re going to try and figure out what has changed since the last time you drove. For this we’ve built a map of our own, and a real-time traffic service. It’s about being the first ones to know what’s going on, and to be actionable about it. To try and find a better route, or a better way to do things.”


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


Подробнее здесь https://www.waze.com/about


original post http://vasnake.blogspot.com/2014/01/waze.html

2014-02-18

Две карты в одной

Интересно выглядит эффект — в углу веб-карты расположен маленький прямоугольник, миникарта с меньшим масштабом. Если картинка на веб-карте изменяется (pan, zoom, …), то миникарта тоже показывает обновленную картинку. Многие такое видели, Bird's eye называется. Но тут круче, это не просто миникарта, это кнопка. Во первых, миникарта построена на другой подложке: если основная карта на подложке World_Street, то миникарта на World_Imagery, и наоборот. Во вторых, нажатие на эту кнопку-миникарту меняет подложку, с красивым анимационным эффектом.

In this post I will share my JavaScript basemap toggle button. Located on the top right it's really a small map which get it's extent from the events of the main map (extent change, pan).
The small extent is calculated easily and while you navigate over the main map, the button shows you the alternative map in the exact location.
When you press the button, The opacity is changed from 1 to 0 and vice versa in a period of 500 ms. This shows a nice animation


Поиграть с кодом можно тут http://jsfiddle.net/orengal/d7Ycr/
А тут http://gisn.tel-aviv.gov.il/iview2js/index.aspx готовое веб-приложение, в котором использована такая кнопка.


По сути, подложка не меняется, меняются настройки прозрачности у двух нижних слоев — вот и вся магия.


original post http://vasnake.blogspot.com/2014/01/blog-post_1686.html

2014-02-17

Новый сайт

Пока заказов нет, выпиливаю новую версию нашего корпоративного сайта: www.allgis.org
Получается прикольный, с ёжиками

Адреса оформлены в семантической разметке (schema.org), что дает прикольные эффекты (сниппеты) в поисковых системах и соц.сетях.

Работаем.

Только 5% людей правильно моют руки

Какой кошмар:

Подсмотрев, как ведут себя в туалете 3749 человек, ученые выяснили, что 15% мужчин и 7% женщин руки не моют вовсе. Из тех, кто руки все же моет, мыло используют 50% мужчин и 78% женщин. Чтобы смыть с рук микробы, руки нужно мыть с мылом в течение около 20 секунд. Большинство моет руки не дольше 6 секунд.
...
В США Санэпиднадзор считает, что 50% пищевых отравлений или заражения инфекцией случаются из-за немытых рук.


И это помешанные на стерильности американцы? Да уж.
По моим наблюдениям, в России не то что правильно/неправильно, вообще руки не моют 95% людей.


И чему только мамы детей учат?


original post http://vasnake.blogspot.com/2014/01/5.html

2014-02-14

Все велосипеды уже украдены до нас

Не придумывай велосипед — народная мудрость.
Всё уже украдено до нас — реплика из фильма Операция «Ы».

Я тут собираюсь описать технологию создания, распространения и использования пакетов Python, и на тебе — что я вижу:

Создание python-пакетов (aka setup scripts)


Всё, что я собирался показать уже нарисовано.

Но для меня работа еще есть, ибо не все вопросы по пакетам получили должную порцию внимания. Еще немного терпения и я допишу свою версию howto по setuptools и virtualenv.


original post http://vasnake.blogspot.com/2014/01/blog-post_22.html

2014-02-13

subject, verb, object

Ee,” he said, with an impish grin on his hairy German face, “equals em cee squared.”

Еще одна замечательная статья от Яна Митчелла, про ясность высказываний и мышления.

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

So English it is—if you want to get ahead in academia.
But this is not just a question of being able to write the language well, it is also a question of being able to think in an English-speaking way on paper. That means three main things: (1) subject, verb, object, generally in that order; (2) short sentences with as few subordinate clauses as possible; (3) a preference for practical examples over theoretical word-equation building.

и в основной части про то, на что похожи тексты русских профессоров (не всех, конечно). Их тексты, говорит Ян, могли бы называться Потемкинской прозой:

I read these two sentences to a Russian friend whose opinions I respect about many things, and his immediate reaction was: “That is the way my professor at MGU used to write. In fact, when I wrote the first draft of my PhD thesis, and I tried to put it in clear, simple language, he rejected it saying nobody will think you are worth reading if you write like that. These examples are exactly how he used to write. Every sentence was a paragraph.”
This is nothing to do with the Russian language, which is quite capable of being concise and clear when it wants to be. It is a problem that has resulted from a habit of thinking which is designed to conceal real thought—a combination of socialist deceit, imperialist bombast, and the sort of inferiority complex which, in a different context, provokes short men to drive big cars.
It could be called Potemkin prose, in that it gives the appearance of being the result of profound ratiocination, when in fact the writer has not been able to organise his or her thoughts with sufficient rigour to be able to say something which the averagely intelligent reader might be able to understand.



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


original post http://vasnake.blogspot.com/2014/01/subject-verb-object.html

2014-02-12

XenServer open source

А в июне 2013 года компания Citrix открыла код XenServer:

До сих пор код развиваемых Citrix компонентов платформы оставался закрытым, но некоторые составные части платформы разрабатывались в качестве открытых проектов, а также параллельно развивалось свободное (GPLv2) ответвление Xen Cloud Platform (XCP). В XenServer также активно использовались сторонние открытые проекты, такие как гипервизор Xen, ядро Linux, дистрибутив CentOS, инструментарий XAPI (изначально создан в Citrix, но передан проекту Xen) и т.п. Для многих из подобных открытых частей применялись созданные в Citrix патчи.

Теперь границы между XenServer и XCP будут ликвидированы. Основной ареной разработки становится проект Xen, в работе которого активно участвует Citrix. XenServer.org позиционируется как площадка для совместного развития привязанных к платформе Windows компонентов, таких как XenCenter, которые невозможно развивать в рамках Xen Project и Linux Foundation. Открытие код XenServer является продолжением инициатив Citrix по развитию средств виртуализации как открытых платформ, ранее при участии Citrix управление над проектом Xen было переведено под покровительство независимой организации Linux Foundation, а платформа CloudStack была передана в руки сообщества Apache.


Народ ужасно доволен, опен сорц шагает по планете.

Правда, VMWare пока держится и, судя по цене акций, неплохо.


original post http://vasnake.blogspot.com/2014/01/xenserver-open-source.html

2014-02-11

Yet another HTTP server via Python

PyServe is the simple command interface for HTTP serving directories.

PyServe - небольшой и весьма симпатичный пакет Python, использующий микрофреймворк bottle для публикации содержимого папки по HTTP.
Как говорит автор — сравните:
можно так:
# Python 2.*
$ python -m SimpleHTTPServer

# Python 3
$ python -m http.server

но с pyserv можно так:
# Python 2.*
$ pyserve

# Python 3
$ pyserve

В какой то момент мне захотелось большего:

Одинаковый синтаксис для python 2 и 3 версий;
Возможность отключения "автоиндекса" для директорий (игнорирование index.html);
Возможность указания IP-адреса сервера (шаринг в сети);
Возможность скрытия системных файлов;
Более приятный внешний вид при выводе каталога директории;
Возможность указания пути к директории (не только текущей);

Так появился пакет PyServe.


Что характерно, генерируемый листинг приятен глазу:


original post http://vasnake.blogspot.com/2014/01/yet-another-http-server-via-python.html

2014-02-10

Повезло/не повезло

Взять все да и поделить.

- Вы бы почитали что-нибудь, - предложил он, - а то, знаете ли...

- Уж и так читаю, читаю... - ответил Шариков и вдруг хищно и быстро налил себе полстакана водки.

- 3ина! - тревожно закричал Филипп Филиппович. - Убирай, детка, водку. Больше уж не нужна. Что же вы читаете? - В голове у него вдруг мелькнула картина: необитаемый остров, пальма, человек в звериной шкуре и колпаке. "Надо будет Робинзона..."

- Эту... как ее... переписку Энгельса с этим... как его, дьявола... с Каутским.

Борменталь остановил на полдороге вилку с куском белого мяса, а Филипп Филиппович расплескал вино. Шариков в это время изловчился и проглотил водку.

Филипп Филиппович локти положил на стол, вгляделся в Шарикова и спросил:

- Позвольте узнать, что вы можете сказать по поводу прочитанного?

Шариков пожал плечами.

- Да не согласен я.

- С кем? С Энгельсом или с Каутским?

- С обоими, - ответил Шариков.

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

- Да что тут предлагать... А то пишут, пишут... конгресс, немцы какие-то... Голова пухнет. Взять все да и поделить.

- Так я и думал, - воскликнул Филипп Филиппович, шлепнув ладонью по скатерти, - именно так и полагал.

- Вы и способ знаете? - спросил заинтересованный Борменталь.

- Да какой тут способ, - становясь словоохотливее после водки, объяснил Шариков, - дело не хитрое. А то что ж: один в семи комнатах расселился, штанов у него сорок пар, а другой шляется, в сорных ящиках питание ищет.



Тут намедни рассказали о замечательно исследовании:

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

Чтобы ответить именно на этот вопрос, мы запустили исследование в Беркли. Взяли сто пар игроков и кинули сто монеток, чтобы определить, кто в каждой из пар будет богатым и везучим, а кто нет. Богатому давалось вдвое больше денег, плюс он бросал кости не один раз, а два, поэтому гораздо больше передвигался по игровому полю. Игра длилась 15 минут, в течение которых мы снимали все происходящее на скрытую камеру. Сегодня я собираюсь впервые продемонстрировать некоторые результаты исследования, поделиться тем, что мы увидели.


Какое замечательное, жизненное исследование. И ведь на него деньги выделили, как же без этого. У кого-то забрали и этим, прости господи, исследователям выдали. А в Африке дети голодают (с).

Вот, что про таких исследователей пишут толковые люди:

Это проблема с пониманием.

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

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

И это во всем. Чем иначе объяснить, почему люди платят сотни тысяч за диплом "влияние танца на развитие песни в Северной Европе XIII века"? Какое объяснение вам кажется разумнее, - что они думают, что это позволит им быть продуктивнее в какой-то деятельности, или, что это ритуальный взнос, чтобы признали за своего и пропустили поближе к кормушке?




Вот и не ясно, как объяснить довольно простые вещи людям, которые не работают а служат. И не изучают а веруют.


original post http://vasnake.blogspot.com/2014/01/blog-post_17.html

2014-02-07

Как не надо лечиться

Оказание первой помощи пострадавшему.

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


А если кратко, то:

1 - Сам погибай, а товарища выручай
сначала определите, что угрожает вам, а уже потом — что угрожает пострадавшему, ведь если с вами что-то случится, помочь вы уже не сможете. Оцените обстановку, позвоните 01 и по возможности воздержитесь от экстремального героизма. Как бы это цинично ни звучало, один труп всегда лучше, чем два.

2 - скорая и спасатели приезжают к месту аварии, а пострадавшие уже извлечены из покореженных машин, уложены в тенечке и напоены водичкой
Действия свидетелей ДТП сводятся к следующему: вызвать помощь, отключить аккумулятор аварийной машины, чтобы от случайной искры не вспыхнул разлитый бензин, огородить место ДТП, остановить у пострадавшего кровотечение (если есть) и до прибытия врачей просто с человеком… разговаривать. Да-да, психологически поддерживать

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

4 - Со жгутом у наших людей отношения трепетные и нежные. Он есть в каждой аптечке, и потому при любом сильном кровотечении граждане бросаются жгутовать
Запомните — жгут применяется только для остановки артериального кровотечения. … И тут уж медлить нельзя, жизнь уходит из человека с каждой секундой.
… Ваша задача — прижать артерию, дождаться остановки кровотечения, а уж потом приладить на место жгут. И поскорее в больницу. Кстати, жгут накладывают на одежду, чтобы его было видно. Записку с временем наложения жгута лучше написать маркером… на лбу пострадавшего.
А вот венозное кровотечение — даже очень обильное — лучше останавливать тугой давящей повязкой. Не беда, если она насквозь пропитается кровью — положите сверху еще один слой. Это помимо прочего позволит врачу по толщине повязки оценить серьезность кровопотери

5 - Ожог смажем маслом
Льем на ожог прохладную воду и ждем. Но вот ждем мы, как выясняется, недостаточно. Как правило — до смягчения или пропадания болевого синдрома, то есть меньше минуты. За это время только часть джоулей выходит наружу, остальные же сидят, притаившись, и ждут развития событий. .... А вот если бы хватило терпения простоять под водой еще минут 10—15, был бы совсем другой разговор. И пантенол, и прочие средства принялись бы работать с поврежденным участком кожи, из-под которого все тепло уже выведено

6 - Разотрите ему уши Россия — место холодное
Ведь даже бутылка пива, замерзшая в морозилке, при резком переносе в тепло может лопнуть. А уж нежные сосудики… Поэтому — не надо растирать. Надо медленно согревать. Прохладной или чуть теплой водой. Тогда и последствия обморожения будут не столь плачевны, и боль при возвращении чувствительности не такая сильная

7 - Знобит – согреем
В самых грустных случаях температура залетала за отметку 41, а дальше уже шли необратимые процессы, приводящие к смерти. Нечасто, но бывало. Так что помните — при высокой температуре и ознобе не надо укутываться. Надо охлаждаться. Прохладная ванна, легкое покрывало, влажное обтирание… все что угодно, лишь бы дать организму возможность сбросить лишнее тепло

8 - Банка с марганцовкой
Знали ли родители, что кристаллы марганца полностью растворяются в воде только при температуре около 70 градусов? Знали ли они, что бодяжить такой раствор не просто бессмысленно (необязательно пить антисептики с целью немедленно отдать их назад), но и опасно, так как нерастворившийся кристаллик марганцовки может наделать в слизистой желудка кучу бед? Не надо тратить время и химикаты — для очистки желудка достаточно выпить 3—5 стаканов простой теплой воды и вызвать рвоту.

9 - Человек подавился, бедолага, и кашляет так, что сердце надрывается. Что делают окружающие? Естественно, помогают ему — стучат по спине
не надо стучать. Даже если просят. Намного проще и безопаснее успокоить человека и попросить его сделать несколько медленных, очень медленных вдохов и резких выдохов. При выдохах лучше слегка наклоняться вперед — чтобы наша водосточная труба из вертикального положения перешла в горизонтальное. Три-четыре таких вдоха-выдоха — и откашливание усилится. Кусок вылетит сам собой, просто и безопасно

10 - Это непоколебимая уверенность в том, что человеку, у которого случился приступ эпилепсии, необходимо разжать зубы и вставить между ними что-нибудь

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


original post http://vasnake.blogspot.com/2014/01/blog-post_17.html

2014-02-06

Deluge 1.3.6 rutracker patch

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

Чтобы добиться желаемого (работа Deluge с рутракером без проблем) я сделал следующее:
1 — снес стандартный пакет Deluge;
2 — установил Deluge в песочнице (virtualenv) из исходников, пропатчив один из файлов.
Причем демон (deluged) у меня работает на безголовой машине с OS Debian jessie i386 а клиент (deluge-gtk) запускается на десктопе с OS Debian jessie amd64. То есть, установка была сделана на обоих машинах.

Процесс

остановить демона
pkill deluged

подготовить систему
su -l
aptitude purge deluge-common
aptitude install python python-twisted python-twisted-web python-openssl python-simplejson python-setuptools intltool python-xdg python-chardet geoip-database python-libtorrent python-notify python-pygame python-glade2 librsvg2-common xdg-utils python-mako
aptitude show libtorrent-rasterbar7
    Version: 0.16.11-2
mkdir /opt/deluge
chown -R valik /opt/deluge

поставить Deluge из сырцов в песочницу
su -l valik
pushd /opt/deluge
wget http://download.deluge-torrent.org/source/deluge-1.3.6.tar.gz
tar -zxvf deluge-1.3.6.tar.gz
cd deluge-1.3.6/
# патчить
pushd deluge/core/
cp core.py core.py.orig
wget https://gist.github.com/vasnake/8436923/raw/c5a7e7bd3b135a4aa7d62cbc6b720e22d9d32f6c/deluge.core.py.patch
patch core.py < deluge.core.py.patch
popd
# установить
virtualenv --system-site-packages env
source env/bin/activate
python setup.py clean -a
python setup.py build
python setup.py develop

Готово, установлено. Теперь, в любой момент можно запустить демона:
pushd /opt/deluge/deluge-1.3.6
source env/bin/activate
deluged

или, на десктопе, клиента:
pushd /opt/deluge/deluge-1.3.6
source env/bin/activate
deluge-gtk &

Пока работает нормально, проблем с рутракером не замечено.

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

Патч:



original post http://vasnake.blogspot.com/2014/02/deluge-136-rutracker-patch.html

2014-02-05

Логотип в выдаче поисковика

Пример, как добавить немного семантики в веб.

С помощью этой разметки вы можете указать системе, где находится ваш логотип. Например, если вы – владелец сайта www.example.com, можно использовать следующую разметку элементов на странице:
<div itemscope itemtype="http://schema.org/Organization">
<a itemprop="url" href="http://www.example.com/">Главная</a>
<img itemprop="logo" src="http://www.example.com/logo.png" />
</div>
Этот код сообщает нашей системе, что изображение является логотипом компании, главная страница которой обозначена в разметке. Логотип будет отображаться в результатах поиска Google.



Так в хаосе веба появляются островки упорядоченной структуры. И это хорошо.


original post http://vasnake.blogspot.com/2014/01/blog-post_5376.html

2014-02-04

Не договорились

как поссорился Иван Иванович с Иваном Никифоровичем

Да будет вам известно, что на торренто-машинке у меня установлена программа Deluge. Замечательная программа — построена как клиент-сервер, что позволяет делать безголовые торренто-машинки, не содержит ничего лишнего и при этом есть все, что надо. К ресурсам не требовательна. И написана на Python, что лично мне греет душу.

С какого-то момента (последние полгода?) стал я замечать, что плохо работает раздача, почти ничего не раздается. Статус трекера для торрентов часто показывает ошибки (tracker status: forbidden). Но, поскольку на скачивание это не влияет (вроде), то и наплевать.
И тут, внезапно, аж целых два кина не захотели скачиваться. И это при том, что трекер показывает не менее 10 раздающих. Что за нах? Пришлось разбираться. И что же выяснилось?

Что сделал рутракер
Клиент на трекере забанен до официально подтвержденного исправления факта утечки пасскеев.

Почему он это сделал
А на неприватнных торрентах делюга по умолчанию обменивается анонсами трекеров вместе с пасскеями юзеров

Текущая позиция рутракера
Новый компромисс - делюга не банится, но разрабы функцию обмена делают неактивной по умолчанию. Тогда банятся юзеры, включившие её

Позиция разработчиков Deluge
there is no data leak when the .torrent file is marked as private. If the contents of the .torrent file are private (such as a passkey being included) it should be marked as a private torrent.
Data breaches can only occur in cases where you're using a public .torrent file for private data. If "several huge russian trackers" are having data breaches as a result of it, then it's a result of their inability to recognize the difference between a public and private torrent file.

То есть, как я понял, рутрекер все торренты сделал public, но при этом не стал удалять из торрентов приватную информацию (пасскей), с целью сбора статистики.
Разработчики Deluge, в свою очередь, сделали так, что опция обмена данными между пирами включена по default.
Два этих решения, в совокупности, привели к тому, что Deluge рассылает всем подряд «приватную» информацию из торрентов рутрекера.

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

Временное решение проблемы для тех, кто не хочет отказаться от Deluge
    --- deluge-1.3.6.orig/deluge/core/core.py
    +++ deluge-1.3.6/deluge/core/core.py
    @@ -87,14 +87,18 @@ class Core(component.Component):
             # Note: All libtorrent python bindings to set plugins/extensions need to be disabled
             # due to  GIL issue. https://code.google.com/p/libtorrent/issues/detail?id=369
             # Setting session flags to 1 enables all libtorrent default plugins
    -        self.session = lt.session(lt.fingerprint("DE", *version), flags=1)
    +        self.session = lt.session(lt.fingerprint("DE", *version), flags=0)
    +        self.session.add_extension("ut_pex")
    +        self.session.add_extension("ut_metadata")
    +        self.session.add_extension("smart_ban")
    +        self.session.add_extension("metadata_transfer")
     
             # Load the session state if available
             self.__load_session_state()
     
             # Set the user agent
             self.settings = lt.session_settings()
    -        self.settings.user_agent = "Deluge %s" % deluge.common.get_version()
    +        self.settings.user_agent = "Neluge patched %s" % deluge.common.get_version()
             # Increase the alert queue size so that alerts don't get lost
             self.settings.alert_queue_size = 10000


Попробую применить. О результатах доложу.


original post http://vasnake.blogspot.com/2014/01/blog-post_3010.html

2014-02-03

Нажми на кнопку — получишь результат

Чего уж проще, нажал кнопку в ArcMap Toolbox и получил готовый Hadoop кластер на Amazon. Посчитал свою BigData и убил кластер. Современная версия аренды суперкомпьютера.

The idea here is that I would like an ArcGIS user to just push a button from within ArcMap and have a Cloudera based Hadoop cluster started on Amazon EC2. From there on, a user can edit features in ArcMap that can be exported into that cluster to be used as an input to a MapReduce job. The output of the MapReduce job is imported back into ArcMap for further analysis. This combination of SmallData (GeoDatabase) and BigData (Hadoop) is a great fusion in a geo-data scientist arsenal. When done with the analysis, the user again will push a button and destroys the cluster, thus paying for what he/she used while having access to elastic resources.

The following is a sequence of prerequisite steps that you need to execute to get going:



Статьи Мансура — просто подарок для желающих освоить обработку spatial BigData.


original post http://vasnake.blogspot.com/2014/01/blog-post_9016.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)