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

2013-01-31

Программа

Вот прошли мы начальный курс обучения виндсерфингу, научились ходить туда-сюда на 200-литровых ученических досках со швертом и под парусом 5-7 метров в слабый ветер. Дальше что?
Хочется летать! Ты вот телепаешься тихонько, а мимо тебя фррр — один пролетел, другой...

Учиться глиссировать. Программа для этого получается такая.

Освоиться в трапеции — наука выбирать длину кончиков и правильного размещения кончиков на гике; цепляние за кончики и отцепление. Ходить на доске вися в трапеции и не катапультируясь при каждом порыве ветра.

Освоиться на доске с петлями — натренироваться заходить в петли и, конечно, выходить из петель; не падать с новой для новичка доски 110 — 150 литров, предназначенной для глиссирования.

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

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

Добавить сюда бич старт, водный старт и умение подбирать парус, доску и плавник под ветер и волны — получаем программу максимум.

Посмотрим, сколько времени уйдет на ее освоение.

original post http://vasnake.blogspot.com/2013/01/blog-post_24.html

2013-01-30

Carve jibe

Carve jibe, он же глиссирующий фордак, он же jibe.
Чупер, Кататься и Ржать. Все права на видео принадлежат Чуперу.


Сергей рассказывает и показывает, как легко и просто делается фордак.
Главное — колени.

original post http://vasnake.blogspot.com/2013/01/carve-jibe.html

2013-01-29

Видеоурок виндсерфинга

Все права на видео принадлежат Чуперу.

Чупер, Кататься и Ржать, часть 3.

Анонс
Что делать в слабый ветер? Погонять никак не получится. Валяться на берегу? Нет.
Брать большую доску, швертовую, и маленький парус, метров 5, не больше. И играть с ветром.
Как результат, вы почувствуете и прочувствуете как работает парус, доска, ваше тело. Перестанете быть заложником паруса и ветра и станете их мастером.
Чупер демонстрирует разные элементы, отработкой которых можно заняться в слабый и очень слабый ветер.

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

2013-01-28

UnicodeDecodeError

Типичная для нерусских нелатинских питонистов история. Все, кому для текстов недостаточно ASCII таблицы, наступают на грабли типа
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
Почему так, с чем это связано, какова механика и, главное, что с этим делать?
Покровы срывает Mikhail Korobov:

__str__ and __repr__ must return byte strings under Python 2.x, but it is not clear what encoding should they use. It is possible to have all the default encodings different on the same machine at the same time.
...
It is tempting to encode the values of __str__ and __repr__ to sys.stdout.encoding, and maybe set system default encoding to sys.stdout.encoding. This way REPL and print would work as expected and the result would be readable when it is possible.
...
The second option is to make __str__ and __repr__ return 7bit ASCII, using escaping and/or transliteration.
...
The third option is to always encode __str__ and __repr__ results to UTF-8.
...
All the tricks above are only necessary for Python 2.x because Python 3.x fixed the main issue: __repr__ and __str__ must return unicode in Python 3.x. Developers shouldn't worry about sys.stdout.encoding and many other things under Python 3.x because when the expected encoding is known, unicode would be encoded using this encoding.
Error handling become stricter; issues like 2.x %r issue are also not possible under Python 3.x.
I think that the best way is to write code with Python 3.x semantics (__str__ and __repr__ should return unicode) and have a decorator for fixing them for Python 2.x; this idea is from a thread at django-developers. Decorator then may be removed in a (far?) future alongside with dropping Python 2.x support.


Мой вариант — все переводить в UTF-8. Но, по любому, вариант с декоратором следует иметь в виду.

original post http://vasnake.blogspot.com/2013/01/unicodedecodeerror.html

2013-01-26

Вплавь

Как по воде, вплавь, добраться из Москвы в Хургаду?
Вот по этому маршруту:

View moscow-hurghada in a larger map

Из Москвы до Волги, по Волге до Волго-Донского канала, по Дону до Азовского моря, выйти в Черное море, пробраться в Средиземное, далее Суэцкий канал и Красное море. Приплыли. 5-6 тыщ километров, лень считать точнее.

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

2013-01-24

The Twelve Factors

Работаете над веб-аппликухой будущего, хотите всех подсадить на SaaS? Тогда вам необходимо знать про 12 факторов успешной разработки такого софта. Добрые люди уже походили по граблям и сформулировали свой опыт в следующей декларации

I. Codebase
One codebase tracked in revision control, many deploys
II. Dependencies
Explicitly declare and isolate dependencies
III. Config
Store config in the environment
IV. Backing Services
Treat backing services as attached resources
V. Build, release, run
Strictly separate build and run stages
VI. Processes
Execute the app as one or more stateless processes
VII. Port binding
Export services via port binding
VIII. Concurrency
Scale out via the process model
IX. Disposability
Maximize robustness with fast startup and graceful shutdown
X. Dev/prod parity
Keep development, staging, and production as similar as possible
XI. Logs
Treat logs as event streams
XII. Admin processes
Run admin/management tasks as one-off processes


В оригинальной статье все пункты по клику раскрываются в подробное толкование. СтОит почитать.

За изложение на русском благодарим astoon.

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

original post http://vasnake.blogspot.com/2013/01/the-twelve-factors.html

2013-01-23

JavaScript

Оказывается (http://www.tez-tour.com/mem.html?countryId=5732), с напитками и просто водой в Египте серьезные напряги. Воду из крана не то что пить, для чистки зубов и мытья фруктов не рекомендовано использовать. А бутилированная вода только за деньги, даже для All Inclusive. Да и вообще, строго у них там.

Про JavaScript.
Отличная обзорная статья про Яваскрипт
Особенно хороша тем, что плотно наполнена ссылками на разные полезняшки.

Отдельно доставил пост про Рельсы

Люди приуменьшают влияние моды на разработку, но на самом деле не всё так просто. Как говорил Alan Kay (создатель Smalltalk): "Пока есть вещи, развивающиеся быстрее образования, у нас всегда будет поп-культура".

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

Меня не удивляют рассказы о том, насколько Нода дерзкая. Когда Рельсы были в таком возрасте, они были не менее дерзкими. На RailsConf 2007 было огромное количество отличных технических докладов, но кроме того там же собралась критическая масса самовлюбленных придурков. Тогда, насколько мог, я старался игнорировать эту самовлюбленность, а теперь советую поступить так же с Нодой. И вот почему


Это перевод вот из этой статьи

Толково и с юмором.

original post http://vasnake.blogspot.com/2013/01/javascript.html

2013-01-22

List comprehensions

Генерация списков в Python.
Тема довольно заезженная, но почему бы не обзавестись еще одной шпаргалкой?

>>> animal_names = [animal.name for animal in list_of_animals]
>>> squares = [x*x for x in range(15)]
>>> div_by_seven = [x for x in range(100) if x%7 == 0]
>>> moods = ['sad' if person.is_alone() else 'happy' for person in people_at_party]
>>> ident_matrix = [[1 if col_index==row_index else 0 for row_index in range(4)] for col_index in range(4)]
>>> flattened = [num for row in ident_matrix for num in row]
>>> even_zeroes = [num for row in ident_matrix if ident_matrix.index(row)%2==0 for num in row if num==0]

You can see how the awkward alternations between our assignments and our predicates quickly make our list comprehension much harder to read and follow. This is where list comprehensions begin to approach the limit of their usefulness. As much as it’s nice to have everything on one line, list comprehensions are meant as a convenience tool; if they’re making your code more complex and unreadable, they should be replaced by a more traditional structure. If your code looks indecipherable and fits on one line but could easily be replaced by a few more lines that could be written by a coder with only minimal experience with python, you’re trying too hard to impress someone.

>>> even_zeroes = []
>>> for row in ident_matrix[::2]:
>>>   for val in row:
>>>     even_zeroes.append(val) if val == 0 else None


Там еще про словари, про генераторы немножко. Годная статья.

original post http://vasnake.blogspot.com/2013/01/list-comprehensions.html

2013-01-21

Про паруса

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

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

Исходя из силы ветра:

По размеру паруса деляются:
- очень очень большие или Monster Rigs. Размер от 8 м.кв. и больше.
- большие. От 6 м. кв. до 7.9 м. к.в
- средние. От 5 до 5.9 кв.м.
- малые. От 4.0 до 4,9 кв. м.
- очень очень маленькие или Storm Rigs. От 3.0 до 3.9 кв. м.
...
Ветер бывает:
- очень слабый (до 8 м/с)
- слабый (от 8 до 11 м/с. С этой отметки можно глиссировать.)
- средний (от 11 м/с до 14 м/с)
- сильный (от 14 м/с до 17 м/с)
- совсем сильный (от 17 до 20)
- штормовой (20 м/с +)
...
Очень слабый ветер – Очень большой парус (глиссирование) / средний парус (тренировка различных элементов, “буравчики”)
Слабый ветер – Большой парус при минимальных настройках.
Средний ветер – Большой парус при максимальных настройках / средний парус при минимальных настройках .
Сильный ветер – Средний парус при максимальных настройках / малый парус при минимальных настройка.
Очень сильный ветер – Малые паруса при максимальных настройках
Штормовой ветер – штормовые паруса.

Статистика выведена в расчете на среднестатистического виндсерфера (вес 75, рост 185).
Для более легких или более тяжелых катальщиков нужны поправки на вес и рост, которые составят порядка половины квадратного метра площади на 10 кг вашего веса.
В любом случае, это лишь только грубые расчеты и статистика. Самый лучший способ это эмпирический, т.е. методом проб и ошибок.


Отталкиваясь от такой шкалы, можно уже делать более-менее обоснованный выбор. Особо следует подчеркнуть, что следует очень внимательно отнестись к параметрам и настройкам паруса при ветре сильнее «очень слабого». Я долго буду помнить урок, который я себе преподнес, выйдя в «слабый» ветер с «тряпочным» парусом, настроенным как «мешок».
Предыдущие посты про виндсерфинг, но без тега:


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

2013-01-18

FeatureLayer

Сегодня я вам расскажу, как правильно добавить слой типа «FeatureLayer» в карту, сделанную из ArcGIS Viewer for Silverlight.

Казалось бы, что может быть проще

var lyr = new ESRI.ArcGIS.Client.FeatureLayer() { Url = lyrUrl, ProxyUrl = proxy };
ESRI.ArcGIS.Client.Map map = MapApplication.Current.Map;
ESRI.ArcGIS.Client.LayerCollection lyrs = map.Layers;
lyr.InitializationFailed += new EventHandler(lyr_InitializationFailed);
lyrs.Add(lyr);
MapApplication.SetLayerName(lyr, lyrName);

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

Для того, чтобы FeatureLayer работал корректно, его надо предварительно инициализировать. Приблизительно так

var lyr = new ESRI.ArcGIS.Client.FeatureLayer() { Url = lyrUrl, ProxyUrl = proxy };
lyr.OutFields.Add("*");
lyr.Mode = FeatureLayer.QueryMode.OnDemand;
lyr.Initialize();

и только потом слой можно добавлять к карте.

Как ни странно, ни в документации, ни в примерах кода про эдакие тонкости ничего не сказано.

Be prepared.

original post http://vasnake.blogspot.com/2013/01/featurelayer.html

2013-01-17

web crawler

Добрым человеком написан на Python паучок для обхода сайтов. Очень простой и маленький, один файл в 360 строк кода. Парсинга HTML как такового нет, добыча ссылок проводится через regexp


from pholcidae import Pholcidae

class MySpider(Pholcidae):

    settings = {'domain': 'www.test.com', 'start_page': '/sitemap/'}

    def crawl(self, data):
        print(data.url)

spider = MySpider()
spider.start()


Вполне годится в качестве библиотеки для какого-либо проекта с обходом сайтов.

original post http://vasnake.blogspot.com/2013/01/web-crawler.html

2013-01-16

Единая система идентификации

В моем расписании зафиксировано, что раз в месяц необходимо заглянуть, помимо прочего, на сайт нашей любимой налоговой инспекции, в раздел «узнай свою задолженность» https://service.nalog.ru/debt/
Вот сегодня опять заглянул. Опаньки, предлагают воспользоваться «личным кабинетом» https://service.nalog.ru/lk/ где помимо задолженности есть еще блекджек-и-шлюхи. Вот и прекрасно, подумал я и полез регистрироваться. И жестоко обломался. Традиционно, для получения пароля надо посетить присутствие и пообщаться с чиновником.

Факт посещения присутствия еще можно было бы оправдать как-то, если бы у меня уже не было регистрации на портале госуслуг. Во первых, на портале зарегиться можно и без посещения чиновника. Во вторых, в 2011 году вышло замечательное постановление правительства о единой системе идентификации для «электронного правительства» http://www.gosuslugi.ru/pgu/news/view/227
А в третьих, сама суть портала госуслуг состоит в том, чтобы служить точкой входа в разные службы. Ан нет. ФНС — это не государственная служба, оказывается.

Получается что? Ерунда. Лебедь рак и щука. И «ручное управление».

На фоне этого (и вот этого), PR компания http://gosuslugi.livejournal.com/ выглядит как клоунада.

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

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

2013-01-15

Рекорды

В прошлом году, 11 декабря, я опубликовал отчет о перепрошивке плафона Samsung GT-N7000 Galaxy Note. Тогда я залил в него Android 4.0.4 Ice Cream Sandwich (ICS) с целью снизить энергопотребление и избавиться от глюков.
Прошло больше месяца, можно подвести итоги.

Основным побудительным мотивом перепрошивки был внезапный «дядя жора», приходивший и уходивший по весьма загадочному расписанию. Но даже без жора батарея жила не более недели. Однажды был зафиксирован рекорд в 9 суток.
Теперь же я могу со всей уверенностью заявить, что 10 (десять) суток для нашего еНота — не рекорд а повседневность. Рекорд же теперь — больше 12 суток работы от батареи



Чтобы сказка стала былью, помимо упомянутой перепрошивки я воспользовался тулзой App Quarantine ROOT/FREEZE by ramdroid. С ее помощью я заблокировал внушительный список программ. Критерием блокировки был факт обнаружения неиспользуемой мною программы или сервиса в списке запущенных процессов. Типа, нефиг запускаться, если тебя не звали.



Лично я очень доволен.

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

original post http://vasnake.blogspot.com/2013/01/blog-post_15.html

2013-01-14

Головоног

Кроме моллюска, под название Ceph еще попадает орхидея Цефалантера.

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

Добротная статья (перевод) про устройство сетевой файловой системы, именуемой Ceph:

Назначение Ceph можно просто определить следующими задачами:
Легкость масштабирования до петабайтных размеров
Высокая производительность при различных нагрузках (числа операций ввода/вывода в секунду и различной полосе пропускания)
Повышенная надежность
К сожалению, эти задачи могут конкурировать друг с другом (например, масштабируемость может снижать производительность или мешать ее увеличению, либо может влиять на надежность). В Ceph используется несколько очень интересных концепций (таких как динамическое разделение метаданных и распределение/репликация данных), которые рассматриваются в настоящей статье. В архитектуру Ceph заложена также устойчивость к одиночным отказам, причем предполагается, что на больших объемах данных (петабайты данных) отказы в системе хранения являются обычным явлением, а не исключением. Наконец, система не разрабатывалась под конкретную нагрузку, она может адаптироваться к изменению распределенной нагрузки и это обеспечивает наилучшую производительность. Все функции системы совместимы со стандартами POSIX, благодаря чему развертывание системы не окажет влияние на существующие приложения, действующие в рамках POSIX (используются расширения, предлагаемые в Ceph). Наконец, Ceph является распределенной системой хранения данных с открытым исходным кодом, которая входит в основную ветку ядра Linux (с версии 2.6.34)


А еще Цеф представляется как обьектное хранилище и дает REST интерфейс к нему. А еще есть Ceph’s RADOS Block Device (RBD) — блочное устройство, размазывающее блоки по сетевому хранилищу.
Короче, на все случаи жизни.
Цеф присутствует в нестабильной (sid) ветке Дебиан http://packages.debian.org/search?searchon=names&keywords=ceph
А можно ставить из отдельного репозитория http://ceph.com/docs/master/install/debian/

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

2013-01-11

Isis

One of the original motivations for Isis itself was to be able automatically generate a user interface for a domain object model.

И для Java есть свой RoR

Apache Isis даёт возможность определить бизнес-логику в виде сущностей, предметных сервисов и репозиториев, на основании которых фреймворк динамически сгенерирует готовое представление предметной модели в форме web-приложения или RESTful API. Наглядный пример процесса создания простейшего приложения с использованием Apache Isis можно оценить на данной странице.




Apache Isis is a framework for rapidly developing domain-driven apps in Java. Write your business logic in entities, domain services and repositories, and the framework dynamically (at runtime) generates a representation of that domain model as a webapp or as a RESTful API.


Нарисовали модель, скормили ее Исизу и получили готовое RESTful веб-приложение. Красота же.


original post http://vasnake.blogspot.com/2013/01/isis.html

2013-01-10

Права и обязанности

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

Что показалось значимым.
В предисловии записано, что данная полицейская мера нужна для реализации конституционных прав и обязанностей гражданина РФ. Спорное утверждение, как мне кажется.
В тексте дается несколько различных определений понятию «фиктивная регистрация», от эфемерного «без намерения там проживать» до «предоставления заведомо ложных сведений». Это правопорядку не на пользу, очевидно.
Законопослушным гражданам следует обратить внимание на положения, вкратце гласящие нечто вроде: при проживании не по месту регистрации, у вас есть 90 (девяносто) дней на то, чтобы зарегистрироваться; если за 90 дней вы это не сделали, в 3 (три) для владелец жилья должен сам вас зарегистрировать. Если этого не произошло, оба-два рискуют деньгами до 5000 (пять тыщ) рублей штрафа.
Все остальное законопослушных граждан не касается.

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

http://v-fedotov.livejournal.com/137794.html

original post http://vasnake.blogspot.com/2013/01/blog-post_10.html

2013-01-09

На GitHub-е

В конце прошлого года GitHub опубликовал статистические данные.

Очень интересно.

Например, топ 10 проектов 2012 года, набравших наибольшее количество звездочек:

These projects, all created this year, attracted the most stargazers:
  1. FortAwesome/FontAwesome: The iconic font designed for use with Twitter Bootstrap
  2. textmate/textmate: TextMate is a graphical text editor for OS X 10.7+
  3. meteor/meteor: Meteor, an ultra-simple, database-everywhere, data-on-the-wire, pure-Javascript web framework
  4. ivaynberg/select2: Select2 is a jQuery based replacement for select boxes
  5. jkbr/httpie: HTTPie is a CLI, cURL-like tool for humans
  6. maker/ratchet: Prototype iPhone apps with simple HTML, CSS, and JS components
  7. twitter/bower: A package manager for the web
  8. Kicksend/mailcheck: Email domain spelling suggester
  9. jmechner/Prince-of-Persia-Apple-II: A running-jumping-swordfighting game for the Apple II from 1985-89


А я и не знал, что Textmate выложили в опенсорц.

Или еще, топ 10 проектов по количеству привлеченных разработчиков (над чем работаем :)

these projects attracted the highest numbers of unique contributors:
  1. mxcl/homebrew: The missing package manager for OS X
  2. rails/rails: Ruby on Rails
  3. CyanogenMod/android_frameworks_base: Android base frameworks
  4. CocoaPods/Specs: CocoaPods (cocoapods.org) specifications
  5. symfony/symfony: The Symfony PHP framework
  6. zendframework/zf2: Zend Framework
  7. openstack/nova: OpenStack Compute (Nova)
  8. saltstack/salt: Central system and configuration manager for infrastructure
  9. TrinityCore/TrinityCore: TrinityCore Open Source MMO Framework
  10. github/hubot-scripts: optional scripts for hubot, a customizable, kegerator-powered life embetterment robot


Меня удивило наличие Цианогена в топ 3. А еще Хьюбот, вернее плагины к нему, попал в десятку.

Короче, рекомендую ознакомиться.


original post http://vasnake.blogspot.com/2013/01/github.html

Data mining

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

Вот о пользе отзывов я и хочу сказать. Не каждому слову верь!

Вот, почитайте некоторые варианты:

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


Как жить? Налаживать связи с толковыми доверенными людьми, обучаться добыче данных и отсеиванию мусора. Или надеяться на авось, тоже вариант.

original post http://vasnake.blogspot.com/2013/01/data-mining.html

2013-01-07

Визуализация

Чиста дневниковая запись. Сегодняшнее.

Новогодние каникулы, до 9 января всё глухо.

А я себе домой купил МФУ HP LJ 1132 — лазерный принтер и планшетный сканер в одном флаконе. Как обычно, к принтерам HP в коробку не кладут интерфейсный кабель, надо брать отдельно. Некоторые об этом не знают и страдают батхертом из-за невозможности начать печатать без дополнительного похода в магазин. Не то, чтобы дома нужен был принтер или сканер, но иногда удобно. А то раза три в году приходится таскать распечатки из конторы, вместо того, чтобы дома, не вставая с кресла, распечатать пару бумажек.
Лазерный, чтобы чернилки не сохли. HP, потому как уважаю я изделия этой конторы за живучесть.
Вообще, заметно, как за последние 10 лет подешевела и ускорилась печать. Этот HP LJ 1132 стоит заметно дешевле 200 долларов, отпечаток не дороже 1.5 рублей; устройство печатает и сканирует настолько быстро, что можно не успеть поймать отпечатанный лист (в правой руке мышка, щелк по кнопке «печать» и уже надо тянуть руку к выходному лотку). Если открыть крышку, то возникает ощущение пустой коробки, настолько вся внутренняя механика и электроника компактна.
А цветной лазерный принтер можно купить дешевле 300 долларов. Соблазн.


Что проще, вручную нарисовать диаграмму или записать ее в виде текста отрендерив спецтулзой? Глядя на галерею, часто кажется, что текстом проще:
Graphviz - Graph Visualization Software
А тут каталог подобного софта:


Поскольку Земсков не наступает на грабли дважды, его клиентам теперь будет непросто внести правки в проект ремонта:
точка зрения Алексея http://youtu.be/m7hN6mYshD8
точка зрения анонимного заказчика http://nash-remont.livejournal.com/

Если допустить, что оба персонажа искренни, то ситуацию можно вписывать в учебники по когнитивной психологии, коммуникации и менеджменту.

original post http://vasnake.blogspot.com/2013/01/blog-post_7.html

2013-01-05

Книжка

Занятная книжка попала в руки
Yakov Fain
2008

It’s called “Enterprise Software without the BS “. This one is not technical, but covers such topics as writing resumes, looking for a job, working as an employee or a consultant, your salary/rate, political stuff, outsourcing, and more. This e-book is available as a free download.


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

original post http://vasnake.blogspot.com/2013/01/blog-post.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) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) 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) Klaipeda (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) купи/продай (9) Photo (8) 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)