вторник, 3 августа 2010 г.

Репост этого поста.
Я слежу за этой историей с февраля. Расскажу ее сама вам, как вижу сейчас...

Жила-была девушка, Милана Каштанова. Училась в институте в Петербурге.
В феврале она шла по Петербургу и ей на голову упала глыба льда. Питерские дворники чистили крышу...
Сейчас Милана находится к коме. Сначала в больнице в Петербурге, потом в Таллине, сейчас ее должны перевезти в Кельн.
У нее диффузная травма мозга.

У Миланы есть муж. Ириней Калачев. Этому молодому мужчине всего 22 года. Он каждый день ведет дневник состояния Миланы.
Пока там основная запись-" Состояние Миланы без изменений".
Каждый день, с февраля.

Родители Миланы и Ириней собирают деньги. Стоимость лечения Миланы в Кельне- 80 тыс евро. Собрано 29 тысяч.

Ириней ищет дополнительные заработки.
Вот запись из его ЖЖ -
"Если Вам необходима разработка фирменного стиля, макетов полиграфической продукции (бланки, визитки, брошюры, каталоги и т.д.), иллюстрация или что-нибудь ещё - напишите мне письмо в ящик irinei.ru@gmail.com или позвоните мне по номеру +372 58 055 004. Местоположение заказчика роли не играет, работаю со всеми благодаря интернету.
Сразу скажу, что я не супер-дизайнер, всё ещё впереди, но за два года учёбы и работы на фрилансе я многому успел научиться. Мои работы можно посмотреть на фри-ланс.ру"
Я заказала Иринею визитки, и мне понравилось, как он сделал.

Я иногда представляю, как теперь изменилась жизнь всех, кто любит Милану.
Я представляю себе вот этот переход из света в тьму - она просто шла, говорила по мобильнику, и вдруг- все.
Долго думать об этом не получается, не хватает пороху. И смотреть на ее фотографии тоже.

Единственное, в чем я отдаю себе полностью отчет- в том, что очень уважаю таких мужчин, как Ириней.
По ссылкам вы сможете прочитать всю фактологию, без эмоций. Осторожно, есть видеозапись на месте происшествия, беременным по ссылкам на видео не ходить!

Это ссылка на дневник Иринея, на верхний пост, где собраны все материалы дела http://irinei-ru.livejournal.com/23917.html

Реквизиты для перевода денег - http://irinei-ru.livejournal.com/24657.html

Последние новости - http://irinei-ru.livejournal.com/80333.html

Ну, в общем, я хотела сказать, что вы можете заказать Иринею работу или как-то еще помочь.

Милана

пятница, 23 июля 2010 г.

воскресенье, 27 июня 2010 г.

Разработка Flash под Linux (Debian & Ubuntu)

Встал тут передо мной вопрос, возможно ли писать программы на Flash (т.е. Action Script) под Linux. В моем случае линукс - это Debian. Как оказалось, можно.
Во-первых, надо скачать и установитьFlex SDK.
Для этого переходим по этой ссылке и скачиваем Open Source Flex SDK. Соглашаемся с Mozilla Public License и нажимаем по кнопке Download zip.
Распаковываем скачаннный архив в какую либо директорию. В моем случае это /tmp/flex:
$ 7z x flex_sdk_4.1.0.16076_mpl.zip -o/tmp/flex/
Готово, Flex скачан и установлен.
Во-вторых, создаем наше hello-world'ное flash приложение. Создаем файл hello.as и открываем его в любимом редакторе, например, в vim:
$ vim hello.as
Пишем в нем следующее:
package {
import flash.display.*;
import flash.text.*;
public class hello extends Sprite{
public function hello (){
var t:TextField = new TextField();
t.text = "hello actionscript 3";
t.width = 300;
t.height = 200;
t.x = 50;
t.y = 20;
addChild(t);
}
}
}
В-третьих, надо скомпилировать этот файл:
$ /tmp/flex/bin/mxmlc hello.as
В директории, в которой мы находимся, появится скомпилированный swf-файл hello.swf.
И наконец, открываем его в любимом бразуре, например, в Google Chrome:
$ google-chrome hello.swf
И наслаждаемся результатом:)

понедельник, 14 июня 2010 г.

Чем и как открыть архивы tar.gz и tar.bz2 в Windows

Как известно, архивы вида *.tar.bz2 и *.tar.gz2 - одни из самых часто встречающихся видов архивов в Linux (так называемые тарболы (tarball)). Однако, что делать в случае, когда их надо открыть в Windows?
В этом случае Вам поможет архиватор 7z. Скачать его версию для Windows можно по этой ссылке.
Он бесплатный и умеет распаковывать следующие архивы: ARJ, CAB, CHM, CPIO, DEB, DMG, HFS, ISO, LZH, LZMA, MSI, NSIS, RAR, RPM, UDF, WIM, XAR и Z. А сжимать и открывать: 7z, ZIP, GZIP, BZIP2 и TAR.
Если 7zip не запускается при клике по tar.gz или tar.bz2, убедитесь, что он настроен на их открытие:
1) Откройте 7zip
2) Пройдите по Tools → Options
3) Выберите вкладку "System".
4) Убедитесь, что стоят галочки напротив tar, gz, bz2.
5) Нажмите Ok.

После этого 7zip сможет распаковать тарболы в windows.

пятница, 4 июня 2010 г.

Настройка антиспама в Pidgin

В последнее время мне часто стал сыпаться спам в Pidgin. Решение нашлось быстро в виде антиспама Bot Sentry.
Установка и настройка предельно просты. Во-первых, устанавливаем pidgin-dev и intltool:
sudo aptitude install pidgin-dev intltool
Далее скачиваем с сайта разработчиков тарболл и распаковываем его:
wget http://downloads.sourceforge.net/project/pidgin-bs/bot-sentry/1.3.0/bot-sentry-1.3.0.tar.bz2?use_mirror=citylan
tar -xjvf bot-sentry-1.3.0.tar.bz2
Далее, переходим в директорию
cd bot-sentry-1.3.0/
и запускаем конфигурирование, компиляцию и инстралляцию
configure
make
sudo make install
Все готово, осталось только включить модуль в Pidgin:
Средства-Модули-Bot Sentry, затем придумать вопрос и ответ для антиспама:

Ruby ч.3 Работа с объектами в Ruby

Продолжение этой статьи.
Итак, у нас уже объявлен класс Greeter. Посмотрим на него в действии:
irb(main):035:0> g = Greeter.new("Pat")
=> #
irb(main):036:0> g.say_hi
Hi Pat!
=> nil
irb(main):037:0> g.say_bye
Bye Pat, come back soon.
=> nil
Итак, как вы видите, все работает, как задумано. Что же будет, если мы попытаемся обратиться к имени напрямую?
irb(main):038:0> g.@name
SyntaxError: compile error
(irb):52: syntax error
from (irb):52
Ага, он ругается.
Переменные класса всегда спрятаны от посторонних глаз. Спрятаны они не насовсем, вы можете их найти, когда инспектируете объект, и всякими другими способами. Однако Ruby придерживается объектно-ориентированного подхода по отношению к скрытию переменных.
Посмотрим, какие же методы существуют у объекта класса Greeter:
irb(main):039:0> Greeter.instance_methods
=> ["method", "send", "object_id", "singleton_methods",
"__send__", "equal?", "taint", "frozen?",
"instance_variable_get", "kind_of?", "to_a",
"instance_eval", "type", "protected_methods", "extend",
"eql?", "display", "instance_variable_set", "hash",
"is_a?", "to_s", "class", "tainted?", "private_methods",
"untaint", "say_hi", "id", "inspect", "==", "===",
"clone", "public_methods", "respond_to?", "freeze",
"say_bye", "__id__", "=~", "methods", "nil?", "dup",
"instance_variables", "instance_of?"]
Ого! Но ведь мы объявляли всего два метода, откуда же их столько?
Здесь перечислены все методы класса Greeter, в том числе и унаследованные от его предка. А теперь посмотрим методы, присущие только классу Greeter:
irb(main):040:0> Greeter.instance_methods(false)
=> ["say_bye", "say_hi"]
А теперь посмотрим, на какие методы откликается наш объект:
irb(main):041:0> g.respond_to?("name")
=> false
irb(main):042:0> g.respond_to?("say_hi")
=> true
irb(main):043:0> g.respond_to?("to_s")
=> true
Итак, как мы видим, Greeter не знает метода name.
Однако, что будет, если мы захотим увидеть или изменить name? Ruby предоставляет легкий способ для доступа к переменным класса:
irb(main):044:0> class Greeter
irb(main):045:1> attr_accessor :name
irb(main):046:1> end
=> nil
В Ruby всегда можно открыть класс заново и изменить его свойства. Итак, попробуем создать новый экземпляр класса Greeter и поиграть с свойством @name:
irb(main):047:0> g = Greeter.new("Andy")
=> #
irb(main):048:0> g.respond_to?("name")
=> true
irb(main):049:0> g.respond_to?("name=")
=> true
irb(main):050:0> g.say_hi
Hi Andy!
=> nil
irb(main):051:0> g.name="Betty"
=> "Betty"
irb(main):052:0> g
=> #
irb(main):053:0> g.name
=> "Betty"
irb(main):054:0> g.say_hi
Hi Betty!
=> nil
Действие :attr_accessor создало для нас 2 новых метода, name для получения значения переменной @name и name= для задания ее значения.
Однако, Greeter сейчас умеет приветствовать и прощаться только с одним человеком. Что, если нам захочется создать некий MegaGreeter, который сумел бы приветствовать весь мир, одного человека, или несколько человек сразу?
Давайте напишем следующие строки в отдельном файле, а не прямо в интерпретаторе:
#!/usr/bin/env ruby

class MegaGreeter
attr_accessor :names

# Create the object
def initialize(names = "World")
@names = names
end

# Say hi to everybody
def say_hi
if @names.nil?
puts "..."
elsif @names.respond_to?("each")

# @names is a list of some kind, iterate!
@names.each do |name|
puts "Hello #{name}!"
end
else
puts "Hello #{@names}!"
end
end

# Say bye to everybody
def say_bye
if @names.nil?
puts "..."
elsif @names.respond_to?("join")
# Join the list elements with commas
puts "Goodbye #{@names.join(", ")}. Come back soon!"
else
puts "Goodbye #{@names}. Come back soon!"
end
end

end


if __FILE__ == $0
mg = MegaGreeter.new
mg.say_hi
mg.say_bye

# Change name to be "Zeke"
mg.names = "Zeke"
mg.say_hi
mg.say_bye

# Change the name to an array of names
mg.names = ["Albert", "Brenda", "Charles",
"Dave", "Englebert"]
mg.say_hi
mg.say_bye

# Change to nil
mg.names = nil
mg.say_hi
mg.say_bye
end
Сохраним этот файл как "ri20min.rb", а затем выполним командой "ruby ri20min.rb":
Hello World!
Goodbye World. Come back soon!
Hello Zeke!
Goodbye Zeke. Come back soon!
Hello Albert!
Hello Brenda!
Hello Charles!
Hello Dave!
Hello Englebert!
Goodbye Albert, Brenda, Charles, Dave, Englebert. Come
back soon!
...
...
В следующей статье мы рассмотрим еще массу интересных действий!

Ruby ч.2: Продолжаем изучать Ruby

Как продолжение этой статьи, вольный перевод кусочка руководства Ruby за 20 минут.
Как заставить Ruby приветствовать нас, не напрягая при этом наши пальцы? Очень просто, надо всего лишь объявить метод, который будет это делать:
irb(main):010:0> def h
irb(main):011:1> puts "Hello World!"
irb(main):012:1> end
=> nil
Код "def h" обозначает собой объявление метода. Им мы говорим Ruby, что объявляем метод с именем h. Строка "end" означает, что мы закончили объявление метода. Между этими строками находится тело метода, то есть то, что он будет делать. В данном случае - говорить "Hello World!". Фраза "nil", которой ответил нам интерпретатор, означает, что он понял, что мы закончили объявление.
Итак, попробуем запустить этот метод пару раз:
irb(main):013:0> h
Hello World!
=> nil
irb(main):014:0> h()
Hello World!
=> nil
Видите, как это просто? Вызвать метод настолько же легко, как сказать его имя Ruby. Если метод не требует параметров, то это все, что вам нужно. Однако, если вы хотите, то вы можете добавить пустые круглые скобки.
Что, если мы захотим говорить "Привет" какому-то определенному человеку, а не целому миру сразу? Достаточно всего лишь переопределить этот метод так, чтобы они принимал имя, как параметр:
irb(main):015:0> def h(name)
irb(main):016:1> puts "Hello #{name}!"
irb(main):017:1> end
=> nil
irb(main):018:0> h("Matz")
Hello Matz!
=> nil
Итак, это работает. Однако, попробуем посмотреть, как это работает.
Для начала, что такое "#{name}"? Это способ вставить что либо в строку в Ruby. Данные, находящиеся в переменной, указанной в фигурных скобках, преобразуются в строку (если они уже ей не были), а затем вставляются во внешнюю строку в том самом месте, где мы написали это выражение. Так же мы можем реализовать проверку того, написано ли имя с большой буквы:
irb(main):019:0> def h(name = "World")
irb(main):020:1> puts "Hello #{name.capitalize}!"
irb(main):021:1> end
=> nil
irb(main):022:0> h "chris"
Hello Chris!
=> nil
irb(main):023:0> h
Hello World!
=> nil
Рассмотрим, что тут происходит:
Если мы вызываем метод без скобок или не указываем параметр, то в качестве name используется параметр по умолчанию, то есть "World". В противном случае, первая буква имени делается заглавной, и выводится приветственное сообщение.
Ну а если же мы хотим создать реального привратника, который будет запоминать наше имя и встречать и провожать нас, то, возможно, стоит создать объект:
irb(main):024:0> class Greeter
irb(main):025:1> def initialize(name = "World")
irb(main):026:2> @name = name
irb(main):027:2> end
irb(main):028:1> def say_hi
irb(main):029:2> puts "Hi #{@name}!"
irb(main):030:2> end
irb(main):031:1> def say_bye
irb(main):032:2> puts "Bye #{@name}, come back soon."
irb(main):033:2> end
irb(main):034:1> end
=> nil
Здесь появляется новое ключевое слово - "class". Оно означает, что мы создаем новый класс Greeter и несколько методов для него. Также вы наверняка заметили "@name" - это переменная, доступная всем методам класса. Как вы видите, она используется методами say_hi и say_bye. Рассмотрим это в действии в следующей статье.