Нередко случается, что какие-то данные программа загружает в память и оставляет их там надолго (а то и до конца работы) в неизменном виде. При этом используются структуры данных, оптимизированные как для чтения, так и для записи. Например, вы вычитываете из базы Ensembl список идентификаторов всех генов человека (включая всякие микроРНК и т. д. — всего чуть больше 50000). Если их прочитать в стандартный ArrayList, то на 32-битной HotSpot вы потратите чуть больше 4 мегабайт. Можно ли сэкономить память, зная, что коллекция больше не будет меняться?
User
OpenShift в качестве Java – хостинга
7 min
75K
Не секрет, что уже около полугода RedHat продвигает собственный облачный продукт, причем не привычное хранилище файлов, а сервис для облачных вычислений, с бесплатной версией Developer Edition. В качестве одной из поддерживаемых платформ указывается Java, что для многих может оказаться весьма кстати на фоне достаточно малого числа бесплатных Java – хостингов. Причем, если брать java, то тут предлагается одна из современнейших платформ, а именно Jboss AS 7.1, что означает совместимость с большинством технологий и проектов, разрабатываемых под эгидой Jboss. Широкие возможности сервиса сочетаются с простотой, при этом разработчики настолько уверены в качестве и доступности сервиса, что не постеснялись даже написать про него «easy-peasy».
Недавно пришлось попробовать OpenShift в работе, как Java – хостинг для небольшого частного проекта. Впечатления, если кратко – да, у разработчиков RedHat всё получилось, все подробности далее…
+23
Таблица уровней для системного администратора
1 min
24KНесколько лет назад после прочтения матрицы компетентности программиста я поискал аналогичную матрицу для системных администраторов. Ближашее что я тогда нашел это Sage Level Job Descriptions, но меня не оставляло желание составить для системных администраторов аналогичную таблицу.
Я несколько раз начинал это делать, потом бросал и снова начинал, и только теперь наконец-то сделал:

Я несколько раз начинал это делать, потом бросал и снова начинал, и только теперь наконец-то сделал:

+27
Распознавание пульса человека на видео
1 min
18KВ MIT CSAIL и Quanta Research Cambridge разработали видеофильтр, который усиливает незначительные различия между кадрами. Например, видеокамера регистрирует незаметное для глаза изменение цвета кожи из-за притока/оттока крови — пропустив видео через фильтр, мы получаем чёткую визуализацию пульса.
Технология может найти широкое применение в системах видеонаблюдения, системах компьютерного зрения, компьютерных интерфейсах и т.д.
Технология может найти широкое применение в системах видеонаблюдения, системах компьютерного зрения, компьютерных интерфейсах и т.д.
+59
Жизнь без объектов
5 min
21KTranslation
(Перевод)
Последние несколько лет я провел в изучении и экспериментах со многими языками программирования. В частности, я начал использовать Scala как основной язык, стараюсь использовать функциональный стиль везде где это возможно. Меня также весьма заинтересовал Haskell (чистый функциональный язык) и Clojure (современный диалект Лиспа).
Таким образом, я постепенно отказываюсь от объектно-ориентированной парадигмы, несмотря на то, что использовал в основном её последние 17 лет моей профессиональной деятельности. У меня появляется чувство, что объекты это то, что мешает нам писать лапидарный, структурированный и повторно используемый код.
Последние несколько лет я провел в изучении и экспериментах со многими языками программирования. В частности, я начал использовать Scala как основной язык, стараюсь использовать функциональный стиль везде где это возможно. Меня также весьма заинтересовал Haskell (чистый функциональный язык) и Clojure (современный диалект Лиспа).
Таким образом, я постепенно отказываюсь от объектно-ориентированной парадигмы, несмотря на то, что использовал в основном её последние 17 лет моей профессиональной деятельности. У меня появляется чувство, что объекты это то, что мешает нам писать лапидарный, структурированный и повторно используемый код.
+139
Методология Разработки ПО
4 min
47KПопросили меня на фирме выступить с докладом и рассказать о методологии по которой мы работаем, разрабатываем наше приложение. Я сразу же сказал — «У нас Scrum», и сел составлять презентацию. Но я остановился на первом же слайде, и вот почему.
Agile содержит в себе множество методологий — XP, Scrum, Lean, Kanban, ScrumBut (СкрамНО). Сев разбирать методики, я понял, что не могу сказать, что моя команда работает по какой-то одной из них. В целом наш рабочий процесс можно изобразить так:

Agile содержит в себе множество методологий — XP, Scrum, Lean, Kanban, ScrumBut (СкрамНО). Сев разбирать методики, я понял, что не могу сказать, что моя команда работает по какой-то одной из них. В целом наш рабочий процесс можно изобразить так:

+17
SIPML5 — SIP клиент для браузера на базе WebRTC
2 min
43KСвершилось!
WebRTC (Web Real Time Communication) — это расширение HTML5 для передачи голоса и видео напрямую из браузера, через «нативные» средства.
Официальный сайт проекта — http://www.webrtc.org (тестирование на Chrome)
И вот сегодня, молодая телекоммуникационная компания Doubango Telecom объявила о выпуске свободного клиента для общения по протоколу SIP, написанного на JavaScript / HTML5, — sipML5, исходный код которого распространяется на условиях лицензии GNU GPLv3 и доступен на code.google.com/p/sipml5
Поддерживаемые возможности:
* Аудио / Видео звонок
* Обмен мгновенными сообщениями
* Присутствие
* Удержание звонка / Возобновление
* Передача вызова
* Поддержка нескольких линий и multi-account
* поддержка DTMF используя SIP INFO
WebRTC (Web Real Time Communication) — это расширение HTML5 для передачи голоса и видео напрямую из браузера, через «нативные» средства.
Официальный сайт проекта — http://www.webrtc.org (тестирование на Chrome)
И вот сегодня, молодая телекоммуникационная компания Doubango Telecom объявила о выпуске свободного клиента для общения по протоколу SIP, написанного на JavaScript / HTML5, — sipML5, исходный код которого распространяется на условиях лицензии GNU GPLv3 и доступен на code.google.com/p/sipml5
Поддерживаемые возможности:
* Аудио / Видео звонок
* Обмен мгновенными сообщениями
* Присутствие
* Удержание звонка / Возобновление
* Передача вызова
* Поддержка нескольких линий и multi-account
* поддержка DTMF используя SIP INFO
+27
Модель Блэка-Шоулза: формула, которая изменила фондовый рынок
3 min
59KУдивительно, насколько существование человечества зависит от математики, если одна простенькая формула может породить мировой финансовый кризис.

BBC опубликовал статью о формуле, которая изменила фондовый рынок и виновата в нынешнем финансовом кризисе. Речь идёт о модели Блэка-Шоулза, которая используется для оценки деривативов и собственного капитала финансовых компаний.
Математическая модель Блэка-Шоулза, представленная в 70-е годы, породила к жизни новую финансовую систему, основанную на торговле опционами, фьючерсами и деривативами. В этой новой системе не было ничего от старых классических фондовых рынков. Феноменальный успех и широкое распространение формулы привело к тому, что Майрон Шоулз получил Нобелевскую премию по экономике в 1997 году «за новый метод определения стоимости производных ценных бумаг».

BBC опубликовал статью о формуле, которая изменила фондовый рынок и виновата в нынешнем финансовом кризисе. Речь идёт о модели Блэка-Шоулза, которая используется для оценки деривативов и собственного капитала финансовых компаний.
Математическая модель Блэка-Шоулза, представленная в 70-е годы, породила к жизни новую финансовую систему, основанную на торговле опционами, фьючерсами и деривативами. В этой новой системе не было ничего от старых классических фондовых рынков. Феноменальный успех и широкое распространение формулы привело к тому, что Майрон Шоулз получил Нобелевскую премию по экономике в 1997 году «за новый метод определения стоимости производных ценных бумаг».
+33
Автономный Last.fm скробблер
3 min
6.5KПриветствую Вас, Хабралюди!

Многие из Вас знают такой замечательный сервис, как Last.fm. Коротко для тех, кто не в курсе: Last.fm — это интернет-проект музыкальной направленности, основными сервисами которого является сбор информации о музыке, которую слушает пользователь, и её каталогизация в индивидуальных и общих чартах, выдача рекомендаций на основе собранных данных. Более подробно в этом посте.
Сначала я зарегистрировался на этом сайте по совету друга без особого энтузиазма, только для того, чтобы смотреть, какие песни популярны у того или иного исполнителя. Но потом, когда началась нормальная поддержка скробблера для плеера AIMP, я начал использовать сервис как нужно. Всё бы хорошо, но меня расстраивал тот факт, что в статистику добавлялись только те песни, которые я прослушиваю в AIMP'е (тогда ещё у меня был обычный телефон, песни из машины и плеера, естественно, не поскробблишь, да и скробблеры для ВКонтакте работали очень нестабильно).
И тогда я решил поковырять API Last.fm для общего развития и решения этой проблемы. В итоге получилась программа, написанная на C#, которую я незамысловато назвал Автономный Last.fm скробблер, которая позволяет скробблить треки без непосредственного прослушивания в плеере. Это позволит заносить в статистику все треки, которые Вы слушаете (естественно, если Вы знаете их названия).

Многие из Вас знают такой замечательный сервис, как Last.fm. Коротко для тех, кто не в курсе: Last.fm — это интернет-проект музыкальной направленности, основными сервисами которого является сбор информации о музыке, которую слушает пользователь, и её каталогизация в индивидуальных и общих чартах, выдача рекомендаций на основе собранных данных. Более подробно в этом посте.
Сначала я зарегистрировался на этом сайте по совету друга без особого энтузиазма, только для того, чтобы смотреть, какие песни популярны у того или иного исполнителя. Но потом, когда началась нормальная поддержка скробблера для плеера AIMP, я начал использовать сервис как нужно. Всё бы хорошо, но меня расстраивал тот факт, что в статистику добавлялись только те песни, которые я прослушиваю в AIMP'е (тогда ещё у меня был обычный телефон, песни из машины и плеера, естественно, не поскробблишь, да и скробблеры для ВКонтакте работали очень нестабильно).
И тогда я решил поковырять API Last.fm для общего развития и решения этой проблемы. В итоге получилась программа, написанная на C#, которую я незамысловато назвал Автономный Last.fm скробблер, которая позволяет скробблить треки без непосредственного прослушивания в плеере. Это позволит заносить в статистику все треки, которые Вы слушаете (естественно, если Вы знаете их названия).
+13
Руководство по оформлению HTML/CSS кода от Google
12 min
361KTranslation
От переводчика
С удовольствием ознакомился с этими рекомендациями и теперь предлагаю вам перевод.
Введение
Это руководство описывает правила для оформления и форматирования HTML и CSS кода. Его цель — повысить качество кода и облегчить совместную работу и поддержку инфраструктуры.
Это относится к рабочим версиям файлов использующих HTML, CSS и GSS
Разрешается использовать любые инструменты для минификации компиляции или обфускации кода, при условии, что общее качество кода будет сохранено.
+277
Раскрытие IP-адреса пользователя Skype
1 min
88K
Деанонимизация скайп-пользователя по его skypename через нахождение его реального IP-адреса
1. Качаем отсюда пропатченный скайп версии 5.5:
http://skype-open-source.blogspot.com/2012/03/skype55-deobfuscated-released.html
2. Включаем создание файла с дешифрованным debug логом. Для этого добавляем нескольких ключей в реестр.
https://github.com/skypeopensource/skypeopensource/wiki/skype-3.x-4.x-5.x-enable-logging
3. Выбираем функцию добавить скайп контакт, но не добавляем, а только кликаем на него, чтобы посмотреть vcard. Этого будет достаточно.
+108
JAXB vs. org.hibernate.LazyInitializationException
7 min
5.2KСтатья будет полезна всем, кому интересно узнать способ устранения ошибки LazyInitializationException при JAXB сериализации объектов, созданных при помощи Hibernate.
В конце статьи имеется ссылка на исходный код проекта, реализующего предложенное решение — использование custom AccessorFactory.
Для сравнения рассмотрено, как аналогичная проблема решена в популярном JSON-сериализаторе — Jackson.
В конце статьи имеется ссылка на исходный код проекта, реализующего предложенное решение — использование custom AccessorFactory.
Для сравнения рассмотрено, как аналогичная проблема решена в популярном JSON-сериализаторе — Jackson.
+22
Сквозная облачность
4 min
25K
Пока Сеть азартно рассуждает и спорит (Хабр не исключение), какой из облачных сервисов файлового хранения лучше остальных, мне пришло в голову модернизировать личное решение по синхронизации и резервному копированию, используя все лидирующие продукты разом.
+79
Как делать презентации, или почему не все взлетает? Часть 1
13 min
49KВ силу своей работы и в целом из любви к исскуству, а также из наличествующего большого желания делиться с окружающими полезной информацией мне довольно часто приходится выступать с докладами перед почтенной публикой на самых разнообразных, как правило, айтишных конференциях. Не все из моих выступлений удачные, что-то получается лучше, что-то хуже. Как бы там ни было за несколько лет практики накопился некоторый опыт, которым захотелось поделиться, в связи с чем 12 апреля и был проведен одноименный вебинар, запись которого можно посмотреть на techdays.ru.

Подумав (не очень долго), я решил, что было бы также неплохо поделиться своими мыслями в текстовом формате: тут можно и конкретизировать, и лучше по полочкам разложить, да и читать многим сподручнее.

Подумав (не очень долго), я решил, что было бы также неплохо поделиться своими мыслями в текстовом формате: тут можно и конкретизировать, и лучше по полочкам разложить, да и читать многим сподручнее.
+33
Valve: как я здесь оказался, на что это похоже и чем я здесь занимаюсь
14 min
64KTranslation
Автор оригинальной статьи — Майкл Эбраш, человек и пароход. Для тех, кому лень изучать википедию, отмечу, что это программист с более чем 30-летним стажем работы, который в свое время помог Кармаку сделать Quake, разработал GDI для Windows NT, приложил руку к созданию первых двух версий Xbox, а сейчас работает в R&D-отделе компании Valve.
В своей заметке он вспоминает, как зарождалась индустрия 3D-игр вообще и Valve в частности, рассказывает про свой опыт работы в различных корпорациях, приоткрывает завесу внутренней кухни Valve и ищет новых сотрудников. Статья большая, и я посчитал ее достаточно интересной для того, чтобы перевести на хабр.
Всё началось с Лавины*.
Если бы я не прочел её и не влюбился в идею Метавселенной, если бы она не заставила меня представить, насколько распределенная 3D сеть близка к воплощению в жизнь, если бы я не подумал я могу сделать это и, что более важно, я хочу сделать это, я бы никогда не встал на путь, который в конечном счете привел меня в Valve.
В 1994 году я уже несколько лет как работал на Microsoft. Однажды вечером, когда моя дочка рассматривала книги в магазине Little Professor в Sammamish Plateau, мне посчастливилось заметить Лавину на полке. Я взял книжку, прочитал первые страницы, решил купить и в итоге проглотил её за день. Параллельно я начал задумываться о том, что 80 процентов описанного в ней осуществимо прямо сейчас, и мне захотелось реализовать это сильнее, чем когда-либо вообще хотелось сделать что-то с компьютером — я всю жизнь читал научную фантастику, и вдруг мне выпал шанс превратить её в реальность. Так я попытался начать в Microsoft проект по созданию технологии сетевого 3D.
В своей заметке он вспоминает, как зарождалась индустрия 3D-игр вообще и Valve в частности, рассказывает про свой опыт работы в различных корпорациях, приоткрывает завесу внутренней кухни Valve и ищет новых сотрудников. Статья большая, и я посчитал ее достаточно интересной для того, чтобы перевести на хабр.
Всё началось с Лавины*.
Если бы я не прочел её и не влюбился в идею Метавселенной, если бы она не заставила меня представить, насколько распределенная 3D сеть близка к воплощению в жизнь, если бы я не подумал я могу сделать это и, что более важно, я хочу сделать это, я бы никогда не встал на путь, который в конечном счете привел меня в Valve.
В 1994 году я уже несколько лет как работал на Microsoft. Однажды вечером, когда моя дочка рассматривала книги в магазине Little Professor в Sammamish Plateau, мне посчастливилось заметить Лавину на полке. Я взял книжку, прочитал первые страницы, решил купить и в итоге проглотил её за день. Параллельно я начал задумываться о том, что 80 процентов описанного в ней осуществимо прямо сейчас, и мне захотелось реализовать это сильнее, чем когда-либо вообще хотелось сделать что-то с компьютером — я всю жизнь читал научную фантастику, и вдруг мне выпал шанс превратить её в реальность. Так я попытался начать в Microsoft проект по созданию технологии сетевого 3D.
+218
Размеры массивов в Java
2 min
32KРазмеры объектов в Java уже обсуждались на Хабре, например, здесь или здесь. Мне бы хотелось подробнее остановиться на размерах многомерных массивов — простая вещь, которая для меня стала неожиданной.
Оптимизируя вычислительный алгоритм по памяти, я наткнулся на то, что при определённых (вполне разумных) входных параметрах создаётся массив float[500][14761][2]. Сколько он может занимать в памяти (на HotSpot 1.6.0_26 32bit, если кому интересно)? Я примерно прикинул, что500*14 761*2*sizeof(float) = 500*14 761*2*4 = 59 044 000 байт плюс какой-то оверхед. Решив проверить, как на самом деле, я воспользовался Eclipse Memory Analyzer (невероятно волшебная вещь, рекомендую!) и обнаружил, что «Retained Heap» для этого массива составляет 206 662 016 байт ! Неплохой оверхед — 350%. Посмотрим, почему так получилось.
Оптимизируя вычислительный алгоритм по памяти, я наткнулся на то, что при определённых (вполне разумных) входных параметрах создаётся массив float[500][14761][2]. Сколько он может занимать в памяти (на HotSpot 1.6.0_26 32bit, если кому интересно)? Я примерно прикинул, что
+100
Проект Lombok, или Объявляем войну бойлерплейту
6 min
57KОткрою не Америку, но шкатулку Пандоры: в Java-коде много бойлерплейта. Типовые геттеры, сеттеры и конструкторы, методы ленивой инициализации, методы toString, hashCode, equals, обработчики исключений, которые никогда не выбрасываются, закрывалки потоков, блоки синхронизации. Проблема заключается даже не в том, чтобы написать всё это — современные среды разработки справляются с такими задачами нажатием нескольких клавиш. Сложность в поддержании бойлерплейта в актуальном состоянии по мере внесения модификаций в код. А в некоторых случаях (многопоточность, реализация методов hashCode и equals) и сам шаблонный код написать без ошибок — далеко не простая задача. Одним из решений проблемы является генерация кода, и в этой статье я расскажу про проект Lombok — библиотеку, которая не только может избавить вас от бойлерплейта, но и сделать это максимально прозрачно, с минимальной конфигурацией и, что немаловажно, с поддержкой на уровне среды разработки.
+39
The Pirate Bay: а .torrent файлы-то никуда и не пропадали
2 min
7.6KКогда мой µTorrent в очередной раз отказался показывать содержимое торрента после вставки малосодержательной magnet-ссылки с Пиратской Бухты, я задался вопросом, а какие, собственно, .torrent файлы были удалены. На первый взгляд кажется, что после появления десятого сида файл пропадает, и остаётся только magnet-ссылка. Однако что будет, если количество сидов пойдёт на убыль? Может ли щедрая пиратская душа позволить драгоценному пиратскому контенту пропасть?
+64
Простой parallax эффект для промо-сайта
1 min
26K
Поскольку времени для реализации было достаточно, и долгое время таится желание написать хоть что-то, что может помочь другим разработчикам. Оформил все это дело в совсем малюсенький и простой plugin для jquery. Надеюсь, теперь этот код могут прочесть не только я и мой кот Борис, если же это и вовсе кому-то поможет в работе то я совсем не против использования его в ваших проектах, изменения копирования редактирования и т.д.
+82
Мониторинг сайта с помощью Google Docs
2 min
13K
Автор блога Digital Inspirations Амид Агарвал (Amit Agarwal) опубликовал скрипт для Google Docs, который опрашивает статус сайта и заносит ответ в ячейку таблицы. Таким образом, можно сделать сервис мониторинга своими руками. Google Docs позволяет запускать скрипт с минутным интервалом и получать уведомления на email.
+94
Information
- Rating
- Does not participate
- Registered
- Activity