Друзья, случилось невозможное: я вдруг полюбил вордпресс. Конечно он уродский, но после года активного использования блогспота он показался мне просто даром небесным.
К тому же вроде как были разговоры что гугл закроет свой блогер и всех загоним в свой тошнотворный G+. А учитывая то что гугл даже ридер закрыл, стоит сделать выводы до того как гугл сделал за тебя...
Итак, я решил попробовать бесплатный аккаунт WordPress.com и перенёс туда блог.
Встречайте!
stokito.wordpress.com
четверг, 14 марта 2013 г.
четверг, 28 февраля 2013 г.
Видео лекций
У меня тут выдался небольшой отпуск и часть времени я потратил на просмотр всяких лекций и на прочтение статей на хабре сто лет томившихся в закладках.
Также подтянул знания по Selenium, потренировался на котиках, так что уже скоро начну робко применять его на практике.
Яндекс молодцы и выкладывают видео и презентации с своих конференций и докладов.
Я часть из них просмотрел и решил написать небольшой отчётик с рекомендациями.
Не все из них хороши.
Например вот эти смотреть вообще не стоит
Хроники серверного Жаваскрипта
Редактор/среда разработки
Тестирование
вот эта лекция сама по себе не очень как то, хотя и тема интересная, короче лучше почитать статьи
Безопасность веб-приложений
вот эта лекция хорошая, для начинающих сложновата, но всё же хороший старт - буду кидать знакомым студентам
Системы контроля версий
Вот эта лекция открыла мне глаза на мой джаваскрипт.
Я конечно знал что у меня не всё идеально, но столько мелких моментов о которых я даже не догадывался. Вообщем, ещё одна серьёзная тема, опять надо закидываться книжками, опять пропускать жизнь за окном ковыряя проекты на которых тренироваться, опять внедрять на работе и косячить :(
Паттерны JavaScript
А вот лекция из Курсов информационных технологий Яндекса. Первая часть лекции посвящена разбору вступительных задач (много Си и линукса), а вот с 39той минуты начинается вторая весть которая посвящена профессиям в IT, и полезно будет студентам
Профессии в мире информационных технологий
Из последнего просмотренного меня просто привела в восторг вот эта лекция, всем советую
Также подтянул знания по Selenium, потренировался на котиках, так что уже скоро начну робко применять его на практике.
Яндекс молодцы и выкладывают видео и презентации с своих конференций и докладов.
Я часть из них просмотрел и решил написать небольшой отчётик с рекомендациями.
Не все из них хороши.
Например вот эти смотреть вообще не стоит
Хроники серверного Жаваскрипта
Редактор/среда разработки
Тестирование
вот эта лекция сама по себе не очень как то, хотя и тема интересная, короче лучше почитать статьи
Безопасность веб-приложений
вот эта лекция хорошая, для начинающих сложновата, но всё же хороший старт - буду кидать знакомым студентам
Системы контроля версий
Вот эта лекция открыла мне глаза на мой джаваскрипт.
Я конечно знал что у меня не всё идеально, но столько мелких моментов о которых я даже не догадывался. Вообщем, ещё одна серьёзная тема, опять надо закидываться книжками, опять пропускать жизнь за окном ковыряя проекты на которых тренироваться, опять внедрять на работе и косячить :(
Паттерны JavaScript
А вот лекция из Курсов информационных технологий Яндекса. Первая часть лекции посвящена разбору вступительных задач (много Си и линукса), а вот с 39той минуты начинается вторая весть которая посвящена профессиям в IT, и полезно будет студентам
Профессии в мире информационных технологий
Из последнего просмотренного меня просто привела в восторг вот эта лекция, всем советую
среда, 27 февраля 2013 г.
Результаты опроса о криворожских ВУЗах
Друзья, как вы помните, две недели назад мы собрали обратную связь для преподавателей криворожских ВУЗов.
Вы подарили нам 58 ответов, это не так много, но это мнение самых важных для нас людей: текущих студентов, которые увлекаются своей профессией а не ради корочки, и уже работающих специалистов которые могут трезво оценить ценность полученных знаний.
Вы можете посмотреть на результаты.
По этическим соображениям я воздержусь от хоть какой нибудь аналитики.
Есть ли среди нас умельцы Excel которые смогут визуализировать всё в графиках?
Обратитесь пожалуйста ко мне в личку, я расскажу что нужно сделать
Вы подарили нам 58 ответов, это не так много, но это мнение самых важных для нас людей: текущих студентов, которые увлекаются своей профессией а не ради корочки, и уже работающих специалистов которые могут трезво оценить ценность полученных знаний.
Вы можете посмотреть на результаты.
По этическим соображениям я воздержусь от хоть какой нибудь аналитики.
Есть ли среди нас умельцы Excel которые смогут визуализировать всё в графиках?
Обратитесь пожалуйста ко мне в личку, я расскажу что нужно сделать
воскресенье, 24 февраля 2013 г.
Отчёт о #kranonit S08
Друзья, спасибо большое всем кто был на встрече.
Видео и скринкаст у нас не получилось записать :'(
Вы большие молодцы что выдержали АЖ ЖЕСТЬ ЧАСОВ сложного доклада на совсем не интересную тему.
Я рассказывал по чужим презентациям, вводная от Николая Алименкова
Видео
Затем я пересказывал лекцию Сергея Сергеева из Яндекс.ШРИ о системах контроля версий. По сути я просто чуть проще пересказал. Видео моего пересказа нету, так что смотрите видео оригинальной лекции.
Итак, мы узнали про GitHub и зачем он нужен.
Вы можете научится базовой работе с гитхабом на этом онлайн тренажёре.
Если вы уже знакомы с гитом то гляньте на онлайн тренажёр по ветвления в гите.
На самом деле нужно знать не так много базовых команд. Достаточно
Это команды которые помогут вам выжить первое время, а дальше - работайте с гитом через IDE, а консоль оставьте угрюмым линуксоидам.
Дальше я показал всем пример простенького юнит теста на Яве который я подробно описал в статье.
Затем мы прошлись по первой главе книги Мартина Фаулера о Рефакторинге
В результате у нас получился такой проект на гитхабе
ВСЕМ ДОМАШНЕЕ ЗАДАНИЕ - форкнуть проект, и дописать все рефакторинги которые дальше идут в первой главе и позже сделать пул реквест.
Кто справится, тот получит значок с улыбайтом ;)

Если вы чуть более опытный специалист, то я очень советую посмотреть видеозапись лекции о рефакторинге от Саши Баглая.
Список книг для самостоятельного прочтения.
А когда станете совсем крутыми, прочтите ещё Джошуа Кериевски: Рефакторинг с использованием шаблонов.
Видео и скринкаст у нас не получилось записать :'(
Вы большие молодцы что выдержали АЖ ЖЕСТЬ ЧАСОВ сложного доклада на совсем не интересную тему.
Я рассказывал по чужим презентациям, вводная от Николая Алименкова
Видео
- Я упоминал про статический анализатор кода Sonar через который мы можем определить качество нашего кода.
В интернете много информации по нему, я даже не знаю что посоветовать. Но если кому интересно я рассказывал о нём в рамках курса интенсива по яве. - Рассказал про бесплатную онлайн конференцию ITBrunch, всем советую.
- Порекомендовал линейку продуктов от JetBrains.
- Все самые важные принципы хорошего проектирования описаны в этой статье
Затем я пересказывал лекцию Сергея Сергеева из Яндекс.ШРИ о системах контроля версий. По сути я просто чуть проще пересказал. Видео моего пересказа нету, так что смотрите видео оригинальной лекции.
Итак, мы узнали про GitHub и зачем он нужен.
Вы можете научится базовой работе с гитхабом на этом онлайн тренажёре.
Если вы уже знакомы с гитом то гляньте на онлайн тренажёр по ветвления в гите.
На самом деле нужно знать не так много базовых команд. Достаточно
init, clone, pull, commit, push.Это команды которые помогут вам выжить первое время, а дальше - работайте с гитом через IDE, а консоль оставьте угрюмым линуксоидам.
Дальше я показал всем пример простенького юнит теста на Яве который я подробно описал в статье.
Затем мы прошлись по первой главе книги Мартина Фаулера о Рефакторинге
В результате у нас получился такой проект на гитхабе
ВСЕМ ДОМАШНЕЕ ЗАДАНИЕ - форкнуть проект, и дописать все рефакторинги которые дальше идут в первой главе и позже сделать пул реквест.
Кто справится, тот получит значок с улыбайтом ;)

Если вы чуть более опытный специалист, то я очень советую посмотреть видеозапись лекции о рефакторинге от Саши Баглая.
Список книг для самостоятельного прочтения.
А когда станете совсем крутыми, прочтите ещё Джошуа Кериевски: Рефакторинг с использованием шаблонов.
пятница, 22 февраля 2013 г.
Завтра встреча #kranonit S08 о рефакторинге
Друзья, приглашаю вас завтра не встречу Клуба анонимных Айтишников в Кривом Роге.
Я, Серёжа Пономарёв, программист и тренер по Java, расскажу вам про рефакторинг и вещи с ним связанные.
Вместе пройдём небольшой мастер класс на котором сделаем рефакторинг небольшого проекта.
Также затронем важные темы так или иначе связанные с рефакторингом: системы контроля версий, юнит тесты и шаблоны проектирования.
Итак, жду вас завтра, в субботу 23 февраля в 12:00 в конференц зале 139 Нархоза на ул. Семашко 16, ст. м. Кольцевая (см. карту).
До завтра,
stokito
Я, Серёжа Пономарёв, программист и тренер по 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)
Также БД должна быть распространённой.
А ещё очень желательно чтобы софт был свободным, иначе устанешь выпрашивать лицензии.
Учить нужно SQL который касается манипуляции данными (Data Manipulation Language, DML): SELECT, INSERT, UPDATE, DELETE. Эти операторы нужно запомнить железно и хорошо закрепить на практике.
DDL (Data Definition Language) учить не нужно, создавать таблицы нужно из гуёв. В любой БД создание таблицы операция настолько редкая что если что можно просто подсмотреть синтаксис в документации, не смертельно.
Всякие там гранты и ролбеки тоже можно выкинуть из программы.
Большой упор нужно сделать на селекты, джоины, индексы, планы (самому разбираться с ними обычно лень), и на нормализацию.
Кроме нормализации нужно закрепить сохранение произвольных структур или иерархических.
Парадокс конечно клёвая БД и всё такое, но никакой мотивации у студентов её учить нет. С таким же успехом можно учить студентов набивать перфокарты.
И возник вопрос: А какой же БД учить студентов?
Вот пару моих мыслей по этому поводу.
Ирония в том что когда-то в магистратуре я проходил пед практику я как раз составил лекцию с осмотром баз данных.
Дисклаймер: я был 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) учить не нужно, создавать таблицы нужно из гуёв. В любой БД создание таблицы операция настолько редкая что если что можно просто подсмотреть синтаксис в документации, не смертельно.
Всякие там гранты и ролбеки тоже можно выкинуть из программы.
Большой упор нужно сделать на селекты, джоины, индексы, планы (самому разбираться с ними обычно лень), и на нормализацию.
Кроме нормализации нужно закрепить сохранение произвольных структур или иерархических.
пятница, 15 февраля 2013 г.
[Заметка] Несколько вещей за которую я не люблю Яву как платформу
Просто несколько вещей которые бесят постоянно. Можно расписсывать их много много, но тут я акцентирую внимание на том что уровень вхождения в Яву выходит большим из-за банального разгильдяйства Oracle. Они совсем не учитывают что платформу нужно ПРОДАВАТЬ, и очень важен маркетинг.
1. Вроде бы как JDK содержит в себе полную JRE + компилятор, тем не менее вместо того чтобы ставить отдельно SDK всегда приходится полностью выкачивать и его.
2. Oracle принципиально не делает дистрибутива для Debian, а только для своей Solaris. А в Ubuntu выпилили этот пакет, в результате каждый раз установка джавы превращаются в пляску с бубном.
3. На сайте оракла чёрт ногу сломит, всё страшное и некрасивое. Ещё и вымагают регистрацию. Никакой затобы о пользователях, никакого маркетинга.
4. Почему-то инсталятор сам не прописывает переменную JAVA_HOME и JDK_HOME. Что ему, жалко что-ли?
5. Успех платформы во многом зависит от наличия пакетного менеджера в поставке с ней. В Ruby есть gem, в NodeJS - npm. В яве ничего.
6. Туториалы на оф. сайте стары как мир, без подсветки синтаксиса и никакого интерактива.
Как так получилось что откровенно поганая платформа Ruby стала такой модной и популярной? Удачный маркетинг.
Посмотрите на сайт например Mono, он выглядит приятней и опрятней, пускай это аутсайдерский проект, но даже там пытаются хоть ка кто для людей сделать.
Я уже молчу про прямого конкурента Java - платформу .NET.
На сайте много всячины и сразу же банер на Visual Studio.
А теперь гляньте на Web 1.0 сайт явы. Фу!
Кстати тоже самое касается самого языка программирования.
Если поганый MS в целях маркетинга впихнул всё нужное и ненужное в C# то в Яве даже самые нужные фичи добавляют с огромным скрипом. Вот например замыкания все ждут уже десятилетие. Хорошо что хоть циклы for each в пятой яве добавили, и на том спасибо.
Конечно, Ява по философии консервативна и стремится быть минималистичной, но не до такой же степени чтобы ждать пятой версии для for each.
Когда то ява была прорывом, и очень потенциальной технологией.
Но тянули до последнего с открытием исходников, забили на дистрибьюцию, забили на десктопы, оконные программы смотрятся ужасно, просрали рынок аплетов который теперь заполонил поганый Flash, наехали на MS, а теперь ещё и на Google.
Маркетинг господа. Если вы ещё не поняли, то в постиндустриальной эпохе это самое главное.
1. Вроде бы как JDK содержит в себе полную JRE + компилятор, тем не менее вместо того чтобы ставить отдельно SDK всегда приходится полностью выкачивать и его.
2. Oracle принципиально не делает дистрибутива для Debian, а только для своей Solaris. А в Ubuntu выпилили этот пакет, в результате каждый раз установка джавы превращаются в пляску с бубном.
3. На сайте оракла чёрт ногу сломит, всё страшное и некрасивое. Ещё и вымагают регистрацию. Никакой затобы о пользователях, никакого маркетинга.
4. Почему-то инсталятор сам не прописывает переменную JAVA_HOME и JDK_HOME. Что ему, жалко что-ли?
5. Успех платформы во многом зависит от наличия пакетного менеджера в поставке с ней. В Ruby есть gem, в NodeJS - npm. В яве ничего.
6. Туториалы на оф. сайте стары как мир, без подсветки синтаксиса и никакого интерактива.
Как так получилось что откровенно поганая платформа Ruby стала такой модной и популярной? Удачный маркетинг.
Посмотрите на сайт например Mono, он выглядит приятней и опрятней, пускай это аутсайдерский проект, но даже там пытаются хоть ка кто для людей сделать.
Я уже молчу про прямого конкурента Java - платформу .NET.
На сайте много всячины и сразу же банер на Visual Studio.
А теперь гляньте на Web 1.0 сайт явы. Фу!
Кстати тоже самое касается самого языка программирования.
Если поганый MS в целях маркетинга впихнул всё нужное и ненужное в C# то в Яве даже самые нужные фичи добавляют с огромным скрипом. Вот например замыкания все ждут уже десятилетие. Хорошо что хоть циклы for each в пятой яве добавили, и на том спасибо.
Конечно, Ява по философии консервативна и стремится быть минималистичной, но не до такой же степени чтобы ждать пятой версии для for each.
Когда то ява была прорывом, и очень потенциальной технологией.
Но тянули до последнего с открытием исходников, забили на дистрибьюцию, забили на десктопы, оконные программы смотрятся ужасно, просрали рынок аплетов который теперь заполонил поганый Flash, наехали на MS, а теперь ещё и на Google.
Маркетинг господа. Если вы ещё не поняли, то в постиндустриальной эпохе это самое главное.
четверг, 14 февраля 2013 г.
Динамическая компиляция Java
Чтобы получить выполняемый Java *.class файл нам нужно написать текст на Яве и затем скомпилировать его компилятором javac.
А что делать если нам хочется динамически компилировать их?
Можно дёргать компилятор как системную команду:
В шестой джаве нам немного облегчили задачу добавив Java Compiler API (JSR 199). В моём блоге уже есть перевод крутой статьи в котором плотно рассматривается это API, но я хочу сделать отдельный обзор.
Сам компилятор явы написан на плюсах, поэтому полный API к нему никто не будет писать, так что по сути Java Compiler API просто обвёртка над
Например нельзя сперва построить AST дерево класса а потом скомпилировать его - мы можем передавать только уже готовые исходники явы текстом.
Вообщем я из разных источников собрал простой проект который динамически компилирует HelloWorld, подгружает этот класс и вызывает.
В коде есть комментарии, их конечно не достаточно, но не пересказывать же JavaDoc?
Проект есть на GitHub, но по сути там один класс:
Вот так вот. Сильно не разгонишься :(
Ещё несколько ссылок по теме, может сэкономит вам гуглёж:
JavaDoc
Отрывок из книги
Dynamic in-memory compilation
The Java 6.0 Compiler API
Generating Java classes dynamically through Java compiler API
Интервью с создателем JSR 199
The story of javac AST Visualization on NetBeans Platform
Что делать если таки очень хочется компилить по-человечки?
Решения есть, попробую и отпишусь о них позже
А что делать если нам хочется динамически компилировать их?
Можно дёргать компилятор как системную команду:
Runtime.getRuntime().exec("cmd javac");
Но это конечно же неудобно, да ещё и проблемы с парсингом результатов компилятора.В шестой джаве нам немного облегчили задачу добавив Java Compiler API (JSR 199). В моём блоге уже есть перевод крутой статьи в котором плотно рассматривается это API, но я хочу сделать отдельный обзор.
Сам компилятор явы написан на плюсах, поэтому полный API к нему никто не будет писать, так что по сути Java Compiler API просто обвёртка над
javac со всеми вытекающими.Например нельзя сперва построить AST дерево класса а потом скомпилировать его - мы можем передавать только уже готовые исходники явы текстом.
Вообщем я из разных источников собрал простой проект который динамически компилирует HelloWorld, подгружает этот класс и вызывает.
В коде есть комментарии, их конечно не достаточно, но не пересказывать же JavaDoc?
Проект есть на GitHub, но по сути там один класс:
package name.stokito.javaDynamicCompiler;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Arrays;
import java.util.Locale;
import javax.tools.Diagnostic;
import javax.tools.DiagnosticCollector;
import javax.tools.JavaCompiler;
import javax.tools.JavaCompiler.CompilationTask;
import javax.tools.JavaFileObject;
import javax.tools.SimpleJavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
/** A test class to test dynamic compilation API. */
public class CompilerAPITest {
private static final String CLASS_NAME = "name.stokito.javaDynamicCompiler.HelloWorld";
/** Java source code to be compiled dynamically */
private static final String SOURCE_CODE = "package name.stokito.javaDynamicCompiler;" +
"public class HelloWorld {" +
"public static void main (String args[]){" +
"System.out.println (\"Hello, dynamic compilation world!\");" +
"}" +
"}";
/** Does the required object initialization and compilation. */
public void doCompilation(File outputDir) throws IOException, ClassNotFoundException {
// Creating dynamic java source code file object
SimpleJavaFileObject fileObject = new DynamicJavaSourceCodeObject(CLASS_NAME, SOURCE_CODE);
JavaFileObject javaFileObjects[] = new JavaFileObject[]{fileObject};
// Instantiating the java compiler
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
/**
* Retrieving the standard file manager from compiler object, which is used to provide
* basic building block for customizing how a compiler reads and writes to files.
*
* The same file manager can be reopened for another compiler task.
* Thus we reduce the overhead of scanning through file system and jar files each time
*/
StandardJavaFileManager stdFileManager = compiler.getStandardFileManager(null, Locale.getDefault(), null);
// Prepare a list of compilation units (java source code file objects) to input to compilation task
Iterable compilationUnits = Arrays.asList(javaFileObjects);
// Prepare any compilation options to be used during compilation
// In this example, we are asking the compiler to place the output files under bin folder.
String[] compileOptions = new String[]{"-d", outputDir.getAbsolutePath()};
Iterable compilationOptions = Arrays.asList(compileOptions);
// Create a diagnostic controller, which holds the compilation problems
DiagnosticCollector diagnostics = new DiagnosticCollector();
// Create a compilation task from compiler by passing in the required input objects prepared above
CompilationTask compilerTask = compiler.getTask(null, stdFileManager, diagnostics, compilationOptions, null, compilationUnits);
// Perform the compilation by calling the call method on compilerTask object.
boolean status = compilerTask.call();
if (!status) { // If compilation error occurs
// Iterate through each compilation problem and print it
for (Diagnostic diagnostic : diagnostics.getDiagnostics()) {
System.err.format("Error on line %d in %s", diagnostic.getLineNumber(), diagnostic);
}
}
stdFileManager.close(); // Close the file manager
}
public static void main(String args[]) throws IOException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {
File outputDir = new File("target" + File.separator + "bin");
outputDir.mkdir();
new CompilerAPITest().doCompilation(outputDir);
invoke(outputDir);
}
private static void invoke(File outputDir) throws MalformedURLException, ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {
URL[] urls = new URL[]{outputDir.toURI().toURL()};
URLClassLoader ucl = new URLClassLoader(urls);
Class clazz = ucl.loadClass(CLASS_NAME);
Method main = clazz.getMethod("main", String[].class);
String[] mainArgs = new String[]{};
System.out.format("invoking %s.main()%n", clazz.getName());
main.invoke(null, (Object) mainArgs);
}
}
/**
* Creates a dynamic source code file object
* * This is an example of how we can prepare a dynamic java source code for compilation.
* This class reads the java code from a string and prepares a JavaFileObject
*/
class DynamicJavaSourceCodeObject extends SimpleJavaFileObject {
private String qualifiedName;
private String sourceCode;
/**
* Converts the name to an URI, as that is the format expected by JavaFileObject
*
* @param name fully qualified name given to the class file
* @param code the source code string
*/
protected DynamicJavaSourceCodeObject(String name, String code) {
super(URI.create("string:///" + name.replaceAll("\\.", "/") + Kind.SOURCE.extension), Kind.SOURCE);
this.qualifiedName = name;
this.sourceCode = code;
}
@Override
public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
return sourceCode;
}
public String getQualifiedName() {
return qualifiedName;
}
public void setQualifiedName(String qualifiedName) {
this.qualifiedName = qualifiedName;
}
public String getSourceCode() {
return sourceCode;
}
public void setSourceCode(String sourceCode) {
this.sourceCode = sourceCode;
}
}
Вот так вот. Сильно не разгонишься :(
Ещё несколько ссылок по теме, может сэкономит вам гуглёж:
JavaDoc
Отрывок из книги
Dynamic in-memory compilation
The Java 6.0 Compiler API
Generating Java classes dynamically through Java compiler API
Интервью с создателем JSR 199
The story of javac AST Visualization on NetBeans Platform
Что делать если таки очень хочется компилить по-человечки?
Решения есть, попробую и отпишусь о них позже
воскресенье, 3 февраля 2013 г.
#kranonit S07: Криптография и криптовалюты
Всем привет!
Рад сообщить что долгожданная следующая наша встреча состоится уже в эту субботу 9го февраля в 12:00 в конференц зале 139 Нархоза на ул. Семашко 16, ст. м. Кольцевая (см. карту)
Затем наш гость из Днепропетровска, широко известный в узких кругах, nixoid расскажет нам о новом явлении которое грозит в корне изменить мировую экономику: криптовалюты и BitCoin в частности. Это сейчас очень горячая тема вызывающая множество споров.
Андрей Замовский aka nixoid, диджей, днепропетровский программист и создатель известного портала Drochan.com для освобождения обеих рук.
Как человек который ранее слышал этот рассказ от Никсоида очень советую, будет интересно ;)
И ещё мы ищем оператора с камерой чтобы снимать наши встречи. Если у вас есть камера способная снимать хотя бы 40 минут, отпишитесь пожалуйста мне, очень надо.
Серёжа Пономарёв,
Увидимся!
Рад сообщить что долгожданная следующая наша встреча состоится уже в эту субботу 9го февраля в 12:00 в конференц зале 139 Нархоза на ул. Семашко 16, ст. м. Кольцевая (см. карту)
Вас ждёт два доклада.
Сначала Евгений Василенко сделает вам небольшой экскурс в криптографию и познакомит с основными понятиями.Затем наш гость из Днепропетровска, широко известный в узких кругах, nixoid расскажет нам о новом явлении которое грозит в корне изменить мировую экономику: криптовалюты и BitCoin в частности. Это сейчас очень горячая тема вызывающая множество споров.
Агенда доклада:
- Краткая история денег
- Как работают электронные деньги
- Банки времени, в чем их недостатки
- Технический обзор BitCoin его клонов
- Обзор рынка: наиболее успешные и востребованные сервисы
- Текущие проблемы развития bitcoin'a
О докладчике:
Андрей Замовский aka nixoid, диджей, днепропетровский программист и создатель известного портала Drochan.com для освобождения обеих рук.
Как человек который ранее слышал этот рассказ от Никсоида очень советую, будет интересно ;)
И ещё мы ищем оператора с камерой чтобы снимать наши встречи. Если у вас есть камера способная снимать хотя бы 40 минут, отпишитесь пожалуйста мне, очень надо.
И не прячетесь, вступайте в группы!
- Основное наше общение перешло в группу Вконтакте
- Группа в LinkedIn
- Группа в Facebook
- Группа в G+
- Наша организация на GitHub github.com/kranonit
- Twitter хештег #kranonit
- Также у нас есть чат в Skype где мы активно обсуждаем организационные моменты.
Попросите меня, я вас добавлю. Мой скайп stokito. - Чтобы получать рассылку на почту зарегистрируйтесь тут.
Серёжа Пономарёв,
Увидимся!
воскресенье, 27 января 2013 г.
Лекции Александра Степанова в Яндексе
Крутые лекции Александра Степанова в Яндексе.
Программистам и математикам — must see.
PowerPoint (en)
PDF (ru)
PowerPoint (ru)
Ну или кривовато сконверченое с гугл доксов чисто чтобы поклацать онлайн:
Программистам и математикам — must see.
Лекция "Наибольшая общая мера последние 2500 лет"
Greatest Common Measure: the Last 2500 Years. Originally prepared as the 1999 Arthur Schoffstall Lecture in Computer Science and Computer Engineering at the Rensselaer Polytechnic Institute.Степанов рассказывает о простой, вроде, вещи — алгоритме поиска НОД. Но рассказывает очень захватывающе. Очень интересно, как многие известные и несколько не столь известных математиков приложили руку к этому алгоритму. Ещё интересней начало второй части лекции, когда оказывается, что и в наше время этот алгоритм совершенствуется. Возникает ощущение, что история делается сейчас. Что даже в таких устоявшихся вещах можно найти нечто новое.(c) adaptun
Видео
Слайды
PDF (en)PowerPoint (en)
PDF (ru)
PowerPoint (ru)
Ну или кривовато сконверченое с гугл доксов чисто чтобы поклацать онлайн:
Лекция "Преобразования и их орбиты"
Transformations and their orbits. Lecture based on Chapter 2 of Elements of ProgrammingВидео
Слайды
PDF (en)[Заметка] Статический анализ кода на Java: Sonar и Maven
Вкратце о том как подключить Sonar к вашему проекту на Maven.
Чтобы ваш проект попал в сонар по дефолту достаточно просто выполнить команду
Язык вашего проекта и адрес сайта это публичная информация и указываем их прямо в pom.xml файле:
Настройки БД не должны быть видны народу поэтому мы устанавливаем их в settings.xml
После этого запускаем mvn sonar:sonar
Ещё годная статья по теме
Чтобы ваш проект попал в сонар по дефолту достаточно просто выполнить команду
mvn sonar:sonarПроблема в том что для выполнения этой команды сонару нужно знать дополнительно несколько вещей, а именно:
- Язык вашего проекта: sonar.language
- Адрес сайта сонара: sonar.host.url
- Настройки БД сонара: sonar.jdbc.url, sonar.jdbc.driver, sonar.jdbc.username,sonar.jdbc.password
Язык вашего проекта и адрес сайта это публичная информация и указываем их прямо в pom.xml файле:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
...
<properties>
<sonar.language>java</sonar.language>
<sonar.host.url>http://sonar.example.com:9000/</sonar.host.url>
</properties>
...
</project>
Настройки БД не должны быть видны народу поэтому мы устанавливаем их в settings.xml
<profile>
<id>sonar</id>
<activation>
<activebydefault>true</activeByDefault>
</activation>
<properties>
<sonar.jdbc.url>jdbc:postgresql://localhost/sonar</sonar.jdbc.url>
<sonar.jdbc.driver>org.postgresql.Driver</sonar.jdbc.driver>
<sonar.jdbc.username>user</sonar.jdbc.username>
<sonar.jdbc.password>password</sonar.jdbc.password>
</properties>
</profile>
После этого запускаем mvn sonar:sonar
Ещё годная статья по теме
суббота, 19 января 2013 г.
[Черновик] DB Maintaininig
Для изменения структуры БД и меинтейна я использую отличную штуку DBMaintain который вырос из другого крутого проекта Unitils.
О них я узнал от Николая Алименкова на JEEConf.
Затем мне пришлось столкнутся с LiquidBase.
Несмотря на то что штука тоже классная и позволяет забыть как страшный сон SQL мой опыт получился не очень приятным: я работал через плагин к Grails и наткнулся на пару багов и граблей. К тому же оказались некоторые неприятные ограничения у LiquidBase.
Также есть ещё проблема загрузки справочных и демо данных в БД, и она частично пересекается с меинтейнерами БД.
Есть ещё DBUnit который из XML грузит тестовые данные и умеет их потом чистить.
Ещё на моей прошлой работе была самописаные скрипты для меинтейна.
Вообщем я это всё к чему: хочется все эти штуки объединить в какой нибудь универсальный инструмент. Ну или по крайней мере собрать себе всю информацию о подобных инструментах и потом разобраться с ними всеми.
http://www.varyonic.com/2010/02/dbmaintain/
http://www.theserverside.com/news/thread.tss?thread_id=55117
http://peardbdeploy.sourceforge.net/docs/
http://www.outsourcecafe.com/javagen/index.html
http://byteco.de/2010/01/31/maven-dbdeploy-hsqldb-without-ant/
http://code.google.com/p/dbdeploy/
http://www.dbdeploy.net/
http://dbdeploy.com/
http://habrahabr.ru/post/63585/
http://habrahabr.ru/search/?q=%5Bdbdeploy%5D&target_type=posts
http://habrahabr.ru/post/152765/
http://code.google.com/p/bering/wiki/Overview
http://code.google.com/p/scala-migrations/
http://migratedb.sourceforge.net/
http://code.google.com/p/c5-db-migration/
О них я узнал от Николая Алименкова на JEEConf.
Затем мне пришлось столкнутся с LiquidBase.
Несмотря на то что штука тоже классная и позволяет забыть как страшный сон SQL мой опыт получился не очень приятным: я работал через плагин к Grails и наткнулся на пару багов и граблей. К тому же оказались некоторые неприятные ограничения у LiquidBase.
Также есть ещё проблема загрузки справочных и демо данных в БД, и она частично пересекается с меинтейнерами БД.
Есть ещё DBUnit который из XML грузит тестовые данные и умеет их потом чистить.
Ещё на моей прошлой работе была самописаные скрипты для меинтейна.
Вообщем я это всё к чему: хочется все эти штуки объединить в какой нибудь универсальный инструмент. Ну или по крайней мере собрать себе всю информацию о подобных инструментах и потом разобраться с ними всеми.
http://www.varyonic.com/2010/02/dbmaintain/
http://www.theserverside.com/news/thread.tss?thread_id=55117
http://peardbdeploy.sourceforge.net/docs/
http://www.outsourcecafe.com/javagen/index.html
http://byteco.de/2010/01/31/maven-dbdeploy-hsqldb-without-ant/
http://code.google.com/p/dbdeploy/
http://www.dbdeploy.net/
http://dbdeploy.com/
http://habrahabr.ru/post/63585/
http://habrahabr.ru/search/?q=%5Bdbdeploy%5D&target_type=posts
http://habrahabr.ru/post/152765/
http://code.google.com/p/bering/wiki/Overview
http://code.google.com/p/scala-migrations/
http://migratedb.sourceforge.net/
http://code.google.com/p/c5-db-migration/
воскресенье, 13 января 2013 г.
Grails: Хитрые грабли на примере сохранения и валидации пароля
Часто натыкаюсь на такую запись:
И потом делают валидацию по этому полю а перед сохранением перезаписывают его хешом, например:
Это некрасиво потому что в этом случае описание поля идёт в разрез с его презентацией на уровне БД. Описание модели должно описывать доменный объект с аспектом как его сохранять в БД, и валидациия указывается уровня БД а не биндинга в контроллере.
Об этом нужно помнить. Например при сохранении не уникального значение в unique поле вы получите исключении на уровне БД а не ошибку на уровне валидатора формы.
Кстати этот пример плох ещё тем что пароль не посолили.
Хеш будет иметь всегда фиксированный размер (в 64 символа в случае с SHA256). Даже у пустой строки, ага.
Если не указан максимальный размер текстового поля то его размер на уровне БД будет 255 символов. А использовать будем всегда только 64, т.е. имеем оверхед.
Или например если вы не указали максимальный размер поля, то он не будет валидироватся на уровне формы и вы получите исключение при сохранении в БД - ещё один наглядный пример что валидация форм не всегда коррелирует с презентацией на уровне БД.
Значит нам нужно указать размер поля, например так:
Ограничивать размер пароля совершенно глупо, чем длиннее пароль тем выше его надёжность. Я например могу использовать целую фразу и вставлять её автоматически например из брелока.
Какая вам разница какой длины мой пароль? Хоть весь текст Войны и Мира, всё равно ведь в вашей БД он займёт 64 символа. Главное чтобы уложилось в разумное ограничение на длину POST запроса.
Кстати также глупо ограничивать или навязывать мне набор символов, например чтобы обязательно были в нём цифры. Пароль из шестнадцати обычных латинских букв надёжней пароля из шести крякозяблов "qwert$123".
При этом валидацию пароля делайте сами, вручную при этом я бы вам советовал на самом деле проверять только что он не пустой, ну в крайнем случае минимальный размер.
Надеюсь эта маленькая заметочка наглядно показала вам сразу несколько ловушек в Grails.
По хорошему для пароля нужно создать отдельный пользовательский тип или constraint.
У кого есть свободное время, сделайте пожалуйста плагин, я был бы очень благодарен.
class User {
String email
...
String password
static constraints {
password(nullable: false, blank: false, minSize: 6)
}
}
И потом делают валидацию по этому полю а перед сохранением перезаписывают его хешом, например:
user.password = params.password.encodeAsSHA256()
Это некрасиво потому что в этом случае описание поля идёт в разрез с его презентацией на уровне БД. Описание модели должно описывать доменный объект с аспектом как его сохранять в БД, и валидациия указывается уровня БД а не биндинга в контроллере.
Об этом нужно помнить. Например при сохранении не уникального значение в unique поле вы получите исключении на уровне БД а не ошибку на уровне валидатора формы.
Кстати этот пример плох ещё тем что пароль не посолили.
Хеш будет иметь всегда фиксированный размер (в 64 символа в случае с SHA256). Даже у пустой строки, ага.
Если не указан максимальный размер текстового поля то его размер на уровне БД будет 255 символов. А использовать будем всегда только 64, т.е. имеем оверхед.
Или например если вы не указали максимальный размер поля, то он не будет валидироватся на уровне формы и вы получите исключение при сохранении в БД - ещё один наглядный пример что валидация форм не всегда коррелирует с презентацией на уровне БД.
Значит нам нужно указать размер поля, например так:
password(nullable: false, blank: false, maxSize: 64)Хочу обратить внимание что ещё один аргумент против указания характеристик пароля в описании поля в которое будет сохранён его хеш, потому что в таком случае пароль будет ограничен в 64 символа.
Ограничивать размер пароля совершенно глупо, чем длиннее пароль тем выше его надёжность. Я например могу использовать целую фразу и вставлять её автоматически например из брелока.
Какая вам разница какой длины мой пароль? Хоть весь текст Войны и Мира, всё равно ведь в вашей БД он займёт 64 символа. Главное чтобы уложилось в разумное ограничение на длину POST запроса.
Кстати также глупо ограничивать или навязывать мне набор символов, например чтобы обязательно были в нём цифры. Пароль из шестнадцати обычных латинских букв надёжней пароля из шести крякозяблов "qwert$123".
Заключение
Я бы вам посоветовал вот такое описание поля пароляpassword(nullable: false, size: 64..64, bindable: false)Где размер строго 64 символа на хеш (зависит от алгоритма хеширования), и ещё отключен биндинг на всякий пожарный.
При этом валидацию пароля делайте сами, вручную при этом я бы вам советовал на самом деле проверять только что он не пустой, ну в крайнем случае минимальный размер.
Надеюсь эта маленькая заметочка наглядно показала вам сразу несколько ловушек в Grails.
По хорошему для пароля нужно создать отдельный пользовательский тип или constraint.
У кого есть свободное время, сделайте пожалуйста плагин, я был бы очень благодарен.
вторник, 8 января 2013 г.
Совет: Именуйте переменные с jQuery объектом начиная с префикса $
Как известно большинство методов jQuery возвращают объект-обвёртку типа
Очень часто путаешься в коде по этому поводу.
Чтобы это облегчить хорошая практика называть переменные сохраняющие
jQuery.Очень часто путаешься в коде по этому поводу.
Чтобы это облегчить хорошая практика называть переменные сохраняющие
jQuery обвёртку над объектом начиная с префикса знак доллара $:var $from = $('[data-datepicker="from"]');
Такое простое соглашение может уберечь вас от неприятностей.
понедельник, 24 декабря 2012 г.
Grails GORM gotchas and tricks: используйте read() вместо get() в update actions
Попался на интересную проблему в любимом Grails. Как и 90% всех проблем это от незнания тонкостей нижележащего Hibernate.
Есть update action на который мы сабмитим форму редактирования объекта, например Person. Делаем валидацию которая если не прошла, возвращаемся опять в режим редактирования.
Если ошибок нет, сохраняем объект. Ну вообщем классика жанра:
И тут оказывается что если валидация не прошла, то сами изменения почему-то всё равно сохранились в объекте! А ведь мы точно не дёргали save().
Всё дело в dirty-checking, если вы поменяли поле в объекте то он таки уже сохранится в БД таким. К тому же на каждый action контроллера всегда открывается и флашится транзакция.
Избежать можно двумя способами: склонировать объект отдельно или заменить
У объекта который вернулся через
Сразу же возникает вопрос, почему же тогда везде в документации используется
Надеюсь кому то спас несколько часов дебага :)
Есть update action на который мы сабмитим форму редактирования объекта, например Person. Делаем валидацию которая если не прошла, возвращаемся опять в режим редактирования.
Если ошибок нет, сохраняем объект. Ну вообщем классика жанра:
def update(Long id) {
def person = Person.get(id)
person.properties = params
person.validate()
if (person.hasErrors()) {
render(view: 'edit', model: [person: person])
return
}
person.save(flush: true, failOnError: true)
}
И тут оказывается что если валидация не прошла, то сами изменения почему-то всё равно сохранились в объекте! А ведь мы точно не дёргали save().
Всё дело в dirty-checking, если вы поменяли поле в объекте то он таки уже сохранится в БД таким. К тому же на каждый action контроллера всегда открывается и флашится транзакция.
Избежать можно двумя способами: склонировать объект отдельно или заменить
get() на read(). Т.е. было:def person = Person.get(id)стало:
def person = Person.read(id)
У объекта который вернулся через
read() отключено dirty checking, и для сохранения объекта требуется явно вызвать save().Сразу же возникает вопрос, почему же тогда везде в документации используется
get()? Если вкратце то объект полученный через get() может частично обновляться только по изменённым полям, в случае с read() будет перегенериватся SQL со всеми полями. Надеюсь кому то спас несколько часов дебага :)
понедельник, 17 декабря 2012 г.
#kranonit S06 High load
Добрый день друзья!
Мы продолжаем наш полный событий декабрь.
Мы уже провели две встречи в этом декабре, вы можете посмотреть отчёты и материалы на странице материалов.
И сегодня мы рады вас пригласить на заключительную в этом году встречу нашего клуба о высоких нагрузках, которая состоится в воскресенье, 23 декабря в 12:00 в конференц зале 139 Нархоза на ул. Семашко 16, ст. м. Кольцевая (см. карту)
Вас ждёт два доклада
Продемонстрируем такие технологии: MongoDB, Memcached, Sphinx, Spring DATA, Varnish.
Будет много кода! ;)
Игорь Цинько aka combats, опытный PHP и Java программист. Делал великолепный доклад на первой встрече нашего клуба о том как найти себе работу.
У Игоря большой опыт разработки высоконагруженных систем. Он участвовал в таких проектах:
Ассистировать ему буду я, Серёжа Пономарёв.
Я работал в одном из крупнешних в США сервисе по заказу билетов и гостиниц HotWire.com.
Java Developer, призёр Кубка Мира по К1, поэт и путешественник Артем Юрков поделится опытом как совмещать активное построение карьеры IT специалиста с насыщенной и разнообразной жизнью.
Расскажет о способах самоорганизации, повышения мотивации и стратегии личностного роста. Также будут затронуты вопросы тайм менеджмента, планирования и секреты успеха.
Будет очень круто, подписывайтесь на встречу ВКонтакте.
Не упустите шанс пообщаться с работодателями!


Также в субботу 22го декабря лучшие тренеры проведут для вас отличную онлайн конференцию IT Brunch посвящённую инженерным практикам без которых не стать профессиональным программистом.
Как человек слышавший часть докладов ранее смело заявляю: это будет просто бомба! Пропустить такое просто нельзя. В прочем как и все предыдущие конференции IT Brunch :)
Ради неё мы даже перенесли встречу нашего клуба на следующий день, в воскресенье.
И мы рады сообщить что в Кривом Роге 26 января состоится первый тренинг по SCRUM!
Тренинг будет полезен как новичкам, так и специалистам, работающим по методологии SCRUM. Новички смогут получить практические знания. Опытные специалисты получат дополнительные знания по SCRUM, а так же расширят имеющийся опыт.
Харизматичный смайл будет далее использоваться в качестве нашего талисмана. А потому мы должны придумать ему имя. В связи с чем до 23 декабря объявляется конкурс имени.
И ещё мы ищем оператора с камерой чтобы снимать наши встречи. Если у вас есть камера способная снимать хотя бы 40 минут, отпишитесь пожалуйста мне, очень надо.
Увидимся!
Мы продолжаем наш полный событий декабрь.
Мы уже провели две встречи в этом декабре, вы можете посмотреть отчёты и материалы на странице материалов.
И сегодня мы рады вас пригласить на заключительную в этом году встречу нашего клуба о высоких нагрузках, которая состоится в воскресенье, 23 декабря в 12:00 в конференц зале 139 Нархоза на ул. Семашко 16, ст. м. Кольцевая (см. карту)
Вас ждёт два доклада
High load
Мы подготовим для вас рассказ об архитектуре и технических средствах для того чтобы обеспечить тысячи пользователей стабильным сервисом: NoSQL базы данных, облачные платформы, кеширование, REST сервисы.Продемонстрируем такие технологии: MongoDB, Memcached, Sphinx, Spring DATA, Varnish.
Будет много кода! ;)
Докладчики
Игорь Цинько aka combats, опытный PHP и Java программист. Делал великолепный доклад на первой встрече нашего клуба о том как найти себе работу.
У Игоря большой опыт разработки высоконагруженных систем. Он участвовал в таких проектах:
- Крупнейшая в Казахстане социальная сеть Мой Нур (побратим украинского Connect.ua)
- Картографический сервис TomTom используемый Apple в iPhone, iPad
- Крупный провайдер оплаты мобильных услуг по всему миру VoxTelecom
Ассистировать ему буду я, Серёжа Пономарёв.
Я работал в одном из крупнешних в США сервисе по заказу билетов и гостиниц HotWire.com.
Success story от Артёма Юркова: Как все успеть и не слететь с катушек
Java Developer, призёр Кубка Мира по К1, поэт и путешественник Артем Юрков поделится опытом как совмещать активное построение карьеры IT специалиста с насыщенной и разнообразной жизнью.
Расскажет о способах самоорганизации, повышения мотивации и стратегии личностного роста. Также будут затронуты вопросы тайм менеджмента, планирования и секреты успеха.
Будет очень круто, подписывайтесь на встречу ВКонтакте.
Ярмарка IT вакансий
Также рады сообщить что уже в этот четверг 20 декабря на втором этаже главного корпуса КНУ (ранее КТУ) по ул. 22-го Партсъезда, 11 с 10:00 до 14:00 будет проходить "Ярмарка IT Вакансий". В программе ярмарки - презентации компаний, блиц-собеседования, информация о трудоустройстве и прочее.Не упустите шанс пообщаться с работодателями!

Онлайн конференция ITBrunch про инженерные практики
Также в субботу 22го декабря лучшие тренеры проведут для вас отличную онлайн конференцию IT Brunch посвящённую инженерным практикам без которых не стать профессиональным программистом.
Как человек слышавший часть докладов ранее смело заявляю: это будет просто бомба! Пропустить такое просто нельзя. В прочем как и все предыдущие конференции IT Brunch :)
Ради неё мы даже перенесли встречу нашего клуба на следующий день, в воскресенье.
Первый тренинг SCRUM в Кривом Роге
Сегодня SCRUM наверное самая популярная методология процесса разработки. Это представитель семейства так называемой гибкой методологии разработки (Agile). Сейчас многие компании внедряют этот процесс у себя, и программисты умеющие работать по нему особенно ценятся.И мы рады сообщить что в Кривом Роге 26 января состоится первый тренинг по SCRUM!
Тренинг будет полезен как новичкам, так и специалистам, работающим по методологии SCRUM. Новички смогут получить практические знания. Опытные специалисты получат дополнительные знания по SCRUM, а так же расширят имеющийся опыт.
Выбираем имя для нашего персонажа
Юлия Тара создала логотип нашего клуба!Харизматичный смайл будет далее использоваться в качестве нашего талисмана. А потому мы должны придумать ему имя. В связи с чем до 23 декабря объявляется конкурс имени.
И ещё мы ищем оператора с камерой чтобы снимать наши встречи. Если у вас есть камера способная снимать хотя бы 40 минут, отпишитесь пожалуйста мне, очень надо.
И не прячетесь, вступайте в группы!
- Основное наше общение перешло в группу Вконтакте
- Группа в LinkedIn
- Группа в Facebook
- Группа в G+
- Наша организация на GitHub github.com/kranonit
- Twitter хештег #kranonit
- Также у нас есть чат в Skype где мы активно обсуждаем организационные моменты.
Попросите меня, я вас добавлю. Мой скайп stokito. - Чтобы получать рассылку на почту зарегистрируйтесь тут.
Увидимся!
воскресенье, 9 декабря 2012 г.
Отчёт о пятой встрече #kranonit S05
На следующие же выходные после четвёртой встречи мы провели пятую. Это очень неправильно проводить так часто встречи, но 15го декабря будет тренинг по скраму в Кривом Роге которые посетит много наших участников.
Темой были выбраны облачные технологии чтобы подготовить слушателей к следующей встрече про высокие нагрузки. Также планировался ещё один доклад про криптографию, но докладчик заболел, так что услышим его уже в следующем году.
Нам повезло и у нас отозвался докладчик с реальным опытом в облачных технологиях человек - Сергей Бурма. Он даже защитил диплом по этой теме.
Вот видео доклада:
А вот презентация:
Темой были выбраны облачные технологии чтобы подготовить слушателей к следующей встрече про высокие нагрузки. Также планировался ещё один доклад про криптографию, но докладчик заболел, так что услышим его уже в следующем году.
Нам повезло и у нас отозвался докладчик с реальным опытом в облачных технологиях человек - Сергей Бурма. Он даже защитил диплом по этой теме.
Вот видео доклада:
А вот презентация:
суббота, 8 декабря 2012 г.
Ницше и автоматизация
Ницше ввёл понятия свободных и связанных умов. Связанные - основа общества обеспечивающая его выживание, свободные обеспечивают его развитие. На самом деле это настолько очевидная вещь, которая можно встретить в самых первых письменных источниках. Просто Ницше круче цитировать.
Среди программистов, как и среди других интеллектуально сложных деятельностей довольно высок процент свободных умов. Мне сложно оценить но думаю процентов семь по субъективным оценкам. Ещё довольно много имитирующих полноценную работу мысли, которые не мешают и даже помогают тем семи процентам.
Проблемы начинаются когда происходит столкновение между этими группами. Оно всегда переходит в другой хиливар - машины vs. люди.
Работу связанных умов всегда можно автоматизировать. Причём в идеале полностью. От готовки еды до проституции.
Но что делеать с освободившейся массой людей после автоматизации?
Есть например такие варианты:
Я знаю только две вещи:
Мне кажется что лучше всего всё таки социализм, чтобы не было мотивации у сытых связанных умов лезть в понастоящему серьёзные вещи, как то управление государством или автоматизацию. Даже несмотря на то что он противоречит естественному отбору, разнообразие для природы важней, и сегодняшний генный мусор через тысячу лет может оказаться спасителем всего рода человеческого как такового. Хотя скорее будет наоборот.
А сейчас я хочу привести пару примеров когда они таки добрались.
Пример 1вый, бюрократический. Как унизительно делать работу скрипта. Государственное регулирование действительно можно заменить на один скрипт, это я вам говорю как человек который как раз этим и занимался профессионально.
Пример второй, бюрократический: чтобы воспользоватся клиент-банком мне понадобилось сгенерировать ключ. После нужно было лично явится в банк с распечатанным на бумаге фингерпринтом ключа. Принтера у меня не было, в итоге это затянулось на неделю пока я распечатал. Вариант просто продиктовать несколько шестнадцатеричных цифр фингерпринта по телефону категорично был отвергнут банком.
Пример третий, технологическая сложность. Есть адрес дома, нужно показать его на Яндекс Картах. Решение в лоб: простой iframe в урле которого указать адрес, как в гугл картах.
В Яндекс картах такого не предусмотрено и в помине, нужно писать яваскрипт на их корявом API. Зато есть кнопочки расшарить место в социальных сетях, которые, уверен, никто никогда не нажимал.
Четвёртый пример технологической сложности. Ставим JDK инсталятором. Всё? Нееееет. Теперь нужно идти прописывать переменные окружения JAVA_HOME. Почему инсталятор этого не сделал и зачем они вообще нужны, непонятно. Для большего фана никаких инсталяторов под дебиан нет принципиально.
Ещё пример бюрократический. Оставляем комментарий в чём то блоге, просят разгадать капчу. Причём не простую, а самую уродскую рекапчу.
Убунта с Юнити. Чуть более, чем полностью, состоит из намерено корявых решений.
Пример архитектурный. Раньше строили красивые дома, была своя архитектура, были мастера которые передавали знания из одного поколения в другое.
А потом резко все стали цыганами и начали строить сараи из стекла и метала.
А деревянные резаные дома сгнили.
Пример дизайнерский. Что у нас делают все дизайнеры? Правильно, рисуют схемы метро. Вот например товарищ принялся за это дело в Киеве.
Он делает это настолько по уродски, что это нравится связанным умам. Посмотрите сколько его гнусные и неудобные указатели вызывают восторга у связанных умов.
Это очень круто так уметь, "писать попсню намного сложней чем настоящее произведение искусства (c) Потап". "Отсосни иголочку" не менее гениально чем "Я встретил вас, и всё былое".
Но всё таки я уверен что быдлоориентированый дизайн не допустим в серьёзных вещах. Это также глупо как прийти к конструкторам и предложить рисовать чертежи розовым маркером.
Пример муниципальный. Просто гляньте в окно. Сколько насчитали маразмов? Ими кишат все наши города.
Можно продолжить сотню примеров из которых вывести какие то закономерности, нужна какая то мораль этому тексту.
Не будет никакой морали.
Вы делаете неудобное гавно, потому что вас так научили, вы даже не пытаетесь системно думать и находить коренные аспекты, вы быдло, но почему то забываете об этом, вы заебали, вы отравляете нормальным людям жизнь.
Всё что я хотел сказать.
Среди программистов, как и среди других интеллектуально сложных деятельностей довольно высок процент свободных умов. Мне сложно оценить но думаю процентов семь по субъективным оценкам. Ещё довольно много имитирующих полноценную работу мысли, которые не мешают и даже помогают тем семи процентам.
Проблемы начинаются когда происходит столкновение между этими группами. Оно всегда переходит в другой хиливар - машины vs. люди.
Работу связанных умов всегда можно автоматизировать. Причём в идеале полностью. От готовки еды до проституции.
Но что делеать с освободившейся массой людей после автоматизации?
Есть например такие варианты:
- Сжигать в биореакторах (войны, шахты, репрессии, голодоморы, алкашка/наркомашка).
- Платить пособия (делаем социализм) лишь бы не убивали за бутылку водки.
- Занять их важной работой где они будут имитировать бурную деятельность: силовики, спорт, театры, кафедры философии да можно даже целые институты.
Блин, в институте Пушкиноведения было защищено около 1000 ДОКТОРСКИХ диссертаций. У меня такое впечатление, что если они расскажут Пушкину о том, что он думал, когда писал то или иное произведение, то он будет в шоке. баш
Я знаю только две вещи:
- Нужно ли заменять людей машинами - однозначно да.
- Нужно приучать связанные умы терпимости толерантности, чтобы не сгнобили на первом этапе свободные умы. Ещё лучше если им привить технократические ценности (как в Японии).
Мне кажется что лучше всего всё таки социализм, чтобы не было мотивации у сытых связанных умов лезть в понастоящему серьёзные вещи, как то управление государством или автоматизацию. Даже несмотря на то что он противоречит естественному отбору, разнообразие для природы важней, и сегодняшний генный мусор через тысячу лет может оказаться спасителем всего рода человеческого как такового. Хотя скорее будет наоборот.
А сейчас я хочу привести пару примеров когда они таки добрались.
Пример 1вый, бюрократический. Как унизительно делать работу скрипта. Государственное регулирование действительно можно заменить на один скрипт, это я вам говорю как человек который как раз этим и занимался профессионально.
Пример второй, бюрократический: чтобы воспользоватся клиент-банком мне понадобилось сгенерировать ключ. После нужно было лично явится в банк с распечатанным на бумаге фингерпринтом ключа. Принтера у меня не было, в итоге это затянулось на неделю пока я распечатал. Вариант просто продиктовать несколько шестнадцатеричных цифр фингерпринта по телефону категорично был отвергнут банком.
Пример третий, технологическая сложность. Есть адрес дома, нужно показать его на Яндекс Картах. Решение в лоб: простой iframe в урле которого указать адрес, как в гугл картах.
В Яндекс картах такого не предусмотрено и в помине, нужно писать яваскрипт на их корявом API. Зато есть кнопочки расшарить место в социальных сетях, которые, уверен, никто никогда не нажимал.
Четвёртый пример технологической сложности. Ставим JDK инсталятором. Всё? Нееееет. Теперь нужно идти прописывать переменные окружения JAVA_HOME. Почему инсталятор этого не сделал и зачем они вообще нужны, непонятно. Для большего фана никаких инсталяторов под дебиан нет принципиально.
Ещё пример бюрократический. Оставляем комментарий в чём то блоге, просят разгадать капчу. Причём не простую, а самую уродскую рекапчу.
Убунта с Юнити. Чуть более, чем полностью, состоит из намерено корявых решений.
Пример архитектурный. Раньше строили красивые дома, была своя архитектура, были мастера которые передавали знания из одного поколения в другое.
А потом резко все стали цыганами и начали строить сараи из стекла и метала.
А деревянные резаные дома сгнили.
Пример дизайнерский. Что у нас делают все дизайнеры? Правильно, рисуют схемы метро. Вот например товарищ принялся за это дело в Киеве.
Он делает это настолько по уродски, что это нравится связанным умам. Посмотрите сколько его гнусные и неудобные указатели вызывают восторга у связанных умов.
Это очень круто так уметь, "писать попсню намного сложней чем настоящее произведение искусства (c) Потап". "Отсосни иголочку" не менее гениально чем "Я встретил вас, и всё былое".
Но всё таки я уверен что быдлоориентированый дизайн не допустим в серьёзных вещах. Это также глупо как прийти к конструкторам и предложить рисовать чертежи розовым маркером.
Пример муниципальный. Просто гляньте в окно. Сколько насчитали маразмов? Ими кишат все наши города.
Можно продолжить сотню примеров из которых вывести какие то закономерности, нужна какая то мораль этому тексту.
Не будет никакой морали.
Вы делаете неудобное гавно, потому что вас так научили, вы даже не пытаетесь системно думать и находить коренные аспекты, вы быдло, но почему то забываете об этом, вы заебали, вы отравляете нормальным людям жизнь.
Всё что я хотел сказать.
пятница, 7 декабря 2012 г.
Отчёт о вебинаре "Программируем по-взрослому"
Сегодня с Виктором Кучиным провели вебинар где обзорно прошлись по инженерным практикам и процессам разработки. Себя оцениваю на четвёрочку с минусом, но всё равно считаю получилось круто.
Неожиданно подвёл микрофон на ноутбуке, это странно потому что ноут мой специально для конференций, по скайпу по крайней мере всегда на отлично.
Видео опять получилось корявым с запозданием звука до вменяемого состояние его ещё нужно будет сидеть дорабатывать: проще заново записать слайдкаст, что наверное и сделаю.
Попробовал закинуть презентацию на SlideShare и свести со звуком. Свёл а результат не сохранился. Всё, это была моя последняя попытка освоить слайдшар - в топку его.
Пока выкладываю презентацию, надеюсь появится время и желание записать полноценный слайдкаст.
Неожиданно подвёл микрофон на ноутбуке, это странно потому что ноут мой специально для конференций, по скайпу по крайней мере всегда на отлично.
Видео опять получилось корявым с запозданием звука до вменяемого состояние его ещё нужно будет сидеть дорабатывать: проще заново записать слайдкаст, что наверное и сделаю.
Попробовал закинуть презентацию на SlideShare и свести со звуком. Свёл а результат не сохранился. Всё, это была моя последняя попытка освоить слайдшар - в топку его.
Пока выкладываю презентацию, надеюсь появится время и желание записать полноценный слайдкаст.
среда, 5 декабря 2012 г.
Жаркий декабрь!
Зимние декабрьские вечера лучше время чтобы учится программированию. И этот декабрь будет особенным! Мы уже встретили его встречей клуба посвящённой защите программ от взлома, но это только начало.
Я подготовил для вас подборку крутейших образовательных событий:
Чтобы попасть на вебинар вам нужно зарегистрироваться и вы получите ссылку для входа.
Нас ждёт один доклад на актуальную тему облачных вычислений.
Сейчас индустрия облачных технологий переживает бум. Необходимость обеспечивать поддержку высоких нагрузок и поддерживать свой большой парк серверов вынуждает искать новые технологические подходы.
Именно облачные технологии и NoSQL базы дынных позволили совершить прорыв в этом направлении.
Не удивительно что крупнейшие интернет компании и стали пионерами в этой области.
Первую революцию совершил крупнейший в мире интернет магазин Amazon которые используя свою инфраструктуру открыли свой сервис хостинга со возможностью самостоятельно без контактирования с тех поддержкой управлять своим парком виртуальных серверов да ещё и с возможностью делать это автоматически через специальный API!
Благодаря этому программы могут автоматически регулировать количество потребляемых ресурсов в зависимости от нагрузок.
Примеру Amazon последовала компания Google открыв свою платформу Google App Engine на которой сама и работает.
Конечно же Microsoft не осталась в стороне и запустила свой облачный сервис Windows Azure.
На сегодня мы имеем целый парад разного рода облачных платформ: CloudFoundry (от компании VMWare), OpenShift (от компании Red Hat), Herroku, Jelastic и десятки других!
Сергей Бурма, Python/C++ разработчик.
Сергей имеет опыт работы с такими облачными платформами как Google App Engine и OpenShift. Он защитил диплом про облачные технологии.
Приходите, будет интересно!
Подписывайтесь на встречу ВКонтакте.
По всем вопросам обращайтесь к Эдуарду Лобасу edurad.lobas@ilogos-ua.com +38(067) 525-75-82.
И мы рады сообщить что в Кривом Роге 15го декабря состоится первый тренинг по SCRUM!
Тренинг будет полезен как новичкам, так и специалистам, работающим по методологии SCRUM. Новички смогут получить практические знания. Опытные специалисты получат дополнительные знания по SCRUM, а так же расширят имеющийся опыт.
Курс полон практики, SCRUM-игр и моделирования. Основной механизм обучения – это опыт.
Стоит тренинг практически бесплатно: 100 гривен. Это оооочень дёшево. Терзайте.
Если вдруг кто не может себе сейчас позволить даже эту сумму, обратитесь ко мне, Серёже Пономарёву, я проспонсирую взамен я попрошу вас помочь мне например перевести интересную статью с английского. Пишите мне на stokito@gmail.com.
Она ещё уточняется, предварительно планируется на 20е декабря, так что следите за нашими анонсами. Мы вас обязательно оповестим.
Как человек слышавший часть докладов ранее смело заявляю: это будет просто бомба! Пропустить такое просто нельзя. В прочем как и все предыдущие конференции IT Brunch :)
Ради неё мы даже перенесли встречу нашего клуба на следующий день, в воскресенье, но об этом ниже.
Ассистировать ему буду я, Серёжа Пономарёв.
Будет очень круто, подписывайтесь на встречу ВКонтакте.
Для тех кто сейчас учит яву и пытается устроится у меня хорошие новости: я вместе с Виктором Кучиным с 15го января проведём трёхнедельный онлайн курс Ява интенсива. Это уникальный курс где мы вместе с нуля разработаем сайт на современных технологиях который можно будет указать в резюме.
Стоит копейки.
И также напоминаем что мы проводим конкурс на логотип для нашего клуба.
Будут ценные призы ;)
И ещё мы ищем оператора с камерой чтобы снимать наши встречи. Если у вас есть камера способная снимать хотя бы 40 минут, отпишитесь пожалуйста мне, очень надо.
Группа в LinkedIn.
Группа в Facebook.
Наша организация на GitHub github.com/kranonit
Twitter хештег #kranonit
Также у нас есть чат в Skype где мы активно обсуждаем организационные моменты.
Попросите меня, я вас добавлю. Мой скайп stokito.
Чтобы получать рассылку на почту зарегистрируйтесь тут.
Ну что, готовы провести этот декабрь с пользой? ;)
Я подготовил для вас подборку крутейших образовательных событий:
- Мой вебинар "Программируем по-взрослому" который будет отличным стартом для тех кто хочет узнать что такое инженерные практики и повзрослеть как профессиональный программист.
- Пятая встреча нашего клуба анонимных программистов посвящённая облачным технологиям.
- Первый трениг по самой популярной методологии процесса разработки SCRUM в Кривом Роге.
- Первая ярмарка IT вакансий в Кривом Роге где соберутся все наши компании.
- Крутейшая и при том бесплатная онлайн конференция IT Brunch посвящённая Экстремальному программированию и инженерным практикам
- Заключительная в этом году встреча нашего клуба посвящённая высоконагруженным системам.
- И в качестве бонуса тренинг интенсива для тех кто учить Java где я лично буду тренером.
Вебинар "Программируем по-взрослому"
Завтра, в четверг 6го декабря я приглашаю вас на свой онлайн семинар Программируем по-взрослому! посвящённый инженерным практикам. Если вы пропустили первую встречу то вам просто обязательно нужно посмотреть его. А даже если вы были, то для вас тоже будет много нового ;)Описание доклада
Современное программирование ещё больше похоже на алхимию: многие решения принимаются интуитивно. Тем не менее на глазах созрели проверенные методологии разработки программ:- Экстремальное программирование (XP programming)
- Автоматическое тестирование
- Непрерывная интеграция (Continuous Integration)
- Гибкие процессы разработки (Agile).
Чтобы попасть на вебинар вам нужно зарегистрироваться и вы получите ссылку для входа.
Пятая встреча #kranonit посвящённая облачным технологиям
Друзья, рады сообщить что следующая встреча нашего клуба состоится уже в эту субботу 8го декабря в 12:00 в конференц зале 139 Нархоза: ул. Семашко, 16, ст. м. Кольцевая (см. карту).Нас ждёт один доклад на актуальную тему облачных вычислений.
Сейчас индустрия облачных технологий переживает бум. Необходимость обеспечивать поддержку высоких нагрузок и поддерживать свой большой парк серверов вынуждает искать новые технологические подходы.
Именно облачные технологии и NoSQL базы дынных позволили совершить прорыв в этом направлении.
Не удивительно что крупнейшие интернет компании и стали пионерами в этой области.
Первую революцию совершил крупнейший в мире интернет магазин Amazon которые используя свою инфраструктуру открыли свой сервис хостинга со возможностью самостоятельно без контактирования с тех поддержкой управлять своим парком виртуальных серверов да ещё и с возможностью делать это автоматически через специальный API!
Благодаря этому программы могут автоматически регулировать количество потребляемых ресурсов в зависимости от нагрузок.
Примеру Amazon последовала компания Google открыв свою платформу Google App Engine на которой сама и работает.
Конечно же Microsoft не осталась в стороне и запустила свой облачный сервис Windows Azure.
На сегодня мы имеем целый парад разного рода облачных платформ: CloudFoundry (от компании VMWare), OpenShift (от компании Red Hat), Herroku, Jelastic и десятки других!
Докладчик
Сергей Бурма, Python/C++ разработчик.
Сергей имеет опыт работы с такими облачными платформами как Google App Engine и OpenShift. Он защитил диплом про облачные технологии.
Приходите, будет интересно!
Подписывайтесь на встречу ВКонтакте.
По всем вопросам обращайтесь к Эдуарду Лобасу edurad.lobas@ilogos-ua.com +38(067) 525-75-82.
Первый тренинг SCRUM в Кривом Роге
Сегодня SCRUM наверное самая популярная методология процесса разработки. Это представитель семейства так называемой гибкой методологии разработки (Agile). Сейчас многие компании внедряют этот процесс у себя, и программисты умеющие работать по нему особенно ценятся.И мы рады сообщить что в Кривом Роге 15го декабря состоится первый тренинг по SCRUM!
Цель мероприятия
Изучить основы SCRUM процесса, через его практическое применение, включая планирование, оценку и запуск планируемого или существующего проекта по SCRUM методологии.Тренинг будет полезен как новичкам, так и специалистам, работающим по методологии SCRUM. Новички смогут получить практические знания. Опытные специалисты получат дополнительные знания по SCRUM, а так же расширят имеющийся опыт.
Курс полон практики, SCRUM-игр и моделирования. Основной механизм обучения – это опыт.
Стоит тренинг практически бесплатно: 100 гривен. Это оооочень дёшево. Терзайте.
Если вдруг кто не может себе сейчас позволить даже эту сумму, обратитесь ко мне, Серёже Пономарёву, я проспонсирую взамен я попрошу вас помочь мне например перевести интересную статью с английского. Пишите мне на stokito@gmail.com.
Ярмарка IT вакансий
Сейчас идут переговоры чтобы устроить ярмарку IT вакансий где будут представлены все айти компании нашего города. Она планируется бесплатной для студентов и будет проходить в актовом зале КТУ. Мы желаем так же представить наш клуб на ней.Она ещё уточняется, предварительно планируется на 20е декабря, так что следите за нашими анонсами. Мы вас обязательно оповестим.
Онлайн конференция ITBrunch про инженерные практики
Также в субботу 22го декабря лучшие тренеры проведут для вас отличную онлайн конференцию IT Brunch посвящённую инженерным практикам.Как человек слышавший часть докладов ранее смело заявляю: это будет просто бомба! Пропустить такое просто нельзя. В прочем как и все предыдущие конференции IT Brunch :)
Ради неё мы даже перенесли встречу нашего клуба на следующий день, в воскресенье, но об этом ниже.
Заключительная в этом году встреча нашего клуба посвящённая высконагруженым системам
В воскресенье, 23го декабря мы приглашаем вас на крутейшую и последнюю встречу в этом году посвящённую высоконагруженым системам (Highload). Мы подготовим для вас рассказ об архитектуре и технических средствах для того чтобы обеспечить тысячи пользователей стабильным сервисом: NoSQL базы данных, облачные платформы, кеширование, REST сервисы.Докладчик
Игорь Цинько aka combats, опытный PHP и Java программист. Делал великолепный доклад на первой встрече нашего клуба о том как найти себе работу.Ассистировать ему буду я, Серёжа Пономарёв.
Будет очень круто, подписывайтесь на встречу ВКонтакте.
Онлайн курс по Java
Для тех кто сейчас учит яву и пытается устроится у меня хорошие новости: я вместе с Виктором Кучиным с 15го января проведём трёхнедельный онлайн курс Ява интенсива. Это уникальный курс где мы вместе с нуля разработаем сайт на современных технологиях который можно будет указать в резюме.
Стоит копейки.
И также напоминаем что мы проводим конкурс на логотип для нашего клуба.
Будут ценные призы ;)
И ещё мы ищем оператора с камерой чтобы снимать наши встречи. Если у вас есть камера способная снимать хотя бы 40 минут, отпишитесь пожалуйста мне, очень надо.
И не прячетесь, вступайте в группы!
Основное наше общение перешло в группу Вконтакте.Группа в LinkedIn.
Группа в Facebook.
Наша организация на GitHub github.com/kranonit
Twitter хештег #kranonit
Также у нас есть чат в Skype где мы активно обсуждаем организационные моменты.
Попросите меня, я вас добавлю. Мой скайп stokito.
Чтобы получать рассылку на почту зарегистрируйтесь тут.
Ну что, готовы провести этот декабрь с пользой? ;)
Подписаться на:
Сообщения (Atom)







