Обновить
350.29

Веб-разработка *

Делаем веб лучше

Сначала показывать
Порог рейтинга
Уровень сложности

Использование Nginx и php для проверки прав доступа перед отдачей файлов

Время на прочтение2 мин
Просмотры14K
Иногда на сайте возникает необходимость ограничить доступ к некоторым файлам по разным причинам(раздавать файлы только авторизованным пользователям, антилич и так далее). Для решения данной задачи можно использовать разные подходы:

  1. Раздавать файлы с помощью скрипта на php(заменить php на то, что нравится больше). При данном подходе мы передаем в качестве параметра скрипту имя файла. Код проверяет все условия, при которых возможно получения доступа к данному файлу и принимает решение, выдать 404 или запрошенный файл. Данный подход подходит для мелких файлов, однако при возрастании размера отдаваемого файла он будет потреблять много системных ресурсов, т.к. файл будет вычитываться в память и затем отдаваться.
  2. Использовать некоторые неочевидные возможности веб-серверов.

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

Монолитные системы – наследие

Время на прочтение2 мин
Просмотры1.8K
Большие проекты, с долгой историей — уходящей своими корнями в 90-е, в большинстве случаев основываются на монолитной архитектуре (не касательно web — корни тянуться еще глубже). В работе я часто сталкиваюсь с подобными системами и у них всех практически одни и те же проблемы, об этом и хотелось бы рассказать сейчас.

Основная проблема

При создании не предполагает наращивания функционала. Создается «раз и на всегда» — любая «новая кровь» — не той группы и вызывает отторжение. Любое хирургическое вмешательство рано или поздно приводит к появлению «Франкенштейна» — сущности Множеств — объеденных синтетическими связями.
Читать дальше →

JavaScript для начинающих — как учить?

Время на прочтение1 мин
Просмотры244K
Наша маленькая но очень гордая компания взяла на обучение нового человека. Мы хотим сделать его матерым жаваскриптером. Воспитание и обучение легло целиком на мои плечи поскольку опыта по JS у меня больше прочих.

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

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

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

The Javascript Way

Время на прочтение3 мин
Просмотры1.4K
Очевидно, что за последние годы JavaScript превратился из «прикольного дополнения к HTML» в мощное средство для разработки веб-приложений. И превратился он в него не технологически, а идеологически. То есть он всегда был, как-бы на протяжении своего существования сильно не менялся, но почему-то стал использоваться на всю катушку сравнительно недавно. Как будто все неожиданно осознали, что веб тоже может быть интерактивным, и веб-сайты, как-бы не веб-сайты вовсе, а такие программы, со своей логикой. Эта тенденция оказала сильно и на требования к сайтам в общем.
До конца не ясно, то-ли возможности Javascript так повлияли на веб, то-ли веб сам стал требовать интерактива, и на помощь пришел JS. Я лично склоняюсь к первому варианту.

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

А что там с фреймворками?

РИТ: Высокие нагрузки — Программа по состоянию на 20 августа

Время на прочтение2 мин
Просмотры1.2K
Программа конференции «РИТ: Высокие нагрузки» значительно обновилась. Отчасти это обусловлено договоренностями о партнерстве с членами ассоциации «Интернет и бизнес» (Яндекс, Рамблер, Мейл.ру, Ашманов и партнеры, РБК-МедиаМир и многие другие), отчасти — усиленной работой экспертного совета.

На тему проектирования масштабируемых систем и выбора архитектуры подано около десяти заявок. Одни из самых интересных пришли от Андрея Шетухина (архитектор проектов SUP Fabrik), тезисы уточняются. Антон Федоров готовит доклад о выборе архитектуры нагруженного проекта, опираясь на примеры Goodoo-IT и Инфоскан.
Читать дальше →

База классификаторов

Время на прочтение1 мин
Просмотры5.9K
Прочитав этот хабратопик я решился, наконец, рассказать хабраобщественности о своем некоммерческом стартапе и вообще открыть к нему доступ. Этот проект сделан программистами для программистов. Суть его проста – все классификаторы на одном сайте.

Каждый классификатор может содержать несколько таблиц. Содержание любой таблицы можно посмотреть прямо на сайте или скачать классификатор целиком. Для скачивания доступны следующие форматы: XML, SQL-дамп или просто в формате Excel. В дальнейшем к профилю классификатора мы будем прикреплять графическую схему с указанием связей между таблицами.

Все Ваши пожелания, предложения и классификаторы, пожалуйста, отправляйте на class.upload@gmail.com. Плюсовать в карму можно drtoller (т.е. мне), derbov, @saratovdae.

Firebug lite

Время на прочтение1 мин
Просмотры4.5K
Я смотрю для общественности прошло незамеченным такое событие, как обновление Firebug-Lite до качественно нового уровня. Теперь мы имеем аналогичное FF FireBug средство в Opere, Safari и возрадуйтесь — в IE.
Читать дальше →

Сам себе подкаст–терминал

Время на прочтение5 мин
Просмотры3.4K
Эта тема несколько отходит от вопросов поднимаемых в ТиПЗ, однако ответа на вопрос «а как мне сделать свой подкаст–сайт» от меня добивались не раз. С другой стороны, за последние две недели мне пришлось собрать пару таких подкаст сайтов и этот опыт как–то зафиксировался и приготовился к обнародованию. Ничего особенно революционного я не поведаю, однако и самое банальное знание собранное воедино может кому–то помочь.

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

Закругленные уголки с помощью VML и CSS3

Время на прочтение1 мин
Просмотры2.9K
jsdhfksdfsd

Наткнулся на очень интересный вариант решения очень популярной проблемы многих веб-мастеров — закругление блоков.
Для этого варианта закругления используются VML и CSS3.

Решение без картинок, работает во всех Internet Explorer’ах включая 5ый, в Firefox, в Safari, но к сожалению в старых версиях Opera не работает.
Читать дальше

Детские мечты о width: 90%-20px;

Время на прочтение2 мин
Просмотры766

Вступление

Те, кто когда-то только-только начинали изучать CSS, особенно имея небольшой опыт программирования десктопных приложений на Delphi или VB, наверняка хотели иметь возможность использовать конструкции вроде left:30%+10;
Потом все мы научились использовать margin, вложенные и плавающие блоки. Тем, кто всё-таки не прочь побаловаться, посвящается: JSCSS
Читать дальше →

Библия веб-разработки

Время на прочтение1 мин
Просмотры1.3K
На конференциях Профиклаба свои доклады делают те люди, которых по праву можно назвать не только гуру, но и технологическими евангелистами. Материалы их докладов легли в основу “Библия веб-разработки” — мы начали публиковать “Трехкнижие 2007: РИТ, HighLoad, ClientSide” и книга первая “РИТ-2007″ уже доступна почти в полном объеме. Почему “почти”? Потому что в ближайшие дни текстовые материалы и презентации пополнятся еще и видео.

Следом за “книгой первой” мы опубликуем тексты докладов конференций прошлого года “HighLoad” и “ClientSide”. На расшифровку видео и вычитку (кстати мы с удовольствие посотрудничаем с теми кто поможет вычитать доклады) уйдет порядка 2-3 месяцев, хотя тезисы с видео и презентациями появятся гораздо раньше.

Мы не ограничились только материалами конференций — уже готовые первые переводные материалы от крупнейших зарубежных специалистов:

  • Еще более быстрые веб-сайты (в основе текста презентация, автором которой является Steve Souders)
  • 7 этапов построения масштабируемых веб-приложений (материал подготовлен по мотивам презентации, автором которой является John Engates, CTO Rackspace.)

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

Удобное решение для работы с БД

Время на прочтение2 мин
Просмотры6.4K
logo_by_chernev
Обычно для работы с mySQL я использовал «phpmyadmin», но сегодня мой взор был направлен на новое решение «SQL buddy», я скачал, загрузил на свой сервер, и…
И это просто супер! Такой и должна быть удобная работа с БД!

Возможно «SQL buddy» не имеет столько расширенных функций как «phpmyadmin», но для рутинных и небольших работ она прекрасно подходит.
Читать дальше

Мысли о разрешении экрана. Год спустя

Время на прочтение2 мин
Просмотры3.9K
В последнее время при разработке сайтов все меньше и меньше учитывается разрешение 800х600, что само по себе не удивительно, если взглянуть на статистику. Соответственно либо сайты оптимизированы под 1024х768 и выше, либо они «резиновые», что встречается в реже.

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

Ближайшие события

Супер-юзабильные формы

Время на прочтение2 мин
Просмотры54K
super_form

Как-то на хабре разгорелся спор, как заставить пользователя вводить дату в правильном формате, было множество интересных решений, но заставлять пользователя совершенно не надо — пусть за пользователя основную работу делают машины :-).

На помощь приходит замечательный скрипт «Masked Input Plugin», который позволяет назначить для каждой формы маску, по которой данные будут заполнятся.

Возможно Вы не совсем поняли, но лучше один раз увидеть, чем сто раз услышать.
Читать дальше

Замыкание в Java Script для непосвященных

Время на прочтение2 мин
Просмотры3.3K
У моих программистов была задача: в фото галерее при активном изображении подсвечивать thumbnail показываемого изображения. Задача вроде тривиальная, но вызвала у них некоторый затык при решении. Хочу сказать сразу, что владение JS было у них не на высоте.
Вообще мало людей по настоящему знающих этот язык и не путующий его с принципами работы DOM документа.

В чем же была проблема…
1. В том, что сначала они решали её рекурсией :)
2. Вторая попытка решить привела к введению глобальной переменной, что я не считаю хорошим тоном
3. Загрязнение общего кода подобными маленькими функциями вместо использования объектного подхода

В бытности будучи программистом я написал маленький каркас для демонстрации. Вот он:

<script type=«text/javascript»>
          
          
function MainMenu(){
            
            var OldImage;

            this.getOldImage = function(){ return OldImage; }
            this.setOldImage = function( img ){ OldImage = img;}
            this.chgImage = function( obj, newImage){
              if(newImage != null){
                this.setOldImage(obj.src);
                obj.src = '/images/'+newImage;
              } else {
                obj.src = this.getOldImage();
              }
            }

}

var Menu = new MainMenu();

</script>
* This source code was highlighted with Source Code Highlighter.


Вызывать следует так:

<img src="/images/home.gif" width=«88» height=«23» alt="" onmouseover=«Menu.chgImage(this, 'home_over.gif')» onmouseout=«Menu.chgImage(this)»>* This source code was highlighted with Source Code Highlighter.


Что это нам дало:

1. Мы не используем рекурсию. Этим мы бережем ресурсы компьютера. У клиентских машин они же не резиновые вопреки обратным утверждениям
2. Мы не ввели глобальную переменную, которая в больших системах неудобна по объективням причинам
3. В третьих мы сделали универсальный объект. У него инкапсулированы данные!

Новичкам просьба разобраться и понять. Этот вариант сделан специально проще, чем мы реализовывали.

Мы создаем в теле функции локальную переменную. Затем захватываем эту переменную методом этой функции (это класс, точнее прототип). В итоге получаем хитрый трюк. При выходе из самой функции данные в ней запомнились.

Вообще-то по этому вопросу материала достаточно в сети. Этот трюк далеко не новый. Но о нем нужно напоминать «отцам» и учить новичков.

Ваш собственный онлайн фидридер!

Время на прочтение1 мин
Просмотры780
shot_thumb

Gregarius — это RSS / RDF / ATOM веб-агрегатор написанный на php, предназначенный для установки на вашем веб-сервере, что позволяет Вам получать новости из практически любых источников.
Читать дальше

JQuery :: Edit in Place

Время на прочтение11 мин
Просмотры7.5K
Не сочтите этот материал за профессиональное изложение. Это не так. Я просто хотел поделиться своим опытом с людьми, которые смогут его применять в своих проектах и делать Интернет проекты более удобными для использования.

Начнем:
Делали механизм для роликов с разработчиками. Суть простая: загружено множество роликов, а потом они проигрываются в плеере. Сами ролики на сервере представляют собой музыкальые файлы и записи в БД. Записи имеют свои св-ва.
Ниже речь пойдет только о двух: позиция ролика в общей очереди и название.
Чтобы редактировать позицию ролика не очень-то хотелось переходить на специальную страницу, где можно было бы отредактировать это св-во. Роликов было около 150 :) Представляете какую рутиную операцию приходилось бы делать.
Как раз на днях просматривал JQuery. Вообще до того момента я больше склонялся к mootools, но после более глубокого общениея с первым из этого списка решил, что остановлюсь на этом фреимфорке.

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

Как показать в виде страниц результат большой выборки

Время на прочтение1 мин
Просмотры668
Когда результатов выборки много обычно невозможно отобразить их все в виде страниц — показывают несколько первых и последних, а в середину «прыгнуть» или невозможно или для этого нужно вручную набивать номер нужной страницы.
Для решения этой проблемы придумал алгоритм логарифмической шкалы страниц (в примере используется 20 миллиардов условных результатов разбитых на 1 миллиард страниц):

online пример

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

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

Города России в именительном, предложном (местном) и родительном падеже.

Время на прочтение1 мин
Просмотры8.8K
Приняв во внимание все замечания из предыдущего поста с базой городов, мы обновили ее и добавили еще родительный падеж. Теперь база отвечает на вопрос «Откуда?». Например: Вася из Ярославля.

Скачать:
  1. CSV
  2. MySQL

Автоматическая обработка: Jetfish
Вычитка и ручная корректировка Sofrus

Как и в прошлый раз, при желании, выражайте респект и уважуху им, а не мне. Я просто их прикрываю.

Гармония ECMAscript

Время на прочтение1 мин
Просмотры612
Создатель языка JavaScript Брендан Эйч опубликовал в рассылке интересное письмо о будущем спецификации ECMAScript-262 после встречи в Осло. В обсуждении учавствовали представители Adobe, Google & MicroSoft, которые имеют собственные реализации этого стандарта (JavaScript, ActionScript, Rhino, JScript.NET).

Разработчики решили сконцентрироваться на версии 3.1 и отказаться от ряда возможностей, которые изначально предполагалось добавить в ES4: packages, namespaces & early binding. Под вопрос теперь так же поставлены классы, которые можно упростить до lambda-coding + Object.freeze.

ES 4 is dead, long live ES 3.1! AS 3 теперь сам себе хозяин.

Вклад авторов