Мы постоянно обсуждаем бесплатные IT-курсы типа coursera, радуемся когда выходит новый интересный материал, стараемся направлять в эту струю коллег, студентов. Ведь знания — вот они, лежат просто у ног, возьми да и пользуйся. Мои друзья решили сделать вклад в это направление и организовать тренинг QA-автоматизаторов по серьезному, с отбором и курсом на качество. Что вышло в итоге можно прочитать под катом от первого лица.
Метка «java» - 8
Как мы на энтузиазме автоматизаторов обучали
2014-01-21 в 10:59, admin, рубрики: java, qa, selenium, качество, киев, курсы, обучение, тренинг, Учебный процесс в IT, метки: java, selenium, качество, киев, курсы, обучение, тренингХекслет: Erlang, логика, операционные системы, Java 2
2014-01-21 в 8:03, admin, рубрики: erlang, Erlang/OTP, hexlet, java, Блог компании «Hexlet», курсы, лекции, логика, образование, операционные системы, хекслет, метки: erlang, hexlet, java, курсы, лекции, логика, образование, операционные системы, хекслетПривет!
Прошло уже больше полугода с момента старта проекта Хекслет. Напомню: мы проводим бесплатные онлайн-курсы по программированию и смежным дисциплинам. По традиции сегодня мы расскажем про новые курсы.
Статистика
- Завершено четыре курса (всего – больше 100 уроков)
- Сейчас в процессе – еще три курса, + запланирован старт двух курсов
- 19 000 студентов зарегистрировано
- Они сдали более 450 000 тестов
- Просмотров лекций – больше 277 000 (не считая подкастов в iTunes и раздачи через битторрент)
- 444 000 посетителей и 1.6M просмотров страниц
Новые курсы
Ведущий представитель IT-мира расскажет о модульной разработке программ как об основном инструменте гибкой разработки в рамках серии вебинаров Luxoft
2014-01-20 в 12:05, admin, рубрики: cloud, java, osgi, Блог компании Luxoft, метки: cloud, java, osgiПриглашаем Вас посетить третий вебинар из серии LTS, который состоится 29 января в 16:00 GMT+1 (19:00 МСК, 17:00 Киев). Пол Беккер (Paul Bekker) – архитектор программного обеспечения в Luminis Technologies и является автором книги «Как использовать OSGi для разработки модульных облачных приложений», расскажет о модульной разработке программ как об основном инструменте гибкой разработки.
Пол Беккер, являясь архитектором программного обеспечения и писателем, считает, что модульная и облачная разработка – два основных направления, которыми необходимо заниматься для того, чтобы подняться на новый уровень развития технологии, и Пол работает над тем, чтобы сделать это возможным для сферы разработки программного обеспечения в целом.
Читать полностью »
Raspberry PI и JAVA: пристальный взгляд
2014-01-17 в 15:46, admin, рубрики: gpio, java, linux, Программирование, метки: GPIO, java, linuxНедавно на хабрахабре вышла статья о java на raspberry pi, увидев название которой было много ожиданий, а под катом оказался банальный Hello World!
Дело в том, что ко мне как раз ехала моя малинка и хотелось получить ответы на следующие вопросы:
1. Сравнима ли скорость работы java на малинке и настольном компьютере?
2. Насколько удобно работать с java на raspberry?
3. Есть ли адекватные библиотеки для работы с GPIO?
Вот на эти вопросы я и попробую дать ответы в этой статье.
Кому интересно: добро пожаловать под кат (графики и фотографий обнаженной малинки там не будет)
Масштабировать просто. Часть вторая — кэширование
2014-01-16 в 16:10, admin, рубрики: architecture, cache, java, scalability, Анализ и проектирование систем, архитектура, порталы, Программирование, метки: architecture, cache, java, scalability, архитектура, порталы, СОАВ предыдущей части мы говорили об основных архитектурных принципах построения масштабируемых порталов. Сегодня поговорим об оптимизации правильно построенного портала. Итак: первый вид оптимизации — локальный кэш.
Pdef — компилятор и язык описания интерфейсов для веба
2014-01-15 в 10:15, admin, рубрики: IDL, java, protobuf, python, thrift, Веб-разработка, Программирование, разработка, метки: IDL, java, protobuf, python, thriftВ начале прошлого года мне пришла в голову идея написать собственный язык интерфейсов (IDL), который был бы похож на Protobuf или Thrift, но предназначался бы для веба. Я надеялся закончить его где-нибудь месяца за три. До первой стабильной версии прошло чуть больше года.
Pdef (пидеф, protocol definition language) — это статически типизированный язык описания интерфейсов, который поддерживает JSON и HTTP RPC. Он позволяет один раз описать интерфейсы и структуры данных, а потом сгенерировать код для конкретных языков программирования. Пидеф подходит для публичных апи, внутренних сервисов, распределенных систем, конфигурационных файлов, как формат для хранения данных, кеша и очередей сообщений.
Основная функциональность:
- Развитая система пакетов, модулей и пространств имен.
- Поддержка циклических импортов и зависимостей типов (с некоторыми ограничениями).
- Простая система типов, основанная на четком разделении интерфейсов и структур данных.
- Наследование сообщений (аналог struct'ов) и интерфейсов.
- Поддержка цепочек вызовов, например,
github.user(1).repos().all()
. - JSON как формат данных и HTTP RPC для передачи данных.
- Возможность использовать другие форматы и RPC.
- Подключаемые кодогенераторы (официально поддерживаются Java, Python и Objective-C).
- Опциональность кодогенерации, т.е. Пидеф позволяет сериализовать данные и отправлять запросы руками.
Зачем нужен Пидеф? В первую очередь для повышения производительности труда и упрощения разработки и поддержки клиент-серверного, сервисно-ориентированного и распределенного кода. Но он также объединяет документацию и описание апи и позволяет строить вертикально-интегрированные системы, в которых снижены накладные расходы на взаимодествие отдельных компонентов.
Пример описания сообщения:
message Human {
id int64;
name string;
birthday datetime;
sex Sex;
continent ContinentName;
}
Примеры использования (примеры сгенерированного кода):
{
"id": 1,
"name": "Ivan Korobkov",
"birthday": "1987-08-07T00:00Z",
"sex": "male",
"continent": "europe"
}
Human human = new Human()
.setId(1)
.setName("John")
.setSex(Sex.MALE)
.setContinent(ContinentName.ASIA)
String json = human.toJson();
Human another = Human.fromJson(json);
human = Human(id=1, name="John")
human.birthday = datetime.datetime(1900, 1, 2)
s = human.to_json()
another = Human.from_json(s)
Human *human = [[Human alloc]init];
human.id = 1;
human.name = @"John";
human.sex = Sex_MALE;
human.continent = ContinentName_EUROPE;
NSError *error = nil;
NSData *data = [human toJsonError:&error];
Human *another = [Human messageWithData:data error:&error];
Передача треков Google Analytics сторонним доменам без javascript
2014-01-13 в 14:02, admin, рубрики: google analytics, java, php, ненормальное программирование, метки: google analytics, java, PHP, никто не читает теги
О чем статья?
- О междоменном отслеживании
- О том, что если чего-то нет в официальной документации, то это не повод печалится, а повод добавить такую возможность.
Зачем передавать?
Чтобы не терять информацию о пользователе во время его перехода в платежную систему для совершения покупок, а также его походов по нашей экосистеме сайтов.
Почему без javascript?
- Если нужно выполнить редирект пользователя после обработки логики запроса на сервере.
- Google Analytics api и так хорошо документирован, а читать копипаст документации это не уровень хабра, не так ли?
Суть метода проста. Берем все куки вида __utm и передаем их, как параметры, в урле на другой домен. Ничего не происходит. Расходимся. Добавляем последним параметром __utmk, который является особым хешем всех остальных кук гугл аналитики. Поздравляю мы сделали, то что делаем функция _link в известном файле ga.js от Google Analytics.
И так если у вас переход на другие сайты обрабатывал контроллер, то вам не надо во все ссылки добавлять конструкцию вида:
onclick="_gaq.push(['_link', 'https://www.payment-system.com?contractId=example']); return false;"
Если нужны исходники формирования хеша для ключа utmk, прошу в github.
Далее история о процессе получения данного метода.
Собираем проект на RAM-диск при помощи Maven
2014-01-08 в 8:44, admin, рубрики: java, maven, ssd, метки: java, maven, ram disk, ssdЗа 10 лет разработки веб-приложений с использованием технологий Java я успел повидать огромное число коллег-программистов и познакомиться с их методами организации рабочего процесса. И, к моему удивлению, абсолютное меньшинство когда-либо задумывалось над использованием RAM-диска для сборки проектов. Я думаю, что такая элементарная оптимизация просто не приходит в голову, постоянно занятую текущими задачами, дедлайнами и просто жизненными проблемами.
- Значительное увеличение скорости сборки за счет отсутствия операций ввода-вывода на жесткий диск
- Увеличение времени жизни вашего SSD за счет перемещения интенсивных операций записи в память
Если учесть, что в последние годы сильно вырос объем оперативной памяти на компьютере среднестатистического разработчика и повсеместно начинают применяться SSD, то аргументов «против» практически не остается.
Главная цель этой небольшой статьи — вызвать мысль: «А ведь действительно! И как я раньше об этом не подумал?».
Я опишу пример реализации такого подхода в Linux. Действия в других операционных системах будут практически идентичными, за исключением методов создания самого RAM-диска.
Длинная арифметика от Microsoft
2014-01-07 в 11:29, admin, рубрики: .net, java, Mono, Алгоритмы, длинная арифметика, метки: .net, c++, java, Mono, Алгоритмы, длинная арифметикаВведение
Известно, что компьютер может оперировать числами, количество бит которых ограниченно. Как правило, мы привыкли работать с 32-х и 64-х разрядными целыми числами, которым на платформе .NET соответствуют типы Int32 (int) и Int64 (long) соответственно.
А что делать, если надо представить число, такое как, например, 29! = 8841761993739701954543616000000? Такое число не поместится ни в 64-х разрядный, ни тем более 32-х разрядный тип данных. Именно для работы с такими большими числами существует длинная арифметика.
Длинная арифметика — в вычислительной технике операции (сложение, умножение, вычитание, деление, возведение в степень и т.д.) над числами, разрядность которых превышает длину машинного слова данной вычислительной машины. Эти операции реализуются не аппаратно, а программно, используя базовые аппаратные средства работы с числами меньших порядков.
Читать полностью »
Как Роберт Моррис на 8-ми битах до 10 000 считал
2014-01-06 в 16:55, admin, рубрики: java, Алгоритмы, вероятность, рандом, счетчик, метки: java, вероятность, рандом, счетчик
Как все знают с помощью n-бит, можно реализовать счетчик считающий до 2n-1, но если у вас очень ограниченные ресурсы, или вам просто хочется поэкспериментировать и объединить в одно целое последовательности, вероятности, рандом и увеличение счетчика, то прошу под кат.
В этой статье мы увидим как работает, так называемый вероятностный счетчик.
Впервые он был представлен Робертом Моррисом в 1977 году, шифровальщиком, работающим в BellLabs, известного своей фразой