Листинг директорий на руби

Было дело, надо в одном проекте выводить список файлов лежащих в определенной директории, с возможностью их скачать, как говориться в натуральную величину. Это был мой первый кусочек кода написанный на ruby, а поскольку rails для меня тогда еще были не доступны, их фишками я не пользовался. Встречайте, чистый ERB:


<%
vendors = Hash.new { |hash, key| hash[key] = Array.new }
Dir.open('public/files').each do |file|

    # Заполняем хэш vendors файлами из директории, перебирая по очереди каждый из них
    next if file[-4..-1] != '.pdf'
    next if file =~ /^..?$/
    file.gsub!('.pdf', '')
    f = file.split(' ')

    # Разбиваем имя файла, получая необходимые логические части Прозводитель и Модель. 
    # Заполняем хэш полученными значениями.

    model = f[-1] # Пробельчик чик-чик
    vendor = f[0..-2].join(' ')
    vendors [vendor] << model
end
%>

<% for v in vendors.keys.sort do %>

<h2><%= v ></h2>
<ul><% for m in vendors[v].sort do %>
<li><a href=”/files/<%= v + ‘ ‘ + m + ‘ .jpg’ %>” target=”_blank”><%= m %>

<% end %>


<% end %> 

2 April 2009

Как видите, на Ruby можно тоже писать коряво, как на PHP :)

Project Management Step 1

Обнаружил в драфтах свою статью. Как-то получилось, что она не была опубликована своевременно, а сейчас я даже не знаю, что туда можно дописать. Поэтому публикую as-is, вдруг кому-то покажется интересным:

Сейчас популярно стали всякие Management-ы. Прямо как грибы после дождя растут: то time management, то money management, даже офис management встречается. А что люди в это понятие вкладывают? Просто умение организовать что либо – процесс работы, финансы. На мой взгляд всем этим management-ам адекватнейшим переводом будет “управление”. Вот и я столкнулся с проблеммой управления. Хоть у нас и не очень большая фирма, мы связаны с заказчиками, freelancer-ами, внешними сотрудниками, а значет без эффективного управления проектами организация данной связи может создать узкое место в построении бизнеса.
Вот сегодня, я и решил слегка улучшить внутриофисную коммуникацию. Ну, вернее не сразу улучшить, а посмотреть на перспективы. Для управления большинством проектов достаточно ручки и листочка бумаги, однако если в офисе люди работают в разное время, то короткими записками не обойтись, а цеплять к почте файлы по 60Мб достаточно муторно. Обратив свой взор на рынок програмного обеспечения для управления проектами, я понял что подобные приложения сейчас непишут лишь ленивые. Рынок переполнен разнородной информацией по данному вопросу и поэтому я обратился к ручке с бумажкой, чтобы сформулировать свои требования. Итого вышло:

  • Поддержка любого количества проектов (отличного от 1)
  • Возможность устанавливать статус проекта, раздавать задачи по конкретным пользователям
  • Возможность прицеплять файлы разного типа

Посоветовавшись с коллегами-программистами, я выяснил что есть хороший пакет написанный на языке C# для MS SQL Server-a. Gemini отличается от многих подобных продуктов тем, что предлагает не “вомпу в мешке”, а вполне лицензионную версию с ограничением на 10 пользователей. Чего нам в принципе достаточно на первое время.
Потратив кусочек своего рабочего времени на установку компонент: версия 2.1.1 потребовала .NET Framework 2.0 и MS SQL Server 2000, я принялся за борьбу с инсталлятором. Не смотря на то, что само приложение полностью локализованно, инсталлятор отличается исключительной англоязычностью, как интерфейса, так и мануала. Без бубнов конечно не обошлось, но в конце концов – все заработало очень сносно.

Дата написания: 27 Июня 2007 года.

MongoDB for Developers

Я пишу этот пост, потому что нахожусь в некотором экстазе от онлайн курса M101: MongoDB for Developers. Если вы вообще смотрите в мир NoSQL, то думаю это самое то, что нужно для того чтобы идти в ногу со временем. Вообще, я заметил что за прошедшие пару лет с окончания вуза я отучился учиться… чтоже Coursera, Udacity и другие ресурсы с Class Central помогут мне вернуться в строй.

Железные траблы Blackmagic

Вот, сегодня на работе на пустом месте нарисовались проблемы с картой для HDMI Capture. Нужно мне было поднять Blackmagic Intensity Pro для работы под Ubuntu 10.10 i386.

Пошел на сайт, скачал оттуда свежий пакет софта. Поставил desktopvideo-8.6.1-i386.deb и MediaExpress-3.0.3-i386.deb.

sudo dpkg -i desktopvideo-8.6.1-i386.deb
sudo dpkg -i MediaExpress-3.0.3-i386.deb

Все встало без проблем, а дальше никуда. Любая попытка запустить софт выливается в “No Blackmagic devices were found.”

В конце концов нашел солюшен, которым спешу поделиться с вами:

$ sudo vim /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vmalloc=256M"
$ sudo update-grub
$ sudo reboot

Хорошее место для рубиньюба

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

Уже второй раз в этом месяце, я попадаю в такое место, где нахожу очень подробную и интересную статью посвященную Ruby и написанную простым и понятным русским языком. Это личный блог Андрея Малышко, где он публикует свои заметки о Ruby и Rails и других вещах связанных с ними. И хоть на главной пока еще нет контента, я думаю вам стоит подписаться на rss фид, чтобы читать о разных полезных и интересных вещах.

Иногда они возвращаются

Привет, народ!

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

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