Search
Write a publication
Pull to refresh
16
0
Антон Кузьмин @not_ice

User

Send message

Иерархические структуры данных и Doctrine

Reading time15 min
Views83K

Введение



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

В первую очередь, это связано с тем, что реляционные базы не приспособлены к хранению иерархических структур (как, например, XML-файлы), структура реляционных таблиц представляет из себя простые списки. Иерархические же данные имеют связь «родитель-наследники», которая не реализована в реляционной структуре.

Тем не менее, задача «хранить деревья в базе данных» рано или поздно возникает перед любым разработчиком.

Ниже мы подробно рассмотрим, какие существуют подходы в организации хранения деревьев в реляционных БД, а также рассмотрим инструментарий, который нам предоставляет ORM Doctrine для работы с такими структурами.
Читать дальше →

Полный перевод Web Standards Curriculum

Reading time1 min
Views872
image

Как правило, реализация любой идеи начинается с обсуждения планов, графиков и прочих неотъемлемых компонентов серьёзного проекта. Впрочем, бывает и так, что люди без лишних разговоров просто делают то, что считают полезным, тем самым преподнося сюрприз окружающим. Один из примеров тому — практически полный перевод на русский язык цикла статей, входящих в курс Web Standards Curriculum, являющийся частью образовательного проекта Opera. Посему приглашаю всех заинтересованных в данных статьях, но не обладающих хорошими навыками владения английским языком, ознакомиться с русскоязычным вариантом. Уверен, что вы найдёте массу полезной информации, пригодной для использования в своих разработках и проектах.

Читать Web Standards Curriculum на русском
Читать дальше →

CMS для фотографов

Reading time1 min
Views1.4K
Этот топик меня попросил опубликовать Anykeys, у него недостаточно кармы.

Доброго времени суток.

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

Через некоторое время после того, как я начал фотографировать, мою голову посетила идея выкладывать фотографии либо с помощью какой-нибудь CMS у себя на площадке, либо на каком-нибудь раскрученном сайте.

Единственная CMS, которая понравилась и удовлетворяла многим требованиям — PixelPost (pixelpost.org), но я хотел другую структуру просмотра фотографий.

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

Трое суток без сна — и готово то, чего я и хотел. Админка проста до безобразия, конечно. Есть форма добавления и редактирования альбомов и форма загрузки/редактирования фото и превью. Скриншот CMS.

В остальном — чистый HTML-шаблон и CSS.

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

Издержки больших проектов или взгляд на программирование в команде изнутри

Reading time1 min
Views3.9K
Ни для кого не секрет, что разработка больших программных продуктов требует не только эффективного руководства, но и эффективных процессов, которым следуют все разработчики. На примере своей компании я постараюсь описать жизненный цикл проекта и цену его разработки и поддержки. Те, кто работает в небольших командах из нескольких человек, смогут сравнить и представить, что их ждет при увеличении штата или же чего они избежали, если расширяться не планируют. А в комментариях можно покритиковать, указать на ошибки и предложить альтернативы.

Итак, собственно, к делу.

Мы занимаемся системами электронной биржевой торговли, аналитикой рынка и поставкой маркет-данных в реальном времени. К таким системам предъявляются повышенные требования по надежности — каждая ошибка может привести к потере больших денег.
Читать дальше →

Верстка скругленных границ и острых углов

Reading time4 min
Views21K
Сложность элементов интерфейса увеличивается с каждым новым макетом, что доставляет немало хлопот верстальщикам. Развивающиеся технологии позволяют создавать в WEBе сложные приложения (Google не даст мне соврать), поэтому дизайнеры себя не сдерживают и рисуют всё более навороченные вещи. Как правило, это приводит к большому количеству графики на страницах.

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

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

Узнаем оператора и регион мобильного телефона

Reading time4 min
Views16K
image
Как то гуляя в интернете наткнулся на интересную ссылку — Коды мобильных операторов. И очень мне захотелось иметь такую базу локально.
Под катом дамп mysql базы, php код для её использования и скрипт парсер для обновления.
Читать дальше →

Манипуляции с аудио, как с MIDI

Reading time2 min
Views6.8K
На Хабре проскакивали упоминания про новые интересные возможности обработки фото или видео, но тоже самое происходит и в аудио-среде. Не заметили, что наши «звезды» в последние годы стали лучше попадать в ноты? :)

Суть технологии: даже многоголосое аудио уже можно редактировать как MIDI — изменять высоту, длительность, время начала, громкость. Смотрите видео.



В чем прелесть и как этим воспользоваться?

Оценка эффективности рекламы, и не только — корреляционная статистика

Reading time3 min
Views3.4K
А это - наскоро сготовленный логотип, 7.22 КБКорреляция, это —
1. Соотношение, взаимная зависимость сопоставляемых понятий (филос.).
2. Взаимная связь явлений, находящихся в известной зависимости друг от друга.
Толковый словарь русского языка Ушакова

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

Долой барьер языковой – 3. Неожиданные результаты!

Reading time4 min
Views623
Для тех, кто не понял почему в названии поста указано часть 3, вот ссылки на 2 предыдущих части: первая и вторая.

А в этом посте я расскажу о результатах переписки с бюро переводов, о том к чему привела публикация идеи на Хабре и о том, что же дальше делать.

Во-первых


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

Одна контора сразу ответила:
самое интересное, как всегда далее...

Методичка по работе с клиентами. Для начинающих менеджеров веб-студий

Reading time6 min
Views25K
(2008 год, письмо старшего менеджера веб-студии — младшему)
( профи вряд ли найдут что-то новое, молодым будет интересно)
Привет. Вот краткая инструкция, основанная на личном опыте. Так сказать, курс молодого бойца.
наша задача — заработать как можно больше денег, при минимальных телодвижениях.

Итак, получили письмо от клиента


обычно есть следующие варианты
  1. клиент явно перспективный и обратился «выборочно» именно к нам — есть большая вероятность, что переговоры будут удачными — тогда лучше сразу набивать стрелку и устанавливать личный контакт и все выяснять на месте. Хотя, границы бюджета лучше выяснить в любом случае.
  2. клиент интересный, но многое неясно из его письма ( нет ТЗ, нет бюджета, он написал в несколько студий, сайт потенциально сложный, сайт неинтересный и тд. ). Тут важно прислать ему БРИФ на заполнение, выяснить сроки и бюджет. Согласовать бюджет сроки — уже потом встречаться в случае, если все устраивает.
  3. Письмо подозрительно короткое и не «пахнет интересом». Например, «нужен обувной интернет-магазин, сколько стоит? Как быстро сделаете? Виталий» — тут вряд-ли чтото выгорит + вероятно это пробивон по ценам от конкурентов.
    В этом случае — цену говорим в полтора раза дето дороже, интересуемся «укладываемся ли мы в их бюджет» в положительном случае — можно встречаться. Иначе — скорее всего трата времени.

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

Автоматизируем клиентскую оптимизацию

Reading time12 min
Views5.5K

Предыстория

Как известно, перед тем, как выложить сайт в нет, мы его разрабатываем. И делаем мы это, как ни странно, на машине разработчика. И давно замечено, что javascript, а в некоторых случаях и css удобнее при разработке держать в нескольких файлах.Проблема в том, что, согласно принципам, описанным в статье Best Practices for Speeding Up Your Web Site (перевод доступен на сайте webo.in), для ускорения загрузки сайта нам нужно произвести следующие манипуляции над javascript и css файлами:
  1. Слить весь javascript в один файл, причем, желательно так, чтобы сохранился нужный порядок — т.е., скажем, библиотека jQuery — была ближе к началу, а функции и объекты, которые ее используют — после нее.
  2. Слить весь css в один файл
  3. Сжать эти большие файлы с помощью какой-нибудь утилиты вроде yui-compressor (за исключением css-файлов, название которых начинается, скажем, с префикса ie_, которые содержат data:URL, и поэтому критично относятся к переходам со строки на строку, так что их для собственного спокойствия лучше не сжимать)
  4. Расположить их в таком порядке — css-файл как можно ближе к открывающему тэгу head, а js-файл — как можно ближе к закрывающему тэгу body.
  5. Выставить HTTP-заголовок expires на подольше, чтобы браузер пользователя их закешировал. Ну а для того, чтобы при следующем билде у пользователя обновился js и css надо этим файлам дать какое-нибудь уникальное имя.
  6. Перед отдачей файлов клиенту сжимать их с помощью gzip

К чему это я?

Пункты 5 и 6 уже подробно расписаны в других местах.
Я же хочу рассмотреть в этой статье вопрос автоматизации пунктов 1,2,3,4. А точнее, я хочу предложить инструмент, с помощью которого одним (ну, максимум — двумя-тремя :) нажатием кнопки можно выполнить пункты 1, 2, 3, 4 настоящего списка и получить готовые к заливке на сервер javascript и css файлы.
Интересно?

Предпроектная документация: что это и почему она так важна?

Reading time4 min
Views18K
Среди моих знакомых нет ни одного, кто любил бы писать технические задания или что-то вроде этого. Чертить на салфетках планы захвата вселенной, собирать лэйауты из разноцветных стикеров, шлифовать концепцию в голове и на словах – это все любят и умеют делать, а вот сесть и как следует записать…
Меня, например, любой шаблон серьезного документа погружает в глубочайшую тупку.

У моих знакомых очень много хороших идей, но с таким подходом, слава богу, что дело редко доходит до производства. Почему? Плохо продуманные проекты редко бывают успешными. Либо команда по уши вязнет в тех работах, которые не были видны в начале, либо получается кривоватый, плохо приспособленный к жизни гоблин. Плохо масштабируемый к тому же.

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

Краткая инструкция по управлению заказчиками

Reading time3 min
Views2.6K
Довольно часто коллеги жалуются на заказчиков. Мол, совсем от рук отбились, подонки! Ничего делать не хотят.

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

Первое, что нужно запомнить: заказчики на самом деле полезные (и не идиоты, нет).
Второе: заказчик, на самом деле, такой же ресурс, как программист или дизайнер.
Третье: основная задача менеджера проектов (мы-то с вами знаем кто на самом деле рулит вселенной (дьявольский смех)) – научиться управлять заказчиком так же эффективно, как программистами.

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

Дешёвый способ имитации попадания пули в человека

Reading time2 min
Views34K
Мы в нашей независимой студии «КиноКафе» сейчас занимаемся производством нового короткометражного боевика. Поскольку денег почти нет, а планы наполеоновские, стараемся всё сделать как можно проще и дешевле, но без ущерба качеству. В частности, мы долго думали, как сымитировать попадание пули в человеческое тело (без этого в боевике — никуда). Поискали в интернете, нашли замечательное руководство.

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

Мы решили попробовать, а заодно потестировать хромакей (не особенно заморачивались с его подсветкой, поэтому в части отделения человека от фона получилось так себе). Среди основных минусов нашей пробы: из человека при выстреле выплёскивается слишком много крови (надо будет заливать в презервативы поменьше) и видно нитку, за которую дёргают (это просто тест, поэтому я не стал утруждаться покадровым стиранием ниточки). Во всяком случае, по этим видео можно понять общую картину.



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

WUD 2008: фото, видео, презентации

Reading time2 min
Views752
13 ноября, вот уже третий раз в подряд, в рамках «Всемирного дня юзабилити» в Москве прошла открытая конференция WUD 2008. Мероприятие посетило около 200 специалистов. От лица организаторов конференции — сообщества юзабилити-специалистов RusCHI — мы благодарим всех за интерес к вопросам юзабилити и человеко-компьютерного взаимодействия. Конференция традиционно была бесплатной и прошла в помещении компании 1С.

Посмотреть фотографии c WUD 2008 (Flickr)

Сайты авиакомпаний и агентств путешествий: текущее состояние и тенденции (Иван Бурмистров)

Презентация на Slideshare

Юзабилити и транспорт: вести с полей (Екатерина Умнова, Анна Тихонина, Иван Дегтяренко)

Презентация на Slideshare
Читать дальше →

Сброс стилей с помощью CSS Reset

Reading time6 min
Views349K
Данная статья — первая из цикла на тему укрощения CSS. Сегодня мы рассмотрим технологию CSS Reset.

Зачем это нужно?


Каждый браузер устанавливает свои значения стилей по умолчанию для различных HTML-элементов. С помощью CSS Reset мы можем нивелировать эту разницу для обеспечения кроссбраузерности стилей.

Например, вы используете элемент a в вашем документе. Большинство браузеров, как Internet Explorer и Firefox, добавляют ссылке синий цвет и подчёркивание. Однако представьте, что через пять лет кто-то решил создать новый браузер (назовём его UltraBrowser). Разработчикам браузера не нравился синий цвет и раздражало подчёркивание, поэтому они решили выделять ссылки красным цветом и полужирным шрифтом. Именно исходя из этого, если вы установите базовое значение стилей для элемента a, то он гарантированно будет таким, каким вы хотите его видеть, а не как предпочитают его отображать разработчики UltraBrowser.

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

Обзор шаблонизатора Quicky: Производительность и Гибкость

Reading time5 min
Views5.2K
Quicky — hi-end шаблонизатор, написанный на PHP отличающийся гибкой функциональностью, и в то же время, высокой производительностью. За основу взят синтаксис и функционал Smarty.


содержание:
переход со Смарти, на Quicky
— — чем Quicky лучше Smarty?
Quicky быстрее PHP-native?
Quicky темная сторона силы.
Комьюнити Quicky. (теперь все тут http://code.google.com/p/quicky/)
Богатые возможности Quicky.
Вместо заключения. Личное мнение.
Читать дальше →

MACRO — гибкий PHP шаблонизатор, с человеческим «лицом»

Reading time3 min
Views2.7K
Раз уж сегодня на хабре день РНР шаблонизаторов, то не могу не рассказать о MACRO — наиболее гибком шаблонизаторе с читаемыми шаблонами, среди известных мне.
я хочу прочитать третье, за день, описание шаблонизатора

Глава 3. Оживляем страницу с jQuery

Reading time8 min
Views15K
Очередная глава из книги «jQuery in Action» (авторы Bear Bibeault и Yehuda Katz). Прежде всего извиняюсь перед читателями за столь большой промежуток между публикациями глав. Но все-таки я это сделал, чему, конечно же, рад. Надеюсь, что и вы тоже не останетесь равнодушными. Итак, продалжаем.

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

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity