Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Edycja hostów Windows'a - Ruby czyli rekordzista

Witam serdecznie. Może to już nudne, ale właśnie mi się nudziło i napisałem konsolowy skrypt do edycji hostów w języku znanym pod nazwą Ruby.

Użytkownik kuba144 przy wpisie Hosty w Win7 [...] powiedział:

To teraz proponuję wyścigi kto napisze krótszy kod ;p

Aktualnie mój stał się chyba rekordzistą, jeśli chodzi o ilość linii kodu (27 bez czterech linii komentarzy). Jedyne co trzeba tylko zrobić to dla zmiennej filename podać ścieżkę do pliku z hostami, względem lokalizacji, na której aktualnie pracujemy w konsoli (w przypadku Ruby >= 1.9. Jeśli posiadamy Ruby < 1.9 podajemy lokalizację względem skryptu). Nie jestem do końca pewien, czy działa on zupełnie bezbłędnie i jest idioto-odporny, ale funkcjonalności pracują jak należy. Obsługuje linie z komentarzami (czyli wyświetla je, podając ich indeksy) gdybyśmy oczywiście chcieli usunąć jakąś linię komentarzu. Oczywiście kod nie jest idealny, można by dodać czyszczenie konsoli, trochę fajerwerków, żeby ładniej wyglądało i lepiej się na programie pracowało, ale nie o to przecież chodzi, prawda? :)

r   e   k   l   a   m   a

Rzecz jasna sens egzystencji tego skryptu nie istnieje, bowiem łatwiej, szybciej (i tak dalej) jest otworzyć sobie ten plik w edytorze tekstu i zrobić to co trzeba. Jeśli komuś się będzie chciało go w ogóle uruchomić i dostrzeże jakiś błąd, poprosiłbym o zgłoszenie tego w komentarzach, a ja postaram się go naprawić.

Oto kod:

filename = "host.txt"
lines = File.readlines(filename)
choice = 1
while choice != 4
	puts "--------------- \n[1] Dodaj host [2] Usuń host [3] Pokaż hosty [4] Zapisz i wyjdź [Control + C] Wyjdź bez zapisu"
	choice = gets.to_i
	case choice
		# Add
		when 1
			puts "Podaj całą linię, jaka ma zostać dodana:"
			line = gets
			lines << line
		# Remove
		when 2
			puts "Podaj indeks linii, którą chcesz usunąć (indeks liczy się poczynając od zera"
			line = gets.to_i
			lines.delete_at(line)
		# Show
		when 3
			lines.each_with_index do |line, index|
				puts "[#{index}] #{line}" # if line[0,1] != "#"
			end
		# Save and exit
		when 4
			f = File.open(filename, "w")
			lines.each do |line|
				f.puts line
			end
			f.close
	end
end

 

windows programowanie

Komentarze