• Используем списки доступа в шаблонизаторе Smarty

      Предыстория



      Долгое время мне приходилось сопровождать самописную систему на PHP, которая была спроектирована очень и очень плохо. То и дело приходилось встречать вот такие куски в шаблонах smarty:

      {if $user->role eq 'admin'}
      {* покажем этот столбик только админам (заголовок) *}
      <tr><td>Секрет</td></tr>
      {/if}

      {if $user->role eq 'admin'}
      {* покажем этот столбик только админам (данные) *}
      <tr><td>{$row->secret_column}</td></tr>
      {/if}


      Читать дальше →
    • Защита прав потребителей в России: Мы далеко не последние

        Устал я слушать от знакомых причитания по качеству защиты прав покупателей в России и завистливые возгласы: «Вот на западе....».
        Нет, я не хочу сказать что я негативно отношусь к западу, просто хочу показать, что и у наших граждан, есть защита. И закон о защите прав потребителей далеко не такой, каким многие его представляют.
        Что же даёт нам закон?
      • Java вместо javascript (gwt+netbeans)

          Когда я увидел gwt и gwt-ext, я подумал, что меня где-то обманули, когда не рассказали об этом раньше. Мучения с отладкой скриптов с использованием ExtJS были долгими, мы использовали Java как серверную платформу, вручную занимались сериазилацией/десереализацией серверных объектов, подгоняли блоки с помощью css и занимались многими другими вещами, отнимавшими кучу времени. Однако, можно все это оставить позади. Теперь можно рисовать красивые экстовые окошки кодом на Java (not js)! GWT — замечательная вещь. Она позволяет нам уйти от написания js-кода, потому что генерирует js-код самостоятельно; и программист может даже его не смотреть, потому что отлаживать его можно тоже в исходниках на Java!Далее я постараюсь рассказать, как настроить
          gwt под netbeans.
        • Поисковая оптимизация. Часть 1 — внутренние факторы

            Рекомендации по html-коду, вёрстке и немного — по копирайтингу. Актуально для февраля-2009

            Это не очередной список «101 совет, как достичь идеала в том-то», которых полно в интернете. Это «инсайдерская информация» SEO-компании, ведущей более 600 проектов. Перечислено то, на что мы обращаем внимание, начиная поисковую оптимизацию. Разумеется, не всё получается реализовать (например, движок сайта что-то не позволяет, а где-то пункты противоречат(!) друг другу). Ничего страшного. Если больше половины рекомендаций получается реализовать, то это уже очень хорошо!
            Читать дальше →
          • API Playground

              api playground

              На прошлой неделе Google официально представил очередную разработку в рамках «20% личного времени» которая вышла за пределы компании. Инженер по разработке Бен Лисбаккен (Ben Lisbakken) создал API Playground, с которым изучение кода для Google Javascript API становится легким, как никогда ранее.

              API Playground предоставляет простой и удобный интерфейс написания и тестирования javascript-кода для восьми сервисов Google, использующих API, это: Maps, Search, Feeds, Calendar, Visualization, Language, Blogger, Libraries и Earth. Кроме того новый API Playground скоро станет способом по умолчанию для демонстрации примеров JS-кода. Еще одна хорошая новость заключается в том, что гигант перевел часть исходных кодов под лицензию Apache 2.0 для использования в Playground.

              На данный момент на «игровой площадке» (playground) доступно более 170 javascript-шаблонов, начиная от простых списков, слайдшоу основанных на медиа-RSS и заканчивая KML-файлами Google Earth.

              Playground отлично подойдет новичкам, желающим узнать немного больше о Google API — кроме понятных примеров использования в API Playground присутствует так же поддержка специалистов.

              Google Code Blog via ReadWriteWeb
            • Orange San Francisco — Совсем не бюджетный андроидфон за £99

                image     Не так давно меня попросили подобрать новый телефон, так как я имею кое-какой опыт общения с платформой Android и телефоны на этой платформе доступны в широком ценовом диапазоне, взгляд был смещен именно на так называемые андроидфоны.

                    Изучив российский розничный рынок не дорогих смартфонов на базе Android'а я начал уже присматриваться к LG Optimus One, но по счастливой случайности бродя по интернетам наткнулся на героя обзора — Orange San Francisco, ценой в Англии всего в £99 (около 4500 наших рублей) и по техническим характеристикам превосходящий чуть-ли не в два раза все предоставленные на нашем рынке смартфоны стоимостью до 10 000 рублей.

                Именно о нем и пойдет речь в сегодняшнем обзоре, добро пожаловать под хабракат.
                Читать дальше →
              • Ruby on Rails. Установка, настройка, начало работы

                • Tutorial

                Зачем.


                В этой маленькой статье, которую с удовольствием прочитал бы сам неделю назад, я попытался собрать все вещи, которые понадобились бы человеку, задумай он «с нуля» написать приложение на RoR. То есть не углубляясь ни в одну из областей, описать необходимый минимум действий, чтобы установить, настроить и написать своё первое приложение.Здесь собрано, как мне кажется, всё, что нужно и я надеюсь этот текст сэкономит кому-нибудь несколько часов поиска в интернете). Сам изучаю RoR вторую неделю, так что не судите строго).

                Установка.


                Просто и быстро ror ставится через rvm c rvm.io.

                >\curl -L https://get.rvm.io | bash -s stable --rails --autolibs=enabled
                


                Запустить rvm:

                >source /Путь_к_домашней_директории*/.rvm/scripts/rvm
                

                *$HOME в дальнейшем.
                После этого в $HOME/.bash_profile должна появиться строчка:

                [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
                


                и при каждом открытии консоли rvm будет подгружаться, но у меня этого не случилось — пришлось ещё в $HOME/bashrc прописывать:

                . ~/.bash_profile
                


                Теперь всё точно должно быть хорошо.
                Устанавливаем нужную(скорее всего это будет самая последняя) версию руби (сколько их и в чём отличие можно посмотреть здесь -http://www.ruby-lang.org).
                >rvm install 1.9.3
                

                Проверка на успешность создания
                >ruby -v
                

                должна вернуть более подробную информацию, вроде
                ruby 1.9.2p320 (2012-04-20 revision 35421) [x86_64-linux].
                

                В процессе установки я случайно установил несколько версий, что потом доставило некоторые неприятности). Посмотреть список установленных версий руби можно так:
                >rvm list
                Если версий несколько, то текущая будет помечена "=>", дефолтная — "*", а текущая и дефолтная — "=*". Поменять на нужную используемую версию можно так:
                >rvm use ruby-1.9.2-p320 (любая нужная версия)
                

                Чтобы поменять дефолтную версию руби пишем:
                >rvm use ruby-1.9.2-p320 --default
                

                Читать дальше →
              • [Перевод] Современный веб-разработчик, или 6 вещей, которые вы должны знать, чтобы выжить

                Это статья об изменениях, которые произошли в мире веб-разработки. Я наблюдаю огромное количество веб-разработчиков, которые буквально застряли в устаревших технологиях, особенно в мире .NET. Если вы еще не начали совершенствовать свои навыки, и адаптироваться к изменяющимся трендам, вы должны начинать уже сегодня.
                Читать дальше →
              • Наберитесь смелости сделать не как все. 12 устаревших интерфейсных и технологических решений

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

                  Подтверждение пароля или email при регистрации


                  Как часто случается, что человек промахивается, и набирает неправильный пароль, когда он внимательно набирает его в первый раз при регистрации? Что случится, если он при регистрации ошибется в пароле? Какие эмоции вы испытываете, когда вас просят ввести подтверждение пароля? Было ли хоть раз, что вы не копировали подтверждение email из первого поля, а набирали его руками?


                  Читать дальше →
                • Git и публикация сайта

                  • Перевод
                  При попытке отредактировать этот старый пост слетело всё форматирование. Может быть я его когда-нибудь исправлю.

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

                  Основные преимущества:
                  • Делая push из удалённой копии мы автоматически обновляем live-копию сайта
                  • Правки файлов на сервере не будут разрушать историю коммитов
                  • Простота, не нужны особые правила выполнения коммитов
                  • Можно применить к уже запущенному сайту, без повторного деплоя или перемещения файлов
                  посмотреть, что там такое
                • Ключевое слово this в javascript — учимся определять контекст на практике

                  • Tutorial
                  По просьбам некоторых читателей решил написать топик про контекст в javascript. Новички javascript часто не понимают значение ключевого слова this в javascript. Данный топик будет интересен не только новичкам, а также тем, кто просто хочет освежить данный аспект в памяти. Посмотрите пример ниже. Если вы затрудняетесь ответить на вопрос «что будет выведено в логе» хотя бы в одном из пунктов или хотите просто посмотреть ответы — добро пожаловать под кат.

                  var f = function() {
                      this.x = 5;
                      (function() {
                          this.x = 3;
                      })();
                      console.log(this.x);
                  };
                  
                  var obj = {x: 4, m: function() {
                      console.log(this.x);
                  }};
                  
                  
                  f();
                  new f();
                  obj.m();
                  new obj.m();
                  f.call(f);
                  obj.m.call(f);
                  

                  Читать дальше →
                • Про jQuery и велосипеды — мое дополнение

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

                  Для затравки начнем с простого.
                  Читать дальше →
                • Основы Python в кратком изложении

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

                    Python для начинающих. Глава первая. «О чем это мы»

                    На всякий случай, немного скучного «evangelism». Кому он надоел, можно пропустить несколько абзацев.
                    Python (читается как «Пайтон» а не «питон») — скриптовый язык, разработанный Гвидо ван Россумом в качестве простого языка, легкого в изучении новичку.
                    В наше время Пайтон – широко распространенный язык, который используется во многих областях:
                    — Разработка прикладного ПО (например linux-утилиты yum, pirut, system-config-*, IM-клиент Gajim и многие другие)
                    — Разработка web-приложений (мощнейший Application-сервер Zope и разработанная на его основе CMS Plone, на основе которой работает например сайт ЦРУ, и масса фреймворков для быстрой разработки приложений Plones, Django, TurboGears и многие другие)
                    — Использование в качестве встраиваемого скриптового языка во многих играх, и не только (в офисном пакете OpenOffice.org, 3d редакторе Blender, СУБД Postgre)
                    — Использование в научных рассчетах (с пакетами SciPy и numPy для расчетов и PyPlot для рисования графиков Пайтон становится практически сравним с пакетами типа MatLab)

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

                    Так, что же необходимо новичку для изучения Пайтона?
                  • Основы Python — кратко. Часть 3. Списки, кортежи, файлы.

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

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

                      В общем, те кому не интересно — читают следующую новость, а остальных — прошу пройти
                      под кат
                    • Бесплатный облачный PHP-MySQL хостинг для небольшого сайта на основе Amazon AWS

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

                      Боевая задача.


                      Предположим нам хочется захостить небольшой проектик где-нибудь в надежном и не особо тормозящем месте. А поскольку сайт небольшой, то не будем заморачиваться и захотим от хостинга что-нибудь самое простое. Для наших целей вполне хватит PHP, MySQL и доступа по FTP.
                      Для решения этой задачи идеально подходит Веб сервис от Амазона в котором удивительным образом сочетается способность выдерживать большие нагрузки с бесплатным пакетом ресурсов на первый год после регистрации. В бесплатный пакет входит много чего, но в данный момент нас будут интересовать:
                      • Виртуальный сервер в формате micro на основе Linux с доступом по SSH.
                      • 30Гб места в Elastic Block Storage плюс 1Гб под бэкапы.
                      • 15 Гб трафика в месяц.
                      • Выделенный внешний IP адрес.

                      Причем все это при желании можно зарегистрировать и подготовить к работе за полчаса, но понадобится кредитная карта, которую примет Amazon (и снимет 2 доллара) и сотовый телефон под рукой (домашний не подойдет).

                      Читать дальше →
                      • +125
                      • 76,5k
                      • 88
                    • Node.js на Windows (с тестами производительности)



                        В этой статье мы рассмотрим вопросы наиболее важные для начинающих веб программистов и тех кто задумывается об изучении Node.js, а именно:
                        • как установить рабочее окружение Node.js на своем компьютере;
                        • как писать код;
                        • как отлаживаться;
                        • как развернуть то, что получилось на удаленном сервере.
                        А тесты производительности в конце статьи возможно дадут ответ на вопрос зачем собственно вам может понадобится изучать Node.js.
                        Читать дальше →
                      • LAMP +Nginx на VPS стабильно и без лишней головной боли

                        Задача — на минимальных ресурсах VPS развернуть хостинг нескольких не нагруженных сайтов. Сделать это быстро и удобно с минимальными проблемами в будущем и не падать на пиковых нагрузках.

                        Основные принципы:

                        1. ОС — Centos-6 86_x64 потому что стабильно, удобно и легко обновляемо.
                        2. Никакого самосборного софта. А то как говорится «командой make && make install любой дистрибутив превращается в Slackware.»
                        Читать дальше →
                      • Как сделать собственный видео-плеер на HTML5 Video

                        • Tutorial
                        Ранее мы уже рассмотрели общие вопросы использования HTML5 Audio и Video и начали погружаться в детали, начав с задачи определения поддержки браузером нужного кодека. Сегодня мы рассмотрим задачу создания собственного видео-плеера на HTML5 Video.


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

                        <video src="trailer_480p.mp4" width="480" height="270" poster="poster.gif" controls />

                        Однако, как я отмечал в вводной статье, со стандартными контролами есть проблема, которая заключается как раз в том, что выглядят они нестандартно. Другими словами, в каждом браузере они выглядят по-своему (проверить, как выглядят контролы в разных браузерах, можно на примере Video Format Support на ietestdrive.com — просто откройте его в двух-трех различных браузерах).
                        Читать дальше →
                      • HTML5 Drag and Drop загрузка файлов

                        image
                        Благодаря нововведениям HTML5 создавать Drag and Drop интерфейсы стало гораздо проще. К сожалению, эти нововведения еще не обладают обширной поддержкой браузеров, но надеюсь в скором времени это изменится (на данный момент работает в Firefox 4+, Chrome и Opera 11.10).

                        Читать дальше →
                      • Популярные менеджеры паролей в сравнении

                          imageБезопасное хранение паролей — тема очень актуальная в любое время, тем более после недавних громких взломов крупных сайтов. После того как один из моих паролей утек в Сеть после взлома биржи MtGox, я озаботился переходом на серьезные методы защиты.

                          Самыe важные пункты, которыми пренебрегают многие пользователи, хранящие пароли в голове или на бумажке — использование на каждом сервисе отдельных паролей, и отказ от простых, легко запоминаемых паролей. Чтобы сделать это возможным, существует немалое количество софта разного качества, изучением которого я и занялся. Сейчас я хотел бы поделиться результатами своих изысканий.

                          Итак, программы, попавшие под мой выбор, следующие: KeePass, eWallet, LastPass, 1Password, RoboForm. Кому интересно — добро пожаловать под кат.

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