Giter VIP home page Giter VIP logo

answers's Introduction

Note: весь код работает на ruby 1.9 (не ставил цели запустить на 1.8)

Level 1

A1

  1. nokogiri + mechanize - Удобный парсинг сайтов
  2. wirble - autocomplete и подсветка в консоли
  3. active_support - много полезных расширений
  4. rspec2 - тесты

A2

Одекватность людей в команде :). Покрытие тестами. Не очень хорошо, когда люди комитят не рабочий код в основную ветку. Комментарии к коду должны быть на английском языке, если заказчиком не оговоренно иное. Так же удобно называть файлы именами классов (для удобной навигации по коду)

A3

lambda и proc-и часто использую, но ruby более OOP way, чем функциональный.

A4

Использую Rails (ActiveSupport, ActiveRecord) даже не в web проектах. С ActiveRecord удобно поддерживать базу в актуальном состоянии (migrations). ActiveSupport дает очень много полезных функций.

A5

Для дебага мне всегда хватает тестов и логов. Для мониторинга нагрузи сети мы написали тулинг вокруг bwm-ng.

A6

Недостаков не знаю вроде (привык уже). Нравится retry (в Java, C# такого нет)

A7

Javascript, CoffeeScript, Objective-C, C/C++, C#, Java, Action Script

Level 2

A1

1660 / 100 != 16.6 - потому что тут деление на цело. Чтобы условие выполнялось необходимо, чтобы один из операндов был вещественного типа. (1660/100.0 == 16.6) 24.0 * 0.1 != 2.4 - из-за стандарта представления чисел с плавующей точкой в разрядной стетке. Необходимо проверять равенство с учетом некой дельты:

delta = 0.1 ** 6
(24.0 * 0.1 - 2.4).abs <= delta

A2

  1. Я бы выбрал BSON да еще бы пожал бы его через gzip
  2. Поддержка бинарных данных (без эскейпинга), что позволит эффективно передавать вложения. Хорошая поддержка формата на обоих сторонах (ruby - bson_ext, action script - https://github.com/argoncloud/ActionBSON).

A3

Потоки это механизм паралельного выполнения кода в одном процессе. При этом общая память доступна для чтения и записи. Форки - это механизм копирования процессов. При этом общая память доступна только для чтения. В случае с руби (MRI) настоящего параленього выполнения в потоках можно добиться только в IO или на native уровне. Насчет инструментария, то мне только известны Java профайлеры и дебагеры.

A4

На базе EventMachine, можно писать настоящий асинхронный код на ruby. Ruby 1.9 fibers позволяют скрыть множественные callbacks и делают год более простым.

A5

grab.rb и grabber.rb

спека grabber_spec.rb

Level 3

A1

Достаю только картинки из тэгов IMG и скачиваю их в 10 потоков

finder.rb

спека finder_spec.rb

A2

Вообщем ruby медленный язык, так как интерпретируется каждый раз. Evan делает rubinius с JIT-ом и убирает GIL. Как я понимаю, за rbx будущие, но сейчас он сильно отстает по производительности от 1.9 MRI. Один из путей оптимизации кода - это переписывать на C узкие участки программы. Если native code не брать в расчет, то я предерживаюсь следующий здравых правил:

  1. Не плодить объекты - GC медленный в ruby
  2. Не делать callstack большим - тоже связанно с работой GC
  3. Не использовать eval

A3

  1. Заранее построить индексы по полям [Возраст, Рост, Индекс, Сумма Денег]
  2. Начинать фильтровать записи с узких индексов [индекс, сумма денег] даллее [Возраст, Рост].
  3. Оставшиеся записи проврить фильтром [Пол] (Если он есть)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.