Новости

PHP, Ruby, Программирование

26.07.2009 03:17 7 месяцев, 2 недели назад

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

По проекту потом напишу подробнее, а пока всякие размышления дурные, пока дорогие гости баиньки.

Как же хорошо, думаю, может это очень круто, когда достаточно много умных людей пропихивают патчи свои во всяческие фреймворки. У меня два френда на глазах творят такие чудеса=)  Где-то даже подзаряжаюсь и прусь.

В деталях об этом не обязательно, мысль о том, что где-то находится грань в общих фреймворках. Именно, время на осознание проблемы, ее вычленение, решение, отписать, принятие патча. Чо то как-то долго. Реально этого времени нет. И ведь не факт, что не поломают совместимость в конце концов, которую придумал, задействовал, гордился, мучился. Не, тут точно присутствует момент истины.  А через год? Фсе freeze? Ну к чему и приходим – своим веткам или разруливанию постоянному. Речь какбе о том, что надо походу все наработки всегда открывать, делать из них собственный продукт и потом пользовать идеи, словно цезарь имея личную версию ядра, фреймворка или любого другого гумна. И только цезарь имеет право давать жизнь или отнимать. По моему, это полный отстой. Ой, у нас обнаружили уязвимость. unfreeze fail.

Глупо бежать впереди паровоза, ну беру-то простую версию проблемы – веб. Несколько простых правил меня вполне устраивают. Разруливалка url, mvc, несколько базовых классов, кочующих из проекта в проект.  Каждому контроллеру свой view, за исключением  ajax, там свое небольшое правило. Любой повторяющийся код – в класс, до неймспейсов пока не дорос, гг.

И хватит! Может я тупой, но через год не факт, что вспомнить, что такое .to_thru

Я реально пишу тупо, хотя могу классово верно и красиво. Чем дальче пишу, тем тупее. Правильно, это мне же и поддерживать. А через год посмотреть? PHP прекрасно подходит для преднамеренно simplifity. Скобки там, где без них можно было бы и обойтись. ОК! Строго, такое вот занудство. Там, где можно написать логику в одну строку, напишу в две, не запарюсь через год.  Красота вида красота.ага.угу.достал обманчива, это злой perl стучится в окно.

Всякая остальная фигня – вроде бесполезной генерации форм, глупой УНИВЕРСАЛЬНОЙ валидации, которая бывает неочевидна, ну реально не стоит заморачиваться. ORM, мечтаю иметь полотенце с надписью ORM, купаться, а потом его вытряхивать тараканов.

На что стоит заморачиваться и решается сторонними методами – кеш, масштабирование.

Это все о деньгах.

Rails for PHP developers

PHP, Ruby, Программирование

02.12.2008 16:29 1 год, 3 месяца назад

http://railsforphp.com/reference/ – прикольный переводчик функций php в ruby, когда пробовал не хватало такого.

mod_rails

Ruby, Программирование

22.04.2008 14:13 1 год, 10 месяцев назад

На днях был зарелизен вот такой продукт как mod_rails – модуль к апачу. Самое интересное, что это не  заброшенный mod_ruby, это другая история, да ещё и с другими фреймворками не работает. Как шутят сами авторы -

Does it support other Ruby frameworks (Merb, Camping, etc.)?
No.
What?! Why??
Because this is an evil plot created by evil overlords, with the goal of world domination destroying all other Ruby frameworks.
 
 Останется только один=)

Вторая серия обработчиков контента

Ruby, Программирование

02.03.2008 08:46 2 года назад

Захотелось на будущее написать скрипт, который будет постить автоматом нужный URL во все известные сервисы закладок сайтов на свой аккаунт. Я уже писал про ruby библиотеку mechanize, при помощи которой это делать очень просто. Всё достаточно тривиально, полная имитация действий пользователя, описанная скриптовым языком. Но вот незадача – в некоторых сервисах (например в бобре), форма добавления url отрабатывается через javascript, который mechanize не умеет. Поиски натолкнули меня на интересный ruby gem – firewati

(есть ещё предок – watir), но он для IE, которого под линуксом у меня нет, я firefox больше люблю.

Кратко – это и библиотека на руби и extension к firefox, после установки экстеншена и запуска firefox с ключом -jssh extension открывает из браузера порт на локалхосте, к которому происходит коннект из руби для полноценного управления браузером. (В принципе, это может быть и любой другой язык вместо руби – какая разница, чем в сокет писать.)

Код при этом выглядит примерно так:

#!/usr/bin/ruby
require 'rubygems'

@url = "http://xxx.com"
@title = "xxx"
@desc = "xxx"
@tags = "xxx,xxx,xxx"
@tags_pr = @tags.gsub!(/,/,' ')

#Include the FireWatir file.
require 'firewatir'

#include the FireWatir Module.
include FireWatir

ff=Firefox.new

ff.goto("http://bobrdobr.ru")

if ff.text_field(:name,"login")
#Put your user name.
ff.text_field(:name,"login").set("xxx")
#Put your password.
ff.text_field(:name,"password").set("xxx")
#Входим
ff.button(:src,"http://static.bobrdobr.ru/images/enter.gif").click
end
#добавляем
ff.goto("http://bobrdobr.ru/addurl.html")

ff.text_field(:name,"url").set(@url)
ff.text_field(:name,"title").set(@title)
ff.text_field(:name,"description").set(@desc)
ff.text_field(:name,"tags").set(@tags)

ff.button(:src,"http://static.bobrdobr.ru/images/save.gif").click

Вуаля=) Правда с русским языком при передаче проблемы – корябается…
Таким образом, этот движок можно использовать как частичную замену юнит тестингу, в отличии от extensions, которые записывают действия для последующего проигрывания тут можно реально из языка всё делать динамически и очень просто. С документацией не очень, но исходники открыты…

Запишу, чтобы не забыть

Ruby, Программирование

04.01.2008 22:17 2 года, 2 месяца назад

Эмуляция with на Ruby

  1.  
  2. module Kernel
  3.   def with(obj, &b)
  4.     obj.instance_eval(&b)
  5.   end
  6. end
  7.  
  8. Usage:
  9.  
  10. class Foo
  11.   def dostuff
  12.     puts "doing stuff in Foo"
  13.   end
  14. end
  15.  
  16. foo = Foo.new
  17.  
  18. with foo do
  19.   dostuff
  20. end
  21.  

Самое интересное

Ruby, Программирование

03.01.2008 20:13 2 года, 2 месяца назад

Самое интересное в ruby-talk – это bytecode. Надо, надо.

И вот Абдулов помер, я считаю, что он помер 1-го, просто народу не стали портить.

Почему Curl посасывает

Ruby, Программирование

03.01.2008 19:07 2 года, 2 месяца назад
  1.  
  2. #!/usr/bin/ruby
  3.  
  4. require ‘rubygems’
  5. require ‘mechanize’
  6.  
  7. class MechanizeFacebook
  8.   def initialize(auth, verbose = false)
  9.     @auth = auth
  10.     @verbose = verbose
  11.     @agent = WWW::Mechanize.new
  12.     @agent.user_agent_alias = ‘Linux FireFox’
  13.     @agent.redirect_ok = true
  14.   end
  15.  
  16.   def login
  17.    page = @agent.get(‘http://www.facebook.com/’)
  18.    #pp page if @verbose
  19.    
  20.    login_form = page.form(‘loginform’)
  21.    pp login_form if @verbose
  22.    
  23.    #login_form.email = @auth['email']
  24.    #login_form.pass = @auth['pass']
  25.    #pp login_form if @verbose
  26.  
  27.    #page = @agent.submit(login_form)
  28.    #pp page if @verbose    
  29.   end
  30. end
  31.  
  32. auth = {‘email’ => ‘yourlogin’, ‘pass’ => ‘yourpassword}
  33. mf = MechanizeFacebook.new(auth,  true)
  34. mf.login
  35.  

посмотрите как клёво делает эта Mechanize, часть я закомментировал, ну это понятно для посвященных. Ruby – пиздатый язык, продолжаю бухать.

основные паттерны на руби

Ruby, Программирование

27.12.2007 17:21 2 года, 2 месяца назад

Классная pdf!!! http://xet.ru/rails/patterns.pdf

Вот тоже клёвый кусочек

Ruby, Программирование

27.12.2007 15:38 2 года, 2 месяца назад

поменять значения переменных

  1.  
  2.  a, b = b, a
  3.  

тест подсветки кода

Ruby, Программирование

27.12.2007 15:24 2 года, 2 месяца назад
  1.  
  2. require ‘rake’
  3.  
  4. FILES = FileList[‘/home/**/*.php’]
  5.  
  6. p FILES
  7.  

Мне нравится этот код