Search
Write a publication
Pull to refresh
40
0
sysprg @sysprg

User

Send message

Плоская линза создаёт идеальное изображение

Reading time2 min
Views18K


Физики из Гарвардской школы инженерного дела и прикладных наук (School of Engineering and Applied Sciences, SEAS) создали плоскую линзу диаметром 1 мм и толщиной 60 нм, которая преломляет световые волны так же, как обычная объёмная линза, но без оптических искажений.
Читать дальше →

Уведомление о том, что браузер устарел

Reading time2 min
Views71K
ТизерОни уходят. Ещё вчера мы были вынуждены прикручивать очередной костыль для IE6/IE7, а сейчас в этом уже нет необходимости. В СНГ у IE6 сегодня всего 0.5% трафика, у IE7 — 1.8%. Они действительно уходят. Думаю, большинство верстальщиков давно уже не добивается попиксельного соответствия макету, а кто-то даже не проверяет на работоспособность сайтов в столь старых браузерах. В таком случае не будет лишним предупредить пользователя, что сайт может работать неправильно, и предложить обновиться. Предлагаю готовый комплект из панельки предупреждения и страницы с предложением выбрать новый браузер.
Читать дальше →

Оптимизация алгоритма проверки условия Делоне через уравнение описанной окружности и его применение

Reading time4 min
Views14K
Расскажу секрет о том, как быстро проверить выполнение условия Делоне для двух треугольников.
Собственно сама оптимизация описана немного ниже(см.«Оптимизация алгоритма проверки условия Делоне через уравнение описанной окружности»), но расскажу обо всем по порядку.

В моем случае триангуляция применяется в трассировке изображения, для разбиения плоскости на примитивные сектора (треугольники). Как известно, она делится также на несколько этапов: корректировка, выявление границ, обход границ, заметание контуров. Это в самом общем виде. Я бы хотел остановиться, думаю, на самом сложном этапе: заметание плоскости.
Итак приступим

Подборка CSS3-генераторов для упрощения фронтэнд-разработки

Reading time2 min
Views48K
CSS3 предоставляет много новых возможностей в мире фронтэнд-разработки. Это действительно великолепная вещь, но иногда трудно вспомнить некоторые параметры, особенно, если вы — веб-дизайнер, а не программист. Вот 10 удивительных CSS3-генераторов, которые помогут вам сэкономить время и силы (картинки кликабельны).
Читать дальше →

Энергосберегающий background location + отправка данных на сервер из фона

Reading time5 min
Views14K
Постановка задачи

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

Решение

Решение в лоб — использовать данные из коллбеков [CLLocationManagerInstance startUpdatingLocation] как в фоне, так и когда приложение активно. Первый и наиболее критичный недостаток данного решения — высокое энергопотребление (за несколько часов аккумулятор iPhone может полностью сесть). Второй — если приложение будет свернуто и 'убито', никаких апдейтов положения пользователя мы получить не сможем.

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

Эвристика случайного поиска и теплоходы

Reading time3 min
Views4K
Когда-то давно я уже писал довольно большую статью об использовании эвристик в программировании, но сегодня я хочу привести небольшой практический пример. Этим летом я плавал на теплоходе по маршруту Москва — Ростов-на-Дону — Москва, и заметил, что каждый вечер директор круиза пытается найти оптимальную рассадку туристических групп по автобусам. Задача не такая сложная, но минимум 15 минут в день на её решение тратится. Разумеется, я попробовал автоматизировать этот процесс.
Читать дальше →

Многопоточный загрузчик файлов на JS (jQuery)

Reading time5 min
Views5.5K
Доброго времени суток, коллеги. В этой статье я опишу опыт создание многопоточного загрузчика файлов (с ограниченной нагрузкой на сервер) на JS (jQuery).

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

Лаборатории Nokia по тестированнию антенн

Reading time3 min
Views25K
Выбирая новый телефон мы редко обращаем внимание на качество приёма, проявляя больший интерес к размеру экрана, мультимедийным возможностям телефона, аккумулятору — просто потому, что мы привыкли к хорошему приёму сигнала и де-факто ожидаем, что с ним проблем не будет. Но иногда неприятности с антенной всё же случаются — многие из вас наверняка помнят про «антеннагейт».


Source: npl.co.uk

Чтобы избежать подобных проблем, каждый производитель мобильных телефонов проводит тщательное тестирование антенн в производящихся аппаратах. Конечно, изначально антенны проектируются вместе с другими деталями телефона, и в лаборатории для тестирования аппарат уже попадает в законченном виде. И, благодаря кропотливым и сложным предварительным рассчетам при проектировании антенны, гарантирующим нормальный приём сигнала, финальное тестирование может показаться формальностью, без его прохождения аппарат никогда не выйдет на рынок.

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

Чёрный цвет — табу, миф или необходимость?

Reading time5 min
Views33K
Прочитав этот топик и запись в блоге, на которой он основан, я подумал в очередной раз о том, как же любят «специалисты по веб-дизайну» (это камень в сторону автора записи в блоге, но не только — всем известны и другие любители этого) выдавать давно известные тезисы за откровение и яро их пропагандировать. Не слишком заботясь о логике того, как эти тезисы переносятся на веб-дизайн и дизайн вообще, и что они изначально значат.

Давайте разберемся, в чем тут реальная проблема.
Читать дальше →

Миллион одновременных соединений на Node.js

Reading time9 min
Views106K


TL;DR:


  • Node.js v0.8 позволяет обрабатывать 1 млн одновременных HTTP Comet соединений на Intel Core i7 Quad/16 Gb RAM практически без дополнительных настроек.
  • На 1 соединение тратится чуть больше 10 Kb памяти (4.1 Kb Javascript Heap + 2.2 Kb Node.js Native + 3.8 Kb Kernel)..
  • V8 Garbage Collector не рассчитан на управление > ~500Mb памяти. При превышении нужно переходить на альтернативный режим сборки мусора, иначе «отзывчивость» сервера сильно уменьшается.
  • Подобный опыт можно (и нужно!) без особых затрат повторить самому (см. под катом).

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

Zynga. Возможно, худшее еще впереди

Reading time3 min
Views1.9K
Прошлая неделя была достаточно паршивой для Zynga. Сокращение доходов и снижение прогнозов на предстоящий фискальный год вылились в 40% падение акций компании. Это событие активизировало предсказателей-фаталистов.

Составлять некролог для Zynga несколько преждевременно, но компанию практически гарантированно ждет ухудшение ситуации, прежде чем появится свет в конце туннеля.

В попытках исправить текущее положение дел, Zynga сталкивается с огромным количеством препятствий. Рост социальных игра замедляется, и количество игроков в флагманские игры компании падает. Инвесторы в курсе этих событий, и имеют полное право волноваться. Но самая большая надвигающаяся проблема — истечение срока опционов для работников.
Читать дальше →

Зачем на самом деле нужен мозг

Reading time10 min
Views52K
В продолжение предыдущего топика "Как на самом деле работает мозг". На написание данного поста меня побудила, с одной стороны, замечательная книга «Grooming, Gossip, and the Evolution of Language» Робина Данбара (Robin Dunbar), а с другой — очередная порция «полезных» и «умных» советов в GTD и других блогах.

Для затравки — небольшая логическая задачка. Дан набор карточек; на каждой из них на одной стороне написана буква, на другой — цифра.
На столе лежат четыре карточки: «А», «Д», «5» и «6». Вам говорят: если на карточке (из числа лежащих на столе) на одной стороне гласная, то на обороте — чётная цифра. Какие из карточек достаточно перевернуть, чтобы однозначно подтвердить или опровергнуть это утверждение?

Подумайте немного, запишите ответ на бумажке и добро пожаловать под кат.

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

Марсианская орбитальная группировка

Reading time4 min
Views2.5K
Думаю всем было любопытно, что внутри марсохода Curiosity?
Но мало кто догадывается или задумывается, что одними марсоходами дело не ограничивается. На самом деле все гораздо интереснее.

На поверхности планеты работают марсоходы Opportunity и Curiosity. Стационарный космический аппарат Феникс работал в приполярной области Марса с 25 мая по 2 ноября 2008 года. Связь с марсоходом Спирит утеряна 22 марта 2010 года. На орбите же Марса в настоящее время находятся 3 активно работающие АМС — Mars Reconnaissance Orbiter, Mars Odyssey, Марс-экспресс. Сравнительно недавно (по космическим меркам), в 2006 году прекратила функционирование станция Mars Global Surveyor.

А как ты выходишь марсоход выходит на связь?


Марсоход Curiosity имеет две системы связи. Первая имеет передатчик и приёмник X-диапазона, с помощью которых ровер будет связываться напрямую с Землёй. Вторая работает в диапазоне ДМВ (UHF) и создана на базе программно-определяемой радиосистемы Electra-Lite, разработанной в JPL специально для космических аппаратов. ДМВ-радио используется для связи с искусственными спутниками Марса. Несмотря на то, что у «Кьюриосити» имеется возможность прямой связи, большая часть данных будет проходить через орбитальные аппараты, так как у них мощнее передатчики, больше диаметр антенн, и в таком режиме достигается большая пропускная способность.

При посадке, телеметрия могла отслеживаться всеми тремя активными спутниками, находящимися на орбите Марса. Из них Марс Одиссей служил в качестве ретранслятора и передавал телеметрию на Землю в потоковом режиме. На Земле сигнал принимали с задержкой в 13 минут 46 секунд, необходимых для преодоления радиосигналом расстояния между планетами.

Далее последует интересная информация по-немногу о каждом спутнике, в порядке запуска.

И так аппараты

Hover-эффекты для круглых элементов с использованием CSS Transitions

Reading time14 min
Views33K

Сегодня я хочу познакомить вас с замечательными примерами hover-эффектов от Mary Lou. Многим понравились её примеры с hover-эффектами для меню и на этот раз она решила порадовать нас не менее замечательными примерами для круглых элементов. Поскольку сейчас у нас есть возможность использовать свойство border-radius, мы можем создавать круглые формы, и они все чаще появляются в качестве элементов дизайна на веб-сайтах. Один из вариантов использования, который мне более всего нравится, это круглые миниатюры, которые выглядят гораздо интереснее, чем обычные, прямоугольные. И сейчас мы собираемся создать несколько необычных эффектов при наведении на такие элементы!
Читать дальше →

Быстрое индексное умножение по модулю

Reading time4 min
Views38K

Введение


Обычно данный материал приводится с обилием формул и рассчитан больше на математиков. Я постараюсь расписать его наиболее доступно на простых численных примерах с точки зрения применения этого метода в микроэлектронике на аппаратном уровне. В численных примерах для наглядности будет использоваться значение p = 11.

Постановка задачи


Положим, что нам требуется выполнить умножение следующего вида: res = (a*b) mod p, где
0 <= a < p
0 <= b < p
p – простое число.
mod p – операция нахождения остатка по модулю.
И выполнить его надо на низком уровне, где нет как таковой операции умножения и операции взятия остатка от деления или же они реализуются достаточно сложно (например, в электронном устройстве).
Подробности

Артефакты в 2D-играх — на границе текстуры

Reading time2 min
Views6.9K
Вдохновившись статьей «У прозрачных пикселей тоже есть чувства или артефакты png'шек с прозрачностью», решил рассказать еще о некоторых проблемах, которые могут возникнуть при разработке 2D-игры.

В этой статье я хотел бы рассказать о нетривиальных проблемах, с которыми мне пришлось столкнуться при разработке 2D-игр, связанных с фильтрацией текстур.

Все эти артефакты возникают при включенной фильтрации текстур. А также масштабировании, повороте текстуры или если она имеет дробные координаты.
Читать дальше →

Я не знаю ООП

Reading time12 min
Views554K
Я не умею программировать на объектно-ориентированных языках. Не научился. После 5 лет промышленного программирования на Java я всё ещё не знаю, как создать хорошую систему в объектно-ориентированном стиле. Просто не понимаю.

Я пытался научиться, честно. Я изучал паттерны, читал код open source проектов, пытался строить в голове стройные концепции, но так и не понял принципы создания качественных объектно-ориентированных программ. Возможно кто-то другой их понял, но не я.

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

Input attribute placeholder

Reading time2 min
Views25K
Тут уже поднималась тема об использовании такого замечательного атрибута форм как placeholder. И даже приводились примеры на js (ищем по слову placeholder). И не раз было высказано огорчение, потому что в IE данных атрибут не выполняется.

Сам атрибут очень полезен. Особенно радует экономия места при создании форм (особенно в всплывающих формах). Поэтому было решено не отказываться от атрибута, а просто помочь ему заявить о себе и Internet Explorer. На помощь был призван jQuery.
Подробности

Принцип «уверенности» высококачественного веб-дизайна

Reading time10 min
Views21K
Краткий синопсис

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

image

Под катом примерно 1.1 Мб трафика.
Читать дальше →

Экспериментальное определение характеристик кэш-памяти

Reading time8 min
Views16K
За счет чего же мы наблюдаем постоянный рост производительности однопоточных программ? В данный момент мы находимся на той ступени развития микропроцессорных технологий, когда прирост скорости работы однопоточных приложений зависит только от памяти. Количество ядер растет, но частота зафиксировалась в пределах 4 ГГц и не дает прироста производительности.

Скорость и частота работы памяти — это то основное за счет чего мы получаем «свой кусок бесплатного торта» (ссылка). Именно поэтому важно использовать память, настолько эффективно, насколько мы можем это делать, а тем более такую быструю как кэш. Для оптимизации программы под конкретный компьютер, полезно знать характеристики кэш-памяти процессора: количество уровней, размер, длину строки. Особенно это важно в высокопроизводительном коде — ядра систем, математические библиотеки.

Как же определить характеристики кэша автоматический? (естественно cpuinfo распарсить не считается, хотя-бы потому-что в конечном итоге мы бы хотели получить алгоритм, который можно без труда реализовать в других ОС. Удобно, не правда ли? ) Именно этим мы сейчас и займемся.

Немного теории


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

Information

Rating
Does not participate
Date of birth
Registered
Activity