Яuбy / Говнокод #2422 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
class FinancialEventObserver < ActiveRecord::Observer
  observe Payment, Invoice
  def before_save(model)
    event = nil        
    if model.class == Payment
      if model.new_record?        
        event = FinancialEvent.new(:event => FinancialEvent::Event::PAYMENT_INVOICE,
        :arguments => {:client_name => model.invoice.client.short_name, :invoice_number => model.invoice.invoice_number},
          :company_id=>model.invoice.client.company.id)
      end
    elsif model.class == Invoice
      i = Invoice.find_by_id model.id      
      if model.new_record? or i.status != model.status        
        if model.status == Invoice::Status::ESTIMATE
          event = FinancialEvent.new(:event => FinancialEvent::Event::ESTIMATE_SEND,
        :arguments => {:client_name => model.client.short_name, :invoice_number => model.invoice_number},
            :company_id=>model.client.company.id)
        elsif model.status == Invoice::Status::APPROVED
          event = FinancialEvent.new(:event => FinancialEvent::Event::ESTIMATE_APPROVED,
        :arguments => {:client_name => model.client.short_name, :invoice_number => model.invoice_number},
            :company_id=>model.client.company.id)
        elsif model.status == Invoice::Status::REJECTED
          event = FinancialEvent.new(:event => FinancialEvent::Event::ESTIMATE_REJECTED,
        :arguments => {:client_name => model.client.short_name, :invoice_number => model.invoice_number},
            :company_id=>model.client.company.id)
        elsif model.status == Invoice::Status::SEND
          event = FinancialEvent.new(:event => FinancialEvent::Event::INVOICE_SEND,
        :arguments => {:client_name => model.client.short_name, :invoice_number => model.invoice_number},
            :company_id=>model.client.company.id)            
        end
      elsif !model.new_record? and i.state != model.state
        if model.state == Invoice::State::DELETED
          event = FinancialEvent.new(:event => FinancialEvent::Event::INVOICE_DELETED,
        :arguments => {:invoice_number => model.invoice_number},
            :company_id=>model.client.company.id)
        end
      end    
    end
    event.eventable = model.requester unless event.blank? 
    event.save unless event.blank?
    
  end
  def before_destroy(model)
    if model.class == Payment
      event = FinancialEvent.new(:event => FinancialEvent::Event::PAYMENT_DELETED,
        :arguments => {:invoice_number => model.invoice.invoice_number},
      :company_id=>model.invoice.client.company.id)
      event.eventable = model.requester
      event.save
    end    
  end
end

о боже, зачем я открыл этот файл?

rakoth3d rakoth3d, (Updated )

Комментарии (5, +5)

Яuбy / Говнокод #2416 Ссылка на оригинал

0

  1. 1
some_variable = (some_condition && some_other_condition) ? true : false

Иногда встречаю ГК подобный этому но реализованный в виде case..when. Еще более впечатляет :)

shine shine, (Updated )

Комментарии (13, +13)

Яuбy / Говнокод #2336 Ссылка на оригинал

0

  1. 1
<li class="list_item primary_card_<%= index+1 %> <%= primary_card.patient.sex == 'male' ? 'boy' : 'girl' %> critical">

А можно было изменить имя класса в CSS

nimnull nimnull, (Updated )

Комментарии (2, +2)

Яuбy / Говнокод #1991 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
case @demand.status #зависит также от временных групп
	when 1,4
		@status_list[2]=@@statuses[2]	
	when 2,7,8	
		@status_list[2]=@@statuses[2]
		@status_list[3]=@@statuses[3]
		@status_list[7]=@@statuses[7]
		@status_list[8]=@@statuses[8]
	when 3
		@status_list[3]=@@statuses[3]
		if @is_admin || @demand.watchers.include?(session[:user]) || @demand.heads.include?(session[:user]) ||@see_later_demands_watchers || @see_later_demands_heads
			@status_list[4]=@@statuses[4]
		end
		if @is_admin || @demand.heads.include?(session[:user]) || @see_later_demands_heads
			@status_list[6]=@@statuses[6]
		end
	when 6
		if @is_admin || @demand.watchers.include?(session[:user]) || @demand.heads.include?(session[:user]) ||@see_later_demands_watchers || @see_later_demands_heads
			@status_list[4]=@@statuses[4]
		end	
	else
	end

магия

Rommel Rommel, (Updated )

Комментарии (8, +8)

Яuбy / Говнокод #1687 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
@ids.each_index do |di|
        if @ids[di] then
          @ids[di].each_index do |li|
            @employ[di][li] = Hash.new
            @employ[di][li][:subject] = Subject.find(:first, :conditions => "id = #{
              Lesson.find(:first, :conditions => "id = #{@ids[di][li]}")[:subject_id]
             }")[:title] if @ids[di][li]
            @employ[di][li][:class] = SchoolClass.find(:first, :conditions => "id = #{
              Lesson.find(:first, :conditions => "id = #{@ids[di][li]}")[:school_class_id]
             }")[:number].to_s +
              SchoolClass.find(:first, :conditions => "id = #{
              Lesson.find(:first, :conditions => "id = #{@ids[di][li]}")[:school_class_id]
             }")[:letter] if @ids[di][li]
            @employ[di][li][:teacher] = Teacher.find(:first, :conditions => "id = #{
              Lesson.find(:first, :conditions => "id = #{@ids[di][li]}")[:teacher_id]
             }")[:name] + ' ' +
              @employ[di][li][:teacher] = Teacher.find(:first, :conditions => "id = #{
              Lesson.find(:first, :conditions => "id = #{@ids[di][li]}")[:teacher_id]
             }")[:surname] + ' ' +
              @employ[di][li][:teacher] = Teacher.find(:first, :conditions => "id = #{
              Lesson.find(:first, :conditions => "id = #{@ids[di][li]}")[:teacher_id]
             }")[:patronymic] if @ids[di][li]
          end
        end
      end

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

Сидим, рефакторим.

eveel eveel, (Updated )

Комментарии (10, +10)

Яuбy / Говнокод #1603 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
# I really hate Western week system (0 - sunday, 6 - saturday),
      # maybe it is better, but this crap is incompatible with
      # Russian week system (0 - monday, 6 - sunday)
      wday = date.wday - 1
      wday = 6 if wday == -1

Кусок кода из реализации расписания с календарём в текущем проекте.

Только что оказалось, что для этого как раз есть метод Date#cwday :)

eveel eveel, (Updated )

Комментарии (7, +7)

Яuбy / Говнокод #1421 Ссылка на оригинал

0

  1. 1
@archive	= File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift

Жесть

guest guest, (Updated )

Комментарии (1, +1)

Яuбy / Говнокод #1255 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
def properties_file2hash(_property_file, _link_hash=nil)
    r_hash = Hash.new
    if _property_file &&  FileTest::exist?(_property_file)
      f = File::open(_property_file,'r')
      begin
        _lines = f.readlines
        _lines.each{|_line|
          _strip_line = _line.strip
          if (_strip_line.length > 0)&&(_strip_line[0,1]!='#')
            var_plat = _line.split('::')
            if var_plat.length > 1
              if (RUBY_PLATFORM.include?(var_plat[0]))
                _line = var_plat[1]
                var_plat[2..-1].collect{|x| _line=_line+'::'+x} if var_plat.length > 2
              else
                _line = ''
              end
            end
            var = _line.split('=')
            if var.length > 1
              _value = var[1].strip
              var[2..-1].collect{|x| _value=_value+'='+x} if var.length > 2
              if _link_hash 
                _value = resolve_link(_value, _link_hash)
              end
              r_hash[var[0].strip]=_value
            end
          end
        }
      ensure
        f.close unless f.nil?
      end
      return r_hash      
    end

Реальный кусок... Весь код проги(не моей)... ТАКОЙ.

guest guest, (Updated )

Комментарии (31, +31)

Яuбy / Говнокод #1182 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
require "rubygems"
require 'net/ssh'
class << Net::SSH
  def butforse(passwordarr)
            begin
              puts "Try password #{passwordarr}"
              Net::SSH.start('localhost', 'root', :password => "#{passwordarr}")
              puts "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
              exit
            rescue Net::SSH::AuthenticationFailed
            end
  end
end
arrays = Array("a".."zz")
arr1 = arrays[0, (arrays.size-1) / 2]
arr2 = arrays[(arrays.size - 1) / 2, arrays.size - 1]
threadsz = []
threadsz2 = []
threadsz << Thread.new(arr1) { |items|
  for item in items
    Net::SSH.butforse(item)
  end
}
threadsz2 << Thread.new(arr2) { |items|
  for item in items
    Net::SSH.butforse(item)
  end
}
threadsz.each {|i| i.join}
threadsz2.each {|i| i.join}

И я решил что лудше сразу создать оптимальное количество нитий,

guest guest, (Updated )

Комментарии (18, +18)