Про книгу Майкла Нейгарда «Release it!»

Release it!

На днях дочитал замечательную книгу Майкла Нейгарда, которая в переводе называется «Release it! Проектирование и дизайн ПО для тех, кому не всё равно». В оригинале книга имеет название «Release it! Design and Deploy Production-Ready Software», и знаете, русскоязычный вольный перевод названия лучше отражает суть книги, по крайней мере развертыванию (deploy) приложений на сервере посвящена лишь одна последняя (из 18) глава.

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

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

Читать далее…

Tasks. Программа для хранения списка дел под Android

Tasks. Программа для хранения списка дел под Android

Когда-то давно я писал про такую замечательную программу для хранения списка дел под Android как DGT GTD, которой я пользовался больше двух лет, периодически поглядывая на другие подобные программы, но все они были не настолько удобные, как эта. В принципе, она меня практически всем устраивала кроме одной мелочи. Дело в том, что в свое время после прочтения книги Дэвида Аллена «Как привести дела в порядок», который и создал принцип GTD, я вдохновился идеей разделения задач на сроки выполнения, когда выполнение каких-то задач намечается на определенную дату, но другие задачи помещаются в папку «Сделать в ближайшее время» или «Сделать когда-нибудь». Вот эта папка «Сделать в ближайшее время» очень помогает в выборе того, за какую задачу взяться в данный момент или какие задачи запланировать себе на завтра. Поэтому хотелось бы, чтобы такие задачи всегда отображались в виджете на экране телефона сразу после задач, запланированных на определенную дату. К сожалению, виджет DGT GTD позволяет отображать или задачи из определенной папки, или задачи, которые выполнение которых запланировано на ближайшее время.

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

И вот тут мне попалась бесплатная программа с «оригинальным» названием Tasks с припиской «Astrid To-Do List Clone». Особенно в ней подкупило то, что это программа с открытыми исходниками, которые можно скачать с github. Как я понял, исходный Astrid — это программа для хранения списка дел, которую развивал Yahoo!, но несколько лет назад проект закрыли, хотя ее исходники также можно найти на github.

Читать далее…

OutWiker 1.9.0.776 (unstable) с новыми викикомандами для таблиц

OutWiker 1.9.0.776 (unstable) с новыми викикомандами для таблиц

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

Читать далее…

Процесс тестирования OutWiker

Процесс тестирования OutWiker

А покажу-ка я как тестируется OutWiker. На данный момент к OutWiker имеется 2722 теста. А завтра будет новая версия.

 

Новая версия OutWiker 1.9.0.774 (unstable)

Новая версия OutWiker 1.9.0.774 (unstable)

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

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

В посте месячной давности про версию 1.9.0.772 я писал, что OutWiker при проверке орфографии работает не только со словарями из папки spell, но и с пользовательским словарем custom.dic, также расположенном в папке spell в папке с настройками пользователя, и обещал сделать возможность его пополнения из самой программы OutWiker. В версии 1.9.0.774 я это обещание выполнил. 🙂 Пополнять этот словарь теперь можно двумя способами: либо через контекстное меню, либо через окно настроек.

Читать далее…

Рассказ о том, как я Windows 10 ставил

Рассказ о том, как я Windows 10 ставил

Решил я сегодня все-таки установить Windows 10 поверх Windows 8.1 на своем десктопном компе. Обновление системы через Windows Update мне так и не прилетело (наверное, Сатья Наделла обижается, что Винду я запускаю от силы раз в месяц, и считает, что мне пока Windows 10 не положена), поэтому я пошел напрямик — скачал образ диска с сайта Microsoft, благо это теперь можно сделать, примонтировал его через виртуальный DVD и запустил setup.exe. Установщик, чуть пошелестев хардом радостно сообщил, что он не только сохранит мои данные и настройки, но еще и весь софт останется на своем месте. Ну что ж, нажимаю кнопку Install и отсаживаюсь на диван читать книжку и наблюдать за установкой удаленно. 🙂

Первая фаза установки прошла без проблем, установщик перезагружает систему, чтобы после перезагрузки продолжить свое дело. Сначала все было хорошо. Поскольку у меня кроме Винды установлена еще и Ubuntu, то я вижу знакомый GRUB, выбираю Windows 8, который уже можно назвать Windows 9, поскольку он уже не 8, но еще не 10, и запускается вторая фаза установки с огромным индикатором прогресса.

Мда, прошли времена, когда пользователя развлекали установкой, которой начиналась с фразы «Откиньтесь на спинку кресла…» Теперь на экране было только белое кольцо, которое постепенно окрашивается в голубой цвет (нет ли здесь пропаганды сами знаете чего со стороны госдепа?) с процентами. Ровно на 30% установщик решил перезагрузиться. Ну что ж, имеет право, обновление системы — дело сложное, хотя те же Линуксы обновляются с одной единственной перезагрузкой. Тянусь к клавиатуре, чтобы успеть в загрузчике опять выбрать Windows, и офигеваю — вместо GRUB я вижу черный экран с надписью

Error: unknown filesystem.
grub rescue>

Нет, честно говоря, к тому, что Винда попортит загрузчик я был готов, все-таки в Microsoft всегда считали, что кроме Windows других операционных систем на свете не существует, поэтому я не сильно расстроился, а полез с телефона читать, как восстанавливать GRUB, я знал, что это делается не сложно, приходилось это делать во время неудачных обновлений Ubuntu древних версий, когда у меня еще очень хитро были перемешаны разделы на двух хардах. Правда, обычно я это делал через загрузочный диск Ubuntu, а сейчас хотелось пойти более хардкорным путем и восстановить через grub rescue, вроде теоретически это делается еще проще. Теоретически.

Читать далее…

Новая статья про оформление графиков в Matplotlib

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

annotate_02

Новая статья «Как рисовать гистограммы в Matplotlib»

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

bar_07

OutWiker 1.9.0.772 (unstable) с проверкой орфографии

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

outwiker_spell

Читать далее…

Язык Go. Первые впечатления. Организация исходников

Язык Go. Первые впечатления. Организация исходников

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

Если кому интересно, то программа, которую я писал на Go (и продолжаю ее доводить до ума) предназначена для выковыривания из Википедии списка улиц Москвы с попыткой получить по ним информацию — округов и районов, где эти улицы проходят. Поскольку я периодически участвую в городских ориентированиях, то получение полного списка улиц, включая недавние переименования, для меня больной вопрос. Оказалось, что список улиц Москвы в Википедии достаточно оперативно обновляется, и там уже перечислены улицы, которых еще нет не то что в атласах (с атласами Москвы в последнее время вообще беда), но и на других официальных сайтах со списками улиц. К слову, на OpenStreetMap и Яндекс.Картах улицы тоже появляются достаточно оперативно, но там я не нашел способа получения списка улиц по округам и районам. Если кто подскажет, где можно найти полный такой список, буду благодарен.

Исходники программы streetlist лежат на github, там же есть и подробное описание программы с примерами ее использования.

Но вернемся к Go. Для тех, кто еще не слышал об этом языке, скажу, что это компилируемый язык со статической типизацией. Программы, написанные на языке Go являются полностью самостоятельными и не требуют от пользователя установки каких-то дополнительных библиотек, но при этом среда выполнения Go включает в себя сборщик мусора с подсчетом ссылок. В самом языке есть такое понятие как указатели, но они все обрабатываются сборщиком мусора, а арифметика с указателями не поддерживается. Язык является объектно-ориентированным, но объектная ориентация его несколько непривычная. Одной из особенностей языка являются так называемые горутины (gorutines) — что-то вроде легковесных потоков, которые можно делать в большом количестве, не опасаясь, что при этом просядет производительность, переносить их на реальные потоки будет среда выполнения Go.

Читать далее…