Архив рубрики: Программирование

Да будет tiBookCMS

Позавчера решил написатья свою CMSку для книжек. Данная ЦМСка предназначена для выкладывания на ней результатов распознавания книг.

Базы данных не будет, все будет на файлах + кэширование. Первые  строчки написаны…. примерно через недельку будет захостен первый сайт. Посмотрим что да как. 🙂

«Шеф, все пропало»

Да, иногда бывает происходит то чего не ожидаешь… вот у меня каким то образом пропали почти все посты с моего автоблога. Его очень жалко, т.к. он скушался яшей и был подлкючен к Сапе, коя выдавала мне по 6,4 рубля в стуки на ссылках.

Что делать? Бэкапа нет…

В автоблоге по умолчанию, если нет страницы — выдается страница с заголовком 404 и сообщением что такой страницы не существует. Это плохо, т.к. в данной странице нет меток для бирж.. соотвествено ссылки биржей не видятся.

Подумав,  решил немного модифицировать автоблог, чтобы при обращении к несущестувующей странице выдавалась не ошибка, а новый сгенерированный пост.

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

Модифицированные  файлы вы можете скачать

Простой скрипт бэкапа

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

Вот что получилось:

#!/bin/bash

STORE=4
SRC=/tmp/kvlp
DST=/tmp/kvlp_backup

DATE=`date +%Y-%m-%d`
mkdir -p «$DST/$DATE»;

cp -R «$SRC»/* «$DST/$DATE/»
for item in $(find /tmp/kvlp_backup/ * -mtime +»$STORE» -type d)
do
rm -rfd «$item»
done

Думаю что тут все понятно:

STORE — количество дней которое нужно хранить бэкап.

SRC — Директория, данные их которой нужно бэкапировать

DST — Директория где храняться бэкапы.

Простейшая конвертация mysql-дампа в текстовый файл с разделителями полей.

Попросили меня сконвертировать данные  из дампа mysql-базы в текстовый файл с разделителем #.

Читать далее

Простая система кэширования на php

<?

$cacheFile = ‘cache.html’;

if ( (file_exists($cacheFile)) && ((fileatime($cacheFile) + 600) > time()) )
{
$content = file_get_contents($cacheFile);
echo $content;
} else
{
ob_start();
// write content
echo ‘

Hello world to cache

‘;
$content = ob_get_contents();
ob_end_clean();
file_put_contents($cacheFile,$content);
echo $content;
}
?>

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

Я доработал такой алгоритм и скоро опубликую его.

Подсчет ошибок в логе messages.log

Сегодня понадобилось подсчитать количество ошибок по превышению температуры процессора. Данные находятся в messages.log.

Самое простое решение — это написать простенький perl скрипт, который бы брал месяц, число и считало количество появления ошибок в хеше.

Скрипт получилося такой:

 

#!/usr/bin/perl

$filename=’mess4.log’;

open FH,$filename or die $!;

while (<FH>) {

    ~/(\w+)\s*(\d+)\s+(\d+):/;

  #  print «$1 $2 $3\n»;

   if (exists($stat{«$1 $2»})) {$stat{«$1 $2»}+=1;} else { $stat{«$1 $2»}=1;}

}

while (($data,$count)=each(%stat)){

    print «$data\t$count\n»;

}

 

Результат — вывод двух из 3х колонок — МЕСЯЦ, ЧИСЛО, КОЛИЧЕСТВО ОШИБОК.

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

WordPress и wp-noexternallinks

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

Мне на глаза попался плагин wp-noexternallinks, который все ссылки пропускает через файл goto.php, для чего нужно пставить плагин, активировать, настроить его и прописать в .htpaccess строчку преобразования url-а (все это написано в документации).

Я поставил его, сделал все как написано, но при нажатии ссылки сначала выдавались некии ошибки на странице редиректа (goto.php) потом происходил редирект на испорчнеый адрес (к адресу добавлялася символ ; ).

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

<?php
header(‘Content-type: text/html; charset=»utf-8″‘,true);
$url=$_SERVER[‘QUERY_STRING’];
if($url)
{
$url=’http://’.urldecode($url);
@header(‘Location: ‘.$url);
}
?>
<html>
<head>
<title></title>
<meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″ />
<meta name=»robots» content=»noindex,nofollow» />
<?php if($url) echo ‘<meta http-equiv=»refresh» content=»0; url=’.$url.'» />’; ?>
</head>
<body style=»margin:0;»>
Redirecting…
</body>
</html>

С таки файлом редирект работает правильно и без ошибок.

Увеличиваем количество страниц в satellite-x

Недавно в satellite-x появилась замечательная функция — галерея. Настраивается в 2 клика и работает достаточно шустро. Мы же усовершенствуем ее путем увеличения количества страниц — сделаем, чтобы можно было при клике на картинку посмотреть картинку в оригинальном размере.

Делает это очень просто:

Читать далее