Python

Это невозможно понять, это надо запомнить

Из анекдота

Какое же дерьмо разочарование этот ваш Python. Отступы для организации вложенности блоков, двоеточия после конструкций условий, циклов, объявления функций. Обязательный пробел после двоеточия при объявлении элементов ассоциативных списков и (обязательное же!) его отсутствие перед. Почему вокруг знака равенства при присваивании должны быть пробелы, а при передаче именованных переменных — нет? Зачем две пустые строки до и после функции? Какой-то пробельный фетишизм, право же. PEP8? «Читай PEP 8 — пиши код как ван Россум»? Вы еще и идолопоклонники?

Объявление функции с переменным количеством аргуметов в стиле (*args) и функций с именованными переменными в стиле (**args). Встроенные в язык манипуляции множествами и отдельная внешняя библиотека для разряженных массивов.

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

Аргументы в функцию передаются по ссылке или по значению? Ах, зависит от типа? В языке с динамической типизацией, ага…

Филосовия Python начинается с фразы «Красивое лучше, чем уродливое». Ну вот — где здесь красота? Видимо, она выше моего эстетического понимания. Сильно выше.

И это третий по популярности язык программирования? Первые два не берем — Java традиционный язык «кровавого энтерпрайза», так сложилось, а C — опора всея Linux. Но Python? Почему? Как?!…

Чего-то в этом мире я крупно не понимаю.

Про SQL

В запросах полям можно назначать синонимы. Но по ним нельзя сортировать.
select name as username from users order by username
Стандарт говорит нам «используйте реальные имена полей, потому что на момент сортировки синонимы еще не определены».

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

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

Про Lua

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

Профессор Роберту Иерусалемски написал инструмент для внутренних проектов лаборатории компьютерной графики. Он не против его использования всеми, занимается его популяризацией — пишет книги, участвует в конференциях, взаимодействует с сообществом — но не желает выпускать его из рук. В результате у нас есть справочник по языку, который может быть переведен совершенно свободно, и есть книга, защищенная авторскими правами и не может из-за этого быть переведена силами сообщества. На русский язык существует лишь один перевод 3-го издания и никаких надежд на переводы следующих. Локальные сообщества стихийно вспыхивают и гаснут, ну или превращаются в сообщества более специализированных продуктов на основе Lua. Проекты создаются, поддерживаются энтузиастами и тоже гибнут вдали от «центра». Неудивительно, что сейчас разработка на этом языке подобна «бойцовскому клубу», первое правило которого «никому не говори о бойцовском клубе». Есть масса людей, занимающихся этим языком, масса продуктов — от роутеров Mikrotik до Adobe Lightroom и игр WoW и Angry Birds — где они внедрены в качестве внутреннего языка программирования, но нет ни единого сообщества, ни даже ресурсов, объединяющих всю эту разношерстную аудиторию.

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

Грозовые тучи

Облачные файловые хранилища это надежно и удобно. А вот с конфиденциальностью в последнее время стало сильно хуже. «Большие братья» по всему миру как-то вдруг озадачились тремя основными вопросами геополитики — переговорами террористов, детской порнографией и авторскими правами. И все «облака» так или иначе вынудили раскрывать «государевым людям» информацию пользователей. Что незамедлительно сказалось на текстах TOS («Term of Service» — условия предоставления сервиса). И небо над облачными сервисами перестало быть безоблачным.

Читать далее Грозовые тучи

LastPass всё?

Отказ LastPass блокирует работу, раздражает и заставляет задуматься о том, что отдавать свою информацию сторонним сервисам глупо.

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

Урок усвоен…

Ubuntu Phone

Пользуясь тем, что один из двух официально поддерживаемых Canonical телефонов — мой Nexus 4, установил Ubuntu на телефон. Первое впечатление — кто сказал, что это стабильная версия? Дело даже не в том, что он не запоминает пароли WiFi, не синхронизирует контакты с подключенной учетной записи Google и что на нем только английская раскладка в клавиатуре. Это все решалось бы при наличии возможности устанавливать программное обеспечение из менеджера пакетов. Так ведь даже его нет. То есть какая-то странно работающая оболочка и все. ВСЁ!

Снес к чертовой матери. С большим сожалением, да — но снес. Рано еще задумываться об ubuntu-фоне. Его на сегодняшний день просто нет.

Opera всё

Никогда не был поклонником «альтернативного браузера» — это, кстати, они сами себя так позиционируют — но всегда относился с уважением. Самый быстрый рендеринг, многооконный интерфейс, менеджер паролей, жесты мышью, синхронизация настроек, истории и открытых окон, компрессия трафика, продолжение загрузки после обрыва, скачивание из torrent-сетей. Сейчас это в порядке вещей и никого не удивляет, но было время, когда все это было только в Opera. За это ее любили и прощали даже ошибки прорисовки страниц, фатальный недостаток для любого другого браузера. Ничто не предвещало…

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

Однако как-то незаметно формулировка «перейдем на WebKit» превратилась в «перейдем на Chromium». А это уже не только движок, но и интерфейс. Сообщество насторожилось — если Opera превратится в один из «хромированных клонов», то это будут ее похороны.

Подтверждая сентенцию о том, что пессимиста невозможно огорчить, Opera оправдала самые худшие опасения. Новая версия Opera уже даже не Chromium. Пропало все, вплоть до закладок — вместо них «улучшили» экспресс-панель, добавили невнятную копилку и возможность группировки картинок сайтов по папкам. Зато сохранили жесты мышью, Opera Link и режим сжатия трафика. В целом, конечно, утешение слабое. Opera таки пополнила ряды «хромированных клонов» — Яндекс.Браузер, Интернет@mail.ru, Рабмлер Нихром, QIP Surf и прочих Flock-ов. И это действительно похороны — той Оперы, которую так любили поклонники и так уважали противники. Светлая ей память…

qBitTorrent

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

Всем был хорош uTorrent, «(очень) маленький клиент BitTorrent», быстрый, удобный, понятный. Пока его не купили люди из BitTorrent Inc., которые сделали его официальным torrent-клиентом…

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

qBitTorrent

qBitTorrent сделан как OpenSource-альтернатива uTorrent. С интерфейсом и возможностями, как у uTorrent-а. И еще — кроссплатформенный. Кроме Windows поддерживается еще Linux (пакеты для уймы дистрибутивов или сборка из исходников), MacOS, FreeBSD и даже OS/2.

mySQL GUI умер, да здравствует mySQL GUI

Собственно, я полез на обновлениями из-за постоянно «забываемых» паролей, а оказалось…

mySQL GUI Tools (Administrator, Query Browser, Migration Toolkit) больше не поддерживается на родном сайта. Вместо него предлагается новый продукт, mySQL Workbench — интегрированное решение, заменяющее прежний набор и дополняющее ERP- функциями.

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

А еще он умеет ходить по SSH — как с паролем, так и по ключу.  И — да, пароли помнить он таки научился :)