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

Привет!
Следующая встреча 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.

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

Обзор встречи 26.05.2010

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

Первым выступил Арсений Григорьев с докладом про аспектно-ориентированное программирование (AOP) при помощи AspectJ и Spring Framework. Суть, как оказалось в том, что очень часто в огромном методе написано куча кода, который на самом деле к проблеме не относится, а львиная доля кода призвана выполнять какие-либо вспомогательные операции. Адепты АОП предлагают выносить весь этот лишний код в аспекты. Идея отличная, но не без изъянов — AspectJ изменяет байткод скомпилированных классов для того чтобы заставить аспекты работать. Таким образом, на уровне исходного кода лишней писанины можно избежать, но этот же «лишний» код будет потом вставлен уже в бинарном виде, и это для многих может показаться мистикой и чернокнижеством.

Кому стала интересна данная тема, и хочется узнать больше, советую поискать (приобрести) вот такие книги:
Foundations of AOP for J2EE Development
Spring Recipes: A Problem-Solution Approach

Далее, Евгений Чайкин рассказал нам Windows Phone 7, какие фишки ожидаются в этом телефоне, и для этого нового телефона можно будет писать программы. Евгений продемонстрировал это наглядно, за несколько минут написав небольшую программу для чтения RSS-ленты с нашего сайта. Порадовала простота разработки в Visual Studio 2010.

Последним выступил Андрей Солнцев с докладом который назывался «WTF code» (или как говорят в народе — говнокод). Андрей привёл много забавных примеров кода, чем вызвал множество обсуждений в зале. Без холивора не обошлось. Соответственно доклад растянулся из 45 минут до 1.5 часа.

Кроме того, был объявлен победитель в соревновании — Андрей Филимонов. Победа за решение на JavaScript была присуждена с формулировкой «за креативность!».

Напишите нам, как по вашему мнению прошла встреча? Что понравилось? Что могло бы быть лучше? Может быть у вас появилось желание выступить с докладом? Или есть сильный интерес в какой то теме и вы считаете что хотели бы услышать об этом доклад. Пишите в гугло-группу (или форум) — мы с удовольствием выслушаем все мнения!

Работа в Edisoft

Edisoft — ведущая компания в прибалтике, предоставляющая EDI услуги, ищет инженера:

TECHNICAL ENGINEER

whose main responsibilities will include:
New EDI solutions development, including channels configuration, boxes administration tools development, scripts’ development, monitoring setups;
EDI services adoption to the export market requirements: e.g. locale management, interaction with the technical staff of the customer, who are foreign nationals;
Edisoft’s internal staff technical consulting and training.

Personal requirements
— Higher education is mandatory
— At least 5 years of experience in the international company during the last 10 years
— Goal-oriented and stress-tolerant
— Good problem-solving skills
— Analytical thinking
— Reliable and able to meet deadlines
— Good command of English and Russian both spoken and written

Technical requirements
— Sound experience in Linux (preferably Redhat/CentOS)
— Knowledge of any combination of the following tools/technologies is a plus:

Software
1. Apache
2. JBoss
3. Oracle
4. MySQL
5. PostgreSQL

Cluster
1. DRBD/Heartbeat
2. RedHat Cluster Suite (GNBD, GFS, ricci/luci)
3. Virtualisation (Xen)

Administration
1. Linux security
2. Nagios
3. Cisco

Edisoft is always open for the responsible and gifted people.
We offer:

— extensive training (incl. cross-training)
— opportunity to work with the best customers
— new challenges in growing company and industry
— career opportunities
— youthful and supporting colleagues
— sound motivation package for the good results
— company events

Кому интересно, связь по адресу info[тчк]ee[афф!]edisoft[тчк]ee

Семинары ENETA, июнь 2010

Всем доброго времени суток.

Пользуясь случаем хочу оповестить вас, что 2-го июня ваш покорный слуга имеет честь выступать в рамках ENETA с докладом о функциональном программировании на С#.
Моя первая попытка была не совсем удачной, однако я учёл свои ошибки и постараюсь рассказать всё более доходчиво и продемонстрировать менее сложные примеры. Кому тема интересна — добро пожаловать.

Само событие состоится 2го июня(среда) c 18:00 до 19:30 в зале 316 IT Колледжа по адресу Raja 4c. Мероприятие бесплатное и проводится на эстонском языке. Есть возможность послушать лекцию удаленно, по Live Meeting(клиента можно взять тут).
Регистрация на семинар и на онлайн трансляцию тут.

Список всех июньских мероприятий:

Visual Studio 2010 testimisvahendid, Taavi Kõosaar
Esitluses keskendume uuetele Visual Studio 2010 testimisvahenditele nagu testilugude haldamine (Test Case Management), programmeeritud kasutajaliidese testid (Coded UI tests), manuaalne testimine ja testide jooksutamine ning tulemuste salvestamine ja sidumine töödega Team Foundation Serveris (TFS). Taavi Kõosaar näitab, kuidas Visual Studio 2010 ja TFS 2010 võimaldavad arusaamatusi, üleliigset ajakulu ning ebapiisavat informatsiooni arendaja ja testija koostöös vähendada.
Kuupäev:: 1. juuni
Aeg: 18:00 — 19:30
Koht: Live Meeting
Sihtgupp: arendajad, testijad
Tase: 200
Slaidid/Demo: 50/50

Funktsionaalne programmeerimine C#-is, Juri Mulenko
Viimasel ajal on funktsionaalprogrammeerimine (FP) kuum teema. Juri Mulenko räägib oma ettekandes, mis loomaga on tegemist ja miks see väärib tähelepanu. Igapäevaseid ülesandeid on tihti kergem, kiirem ja arusaadavam lahendada «funktsionaalsel» viisil. Loengu käigus vaatame.NET raamistiku ja C# keele võimalusi ning demome näiteid, mis toetavad FP-stiilis arendamist. Ettekande eesmärgiks on näidata FP võtteid ja innustada kuulajaid seda kasutusele võtma.
Kuupäev:: 2. juuni
Aeg: 18:00 — 19:30
Koht: IT Kolledž ja Live Meeting
Sihtgupp: arendajad
Tase: 200
Slaidid/Demo: 40/60

Code Contracts, Gunnar Peipman
Code contracts ehk koodilepped on uus ja hetkel laboriroti staatuses tehnoloogia .NET maailmas. Koodilepete abil on võimalik defineerida tingimused, mis peavad koodiüksuste jooksutamiseks olema täidetud. Sõltuvalt vajadustest võivad koodilepped sisalduda kompileeritud koodis ja kontrollida tingimusi kõikjal, kus vastav kood jookseb. Kas tegemist on millegagi, mis võiks asendada ühiktestid? Sellele annab vastuse Gunnar Peipman oma loengul. Kuigi koodilepped on noor tehnoloogia, on tegemist paljutõotava lisandiga .NET arendusvahendite peresse.
Kuupäev:: 9. juuni
Aeg: 18:00 — 19:30
Koht: IT Kolledž ja Live Meeting
Sihtgupp: arendajad
Tase: 300
Slaidid/Demo: 30/70

Virtualiseerimisest natuke laiemalt, Meelis Nigols
Kui virtualiseerimine tähendab Sinu jaoks vaid seda, et serveriruumis on vähem serverikaste, siis on aeg natuke järgi mõelda. Kuidas samu tehnoloogiaid veel rohkem ja paremini ära kasutada näiteks kasutaja töölaual? Meelis Nigols püüab selgitada, mida tähendavad lühendid App-V, Med-V, VDI ja ka seda, miks Microsofti jaoks on kaugtöölaud samuti virtualiseerimine.
Kuupäev:: 10. juuni
Aeg: 18:00 — 19:30
Koht: Live Meeting
Sihtgupp: IT-profid
Tase: 200
Slaidid/Demo: 60/40

Сам жду с нетерпением лекции по code contracts от Gunnar Peipman-а. Вкратце, что это такое — тут.

Благодарю за внимание.

Предварительный анонс майской встречи — 26.05

ВНИМАНИЕ! РЕГИСТРАЦИЯ НА СЛЕДУЮЩУЮ ВСТРЕЧУ НАЧНЁТСЯ В СРЕДУ (19 мая) в 12.00!

Следующая встреча нашего клуба пройдёт 26 мая, в зале отеля Ору. Двери окрываются в в 18:45 Эта дата (26 мая) выбрана из соображений избежания конкуренции с эфиром конкурса Евровидение 2010 🙂 Доклады выбраны при помощи голосования, которое на самом то деле не закрыто, так что можно голосовать и дальше. Всего ожидается три доклада:

  1. Андрей Соснин, Микроконтроллеры и микроэлектроника как хобби
  2. Арсений Григорьев, Aspect Oriented Programming
  3. Евгений Чайкин, Windows Phone 7
  4. Андрей Солнцев, WTF code

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

Предагаем поупражнятсья в написании простенькой программы. Приглашаются все желающие. Выбор языка программирования за вами — хотите, пишите на 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

По следам Вальпургиевой ночи

30 апреля состоялась очередная встреча в застенках ДевКлуба.
Согласно сухой статистике, зарегистрировалось 73 человека: 69 мальчиков и 4 девочки. По числу участников на этот раз лидировал Swedbank (10 человек), которому на хвост наступал HireRight (7 человек), и далее FusionOne (5), Helmes (5), Axinom (4), Aqris (4).

Наконец-то добрался до нашего клуба долгожданный гость Евгений Кабанов, основатель одного из самых успешных стартапов JRebel, прославившегося далеко за пределами Эстонии.

Больше фотографий можно найти у тудэйных фотографов Кирилла и Андрея.

Как обычно, у нас было три доклада, два технических и один поэтический. 🙂

Первым выступил Евгений Холодков. Он рассказал нам про его любимый язык программирования Clojure. А также о том, как Clojure помогает решить те проблемы, которые возникают в программировании на любом языке.

«Scala пытается решить, а Clojure решает»

Видео доступно здесь.

Вторым на арену вышел Никита Кошелев, который поведал нам о методике Getting Things Done (GTD), позволяющей вовремя справляться со всеми своими делами и не забывать звонить бабушке. Доклад получился ярким и динамичным, полное видео можно посмотреть тут.

Третьим выступил Антон Кекс с докладом о системе версионирования кода GIT, заодно рассказав предысторию: как человечество начало версионировать код и эволюционировало от SCCS через RCS, CVS и SVN до Mercurial и GIT. Наш лексикон пополнился такими полезными словами, как «затракить», «запушить» и «заполлить».

«Поскольку SVN более адванснутый, чем CVS, то и минусы у него более адванснутые.»

Видео доступно здесь.

Чтобы докладчикам слишком сладко не спалось на лаврах, подкиньте им конструктивной критики. Расскажите обо всём, что вам понравилось, и обязательно — что не понравилось. Можете написать об этом как в комментариях к посту, так и в форуме или гугл-группе devclub-estonia. Специально обученные мартышки найдут их везде и доставят адресату. Поверьте, им очень нужно знать ваше мнение, черканите кому сколько не жалко!

Кстати, за лучший доклад можно ещё и проголосовать на форуме.

До скорой встречи!

Модератор встречи
Андрей Солнцев