жизнь студенты общественная_деятельность безработица Ruby
День сто тридцать третий (гладкоствольное ружье МР-133)
Почему-то именно сегодня бывшие студенты прямо таки окружили меня своим вниманием. Началось все с того, что один из студентов начал интересоваться у меня математическими функциями в Ruby (вычисление экспоненты). Все это вылилось в дискуссию и программу численного нахождения значения определенного интеграла (методом левых прямоугольников). Если кому интересно, то интеграл на Ruby ищется в две строчки:
a,b,h,f = 0,1,0.01,lambda{ |x| Math.exp(-x) }
puts "Интеграл exp(-x) в пределе 0..1 равен %.3f" % (0...(b-a)/h).inject(0){ |sum,rect| sum + f[a+n*h].abs*h }
Сразу же после после этого, мне написал другой студент с двумя вопросами: как манипулировать потоками (перехват stdout) и как перекодировать текст (из cp866 в cp1251)? По поводу работы с потоками, необходимо было перехватить результат работы команды 'dir' (аналог ls для Windows) и записать его переменную. Делается это так:
str = IO.popen("dir"){ |io| io.read }
Так как в выводе команды dir присутствовали русскоязычные имена файлов (в кодировке cp866), то потребовалось перевести из в читабельную кодировку (в cp1251). Смена кодировки делается в Ruby при помощи библиотеки iconv:
require 'iconv'
Iconv.conv("cp1251","cp866",str)
В благодарность за помощь, меня пригласили попить пивка 14-го в "Кружке" на Краснопресненской (футбольный матч какой-то будет идти).
Еще один бывший студент приехал ко мне домой и привез 50Гб веб-дизайнов (шаблонов). В благодарность я его напоил коньяком и накормил салом.