Pull to refresh

Comments 49

UFO just landed and posted this here
> жена XXXX посылает файл себе (или корреспонденту) по почте.

Я бы на Вашем месте заменила второе слово. Надеюсь, Ваша жена Хабра не читает и не обиделась :)
Спасибо за замечание, но тупо характеризует в данном случае не ее интеллектуальный уровень, а бесхитростность алгоритма :) В общем, обижаться ей не на что.
По-английски, в данном случае написали бы «just», не так ли? :-)
Да, пожалуй :)
«She just emails» или «she simply emails». Ну в общем что-то в этом духе, ага :)
Ммм, синатра, любимый фреймворк для небольших задачек:)
Намого приятнее Кампинга, там все в одной куче.
Еще Haml намного удобнее чем erb, лучше сразу его использовать.
Да, я как раз думал об этом, спасибо за последний толчок. Видимо, следующая статья выйдет уже с рассказом про Haml.
А подскажете пару ссылок, где можно подробнее ознакомится с Синатрой (желательно на руссом)? Их оф страничка в данном плане даже мение информативна нежели эта статья.
Боюсь, что не подскажу, так не знаю их таких. Для написания своих статей я использовал — оффсайт Синатры, пару тематических постов в блогах (искал под конкретные задачи в гугле запросами вида «sinatra authorization» и «sinatra configuration») и исходниками самого проекта. На русском не видел вообще ничего.

На самом деле, большая часть возможностей Синатры уже описана в двух статьях (в третьей доведу полноту до 90%) — дело в том, что Синатра это действительно небольшой фреймворк, который не так уж много умеет «из коробки».
Собственно его аскетичность меня и привлекает. Спасибо за ответ и за статьи.
Синатра отличный минималистичный веб-фреймворк, а у вас вышел замечательный код-малютка :)
Замечательно! Спасибо за ещё одну отличню идею использования сервера!
Для внутреннего обмена файлами вариант типа SAMBA не рассматривали?
Может работать с разными системами.
Основной плюс: файл не надо скачивать, можно открывать прямо с сервера.
Если фактор безопасности важнее, то можно использовать SSHFS. Вещь пришла из мира unix, но есть и виндовые клиенты. Использование тоже самое как samba, только безопаснее.
Да самба самое то для разных ос, и настраивать практически не надо. У нас файлопомойка на работе на самбе крутится. Клиенты — win/mac/linux. Все довольный. Единственное, бесят метафайлы оставляемые макос.
Но с ней иногда бывает гемор, иногда сильно разные клиенты не могут договориться. Например, были проблемы mac ↔ vista.
Just for fun: под не-виндой создайте папку com, lpt,…
Винда при этом сходила с ума (сервер стоял именно на винде).
Самба между домашней системой и, скажем, рабочим компьютером? То есть вы предлагаете выставлять самбу наружу — на просмотр всему честному интернету?
Дома, локально, самба, разумеется работает (и, кстати, хорошо работает в связке Mac OS + XP + Ubuntu).
Что же касается SSHFS, то возражение простое: нельзя просто взять LiveCD винды и скачать файл через SSHFS, а в моём варианте — можно.
Что касается безопасности, то надо смотреть в каждом конкретном случае: кто ходит, кто не ходит.
Смысл не в том, чтобы можно было просто скачать файл на LiveCD — особенно если винда, то она совсем голая — ничего на ней толком не сделаешь с файлом. Смысл в том, чтобы с файлом можно было как-то работать. А если что-то устанавливать, то можно и SSHFS установить.
Спасибо за наводку — конкретно про Live Mesh не слышал.

Но это не конец треда: Live Mesh и любые другие онлайновые сервисы вынуждают меня сначала закачивать файл к ним, а потом скачивать файл от них. Зачем два раза гонять даже двадцатимегабайтный файл через весь интернет? :)
>Live Mesh и любые другие онлайновые сервисы вынуждают меня сначала закачивать файл к ним, а потом скачивать файл от них. Зачем два раза гонять даже двадцатимегабайтный файл через весь интернет?
Почему же? У Live Mesh замечательная P2P синхронизация, так что через инет ничего гоняться не будет. А с Live Desktop папки можно вообще не синхронизировать. Народ тестировал это на десятках гигабайтов.
А как я передам файл своему знакомому?
Если надо постоянно обмениваться файлами со знакомым, можно просто завести «общий» аккаунт Live ID; указать его в Live Mesh на компьютерах, которые нужно синхронизировать; пометить какую-нибудь папку, как синхронизируемую. После этого, всё, что туда будет кидаться на одном из компьютеров, будет появляться и на остальных.
Вместо общего аккаунта, можно просто открыть доступ к папке другому пользователю Live Mesh. При этом можно установить его права (Owner, Contributor или Reader).
Если знакомый хочет получить файлы, но не хочет/может установить Live Mesh, файлы можно забрать с Live Desktop.
Вот это уже интереснее, но если надо разным знакомым и довольно случайно распределенным (во всяком случае, минимум половина из них не захочет ставить какие-либо клиенты)
Замечательная статья. Обязательно продолжайте писать!
пользую для домашней файлопомойки FreeNas там тебе и веб-сервер и ftp и торренты и ssh…
www.freenas.org
Тоже интересный вариант, спасибо. Но, как я понял, FreeNAS — это именно ОС для организации NAS сервера. У меня же сервак более «интеллектуален» — он и видео пережимает, и некоторые мелкие веб-приложения хостит, и iTunes сервером является. Наверное, на FreeNAS весь этот функционал тоже можно надеть, но я не настолько хорошо знаком с FreeBSD (во всяком случае, хуже, чем теперь с Sinatra), чтобы экспериментировать :)
я не все фичи конечно перечислил, но то что там есть меня устраивает. есть там и сервер для мультимедии.
да это ОС, которая крутится у меня на стареньком компе ( куплен за 40евро) И управляется через веб браузер — какие папки расшарить по самбе, каких юзеров завести, веб-морда для управления торрентами и прочее-прочее.
Я согласен, что интересно что-то самому поковырять, но когда хочеться поставить и забыть, то ИМХО вполне неплохой вариант. Я и сам не знаю FreeBSD но для пользования встроенными возможностями оно и не нужно.
Поковырять я как раз очень люблю :) Но вам тот же ответ, что и одному из комментаторов выше: к ssh из под винды нельзя подключиться без спец-софта, а samba открывать ой как не хочется. Хочется иметь возможность переслать по аське ссылку на файл и скачать его прямо по ссылке.
Ещё как вариант использовать абсолютно бесплатную HTTP File Server
Настраивается очень просто, возможностей уйма, уметь программировать не надо :)
Вот же ж блин! =) Я ведь знал про эту софтину и когда-то ее даже использовал, но когда мне возникла потребность, HFS не пришел ко мне в голову. Только под Unix он через Wine, а я не люблю Wine :)
Статья показалась интересной, продолжайте :)
Только код, хотя бы в
<pre>
упаковать, а то так тяжело читать…
Просто великолепно! Очень полезные новые (для меня) знания, очень хорошо изложены. Огромное спасибо! Ждём ещё статей. :-)
…сейчас я пишу на Ruby on Rails, но он несколько монструозен для такой задачи…
Так уж прям и ни слова ;)
Опаньки, не заметил.
Я имел в виду следующее: статья полезна уже тем, что формирует представление о Ruby как о самостоятельном языке.
Ruby очень даже самостоятельный язык и не только для разработки веб-приложений. Он очень полезен в быту продвинутого Unix-пользователя — на нем очень приятно и легко писать служебные скрипты и даже небольшие приложения (в том числе и сетевые). Возможно, когда-нибудь у меня дойдут руки и до популяризации этого аспекта. (Ba)sh — не единственный удобный инструмент юниксойда :)
хотелось почитать легкую статью про то как вы тестировали ваш фунционал, ещё было бы отлично увидеть бэнчмарки…
Вот это уж будет непременно :) Но, возможно, уже в третьей части: сейчас пишу вторую и там уже набралось немало текста.
«По непонятным мне причинам...» — причины как раз ясны. К сожалению Camping почил, и его больше не разрабатывают. Все «за» — за Синатру, которую, кстати, даже сам DHH пиарил в Тви.
Этого я не знал. К моменту выбора фреймворка я просто знал, что есть Camping, Rack и Sinatra. Что с ними происходит, какие они изнутри и что рекомендуют гуру в лице DHH я был не в курсе.
При аплоаде файла не происходит сохранение в БД даты аплоада, но в шаблоне делается попытка её вывести и поэтому возникает ошибка. Меня, как новичка, это сбило с толку. Надо бы добавить что-то вроде :created_at => Time.now к операции создания файла.
require 'dm-timestamps' # автоматическое проставление времени создания и обновления для записей


Читаем внимательнее код, который копи-пастим ;)
Ну, так оно не работает! :) По крайней мере у меня
Видимо, стоило именно об этом написать. Тогда мне не пришлось бы перечитывать свой код. Возможно, в DataMapper что-то поменялось с тех пор. Могу предложить покурить доки датамаппера. Ну или отказаться от этого и проставлять Time.now в ручную :)
Огромное спасибо за материал. Рельсы не осилил, а синатра подошёл как раз. Статья относительно старая, произошло немного изменений в инструментах, описываемых здесь, поэтому опишу те проблемы, с которыми я столкнулся. Возможно, это поможет кому-то кто будет осваивать Sinatra и DataMapper именно с этой статьи.

1. Чтобы заработал метод auto_upgrade!, необходимо добавить в начало файла require 'dm-migrations'
2. Использование хеша параметров в таком виде params['file'][:filename] у меня не заработал. Оказалось, достаточно указать название параметра и всё: params[:filename]
3. Запись создания счётчика сократилась: property :id, Serial
4. Не забывайте, что для работы с различными базами данных необходимы соответствующие адаптеры, например: dm-sqlite-adapter, dm-mysql-adapter
5. Я сначала не мог сообразить, как использовать MySQL-базу по паролю и имени. Делать надо так: DataMapper.setup(:default, 'mysql://user:password@localhost/dbname')

И вот ещё кой-какая подсветка Haml для Kate: http://haml.googlegroups.com/web/haml_highlighting_for_kde-1.1.tar.gz
Спасибо вам за дополнения!
Sign up to leave a comment.

Articles

Change theme settings