Розыгрыш билетов на Topconf!

Комрады, Халоха!


Хочешь пойти на TopConf — ИТ конференцию, которая пройдёт 1-2 ноября у нас в городе?! Если ответ положительный, то имеется неплохой шанс получить один из 3-4 билетов, которые мы сейчас разыграем.

Итак, чтобы у всех был шанс выйграть билет, мы придумали 3 задания: для кодера, для дизайнера и для просто креативного девклубера. Таким образом мы даём шанс каждому поучаствовать!

Кодерское задание

Дано:
Если выписать подряд все натуральные числа, получится бесконечная последовательность цифр:
123456789101112131415161718192021...

Найти:
цифру номер N в данной последовательности. N может быть очень большим. Ну скажем, до 100500 или 1000000005000000000, кто знает =)

Например:
f(1) = 1
f(7) = 7
f(10) = 1
f(17) = 3

Это задание можно легко решить на Руби в одну строку (что-то типа [1..N].to_a.join()[N]), но это решение будет медленным и памятижрачным при больших N. А вот сделать решение, которое бы не составляло всю строку — это интересно.

Оценивается всё: скорость работы, чистота и элегантность кода, и всё такое!

Необходимо понимать, что комиссия должна иметь возможность запустить этот код. Поэтому, если вы решите написать решение на каком-нибудь эзотерическом языке, то подумайте дважды, или позаботьтесь о том, чтобы всё необходимо для запуска было в архиве.

Дизайнерское задание

Необходимо разработать дизайн визитной карточки для девклаба.

Требования:

  • Язык — Английский, за Русский и Эстонский варианты доп. очки
  • Адрес эл. почты — info@devclub.eu

Все остальные детали на вкус и цвет автора. Логотип девклаба в хорошем качестве можно найти тут.

Креативное задание

Тут всё ещё проще — надо придумать демотиватор, используя любую фотографию, сделанную в девклубе в этом году! Автор самого смешного (по мнению комиссии) демотиватора получит приз. Много фотографий можно найти у Кирилла в фото-ленте или у меня [1], [2] или просто в постах за прошедшие встречи.
В помощь троллям креативщикам — конструктор демотиваторов!

Для участия в конкурсе необходимо прислать вашу поделку на адрес info@devclub.eu. Большая просьба не шарить свою работу нигде более до объявления результатов.

Удачи, и да прибудет с вами Сила!

P.s.
Если чего не ясно, пишите в коменты, или в гуглогруппе.

Ixonos ищет работяг

right

Фирма Ixonos ищет себе программистов в свеженький и еще горяченький отдел разработчиков.

Хорошо, если бы у он имел пару лет опыта с Java (в крайнем случае c++ или qt), мог говорить по-английски без переводчика на технические темы и желал обучаться.

Остальную информацию можно узнать здесь с пометкой devclub в сабжекте. CV посылать туда же. 🙂

Follow-up Апрель 2011

Всем привет!

Лучше поздно, чем никогда. Вот и пост о том как прошла встреча в отеле Суси 27-ого Апреля.

И сразу в фотки:

По exit-poll’у я выяснил, что в принципе все остались довольны, чему я очень рад. Это говорит о том, что можно и далее изредка приглашать PhD студентов с рассказами о том, чем они занимаются.

Для тех кто не был расскажу о том что же у нас было. Я пришёл в 6.15, где меня уже ждал Костя Третьяков, а в зале крутились Алек со своим помощником. До 6.45 разбирались с музыкой и интернетом. В итоге нашли клёвейший звуковой пульт с микшерами и остальной аудио-техникой, а вот нормального интернета, к сожалению в Суси так и не появилось =( В 7.05 таки начали девклаб. Я показал слайды с вступительной речью и дал слово Косте.

Костя Третьяков (ВИДЕО) сделал увлекательное введение в мир компьютерного обучения (ML). Представил задачу ML терминами дедукции и индукции. Потом рассказал о различных подходах к проблеме классификации: по аналогии, с весами, деревья и прочие. Рассказал как работает метод N-ближайших соседей, SVM, перцептрон (нейронная сеть) и прочие. Те, кто ничего не знал про эту тему получили неплохой толчок в область компьютерного обучения. Слайды Кости можно найти тут. А весь код, который он показывал лежит тут. Костя предложил всем, кому интересно и кто хочет попробовать свои силы в данной области написать спам фильтр для всех своих электронных писем.

Следующим выступал Юра Гуляев (ВИДЕО) с рассказом о том, как можно предвидеть рефакторинг базы Oracle, и сразу применить необходимые хитрости. В частности, после небольшого введения о том как база данных хранит данные и что такое rawid, он поведал нам о магическом свойстве PCTFREE, о партиционировании и о кластеризации. Для людей не подготовленных, но заинтересованных может быть было сложновато всё понять сразу, по-этому я рекомендую пересмотреть на видео =)) Его слайды можно найти тут, а весь SQL код, который он запускал, как я и обещал, можно добыть тут.

Последним нас порадовал Влад Иванищев (ВИДЕО), совершив вместе с нами увлекательное путешествие в мир энергетики, электрохимии и прекрасного, зелёного будущего, что нас ждёт. Влад говорил про многое: про кирпичики мироздания, показав, что наш мир — это чередование порядка и хауса, при это первое — это работа, а второе — тепло. Он говорил про ионные жидкости, за которыми будущее энергетики и даже металлургии. Так же говорил и про графен и про то как его можно применять и ещё многое и многое другое. Ограничело нас только время, так бы мы слушали его ещё очень долго. Слайды Влада можно посмотреть тут. В конце Влад предложил необычное «домашнее задание», в котором он попросил всех присутствующих правильным образом выкинуть свои старые батарейки и указать какие и сколько было выкинуто. А также ему интересно сколько у вас всего дома батареек в разных устройствах. Потом подведём результаты =)

Не забывайте ставить оценки выступающим (форма будет под каждым из видео).

Всем спасибо, что пришли. Ждём вас в следующий раз!

Семинар BDD: работа над ошибками

Привет.
На последней встрече DevClub 26 октября мы предприняли попытку провести семинар по BDD.
К сожалению, в практической части мы преуспели мало, поэтому попытаемся проанализировать результаты здесь.

Итак, было дано практическое задание — регистрация на девклуб:
Continue reading Семинар BDD: работа над ошибками

Домашнее заданее на июль месяц

Всем привет!
Последнее домашнее задание явно показывает, что многим нравиться делать небольшие и несложные домашние задачки. По-этому вот вам ещё одна! =)

Задание:
Надо написать метод, которые переставляет первые n элементов массива в конец этого массива. При этом есть одно ограничение: Использовать можно только один (данный) массив.

Т.е. реализовать такой вот метод:
Object[] moveNElementsToTheEnd(Object[] initArray, int n), где входной массив [1, 2, 3, 4, 5, 6, 7] с n=3 должен выдать [4, 5, 6, 7, 1, 2, 3].

Как обычно код предоставляем в комментариях в виде ссылок на сайты типа http://codepad.org/ или http://pastebin.com/. Язык написания — любой, качество написание (уровень говнокодистости) — любой.

И ещё одна деталь — если возможно, там же в листинге кода оставьте какой-нибудь лог промежуточных состояний этого массива во время выполнения алгоритма для массивов чисел от 1 до 10 и от 1 до 13! (т.е. конкретно то, что выдаёт программа во время запуска)

Удачи и до встречи на следующем, Июльском девклабе!!

Домашнее задание на июнь

Привет!
Следующая встреча DevClub состоится в конце июня (дата уточняется).

Но уже сейчас у нас есть домашнее задание для закрепления материалов последней встречи. Победитель получит признание соплеменников и ценный приз!

Задание: Напечатать на экране следующее:
1
2-1
1-2-3
4-3-2-1
1-2-3-4-5
6-5-4-3-2-1
(Естественно, вместо 6 может быть любое число).

Внимание! Необходимо представить два решения на любом языке:
1. Максимально лаконичное/красивое/читабельное
2. Максимально говнокодистое (но не слишком много. Скажем, ограничение в один экран.)

Решения можно представить в комментариях к этому посту со ссылкой на код в http://pastebin.com либо послать на адрес andrei[тчк]solntsev[сбк]gmail[тчк]com.

Ждём ваших решений!

ДЗ: Разминка для мозга

Предагаем поупражнятсья в написании простенькой программы. Приглашаются все желающие. Выбор языка программирования за вами — хотите, пишите на Clojure, Scala, JavaScript или Python, а хотите — пишите на Brainf*ck, нам всё равно 🙂 Оцениваться будет элегантность и простота решения, так что не стоит заморачиваться на супер-пупер-оптимальный алгоритм.

Итак, задание:

Дано дерево (структура данных такая), вершины которого имеют некий вес (размер) в условных единицах (у.е). Подразумевается, что дерево это надо переслать из системы А в систему Б по «трубе», пропускная способность коей ограничена заданной величиной. Задача состоит в том, чтобы разбить это дерево на поддеревья, так чтобы максимально эффективно использовать канал передачи данных с возможностью сборки изначального дерева на стороне получателя.

Иллюстрация к заданию

Исходное дерево:

Обратите внимание что дерево никак, не отсортировано — такое условие задачи!

buffer=40 означает, что пропускная способность канала будет 40 у.е., тем самым разбитое на части дерево будет выглядеть примерно так:

Таким образом, мы видим, что при разбивке получилось 3 дерева, размер которых не привышает 40 у.е.

Решения предлагаем присылать ссылкой на код в http://pastebin.com. Ждём ваших решений! Решившим респект и уважуха, а лучшему решению (по очень субъективным оценкам) — приз!

Кому лень придумывать свои данные для проверки, вот вам вариант для проб, копируйте как есть:

buffer=40
A,8,-
B,9,A
C,1,A
D,14,B
E,4,D
F,7,D
G,11,F
H,22,F
I,17,C

Домашнее задание. Паттерны.

Всем добрый день.
Как вы помните на нашей предыдущей встрече Игорь Меньков обещал дать домашним заданием задачку по паттернам. Оно перед вами. Итак:

Необходимо создать систему для обслуживания частных и корпоративных клиентов используя веб приложение.

Требования к системе:

  • Доступ 24/7
  • 10 000 – 200 000 уникальных пользователей
    1. Максимум 3 000 одновременных пользователей
  • Эргономичный интерфейс
  • Интеграция с back-end системами
    1. Часть данных будет специфична только для данной системы
  • Наличие cache для увеличения производительности
  • Обеспечение целостности сохраняемых данных
  • Обеспечение одновременного доступа к данным для нескольких пользователей
    1. Гарантия изменений только последней версии данных
  • Маштабируемость

Задание:

  • Выбрать платформу для данной задачи
  • Выбрать любой(-ые) фреймворки для реализации системы
  • Определить какие шаблоны (паттерны) будут использованы, для чего
  • Желательно не просто назвать паттерн, но также описать его использование
    1. Просто текстом
    2. UML
    3. Ссылка на внешний ресурс с описанием

Оценивание:

  • В первую очередь будет оцениваться целостность решения
  • Во вторую очередь оценивается описание используемых паттернов
  • Количество паттернов будет учитываться, но не будет являться основным критерием

Ваши варианты решения отправляйте по адресу igor[тчк]menkov[собака]helmes[тчк]ee не позднее 25го февраля. Победитель будет обьявлен на встрече 26го февраля.

Домашнее задание для встречи 26.01

Привет, чертяки!

Мы возобновили практику домашних заданий. Как и раньше, к следующей встрече будет предложена простенькая задачка, победитель будет объявлен на встрече 26 января.

Задача: в дереве ревизий CVS надо найти последнюю ревизию в данной ветке. cvs-tree

Например, на рисунке справа есть две ветки: «experiment1» и «experiment2». В ветке «experiment1» последняя ревизия — 1.3.2.4, а в ветке «experiment2» — 1.3.4.1

Поскольку пример из жизни, то уже есть две реализации этой задачи.

Первая реализация — короткая, но некорректная. Она не учитывает случай, когда ревизия была удалена (см. картинку).

Вторая реализация — корректная, но громоздкая.

Домашние задание состоит в том, чтобы написать корректно и лаконично. Кто как может. Кому как нравится. Можно использовать любой язык программирования. Приветствуются методы и языки, о которых шла речь на двух последних встречах (Функциональное программирование, Python, C#, Haskell, Scala, Scratch, Alice 🙂 ).

Ответы и вопросы можно писать здесь в комментариях или по мылу andrei punkt solntsev koer gmail punkt com. Если вы не хотите, чтобы ваше решение показывали кому-либо, укажите это в письме.

Удачи!

case-study. В шкуре архитектора.

Игорь Меньков предложил кейс, который позволит немного размять мозги 🙂 Как раз для настоящих джедаев!

Так вот: Клиенту требуется система, которая будет обрабатывать различные документы, связанные с бизнес процессами. Все формы документов должны быть доступны работникам компании из любой точки мира в любой момент времени.

Формы документов могут со временем меняться:
·         содержание форм
·         бизнес логика
·         валидации

При заполнении и обработке документов используются вспомогательные данные:
·         Классификаторы
·         Дополнительные данные для бизнес логики

Вспомогательные данные также могут со временем меняться.

При изменении формы документа или вспомогательных данных, указывается, действуют ли эти изменения также на уже существующие документы, или только на вновь созданные.

Задачка (предварительно надеть шляпу архитектора):

1. Какую платформу можно использовать для разработки данной системы?
2. Какие будет общий технический дизайн (на уровне шаблонов проектирования) реализации требований, приведенных в данном описании?
3. Какая должна быть команда, которая будет работать над проектом?
4. В чем должна быть ваша роль, как архитектора в этом проекте? Или ее отсутствие с обоснованием.
5. Какие будут затраты на поддержку системы после ее внедрения?

Дополнительная информация:
1. Задача является абстрактной.
2. Каждый участник может задать один дополнительный вопрос здесь в посте.
3. Уровень детализации решения каждый участник задает для себя сам. При желании, можно обосновать почему был выбран именно такой уровень детализации.

Дерзайте! Как водится у нас, лучшему ответу придумаем какой-нибудь приятный бонус! Ну и место в первом ряду на предстоящей встрече 🙂 Ответы сюда или на мейл Igor тчк Menkov [a] helmes.ee