- 1
hash.to_a.select{|elem| elem[1].map{|st| st.from}.include? state}.map{|elem| elem[1].map{|inner| inner.to}.uniq}.flatten
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−97
hash.to_a.select{|elem| elem[1].map{|st| st.from}.include? state}.map{|elem| elem[1].map{|inner| inner.to}.uniq}.flatten
−106
Dir["#{Rails.root}/lib/**/*"].select { |f| File.directory? f }.join(' ')
Рекурсивный список каталогов lib проекта Rails.
−99
Было (плохо):
<% @collection.each_with_index do |item, counter| -%>
<%= "<div class='group'>" if ((counter)/items_in_block).to_i*items_in_block == (counter) %>
<%= render :partial => 'item', :locals => { :item => item} %>
<%= "</div>" if (counter > 0 and (((counter+1)/items_in_block).to_i*items_in_block == (counter+1)) or ((counter+1) == @collection.size)) %>
<% end -%>
Стало (чуть лучше ;):
<% @collection.in_groups_of(items_in_block).each do |items| %>
<div class="group">
<% items.each do |item| %>
<%= render :partial => 'item', :locals => { :item => item} %>
<% end %>
</div>
<% end %>
Группировка элементов в группы div'ов.
−106
# progress bar
width = 60 # width of bar
com = 540 # input data
pr = com * 0.01
i = 0
j = width
v = 1
puts
while pr <= com
print "\r#{v}% [#{"|"*i}#{" "*j}]"
pr += com * 0.01
i += width * 0.01
j -= width * 0.01
v += 1
sleep(0.01)
end
puts
Консольный прогресс-бар.
−104
def query(sql)
begin
@mysql.query(sql)
rescue StandardError => err
@log.error("Mysql query: '#{sql}\n#{err}'") if @log.class == LoggerHandler
end
end
Говнообертка. LoggerHandler - класс, наследующийся от Logger.
Говнонюанс в том, что Logger.error возвращает true/false в зависимости от того была ли запись в лог успешной, что приводит потом к ошибкам вида NoMethodError: undefined method `each' for true:TrueClass
−100
N = 5
$mas = (1..N).to_a
$c = 0
def generate(l = 0)
if l == N-1
for i in 0..N-1 do
print("#{$mas[i]} ")
end
$c += 1; print("\n")
else
for i in l..N-1 do
t = $mas[l]; $mas[l] = $mas[i]; $mas[i] = t;
generate(l+1)
t = $mas[l]; $mas[l] = $mas[i]; $mas[i] = t;
end
end
return $c
end
p generate(0);
−110
require "date"
#Конвертируем массив цифр в двухмерный масив для отображения
def get_numbers(numbers)
output = []
one = [["-","-","-","*","*"],["-","-","*","-","*"],["-","*","-","-","*"],["*","-","-","-","*"],["-","-","-","-","*"],["-","-","-","-","*"],["-","-","-","-","*"]]
two = [["*","*","*","*","*"],["-","-","-","-","*"],["-","-","-","-","*"],["*","*","*","*","*"],["*","-","-","-","-"],["*","-","-","-","-"],["*","*","*","*","*"]]
three = [["*","*","*","*","*"],["-","-","-","-","*"],["-","-","-","-","*"],["*","*","*","*","*"],["-","-","-","-","*"],["-","-","-","-","*"],["*","*","*","*","*"]]
four = [["*","-","-","-","*"],["*","-","-","-","*"],["*","-","-","-","*"],["*","*","*","*","*"],["-","-","-","-","*"],["-","-","-","-","*"],["-","-","-","-","*"]]
five = [["*","*","*","*","*"],["*","-","-","-","-"],["*","-","-","-","-"],["*","*","*","*","*"],["-","-","-","-","*"],["-","-","-","-","*"],["*","*","*","*","*"]]
six = [["*","*","*","*","*"],["*","-","-","-","-"],["*","-","-","-","-"],["*","*","*","*","*"],["*","-","-","-","*"],["*","-","-","-","*"],["*","*","*","*","*"]]
seven = [["*","*","*","*","*"],["-","-","-","-","*"],["-","-","-","*","-"],["-","-","*","-","-"],["-","*","-","-","-"],["*","-","-","-","-"],["*","-","-","-","-"]]
eight = [["*","*","*","*","*"],["*","-","-","-","*"],["*","-","-","-","*"],["*","*","*","*","*"],["*","-","-","-","*"],["*","-","-","-","*"],["*","*","*","*","*"]]
nine = [["*","*","*","*","*"],["*","-","-","-","*"],["*","-","-","-","*"],["*","*","*","*","*"],["-","-","-","-","*"],["-","-","-","-","*"],["*","*","*","*","*"]]
zero = [["*","*","*","*","*"],["*","-","-","-","*"],["*","-","-","-","*"],["*","-","-","-","*"],["*","-","-","-","*"],["*","-","-","-","*"],["*","*","*","*","*"]]
seperator = [["-","-","-","-","-"],["-","*","-","*","-"],["-","-","-","-","-"],["-","-","-","-","-"],["-","-","-","-","-"],["-","*","-","*","-"],["-","-","-","-","-"]]
for i in numbers
case i
when "0"
output += [zero]
when "1"
output += [one]
when "2"
output += [two]
when "3"
output += [three]
when "4"
output += [four]
when "5"
output += [five]
when "6"
output += [six]
when "7"
output += [seven]
when "8"
output += [eight]
when "9"
output += [nine]
when ":"
output += [seperator]
end
end
return output
end
#Получаем массив с текущим временем
def get_time
t = Time.new
if t.hour.between?(0,9)
hour = "0" + t.hour.to_s
else
hour = t.hour.to_s
end
if t.min.between?(0,9)
min = "0" + t.min.to_s
else
min = t.min.to_s
end
if t.sec.between?(0,9)
sec = "0" + t.sec.to_s
else
sec = t.sec.to_s
end
time = [hour[0],hour[1],":",min[0],min[1],":",sec[0],sec[1]]
end
#Рисуем с заменой символов на в
def display_time(symbols = {:star => "0", :line => " "})
color_taf = 0
color_tab = 7
loop do
#Для очитки экрана в UNIX
if RUBY_PLATFORM == "i386-mingw32" then
system("cls")
else
system("tput reset")
end
#Цвет и фон
#system("tput setaf #{color_taf}")
#system("tput setab #{color_tab}")
m = get_numbers(get_time)
#Посимвольная прорисовка
for j in 0..6
for i in 0..m.size-1
for z in m[i][j]
case z
when "*"
print symbols[:star]
when "-"
print symbols[:line]
#sleep(0.01) Для просмотра прорисовки
end
end
print " "
end
print "\n"
end
sleep(1)
end
end
#Рисуем
display_time :star => "0", :line => " "
Фух... урезал до 100 строк :)
−110
columns.each do |c|
case c
when 'Device'
h << c
when 'Usage'
h << c
when 'Status'
h << c
when 'Battery'
h << c
when 'GPS status'
h << c
when 'Wi-Fi status'
h << c
when 'Temperature'
h << c
when 'Alerts'
h << c
end
end
случайно вот родил )
−115
#!/usr/bin/ruby1.8
require 'mysql'
$KCODE = 'UTF8'
class Country
@@country = Array.new
@@insert_query = String.new
@@db = Mysql
def initialize(filename)
file = File.open(filename)
while !file.eof?
value, index = file.readline.split(/\s+/u)
@@country[index.to_i] = value.to_s
end
file.close
end
def database_connect
@@db = Mysql.new('localhost','username','userpass','userdatabase')
begin
@@db.query("SET NAMES utf8")
rescue
puts @@db.error
end
end
def create_query
begin
result = @@db.query("SELECT * FROM table")
rescue
puts @@db.error
end
result.each_hash do |field|
@@country.each_index do |index|
@@insert_query += "UPDATE table SET position = #{index} WHERE caption = '#{field['caption']}';" if @@country[index] == field['caption']
end
end
end
def execute_query
begin
@@insert_query.split(/;/u).each { |query| @@db.query(query) }
puts "result: #{@@db.errno}" if @@db.errno
rescue
puts @@db.error
end
end
def database_disconnect
@@db.close
end
end
cnt = Country.new('country.txt')
# connect to DB
cnt.database_connect
# construct query
cnt.create_query
# execute constructed query
cnt.execute_query
# close connect
cnt.database_disconnect
Ну можно же как-то сделать лучше?
−98
def non_blank_attrs_amount
return_value = 4
return_value = return_value + 1 if (!country.blank?)
return_value = return_value + 1 if (!address.blank?)
return_value = return_value + 1 if (!phone.blank?)
return_value = return_value + 1 if (!email.blank?)
return_value = return_value + 1 if (!skype.blank?)
return_value = return_value + 1 if (!site.blank?)
return_value = return_value + 1 if (!comment.blank?)
return_value.to_s
end