• Что делать, если не знаешь как решить задачи из SICP?

    alexeygrigorev
    @alexeygrigorev
    Переворачиватель пингвинов
    Я смотрел решения, пытался разобраться и написать похожее сам. Благо в интернете решений навалом
    Ответ написан
    Комментировать
  • Как база данных производит подсчет строк?

    Да, как реализован COUNT()?

    Зависит от:
    а) того, что будет внутри COUNT
    б) того что будет в WHERE (и будет ли он вообще);
    в) реализации в конкртеной СУБД;

    Пример 1: если вы сделаете COUNT с WHERE по неиндексированному полю, то без сканирования таблицы не обойтись. Кроме того, если поле внутри COUNT() может быть NULL, то СУБД придется выкидывать еще и нуллы, т.к. COUNT их не учитывает.

    Пример 2: если вы сделаете COUNT по первичному ключу без каких-либо фильтров, то СУБД вероятно просто вернет вам количество строк из своих служебных структур, т.к. первичные ключи а) уникальны; б) не могут быть NULL в большинстве сегодняшних СУБД.

    Вывод: SQL это высокоуровневый декларативный язык, который перекладывает принятие алгоритмических решений на планировщик СУБД, что дает очень большой простор для оптимизаций в конкретных реализациях. Лучший рецепт - построить план КОНКРЕТНОГО запроса и увидеть, что потребуется для его выполнения.
    Ответ написан
    Комментировать
  • Какие вопросы задают на собеседовании ruby junior(без rails)?

    Вот немного вопросов/ответов по Руби и немного по Рельсам:
    thereq.com/q/best-ruby-software-interview-question...
    https://github.com/gregstallings/ruby-trivia
    www.toptal.com/ruby/interview-questions
    www.skilledup.com/articles/ruby-on-rails-interview...
    www.codequizzes.com

    Еще недавно было обсуждение в гугл-группе по РоР

    з.ы.: а так самый частый вопрос на собеседованиях: просят ссылку на профиль на гитхабе
    Ответ написан
    Комментировать
  • Закон Деметры. Нужен ли?

    everzet
    @everzet
    Допустим вы хотите купить молоко:

    дом->лестница->машина_Opel->магазин->кассир_Люба->купить_молоко();

    Так как вы уважающий себя software developer который не видит смысла в законе Деметры, вы это скорее всего напишете в 10 разных местах системы.

    2 недели назад вы продали свой Opel и купили BMW. Вы теперь должны в 10 разных местах поменять код на:

    дом->лестница->машина_BMW->магазин->кассир_Люба->купить_молоко();

    Теперь, допустим вы начали переживать об экологии и хотите ездить за молоком не на машине, а на велосипеде. Вы теперь должны в 10 разных местах поменять код на:

    дом->лестница->велосипед->магазин->кассир_Люба->купить_молоко();

    Через пару дней Любу уволили и на работу взяли нового кассира Клаву? Меняем в 10 разных местах код на:

    дом->лестница->велосипед->магазин->кассир_Клава->купить_молоко();

    Через другую пару дней в вашем доме поставили лифт и вы не хотите бегать по лестнице за молоком? Меняем в 10 разных местах код на:

    дом->лифт->велосипед->магазин->кассир_Клава->купить_молоко();

    Мораль: этих всех замен можно мыло бы избежать, если бы для покупки молока вы использовали абстракцию:

    магазин->купить_молоко();
    Ответ написан
    8 комментариев