Skip to content

Instantly share code, notes, and snippets.

Вопросы по шаблонам проектирования:
  • Почему глобальные объекты и статика — это зло? Можете показать на примере кода?
  • Расскажите об инверсии управления и как она улучшает организацию кода.
  • Закон Деметры (Принцип минимальной информированности) гласит, что каждый программный модуль должен обладать ограниченным знанием о других модулях и должен взаимодействовать только с непосредственными «друзьями» (иногда его формулируют как «Не разговаривай с незнакомцами»). Можете написать код, который нарушает этот принцип? Почему у него плохая организация и как её исправить?
  • Active-Record — шаблон проектирования, который поощряет внедрение в сам объект функций, таких как Insert, Update и Delete, и свойств, которые соответствуют столбцам некоей базовой таблицы в базе данных. По вашему мнению и опыту, какие ограничения и подводные камни у этого шаблона?
  • Data-Mapper — шаблон проектирования, который поощряет использование слоя преобразователей (mappers), перемещающих данные между объектами и базой данных, в то же
class StoreSerializer < ActiveModel::Serializer
attributes :id, :name, :logo, :about, :lat, :lng, :facebook_link, :twitter_link, :instagram_link, :pinterest_link, :youtube_link,
:address, :country, :state, :city, :zip, :email, :website, :work_time, :phone, :assign_admins,
:loyalty_cards_count, :balance, :reviews_count, :average, :paid, :slides, :pictures, :resipient_pop_up, :reward_bonus, :review_bonus, :front_badge_template, :tag_list, :price_range
belongs_to :category
has_many :menus
has_many :services
has_one :store_referral
has_one :company
"Эта история случилась с моим школьным приятелем Алексеем. Она произошла когда порядка не было на жд вокзалах и аэропортах. Алексей спокойно ждал пересадку в зале ожидания. Ожидать было недолго - 18 часов. Он развлекал себя как мог - собирался на второй раз перечитывать шедевр литературной мысли из серии «Я вор в законе», как вдруг увидел, как цыгане разводят такого же мужичка-путешественника.
Алексей подошёл поближе к этой компании и ему стало слышно обрывки фраз: «на тебе смертельная порча», «нужно срочно снимать», «все умрут», «нужны деньги или золото». Было видно, что бедный мужик под гипнозом, самая говорливая цыганка водила ему по лицу пером и что-то бубнила. Остальные 5-6 создавали фон. Мужик полез за кошельком. Алексею представил себя без денег в другом городе и ринулся защищать невменяемого.
- Товарищи цыгане, гражданин со мной, нам пора идти, - он взял несчастного мужичка под гипнозом за локоть и повёл в сторону. Тут же он ощутил, что его оттаскивают за шкирку. Он обернулся, сзади него стоял больш
Задача
В рамках тестового задания предлагается реализовать rest сервис на Ruby/Elixir, который позволит просматривать список репозиториев пользователей github.com, а так же коммиты в конкретном репозитории.
В качестве тестовых данных можно использовать имя пользователя matz и его репозиторий streem.
Требования к реализации
• Реализовать приложение с помощью Ruby/Elixir
module A
def initialize
puts 'A'
end
end
module B
def initialize
puts 'B'
super
def check(str1, str2)
str1.reverse == str2
# str1[0] # D
# str2[-1] # D
# str1[1] # D
# str2[-2] # D
# str1[2] # D
# str2[-3] # D
<%= form_for :member, url: new_member_business_role_path do |f| %>
<%= field_set_tag "Проекты", class: 'projects_fieldset' do %>
<% if @user.members.where(business_role_id: nil).empty? %>
<p>У данного пользователя нет свободных проектов для создания бизнес-роли!</p>
<% else %>
<% @user.members.includes(:project).where(business_role_id: nil).each do |member| %>
<label>
<%= f.check_box :project_ids, {multiple: true}, member.project.id, include_hidden: false %>
<%= member.project.name %>
</label>
# Redmine - project management software
# Copyright (C) 2006-2015 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
@dabonka
dabonka / capybara cheat sheet
Created November 21, 2016 17:46 — forked from zhengjia/capybara cheat sheet
capybara cheat sheet
=Navigating=
visit('/projects')
visit(post_comments_path(post))
=Clicking links and buttons=
click_link('id-of-link')
click_link('Link Text')
click_button('Save')
click('Link Text') # Click either a link or a button
click('Button Value')
@dabonka
dabonka / .md
Created November 21, 2016 16:44 — forked from iAdramelk/.md
Длинная телега про Бутстрап

Английская версия: https://evilmartians.com/chronicles/bootstrap-an-intervention

Вводная часть

У CSS есть несколько базовых проблем, которые позволяют очень быстро отстрелить себе ногу при неправильном использовании:

  1. Глобальный неймспейс – в серверном программировании все что написано в файле, в файле и остается. Все же что написано в css и js засирает глобальное пространство имен со всеми вытекающими. В JS эту проблему сейчас побороли всякими модульными системами, а вот с css сложнее. В идеальном мире это должен починить Shadow DOM и настоящие Web Components, но пока их нет единственный способ с этим бороться – следовать какой-то системе именований селекторов, которая по возможности уменьшает и исключает возможные конфликты.

  2. Каскадность – если на один элемент может сработать несколько правил, то они все и сработают последовательно. Если есть элемент h1.title, на него сработают все правила для тегов h1 и все правила для класса .title. Так как весь html состоит из тегов, то правил которые п