Search
Write a publication
Pull to refresh
43
0
Артур @arty87

User

Send message

Прокрастинация. Новые задачи. Часть 2

Reading time5 min
Views110K
Сегодня мы продолжим борьбу с прокрастинацией.

Поговорим о новых задачах, узнаем что такое РЭПТ и для чего нужен план, существует ли кооперативная работа и когда это всё кончится?

Интересно?
Добро пожаловать под кат

Шифруются? Вытаскиваем байткод из JVM

Reading time5 min
Views26K


Привет, хабр. Я пишу на языке Java, занимаюсь, преимущественно, работой с серверами MMORPG игр. Серверные «сборки» выпускаются многими командами, работающими в этой сфере. Некоторые платно, а некото
Читать дальше →

Java собеседование. Коллекции vs null

Reading time3 min
Views131K
Всем привет!

В топике Java собеседование. Коллекции подробно изложен вопрос работы с Set & Map в Java. Но у меня ещё есть парочка любимых вопросов из этой области:

  1. Может ли null использоваться в качестве ключа в Map?
  2. Может ли Set содержать null?

подсказка (HashMap.java)
   public V get(Object key) {  
        if (key == null)  
            return getForNullKey();  
        int hash = hash(key.hashCode());  
        for (Entry<K,V> e = table[indexFor(hash, table.length)];  
             e != null;  
             e = e.next) {  
            Object k;  
            if (e.hash == hash && ((k = e.key) == key || key.equals(k)))  
                return e.value;  
        }  
        return null;  
    }  
    /** 
     * Offloaded version of get() to look up null keys.  Null keys map 
     * to index 0.  This null case is split out into separate methods 
     * for the sake of performance in the two most commonly used 
     * operations (get and put), but incorporated with conditionals in 
     * others. 
     */  
    private V getForNullKey() {  
        for (Entry<K,V> e = table[0]; e != null; e = e.next) {  
            if (e.key == null)  
                return e.value;  
        }  
        return null;  
    }  


Предполагается, что пытливый читатель самостоятельно поразмыслит над ответами и затем сравнит их с моими. Самые нетерпеливые могут сразу проследовать под кат.
Читать дальше →

Многопоточность в Java

Reading time14 min
Views1.1M
Здравствуйте! В этой статье я вкратце расскажу вам о процессах, потоках, и об основах многопоточного программирования на языке Java.
Наиболее очевидная область применения многопоточности – это программирование интерфейсов. Многопоточность незаменима тогда, когда необходимо, чтобы графический интерфейс продолжал отзываться на действия пользователя во время выполнения некоторой обработки информации. Например, поток, отвечающий за интерфейс, может ждать завершения другого потока, загружающего файл из интернета, и в это время выводить некоторую анимацию или обновлять прогресс-бар. Кроме того он может остановить поток загружающий файл, если была нажата кнопка «отмена».

Еще одна популярная и, пожалуй, одна из самых хардкорных областей применения многопоточности – игры. В играх различные потоки могут отвечать за работу с сетью, анимацию, расчет физики и т.п.

Давайте начнем. Сначала о процессах.
Читать дальше →

Практический опыт. Как наконец-то начать заниматься своим здоровьем?!

Reading time8 min
Views288K
Я давний подписчик блога «GTD» (уст. Учись работать).

С 2008 года я активно читал статьи на Хабре и в Интернете и пробовал:
— вставать в 5:00 утра
— делать зарядку
— обливаться холодной водой
— бегать по утрам
— питаться правильно (особенно зачитывался вегетарианством)
— вести свои делало системе GTD (Things установлен на всех гаджетах :)
— выключать компьютер вовремя (хотя бы до 23:00)
— ну и конечно, сделать 100 отжиманий и кубики на животе…

Ммм… Вы уже наверное догадались через сколько дней заканчивались порывы моей души и все возвращались на круги своя? :) Я думаю не ошибусь, если скажу, что таких как я очень и очень много.

Что изменилось в январе 2012 года?

Рано… в начале кратко обо мне:
— Возраст: 26 лет;
— Семейное положение: женат (с февраля 2012), детей пока нет;
— живем отдельно в Санкт-Петербурге.
— Работаю в офисе 5 дней в неделю с 8:30 до 17:30.
— Иногда задерживаюсь, но не часто.

Если Вы считаете, что опыт Вам не подойдет… Ваше право, но мы же понимаем, что оправдания всегда можно придумать? Я их придумывал лет 5. Я знаю о чем говорю.

Так все-таки что произошло в январе 2012?

Java собеседование. Коллекции

Reading time10 min
Views910K
С недавнего времени у меня появилась настойчивая мысль, что профессиональное развитие сильно замедлилось и это хочется как-то исправить. Да, читаю книги, слушаю курсы, но в то же время приходит и понимание того, что возможно пришло время сменить работу, здесь вроде как все изучено, плавно уходим в рутину. Данная мысль сподвигла меня на рассылку своего резюме в несколько компаний — лидеров рынка. После прохождения собеседования в 3 из них, я решил, как водится внести свои 5 копеек в освещение обширной темы собеседования, а именно технических вопросов по Java коллекциям, с которыми приходится сталкиваться. Да, знаю, читатель скажет: «коллекции — избитая тема, сколько можно», но часть из приведенных ниже вопросов, я задавал своим знакомым разработчикам, которые занимают именно позиции разработчиков («крепких середнячков», по меркам недалекой от Москвы глубинки, которые уверенно справляются со своей работой на практике, а вот в теории скажем так есть пробелы, потому, что работа не требует решения каких-то нетривиальных задач, да и потому что не всем это интересно — изучать как внутри работает структура данных), вызывало растерянность. Думаю, что рассмотренный материал будет не очень интересен разработчикам выше уровня Junior (я попрошу их комментировать, дополнять и критиковать изложенный здесь материал), а вот Junior`ы уверен, найдут в этой статье интересное для себя.
Читать дальше →

Неофициальный путеводитель по мозгу Рича Хики

Reading time5 min
Views29K
Блог Flying Machine Studios
6 декабря 2012 года
перевод статьи The Unofficial Guide to Rich Hickey's Brain



Частично, мое удовольствие от изучения Clojure возникло благодаря знакомству с мыслями Рича Хики о программировании. У Рича есть свой взгляд на фундаментальные концепции программирования, ясный и последовательный, и я думаю, что каждый программист смог бы выиграть, используя его. Каждый раз, когда я смотрю одно из его выступлений, у меня складывается ощущение, что кто-то взял и привел мой ум в порядок.

В этой статье (а, возможно, и в будущих) я постараюсь упорядочить и каталогизировать уникальную точку зрения мистера Хики. В конечном счете, я бы хотел получить краткое резюме его идей. Я надеюсь, что это приведет к появлению удобной для поиска справки для тех, кто пишет на Clojure, и доступного введения для тех, кто Clojure не использует.

Весь последующий текст основан на выступлении Рича Хики «Are we there yet?»
Читать дальше →

Framework в Мармеладе (часть 1)

Reading time12 min
Views13K
В этом цикле статей я опишу разработку небольшого Framework-а, предназначенного для создания 2D-игр, с использованием Marmalade. Marmalade предоставляет API для разработки кросс-платформенных приложений, позволяя собирать их, в том числе, под Android и iOS. Работа в Marmalade довольно комфортна, а его справочная система сопровождена большим количеством примеров, но сам процесс разработки носит довольно низкоуровневый характер. Использование готового Framework-а может сильно облегчить жизнь начинающему разработчику.
Читать дальше →

Framework в Мармеладе (часть 2)

Reading time12 min
Views4.2K
В предыдущей статье я начал рассказывать о разработке небольшого Framework-а для создания 2D-игр, с использованием инструментальной системы Marmalade, предоставляющей возможность разработки и сборки приложений для ряда платформ, в том числе iOS и Android. Мы научились работать с графическими ресурсами и построили небольшое тестовое приложение. Сегодня я хочу рассказать об обработке событий.
Читать дальше →

Framework в Мармеладе (часть 3)

Reading time8 min
Views3.2K
Сегодня мы продолжим описание разработки Marmalade Framework, начатой в 1 части статей этого цикла, усовершенствовав работу с графическими ресурсами, а также добавив работу со звуком и группами изображений, при помощи которых мы обеспечим локализацию приложений.
Читать дальше →

Курсы информационных технологий от компании Яндекс. Видео сезона 3

Reading time3 min
Views45K
Читать дальше →

JRebel

Reading time8 min
Views39K
На Хабре несколько раз публиковались статьи, где JRebel либо просто упоминался, либо выкладывалась информация, что вышла новая версия. При этом, не всем читателям было понятно, о чём вообще речь, и как данное ПО работает.

Как непосредственному участнику разработки данного продукта, мне хотелось бы прояснить некоторые моменты, почему JRebel существует и как он может помочь Java-разработчику.

Откуда ноги растут?



Изначальная проблема известна практически любому разработчику, который работает с Java: после каких-либо изменений в проекте, для того, чтобы увидеть результат, тратится довольно много времени на сборку и развёртывание в контейнере. На Хабре уже публиковались отличные статьи о том, как можно ускорить или автоматизировать процесс разработки, не стану повторяться. Но дело в том, что в упомянутых способах есть свои изъяны: далеко не все изменения возможно перегрузить в развёрнутом приложении штатными средствами; очень легко получить утечки памяти, которые приведут к надобности перезапуска контейнера. Технические детали хорошо расписаны в серии статей в нашем сайте — любопытных приглашаю почитать.

Куда уходит время?


Как выглядит цикл разработки web-приложения, в классическом виде:
1. Сделали изменения в коде (или в ресурсах)
2. Собрали JAR/WAR/EAR
3. Развернули полученный архив в контейнере
4. Открыли развёрнутое приложение, и, после некоторых манипуляций увидели результаты своего труда.

В зависимости от размера приложения, используемого контейнера, и некоторых других факторов, этапы 2, 3 и 4 могут занимать от нескольких секунд, до совершенно невменяемых цифр. Наша компания проводила опрос разработчиков относительно используемых технологий и времени которое затрачивается на развёртывание приложения. Как оказалось, в среднем на развёртывание тратится около 3 минут за раз, и около 10 минут в час. В плачевных случаях, где на развёртывание уходит более получаса, нет даже смысла спрашивать у человека, сколько раз в час он может повторить этот процесс. Ответ очевиден.

Когда перезапуск контейнера/приложения занимает считанные секунды, проблема, описанная выше, не ощущается так сильно. Однако, по мере роста и усложнения проекта, неудобства дадут о себе знать. Тут-то и можно задуматься: может быть, JRebel — это то, что вам нужно?
Читать дальше →

JRebel Quickstart

Reading time4 min
Views18K
В прошлой статье я немного рассказал о JRebel и для чего его можно использовать. Теперь попробую описать как можно попробовать JRebel использовать, шаг за шагом.

Для примера возьмём приложение Petclinic, исходной код которого можно найти на GitHub. В качестве IDE буду использовать свою любимую IntelliJIDEA.

Читать дальше →

IntelliJ IDEA 12 раскрывает темную сторону продуктивного программирования

Reading time3 min
Views83K
Привет, Хабр!

Несколько недель назад мы закончили Early Access Program, позволявшую опробовать предварительные билды IntelliJ IDEA 12. Спасибо всем, кто принял участие в программе и присылал нам свои отзывы и комментарии. Ваше пристальное внимание ко всем новым фичам, ваши идеи, предложения, баг-репорты — без всего этого продукт был бы совсем другим.

И вот, после целого года трудов, IntelliJ IDEA 12 официально выпущена и доступна для загрузки.



Конечно, все новые фичи и улучшения релиза здесь не перечислить. Каждый день мы не только добавляем что-то новое, но и пересматриваем существующую функциональность, чтобы сделать ее еще полезнее и «юзабельнее». Вот краткий список главных возможностей, ожидающих вас в IntelliJ IDEA 12.
Читать дальше →

Книги, которые должен прочитать Java программист: от новичка до профессионала

Reading time4 min
Views650K

Книги, которые должен прочитать Java программист: от новичка до профессионала


[Примечание переводчика: термины градации «профессионализма» оставлены англоязычные в связи с трудностью их адекватного перевода на русский и несовпадением с привычными Junior-Middle-Senior-Lead. Перевод достаточно вольный — если знаний языка хватает, то лучше читать оригинал, как и советует автор. Оба языка для меня не родные, так что про ошибки сообщайте в личку — исправим. Здесь и далее в квадратных скобках примечания переводчика]

Я заметил, что в последние месяцы я рекомендую одни и те же книги как новичкам, так и опытным разработчикам. Поэтому я решил составить список этих книг. Они составили мне неплохую компанию в процессе моего роста от новичка до сегодняшнего уровня (какой-бы он не был :) )
Читать дальше →

Нужно ли учиться в университете?

Reading time4 min
Views84K
Последнее время подобные обсуждения на околоайтишных ресурсах — не редкость. Мнения айтишников все больше и больше сводятся к тому, что учеба в университете — обычная трата времени, потому что они — [айтишники без диплома, бросили университет, купили диплом] — нужное подчеркнуть. Такая точка зрения понятна и имеет право на существование. Но хочу поговорить об этом вопросе с другого ракурса. Конечно же, в каждом конкретном случае все индивидуально, но некие общие выводы можно сделать.

Сам закончил университет и защитил кандидатскую диссертацию (кстати, она была очень тесно связана с тематикой работы в ИТ компании), поэтому может сложиться впечатление, что я буду оправдывать нашу образовательную систему. Это не так, но, в любом случае, постараюсь быть объективным.
Читать дальше →

Подари кусочек кода на рождество

Reading time2 min
Views18K


Вот и пошел отсчет последних дней года. Пора выбирать подарки тем людям, которые, так или иначе, принимали участие в Вашей жизни в течение этого года. И жизни не только личной, но и профессиональной. А что может быть приятнее для коллеги по цеху, чем маленький кусочек хорошего кода, обернутый в Pull Request?

24 Pull Request — это Open Source инициатива, приуроченная к (католическому) рождеству. Авторы призывают сказать Спасибо тем людям, труд которых, и возможно не раз, помогал Вам в решении разнообразных проблем, и предлагают делать для этого по коммиту в день, вплоть до самого (католического) рождества.

Читать дальше →

Джейлбрейк для высшего образования

Reading time2 min
Views112K


Традиционная система высшего образования безнадёжно отстала от жизни — считают создатели стартапа Degreed. Стоимость образования растёт втрое быстрее инфляции, долги по образовательным кредитам неподъёмны, а сложившаяся ещё в средние века модель непрерывного обучения в стенах университета на протяжении нескольких лет совершенно не соответствует современным требованиям. Сейчас всё чаще говорят о «пожизненном образовании», о том, что диплом или учёная степень, полученные много лет назад, слабо связаны с реальными знаниями и квалификацией.

В то же время за пределами университетов начала складываться совершенно новая экосистема получения и, что очень важно, подтверждения и сертификации знаний и навыков. Профиль на LinkedIn, репозитории на GitHub, сертификаты от серьёзных корпораций вроде Cisco или Microsoft, результаты авторитетных онлайн-тестов сегодня часто могут заменить формальный документ об образовании.

Degreed стремится к амбициозной цели — создать единый пожизненный цифровой диплом, постоянно обновляемый и гибкий, который будет отражать реальные знания независимо от того, из какого источника они получены. Вы можете прослушать несколько курсов в одном университете, ещё несколько — в другом, или вообще на сайте вроде Coursera или Khan Academy — баллы в вашем «дипломе» будут увеличиваться в зависимости от авторитетности курса и ваших личных достижений.
Читать дальше →

Гитарные табулатуры 2.0

Reading time1 min
Views22K
Табулатуры — популярная альтернатива нотной записи. Многие музыканты предпочитают табы, потому что они лучше приспособлены к особенностям конкретного инструмента, чем более универсальная нотная запись. В интернете можно отыскать табы практически к любой музыке. Многие сайты с библиотеками табулатур позволяют воспроизводить песню в формате MIDI синхронно с прокруткой табов. К сожалению, гитара в MIDI-варианте звучит просто кошмарно.

Адриан Головатый, веб-программист (один из авторов фреймворка Django) и гитарист-любитель создал веб-приложение Soundslice, которое позволяет работать с табулатурами более удобным и современным образом. Для озвучивания табов используется не MIDI, а видео с Youtube, синхронизированное с дорожкой табов. Видео можно зацикливать на выбранном фрагменте, а в браузерах на движке Webkit — замедлять вдвое без изменения высоты тона. Создавать табулатуры можно коллективно — любой зарегистрированный пользователь может добавить свою дорожку к уже существующему проекту.
Читать дальше →

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity