Search
Write a publication
Pull to refresh
0
0
Markus Tisse @Tisse

User

Send message

Взгляд изнутри: CD и HDD

Reading time7 min
Views104K


Предисловие


Моя предыдущая статья была посвящена внутреннему устройству чипа от Nvidia, да и, пожалуй, внутреннему устройству любого современного процессора. В этой статье мы перейдём к средствам хранения информации, и я расскажу, что представляют собой CD и HDD диски на микроуровне.
Под катом много трафика

Что кешировать?

Reading time8 min
Views12K
Всё. На этом можно было бы статью закончить, так как эта аксиома повторяется из года в год на форумах и конференциях и кочует из текста в текст на всех технических ресурсах. Однако это ёмкое «Всё» не поясняет деталей. Ведь существует достаточно широкая прослойка программистов, движки и проекты которых справляются с задачей без мемкеша и шардинга. Но момент нагрузки приходит, и приходится разбираться.
Для таких людей я и разобрал на запчасти это универсальный ответ высоконагруженных проектов.
Ограничимся изучением системы для веба. Попросту говоря, на привычном обычном сайте. Используете ли вы готовую CMS, или уже выросли до каркаса, или написали «с нуля» код для нестандартного проекта – основными элементами процесса приёма-отдачи данных всегда будут одни и те же узлы. Я их рассмотрю с точки зрения «Где что можно закешировать».
Этапы выдачи
Читать дальше →

И снова Arduino: принтер, следящий за Twitter-каналом пользователя

Reading time1 min
Views8.8K


На базе Arduino создаются очень интересные проекты. Порой практичные, порой — просто курьезные. На Хабре уже много раз публиковались новости о таких проектах, так что примеры есть. На сей раз предлагаю оценить еще одну поделку: принтер, который печатает на туалетной бумаге сообщения из тви-ленты отдельно взятого пользователя. Вероятно, туалетная бумага была выбрана для того, чтобы не тратить писчую бумагу высокого качества на всякие глупости.

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

Курс Стэнфорда по цифровой фотографии

Reading time1 min
Views5.8K
Стэнфордский университет выложил в онлайн лекции и сопроводительные материалы к курсу по цифровой фотографии (CS 178). Курс знакомит студентов с научным, художественным и компьютерным аспектами цифровой фотографии — как работает камера, как делать хорошие снимки, как обрабатывать фотографии.

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

HabraFav — доступ к хабраизбранному

Reading time1 min
Views738
Лично у меня довольно часто возникает желание найти что-то в избранном хабра дабы почитать/перечитать.
Собственно это и послужило причиной возникновения идеи написать расширение к хрому ( в порядке тренировки ), которое позволит делать это не отходя от кассы открывая новых вкладок и не тратя времени на несколько перезагрузок/перерисовок страницы.

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

Работа с Microsoft Kinect в приложениях на C++

Reading time58 min
Views19K

Введение


Совсем недавно Microsoft выпустили beta-версию инструментария для работы с Kinect – Microsoft Research Kinect SDK. В инструментарии доступны заголовочные файлы, библиотека, а также примеры использования в приложениях на C++. Но наличие самого SDK не решает проблему с отсутствием доходчивых примеров и документации. Заметно, что Microsoft больше ориентируется на .NET разработчиков, поэтому, например, на официальном форуме подавляющее большинство топиков связаны с C#, а гуглопоиск при попытке найти какое-либо описание API для Kinect выдает всего несколько ссылок, и те — на официальную документацию.

В этой статье рассматриваются варианты использования Microsoft Kinect, а также упомянутого выше программного инструментария в C++ приложениях и в связке с библиотекой wxWidgets.

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

Техноблог: почему Evernote выбрал Apache Thrift для построения своего API

Reading time4 min
Views15K
Thrift
Когда мы начинали планировать, как будет устроен сервис Evernote, в 2007 году, мы знали, что в первый же день нам понадобится поддержка как “тонких” (таких как браузеры), так и “толстых” синхронизируемых клиентов. Это побудило нас задуматься над удаленным протоколами и клиентским API еще до начала работы над любым GUI для веба. В противном случае пришлось бы ждать несколько месяцев, пока прикрутят API на уже существующий веб-сервис.

Наши приложения предъявляют к API определенные требования, как то:
Читать дальше →

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

Reading time4 min
Views38K

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


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

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

Отслеживание скорости загрузки страниц на сайте

Reading time1 min
Views6.8K
Нередко возникает потребность определить скорость загрузки страниц на сайте, чтобы отловить медленные страницы и оптимизировать их. Но какого-то универсального решения для этого не было. Теперь же такое решение появилось в новой версии Google Analytics!

По-умолчанию эта функция в Google Analytics отключена. Для ее включения достаточно добавить одну строчку в код GA. Это вызов функции _trackPageLoadTime();, который нужно разместить после функции _trackPageview();

Вариант для асинхронного кода GA:
_gaq.push(['_trackPageview']);
_gaq.push(['_trackPageLoadTime']);


Вариант для стандартного кода GA:
pageTracker._trackPageview();
pageTracker._trackPageLoadTime();


После обновления кода отслеживания GA данные будут поступать в отчет «Содержание -> Скорость загрузки сайта». (! Данный отчет есть только в новом интерфейсе Google Analytics!) Отчет содержит список страниц сайта, отсортированный по среднему времени загрузки в секундах от большего к меньшему.

Очень полезный функционал, которому можно найти множество применений в веб-аналитике.

Более подробно об этой функции можно почитать в справке Google Analytics: http://www.google.com/support/analyticshelp/bin/answer.py?hlrm=en&answer=1205784&topic=112071

4 способа развернуть собственный аналог Dropbox

Reading time2 min
Views59K
storage


Хотите получить облачное хранилище, но при этом иметь больше контроля над вашим сервисом, чем вы могли бы получить от Dropbox и его конкурентов? Здесь представлены несколько способов, чтобы создать ваше собственное хранилище в стиле Dropbox.
Читать дальше →

Пять бесплатных инструментов для выбора цветовой схемы сайта

Reading time2 min
Views234K
Один из самых важных факторов при создании уникального и узнаваемого дизайна — цвет. Грамотный выбор цветовой схемы может определить успех или провал сайта. Когда посетитель бросает первый взгляд на веб-страницу, то выбранные вами цвета посылают ему мгновенное сообщение об этой странице. К счастью, существует много инструментов, которые помогут выбрать правильную цветовую схему. Вот пять лучших из них.
Читать дальше →

Открываем внутренний API сервиса SMS24X7 для разработчиков

Reading time2 min
Views2.3K
сервис sms-рассылок sms24x7Давать доступ во «внутреннюю кухню» сервисов становится хорошим трендом: Гугл, Яндекс, Mailchimp и многие другие открывают API для работы даже с «внутренними» функциями своих сервисов. Спустя месяц после запуска SMS24X7.RU мы гордостью представляем Вам полное API к нашему сервису. Наша компания всегда старалась быть немного впереди игроков на рынке смс-рассылок и поэтому первые создали API, включающее СМС-шлюз и все функции для работы с настройками, адресной книгой и СМС-рассылками. Одним словом — абсолютно со всем!

Надо отметить, что архитектурное решение по введению API в качестве backend'а для нашего WEB-сервиса СМС-рассылок доставило нам небольшую головную боль. Зато позволило естественным образом отделить процесс разработки WEB-интерфейса. Таким образом, всё, что есть в сервисе оказалось доступно через API.

Допустим, что рассказывать о том, зачем нужен СМС-шлюз никому не надо. Все эти СМС-напоминания, СМС-уведомления и СМС-информирование изрядно утомляют, когда заставляют, в основном, не по делу звенеть и дергаться Ваш телефон. Но как быть, если надо разместить форму сбора мобильных номеров на сайте, интегрировать СМС-рассылки к заказчику в личный кабинет или отобразить у себя статистики по использованию СМС-шлюза? Ответ простой — используйте наше API.

Далее про API, создание документации на Doxygen и уникальное предложение по смс-шлюзу

Vogue как системный монитор

Reading time1 min
Views62K
Всем привет! Лежал-пылился у меня плеер из того самого выпуска журнала Vogue, решил я из него системный монитор для моего сервера в коробке сделать, и вот что из этого вышло:

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

Делаем микросхемы дома — шаги 0 и 1

Reading time3 min
Views112K
В этой статье я расскажу о начале своей работы над совершенно безбашенной задачей: конечная цель в том, чтобы получить рабочую микросхему по «толстым» нормам (5-10µm) дома. Это не первое апреля и я не сумасшедший, это просто моё хобби.

Возникла эта идея не сейчас и неспроста. С детства я хотел быть газосварщиком, и… делать микросхемы. И если по первому пункту мне достаточно быстро удалось сделать дома сварочный аппарат (бутан-водород/кислород), то с микросхемами все никак не складывалось. Долгое время все мысли останавливались на том, что я не знал где можно взять собственно полупроводники необходимой чистоты (и мысли останавливались на ковырянии мощных транзисторов), пока на форуме не подсказали что в принципе, можно и купить пластины. Затем я даже наткнулся на человека, который 20 лет работал над похожей задачей, и в итоге сдался. Пожалуй, тут можно было опустить руки и перестать тратить время на глупые мечты. Но, однажды я увидел ролик чудовищно гениальной женщины – Jeri Ellsworth – она смогла сделать отдельные полевые транзисторы на основе заводских пластин – и тогда я решил, что настало время поплотнее заняться этой проблемой.

В этой статьях я расскажу о своём текущем прогрессе, но не ждите быстрого продолжения – весь процесс может легко занять пару лет.
Читать дальше →

Подборка генераторов CSS

Reading time2 min
Views50K


Не секрет, что писать CSS для многих стандартных кнопок, макетов, etc. бывает весьма лениво. Ниже представлена подборка генераторов CSS (и не только), которая, возможно, в некоторых случаях сможет упростить кому-то жизнь. Многими генераторами можно успешно пользоваться даже без глубоких познаний CSS.

(Осторожно! Много картинок)
Читать дальше →

LINQ for Java: LambdaJ

Reading time3 min
Views19K
Как часто вам приходилось видеть или писать одни и те же несколько строчек кода, которые постоянно используются вместе для решения одной и той же задачи? Взять, например, перебор или сортировку (некоторую манипуляцию) коллекций. Такие участки кода программистам приходится писать каждый день. Конечно, есть различные IDE, в которых можно использовать snippet'ы и шаблоны. Тем не менее, подобные конструкции загромождают код, делая его более подходящим для обработки компьютером, а не для восприятия программистом.

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

Рассмотрим пример использования LambdaJ. Найдём возраст самого юного покупателя, который совершил покупку более, чем на 50'000.

Классический (итеративный) способ:
int age = Integer.MAX_VALUE;
for (Sale sale : sales) {
  if (sale.getCost() > 50000.00) {
    int buyerAge = sale.getBuyer().getAge();
    if (buyerAge < age)
      age = buyerAge;
  }
}


LambdaJ способ:
int age = min(forEach(select(sales, having(
  on(Sale.class).getCost(), greaterThan(50000.00)).getBuyer()))),
  on(Person.class).getAge());


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

Cisco Router + 2ISP + NAT. Доступность сервиса через 2ух провайдеров

Reading time9 min
Views47K
image

Толчок. За ним ещё один, сильнее. Вот и всё. Перед глазами проносились альпийские луга, и девушка в бежевом сарафане, игриво крутя в точёных ручках кружевной зонтик проносилась мимо тоже. Проносилась, не сбавляя скорости, несмотря на то, что я тянул к ней свои менее точенные, но крепкие ручонки, а также жестами и мимикой изображал, в меру сил своих, какой всесторонний кундюшок её может ожидать, раскинь она мне руки навстречу (ну или ещё что раскинь).
Но случилось что случилось, и лишь ловко выхваченный зонтик из её, кстати, не только точённых но и цепких рук, немного оттенял розовыми тонами последние секунды моего пробуждения и согревал разбитое сердце (без зонтика, закрывающего её шевелюру, девушка оказалась на поверку немного, мягко говоря, плешиватой). Открыв глаза я, как то не странно, увидел себя не посреди развалин Ниигаты, и сразу отринул сейсмическую природу толчков. Немного отлегло. Перестал кричать – «Покинуть корабль!». С укором взглянул на начальника отдела трясущего меня за плечо. Который, вместо извинений принёс мне весть, что нас с ним ожидают у директора, для постановки одного маленького, но очень ответственного задания. Не приняв его слова близко к сердцу, я несколько раз пытался вернуться к своей плешивой искусительнице, но начальник продолжал проявлять чудеса настойчивости. Пришлось идти.
Читать дальше →

jBitTorrent API 1.0, исправленный и дополненный

Reading time1 min
Views3.3K
Недавно я описывал библиотеку jBitTorrent для Java, с помощью которой можно работать с файлами по протоколу BitTorrent.
В той же статье был блок описания проблем, встречанных при использовании этой библиотеки, ведь она не обновлялась еще с 2009 года.
Пользователь sadyjka предложил мне самому пофиксить эти баги, и вот я нашел немного времени для этого. Исправлены следующие проблемы:

  • Недочет при добавлении множественных файлов в генерируемый торрент-файл
  • Ошибка при закачке файлов


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

Признаюсь честно, с этим кодом мне пришлось несколько суток разбираться, поэтому я мог немножко наговнокодить.
Проблему в printData я не стал убирать, ибо метод также не критичен, а просмотрев исходник, увидел, что идет доступ к списочным элементам, которые в том классе не использовались.
Извиняюсь, что не на SourceForge лежат мои фиксы, ибо автор оказался весьма занятым.

Исходники
JAR

UPD
По просьбе debacle сделал репозиторий на GitHub.

IndexedDB: пробуем готовить

Reading time7 min
Views23K
IndexedDB – стандарт хранения больших объемов структурированных данных на клиенте – был ожидаем также как и WebSocket (ну может самую малость меньше). В свете выхода FireFox 4 я нашёл время и силы всё-таки разобраться, как им пользоваться, и попытаться написать что-то больше, чем пример с адресной книгой, гуляющий по интернетам (в процессе поиска информации у меня сложилось впечатление, что это был единственный пример).
что из этого вышло

Какие бывают типы OutOfMemoryError или из каких частей состоит память java процесса

Reading time3 min
Views209K
Если вы словили OutOfMemoryError, то это вовсе не значит, что ваше приложение создает много объектов, которые не могут почиститься сборщиком мусора и заполняют всю память, выделенную вами с помощью параметра -Xmx. Я, как минимум, могу придумать два других случая, когда вы можете увидеть эту ошибку. Дело в том, что память java процесса не ограничивается областью -Xmx, где ваше приложение программно создает объекты.

image

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity