Вкратце суть примерно такова: есть глобальные показатели (общие очки, общая разница мячей и т.д), но при равенстве глобальных показателей у группы команд используется подсчет показателей между этими командами. То есть понятно, что должен быть первый запрос, а заним второй запрос с горстью костылей. Чистый sql не пройдет, судя по всему.
Рубрика «ооп» - 45
Спорт. Турнирные таблицы с личными показателями при равентсве очков
2013-01-06 в 13:34, admin, рубрики: php, python, sql, Веб-разработка, ооп, спорт, метки: PHP, python, sql, ооп, спортLLST: Новая жизнь Little Smalltalk
2012-12-28 в 8:37, admin, рубрики: c++, Little Smalltalk, LLST, smalltalk, ооп, Программирование, метки: Little Smalltalk, LLST, smalltalk, ооп 
Всем привет! С прошедшим концом света и с наступающими праздниками :)
В качестве подарка сообществу Open Source, а так же любителям антиквариата, мы (совместно с товарищем humbug) решили выложить нашу последнюю исследовательскую разработку.
Предлагаем вашему вниманию с нуля переписанную на C++ реализацию виртуальной машины, совместимую с Little Smalltalk. На данный момент написан код виртуальной машины и реализованы базовые примитивы. Humbug написал серию простых тестов, которые, тем не менее, помогли обнаружить проблемы и в оригинальной версии VM. Реализация бинарно совместима с образами оригинального LST пятой версии.
Месяц работы, 300+ коммитов. А что получилось в итоге, можно узнать под катом.
Читать полностью »
Обучение программированию через игру или как быстро собрать весь мёд
2012-12-28 в 7:15, admin, рубрики: python, образование, ооп, метки: python, образование, ооп Несколько лет назад я начал преподавать свой любимый язык python школьникам. И возникла такая задача: рассказать про объектную модель, но что бы это было не скучно и как можно нагляднее. И тут меня не сразу, но осенило — пчёлы!
Читать полностью »
Методика проектирования CORE
2012-12-25 в 11:37, admin, рубрики: agile, Core, Events, ненормальное программирование, ооп, Программирование, событийное программирование, метки: Core, Events, ооп, событийное программированиеЯ работаю программистом более 5 лет (web), и хотел бы поделиться методикой, которая экономит силы, время и помогает автоматизировать процесс проектирования.
Методика основана на объектно-ориентированном проектировании, но несколько необычна. Зато имеет очевидные плюсы:
— в идеале, программирование по CORE сводится к описанию задачи (код близок к бизнес-логике)
— чётко разделяет систему на слабосвязанные компоненты
— легко автоматизируема, позволяет генерировать осмысленный код
Почему методика называется CORE и как это расшифровывается? Отчасти потому, что у меня тяга к красивым названиям. По буквам:
Context — контекст вычислений (что инициировало вычисления)
Object — объект, который производит вычисления
Request — действие, которое нужно совершить, чтобы объект смог продолжить вычисления
Event — событие, которое происходит с объектом
Плюсы по сравнению со стандартными способами разработки:
— ускорение стадии проектирования за счёт формализованной схемы проектирования
— ускорение стадии разработки за счёт умной генерации кода
— автоматизация создания юнит-тестов
— неглючная реализация бизнес-логики практически любой сложности
— простая поддержка кода
— простота совместного владения кодом
Минусы стандартных способов по сравнению с CORE:
— часто нельзя окинуть одним взглядом всю часть системы
— нужно самому продумывать когда и в каком месте будут вызываться обработчики тех или иных действий. CORE разруливает вызовы автоматически.
— часто вводятся дополнительные уровни абстракции, не связанные с бизнес-логикой, чтобы реализовать её особенности. в CORE это не нужно.
— программист часто совершает кучу однообразных действий, которые легко можно автоматизировать
— юнит-тестирование внедрять тяжелее
Особенности обработки исключений в Windows
2012-12-24 в 12:23, admin, рубрики: c++, исключения, ооп, Проектирование и рефакторинг, метки: c++, try-catch, исключенияПрочитав недавний топик "Использование try — catch для отладки" решил все таки в качестве дополнения поделиться и своим опытом.
В этой статье предлагаю рассмотреть
получение callstack’а места, где было брошено исключение в случае работы со
структурными исключениями (MS Windows). В детали работы исключений вдаваться не будем, т.к. это тянет на отдельный цикл статей (для интересующихся рекомендую Рихтера, MSDN и wasm.ru). Конечно, есть много уже готовых проектов для генерации minidump’ов (например CrashRpt или google-breakpad), так что эта статья носит больше образовательный характер.
Что делать с полученным стеком вызовов — решать вам. Можно смотреть отладчиком, можно записать в файл и смотреть сторонней программой (для этого не забудьте записать список загруженных модулей с их адресами, а так же вам понадобятся отладочные символы).
Читать полностью »
Использование try — catch для отладки
2012-12-20 в 19:30, admin, рубрики: c++, исключения, ооп, С++, метки: исключения, С++ Итак, вы написали программу, запустили в отладчике — все хорошо, все нормально. Поставили в рабочий процесс — валится. Причем, в самых неожиданных местах.
Что делать?
Начинаем думать. Везде ставить try-catch… вычислительный блок будет здорово тормозить. Значит, надо сделать отладочную версию. Значит, вводим
#define __TRY__DEBUG__
Читать полностью »
implements Interface → надо ли оно нам?
2012-12-14 в 3:30, admin, рубрики: interfaces, ruby, ruby on rails, ооп, метки: interfaces, ооп 
Сначала пара слов о картинке. По запросу «object oriented programming» к гугл.картинкам она отдается на первой странице. Так-то.
Все мы с молоком матери впитали, что «еврибади из обжект», достаточно вспомнить о «mov ax dx», который, согласно первым AI, переводится на русский язык как «двинул топором начальника штаба». Тем не менее, иногда хочется стройности. Особенно, когда твоя библиотека переживает очередной git push, и ты понимаешь, что теперь обязательно найдется кто-нибудь, жаждущий вызвать Divider.new (UndividedObject.new).
Читать полностью »
Немного об интерфейсах в .Net (по мотивам одного интервью)
2012-11-13 в 4:16, admin, рубрики: .net, implicit, interface, интерфейсы, ооп, метки: implicit, interface, интерфейсыВ прошедний понедельник мне посчастливилось попасть на собеседование на Senior .Net Developer в одну международную компанию. Во время собеседования мне предложили пройти тест, где ряд вопросов был связан с .Net. В частности в одном из вопросов надо было дать оценку (истина/ложь) ряду утверждений, среди которых было и такое:
В .Net любой массив элементов, например int[], по умолчанию имплементирует IList, что позволяет использовать его в качестве коллекции в операторе foreach.
Быстро ответив на этот вопрос отрицательно и отдельно дописав на полях. что для foreach необходима имплементация не IList, а IEnumerable, я перешел к следующему вопросу. Однако по дороге домой меня мучал вопрос: имплементирует ли массив все-таки этот интерфейс или нет?
Про IList я смутно помнил, что этот интерфейс дает мне IEnumerable, индексер и свойство Count, содержащее число элементов коллекции, а также еще пару редко используемых свойств, типа IsFixedCollection(). Массив имеет свойство Length для своего размера, а Count в IEnumerable стандартно перекрыт методом расширения от LINQ, что было бы невозможно, если бы этот метод был имплементирован на уровне объекта. Таким образом, получалось, что массив не мог имплементировать этот интерфейс, однако какое-то смутное чувство не давало мне покоя. Поэтому вечером после интервью я решил провести небольшое исследование.
Fuelphp в полевых условиях
2012-10-26 в 10:55, admin, рубрики: api, framework, fuel, fuelphp, php, ооп, фреймфорк, метки: api, framework, fuel, fuelphp, фреймфоркПриветствую вас, читатели и интересующиеся. Написание этого поста было делом времени, поэтому не стал откладывать и решил написать сейчас. Ранее я уже публиковал описание возможностей Fuelphp. На тот момент я только создал русский сайт документации, группу, написал несколько тестовых приложений на данном фримворке.
В этой статье хочу поделиться своим опытом использования данного инструмента в реальном проекте. Нужно было сделать удаленную админ панель и через api реализовать управление сайтами-клиентами. Требования: модульность, оптимизация под нагрузки, использование API Youtube, ЧПУ.

