Pull to refresh
0
0
Send message

Алгоритм Дейкстры. Поиск оптимальных маршрутов на графе

Reading time3 min
Views434K
Из многих алгоритмов поиска кратчайших маршрутов на графе, на Хабре я нашел только описание алгоритма Флойда-Уоршалла. Этот алгоритм находит кратчайшие пути между всеми вершинами графа и их длину. В этой статье я опишу принцип работы алгоритма Дейкстры, который находит оптимальные маршруты и их длину между одной конкретной вершиной (источником) и всеми остальными вершинами графа. Недостаток данного алгоритма в том, что он будет некорректно работать если граф имеет дуги отрицательного веса.

Для примера возьмем такой ориентированный граф G:

image

Читать дальше →
Total votes 91: ↑62 and ↓29+33
Comments31

Кастомные события JavaScript

Reading time2 min
Views68K
Перевод статьи «JavaScript CustomEvent», David Walsh

С самого появления JavaScript, события были шлюзом ко взаимодействию пользователя в браузере. События сообщают нам не только о том, что происходит взаимодействие, но также вид взаимодействия, задействованные элементы и предоставляют методы для работы с событием. Создание и инициирование(triggering) кастомных событий всегда являлось более сложной задачей. С использованием JavaScript CustomEvent API, эта сложность может быть устранена. CustomEvent API позволяет разработчикам не только создавать кастомные события, но также инициировать их на элементах DOM, передавая данные по цепочке. Самое главное, что API максимально прост!
Читать дальше →
Total votes 37: ↑30 and ↓7+23
Comments17

wysiwyg своими руками

Reading time3 min
Views24K
Существует куча платных\бесплатных визуальных редакторов на любой вкус и цвет. Но что, если они работают не во всех браузерах, Вас не устраивает дизайн или функциональность, или просто душа лежит к написанию своего собственного? Ответ на вопрос, как это сделать —
Читать дальше →
Total votes 70: ↑61 and ↓9+52
Comments47

Application Cache API — новые возможности и проблемы

Reading time15 min
Views44K
Голая баба. ШуткаПостепенно концепция стандарта HTML5 становиться реальностью. Браузеры начинают поддерживать новые возможности, которых так не хватало. Но с новыми возможностями появляются и новые проблемы.
В данной статье рассматривается Application Cache API — совокупность функций, обеспечивающих продвинутое кэширование ресурсов web-приложения, и с помощью которых можно просматривать загруженные ранее сайты без подключения к сети Интернет. Особое внимание я уделил практическому использованию и проблемам Application Cache.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments23

Подборка уроков для начинающего разработчика игр на JavaScript

Reading time1 min
Views29K
В этой подборке уроков рассматриваются основы создания игр на JavaScript, изучив которые вы научитесь:
— Работать с позицией курсора мыши
— Вращать объекты внутри CANVAS элемента
— Выделять объекты мышью внутри CANVAS
— Перетаскивать объекты внутри CANVAS
— Создавать эмуляцию гравитации для объектов внутри CANVAS
— Определять скорость мыши
— Использовать мультиязычность в своих игровых проектах.
Все уроки полностью на русском языке и выполнены в наглядной форме.
image
Читать дальше →
Total votes 20: ↑11 and ↓9+2
Comments16

Удобное приложение для реализации субдоменов в Django — django-hosts

Reading time1 min
Views7.5K
django-hosts — полезное приложение от замечательного Jannis Leidel, который входит в состав Django core-developers и курирует большое количество Django-проектов.
Документацию можно найти на readthedocs.
Пример установки:
  • Устанавливаем: pip install django-hosts
  • Добавляем 'django_hosts' в INSTALLED_APPS
  • Добавляем 'django_hosts.middleware.HostsMiddleware' в MIDDLEWARE_CLASSES
  • В директории проекта создаем файлик назовем его например hosts.py
  • Примерное содержание hosts.py:
    from django_hosts import patterns, host
    host_patterns = patterns('path.to',
        host(r'api', 'api.urls', name='api'),
        host(r'news', 'news.urls', name='news'),
        host(r'forum', 'forum.urls', name='forum'),
    )

    В соотвтетствии с файлом hosts.py у нас появятся 3 хоста: api.site.com, news.site.com, forum.site.com.
  • В settings.py добавляем: ROOT_HOSTCONF = 'projectname.hosts'

Не забываем про настройку wildcard субдомена (Хотя не обязательно wildcard — достаточно прописать необходимые. Ну а как все это сделать думаю все знают).
Читать дальше →
Total votes 61: ↑56 and ↓5+51
Comments19

Видео-курс по JavaScript на русском языке

Reading time1 min
Views218K
Здравствуй, Хабр!

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



Первая лекция: Введение в JavaScript, немного истории, числа (тут есть ошибка: функция toFixed округляет значения).



Остальное – под катом.
Читать дальше →
Total votes 135: ↑127 and ↓8+119
Comments23

Рецепты Django. Part 1 — AJAX формы

Reading time3 min
Views59K
Здравствуй, хабраюзер!

Возможно, у меня уже начался кризис среднего возраста, но летом я начал работу над крупным Open Source проектом. Впрочем, о нём немного позже, когда за код не будет стыдно. Итак, хочу поделиться рядом сниппетов, которые мне приходилось писать, чтобы соответсовать концепции DRYDon't Repeat Youself. Посему собираюсь написать несколько статей.
Кстати, можете обратить внимание на предыдущую мою статью.

Начну с реализации AJAX.


Сразу хочу оговориться — не так давно я нашёл на сайте джанги пример для реализации ajax формы. Как выяснилось, я сделал практически то же самое, однако я это сделал сам и я доволен=) Ниже я приведу свой пример и разберу его.
image

Прошу под кат.
Отследить полёт мысли
Total votes 25: ↑17 and ↓8+9
Comments8

Несколько полезных полей Django

Reading time4 min
Views23K
Я работаю штатным программистом в Санкт-Петербургском Государственном Экономическом Университете и моей задачей с недавних пор является сопровождение деятельности отдела фото-видео производства (начинающее университетское телевидение). Как только начальник управления попросил всех зарегистрироваться в Bitrix24 с целью автоматизировать отчёты, я подумал об автоматизации входящих задач (на самом деле всё немного глубже и целью была дисциплина, но к посту не относится).

Собственно, первом делом я взялся за форму заявки на фото-видео съёмку, которую, недолго думая, набросал в Django. К этому моменту мои познания фрэймворка ограничивались несколькими представлениями для вывода списков на внутреннем сервере отдела. Основной сложность в форме стали внезапно поля — хотелось одновременно и красоту навести и от ошибок ввода пользователя уберечь(ся). Особенно интересовали меня два поля — поле ввода телефона и выбора времени. О них и речь.

Начну с поля для ввода телефона. Сначала я обратился к Хабру и нашёл некий пост, однако увиденное показалось мне слишком громоздким для моей цели (ведь мне надо было просто передать телефон оператору). Я понял, что использование CharField не приведёт ни к одной из моих целей и, пошуршав документацией Django, я нашёл там MultiValueField и MultiWidget в дополнение (сразу хочу сказать, что использование только MultiValueField порождает обычную строку для ввода текста, что никакого смысла не имеет). Через несколько минут был написан код под катом.

Читать дальше →
Total votes 22: ↑18 and ↓4+14
Comments15

Web Scraping с помощью python

Reading time7 min
Views568K

Введение


Недавно заглянув на КиноПоиск, я обнаружила, что за долгие годы успела оставить более 1000 оценок и подумала, что было бы интересно поисследовать эти данные подробнее: менялись ли мои вкусы в кино с течением времени? есть ли годовая/недельная сезонность в активности? коррелируют ли мои оценки с рейтингом КиноПоиска, IMDb или кинокритиков?
Но прежде чем анализировать и строить красивые графики, нужно получить данные. К сожалению, многие сервисы (и КиноПоиск не исключение) не имеют публичного API, так что, приходится засучить рукава и парсить html-страницы. Именно о том, как скачать и распарсить web-cайт, я и хочу рассказать в этой статье.
В первую очередь статья предназначена для тех, кто всегда хотел разобраться с Web Scrapping, но не доходили руки или не знал с чего начать.

Off-topic: к слову, Новый Кинопоиск под капотом использует запросы, которые возвращают данные об оценках в виде JSON, так что, задача могла быть решена и другим путем.
Читать дальше →
Total votes 40: ↑31 and ↓9+22
Comments48

Конкурс CityF: битва между хакерами и безопасниками

Reading time1 min
Views8.7K


Через два месяца состоится шестой форум Positive Hack Days. Уже во всю идет подготовка к мероприятию: объявлена первая группа докладчиков и близится к концу вторая волна Call For Papers, стартовал прием заявок на Young School и конкурс киберпанковских рассказов «Взломанное будущее». Теперь мы рады сообщить, что опубликованы правила соревнования PHDays VI СityF: Противостояние.
Читать дальше →
Total votes 12: ↑8 and ↓4+4
Comments0

Обходим антивирус при помощи десяти строк кода

Reading time2 min
Views65K
Специалист по информационной безопасности под ником evasiv3 опубликовал на прошлой неделе запись в своем блоге, в которой рассказывается о том, как можно обойти любой антивирус при помощи десяти строк кода.

Изначально Evasiv3 планировал написать огромный пост о способах обхода антивирусной защиты, однако, протестировав первый шаг своего «руководства» он был очень удивлен: ни один из 56 протестированных продуктов, призванных обеспечить безопасность пользователя в сети, не обнаружил его бинарник.

image
После получения подобного результата я решил отказаться от своей идеи долгого и изматывающего обхода антивирусной защиты и действовать быстро, «грязно», но при этом невероятно просто.

Читать дальше →
Total votes 72: ↑43 and ↓29+14
Comments44

Asterisk и информация о входящих звонках в браузере через Notifications

Reading time6 min
Views22K
В нашей компании используется телефон 8800, для того, чтобы клиенты могли сделать заказ без доступа к сайту. Для обслуживания большинства входящих звонков используется call-центр, а также при необходимости происходит перенаправление на внутреннего сотрудника.

Для удобства сотрудников и возможности персонализированного ответа была внедрена система распознавания входящего звонка по внутренней базе клиентов.
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments21

Как создать анимацию и переходы с помощью Motion UI

Reading time3 min
Views28K
Анимация и переходы позволяют разработчикам визуализировать изменения и модернизировать контент. Динамичный дизайн улучшает веб-сайты, а также делает их более привлекательными и понятными для восприятия.

Можно самостоятельно анимировать различные элементы страницы или же воспользоваться Motion UI. Это библиотека для создания плавных переходов и анимаций на Sass, вышедшая из семейства Foundation.



Читать дальше →
Total votes 17: ↑12 and ↓5+7
Comments7

Игра гомоку (крестики-нолики, 5 в ряд)

Reading time4 min
Views79K
image
Читая публикации на Хабре нашел пару статей об алгоритмах игры гомоку: эту и эту. В первой статье разобраны различные варианты решения задачи, но нет реализации в виде игры, во второй — игра есть, но компьютер «играет» слабовато. Я решил сделать свой вариант игры гомоку с блэкджеком достаточно сильной игрой компьютера. Публикация о том, что в итоге получилось. Для тех, кто любит сразу в бой — сама игра.
Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments19

jQuery для JavaScript-программистов

Reading time12 min
Views70K
Примечание: ниже расположен перевод статьи «jQuery for JavaScript programmers», в которой автор высказывает свое мнение об этой библиотеке, ориентируясь, в первую очередь, на продвинутых программистов, и приводит несколько десятков примеров ее использования.

Когда jQuery увидела свет в январе 2006, я подумал: «очередная красивая игрушка». Выбор CSS-селекторов в качестве базиса было, конечно, изящной идеей (подробнее о ней в моей заметке getElementsBySelector), но использование цепочек преобразований выглядело немного замысловато, и сама библиотека, по-видимому, не покрывала всех возможных случаев. Я расценивал тогда jQuery только как временное и проходящее решение.

Только несколько месяцев спустя понял я, насколько же ошибался по отношению к ней. jQuery является просто произведением инженерного искусства. Она умело покрывает достаточно широкой диапазон повседневных функций и предоставляет при этом удобный API для расширений, с помощью которых можно добавить любую другую функциональность. Абстрактность в ней заложена на уровне ядра — речь идет о выборе DOM-элементов — и она извлекает из него максимум пользы. И что важнее всего, использование этой библиотеки подразумевает следование хорошему стилю в программировании и хорошо сочетается с другими частями JavaScript-кода.

Большинство современных обзоров jQuery делают упор на дизайнеров и неопытных разработчиков. Я попытаюсь объяснить, почему она также нужна и опытным программистам.

Читать дальше →
Total votes 47: ↑46 and ↓1+45
Comments121

Браузерный интерпретатор Python

Reading time1 min
Views34K
image

На сайте people.csail.mit.edu появился интерпретатор языка Python. Также там есть несколько примеров. Отладку программы можно производить пошагово.
Правда, существуют некоторые ограничения: там нет модуля импорта или ввода/вывода файлов. Поэтому понадобится это, в основном, для показательных и учебных целей.
Всё это базируется на версии языка Python 2.5
Total votes 50: ↑42 and ↓8+34
Comments43

Руководство по проектированию реляционных баз данных (7-9 часть из 15) [перевод]

Reading time6 min
Views523K
Продолжение.
Предыдущие части: 1-3, 4-6

7. Связь один-ко-многим.


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

Другой пример связи один-ко-многим – это связь, которая существует между матерью и ее детьми. Мать может иметь множество детей, но каждый ребенок может иметь только одну мать.

(Технически лучше говорить о женщине и ее детях вместо матери и ее детях потому, что, в контексте связи один-ко-многим, мать может иметь 0, 1 или множество потомков, но мать с 0 детей не может считаться матерью. Но давайте закроем на это глаза, хорошо?)

Когда одна запись в таблице А может быть связана с 0, 1 или множеством записей в таблице B, вы имеете дело со связью один-ко-многим. В реляционной модели данных связь один-ко-многим использует две таблицы.

image
Схематическое представление связи один-ко-многим. Запись в таблице А имеет 0, 1 или множество ассоциированных ей записей в таблице B.
Читать дальше →
Total votes 15: ↑11 and ↓4+7
Comments27
1

Information

Rating
Does not participate
Registered
Activity