Рубрика «Программирование» - 963

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

Неэффективный программист или как взломать свой мозг за 2 дня

Интернет сделал нас ленивыми!

Почему? Кто в последний раз посмотрел видео больше 3х минут? Кто прочитал пост больше 2 страниц? Какой заголовок более привлекателен, «63 способа бла-бла-бла» или «3 проверенных метода бла-бла-бла»? А если эти три проверенных метода выделены от основного текста, то это вообще гуд (можно не читать текст вовсе, а просто пробежать по выделенным подзаголовкам).
В этом свои плюсы. Наш мозг эволюционировал, и обрабатывает информацию быстрее, чем, скажем, 15-20 лет назад (да и эволюционирует быстрее, чем это было возможно век назад). Как компании справляются с высокими нагрузками? Как процессор выполняет программу по возможности быстро? С помощью кэширования! (как вариант, но самый приоритетный). Что делает наш мозг, чтобы справиться с большой нагрузкой? Кэширует! Что именно и как — оставим на размышление ИИшникам (специалист по искусственному интеллекту). В противном случае при увеличении размера обрабатываемой информации время «отклика» бы увеличилось в разы и на ответ на «как добраться до ближайшей больницы?» уйдет больше времени, чем человек «в силе ждать». «Сила ждать» тоже уменьшилась, «размер» нашего терпения уменьшилась и мы быстро устаем, если продолжительность видео большая, размер статьи большой (на самом деле продолжительность может не влиять на терпение, больше всего влияет полезная информация, если «воды» меньше или вовсе нет, то и терпеть ничего не приходится, посему данный пост написан «эз лаконик эз посибл»).
Читать полностью »

В этой части: компоненты пользовательского интерфейса. Предыдущая часть тут.

Разработка плагина IntelliJ IDEA. Часть 7
IntelliJ IDEA включает в себя большое количество пользовательских Swing-компонентов. Использование этих компонентов в ваших плагинах гарантирует, что они будут выглядеть и работать согласовано с остальным пользовательским интерфейсом IDE и часто позволяет уменьшить размер кода, по сравнению с использованием стандартных Swing-компонентов.

Меню и панели инструментов

Меню и панели инструментов (тулбары) строятся с использованием системы действий (как уже было описано во второй части).Читать полностью »

Какое-то время назад по Хабру прокатилась волна статей о поиске работы и прохождению собеседований. Многократно высказались и работодатели и соискатели. Но, к сожалению, не была в достаточной степени затронута тема тестовых заданий.

Ведь, тестовое задание не ограничивается категориями «выполнил» и «не выполнил». Внимательно наблюдая за процессом и изучая финальный результат, можно в итоге многое сказать о человеке ни дня с ним вместе не поработав. А порой, и научиться чему-то новому.

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

На экране есть сетка M на N из цветных квадратиков. Нужно реализовать на этой сетке следующий эффект — по клику слева на право со скоростью V пробегает волна, меняя цвет квадратиков на другой (единый для всей волны). Эффект должен работать при любых значениях M, N, V. Волна начинается всегда у левой стенки. Одновременно может идти несколько волн разного цвета.
Анимационный пример: http://dl.dropbox.com/u/3601116/wave.swf (покликать по флэшке).

Что можно узнать о кандидате по тестовому заданию

Я не сомневаюсь, что это задание с легкостью сделают все программисты посетители Хабра.

А у меня получилась следующая статистика:

  1. В итоге, задание взяли чуть больше 20 человек.
  2. Пара человек ничего не сделали.
  3. Половина из оставшихся (по моим критериям) с ним не справились.
  4. Кандидаты четко разделились на весьма интересные группы.

Подумайте немного, как бы вы выполнили это задание, и заходите под кат, где я расскажу обо всем подробнее.
Читать полностью »

Первый промежуточный релиз Spring Framework 4.0 M1 предоставил поддержку SockJS на стороне сервера — лучшая и наиболее полная альтернативная реализация WebSocket. Вам потребуется этот резервный вариант в браузерах, не поддерживающих WebSocket и в ситуациях когда прокси препятствует их использованию. Проще говоря, SockJS позволяет строить WebSocket-приложения уже сегодня, которые, ко всему прочему, умеют прозрачно переходить на резервные возможности.

Но даже с резервными вариантами проблемы остаются. Сокет — довольно низкоуровневая абстракция и подавляющее большинство веб-приложений сегодня не адаптированы для сокетов. Вот почему протокол WebSocket определяет механизм под-протоколов, который, по существу, позволяет (и поощряет) использование протоколов более высокого уровня над WebSocket, аналогично тому как мы используем HTTP поверх TCP.

Второй промежуточный релиз Spring Framework 4.0 M2 позволяет использовать высокоуровневые протоколы обмена сообщениями поверх WebSocket. Для демонстрации этого, мы разберем пример приложения.Читать полностью »

Про вред от паролей при аутентификации пользователей сайта и вход через социальные сети написано уже много. Но в основном это касается либо теоретических рассуждений, либо каких-то аспектов интеграции модуля на PHP в одну из CMS.

Я предлагаю вашему вниманию пример организации аутентификации пользователей сетей ВКонтакте, Facebook, Мой Мир, Яндекс, Одноклассники, Google, Twitter, LinkedIn средствами JSF2. Это полностью авторская разработка, охватывающая наиболее популярных OAuth провайдеров рунета. Написана без использования сторонних библиотек, сервлетов, jsp и спрингов — только JSF2 и CDI.
Читать полностью »

Существует множество различных конфигурационных библиотек, доступных в Java, например, одна от Apache Commons, но они как правило, следуют очень простому шаблому: парсинг ряда конфигурационных файлов и построение на основе этих данных Property или Map, у которого в дальнейшем и запрашиваются значения:

Double double = config.getDouble("number");
Integer integer = config.getInteger("number");

Но этот подход меня не устраивает по нескольким причинам:

  • Во-первых, получается достаточно многословно;
  • Приходится передавать конфигурационный объект целиком, даже если от него требуется всего один параметр;
  • Очень просто допустить ошибку в ключе и прочитать некорректные данные.

Читать полностью »

Вам интересен ваш уровень программирования?

Информатика и теория информации
2n (Уровень 0) n2 (Уровень 1) n (Уровень 2) log(n) (Уровень 3) Комменатрии (от автора)
Структуры данных Не знает разницу между массивом и связным списком Может объяснить суть и использовать массивы, связные списки, ассоциативные массивы Может рассказать как реализуются хэш-таблицы, обрабатываются столкновения в них, знает очереди приоритетов и способы их реализации Знает сложные структуры данных, такие как: биноминальную и фиббоначиевую кучу, Б-дерево, AVL дерево, красно-черноё дерево, префиксное дерево, расширяющиеся дерево, список с пропусками.

Прим.переводчика: извиняюсь за костлявость перевода, также я заменил некоторые труднопереводимые выражения.
Тогда просим под кат.
Читать полностью »

Сегодня в сообществе Habrahabr стартовал международный конкурс Intel App Innovation Contest 2013, или, если быть точнее, его русскоязычная часть. Мы предлагаем вам пройти путь от создания идеи Windows 8 Desktop приложения до ее реализации. Призовой фонд немалый: $100 000 + дополнительные призы от российской команды Intel Developer Zone. Есть, за что побороться!

image
Читать полностью »

Исследуя обширные пространства интернета мне пришлось потрудиться над тем как же все таки создать не тяжеловесный код на asp.net c# для обработки так называемых «свинных ушей», которые содержат классическую модель родитель-потомок в базе данных. Сразу оговорюсь база в SQL Server 2008, который уже имеет возможность работы с иерархическими данными в ОТВ(CTE — английский вариант аббревиатуры).
Читать полностью »

Предисловие

Это перевод заключительной, третьей части цикла статей о создании нативных библиотек расширения для OpenFL. Во второй части рассказавалось как создать библиотеку расширений для iOS. В данной части, будет рассказано о создании библиотеки расширений для платформы Android, на языке Java и, как будет видно далее, для Android сделать это несколько проще, чем для iOS.

Java, Haxe и все, все, все!

Для своей следующей игры, я придумал показывать справку в виде встроенной HTML страницы и нашел следующий проект: NMEWebview. Этот проект хорошо демонстрирует, как мы можем использовать код на Java в нашем приложении на haxe.

Пришло время проверить взаимодействие с кодом на Java.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js