воскресенье, 24 февраля 2013 г.

Отчёт о #kranonit S08

Друзья, спасибо большое всем кто был на встрече.
Видео и скринкаст у нас не получилось записать :'(
Вы большие молодцы что выдержали АЖ ЖЕСТЬ ЧАСОВ сложного доклада на совсем не интересную тему.

Я рассказывал по чужим презентациям, вводная от Николая Алименкова

Видео

  • Я упоминал про статический анализатор кода Sonar через который мы можем определить качество нашего кода.
    В интернете много информации по нему, я даже не знаю что посоветовать. Но если кому интересно я рассказывал о нём в рамках курса интенсива по яве.
  • Рассказал про бесплатную онлайн конференцию ITBrunch, всем советую.
  • Порекомендовал линейку продуктов от JetBrains.
  • Все самые важные принципы хорошего проектирования описаны в этой статье

Затем я пересказывал лекцию Сергея Сергеева из Яндекс.ШРИ о системах контроля версий. По сути я просто чуть проще пересказал. Видео моего пересказа нету, так что смотрите видео оригинальной лекции.

Итак, мы узнали про GitHub и зачем он нужен.
Вы можете научится базовой работе с гитхабом на этом онлайн тренажёре.
Если вы уже знакомы с гитом то гляньте на онлайн тренажёр по ветвления в гите.
На самом деле нужно знать не так много базовых команд. Достаточно init, clone, pull, commit, push.
Это команды которые помогут вам выжить первое время, а дальше - работайте с гитом через IDE, а консоль оставьте угрюмым линуксоидам.

Дальше я показал всем пример простенького юнит теста на Яве который я подробно описал в статье.


Затем мы прошлись по первой главе книги Мартина Фаулера о Рефакторинге
В результате у нас получился такой проект на гитхабе

ВСЕМ ДОМАШНЕЕ ЗАДАНИЕ - форкнуть проект, и дописать все рефакторинги которые дальше идут в первой главе и позже сделать пул реквест.

Кто справится, тот получит значок с улыбайтом ;)



Если вы чуть более опытный специалист, то я очень советую посмотреть видеозапись лекции о рефакторинге от Саши Баглая.

Список книг для самостоятельного прочтения.
А когда станете совсем крутыми, прочтите ещё Джошуа Кериевски: Рефакторинг с использованием шаблонов.

пятница, 22 февраля 2013 г.

Завтра встреча #kranonit S08 о рефакторинге

Друзья, приглашаю вас завтра не встречу Клуба анонимных Айтишников в Кривом Роге.
Я, Серёжа Пономарёв, программист и тренер по Java, расскажу вам про рефакторинг и вещи с ним связанные.
Вместе пройдём небольшой мастер класс на котором сделаем рефакторинг небольшого проекта.
Также затронем важные темы так или иначе связанные с рефакторингом: системы контроля версий, юнит тесты и шаблоны проектирования.

Итак, жду вас завтра, в субботу 23 февраля в 12:00 в конференц зале 139 Нархоза на ул. Семашко 16, ст. м. Кольцевая (см. карту).

До завтра,
stokito

[Заметка] Какой СУБД учить в университетах?

В чате #kranonit разгорелась интересная дискуссия. В университете студентам преподаватель по базам данных дал на обучение старую как мир Paradox.
Парадокс конечно клёвая БД и всё такое, но никакой мотивации у студентов её учить нет. С таким же успехом можно учить студентов набивать перфокарты.
И возник вопрос: А какой же БД учить студентов?
Вот пару моих мыслей по этому поводу.
Ирония в том что когда-то в магистратуре я проходил пед практику я как раз составил лекцию с осмотром баз данных.
Дисклаймер: я был DBA на Interbase и Firebird, но я совсем не гуру в БД (а такие есть вообще?). Поэтому если видите что я в чём то тут неправ - жгите в комментариях. И да это заметка а не полноценная статья.

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

C RDBMS такая тема: принципиальной разницы какую учить особо нет, ибо SQL везде похож и принципы построения таблиц тоже.

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

Если времени мало, то однозначно нужно учить MS Access или Open Office Base.
Я на полном серьёзе, посудите сами:
Это очень распространённая БД которая идёт вместе с офисом т.е. УЖЕ есть практически на всех компьютерах.
Очень легко перейти к понятию таблиц от понятий таблиц в Excel, в случае с Access этот переход ещё мягче.
И поскольку он входит в офисный пакет то отсюда и растут всякие плюшки от интеграции, особенно с Excel. А не забывайте что Excel - лучшая программа за всю историю человечества, и в грамотных руках вполне способная заменить много самопального софта для автоматизации производства.
Есть полноценный GUI! Причём уже сто лет как есть и действительно мощный: с инструментами визуального построения запросов, конструктор таблиц, форм и удобного редактирования содержимого таблиц. Всяким там MySQL Workbench ещё расти и расти.
Не нужен сервер, легче распространять программу.
Есть возможность построения SQL запросов, правда без автодополнения и подсветки синтаксиса, что очень сильно огорчает.

Если есть чуть больше времени тогда можно изучать MySQL потому что к ней много руководств написано для чайников и она популярна на рынке. Но как ни крути у MySQL родовая травма, поэтому никакие вторичные ключи, вьюхи и хранимые процедуры на ней не выучишь. К тому же она явно склоняет к говнокодерству из-за своего попустительства.
Есть гуй MySQL Workbench, и он совершенно не удобный. Но есть альтернативы.
Т.е. учебная польза от MySQL нулевая: не соответствует стандарту ANSI SQL (в этом плане похоже самый совместимый Firebird). Неудобный гуй который повышает порог вхождения. Проблемы с обратной совместимостью (учебные материалы быстро устаревают). Несмотря на популярность проект явно колбасит - покупка Ораклом, форки (MariaDB, Drizzle), смены движков, насильно вкручивают новые фичи на старые костыли.
Вообщем польза от этого ровно одна: студенты будут чуть более мотивированы, потому что знают что продукт популярный.

Если времени больше, и можно дать серьёзный курс тогда однозначно PostgeSQL, на котором учить транзакции, триггеры, сиквенсы, хранимки и вьюхи.
С гуями для PG я не очень разбирался. Поработал только в pgAdmin и он совсем меня не впечатлил.

Если совсем круто со временем то можно ещё NoSQL прихватить типа MongoDB или на крайняк Redis (он очень прост).
Самое главное тут - вникнуть в CAP теорему.

А чему учат на западе? Смотрите сами:
Introduction to Databases course (Stanford)
Introduction to Data Science (University of Washington)


Вместо заключение

Учить студентов нужно тому что ещё живое на рынке. Например Firebird, FoxPro, ErWin (это не БД) не смотря на свою круть не попадают в эту категорию.
Также БД должна быть распространённой.
А ещё очень желательно чтобы софт был свободным, иначе устанешь выпрашивать лицензии.
Учить нужно SQL который касается манипуляции данными (Data Manipulation Language, DML): SELECT, INSERT, UPDATE, DELETE. Эти операторы нужно запомнить железно и хорошо закрепить на практике.
DDL (Data Definition Language) учить не нужно, создавать таблицы нужно из гуёв. В любой БД создание таблицы операция настолько редкая что если что можно просто подсмотреть синтаксис в документации, не смертельно.
Всякие там гранты и ролбеки тоже можно выкинуть из программы.
Большой упор нужно сделать на селекты, джоины, индексы, планы (самому разбираться с ними обычно лень), и на нормализацию.
Кроме нормализации нужно закрепить сохранение произвольных структур или иерархических.