Роман Теличко

Заметки веб-разработчика/админа

Категория Web-программирование

WordPress: AJAX Hits Counter и мои первые 10.000 скачиваний

// Сентябрь 9, 2013 | 806 просмотров | комментариев (1)

Идея плагина родилась в августе 2012, когда возникла необходимость вывода популярных записей блога с последующим кэшированием как самого виджета, так и скрипта добавления "+1" просмотрам.

Произведя ресёрч по существующим плагинам, я понял что аналогов с таким функционалом ну просто нет. В основном всё считается запуском какой-то php-функции плагина, что конечно же не будет работать при кэшировании страниц nginx’ом (когда до PHP дело вообще не доходит).

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

Опыта написаний плагинов для WordPress к тому времени у меня вообще не было, но я решил его сделать. Это было немного больше чем год назад.
Читать далее…

Делаем запросы в PostgreSQL из nginx кэшируя с помощью Redis

// Май 23, 2013 | 4734 просмотров | комментариев (0)

Сегодня я расскажу как можно работать с базой данных PostgreSQL с помощью nginx’a без application’a (например, PHP или любого другого). Т.е. эта технология абсолютно не зависит от языка, на котором сделан сайт/проект/система.
Мы будем использовать мощь PostgreSQL в хранимых процедурах (stored procedures/functions), а кэшировать с помощью быстрого Redis.
Читать далее…

ТОП 16 PHP функций, что я использую каждый день

// Март 30, 2013 | 1167 просмотров | комментариев (0)

Решил написать ТОП 16 PHP функций, что я использую каждый день.
Будет полезно как начинающим разработчикам, так и профессионалам (хотя у них этот список может отличаться).
Это MUST HAVE функции, что обязательно нужно знать и уметь ими оперировать.
Читать далее…

Соответствия команд SVN и Git

// Март 14, 2013 | 366 просмотров | комментариев (0)

Я создал небольшую шпаргалку соответствий команд систем управления версиями SVN/Subversion и Git. Пользуйтесь! 😉

svnadmin create repo
 
git init
git add .

svn import file://repo
git commit

svn diff | less
git diff

svn diff -rrev path
git diff rev path

patch -p0
git apply

svn status
git status

svn revert path
git checkout path

svn add file
git add file

svn rm file
git rm file

svn mv file
git mv file

svn commit
 
git commit -a
git push remote

svn log | less
git log

svn blame file
git blame file

svn cat url
git show rev:path/to/file

svn list url
git show rev:path/to/directory

svn log -rrev url
svn diff -crev url
git show rev

svn copy https://example.com/svn/trunk
https://example.com/svn/tags/name
git tag -a name

svn list https://example.com/svn/tags/
git tag -l

svn log —limit 1 https://example.com/svn/tags/tag
git show tag

svn copy https://example.com/svn/trunk https://example.com/svn/branches/branch
git branch branch

svn switch https://example.com/svn/branches/branch
git checkout branch

svn list https://example.com/svn/branches/
git branch

svn update -r rev
git checkout rev

svn update
git checkout prevbranch

svn merge -r rev:HEAD https://example.com/svn/branches/branch
git merge branch

svn merge -c rev url
git cherry-pick rev

svn checkout url
git clone url

svn switch url
 
git checkout —track
 -b branch origin/branch

svn update
git pull

PHP. Достаём данные из Google Analytics через API используя Service Account

// Январь 22, 2013 | 10795 просмотров | 3 комментария

Сегодня я хотел бы поделиться знаниями по извлечении данных из Google Analytics, используя их API v3 на стороне сервера (server-side), т.е. без участия браузера пользователя.
Самое странное, что в Сети в основном описаны все примеры с использованием эмуляции браузера и аккаунта пользователя (пара email+пароль). Мы так делать не будем, т.к. это глупо и не красиво 🙂
Приступим.
Читать далее…

PostgreSQL. Список всех индексов

// Июль 17, 2012 | 2152 просмотров | комментариев (0)

Получить в виде списка все индексы довольно просто.
Достаточно выполнить следующее:

SELECT 
        n.nspname               AS "schema",
        c.relname               AS "index"
FROM 
        pg_catalog.pg_class AS c 
LEFT JOIN 
        pg_catalog.pg_namespace AS n ON n.oid = c.relnamespace
WHERE
        c.relkind = 'i'
        AND 
        n.nspname NOT IN ('pg_catalog', 'pg_toast')
ORDER BY
        c.relname ASC

И всё!

Кстати, а вот так можно получить список всех неиспользуемых индексов.

PostgreSQL. Список всех дат между двумя датами

// Апрель 6, 2012 | 241 просмотров | комментариев (0)

Узнаём timestamp от интересуещей даты

SELECT
    extract( 'epoch' from '2012-02-01'::timestamp without time zone  )::integer

(это будет 1325455200)

Используем generate_series()

SELECT
    *
FROM
    (
        SELECT
            date_trunc( 
                'day', 
                    to_timestamp( 
                        generate_series( 1325455200, 1333691315, 80000 ) 
                        ) 
                    )::date AS d
    ) AS s
GROUP BY 
    s.d
ORDER BY
    s.d ASC

В результате получим что-то такое:

2012-01-02
2012-01-03
2012-01-04
2012-01-05
...

Правильный запуск PHP-скриптов в бекграунде

// Февраль 2, 2012 | 60 просмотров | комментариев (0)

php -q script.php < /dev/null > script.log &

Скорость реакции

// Январь 25, 2012 | 92 просмотров | комментариев (0)

Пересматривая свои старые проекты на своём первом языке Visual Basic я натолкнулся на эту программу.

Предыстория следующая. На курсах вождения, ещё в 2003, у нас была большая картонка с 16 цифрами, расположенными в случайном порядке. Было несколько таких картонок. И нужно было найти глазами подряд все числа от 01 до 16, засекая потраченное время. После чего это время делилось на 16 и получалось среднее время реакции.

Так и получилась эта программка на Visual Basic.
А вот сегодня я решил её переписать на HTML+JavaScript, продлив тем самым её жизнь и заодно показав общественности.
Читать далее…

Перепост: Битовые операции в PHP на примерах

// Декабрь 13, 2011 | 186 просмотров | комментариев (0)

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

Например, встречались такие варианты:

if ($error['type'] == E_ERROR || $error['type'] == E_PARSE || $error['type'] == E_COMPILE_ERROR) { ... }

или

if(in_array($error['type'], array(E_ERROR, E_PARSE, E_COMPILE_ERROR)) { ... }

В связи с этим решил написать небольшую статью о битовых операциях с примерами их использования.
Читать далее…

Страница 1 из 212