This fragment is about to be reported (you'll remain on this page):

You can enter a comment to clarify the mistake if you would like to:

Недавние записи RSS20

Optimizing PHP regular expressions

...also called "getting rid of RegExp"

There are many cases when instead of using more basic and much faster PHP functions programmers use full-scale preg_*() functions of PHP. This article suggests solutions to common cases when regular expressions can be avoided.

If you feel like I’ve missed an interesting case drop a comment below and I’ll include it into this article.

Similar post: Various format parsing functions for PHP.

Is a number?

«…»

Есть 2 комментария | Читать полностью »

3 ways to recursively list all files in a directory

A review of all possible ways to scan a directory for files in PHP.

During my already long experience with PHP finding all files in a directory was one of the few problems which I have solved each time differently. This short note is meant to sumarize all I have done and bring up my latest version.

opendir & Dir

This is probably most traditional way – using opendir functions and theirs slightly more recent (PHP 4+) OOP variant – the Dir class. Let's see how this is done:

Better coding practice would need a try..catch block like this one:

«…»

Весьма комментируемая заметка (8 отзывов) | Читать полностью »

How to get timestamp from day of year in PHP

With date('z') you can get the day of the year... but how to put it back?

Sometimes we need to get sequence number of a day from the year's start. We can do this simply by calling date like this:

In other words, today's the 8th April 2011 and it's the 97th day from the beginning of the year.

This is good but how we reverse this and calculate date from a day's sequence number of a year?

My first try was to see if strptime can be helpful (this function converts a time string like «2 Jan 2010» into timestamp). And I thought that this piece of code could solve the problem in one shot:

«…»

Отзывов пока нет | Читать полностью »

No more global variables – the Arguments object

The power of Arguments - store variables in your function's "static local scope"!

JavaScript is an unusual language in several ways: it doesn't have class tree and inheritance as traditional languages do, it's pretty forgiving to syntax errors sometimes (optional var, optional semicolons, etc.).

Among all this there's one thing rarely thought about. Each function is an object – it's more or less known fact. But each function also receives an arguments objects – which is not a simple array (you can find references at Mozilla DevCenter: arguments, Array).
It, however, behaves like one because it has the following array-like properties:

And here's how you can convert arguments into a real array:

But this is a child's play. Argumens has more properties than that!

«…»

Отзывов пока нет | Читать полностью »

The power of base convertion & short MD5 hashes

This article tells how to encode numerical data to textual yet short representation.

The power of base convertion & short MD5 hashes

The story

A few days ago I was writing a plugin for my blog engine that was adding a nice feature of subscribing to new comments in some post or thread. It also included a few scripts to allow users manage their subscriptions (to very least to let them unsubscribe from threads).
Obviously, I needed some means to authenticate users so only the real owner of an e-mailbox can manage his subscriptions. For this I chose to use my favourite method which is easy to handle:

  1. Have a secret phrase known to server-side only.
  2. Other info that we want to link together (for example, e-mail address).
  3. Now simply hash all this in one string using MD5 and get an irreversible secret phrase that, however, can be checked for validity – and only we can generate valid phrases because nobody but the server knows the secret ingredient – item #1.

In fact, this is very straightforward:

«…»

Один комментарий уже есть | Читать полностью »

Сегодняшние векторы

Сегодняшние векторы

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

Обе картинки нарисовал в Illustrator CS5 Portable (сначала удивлялся, что даже такой есть, но уже использую не первый месяц и работает хорошо). А вот потом в какой дизайн они влились:

Если интересно, можно скачать обе иллюстрации (в .ai с совместимостью для CS3). Копирайта нет, используйте как в public domain – хотя ссылки на автора всегда приветствуются :)

Весьма комментируемая заметка (18 отзывов) | Показать эту запись »

Время Тел

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

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

Когда человек опустил голову вниз, то взляд его тут же приковал к себе бело-голубой шар в центре. Человек начал любоваться им, как вдруг на него налетели воспоминания.
Он вспомнил всё: страшные раны в ногах, которые не только грозили занятию всей его жизни,но и внушали страх того, что до её конца он останется таким, влача безрадостное существование. Одновременно навалились все кошмары покалеченной психики из-за чрезмерного увлечения камнем – сперва от безысходности своей болезни, а потом затягивающее само по нарастающей.

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

«…»

Отзывов пока нет | Читать полностью »

Hanagatari

Задача: игра за шесть дней. Статус: выполнено.

Hanagatari

Два дня назад, в субботу, было день рождение одного моего друга. За неделю до этого я задумался о том, что бы ему подарить – пожалуй, самый сложный процесс во всём этом деле :) Вдруг я вспомнил, что незадолго до этого он мне мельком рассказал о своей идее аркадной игры – с тем расчётом, чтобы игра была незаморочистой, но в то же время необычной.

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

В общем, за 6 дней до часа Икс я начал писать эту несложную аркаду и пару дней спустя понял, что поставил себе этакий «developer's challenge». Вообще, это был первый такой интенсивный блицкриг, который я себе устроил (не менее примечательный Швак – всё же более обстоятельный проект).

Получившуюся игру я с первого дня спонтанно стал называть Hanagatari (花語) – история цветов (или цветка, кому как больше нравится – в японском нет множественного числа).

«…»

Отзывов пока нет | Читать полностью »

PHP Laravel по-русски - фреймворк, framework, CodeIgniter, FuelPHP, пакеты, сборки, документация, форум.