Search
Write a publication
Pull to refresh
52
0
Akademic @Akademic

User

Send message

Проектирование баз данных. Паттерн Компоновщик (Composite)

Reading time4 min
Views17K
Web 2.0 победоносно шагает по виртуальному миру. Социальные сети растут как грибы после дождя. Теперь в одном месте вы можете хранить свои фото, видеозаписи, писать блоги и слушать музыку. Все это можно комментировать, класть в избранное, копировать… Возможностей много, контент социальных сетей разнородный и разнообразный, и в этом их преимущество.

А теперь представьте себе структуру БД какого нибудь «Вконтакте». Представили? И что вы видите? Множество таблиц с данными? А что еще? Множество таблиц для связей много-ко-многим! Необходимых, с точки зрения реляционной БД, но лишних с точки зрения логики. Но это еще не все. Среди полей таблиц мы видим огромное количество «лишних» полей, являющихся всего лишь внешними ключами, служащими для связей один-ко-много, так же необходимых с точки зрения реляционной теории, но абсолютно бесполезных с точки зрения логики.
Читать дальше →

Intrusion Detection For PHP Applications With PHPIDS

Reading time4 min
Views3.9K
Эта статья покажет как настроить PHPIDS. PHPIDS (PHP-Intrusion Detection System) — это легко используемая, хорошо структурированная, быстрая прослойка для анализа безопасности ваших приложений. IDS — не является прослойкой для анализа данных, введенных пользователем, он только распознает, когда пытаются атаковать ваш сайт. на основе набора проверенных и оттестированных правил каждой атаке сопоставлен рейтинг ее опасности. Это позволит легко сохранять статистику по атакам или отсылать уведомления для команды разработчиков.
Читать дальше →

Внедрение Flash с помощью SWFObject 2

Reading time16 min
Views48K
Вопрос о внедрении Flash с помощью разметки соответствующей стандартам возникает достаточно часто, между тем у этой проблемы есть достаточно известное решение — SWFObject. SWFObject 2 не только позволяет внедрять Flash динамически, с помощью JavaScript, но и статически, когда для внедрения используется стандартная разметка, а JavaScript только исправляет неразрешимые с помощью разметки проблемы, при этом даже если JavaScript отключен пользователи все равно увидят Flash.
Читать дальше →

Автоматическое определение языка произвольного текста на РНР — библиотека PHPLangautodetect

Reading time15 min
Views20K
Знаете, работа с стартапе, который пытается создать что-то новое и уникальное на рынке очень захватывает. И не только открывающимися возможностями, но и часто нетривиальными задачами и вопросами, которые ставятся перед создателями и которые раньше никто не решал. Вот один из таких вопросов как раз вчера появился передо мной: дано нам произвольную строку текста, заведомо известно, что она может быть двух, а в некоторых случаях и трехъязычной, то есть там смешанный текст из нескольких языков. Необходимо прозрачно для пользователя определить язык, на котором написан текст.

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

Звук по сети

Reading time1 min
Views15K
Стоит у меня дома большой комп, используется в основном как телевизор. Кино смотрим на ноутбуке, ибо монитор не сильно больше, а стоит далеко от дивана. Поэтому приходится подключать к ноутбуку либо наушники, либо вторые колонки, либо ползать под стол и вытаскивать из компа шнур. Надоело.

Звуковые серверы в *nix есть давно, arts, esd — классика. Сейчас стандартом заслуженно становиться pulseaudio, в Ubuntu он устанавливается с релиза 8.04, а в Fedora с 8.
Читать дальше →

Расширения для OpenOffice

Reading time2 min
Views12K
Чтобы хоть как-то восполнить пробел по расширениям в OpenOffice, я решил сделать небольшую подборку с кратким описанием. Немного погуглив, я понял, что тема очень актуальна, но освещена очень слабо. Целью данной статьи является не описать все существующие расширения, а всего лишь рассказать, какие они бывают, что они умеют и где их достать.
Читать дальше →

Делаем did you mean, часть вторая

Reading time3 min
Views2.5K

Здравствуйте



Не так давно я писал про правильный did you mean.
Несмотря на все мои улучшения, guess-инг всё равно часто ошибался, и выдавал странные результаты.

Однако недавно, мне удалось значительно улучшить качество guess-инга, и я решил, что было бы неплохо написать «патч» к моей предыдущей статье :)


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

Crop & Resize на страницах ваших сайтов

Reading time3 min
Views32K
Пройдясь по хабра-поиску выяснил, что готового решения для кропа-ресайза изображений, на движке JavaScript/HTML/CSS еще не предлагалось. Поэтому, позвольте представить вашему вниманию модуль для ваших сайтов, частично реализуюший функционал редактирования, распространенный на фото-хостингах.

К делу

Внешне задумка выглядит так:


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

Плагины для лиса в прямом эфире

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

Итак, на повестке дня: Создаем плагины для FireFox быстро и чисто.
Читать дальше →

Пространство имён в Javascript-коде 2

Reading time1 min
Views8.1K
Прочитав заметку об использовании пространств имён в Javascript коде мне захотелось поделиться подходом, который использую я. Он изобретён не мной, конечно, но, возможно кто-то о нём не знает. Этот подход отличается от предложенных в той статье тем, что позволяет кроме функций и данных видимых снаружи, также определять данные и функции локальные для пространства имен и невидимые снаружи.

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

Использование пространств имен для организации JavaScript-кода

Reading time3 min
Views16K
На текущий момент большинство web-приложений состоят из большого числа библиотек, виджетов и сниппетов из многих и многих источников. Следует помнить, что код других разработчиков может взаимодействовать с вашим кодом в случае, если происходит подключение обоих их на одной странице. А если вы оперируете глобальными переменными, то это и вовсе небезопасно.
Читать дальше →

Разница между разметкой и представлением

Reading time4 min
Views1.4K
Прочитав комментарии к заметке Firefox 3: * {display: block } bug, понял что заметная часть читателей Хабра, в том числе серьёзно занимающиеся веб-разработкой, не совсем верно представляют себе что-то же такое HTML, и почему теги отображаются так, а не иначе.

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

Планировщик задач на JavaScript

Reading time10 min
Views8.8K
Всем привет.

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

Jevix: опубликована php-версия 0.9 (beta)

Reading time1 min
Views1.3K


Jevix — средство применения правил набора текстов (типографики), фильтрации тегов и аттрибутов, предотвращения XSS-атак. Jevix предназначен для использования в составе интернет-проектов, публикующих пользовательские материалы, будь то крупная социальная сеть или авторский блог.

Jevix способен полностью взять на себя все возможные проблемы с обработкой пользовательского материала в формате простого текста или HTML.

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

Пакетная обработка изображений в GIMP

Reading time4 min
Views29K
Время от времени возникает необходимость выложить в сеть фотоальбом или пакет отсканированных документов. В большинстве случаев изображения предварительно нужно уменьшить, а иногда и произвести дополнительную обработку, добавить надписи. И вот наступил момент, когда выполнять однотипные операции стало совсем лениво. Вспоминаем про замечательные средства автоматизации в замечательном и бесплатном редакторе GIMP.

Допустим, у нас есть куча фотографий разных размеров, с разным соотношением сторон и сохранённых в разных форматах. В общем, тяжёлый случай. Нам нужно весь этот зоопарк выровнять по размерам, учитывая пропорции, и сохранить в JPEG с заданным качеством. Да, и пусть нам иногда захочется задавать размеры не в пикселях, а процентах. Ну и пусть уже тогда захочется файлы выбирать по маске, типа «C:\images\img_01*.jpg».

Садимся, и калякаем на Script-Fu (доступный по умолчанию в GIMP, язык) свой
первый сценарий

Переменные сессии на яваскрипте без кук

Reading time3 min
Views30K
Мне никогда не нравилась реализация кук в Яваскрипте. Объем ограничен (4х20 Кб на домен), хранить возможно только в строковом типе, синтаксис для установки и получения кук избыточно сложен.

И более того, браузер добавляет куки в заголовок запроса — а так как многие корпоративные файрволы пропускают только заголовки до некоторого размера, то ваши страницы могут вообще не загрузиться (я видел — это ужасно).

Поэтому я написал маленький скрипт, который позволит вам использовать переменные сессии в Яваскрипте без установки кук. Он позволяет хранить до 2 Мб данных, что намного меньше ограничивает в возможностях, чем решение на основе кук.

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

Еще раз о трекбаре

Reading time1 min
Views3.7K
Буквально вчерашний топик об отличных трекбарах заставил меня вспомнить о собственной наработке в этой области. Она отличается от предложенной предыдущим автором как по дизайну, так и по функционалу, так что представляю её на ваш суд.

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

jQuery: datepicker — календарь для выбора дат

Reading time2 min
Views76K
Автор: Gennady

Эту штуку можно часто встретить, когда сталкиваешься с заполнением форм, там где требуется ввести дату или диапазон дат в нужном формате. Пользователь, он же обязательно ошибется и введет дату не в том формате, потом будет соображать, где ошибка, а потом и вовсе уйдет, не заполнив форму… Вот для того, чтобы сделать выбор даты очень простым и удобным и предназначен этот UI jQuery. Календарь, или что точнее datepicker…

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

Хочу еще

Information

Rating
Does not participate
Location
Санкт-Петербург и область, Россия
Registered
Activity