Search
Write a publication
Pull to refresh
19
0
Send message

Еще одна визуализация ряда алгоритмов и структур данных

Reading time1 min
Views20K

Университет Сан-Франциско создал с использованием HTML5 коллекцию визуализаций различных алгоритмов и структур данных. Посмотреть и потыкать кнопки можно вот тут.
Список визуализированных алгоритмов и структур данных со ссылками под катом.
Читать дальше →

Визуализация графов. Метод связывания ребер

Reading time7 min
Views58K
Иногда полезно представить граф в графической форме, так чтобы была видна структура. Можно привести десятки примеров, где это может пригодиться: визуализация иерархии классов и пакетов исходного кода какой-нибудь программы, визуализация социального графа (тот же Twitter или Facebook) или графа цитирования (какие публикации на кого ссылаются) и т.д. Но вот незадача: количество ребер в графе зачастую настолько велико, что нарисованный граф просто невозможно разобрать. Взгляните на эту картинку:



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

Команда dd и все, что с ней связано

Reading time4 min
Views650K

В UNIX системах есть одна очень древняя команда, которая называется dd. Она предназначена для того, чтобы что-то куда-то копировать побайтово. На первый взгляд — ничего выдающегося, но если рассмотреть все возможности этого универсального инструмента, то можно выполнять довольно сложные операции без привлечения дополнительного ПО, например: выполнять резервную копию MBR, создавать дампы данных с различных накопителей, зеркалировать носители информации, восстанавливать из резервной копии данные на носители и многое другое, а, при совмещении возможностей dd и поддержке криптографических алгоритмов ядра Linux, можно даже создавать зашифрованные файлы, содержащие в себе целую файловую систему.
Опять же, в заметке я опишу самые часто используемые примеры использования команды, которые очень облегчают работу в UNIX системах.
Читать дальше →

Подсчёт объектов на изображении

Reading time2 min
Views14K
Сегодня я расскажу о двух алгоритмах подсчёта количества объектов на изображении. Этот топик предназначен в первую очередь для тех, кто только начинает заниматься обработкой изображений. Для профессионалов ничего нового я не скажу.
Читать дальше →

Анонимный браузер своими руками или Hide your ass yourself

Reading time4 min
Views14K
Вступление

Этот небольшой топик расскажет о том, как просто и быстро сделать свой браузер, с небольшими добавками, которые помогут нам остаться анонимным в сети. Всю черную работу за нас сделает Qt, а именно его модуль QtWebKit. Мы лишь добавим в нужные места строки, подменяющие http-заголовки наших http- запросов. Это позволит оставаться анонимными при пассивном анализе http-запросов. Также переопределим navigator, что позволить оставаться анонимными для javascript-ов при активной идентификации. Для определенности обозначим основные параметры, с помощью которых нас можно идентифицировать в сети – вот именно их мы и будем подменять. Первое – это конечно IP адрес, тут все просто – используем прокси. Второе – любые заголовки http-запроса (user-agent будет наиболее интересен: его значение нужно подменять как в заголовках http-запросов, так и в проверке javascript-ами). Также реализуем возможность редактировать и подставлять свои сookies для определенных сайтов, раз уж есть такая возможность. И дополним все это встроенным редактором для подменяемых параметров с возможностью их сохранения для последующего использования.
Читать дальше →

Разработка настольной игры на примере Starcraft

Reading time6 min
Views58K
Самая знаковая в IT-среде настольная игра — это, скорее всего, Старкрафт.

Когда компьютерная версия набрала достаточную популярность, ребята из Близзарда поделились правами на марку с известным американским издателем Fantasy Flight Games. В топике — обзор факторов, которые привели к успеху настольной версии.



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

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

Документация по API платежных систем

Reading time1 min
Views7.3K
За прошедший год в рамках проектов довелось поработать с рядом отечественных платежных системам. После чего, помимо опыта, осталось немного документации, которой и хочу поделиться. Возможно, кому-то пригодится в будущем.
Читать дальше →

Создание зеркала репозитория Ubuntu с помощью apt-mirror

Reading time6 min
Views43K
Зачастую при развёртывании сети машин на Ubuntu возникает проблема с организацией доступа в интернет с целью установки новых программ из стандартных репозиториев. Например, когда доступен лишь очень узкий канал в интернет или траффик не является безлимитным. К счастью, принцип организации пакетной системы Ubuntu позволяет очень гибко управлять тем, что и откуда качать с использованием штатных средств управления пакетами. В частности, вы можете создать локальную копию нужных вам интернет-репозиториев Ubuntu и подключить её как основной источник приложений в вашу локальную сеть. Таким образом все компьютеры в вашей сети не будут требовать соединения с интернетом для установки новых программ и обновлений. И при этом, что самое важное, сохранится весь функционал пакетных менеджеров.

В этой статье я расскажу как создать локальную копию репозитория с помощью утилиты apt-mirror. Это простая и удобная утилита для создания локальных копий репозиториев Ubuntu, использующая такой же синтаксис, как и в файле /etc/apt/sources.list, в котором указываются все репозитории для Ubuntu.

Всё, что вам потребуется — это компьютер с установленной Ubuntu и безлимитным доступом к интернету.

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

Видео с HighLoad++: Петр Зайцев — Диагностика и исправление проблем производительности MySQL

Reading time1 min
Views9.4K
Добрый день,

Вот и последний обещанный видеодоклад с HighLoad:

Петр Зайцев — Диагностика и исправление проблем производительности MySQL

Часть 1 (30:56): video.mail.ru/corp/miftahetdinova/5/6.html

Часть 2 (28:35): video.mail.ru/corp/miftahetdinova/5/7.html

Часть 3 (28:33): video.mail.ru/corp/miftahetdinova/5/8.html

Часть 4 (28:29): video.mail.ru/corp/miftahetdinova/5/9.html

Часть 5 (28:13): video.mail.ru/corp/miftahetdinova/5/10.html

Часть 6 (28:10): video.mail.ru/corp/miftahetdinova/5/11.html

Часть 7 (28:13): video.mail.ru/corp/miftahetdinova/5/12.html

Часть 8 (22:50): video.mail.ru/corp/miftahetdinova/5/13.html

Часть 9 (16:01): video.mail.ru/corp/miftahetdinova/5/14.html

Часть 10 (15:02): video.mail.ru/corp/miftahetdinova/5/15.html

Также мы постараемся до конца года выложить доклады с HighLoad++ в Power Point.

Хорошего вам дня!

UPD. Уважаемые хабраюзеры! Мы хотим еще раз извиниться за невысокое качество видео, которое, тем не менее, решили выложить, т.к. знали, что темы HighLoad-a для вас крайне важны и интересны и наряду с негативным фидбеком получили очень много позитива, благодарностей и просьб продолжать выкладку докладов.

Завтра, 29 декабря, как мы уже обещали, на «Хабре» также будут выложены презентации всех докладов в PPT. В хорошем качестве ;)

Спасибо за терпение и фидбек!

История создания одной социальной флэш-игры

Reading time8 min
Views2.5K
В этой статье я хочу поделиться историей создания нашей флэш-игры для соц. сетей. Сразу обращу внимание, что у нас не было ни опыта, ни вообще каких-либо знаний, что, как и где.

Так что все пришлось пробовать на своем опыте. До этого был только опыт создания различных сайтов — от простых, до довольно сложных (базы знаний по играм — см. раздел «ссылки»), т.е. по сути, опыт ограничивался HTML/PHP/MySQL. Но мы из тех людей, которые не боятся нового.

Я расскажу о создании, затратах, подводных камнях и профите.

Но обо всем по порядку…
Читать дальше →

Новые старые эффекты от Compiz — встречайте!

Reading time2 min
Views12K
Не знаю, как вы, но я люблю, чтобы мою любимый десктоп был немного украшен. Посему данные нововведения Compiz'а не могут не радовать. Собственно, о них и пойдет речь
под катом

Развитие валидации форм

Reading time9 min
Views22K

Валидация форм была педантичным занятием с момента появления web. Первой пришла серверная валидация. Затем она развилась в валидацию на стороне клиента для проверки результатов в браузере. Теперь у нас есть такие гиганты как HTML5 и CSS3: глава о формах HTML5 предлагает нам новые типы для input полей и атрибуты, которые делают возможным проверку ограничений поля. Базовый UI модуль CSS3 предоставляет несколько псевдо-классов, которые помогают нам стилизовать состояние валидности и менять внешний вид поля в зависимости от действий пользователя. Давайте взглянем на комбинацию обоих для создания валидатора форм основанного на CSS, который имеет достаточно широкую поддержку браузеров.

Чем больше мы можем дать подсказок пользователю, как правильно заполнять форму, в процессе заполнения, тем меньше шансов, что он сделает ошибку. Взгляните на пример CSS3 валидации форм в браузере поддерживающем CSS3 UI псевдо-классы, например Chrome 4+, Safari 5+ или Opera 9.6+. Я использовал CSS3 UI псевдо-классы и HTML5 атрибуты форм для создания валидации основанной на CSS. Давайте посмотрим как это работает.
Читать дальше →

extsrc.js — загружаем все скрипты асинхронно и уже после отрисовки страницы (даже с document.write)

Reading time4 min
Views21K
Хочу Вам рассказать о штуке, которую я изобрел сегодня, чтобы ускорить процесс загрузки сайтов. Все вы знаете, что <script src="..."></script> задерживает отрисовку страницы, пока не загрузится этот скрипт. Если их десятки — это может сереьезно замедлить работу сайта — в результате пользователь 20 секунд пялится на пустую (или недорисованную) страницу из-за какого-нибудь тупящего социального виджета (умножить на десяток этих виджетов).

Не правда ли было бы круто, если бы можно было сказать <script extsrc="..."></script> ("extsrc" = "грузи потом"), чтобы скрипты загружались после того как страница отрисована?

Все бы хорошо, но есть document.write… Сегодня я наконец решил его проблему — представляю extsrc.js — скрипт, который запустит все скрипты после отрисовки страницы (даже если они содержат document.write — и правильно отрисуется все).

Результат? Супер-быстрая загрузка страниц, даже если там море всяких внешних скриптов.

Использование:

Заменяем <script src="..."> на <script extsrc="...">.

Итого получается:

<script src="http://whiteposts.com/extsrc_js/extsrc.js"></script>
<script extsrc="..."></script>

все остальное под катом

Расшарьте свой локальный веб-сервер в Интернете с помощью localtunnel

Reading time1 min
Views17K
Иногда во время тестирования веб-приложений может понадобится доступ к ним снаружи (то есть из публичного Интернета). Например некоторые API используют коллбеки.

В таком случае можно создать обратный SSH-туннель чтоб расшарить свой локальный сервер. Но для этого нужен доступ к публично доступной машине с SSH и нужными портами открытыми на фаерволе.

Но не всегда найдется такая машина, и влом покупать VPS или что-то в этом роде. В таком случае localtunnel — как раз то что надо.

localtunnel — инструмент специально предназначеный для того чтоб временно расшарить локальный веб-сервер в Интернете. Он работает как клиент к публичному сервису обратного туннелирования с открытыми исходниками.

Использовать его очень просто:

localtunnel 8080

Эта команда сделает локальный сервис на порту 8080 доступным на порту 80 на домене который выведет утилита.

Конечно перед использованием все-таки надо устанавить и настроить программу.
Установка для всех пользователей:

sudo gem install localtunnel

После этого при первом запуске нужно указать свой публичный ключ для аутентификации:

localtunnel -k ~/.ssh/id_rsa.pub 8080

Если у вас нет готовых ключей для SSH, их можно сгенерировать такой командой:

ssh-keygen -t rsa

Больше информации (на английском) и исходники – на Гитхабе.

UPD: Вышенаписанное справедливо для Unix-систем. В Windows наверное может работать через Cygwin.

Еще несколько полезных плагинов

Reading time2 min
Views1.8K
За последний месяц, я написал уже два поста с обзорами плагинов jQuery (1 и 2). Надо сказать, что подобные статьи на английском языке появляются все чаще и чаще. Однако их содержание довольно быстро приедается. Галереи картинок, слайдеры, опять галереи картинок, многочисленные динамические меню и опять слайдеры. Мне не хочется описывать очередную порцию подобных плагинов. Поэтому сегодня я расскажу не о двадцати-тридцати как обычно, а только о семи важных на мой взгляд плагинах, о которых очень хотелось рассказать. Лучше меньше, да лучше.
Читать дальше →

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

Reading time2 min
Views11K
С каждым днем количество веб-сайтов и сервисов под мобильные платформы становится все больше и больше. Я уже как то писал про эмуляторы, а сейчас хочу представить несколько полезных инструментов, начиная от самых простых, показывающих как будет сайт выглядеть на том или ином устройстве, заканчивая различными оптимизаторами контента.
Читать дальше →

Пишем свою ОС: Выпуск 1

Reading time6 min
Views280K
Данный цикл статей посвящён низкоуровневому программированию, то есть архитектуре компьютера, устройству операционных систем, программированию на языке ассемблера и смежным областям. Пока что написанием занимаются два хабраюзера — iley и pehat. Для многих старшеклассников, студентов, да и профессиональных программистов эти темы оказываются весьма сложными при обучении. Существует много литературы и курсов, посвящённых низкоуровневому программированию, но по ним сложно составить полную и всеохватывающую картину. Сложно, прочитав одну-две книги по ассемблеру и операционным системам, хотя бы в общих чертах представить, как же на самом деле работает эта сложная система из железа, кремния и множества программ — компьютер.

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

Правильная обработка ошибок в PHP

Reading time7 min
Views33K

Что я понимаю под правильной обработкой:


  • Универсальное решение, которое можно вставить в любой существующий код;
  • Легко расширяемое решение;
  • В PHP аж три «механизма ошибок»: собственно ошибки (error), исключения (exception) и утверждения (assertion). Свести три механизма к одному — exception. В комментариях к предыдущей статье на эту тему выражалось мнение, что exception это плохой и/или сложный метод обработки ошибок. Я так не считаю и готов это обсудить в комментариях;
  • Опциональное логирование;
  • Общий обработчик exception, который будет поддерживать разные форматы вывода и debug/production режимы;
  • В debug режиме должен выводится trace. Требования к trace: компактный, понятный и по возможности ссылки на открытие файлов в IDE.

Теперь по порядку

Учебник по языку программирования Python (хабраиндекс)

Reading time1 min
Views314K

Серия статей «Основы Python»


I, Начало
II, Строки
III, Списки, кортежи, файлы
IV, Генераторы списков
V, Определение функций, основы
VI, Расширенное определение функций

Об основах языка Python в сжатой форме

Продвинутый уровень


Сила и красота декораторов Короткий экскурс в метапрограммирование.
Итерируем все и вся Специфика циклов в Питоне.
Как я учился работать с XML
Консервация объектов в Python Использование модуля Pickle.
Memoization в Python Оптимизация работы программ.
Простейшее рисование с помощью PIL
Regexp и Python: извлечение токенов из текста
Как писать маленькие приложения на python с графическим интерфейсом (библиотека Qt).

http://netsago.org/ru/docs/1/12/
Одеваем скрипты Python с помощью EasyGui (добавляем простой диалоговый интерфейс)

http://djbook.ru/
Учебник по Django (Python-фреймворк для веб-приложений)

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

Компиляция. 2: грамматики

Reading time11 min
Views42K
В предыдущем посте было много кода и, по некоторым мнениям, недостаточно объяснений. Будем чередовать: в этот раз будет много теории, а до практики почти не дойдёт.

Далее в посте:

  1. Магазинный автомат
  2. Формальные грамматики
  3. LR-парсинг
Читать дальше →

Information

Rating
Does not participate
Date of birth
Registered
Activity