Архив за Апрель 2008

FolderShare и PowerFolder: синхронизация общих файлов

До перехода на Linux для синхронизации общих файлов на офисном и домашнем компьютерах я использовал сервис FolderShare. Использовать очень просто — регистрируемся, качаем и устанавливаем клиентскую программу. Затем определяем, какие папки будут общими и где они находятся на каждом из компьютеров. Всё, теперь компьютеры на которых запущены клиенты FolderShare, будут автоматически синхронизировать указанные папки. Друг с другом компьютеры связываются через центральный сервер, поэтому отсутствие реального ip-адреса или наличие файрвола не помеха.
Такой способ переноса документов небольшого размера оказался самым удобным — никаких лишних движений совершать не надо. Поправил дома список дел в ListPro — на работе файл тоже обновился.
Увы, приобретение компанией Microsoft этого сервиса не пошло ему на пользу — анонсированный Linux клиент так и не вышел (а для MacOS есть). Под Wine его также не удалось запустить.
Пришлось искать альтернативу. И альтернатива нашлась, да еще и с более широкими возможностями!
Прошу любить и жаловать — PowerFolder.

Клиент PowerFolder написан на Java, поэтому работает везде, где есть Java 5 — в частности, и под Windows, и под Linux. Клиенты PowerFolder образуют p2p-сеть, что позволяет работать и без центрального сервера. Хотя сервер существует и может использоваться в случае, когда оба компьютера не допускают входящих соединений.
Адреса компьютеров, с которыми необходимо установить соединение, можно указать явно. Также можно ограничить соединения только локальной сетью.
За отдельную плату можно получить место на сервере для резервного копирования данных. Шифрование передаваемых данных и отсутствие ограничений на объем файлов есть только в платной Pro версии. Честно говоря, возможностей Basic мне более чем хватает.»

12.04.2008  Метки: , ,   Рубрики: Интернет, Программы  3 комментария

Ruby: рассуждения о наследовании

Конечно, классы в Ruby открыты для расширения. Но порядок интерпретации влияет на результат. Пример:

class A
end
 
class B < A
end
 
class B
   def m
   end
end

Так работает. Но если поменять местами два последних определения, то возникает сообщение об ошибке: superclass mismatch for class B (TypeError), поскольку указать базовый класс можно только при первоначальном определении класса.

Вообще, возможность добавления методов в существующий класс заставляет переосмыслить роль механизма наследования. На первый взгляд, в Ruby с открытыми определениями классов, динамической типизацией и duck typing наследование не требуется!

Программисты, «думающие» на C++/Java часто используют наследование не по назначению. Обсуждая с коллегой вопрос «зачем нужно наследование?» я наткнулся на быстрый ответ: для переиспользования кода. В этом и есть корень зла — при отсутствии нормальных механизмов повторного использования кода в этом качестве начинают использовать наследование. Но в Ruby-то такие механизмы есть. Так зачем наследование?

Похоже, что в Ruby и подобных языках наследование вернулось к своему первоначальному назначению — выразить намерение программиста, что один тип является подтипом другого. Кстати, если вспомнить принцип подстановки Лисков (Liskov substitution principle), то становится понятно, что подтип (subtype) тесно связан с подстановкой (substitution).

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

07.04.2008  Метки:   Рубрики: Разработка, Языки  4 комментария

Сборка xneur & kxneur

В конце марта обновился xneur (автоматический переключатель раскладок клавиатуры для Linux, аналог Punto Switcher). И на моем ноутбуке с Kubuntu 7.10 начал падать при старте. Постоянные пользователи Punto Switcher, которым случается садиться за компьютер, на котором эта программа не установлена, меня поймут — ломка страшная, количество ошибок из-за непереключенной раскладки просто зашкаливает.

Через пару дней произошло еще одно обновление, но работоспособность программы не восстановилась. Вчера терпение мое лопнуло и я решил собрать xneur из исходников, надеясь, что последняя версия окажется рабочей. Инструкции по сборке на сайте xneur оказались несколько неполными и неточными. Далее — последовательность действий, которая привела меня к успеху.»

06.04.2008  Метки: , ,   Рубрики: Программы  Комментариев нет