Слава нації
#StandWithUkraine

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

Блог з програмування, оптимізації та адміністрування систем

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

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

// 9 Вересня, 2013 | 1114 переглядів | коментар (1)

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

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

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

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

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

// 23 Травня, 2013 | 10331 переглядів | коментарів (0)

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

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

// 30 Березня, 2013 | 4251 переглядів | коментарів (0)

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

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

// 14 Березня, 2013 | 672 переглядів | коментарів (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 | 12519 переглядів | 3 коментарі

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

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

// 17 Липня, 2012 | 6852 переглядів | коментарів (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 | 926 переглядів | коментарів (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 | 201 переглядів | коментарів (0)

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

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

// 25 Січня, 2012 | 201 переглядів | коментарів (0)

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

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

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

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

// 13 Грудня, 2011 | 343 переглядів | коментарів (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)) { ... }

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