Подпишитесь на рассылку о самых интересных материалах в мире веб-разработки :)

Обертка для итератора


(Kvokka) #21

напрасно ты так :wink:
пользы от симбиан нет, но вот рекрутинговые цели проект может выполнить. тех, кто туда будет более или менее прилично контрибьютить вполне можно изи брать к себе

отчисление “охотникам за головами” за каждого кодерка тоже не маленькие, а тут от “просроченного” кода хоть какая-то польза.


#22

Ладно, двигаемся дальше. ))
Парсю твиты через API Twitter-a вот таким (примерно) образом:

@client.search("anekdotru", result_type: "recent").take(params[:number_of_tweets].to_i).collect do |tweet|
tweet.text.gsub("@anekdotru", "")
end
end

, где

params[:number_of_tweets].to_i

-по задумке, что-то вроде юзверского контрола, типа селекта или textarea, попросту говоря, число твитов, которые требуется спарсить. Без to_i рельсы возвращают ошибку no implicit conversion of String into Integer, что логично… вопрос лишь в том, нет ли здесь более корректного решения, кроме to_i ? или нормально? @kvokka , как думаешь?

P.S. Интересно, что в php подобного рода вопросов с формочками, радиоточками и селектами, как правило, не возникает.


(Kvokka) #23

если нет вопросов, это не значит что по-умолчанию будет все сделано идеально.
когда зенит-арену строили тоже вопросов не было ни у кого :wink:

из поправок- ты ДЕЙСТВИТЕЛЬНО хочешь глобально все заменять, а не заменить только 1, первый тег про анекдотру?.

так же, если params[:number_of_tweets].to_i # => 0 то вернется вся выборка или ничего? я б тут подстраховался.

ну и, конечно, если еще 1-2 таких нагромождения на @client, то это уже повод сделать свой декоратор на него и туда запузирить все. я хз что там еще будет, но скорее всего декоратору быть.


#24

порекомендуешь ли draper в этом контексте? или нет?

P.S. Что касается зенит-арены, вопросов там не было и нет, я считаю… полностью в духе современного отечественного MVC создана, ему же и соответствует, без никаких велосипедов… кабы не форс-мажор и непреодолимое стихийное бедствие в лице окаянных морских птиц бакланов, сто лет бы простояло на скрепах и скрижалях… ниче, теперь парочку минорных багфиксов (рефакторинг и декораторы опять же) на парочку же линардов, и все збс. :sunglasses:


(Kvokka) #25

порекомендую для начала SimpleDecorator :wink:
а вот потом уже, если такового не хватит, то уже придумывать что-то еще.


#26

ДОбавил парсер твитов и твиттер-бот, ретвитящий и лайкающий найденные по заданным хештегам твиты. И вот здесь уже в полной мере ощущаются не только лимиты твиттера, от которых ухожу в rescue (помогает, если на локалке), но и H12 free-акка Heroku (таймаут 30 секунд, и здесь уже все, финиш). В первом случае выводится соответствующее красивое flash-message, на бутстрапе и аяксе, и процесс продолжается, но как поймать и отобразить аналогичным образом break хостинга, пока что не понимаю… как принято говорить на SO, “I would appreciate any ideas”…


(Kvokka) #27

седлать обёртку, которая будет сделить за всеми твоими хостингами и управлять ими.
или уже заплатить хероку за второе ядро

второе дешевле и проще. время тех, кто может оркестрировать множество халявных дино на много дороже того, что просит хероку за сервис.

“все уже украдено до нас” (с)


#28

Склоняюсь понемногу к тому, чтобы сделать еще один акк на AWS под концепт этого проекта… щас тестирую фолловинг/анфолловинг, сразу затем весь инструментарий вкупе с авторизацией и ЛК выложу для бета-тестирования там, наверное. Heroku хорош, это бесспорно, но амазоновский VDS все-таки привычнее и лучше, особенно с AWS Free Usage Tier первый год.

“зато дешево, надежно и практично.” (с)

Кстати, что думаешь насчет дискуса на тему Why do Ruby on Rails professionals NOT use Scaffolding? вопрос имеет непосредственное отношение к теме беседы… nested_scaffold, beautiful_scaffold, etc, или стандартный рельсовый генератор; какие возникают ассоциации на предмет сказанного, позитив или негатив?


(Kvokka) #29

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

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

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


#30

гыгыгыгы, это да

У active_admin, если память не изменяет, какой-то пакет/зависимость имеется, который превращает контроллер, созданный скаффолдом, в пяток-десяток аккуратных строчек всего. Это коррелирует? и никакого мусора.

ваабще суперцитата. )))


#31

ага: https://github.com/activeadmin/inherited_resources


(Kvokka) #32

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


#33

не, он их перенес в active_admin, я помню… пришлось после установки active_admin вернуть новый короткий и очень красивый контроллер в первобытное состояние, т.к. требовалось дописать там кое-что, и х его знает, как это было сделать в коротком варианте. ))

Кстати, что думаешь насчет rescue, это ведь тоже по сути один из вариантов экстрима? Я понимаю, что свои exception handlers - нелучший способ работы с ruby, но попробуй предложи лучший, когда тебе из API Twitter, предположим, сыпятся напропалую ошибки Twitter::Error::NotFound, Twitter::Error::Forbidden, Twitter::Error::Unauthorized, и тому подобное? И даже на гитхабе разрабы рекомендуют rescue.

Вот как-то примерно так пробую извращаться…

begin
 unfollow.take(100).each do |line|
    client.unfollow(line)
    puts "unfollow: #{line}"
    sleep rand(1..15)
    end
    rescue Twitter::Error::NotFound
        puts 'Twitter::Error::NotFound'
    []
  retry
    end

и т. д и т. п


(Kvokka) #34

про rescue будут особые проблемы, если ошибка от унаследована от Exception, тк всплывать долго. а это норм. по скорости будет примерно как case/when, так что не вижу проблемы

экстрим начинается, когда какой-нить звездюк лепит местами просто raise без класса или указывает не ту ошибку что надо. и вот тогда начинается костыльное говно.

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


#35

хммм… трабла? вроде код ни при чем; или гем барахлит, или API… на SO пока тоже чешут репы в раздумьях, а это необычно. В апстрим, что ли, зафиллить.


(Kvokka) #36

лезь руками в гем и копай
при это,из реализации @arr в твоем примере это Set.new, а не []


#37

хм. из-за возможности обойтись без .uniq , или по другим причинам? кроме того, последовательность твитов тоже ведь имеет значение, не собьется ли… впрочем, попробую.


(Kvokka) #38

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

если бы была разница в последовательности, то .uniq тоже не варик, тк он не обязательно будет сохранять порядок.


#39

исправил и запушил, спасибо. Тока проблемы это не решает, как ты понимаешь: глянул в консоли, так и приходит, в урезанном время от времени виде… причем я уверен, что в русскоязычных фидах это не то, что склонны предполагать англоязычные наши коллеги… бля, ну и нравы там у них: :smiley:

Не, я уверен, что в оригинале было без многоточий, не так, как далее, а открытым текстом… дык че явно бага:

Во время съёмок экранизации "Острова сокровищ" произошёл скандал! Попугай Капитана Флинта вместо "пиастры" стал кричать "пид…

:smiley:

sferik-у отрепорчу, пожалуй…


(Kvokka) #40

ищи в тексте гема твиттера truncate
скорее всего там заюзают ActiveSupport, а там метод именно так зовется. оттуда уже копайся

а нравы там норм. не забывай, 95% населения - идиоты. при этом, все относительно :wink: