Пак ли този ? Стефан Кънев http://skanev.com / @skanev OpenFest 07 ноември 2009 Tuesday, April 27, 2010
Jul 09, 2015
Пак ли този ?
Стефан Къневhttp://skanev.com/@skanev
OpenFest07 ноември 2009
Tuesday, April 27, 2010
Tuesday, April 27, 2010
Tuesday, April 27, 2010
Tuesday, April 27, 2010
Аз ползвамWindows 7
Tuesday, April 27, 2010
Пак ли този ?
Стефан Къневhttp://skanev.com/@skanev
OpenFest07 ноември 2009
Tuesday, April 27, 2010
Пак ли този ?
Стефан Къневhttp://skanev.com/@skanev
OpenFest07 ноември 2009
Защо "пак"?
Tuesday, April 27, 2010
Tuesday, April 27, 2010
2 причини
Tuesday, April 27, 2010
Причина №1
❤
Tuesday, April 27, 2010
Java PHP Python Haskell Rails Lolcats
Продуктивност "Фън"
Tuesday, April 27, 2010
• CakePHP
• CodeIgniter
• "чисто" PHP
PHP• Catalyst
• "чист" Perl
Perl
• Django
• TurboGears
Python• Servlet & JSP
• Struts (+ Hibernate)
• Wicket (+ Spring)
• JSF
Java
Tuesday, April 27, 2010
Причина №2
...по-късноTuesday, April 27, 2010
За какво ще говоря?
Tuesday, April 27, 2010
Introduction
Tuesday, April 27, 2010
1. За Rails накратко
2. Няколко интересни неща
3. Обществото около Rails
Планът
Tuesday, April 27, 2010
1. За Rails накратко
2. Няколко интересни неща
3. Обществото около Rails
Планът
Tuesday, April 27, 2010
Ruby on Rails
Език запрограмиране
Web framework
Tuesday, April 27, 2010
duck typing
динамичен
обектно-ориентиран
интерпретира сеgeneral purpose
ала Perl и Python
Tuesday, April 27, 2010
ModelViewController
Tuesday, April 27, 2010
Rails е...
...като:• CakePHP• CodeIgniter• Struts• Catalyst• TurboGears
...различен от:• Wicket• Google Web Tookit• Java Server Faces
Django
Tuesday, April 27, 2010
agile
Tuesday, April 27, 2010
1. За Rails накратко
2. Няколко интересни неща
3. Обществото около Rails
Планът
Tuesday, April 27, 2010
2. Малки интересни неща
• Конзола
Tuesday, April 27, 2010
>> a, b = 2, 8=> [2, 8]>> a ** b=> 256>> ["Interactive", "shell"].join(" ")=> "Interactive shell"
Tuesday, April 27, 2010
>> u = User.find_by_email '[email protected]'>> u.password = 'larodi'>> u.password_confirmation = 'larodi'>> u.save
Tuesday, April 27, 2010
начин да научите rails
Tuesday, April 27, 2010
server debugging
Tuesday, April 27, 2010
2. Малки интересни неща
• Конзола• Debugger
Tuesday, April 27, 2010
2. Малки интересни неща
• Конзола• Debugger
• HAML
Tuesday, April 27, 2010
<h1>Cheese</h1><ul id="cheese"> <li>Red Leicester</li> <li class="selected">Lancashire</li> <li>Danish Blue</li> <li>Gouda</li></ul>
HTML
Tuesday, April 27, 2010
<h1>Cheese</h1><ul id="cheese"> <li>Red Leicester</li> <li class="selected">Lancashire</li> <li>Danish Blue</li> <li>Gouda</li></ul>
%h1 Cheese%ul#cheese %li Red Leicester %li.selected Lancashire %li Danish Blue %li Gouda
HTML
HAML
Tuesday, April 27, 2010
OMG! Супер!
Tuesday, April 27, 2010
OMG! Ужас!
Tuesday, April 27, 2010
<h1>Cheese</h1><ul id="cheese"> <li>Red Leicester</li> <li class="selected">Lancashire</li> <li>Danish Blue</li> <li>Gouda</li></ul>
%h1 Cheese%ul#cheese %li Red Leicester %li.selected Lancashire %li Danish Blue %li Gouda
HTML
HAML
Tuesday, April 27, 2010
<h1>Cheese</h1><% unless @cheese.empty? %> <ul id="cheese"> <% @cheese.each do |name| %> <li><%= name %></li> <% end %> </ul><% else %> <p>Sorry sir, we don't have any cheese.</p><% end %>
ERB
Tuesday, April 27, 2010
%h1 Cheese- unless @cheese.empty? %ul#cheese - @cheese.each do |name| %li= name- else %p Sorry sir, we don't have any cheese
<h1>Cheese</h1><% unless @cheese.empty? %> <ul id="cheese"> <% @cheese.each do |name| %> <li><%= name %></li> <% end %> </ul><% else %> <p>Sorry sir, we don't have any cheese.</p><% end %>
ERB
HAML
Tuesday, April 27, 2010
2. Малки интересни неща
• Конзола• Debugger
• HAML
• SASS
Tuesday, April 27, 2010
h1 { height: 118px; margin-top: 1em;}
.tagline { font-size: 26px; text-align: right;}
h1 height: 118px margin-top: 1em
.tagline font-size: 26px text-align: right
SASS CSS
Прост пример
Tuesday, April 27, 2010
SASS CSS
Влагане
table.hl margin: 2em 0 td.ln text-align: right
li font: family: serif weight: bold size: 1.2em
table.hl { margin: 2em 0;}table.hl td.ln { text-align: right;}
li { font-family: serif; font-weight: bold; font-size: 1.2em;}
Tuesday, April 27, 2010
SASS CSS
Константи
!blue = #3bbfce!margin = 16px
.content_navigation border-color = !blue color = !blue - #111
.border padding = !margin / 2 margin = !margin / 2 border-color = !blue
.content_navigation { border-color: #3bbfce; color: #2aaebd;}
.border { padding: 8px; margin: 8px; border-color: #3bbfce;}
Tuesday, April 27, 2010
SASS CSS
Mix-ins
=rounded-corners(!size) -moz-border-radius = !size -webkit-border-radius = !size border-radius = !size
#data +rounded-corners(5px)
#data { -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px;}
Tuesday, April 27, 2010
2. Малки интересни неща
• Конзола• Debugger
• HAML
• SASS
•Миграции
Tuesday, April 27, 2010
schema.sql
Tuesday, April 27, 2010
@Entityclass User { @Basic String name; @Basic int age; @ManyToOne City city;}
Автоматични промени
Tuesday, April 27, 2010
id title category_name
1 Dune Fiction
2 War & Peace Drama
3 Lord of the Rings Fiction
id title category_id
1 Dune 1
2 War & Peace 2
3 Lord of the Rings 1
id name
1 Fiction
2 Drama
Tuesday, April 27, 2010
class NormalizeCategories < ActiveRecord::Migration def self.up create_table :categories do |t| t.string :name end add_column :books, :category_id, :integer Book.all.each do |book| category = Category.find_or_create_by_name book.category_name book.category_id = category.id book.save! end drop_column :categories, :category_name endend
Tuesday, April 27, 2010
2. Малки интересни неща
• Конзола• Debugger
• HAML
• SASS
•Миграции• Webrat
Tuesday, April 27, 2010
Selenium
Tuesday, April 27, 2010
1. труден за поддръжка
Tuesday, April 27, 2010
2. бавен
Tuesday, April 27, 2010
Webrat
Tuesday, April 27, 2010
fill_in "Сума", :with => '1000'fill_in "Данък", :with => "20%"click_button "Изчисли"response.should include_text("1200 лв")
Tuesday, April 27, 2010
2. Малки интересни неща
• Конзола• Debugger
• HAML
• SASS
•Миграции• Webrat
• Cucumber
Tuesday, April 27, 2010
business domain
Tuesday, April 27, 2010
business analyst
Tuesday, April 27, 2010
use casesuser stories
Tuesday, April 27, 2010
Feature: Purchasing things In order for us to make money the user should be allowed to easily purchase our products Scenario: Purchases for more than 2500 should offer 20% Given there are these products: | Name | Price | | MacBook Pro | 2000 | | ThinkPad | 1000 | When I add 1 "MacBook Pro" to my basket And I add 1 "ThinkPad" to my basket Then the final price should be 2600
Tuesday, April 27, 2010
Feature: Purchasing things In order for us to make money the user should be allowed to easily purchase our products Scenario: Purchases for more than 2500 should offer 20% Given there are these products: | Name | Price | | MacBook Pro | 2000 | | ThinkPad | 1000 | When I add 1 "MacBook Pro" to my basket And I add 1 "ThinkPad" to my basket Then the final price should be 2600
Изпълнимо
Tuesday, April 27, 2010
Given /^there are these products$/ do |table| ...end
When /^I add (\d+) "(.*?)" to my basket$/ do |count, name| ...end
Then /^the final price should be (\d+)$/ do |price| ...end
Feature: Purchasing things In order for us to make money the user should be allowed to easily purchase our products Scenario: Purchases for more than 2500 should offer 20% Given there are these products: | Name | Price | | MacBook Pro | 2000 | | ThinkPad | 1000 | When I add 1 "MacBook Pro" to my basket And I add 1 "ThinkPad" to my basket Then the final price should be 2600
Tuesday, April 27, 2010
Tuesday, April 27, 2010
Функционалност: Купуване на продукти За да печелим пари потребителят трябва да може лесно да пазарува продукти Сценарий: Поръчките за повече от 2000 трябва да имат 20% отстъпка Дадено че има следните три продукта: | Име | Price | | MacBook Air | 2000 | | ThinkPad | 1000 | Когато добавя 1 "MacBook Air" в кошницата си И добавя 2 "ThinkPad" в кошницата си То цената трябва да е 2600
Краставицата ми говори български
Tuesday, April 27, 2010
OH HAI: I CAN BAI STUFF SO WE CAN HAZ MONEYZ N00BZ SHOULD BAI STUFF MISHUN: BAI STUFF CHEAPER I CAN HAS CHEEZEBURGERS: | NAME | MONEYZ | | MacBook Air | 2000 | | ThinkPad | 1000 | WEN I AD 1 "MacBook Air" TO MAI BASKET AN I AD 1 "ThinkPad" TO MAI BASKET DEN I SHOULD PAY 2600
Краставицата ми говори lolspeak
Tuesday, April 27, 2010
2. Малки интересни неща
• Конзола• Debugger
• HAML
• SASS
•Миграции• Webrat
• Cucumber
• Test-Driven
Tuesday, April 27, 2010
unit teststest-driven development
Tuesday, April 27, 2010
behavior-driven development
Tuesday, April 27, 2010
Test-Driven Development is not about testing.
Tuesday, April 27, 2010
Tuesday, April 27, 2010
ruby е гъвкав:
stubs & mocks
Tuesday, April 27, 2010
1. За Rails накратко
2. Няколко интересни неща
3. Обществото около Rails
Планът
Tuesday, April 27, 2010
хората
Tuesday, April 27, 2010
jQuery
Tuesday, April 27, 2010
Yehuda Katz
Tuesday, April 27, 2010
Yehuda Katz
jQuery Rails 3Tuesday, April 27, 2010
JavaScript
Tuesday, April 27, 2010
prototype.js
Tuesday, April 27, 2010
Rails is about less code.- David Heinemeier Hansson
Tuesday, April 27, 2010
Tuesday, April 27, 2010
Tuesday, April 27, 2010
много колоритни хора
Tuesday, April 27, 2010
Giles Bowkett
Tuesday, April 27, 2010
_why the lucky stiff
Tuesday, April 27, 2010
Zed ShawTuesday, April 27, 2010
Има и компании
Tuesday, April 27, 2010
Tuesday, April 27, 2010
Tuesday, April 27, 2010
блогове
Tuesday, April 27, 2010
Tuesday, April 27, 2010
Екосистема
Tuesday, April 27, 2010
Най-хубавото нещо:
Общността
Tuesday, April 27, 2010
Отворен (OS) модел за:
кодметодипринципи
Tuesday, April 27, 2010
?Tuesday, April 27, 2010
The happy programmer 2
Nikolay Bachiyski&
Stefan Kanev
Sunday, 10:00, OpenFest
Tuesday, April 27, 2010