[Ruby] - Задай вопрос, получи ответ

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Sharky, 24 Aug 2009.

  1. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    1) можно запускать так ruby script.rb > outer.csv
    2)
    перенаправить вывод stdout в файл
    fresult = File.new("outer.csv", "w")
    default = $stdout
    $stdout = fresult
    # тут вывод через puts или print
    $stdout = default
    fresult.close
     
  2. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    geezer.code
    Да нет, я пробовал в коде написать строку для открытия файла и добавления в него строки, но при каждом выполнении файл снова и снова открывался, а строка переписывалась.

    Я же передал блок функции parse класса FasterCsv
     
  3. RexTiam

    RexTiam Member

    Joined:
    2 Nov 2009
    Messages:
    117
    Likes Received:
    45
    Reputations:
    5
    Решил попробывать себя в изучение языка....Где тут ошибка)
    $tokens = gets.scan( /\)|\(|-?\d+/ )
    def parse
    if tokens.first =~ /-?\d+/
    $tokens.shift.to_f
    else
    $tokens.shift
    r = (parse + parse)/2.0
    $tokens.shift
    r
    end
    end
    puts parse
     
  4. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    superboy4, не совсем понимаю о чем ты, но попробуй открывать файл с модификатором "a"

    RexTiam, сначала определись с синтаксисом.
    переменная у тебя называется то $tokens то tokens.
    К тому же нужно определять области видимости, внутри функции parse tokens это уже совсем другой объект.
    может твой код должен выглядеть как-то так ?
    Code:
    tokens = gets.scan( /\)|\(|-?\d+/ )
    def parse(tokens)
    if tokens.first =~ /-?\d+/
    tokens.shift.to_f
    else
    tokens.shift
    r = (parse + parse)/2.0
    tokens.shift
    r
    end
    end
    puts parse(tokens)
    
     
  5. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    Я последовательно добавляю строчки в файл .csv
    Но всегда получается, что добавление строчек начинается со второй строки файла .csv

    ps: Я открыл файл .csv в OpenOffice и вижу что первая строчка пуста и записи начинаются, начиная со второй.
    Как сделать, чтобы файл заполнялся с первой строки?

    Code:
    require 'rubygems'
    require 'fastercsv'
    
    FasterCSV.parse(File.open("ip-to-country.csv")) do |row|
     if row[2] == "RU"  then
       myfile = File.open("output.csv", "a")
       myfile.puts "#{row[0]}, #{row[1]}, #{row[4]}"
       myfile.close
     end
    end
     
    #65 superboy4, 14 Dec 2009
    Last edited: 14 Dec 2009
  6. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    может сразу и то как ты это делаешь покажешь? ) хотя бы код
    а то я же не телепат.

    added
    Тебе стоит проверить свой csv файл. возможно там есть какой-то whitespace.

    про то,что постоянно открывать - закрывать файл я наверное говорить уже не буду.
     
    #66 geezer.code, 14 Dec 2009
    Last edited: 18 Dec 2009
  7. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    Как грамотно отобразить содержимое массива в Rails?

    Например, как вывести фотографии на странице по 5 штук на каждой строке, чтобы фотографии распологались в тегах <td></td>, а строки соответсвенно в <tr></tr>???
     
  8. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    ну например так
    Code:
    <% all_photos.in_groups_of(5).each do |group| -%>
      <tr>
        <% group.each do |photo| -%>
          <td>
             <%= image_tag(photo.public_path) unless photo.nil? %>
          </td>
         <% end -%>
      </tr>
    <% end -%>
    
     
    #68 geezer.code, 28 Dec 2009
    Last edited: 28 Dec 2009
    1 person likes this.
  9. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    geezer.code
    спасибо, дальше по ходу сам разбирусь, да тут ещё и rubyclub.com.ua не доступен уже 2 дня.

    Cпасибо, с наступающим!!!
     
  10. TikTik

    TikTik Member

    Joined:
    20 Feb 2009
    Messages:
    241
    Likes Received:
    12
    Reputations:
    2
    [​IMG]

    Майкл Фитцджеральд Изучаем Ruby

    Ребят не у кого нет этой чудо книги в электроном варианте на русском поделитесь пожалуйста !
     
  11. TikTik

    TikTik Member

    Joined:
    20 Feb 2009
    Messages:
    241
    Likes Received:
    12
    Reputations:
    2
    [​IMG]

    Майкл Фитцджеральд Изучаем Ruby

    Ребят не у кого нет этой чудо книги в электроном варианте на русском поделитесь пожалуйста !
     
  12. TikTik

    TikTik Member

    Joined:
    20 Feb 2009
    Messages:
    241
    Likes Received:
    12
    Reputations:
    2
    Согласен даже заплатить за книжечку в PDF !!!!
     
    #72 TikTik, 1 Jan 2010
    Last edited: 1 Jan 2010
    1 person likes this.
  13. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    Предположим у нас есть набор объектов

    PHP:
    @photos
    Как вывести из этого набора, например, скажим, только первые два объекта?

    Вот, что у меня на данном этапе

    PHP:
    <% for photo in @photos %>
    <%= 
    photo.name %>
    <% 
    end %>
    Но код выше распечатает все объекты набора, а мне надо только первые два!

    и пусть модераторы подчистят тему!!!

    ps: :limit при создании набора @photos мне не подходит ;)
     
    #73 superboy4, 4 Jan 2010
    Last edited: 4 Jan 2010
  14. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    up

    тема, надеюсь не мертва!
     
  15. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    TikTik, лучше все-таки учить английский

    superboy4 вообще-то это элементарно
    Code:
     <% for photo in @photos[0..1] %>
    <%= photo.name %>
    <% end %>  
    
     
    1 person likes this.
  16. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    geezer.code

    У меня есть приложение, в котором все странички пользователей (профайлы) открыты публике, но отдельные действия требуют входа участника, например, чтобы оставить комментарий.

    Вопрос: Мне нужно как то узнать, что на конкретной странице находится пользователь, которому и принадлежит его профайл, чтобы только он мог иметь право редактировать свои данные, а никто другой, по сути, это очень важная фишка социальных сетей, в данный момент у меня на всех страницах пользователей присутствуют ссылки - редактирования, что конечно не правильно, я использую метод logged_in? Но как мне определить, что какая-то страница принадлежит конкретно пользователю, который сейчас в системе?
     
    #76 superboy4, 5 Jan 2010
    Last edited: 5 Jan 2010
  17. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    superboy4
    ты используешь плагин для аутентификации? или код написан самостоятельно?

    ну в любом случае. Предположим что ты хранишь user_id в сессии.
    тогда достаточно доопределить один хелпер и в нём сравнивать , чтото вроде

    def owner?
    @user.id==session[:user_id]
    end

    или если есть метод , возвращающий текущего пользователя то так

    def owner?
    @user==current_user
    end
     
    1 person likes this.
  18. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    geezer.code

    Что лучше всего использовать для отправки почты пользователю сайта, если сайт высоконагружен? Sendmail, SMTP или ...?

    Пытаюсь установить sendmail, установил, в файлах конфигурации всё чётко дописал. Запускаю сервак,
    иду на страницу пользователя, нажимаю конопку добавить в друзья, она заносит данные в базу и вызывает функцию отправки письма, и это процесс идё примерно 80.000 ms !!!!!!
    В результате в ящике никакого пиьсма, а в логе девелопмен ни одной ошибке, хотя опция показа ошибок доставки почты - включена!

    Помогите, пожалуйста!

    ps У меня на localhost под Ubuntu на Vmware
     
    #78 superboy4, 6 Jan 2010
    Last edited: 6 Jan 2010
  19. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    по поводу долгого таймаута не скажу ничего. правда слышал что такая проблема была именно на убунту + сендмэйл у пхпшников.

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

    Далее, насчет высоконагруженности - да лучше sendmail.
     
  20. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    ok, спасибо
    + тебе не могу поставить, но могу поставить на днях