|
Цифровые технологии, программирование и сайтостроительство Полупрофессиональный подраздел. Подробное описание раздела находится в прикреплённой теме. |
|
Опции темы |
29.09.2009, 01:36 | #1 |
Шволочь. И провокатор.
Регистрация: 12.02.2006
Сообщений: 31,206
|
Руби с рельсами. Мелочи и вкусности
руби (ruby) эт такой язык, да.
а рельсы (rails) эт такой фрэймворк на таком языке. На ём сайты рисуют. Да, чтоб не пугать сразу - рельсы, они не только для вебизмов предназначены. Унутря у них неонка есть, вумные люди новичков пужать любят аббревиатурой, ага. Не буду нарушать традицию - неонку зовут ORM. Ну и - удобная система встроенных задач, возможность почти на лету менять структуру базы данных - позволяют делать числодробилковые бэкэндовые прикладухи в достаточно удобном окружении. Так, с введением фсё, выведение позжа.
__________________
... Survivors will be shot again. |
29.09.2009, 06:11 | #2 |
Мохнатый Красношёрстный
Регистрация: 01.04.2006
Адрес: Красноярск
Сообщений: 2,476
|
ORM упомянул, а REST фафсем вабыл, да-а-а?
Меня по осени с руби познакомили, очень и очень неплоха вещь. Правда не без недостатков, т.к. нагружает сервер нехило и документашка пока далека от полноты доков того же php или java. Позже один товарищ -- питонофил, рассказал, что есть питон на рельсах. Всё хочу поглядеть. |
29.09.2009, 12:35 | #3 |
Шволочь. И провокатор.
Регистрация: 12.02.2006
Сообщений: 31,206
|
А куда спешить т? до рестовских контроллеров сугубо посля мвц дойти можно, не раньше.
а, ну и да. про питон. Считаю - язык, использующий фрагменты оформления - отступы - в качестве синтаксиса - должен лежать на помойке рядышком с остальными брэйнфак языками, занимая место прям перед sendmail.cf. Прям перед - только потому, шо конфиг шлимыла так написан по ламерству автора, а питон явно с диверсионными целями писали.
__________________
... Survivors will be shot again. |
29.09.2009, 14:27 | #4 | |
работаем
Регистрация: 02.09.2009
Сообщений: 61
|
Цитата:
Питон на рельсах (как бы на рельсах) есть и зовут его Django. И на данный момент он кстати наиболее живо развивается. И работает он быстрее рельсов. Конечно он отличается от рельсов существенно, и по простоте разработки ничуть рельсам не уступает. На джанге кстати, сделан один из нагруженных проектов яндекса kuda.yandex.ru Руби меня впечатляет - очень гибкий дизайн языка, приятно работать, но есть одно но. Руби - богатый на синонимы язык (это его принцип наименьшего удивления) и это хорошо для одиночки, но плохо для командной разработки, ибо у каждого свои тараканы в голове и свой вкус и читать чужой код скажем так слегка непривычно. Кроме того, одни и те же конструкции-синонимы работают с разной скоростью (а разница местами ощутимая). Таким образом с точки зрения оптимизации, требуется выбрать ту конструкцию языка Руби, которая работает быстрее. Это одним махом уничтожает прелесть разнообразия синонимичных конструкций. Все равно придется из десятка способов построения того же цикла выбрать только один (самый быстрый) и стараться использовать его, если важна скорость исполнения. У питона подход диаметрально противоположный к руби. Всегда должен быть лучший способ сделать что-то. По этой причине синонимов среди языковых конструкций значительно меньше. Однако благодаря этому на свет появляется довольно неплохо оптимизированный байт-код. А поскольку этот байт-код еще и сохраняется в отдельном файле, то со второго запуска скрипт работает уже без траты времени на компиляцию. Руби активно работает над тем, чтобы сделать так же, но и питон не стоит на месте. У питона есть psyco который делает его еще быстрее, местами соизмеримым со скоростью ява-машины. Сложный синтаксис Руби требует больше времени на поддержку, поиск багов, ресурсов на пред-компиляцию скрипта в байт-код. Так что при всей красоте Руби, и его рельсов, решения на питоне и джанго в частности выглядят в долгосрочной перспективе чуток поинтересней |
|
29.09.2009, 15:46 | #5 |
Шволочь. И провокатор.
Регистрация: 12.02.2006
Сообщений: 31,206
|
гг
Я таки кинусь кодом. хотя и рано. book.pages.count == "select count(*) from pages where pages.book_id = #{book.id}" book.pages.length - всегда равно количеству элементов в коллекции book.pages, которая вытягивается из базы выражением "select from pages where pages.book_id = #{book.id}" book.pages.size равнозначно предыдущему - если в модели book нет pages_count. если есть - количество страниц берется оттуда. Вот и все синонимы. В принципе - вот такие тонкости я и хочу в теме показывать. ps И да. Не надо рассказывать о сложностях ковырянья в чужом коде человеку, ежедневно читающему-правящему чужой код. Команда маленькая, всего пять программистов, ага. И сотня коммитов в день - простите - попроектно статистику не скажу, svn.
__________________
... Survivors will be shot again. |
29.09.2009, 17:43 | #6 | |
Мохнатый Красношёрстный
Регистрация: 01.04.2006
Адрес: Красноярск
Сообщений: 2,476
|
Цитата:
|
|
29.09.2009, 19:19 | #7 |
Шволочь. И провокатор.
Регистрация: 12.02.2006
Сообщений: 31,206
|
Реальная ситуация.
У меня таб = 2 пробела. Мне так удобно. У знакомого - 4 пробела. Исходник со смешанными( табы/спэйсы ) отступами приполз ко мне. После сохранения - модуль подох. Долго искали ошибку, ага. Отступы - это оформление. И исходник перееханный оформлятором - сделается красивым. Пробелы/табы - включались в код в брэйнфак языках - там им и место.
__________________
... Survivors will be shot again. |
29.09.2009, 21:10 | #8 |
Шволочь. И провокатор.
Регистрация: 12.02.2006
Сообщений: 31,206
|
Таки да.
Продолжим с выведения. Из ruby. руб очень забавный язык. В нем - всё объект. Даже отсутствие объекта - объект, который честно ответит на вопрос nil.nil? => true. Это - стоит помнить. Да, про дефолтно привычные булевы операции... 0 => true. "" => true. В булевых операциях эквивалент false лишь nil и false. Это сложно понять. Надо просто запомнить. Дока на руби, как ни удивительно - http://www.ruby-doc.org/ основная коллекция. Для простоты - http://www.ruby-doc.org/docs/ProgrammingRuby/ Со вниманием продолжим дальше, угум
__________________
... Survivors will be shot again. |
30.09.2009, 07:26 | #9 | |
Мохнатый Красношёрстный
Регистрация: 01.04.2006
Адрес: Красноярск
Сообщений: 2,476
|
Цитата:
|
|
30.09.2009, 07:38 | #10 |
Мохнатый Красношёрстный
Регистрация: 01.04.2006
Адрес: Красноярск
Сообщений: 2,476
|
Кстати, Afa, может сможешь подсказать. Какие есть готовые cms'ки, написанные на руби. Хочется что-нить вроде wordpress'а.
|
30.09.2009, 12:47 | #11 |
Шволочь. И провокатор.
Регистрация: 12.02.2006
Сообщений: 31,206
|
проще всего глянуть на typo. а так - зависит от того, что нужно - для вики одно, для блога другое, тупо файлами поуправлять третье. серебряной пули не существует. для себя взял привычку ядро рисовать сам а функционал лениво собирать плугинами и гемами - быстрее получается
__________________
... Survivors will be shot again. |
01.10.2009, 07:54 | #12 |
Мохнатый Красношёрстный
Регистрация: 01.04.2006
Адрес: Красноярск
Сообщений: 2,476
|
Ещё вопрос. Afa, а как из руби грамотно/правильно работать с коммуникационным портом. С модемом там, или ещё каким железом на нём висящем?
|
01.10.2009, 12:36 | #13 |
Шволочь. И провокатор.
Регистрация: 12.02.2006
Сообщений: 31,206
|
__________________
... Survivors will be shot again. |
02.10.2009, 08:14 | #14 |
Мохнатый Красношёрстный
Регистрация: 01.04.2006
Адрес: Красноярск
Сообщений: 2,476
|
Пасиб, думаю сойдёт. Допаяю железяку, опробую библиотечку в деле. Если хорошо потянет, можно будет руби уже в практических задачках применять.
p.s. что мне понравилось в руби, так это соглашение об именах. Если идентификатор заканчивается на ? -- то он возвращает булевское значение. типа person = new Person("Vasya", "Pupkin") . . . . . if (person.has_money?) . . . Если ! то меняет состояние объекта. Правда это, как я заметил, не строгое правило, шо, на мой взгляд, не есть гут. |