PHP: делаем быструю проверку идентификация пользователя

PHP
imageСуществует много методов, как можно проверять идентификацию пользователя. Рассмотрим один из наиболее популярных методов:

$_COOKIE + база данных

В $_COOKIE мы храним ID пользователя, а так же слепок пароля (например md5). При каждой генерации страницы мы по ID находим в базе данных слепок пароля и сверяем его с тем, что хранится в $_COOKIE.

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


А что если отказаться от базы данных или любого другого хранилища для проверки подлинности информации о пользователе…

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

Почему и когда стоит использовать ханимые процедуры в MySQL

Данный топик навеян и тем фактом что автор разместил его в разделе «Ненормальное программирование». Печально это видеть, честное слово. И вот
Читать дальше →

Компилятор Brainfuck в PHP на PHP с оптимизацией

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

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

PHP: как не потерять сессию

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

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

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

Vagrant — виртуализация рабочего окружения



Как и всем дотнетчикам, мне приходилось работать со стеком технологий, основанных на Windows. Но иногда я озирался вокруг и изучал то, что мне казалось интересным, пока не наткнулся я на Ruby On Rails. Все было отлично, вот только инструментарий на Windows оставлял желать лучшего.

Как вы, должно быть, знаете, Ruby On Rails предоставляет великолепные инструменты командной строки, облегчающий работу с фреймворком. Так повелось, что для Windows консоль никогда не была сильной стороной. К тому же все эти инструменты, портированные на Windows, были крайне задумчивыми. По ощущениям, на одной и той же машине, команды rails, выполненные в Windows и выполненные в Linux, но запущенной в виртуальной машине, различались в отклике в несколько раз, а порой и на порядок. А ведь при изучении, важна каждая секунда. Нужно и в rails console поиграться с написанным, и сервер запустить, увидеть свой результат, и миграцию провести, а ждать при этом не хочется.

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

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

Программирование в среде Cocoa. Немного об NSAutoreleasePool

Сперва немного информации. Неоднократно я замечал топики для начищающих программистов iOS в которых был разобран вопрос управления памятью в среде Cocoa. Я хотел бы подробнее остановиться на autorelease pool. Все дело в том что программируя под iOS Cocoa предоставляет autorelease pool по умолчанию но как быть с периферийными потоками? Ведь текущий пул находится в главном потоке как же быть с autorelease объектами в бекграунде? Об этом речь пойдет далее.

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

Ruby on Rails для занятых на примере блога

Предисловие

Не так давно я задался целью изучить фреймворк Ruby on Rails, почитал викиучебник по Ruby, затем принялся гуглить на тему Ruby on Rails, хотел найти хороший туториал для начинающих, но посложнее Hello World.
Нашел видео, где показывалось создание блога на Ruby on Rails, однако, версия, используемая там была стара (как, впрочем, и видео), и использовался скаффолдинг, не поддерживаемый уже в версии 2, что уж говорить по третью.
Но мне очень хотелось начать с такого туториала, так как я начинал разработку на CodeIgniter с создания простейшего блога.
К сожалению, для Ruby on Rails, для актуальной версии Rails я такого туториала не нашел, поэтому решил написать его сам.

Использую я ubuntu, rails версии 3. Ну что ж, приступим.

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

Opera – синоним удобного интернета

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

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

Что же меня привлекло?
Читать дальше →

Вводная статья в разработку видеоигр

Введение
Часто люди задаются вопросом: с чего собственно начинать разработку видеоигры? Походу статьи я буду постепенно отвечать на этот вопрос, раскрывая некоторые аспекты. А раскрывать аспекты я буду со стороны программиста, поэтому тема будет всецело посвящена начинающим программистам в этой области.

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

Пишем свой Android Preference

Доброго времени суток. Если вы пишете приложения под Android, то наверняка сталкивались с настройками приложения (Preferences). На первый взгляд всё делается просто (см. сюда), но после беглого знакомства понимаешь что стандартных настроек очень мало. Их всего пять штук:
  • Preference
  • CheckBoxPreference
  • EditTextPreference
  • ListPreference
  • RingtonePreference

Очевидно что всех нужд эти настройки покрыть не могут.

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