Pull to refresh
0
0
Send message

Как сделать сайт более iPhone-совместимым за 5 шагов

Reading time2 min
Views55K
Тот факт, что iPhone предлагает наиболее развитый мобильный браузер среди мобильных платформ, пожалуй, ни у кого не вызовет сомнений. Однако не все знают, что довольно небольшими усилиями можно сайт сделать еще более дружественным к тем, кто смотрят его на iPhone или iPod Touch.

Ниже предлагаются простые 5 шагов, с которых можно начать, на примере сайта WHOIS Digger.

Шаг 1. Аналог favicon.ico

Когда пользователь создает ссылку на ваш сайт в виде иконки в SpringBoard, iPhone автоматически формирует картинку из скриншота страницы. В результате почти всегда получается неразборчивая каша, которая на гордое звание «иконки для iPhone» никак не тянет. Пропишите этот тег в заголовке страницы:

<link rel="apple-touch-icon" href="res/iphone_icon.png" />

и добавьте соответствующую картинку res/iphone_icon.png размером 57х57 пикселов. iPhone сам добавит скругленные углы и полукруглый блик, сделав вашу иконку похожей на остальные.

Вот так выглядит исходная картинка и иконка на рабочем столе iPhone:


Читать дальше →
Total votes 95: ↑85 and ↓10+75
Comments38

Аналого-цифровое преобразование сигнала для начинающих

Reading time3 min
Views194K

Вступление


Темы аналого-цифрового и цифро-аналогового преобразований являются достаточно важными в курсе электроники, поскольку большинство устройств, взаимодействующих с компьютером, имеют аналоговый вход/выход, а компьютер умеет обрабатывать исключительно цифровые сигналы. В этой статье я хочу поделиться с вами самыми основами таких преобразований.
Читать дальше →
Total votes 49: ↑37 and ↓12+25
Comments37

Генерация изображения с waveform из mp3 файлов с помощью PHP

Reading time3 min
Views11K
Хотел бы поделиться одним из способов внедрения проигрывателя аудиофайлов для сайтов, использующих jQuery. А именно — плеером в стиле популярного сервиса Soundcloud, сделанном на HTML+CSS+JS. В догонку к недавней статье об интересном плеере jPlayer.

Сам плеер состоит из jPlayer'а, некоторого количества нехитрой верстки, и главного компонента — картинки с waveform проигрываемого файла (это наглядная картинка, на которой изображены амплитуды сигнала, отложенные по шкале времени).

image

С результатами этого допиливания можно ознакомиться, скачав архив со всем необходимым: http://test.dis.dj/wave/ (там же есть демка интерфейса плеера и архив с ним).
Читать дальше →
Total votes 89: ↑78 and ↓11+67
Comments48

Краткое введение в терминалы и консоль

Reading time3 min
Views74K
Тут живут драконы и нет ментейнеров (вместо эпиграфа)

Очень сжатое боевое описание «что есть псевдо-терминал» и «консоль».

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

Терминал — обобщённое название как программы, так и специальной железки (таких больше нет в природе). Особое исключение — когда вы запускаете путти или ещё кого-то для подключения к последовательному порту коммутатора/рутера/модема (или даже сервера), то вы выступаете (точнее компьютер с путти выступает) в роли терминала (название «терминал» — потому что терминирует кабель (то есть висит на самом конце) ).

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

Когда запускается шелл, то он получает в своё распоряжение виртуальное устройство /dev/tty, которое у каждого процесса своё — это «обратная» часть терминала. Передняя часть в случае кабеля реализуется путти+компьютер, в случае консоли компьютера, специализированным ядерным драйвером (виртуальными консолями). Важно: драйвер эмулирует наличие терминала.
Читать дальше →
Total votes 106: ↑64 and ↓42+22
Comments101

jPlayer — плагин для проигрывания аудио и видео

Reading time2 min
Views57K
imageЯ уже писал про скрипт audio.js, позволяющий проигрывать аудио файлы использую возможности html5 и flash. Пост был встречен хорошо, поэтому сейчас я хочу рассказать про jPlayer — jQuery плагин для проигрывания аудио и видео.
Читать дальше →
Total votes 90: ↑85 and ↓5+80
Comments43

Как устроен AES

Reading time7 min
Views300K

О чём эта статья



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

В этой статье я напишу как устроен алгоритм шифрования AES (которого иногда называют Rijndael) и напишу его на JavaScript. Почему на JavaScript? Чтобы запустить программу на этом языке, нужен только браузер в котором вы читаете эту статью. Чтобы запустить программу, скажем, на C, нужен компилятор и найдётся совсем мало желающих, готовых потратить время на компиляцию кода из какой то статьи. В конце есть ссылка по которой можно скачать архив с html страницей и несколькими js файлами — это пример реализации AES на JavaScript.

Читать дальше →
Total votes 120: ↑115 and ↓5+110
Comments45

Операционные усилители (на основе простейших примеров): часть 1

Reading time3 min
Views274K
В курсе электроники есть много важных тем. Сегодня мы попытаемся разобраться с операционными усилителями.
Начнем сначала. Операционный усилитель — это такая «штука», которая позволяет всячески оперировать аналоговыми сигналами. Самые простейшие и основные — это усиление, ослабление, сложение, вычитание и много других (например, дифференцирование или логарифмирование). Абсолютное большинство операций на операционных усилителях (далее ОУ) выполняются с помощью положительных и отрицательных обратных связей.
В данной статье будем рассматривать некий «идеал» ОУ, т.к. переходить на конкретную модель не имеет смысла. Под идеалом подразумевается, что входное сопротивление будет стремиться к бесконечности (следовательно, входной ток будет стремиться к нулю), а выходное сопротивление — наоборот, будет стремиться к нулю (это означает, что нагрузка не должна влиять на выходное напряжение). Также, любой идеальный ОУ должен усиливать сигналы любых частот. Ну, и самое важное, коэффициент усиления при отсутствующей обратной связи должен также стремиться к бесконечности.
Читать дальше →
Total votes 78: ↑72 and ↓6+66
Comments29

Один компьютер на двоих (и более) или multiseat на базе Ubuntu 10.04 LTS

Reading time22 min
Views48K
В данной статье рассматривается реализация multiseat на базе Ubuntu 10.04 LTS с аппаратным ускорением. Пример, рассмотренный в этой статье, уже введен в эксплуатацию и работает около полугода в обычном Минском офисе. Описываются проблемы реализации и внедрения готовой системы в работу с точки зрения обычного студента-электроприводчика, который подрабатывает на полставки системным администратором.

Вступление



Вот время работы системным администратором в небольшом офисе при обновлении парка компьютеров появилась небольшая проблема. Современные компьютеры дают уровень производительности, много превосходящий необходимый для офисных компьютеров. Причем реалии рынка таковы, что различия в производительности мало сказываются на цене. И вроде бы дешевые компьютеры на базе Atom по ценовому признаку практически не отличаются от более производительных компьютеров на базе обычных процессоров Amd и Intel (материнская плата с процессором Atom стоит около 100-150 у.е. на май 2010 года, Минск, и та же цена на октябрь 2010 в том же Минске).

Та же ситуация и с жесткими дисками: для офисной работы нет необходимости в объеме диска более 40-80 Гб. Но на рынке такие жесткие диски уже практически не представлены. На момент написания статьи в продаже были жесткие диски емкостью 160 Гб (38$), 250 Гб (39$), 320 Гб (40$), 500 Гб (41$), дальше различия по ценам заметны сильнее. Цена за гигабайт жестких дисков малого объема довольно высока. Та же ситуация и со всеми остальными комплектующими.

Возникает закономерный вопрос, как рационально все это использовать? Давайте подойдем логически — чтобы удешевить систему можно либо купить комплектующие похуже (не сильно удешевляет), либо отказаться от некоторых комплектующих. По сути, в рабочем месте обязательными являются устройства ввода (клавиатура, мышь, планшет и т.д.) и устройства отображения информации (монитор, проектор и т.д.). Остальная часть системы пользователей особо не касается, и от нее можно избавляться. Безусловно, от всего избавиться не получится. Давайте заглянем под крышку системного блока. Тут мы обязательно видим материнскую плату, видеокарту (может быть уже на материнской плате), процессор (тоже может быть на материнской плате) и память. А вот остальные комплектующие уже не так важны. Оптический привод мало востребован, и поэтому его, скорее всего, не будет.
С жестким диском тоже интересная ситуация. Его может и не быть, тогда у нас будет так называемая бездисковая станция. Тут вся информация загружается по сети с сервера (реализация PXE+NFS и немного бубна). Но хочется чего-то большего.
Тогда и возникла идея подключить к одному компьютеру две клавиатуры, две мыши и два монитора и заставить их работать независимо. В зарубежных источниках такие системы называются multiseat.
Но можно на этом и не ограничиваться, а делать бездисковую multiseat-станцию. Этот вариант отлично подойдет для пары multiseat-станций с сервером. В данной статье не рассматривается.

Читать дальше →
Total votes 153: ↑145 and ↓8+137
Comments125

Мой подход к проектированию веб-сайтов

Reading time4 min
Views41K

Прелюдия


image Вероятно, всем известно и все прекрасно понимают, что главной частью в работе над программным продуктом, будь то сайт или настольное приложение, является совсем не процесс написания кода. Под словом главный я не подразумеваю время, которое уходит на этапы разработки, я имею ввиду наиболее важный этап, который определяет успешность дальнейшей работы над проектом. Трудно будет получить автомобиль, если на бумаге уже расписано создание велосипеда!

В рамках данной статьи я поделюсь своим опытом проектирования сайтов средней сложности. Данный подход зарекомендовал себя понятным как разработчикам, так и клиентам. Я не собираюсь открывать Америку, представленные ниже инструменты всем прекрасно знакомы. Суть данной статьи как раз в том, что бы продемонстрировать насколько просто можно представить достаточно сложные задачи.

Читать дальше →
Total votes 177: ↑152 and ↓25+127
Comments68

Перехват cookie в реальном времени в открытых WiFi-сетях

Reading time1 min
Views64K


На видео показан угон сессии вконтакте.ру, который почему-то до сих пор не использует авторизацию с https и передает пароли открытым текстом.
Дамп трафика собирается программой kismac в формате libpcap и параллельно парсится grep-ом с использованием регулярных выражений, что позволяет в реальном времени выводить на экран все интересующие куки и пароли. При этом не используется никаких анализаторов пакетов.

regexp для перехвата вконтакте.ру:

tail -F pcap.файл | cat | grep -aEo «remixsid=[0-9a-f]+|l=[0-9]{3,12}|p=[0-9a-f]{36}|email=[^&]+&pass=[^ ]+»

для фейсбука:

c_user=[0-9]+|sid=[0-9]{1,5}|xs=[0-9a-f]{32}

Аналогичная конструкция будет работать и с дампом собранным с помощью airdump-ng.
Total votes 173: ↑158 and ↓15+143
Comments162

Декодирование/нарезка/кодирование аудиофайлов

Reading time3 min
Views6K
публикуется по просьбе замечательного юзернэйма catdog

Предыстория:

Вряд ли сейчас можно найти программера который не знает как наснимать скриншотов с помощью mencoder-а и использовать их в качестве превью для видео файла. Однако подобных решений для аудиофайлов я пока не видел, оно и понятно почему: здесь как правило можно или отдавать файл полностью или пережимать консольными конверторами в удобоваримый формат полностью.

И все бы хорошо, но когда у тебя средняя длинна трэка 6 минут, то волей неволей задумываешься как бы сделать нарезку, сократив тем самым размер превьюшек на жестком диске и облегчив задачу в прослушивании материала пользователю. Когда-то давно для этого я использовал набор утилиток POC, они работали только с mp3 и умели быстро считать длинну, резать/склеивать по времени. Тогда я быстренько написал враппер вокруг этого безобразия и на какое-то время забыл об этом.

Однако пришли новые времена и народ начала закачивать музыку во flac-е, monkey audio и других lossless форматах. Да и сам mp3 со временем видоизменился и в него частенько начали добавлять альбомные картинки, что стало большой проблемой и причиной частых сегфолтов POC.

Именно тогда я решил написать приложение которое бы вбирало в себя весь комплект утилиток POC по нарезке склейки и плюс к этому имело бы encoder для mp3.

А теперь о том что получилось:

Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments19

Самые быстрые настройки для PHP-скриптов

Reading time7 min
Views35K
Наверное, все, кто сталкивался с разработкой более или менее серьезных приложений, знают, что выбор формата хранения настроек скрипта или приложения — достаточно ответственное дело. Конфиги должны быть легко читаемыми, легко модифицируемыми, легко переносимыми, и так далее — список можно продолжать и продолжать.

Так как серверные PHP-скрипты выполняются, бывает, много раз в секунду, скорость загрузки конфигов — достаточно важный параметр. Хотя ему, порой, уделяется не очень много внимания. Давайте сравним различные варианты хранения настроек для PHP-скриптов с точки зрения скорости их работы. Ну и коснемся вкратце их удобства.
Читать дальше →
Total votes 112: ↑93 and ↓19+74
Comments192

Верстка на HTML5

Reading time3 min
Views65K
html5

Несмотря на то, что стандарт HTML5 официально не утвержден, использовать его можно уже сейчас. Большинство браузеров уже понимают новые структурные элементы и для его использования достаточно добавить новый doctype.
Читать дальше →
Total votes 112: ↑102 and ↓10+92
Comments122

Бюджетный VPS-хостинг BurstNET (США) на личном опыте

Reading time5 min
Views23K
image

В топиках про немецкий хостинг от Hetzner и Server4You (кстати, у последней компании есть ещё несколько сайтов – будьте аккуратнее) люди интересовались, а почему именно хостинг в Германии? То, что не в России мы теперь уже знаем точно, и если у проекта в целевой аудитории центральная и западная Россия и/или Европа, то выбор немецкого хостинга часто оказывается оптимальным по соотношению цены/качества/пинга. Однако, если ваш проект нацелен на США или на весь мир? Думаю, что хостинг от Hetzner тут подходит довольно слабо — эта компания, как и почти все немецкие хостинги ориентируется в основном на внутренний рынок, не заботясь ни о доступности серверов вне страны (очень часто в случае с Hetzner пинг в Россию или вообще доступность сервера из России оказывается под вопросом), ни о хорошей международной поддержке хотя бы на английском языке (у Hetzner сейчас эту проблему, решили и саппорт доступен на английском, что далеко не всегда так в случае с другими немецкими хостерами – очень часто и сайт и саппорт на немецком языке). Для сервиса ориентированного на самый прибыльный – американский сегмент желателен и хостинг американский и возможность «роста».

Т.к. наша компания уже практически год является клиентом одного из американских VPS-хостингов (открываем там небольшой бесплатный хостинг картинок — можно попинговать и всячески проверить работу), хочу рассказать про него, сделав некоторые сравнения с хостингом немецким (да простят хабражители, за сравнение VPS от BurstNET с опытом использования Dedicated-сервера от Hetzner – весовые категории разные, но, опыт общения с Hetzner у нас основан именно на аренде выделенного сервера).
Читать дальше →
Total votes 36: ↑29 and ↓7+22
Comments63

Хабраиндекс для статей по программированию под Android

Reading time2 min
Views94K
Читать дальше →
Total votes 220: ↑204 and ↓16+188
Comments43

Угрозы Inside: инициализируем каналы утечки корпоративной информации

Reading time8 min
Views4K
Инсайд – пожалуй, самое ущербное явление в корпоративной среде. Как в прямом, так и переносном смысле. Теперь корпоративный периметр защищается не только и не столько от внешних нарушителей, но и, по сути, от самих себя. Мы посмотрим на эту проблему со стороны инсайдера, который совмещает искусство кражи конфиденциальной информации с краем острого лезвия.
Читать дальше →
Total votes 78: ↑66 and ↓12+54
Comments26

Умное удаление кеша (php 5 + Mongodb + memcached)

Reading time3 min
Views5K

Предисловие


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

Для себя я решил кешировать только результаты запросов к бд, т.к., имхо, загружать кеш огромными (или не очень) html блоками — в некотором роде расточительство ресурсов. (Это утверждение скорее всего справедливо только если вы не используете шаблонизатор). Ну и конечно же в качестве службы кеширования использую всем известный memcached.
Теперь давайте посмотрим — какие проблемы нас ждут при таком кешировании.
А проблема то всего одна, но зато не самая лицеприятная — поддерживание кеша всегда в актуальном состоянии.

Под катом — мое решение проблемы, позволяющее кешу жить вечно (если конечно он актуален и у вас не закончилась оперативка).
Читать дальше →
Total votes 13: ↑9 and ↓4+5
Comments19

Концепция web-проекта или почему мы убиваем свои идеи?

Reading time7 min
Views56K
Ежедневно десятки людей загораются идеей создать нечто своё, реализовать свой web-проект. В большинстве случаев все эти начинания ни к чему не приводят. Как не удивительно, основной причиной провала проекта служит отсутствие или недоработаность концепции.
В этой статье рассмотрены анализ успешности «зелёных» web-проектов, причины их провалов и методика написания концепции проекта. Статья рекомендуема для прочтения всем людям, решившим создать свой web-проект впервые.
Читать дальше →
Total votes 159: ↑128 and ↓31+97
Comments131

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity