Search
Write a publication
Pull to refresh
7
0

User

Send message

6 причин, по которым нужно стартовать с бирж

Reading time2 min
Views2.7K
Некоторое время назад, прогуливаясь на просторах интернета, уж простите, но не помню где, я нашел статью. В статье рассказывалось о том, что регистрация и ведение профиля на фриланс биржах — это, по сути, обезличивание исполнителя, и если хотите хорошо — делайте и продвигайте свой сайт. Ниже я бы хотел привести несколько доводов за то, чтобы по крайней мере стартовать на биржах фриланса.
Читать дальше →

Поиск по торрентам в DHT-сети

Reading time4 min
Views158K
Мало найдётся людей среди пользователей и читателей Хабра, которым не доводилось бы пользоваться торрентами. И наверняка многие понимают уязвимость центральных звеньев этой системы — торрент-трекеров (истории с Пиратской бухтой и бывшим torrents.ru, ныне рутрекером, — тому подтверждение).

Однако не все знают, что уже давно существует альтернатива традиционным трекерам — DHT-сеть, позволяющая организовывать раздачи без трекера. До сих пор она не получила большого распространения из-за невозможности поиска внутри сети — нужный файл можно было скачать только при наличии magnet-линка раздачи. Однако недавно появился первый и уникальный пока поисковый сервис по DHT-сети BTDigg.org.

Сервис с весьма лаконичным дизайном заточен под одну функцию — поиск:


Поисковик по хэшам торрентов


Чтобы снизить зависимость от трекеров, в 2007 году разработчиками протокола bittorrent была принята его модификация на основе DHT-структуры, которая позволяла делать раздачи без трекера.

Что такое DHT-сеть? Фактически, это распределённая сеть торрент-клиентов, которая хранит идентификаторы (хеши) всех публичных раздач — т.н. magnet-link, которые представляют собой 160-битное случайное число. DHT-узлы клиентов отвечают за анонсирование своих торрентов и за поиск запрашиваемых. Благодаря тому, что все современные клиенты поддерживают DHT, можно сказать, что в этой сети есть практические все публичные торренты (приватные торренты сеть «не видит» и не позволяет скачивать). Практически — потому что DHT в клиенте может быть отключен. Поиск идёт по мета-информации, которую содержит в себе торрент-файл — то есть, проще говоря, он ищет по названию торрента и по названиям файлов входящих в него. Пользователь открывает magnet-линк в своём торрент-клиенте, тот находит всех раздающих файл и дальше качает как обычно — участия трекера в этой цепочке нет.

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

JavaScript F.A.Q: Часть 2

Reading time14 min
Views76K
image

Около 2-х месяцев назад я и TheShock собирали вопросы по JavaScript в теме FAQ по JavaScript: задавайте вопросы. Первая часть, те вопросы, которые достались мне, появилась буквально через несколько дней JavaScript F.A.Q: Часть 1, а вот вторая часть все не выходит и не выходит. TheShock сейчас переезжает в другую страну и поэтому ему не до ответов. Он попросил меня ответить на его часть. Итак вторая часть ответов — те вопросы, которые достались тоже мне.
Читать дальше →

Hibernate Envers: аудирование операций

Reading time4 min
Views38K

Зачем это надо?


В enterprise-разработке часто бывает необходимо отслеживать процесс редактирования каких-нибудь таблиц.
Скажем, завели у вас документ в системе. Потом кто-то поменял ему серию. Потом номер. Потом сменил тип с паспорта РФ на загран. паспорт Германии. Хотелось бы иметь возможность отследить историю изменений и, скажем, настучать по шапке пользователю, который совершил ошибку.

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

Текстовые поля: эргономика и дизайн

Reading time4 min
Views13K
imageОт переводчика. Наверное, каждый пользователь Интернета сталкивался со следующей проблемой: после долгого введения информации в текстовые поля (например, при регистрации на каком-нибудь сайте) система выдает сообщение об ошибке, и все приходится вводить заново. Испытав серьезные затруднения с регистрацией, многие посетители просто-напросто отказываются пользоваться предлагаемыми на сайте сервисами. Для коммерческих веб-проектов это означает еще и потерю прибыли. Как сделать так, чтобы процесс заполнения текстовых форм был максимально простым и удобным? Об этом пойдет речь в статье, написанной специалистами французской компании Usaddict.
Заполнение текстовых полей относится к числу важных и деликатных моментов работы с веб-сайтами. Нередки случаи, когда пользователи отказываются регистрироваться на сайте, потому что не понимают, как именно нужно правильно заполнять формы регистрации. Учет эргономических аспектов данного элемента интерфейса поможет сделать сайт более удобным и привлекательным для пользователей.

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

Тестирование в Java. JUnit

Reading time8 min
Views537K

Сегодня все большую популярность приобретает test-driven development(TDD), техника разработки ПО, при которой сначала пишется тест на определенный функционал, а затем пишется реализация этого функционала. На практике все, конечно же, не настолько идеально, но в результате код не только написан и протестирован, но тесты как бы неявно задают требования к функционалу, а также показывают пример использования этого функционала.

Итак, техника довольно понятна, но встает вопрос, что использовать для написания этих самых тестов? В этой и других статьях я хотел бы поделиться своим опытом в использовании различных инструментов и техник для тестирования кода в Java.

Ну и начну с, пожалуй, самого известного, а потому и самого используемого фреймворка для тестирования — JUnit. Используется он в двух вариантах JUnit 3 и JUnit 4. Рассмотрю обе версии, так как в старых проектах до сих пор используется 3-я, которая поддерживает Java 1.4.

Я не претендую на автора каких-либо оригинальных идей, и возможно многим все, о чем будет рассказано в статье, знакомо. Но если вам все еще интересно, то добро пожаловать под кат.
Читать дальше →

Эмулятор компьютера с linux на JavaScript

Reading time2 min
Views46K
Никакой серверной части. Только JS: полноценный эмулятор компьютера с линуксом на борту.

bellard.org/jslinux
(внимание, только хром и FF4)

Я долго с ним игрался — это не имитация, линукс ведёт себя как настоящий линукс — компилированные программы работают, ошибки в них вызывают segmentation fault, повреждение корневой файловой системы вызывает бурю возмущения в dmesg и т.д.
Эмулятор PC на JS с линуксом на борту

dd показывает при работе с памятью более чем приличную производительность — более 40 мб/с (не забываем, что это эмулятор, и что это JS в вашем браузере!).

Я никогда не думал, что мы доживём до подобного.

… А теперь начинается оргия:

* С использованием локального хранилища мы можем организовать диски (каждый key-value соответствует одному сектору).
* С использованием web-socket мы можем создать паравиртуализированный драйвер сети с выходом на железный машрутизатор и получить нормальную сеть.
* С использованием существующих технологий (NUMA, DRBD, corosync) можно организовать вычислительный кластер из браузеров.

(Кстати, показывать консоль в этом случае не обязательно — вы запускаете виртуальную машину у клиента в бэкграунде, виртуальная машина присоединяется к кластеру, начинает считать, по её аварийному завершению — закрытию браузера — кластер автоматически переконфигурируется).

Я это пишу как хохму, но в реальности, если у вас есть линукс и есть — у вас есть все возможности для работы чего угодно. Любые сетевые приложения, любые системы синхронизации и управления.

Никто не мешает создать паравиртуализированный драйвер видео с помощью canvas, у вас есть webGL, для которого можно написать свой вариант cuda и получить довольно мощную акселерацию вычислений…

Ну и финал — запуск хрома внутри эмулируемой виртуальной машины.

Итак, эмуляция дошла до браузеров…

BackupDay по-русски

Reading time2 min
Views665
imageПосле стихийного возникновения World Backup Day (ну, даже если это было и не стихийно, а очень даже умышленно, то это совсем не отменяет того, что сайт поддержали тысячи людей) – я задумался… Если даже в таких, казалось бы техно-продвинутых странах, где читают Reddit.com до сих пор приходится объяснять зачем нужен бэкап и как записывать файлы на DVD, то что же тогда у нас?..

Поиск по блогам принёс много неожиданностей… Для кого-то в этом, может быть, bнет ничего неожиданного, но я бы не поверил, что каждый день движется такая лавина душуледенящих записей о постиранных вместе с джинсами флешках, случайно затёртых курсовых, братишках и сестрёнках, которые «наводят порядок» на общем компе посредством Shift+Del, что у меня возник резонный вопрос – а существует ли в природе какой-то специальный ресурс, где люди могли бы узнать популярным языком, как сделать бэкап?

И что б вы думали? Такого обнаружить мне не удалось и тогда я понял энтузиазм наших товарищей с reddit — людям нужен бэкап-мотиватор.

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

Окулографические исследования: что может рассказать взгляд

Reading time8 min
Views22K
imageОт переводчика. Методики окулометрического тестирования(айтрекинга) в последнее время получили широкое распространение в сфере юзабилити. Публикуя перевод статьи французских исследователей-юзабилистов Тьерри Буйо и Софи Рэдесдорф, мы приглашаем наших читателей к обсуждению проблем визуального восприятия интерфейсов. Какие элементы интерфейса привлекают внимание пользователей? Как связаны визуальная привлекательность и функциональность? Насколько важен учет психологических особенностей человеческого восприятия при разработке интерфейсов приложений и сайтов?
Разговор об айтрекинге невозможен и без обсуждения важных методологических вопросов. С помощью окулографа можно с высокой точностью представить траекторию движения взгляда, зафиксировать зоны повышенного внимания, но может ли это хоть что-то рассказать о том, как испытуемые интерпретируют видимое? Мысли и чувства пользователей невозможно зафиксировать с помощью приборов; результаты исследований смысловой сферы не могут быть подвергнуты экспериментальной проверке. Можно ли (и если можно, то как) выработать такую стратегию исследования человеческого фактора, в которой учет всех субъективных моментов сочетался бы со строгостью методологии и общезначимость результатов?
Мы надеемся, что в обсуждении статьи примут участие представители самых разных областей знания: программисты, дизайнеры, философы, психологи.

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

Дайте детям поиграть

Reading time3 min
Views13K

Вот у вас есть ребенок? Дошкольник. От годика до семи. А может даже младше года. Какой он или она? И какие они, современные дети? Продвинутые, хорошо разбирающиеся в новейших игрушках, способные дать фору в этом вопросе многим взрослым. Что является их любимым развлечением? Мобильные телефоны, компьютеры, консоли. Ведь и ваш, наверняка, не выпустит из маленьких ручонок iPad, если ему его дать. Главное, чтобы в стенку им ради развлечения не кидался :)

Теперь посмотрим с другой стороны. В психологии существует такое понятие как «ведущий вид деятельности». Это та деятельность, в ходе которой развивается психика ребенка на том или ином этапе своего формирования. Как не трудно догадаться, для детей дошкольного возраста — это, безусловно, игра. Свободно развивающаяся деятельность, предпринимаемая ради удовольствия от самого процесса, а не от результата.

Как сделать, чтобы в процессе игры, не ради обучения, а ради удовольствия (не забываем, что именно это, в первую очередь, мотивирует маленького ребенка играть в конкретную игру), наши малыши получали полезную информацию?

Мы нашли ответ на этот вопрос, наверняка волнующий всех современных родителей, и создали красочное обучающее приложение, разработанное под iPhone и iPad специально для малышей, которые только начинают знакомиться с алфавитом. Букварио — это электронная интерактивная азбука.
Читать дальше →

Улучшаем интерфейс Java-приложения

Reading time27 min
Views100K
Добрый день, Хабражитель!

Достаточно много различной раздробленной информации существует на тему работы со Swing и графикой в просторах интернета, а также на тему интерфейсов Java-приложений. Кто-то твердит о том, что Java морально устарела и десктоп-приложения на Java не имеет смысла писать, кто-то с пеной у рта доказывает обратное. В то же время работа идет, приложения пишутся и встают очередные проблемы. В предыдущей статье я уже привел небольшой список полезных библиотек для исключительных случаев, но нередко бывает так, что никакая сторонняя библиотека не позволяет сделать то, что Вам нужно. Именно в такой момент стоит задуматься о возможной необходимости написания своих компонентов.

Итак, в данном посте я постарался изложить самые важные и значимые на мой взгляд моменты по работе со Swing и графикой — как создавать компоненты, как стилизовать интерфейс, чего делать не стоит и многое другое…

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

Расширяем возможности Java-приложения

Reading time11 min
Views19K
Здраствуй, Хабражитель!

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

Итак, сегодня я приведу здесь библиотеки, которые могут Вам помочь решить часто возникающие вопросы вроде «Как сделать это на Java?» по разным узким направлениям разработки.

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

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

Особенности зарубежной типографики

Reading time5 min
Views18K
Несколько месяцев назад я столкнулся с задачей верстки буклета на французском языке. Оказалось, что в рунете тема зарубежной типографики представлена крайне скупо, поэтому необходимую информацию пришлось находить и переводить самостоятельно.
В данной статье я хотел бы рассказать о наиболее примечательных, на мой взгляд, европейских типографических традициях, их сходствах и различиях.

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

Новый синхронизатор Phaser

Reading time5 min
Views58K
Phaser (Этапщик) — мощная и гибкая реализация паттерна синхронизации Барьер. Включен в JDK 7 в составе пакета java.util.concurrent.

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

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

Google App Engine (GAE) против Amazon Web Services (AWS)

Reading time7 min
Views11K

Вступление:


Наиболее интересная часть разработки обычно приходится на первые 33% жизненного цикла проекта. А самое интересное — это создание чернового прототипа, демонстрирующего вашу идею. После этого момента возбуждение начинает постепенно снижаться по мере того, как вы начинаете высматривать, что бы подштопать, и стараетесь сделать ваше приложение достаточно масштабируемым, чтобы оно могло выдержать свою успешность. В настоящее время я — актёр-одиночка, так что с одной стороны у меня нет ресурсов, чтобы самому возиться с железом, а с другой — у моих проектов нет потребности в дата-центрах.

Цель моего анализа — сравнить двух основных игроков в мире облачных вычислений, Google App Engine (GAE) и Amazon Web Services (AWS). Оба неслабо разогнались за последние годы, но кто из них больше мне подойдёт? Давайте разбираться.
Читать дальше →

Опубликован закрытый ключ AirPort Express

Reading time2 min
Views5.8K
Американский разработчик Джеймс Лейрд (James Laird), помогая своей девушке наладить связь между точкой доступа и базовой станцией AirPort Express, не нашёл другого выхода, как разобрать AirPort Express, считать ROM и провести обратный инжиниринг программы, после чего он смог извлечь закрытый ключ. Этот ключ используется для декодирования пакетов по закрытому протоколу Apple AirPlay (RAOP).

Наладив девушке систему, хакер поделился с общественностью своим открытием. Фактически, теперь можно сделать эмулятор AirPort Express на чём угодно.
Читать дальше →

Сборка проекта без единой глобальной переменной

Reading time6 min
Views4K
Представьте, у вас есть проект, состоящий из нескольких модулей и, например, jQuery или любая другая библиотеки в CDN. У вас есть огромное желание не показывать пользователю ваши глобальные переменные и по возможности не показывать jQuery и $. Ну и, конечно, сделать все без изменения кода проекта.
Причины для сокрытия глобалов могут быть разные: для красоты, из соображений безопасности, для затруднения анализа кода и другие. Пользователь взаимодействует с вашим кодом, используя события, которые он не сможет сломать — больше ему ничего и не нужно.

Самый очевидный способ — создать единственный namespace в который пассивно экспортировать прочие объекты, а jQuery и $ в конце удалить.

После сборки код будет какой-то такой:
(function(window, undefined){
    // include ./js/YourNamespace.js
    var YourNamespace = (function () {
        // что-то ещё
        return {};
    }());
    // include ./js/YourNamespace/SomeObject.js
    YourNamespace.SomeObject = (function () {
        // что-то ещё
        return function () {

        };
    }());
    // Cleanup
    delete window.$;
    delete window.jQuery;
}(window));

Это идеальный вариант, но чаще бывает не так. Посмотрите ваш код, такой ли он?

Под катом универсальное решение, позволяющее собрать любой код без единой глобальной переменной.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity