С недавнего времени у меня появилась настойчивая мысль, что профессиональное развитие сильно замедлилось и это хочется как-то исправить. Да, читаю книги, слушаю курсы, но в то же время приходит и понимание того, что возможно пришло время сменить работу, здесь вроде как все изучено, плавно уходим в рутину. Данная мысль сподвигла меня на рассылку своего резюме в несколько компаний — лидеров рынка. После прохождения собеседования в 3 из них, я решил, как водится внести свои 5 копеек в освещение обширной темы собеседования, а именно технических вопросов по Java коллекциям, с которыми приходится сталкиваться. Да, знаю, читатель скажет: «коллекции — избитая тема, сколько можно», но часть из приведенных ниже вопросов, я задавал своим знакомым разработчикам, которые занимают именно позиции разработчиков («крепких середнячков», по меркам недалекой от Москвы глубинки, которые уверенно справляются со своей работой на практике, а вот в теории скажем так есть пробелы, потому, что работа не требует решения каких нетривиальных задач, да и потому что не всем это интересно — изучать как внутри работает структура данных), вызывало растерянность. Думаю, что рассмотренный материал будет не очень интересен разработчикам выше уровня Junior (я попрошу их комментировать, дополнять и критиковать изложенный здесь материал), а вот Junior`ы уверен, найдут в этой статье интересное для себя.
Читать полностью »
Рубрика «java» - 266
Java собеседование. Коллекции
2012-12-11 в 12:34, admin, рубрики: java, Алгоритмы, коллекции, собеседование вопросы, метки: java, коллекции, собеседование вопросыРабота с ContactListener из Box2d в Libgdx
2012-12-10 в 19:56, admin, рубрики: android, box2d, game development, Gamedev, java, libgdx, Разработка под android, метки: android, Box2D, Gamedev, libgdx В продолжение прошлой статьи про использование Box2d в Libgdx решил рассмотреть работу с классом ContactListener
.
Из наименования класса очевидно, что использовать его следует для обработки коллизий. Рассмотрим пару практических примеров.
Кофе, табак и bootstrap за 5 секунд
2012-12-10 в 0:13, admin, рубрики: html5, java, javascript, maven, Twitter Bootstrap, метки: html5, java, javascript, maven, Twitter BootstrapОпуская лукавство в заголовке, речь пойдет о моем свеженьком опен-сорс начинании, которое показано к употреблению вовнутрь и наружно всем Java программистам.
Встречайте Tobacco Bootstrap или просто в дальнейшем Табак, который cобрал все лучшее, что я видел в мире веб-проектов в один архетип для Maven.
Читать полностью »
Создание плагина разрешения ссылок для PhpStorm (IntelliJ IDEA)
2012-12-08 в 16:30, admin, рубрики: idea, java, Kohana, phpstorm, psi, плагин, метки: idea, Kohana, phpstorm, psi, плагинЯ работаю веб-программистом, пишу на PHP и использую фреймворк Kohana. Для разработки использую потрясающую, на мой взгляд, среду PhpStorm.
При работе с большими и не очень проектами меня всегда угнетало, что я много времени трачу на навигацию по проекту, на поиск того или иного файла (контроллера или шаблона) в дереве проекта.
Для начала мне захотелось сделать так, чтобы можно было переходить из файла контроллера по нажатию Ctrl+B (или Ctrl+Click) над именем шаблона, передаваемого в кохановский View::factory(), непосредственно в файл шаблона:
Поэтому я решил написать небольшой плагин для PhpStorm, который облегчил бы мою работу и освободил бы от некоторой части рутины.
Функциональное мышление: Трансформации и оптимизации
2012-12-07 в 15:44, admin, рубрики: clojure, functional programming, groovy, java, scala, функциональное программирование Нил Форд, Архитектор ПО, ThoughWorks Inc.
16 октября 2012
перевод статьи Functional thinking: Transformations and optimizations
Функциональное программирование уходит корнями одновременно в математику и информатику, обе дисциплины имеют свою трактовку терминологии. Разработчики языков программирования и фреймворков реализуют свои удобные наименования, и лишь затем обнаруживают, что данные парадигмы уже имеют название. Обучение функциональным парадигмам довольно тяжело так как нет четкого согласования терминологии.
В прошлой части, я взял проблему классификации простых чисел и реализовал решения на нескольких функциональных языках поверх JVM и двух функциональных фреймворках. Продолжая этут ему, в этой части я буду оптимизировать предыдущий алгоритм несколькими способами, раскрывая последующие изменения в различных языках. Эта часть, как и прошлая, иллюстрирует различия в терминологии и наличие возможностей в инструментах и языках. В частности, я исследую map, filter и memoize для этих примеров.
Читать полностью »
Встреча Java User Group в Москве
2012-12-07 в 5:31, admin, рубрики: java, Программирование, метки: java, общение с интересными людьми.Хабрапривет!
В четверг, 13 декабря в 19:00 в московском офисе компании КРОК пройдет первая встреча московского сообщества Java-разработчиков с ведущими инженерами компании Oracle Сергеем Куксенко и Алексеем Шипилёвым, которые выступят со своим звездным докладом «Через тернии к лямбдам», а также ведущим инженером компании КРОК Геннадием Кругловым, который расскажет вам о Spring Data JPA и поделится собственным опытом. Встреча пройдет в формате семинара. На месте вас ждет: живое общение, обсуждение интересных тем, а также возможность пообщаться с новыми интересными людьми за чашечкой кофе с плюшками!
Читать полностью »
Функциональное мышление: Тонны трансформаций
2012-12-06 в 19:55, admin, рубрики: clojure, functional programming, groovy, java, jruby, scala, функциональное программирование Нил Форд, Архитектор ПО, ThoughWorks Inc.
25 сентября 2012
перевод статьи Functional thinking: Tons of transformations
В функциональных языках программирования подходы к повторному использованию кода существенно отличаются от ООП языков, эту тему я исследовал в статье Связывание и композиция, часть 2. ООП языки стремятся иметь множество структур данных с различными операциями, в то время как функциональные языки используют несколько с небольшим количеством операций. ООП языки способствуют созданию класс-специфичных методов (class-spesific) и вы можете использовать повторно повторяющиеся части. Функциональные языки помогают достигнуть повторное использование путем поощрения применения общих преобразований в структурах данных, с помощью функций высшего порядка можно преобразовывать операции для частных случаев.
Одни и те же структуры данных и операции встречаются в функциональных языках, многие фреймворки предоставляют поддержку функционального программирования в Java, но наименования часто отличаются. Путаница в наименованиях усложняет перевод знаний из одного языка в другой, если даже используются одни и те же концепции.
Основная цель этой части поспособствовать пониманию этой трансляции. Я возьму простые проблемы, которые требуют определиния и итерации, реализую решение на 5 различных языках (Java, Groovy, Clojure, JRuby и Scala) и двух функциональных фреймворках (Functional Java и Totally Lazy) для Java. Эти реализации одинаковы, однако детали отличаются от языка к языку.
Читать полностью »
12 декабря в 18:30 приглашаем Вас посетить Java Tech Talks@Lohika.
Наши докладчики:
Сигарев Егор «Spring around the bend»
Многие используют Spring, так как Spring стал общепризнанным стандартом в сфере Enterprise решений. Я постараюсь пролить свет на некоторые нюансы использования Spring, а также показать практические решения вопросов и проблем, возникающих в более-менее сложных проектах.
Мигутский Алексей «Мир без JSP. Thymeleaf 2.0»
Читать полностью »
Jelastic плагин для IntelliJ IDEA
2012-12-06 в 9:34, admin, рубрики: cloud computing, cloud hosting, couchdb, glassfish, IDE, intellij idea, java, jetty, mariadb, mongodb, mysql, nginx, paas, postgres, tomcat, Блог компании Jelastic, облако, Облачные вычисления, облачный хостинг, платформа как услуга, Программирование, разработка, метки: cloud computing, cloud hosting, couchdb, glassfish, IDE, intellij idea, java, jetty, mariadb, mongodb, mysql, nginx, paas, postgres, tomcat, облако, облачные вычисления, облачный хостинг, платформа как услуга, Программирование, разработкаПривет! Как и обещали в предыдущем посте, закончили работу над плагином для IntelliJ IDEA. Так что теперь не только любители Eclipse могут разворачивать проекты в облако прямо с IDE, но и пользователи самой интеллектуальной среды разработки для Java. Специальный плагин позволяет логиниться в Jelastic, разворачивать приложения, управлять ими и просматривать логи. Работать с плагином очень легко и удобно, но все же давайте рассмотрим основные возможности с помощью краткой инструкции. Читать полностью »
Да-да, это та самая библиотека padeg.dll, но работающая везде где есть java. Авторы Sergey V. Plahov aka Seer and Gennady Pokatashkin ©
Собственно, история простая. Началась она в 2007 году, когда мне срочно понадобилось склонять ФИО и должности для одного корпоративного проекта. В принципе, данный функционал не стоял в требованиях заказчика, но нужны были «плюшки», и автоматические склонения — это как раз одна из плюшек.
Довольно быстро удалось связаться с одним из авторов библиотеки, и после перечисления небольшой суммы были получены исходники на Delphi, которые затем портировались в JAVA. По первоначальной задумке java и delphi исходники должны были максимально совпадать, чтобы впоследствии можно было вносить параллельные правки. Делалось так: брались исходники на delphi, менялись расширения pas→java, и добавлялись в проект. Дальше шла правка синтаксиса. Но фактически delphi — код пришлось сильно рефакторизовать, поскольку он состоял в основном из многоэтажных if-ов и внутренних процедур, содержал глобальные переменные и не был приспособлен для многопоточной работы.
Как бы там ни было, библиотека портирована. На вопрос о копирайте мне было разрешено делать с результатом что угодно, но поскольку delphi-библиотека распространялась на условиях shareware, я не стал публиковать java-порт.
С тех пор прошло 5 лет, и я думаю, хватит одному пользоваться инструментом, которой найдется применение в хозяйстве отечественного java — разработчика. К тому же праздник на носу. Поэтому загружайте
Читать полностью »