10 Gründe, warum PHP immer noch besser ist als Ruby
Tuesday, May 5th, 200910 Gründe, warum PHP immer noch besser ist als Ruby kann man detailliert und ausführlicht begründet bei bitvetera nachlesen: 10 Reasons why PHP is Still Better than Ruby
10 Gründe, warum PHP immer noch besser ist als Ruby kann man detailliert und ausführlicht begründet bei bitvetera nachlesen: 10 Reasons why PHP is Still Better than Ruby
puts $0 #current rb Prog puts $$ # prozess number puts $" # required libs puts $SAFE # security Level puts $: # Load Path puts RUBY_PLATFORM puts RUBY_RELEASE_DATE puts RUBY_VERSION
Mehr in der Ruby Pocket Reference
Es ist zwar relativ sinnfrei, Bruteforce mit Ruby zu betreiben, da Ruby verdammt langsam ist, dennoch ein kleines Snippet hierzu, falls mal jemand damit ein wenig spielen mag:
require 'digest/md5'</p>
<p>CHARS = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 _@#$&+-=%*"~!?.,:;()<>'<br />
LENGTH = 8</p>
<p>File.open("bruteforce.txt", "a") do |f|<br />
1.upto((CHARS.size+1)**LENGTH-1) do |i|<br />
str, q = '', i<br />
until q.zero?<br />
q, r = q.divmod(CHARS.size+1)<br />
str += CHARS[r-1,1]<br />
end<br />
md5 = Digest::MD5.hexdigest(str)<br />
f.puts str + " : " + md5<br />
end<br />
end
Manchmal bekommt man dem Versuch mittels Ruby unter Windows eine Datei durch File.delete zu löschen die Fehlermeldung “Permission denied”, dies kann man durch File.unlink umgehen:
File.copy options[:file], @filename.path
file_deleted = false
while !file_deleted
begin
File.unlink options[:file]
file_deleted = true
rescue
end
end
Das kann zwar unter Umständen eine Weile dauern, dafür ist die Datei anschließend aber auch gelöscht!
Normalerweise wird man in Ruby die to_i-Methode verwenden, um aus einem String einen Integer zu machen. Dummerweise liefert die Methode jedoch immer einen Integer zurück, selbst wenn der String keine Zahl enthält, z.B.
"foobar".to_i # => 0
Die einzig sinnvolle Möglichkeit, aus einem String einen Integer zu machen, ist Integer(str). Ist die Umwandlung in eine Zahl nicht möglich, wird ein ArgumentError geworfen. Selbiges ist mittels Number(str) möglich für reelle Zahlen. Das Zahlenformat ist identisch mit dem des Rubyparsers.
Wenn man von SonyEricsson-Handy via Bluetooth alle Kontakte auf den PC überträgt, landet eine einzige Datei namens “Whole Phonebook.vcf” auf der Platte, in der alle Kontakte in diesem Format enthalten sind:
BEGIN:VCARD
VERSION:2.1
N:Operator;ADAC
TEL;CELL:+4917922411
END:VCARD
BEGIN:VCARD
VERSION:2.1
N:Pannenhilfe;ADAC
TEL;CELL:+49179222222
END:VCARD
Diese Datei kann man mittels eines Ruby-Snippets in jeweils eine .vcf-Datei pro Eintrag zerlegen:
# sammelt alle Textblöcke von 'BEGIN:VCARD' bis 'END:VCARD' in einem Array
vcards = open('Phonebook.vcf') { |phonebook| phonebook.read.scan(/BEGIN:VCARD.*?END:VCARD/m) }
vcards.each do |vcard|
fname =
# sucht 'N:' am Zeilenanfang und gibt alle darauffolgenden Zeichen bis Zeilenende zurück.
vcard[/^N:(.*)/, 1].
# vertauscht durch ';' getrennte Namensteile, macht Dateinamen ansatzweise unixy, behält aber z.B. Umlaute bei.
split(';').reverse.join('_').tr(" |;,!@#\$()<>/\\\"'`~{}[]=+&^\t", '_') + '.vcf'
open(fname, 'w') { |f| f.write vcard }
end<code>
Alternativ kann man auch das gem vpim installieren und es folgendermaßen lösen:
require 'vpim'
cards = Vpim::Vcard.decode(open('phonebook.vcf'))
cards.each do |card|
open(card.name.formatted.gsub(/\W/, '_') + '.vcf', 'w') do |f|
f.write(card)
end
end
Gefunden habe ich die Snippets in den Rubyforen
Blöcke in Ruby sind syntaktischer Zucker, der bei Bedarf auch als Pfeffer oder Salz eingesetzt werden kann.
Autor: WoNáDo
Quelle: Rubyforum
Twitter links powered by Tweet This v1.6.1, a WordPress plugin for Twitter.