Pull to refresh
12
0
Алексей@Deesy

Пинатель балды

Send message

Производительность веб-шрифтов

Reading time3 min
Reach and readers42K


Применение веб-шрифтов становится все популярнее: согласно HTTP Archive, за последний год число сайтов, использующих дополнительные шрифты, выросло вдвое — с 6 до 12%.

Слабым местом веб-шрифтов является производительность, однако ситуация постепенно меняется в лучшую сторону: появляются более совершенные методы сжатия, улучшается поддержка браузерами, unicode, отдельные наборы шрифтов и т.д.
Читать дальше →

WebSocket-чат на Tornado для вашего Django-проекта

Reading time28 min
Reach and readers68K
TornadoНедавно я запустил сайт backgrounddating.com и написал об этом здесь, на Хабрахабре. Разумеется, я уже тогда рассказал о некоторых технических деталях реализации этого проекта, но об одной из возможностей сайта я бы хотел написать отдельно, тем более, что документации (как на русском, так и на английском) на эту тему в Интернете пока что довольно мало. Итак, речь пойдёт о чате в реальном времени между двумя пользователями. Задача состоит в том, чтобы любой пользователь мог отправлять другим пользователям сообщения, и, если у получателя сообщения открыт чат с этим пользователям, то он сразу же видел входящие сообщения (а в ином случае он мог прочитать сообщения позже: то есть при открытии чата загружается история последних сообщений).

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

Сразу уточню, что это не единственный способ реализовать подобное. Вы можете использовать другой асинхронный веб-сервер (например node.js), можете использовать другую очередь сообщений (или вообще её не использовать, если вам подходят особенности такого варианта: с пользователями одного канала обязательно общается один и тот же worker веб-сервера). Я даже не утверждаю, что этот вариант самый лучший (но в данном случае он подошёл лучше всех). В конце концов, мы здесь вообще не будем рассматривать костыли (long polling, Flash) для старых браузеров (а это почти все версии IE, например), не поддерживающих веб-сокеты, и даже не будем рассматривать возможность подключаться из тех браузеров, которые уже поддерживают протокол WebSocket, но не стандартизированную версию (RFC 6455), а одну из устаревших. О том, как можно включить поддержку устаревшей версии «draft 76» (она же «hixie-76»), смотрите в документации Tornado.
Читать дальше →

Типы адаптивных макетов

Reading time2 min
Reach and readers63K


С каждым днем появляется все больше сайтов с адаптивной версткой. При проектировании такого дизайна первое, о чем задумывается разработчик — это общее представление контента на устройствах с разным размером экранов. В этой статье я описал некоторые типы (layouts) адаптивных макетов.
Читать дальше →

Трансформация и перевод на другие языки web-сайтов на лету при помощи Nginx

Reading time5 min
Reach and readers10K




В моем первом посте я описал применение Apache Traffic Server в качестве кеширующего reverse-proxy. В отзывах меня спрашивали почему не nginx? Поскольку в ATS все равно не нашлось удобного способа трансформировать контент сайта, то я решил изучить возможности Nginx. Для решения задачи пришлось углубится в дебри документации, и вот что получилось…
Читать дальше →

Проксируем и спасаем

Reading time7 min
Reach and readers175K
1 ноября мир изменился и больше никогда не будет таким же как прежде. В российском интернете появилась цензура — общеизвестный уже список запрещенных сайтов. Для одних это важнейшая политическая тема, для других повод изучить технологии шифрования и защиты анонимности, для третьих просто очередной странный закон, который приходится исполнять на бегу. Мы же поговорим о технологическом аспекте.

В данном пособии мы узнаем как быстро и просто сделать рабочее зеркало любого сайта, что позволяет сменить IP и назначить любое доменное имя. Мы даже попробуем спрятать домен в url, после чего можно сохранить локально полную копию сайта. Все упражнения можно сделать на любом виртуальном сервере — лично я использую хостинг Хетцнер и OS Debian. И конечно мы будем использовать лучший веб-сервер всех времен и народов — NGINX!

К этому абзацу пытливый читатель уже приобрел и настроил какой нибудь выделенный сервер или просто запустил Linux на старом компьютере под столом, а так же запустил Nginx последней версии со страничкой «Save me now».
Cкорее кого-нибудь спасем

Хочется взять и расстрелять, или ликбез о том, почему не стоит использовать make install

Reading time5 min
Reach and readers183K
К написанию сей заметки меня сподвигло то, что я устал делать развёрнутые замечания на эту тему в комментариях к статьям, где в качестве части инструкции по сборке и настройке чего-либо для конкретного дистра предлагают выполнить make install.
Суть сводится к тому, что эту команду в виде «make install» или «sudo make install» использовать в современных дистрибутивах нельзя.

Но ведь авторы программ в руководствах по установке пишут, что нужно использовать эту команду, возможно, скажете вы. Да, пишут. Но это лишь означает, что они не знают, какой у вас дистрибутив, и дистрибутив ли это вообще, может, вы вступили в секту и обкурилисьчитались LFS и теперь решили под свою хтоническую систему скомпилять их творение. А make install является универсальным, хоть и зачастую неправильным способом это сделать.

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

OBOOBS.RU // Open B(.)(.)BS Project — небольшой проект про сиськи (женские)

Reading time1 min
Reach and readers43K
OBOOBS.RU

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

Главной целью было сделать неотвратительный ресурс про обнажённых девушек — нам было очень странно от того, что на эту тему не нашлось ничего простого, минималистичного и без невозможного количества порнобаннеров. И мы решили заполнить этот пробел.

Сайт копирует модель коллективной фильтрации от bash.org.ru — состоит из двух разделов: Сигнал (отобранные и разбитые по категориям картинки) и Шум (огромное количество картинок, добавленных самими пользователями, выдаётся пользователям рандомно). Время от времени, самые популярные картинки из Шума уходят в Сигнал, «попадают на главную» (заодно и в RSS валятся). Вот и всё. Можно только добавить, что крутится всё на django (nginx, apache+mod_wsgi), postgresql и prototype.

Приходите к нам смотреть на красивые сиськи!

Расширение функциональности готовых программ

Reading time11 min
Reach and readers43K
В мире ПО существует огромное количество программ, забытых своими разработчиками. Хорошо, когда уже есть хорошая альтернатива. А если ее нет? В программе может катастрофически не хватать каких-то мелочей, некоторые досадные ошибки могут годами доставлять массу неудобств пользователям, а на новых версиях ОС программа и вовсе может отказаться работать. Далеко не всегда имеются исходные коды, чтобы привести программу в порядок. Если программа простая — не составит труда за короткий срок создать альтернативу. Но если программа большая и сложная, что же делать в таком случае? Не всегда рационально тратить время и деньги на разработку полного аналога, ведь расширить в разумных рамках функциональность и исправить большинство ошибок можно уже в готовом исполняемом файле.
В этой статье будут продемонстрированы методики модификации исполняемых файлов на примере расширения функциональности легендарной игры Age of Empires II (стратегия реального времени).
Читать дальше →

Профилирование python приложений

Reading time2 min
Reach and readers16K
Краткая заметка с линками и примерами о профайлинге:
  1. производительности: hotshot или python profile/cProfile + визуализатор логов kcachegrind (есть порт под windows, аналог WinCacheGrind)
  2. использование памяти: dowser с web-интерфейсом

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

Коворкинг «Рабочая Станция» в ЦПКиО им.Горького

Reading time2 min
Reach and readers4.8K
Привет, ребята!

Спешу поделиться хорошей новостью: мы открыли классное место, а именно коворкинг, «Рабочая Cтанция» в Парке Горького. «Рабочая Cтанция» — это далеко не первая наша вариация на тему коворкинга. И, похоже, теперь нам удалось создать то пространство, о котором мы давно мечтали.

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

Учебные расписания онлайн. История по версии стартапа Schoodle

Reading time8 min
Reach and readers13K
Данный пост охватит мой опыт и опыт нашей команды в производстве и продвижении сервиса Schoodle.ru.
Тема учебных расписаний – вполне избита. По автоматизации их составления написано десятки тысяч дипломных работ мирно покоящихся в архивах сотен вузов. Создание универсального инструмента для составления расписаний если и возможно технически, то сделать на этом экономически-успешный проект, по моему мнению практически нереально (согласен с автором поста Программа по составлению расписания занятий в ВУЗе). Но вот решить задачу удобного размещения расписания онлайн с некоторыми дополнительными плюшками (с ориентацией на конечных пользователей школьников и студентов) я посчитал вполне посильной.
Читать дальше →

О сортировке контента на основе оценок пользователей

Reading time4 min
Reach and readers17K
Написать этот пост меня привлекла эта статья. Многие ее помнят по вот этой картинке.
image
Статья затрагивает правильную тему, однако с точки зрения математики и здравого смысла она в корне не верна.
Читать дальше →

7 уроков, полученных при создании Reddit

Reading time7 min
Reach and readers23K
UPD. Оригинальная статья достаточно старая — 2010 года. Сейчас ситуация выглядит по-другому.

В декабре 2010 у Reddit-а было 829М просмотров и 119 серверов.
В конце 2011 года — 2,07B просмотров и 240 серверов.

Спасибо potomushto за актуализацию.

UPD 2. Поправил схему для людей с проблемами цветовосприятия. Спасибо second_pilot и spiritedflow



Стив Хаффман, один из создателей Reddit, рассказал на презентации, чему они научились, пока строили и развивали Reddit до 7,5 млн пользователей в месяц, 270 миллионов просмотров страниц в месяц и более 20 серверов баз данных.


Стив уточнил, что большинство полученных уроков были очевидными, поэтому в презентации не будет радикально новых идей. Но у Стива огромный опыт, и если он не смог увидеть эти грабли, то возможно, вам стоит обратить внимание на эти «очевидные вещи».


Каждый из 7 уроков будет рассмотрен в соответствующей секции.
  • Падайте часто
  • Разделение сервисов
  • Открытая схема данных
  • Избегайте хранения состояний
  • Memcache
  • Сохраняйте избыточные данные
  • Выполняйте максимум работы в фоновом режиме

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

Создание двухсторонней платы (видео)

Reading time1 min
Reach and readers44K
Привет хабр!

Думаю, что технология ЛУТ не является ни для кого секретом. Редкий радиоэлектронный блог обходится без статьи о том, как заутюжить печатную плату. Но тема создания двухсторонних плат почему-то освещается гораздо реже. Хотя они становятся все более востребованы: мы используем микросхемы в мелких и многоногих корпусах, и стараемся уменьшить размеры платы.

Хочу поделиться с вами видео, которое я сделал по ходу производства очередной платы. Оно неплохо демонстрирует один из методов создания двухсторонней платы.


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

USB TV-тюнеры на rtl2832 — или как услышать в радиоэфире все за 600 рублей

Reading time5 min
Reach and readers517K
Давно я собирался купить какой-нибуть универсальный радиоприемник/радиосканер, чтобы полазить по эфиру, послушать о чем говорят ночью матёрые и бородатые радиолюбители…

До недавнего времени, это удовольствие обходилось от 300$ и до бесконечности. Ну а с переходом гос.органов (и России и за бугром) на цифровую (но пока еще не зашифрованную) связь APCO P25 стоимость удовлетворения нездорового любопытства стала ещё выше.

Год назад все изменилось — умельцы выяснили, что многие из продающихся у нас китайских USB TV-тюнеров за 600 рублей — фактически являются универсальным радиоприёмником, на который без каких-либо доработок можно послушать практически все-что угодно в диапазоне 50-900Мгц (если повезет — до 2200Мгц, но там голосом особо ничего не передают): переговоры самолётов с диспетчерами, строителей, такси, жучки в вашей квартире и многое другое.

Под катом я расскажу что и где покупать, как подключить и настраивать, ну и наконец — что можно послушать.
Читать дальше →

Обзор инструментов для визуального сравнения и разрешения конфликтов слияния

Reading time6 min
Reach and readers153K
На хабре уже было много статей о распределенных системах управления версиями (DVCS), их сравнений, а также сравнений GUI-клиентов для них. Также были обсуждения плагинов к IDE для работы с git и mercurial. Но практически не было информации об инструментах визуального сравнения и разрешения конфликтов слияния.

diff and merge
Недавно я «перескочил» с mercurial (который до сих пор считаю более удобным и логичным) на git, потому что, подавляющее большинство проектов, которые мне интересны, используют git и хостятся на github. В связи с этим, встал вопрос о пересмотре арсенала инструментов, в частности вопрос выбора инструмента визуального сравнения и слияния (diff and merge). Дабы восполнить недостаток информации на хабре, я решил написать этот мини-обзор. Как говориться — по горячим следам.

Под катом Вы также найдете примеры настроек Git для использования с DiffMerge и WinMerge под Windows. Думаю многим сэкономит время.
Читать дальше →

Полноценное Python приложение на Android

Reading time4 min
Reach and readers209K


В этой статье я хотел бы рассказать о том, как создать полноценное приложение на Python для Android. Нет, это не очередной мануал для создания скрипта для sl4a, это мануал по созданию полноценного приложения с UI, возможностью собрать apk и выложить на Android Market. Заодно я хотел бы похвалиться своим первым приложением на google.play, это не hello world, а полезное приложение для фотографов, хотя и узко специализированное.
Читать дальше →

Сыграть в ящик

Reading time2 min
Reach and readers2.5K
Конкурсная программа форума Positive Hack Days 2012 была богата не только сражениями хакеров, которые пытались взломать все и вся через Интернет, но и «прикладными» соревнованиями. Одним из таких состязаний стала «Игра в ящик», в ходе которой проверялись знания и навыки конкурсантов в области систем радиочастотной идентификации.

Желающих принять участие в конкурсе оказалось не очень много, однако те, кто все-таки рискнул, — точно не пожалели об этом.
Читать дальше →

Используем быстрое возведение матриц в степень для написания очень быстрого интерпретатора простого языка программирования

Reading time6 min
Reach and readers41K
Недавно на хабре появилась неплохая статья про вычисление N-ного числа фибоначи за O(log N) арифметических операций. Разумный вопрос, всплывший в комментариях, был: «зачем это может пригодиться на практике». Само по себе вычисление N-ого числа фибоначи может и не очень интересно, однако подход с матрицами, использованный в статье, на практике может применяться для гораздо более широкого круга задач.

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

loop 1000000000
  loop 1000000000
    loop 1000000000
      a += 1
      b += a
    end
  end
end
end


Незамедлительно выведет a = 1000000000000000000000000000, b = 500000000000000000000000000500000000000000000000000000, несмотря на то, что если бы программа выполнялась наивно, интерпретатору необходимо было бы выполнить октиллион операций.
Читать дальше →

Information

Rating
Does not participate
Location
Швейцария
Registered
Activity