Почему, думаю, эти паттерны в посте ниже называются GoF? GoF,GoF - что такое? Оказывается это сокращённое от Gang of four (банда четырёх=)) - у них четыре автора, книга вроде так и называлась Design patterns for object oriented programming. Gang of four =)))))
Классная pdf!!!
поменять значения переменных
-
-
a, b = b, a
-
-
-
require ‘rake’
-
-
FILES = FileList[‘/home/**/*.php’]
-
-
p FILES
-
Мне нравится этот код
с RubyConf2007, это гораздо полезнее, чем переводить глупые статьи. Смотреть очень весело=) Народ стебется и юморит.
С одной стороны, вроде как письку с пальцем сравнивают.
Хорошо, давайте переведу, но опять же - критикуйте, я сам боюсь.
только от себя - в гугле php лучше запросы смотрятся - искать легче.
Схожести:
1. Ruby is dynamically typed, like in PHP, so you don’t need to worry about having to declare variables
Ruby - это не строго типизируемый язык, не мучьтесь по поводу объявления переменных.
Да ладно, это давно уже анекдот.
2. Ruby has try/catch/throw style exception handling like PHP5
Это бля вообще пиздец - Ruby имеет try/catch/throw как php5.
Я бы тут промолчал, кто и кого имеет.
3. Ruby has classes and access modifiers (public, protected & private)
Это мы понимаем. Это как у всех нынче. Тон статьи начинает напрягать.
4. A Ruby class can have only one method with a given name
Клеточку нарисовать
5. Supports single inheritance, not multiple
1. extends becomes < - class User < Person
Это вообще пошлятина.
6. Invoke the parent method of an inherited class with super
super()
7. Ruby has heredoc syntax
Давайте кавычки обзовём вот так. Это ерунда.
8. You can include files with the load method
Охренеть.
9. You can require files with the require method
1. loads any given file only once (like require_once) - load ‘filename.rb’
2. no extension necessary - require ‘filename’
Ну да, да, проехали - абсолютная идентичность
10. true and false are the same as in PHP
Да Вы чо!
11. the equivalent to null is nil
Аз есьм.
12. String concatenation is joining of two strings, using the + operator
не понял, а как же точка?
13. Constants begin with capital letters. Example PI, Length
Это Вы к похожести? Хочу Ваших грибов. У php вообще бардак! Php им гордится!
14. You can always see what object you are in (current object) by using the special variable self
Эээ, self::это как бы у всех.
15. Comparing two strings for equality can be done by == or .eql? (for identical content) and .equal? (for identical objects).
Ну это вообще детский сад. Какашки можно отличить потому, что они похожи на какашки.
16. instance_of? returns true if object is an instance of the given class
объектный примитив, детский сад
Differences
Разница, что то я уже пожалел, что ввязался в это дело, ну да ладно
1. No semicolons ; required after statements. A statement can end with a carriage return or a semi-colon if you choose. Semi-colons are generally used when you wish to have more than one statement per line
; после конца строки, в принципе, это сильное различие, даже не знаю хорошо это или плохо.
2. The increment and decrement operators (++ and –) are not available in Ruby, neither in “pre” nor “post” forms
Это типа правда = x.succ! = это только для строк (немного разочарован)
3. When calling a method you don’t have to use parentheses
1. foobar
foobar()
foobar(a, b, c)
foobar a, b, c
Тут вообще полная свобода - не понял, что имеют в виду, или сам недопонял.
4. You can use variables in your Ruby programs without any declarations. Variable name itself denotes its scope (local, global, instance, etc.)
Это я и в php могу - объявлять переменные просто так. Проще говоря - э
то не strict language. Со всеми сборщиками мусора.
1. Normal local variables are plain strings, global variables include a dollar sign at the beginning, and class variables begin with the at-symbol. This is definitely a departure from php in which every variable has a dollar sign
Ну тут всё просто - переменные с долларом ($fuck) есть глобальные - забавно, правда гыыы?
2. Ruby has strong typing. You’ll need to call to_s, to_i etc. to convert between strings, integers and so on, instead of relying on the language to do it
Всё объект!
Это просто я хочу строчку - пишу 5.to_s - тогда это будет строка. Или “5″.to_i это будет integer, хотя в ruby integer понятие относительное - ruby умеет вообще забыть о tiny int или big int (если мы вспомним как оно хранится) Забудьте об этом, руби пофигу на размер числа и на то как оно хранится - всё это объект, попробуйте вычислить на php действительно крупное число=). Уже проходили. php тут сосёт.
5. Blocks of code can use curly braces “{ }” or the “begin … end” keywords. I normally use begin and end, and as such I will through the rest of the tutorial, but just remember you can use braces instead if you like.
Это вообще Вам как паскалю предлагают, или как обычно, {}, цените, смерды.
6. Instead of naming conditions, like underscores, the standard library and extensions are organized in modules and classes
Я иногда не догоняю, но в NetBeans IDE кликну на функции - и вот оно. И написано на Ruby, опять же.
Тут просто всё.
7. While the return statement does exist and works like you would expect, it is not required and a function will return the last expression it evaluated
любая def от руби всегда что-то возвращает, без return, а просто так
8. Ruby also has a negated form of the if statement, the unless end
Всего лишь одно из условий, ерунда
9. You can access an array beyond its boundary limits; it will return nil
Тоже ерунда, в php этого нет, да и не надо особо, вернули nil - значит попа.
10. Reflection is an inherent capatibility of objects, you don’t need to use Reflection classes like in PHP 5
Тут пропущу
11. Ruby has no abstract or interface classes
А потому, что всё объект, это вообще смешно - всё объект и похуй
12. In Ruby, everything from an integer to a string is considered to be an object
Бля, повторение пройденного, всё объект
13. hashes and arrays are not interchangable
Это абсолютно разные вещи, хэши - это массивы с ключами, у хешей нет упорядоченности.
14. PHP does not officially support namespaces (yet) and Ruby does
Скоро у php буду namespaces.
Вот я думаю, что бы такого удумать. Вроде околопрограммерского и малопонятного окружающим.
Пока что рулит . Но это вряд ли похоже на околопрограммерскую тему=)
По мне так - одно и то же, что Muse и Ours, немножко пофантазийнее. Зато пафоса - на всех хватит.
Чтобы не быть мудаком - предлагаю послушать .
Ничего полезного не нашёл в twitter. Сервис полезный для одинаково недалёких. Это не то, чтобы я пальцы гну, сами за общим фоном посмотрите, со скуки можно умереть. Сходил в туалет, сколько займёт установка ubuntu, нас двое - это уже здорово. И правда, здорово, что Вас уже двое. Как только Вы поумнеете - сами оттуда уйдёте=) Куча эппл дрочеров, как ни странно очень много знакомых лиц. Ну ребята, я хз - скукота.
Ударил и залил полностью опять в который раз свой КПК - HP4700 и хоть бы хны. Он был у меня в сауне даже. В результате удара вылетела и утерялась sd карточка на гиг. Всё работает - хорошо, карточка потерялась плохо. HP техника - я лучше КПК не видел.
А сейчас у меня тема написать платформеннонезависимый клиент под свой же проект. Итого строго остановился на клиент-серверном ruby приложении. Во первых реализовать клиент-сервер на руби - это раз плюнуть и описано практически во всех пособиях для слабоумных. Обязательно TCP/IP соединение, и никаких HTTP запросов иначе, вот ещё - нагружать http сервер ajax херней каждые 5 секунд? Пройденный этап. Браузер начинает медленно кушать память и процессорное время и я устал бороться. Вот поэтому я выбрал руби, задача специфическая и не очень интересная. Интерфейс отрисовывал в ,
похоже на Delphi, кому то покажется похоже на ASP, с которым я не знаком. Интерфейс экспортируется в разновидность XML = (xrc) - вот это самый кайф, который потом легко подхватывается руби программой, например, вот так.
(скоро приделаю форматирование, пока так, пока Ваш браузер теряет форматирование xml можно посмотреть картинку )
моего xrc файла, описывающего кроссплатформенный интерфейс - можно загрузить его в этот DialogBlocks
Всё достаточно тупо.
Ну и вывести реальное приложение, чтобы оно запустилось
Ruby code
——————————————————
-
-
begin
-
require ‘wx’
-
rescue LoadError => no_wx_err
-
begin
-
require ‘rubygems’
-
require ‘wx’
-
rescue LoadError
-
raise no_wx_err
-
end
-
end
-
-
#
-
# Basic Frame Class. This creates the dialog window
-
#
-
class MainFrame < Wx::Frame
-
-
def initialize(parent)
-
# To load a layout defined in XRC into a Ruby subclass of Frame,
-
# first call the empty constructor. All the details of size,
-
# title, position and so on are loaded from the XRC by the call to
-
# load_frame_subclass. Using a non-empty constructor will cause
-
# errors on GTK.
-
super()
-
-
icon_file = File.join( File.dirname(__FILE__), "ico.png")
-
# PNG can be used on all platforms, but icon type must be specified
-
# to work on Windows; OS X doesn’t have "Frame" icons.
-
self.icon = Wx::Icon.new(icon_file, Wx::BITMAP_TYPE_PNG)
-
-
$xml.load_frame_subclass(self,nil,‘ID_WXFRAME’)
-
-
def xrcid_to_window(xrc_id)
-
Wx::Window.find_window_by_id(Wx::xrcid(xrc_id), self)
-
end
-
-
end
-
end
-
-
#
-
# Application class.
-
#
-
class ClientApp < Wx::App
-
-
def on_init
-
# Create a resource handler
-
$xml = Wx::XmlResource.get();
-
$xml.init_all_handlers();
-
-
# Load a resource file from the script’s directory
-
xrc_file = File.join( File.dirname( __FILE__ ), ‘operator.xrc’ ) # ключевое слово
-
-
$xml.load(xrc_file)
-
-
-
# Show the main frame.
-
$main = MainFrame.new(self)
-
$main.show(true)
-
-
end
-
end
-
-
ClientApp.new().main_loop()
-
—————————–
Можно пропустить всякие иконки, но общий смысл ясен.
Дальше в принципе понятно - навешать events на кнопки. Я сразу разбил классы на init, visual, events папки, стараюсь (без практики) применять mvc и dry к offline проекту. Ориентировочно, веб проект к себе более строг бывает - это было для меня удивлением. Но серверная часть - тот же руби, нормально написаный демон multithreaded. Обращается к той же самой базе данных mysql, с какой проживает веб интерфейс на php.