Категория "Полезен код"

PHP Rest Framework

Наложи ми се да правя PHP Rest Framework и реших да заснема процеса на изграждането му – на някой може пък да му е полезна тази серия от уроци.  Видеата са 15, а общата им дължина е 3 часа, 28 минути.

Infostart & Falling Rocks

InfoStart

След първото ми място на Националната олимпиада по Информационни технологии, се записах за участие в платформата „Infostart“ на „Информационно обслужване“ АД. Тя цели да обучи компютърни специалисти за минимално време, като за лектори са избрани едни от най-добрите специалисти в ИТ-индустрията в България, пр. Светлин Наков (надали има някой тукашен програмист, който да не е чувал за него). Най-добрите получават сертификат за успешно преминато обучение, а тези, които са записани присъствено, вземат дори и удостоверение за средно-специално образование, издадено от МОН. Записах се за квалифициране в специалността „Софтуерен специалист“.

ApiGen – Що е то и как се използва?

Здравейте! Днес ми се наложи да използвам ApiGen. Лично на мен много ми хареса и за това реших да направя този урок.

Що е ApiGen?

ApiGen

ApiGen е инструмент за създаване на професионална API документация за PHP проекти. Подобен е на phpDocumentator/phpDoc.

ApiGen използва:

  • Темплейтната система на Nette Framework  и Texy, за да прави полезна и лесна за четене HTML документация;
  • FSH, за да подчертава изходния код (highlighting);
  • TokenReflection, за да описва документирания изходен код.

Шрифт за театрален афиш

Здравейте!

Днес ми се наложи да намеря по спешност шрифта, с който изброяват актьорите в даден филм на афиш. Знаете го… с едни високи и тесни букви, които са и сгъчкани.

Е, намерих такива шрифтове, но те не поддържаха кирилица и за това изпозвах един трик в Adobe Photoshop, който мисля да ви го дам. Ето и стъпките:

  • Отворете прозореца Character на Photoshop.
  • Изберете текстовия елемент, чийто шрифт искате да промените
  • Сменете стойността на полето Horizontally scale на 60%:
  • Натиснете Enter
Стъпки

Стъпки

Надявам се, че съм ви помогнал! Ако имате някакви въпроси – питайте 🙂

Pagination Script [PHP]

Здравейте! Тъй като работех по един проект, ми се наложи да си направя скрипт за странициране. Реших да го лицензирам под MIT, за да може всеки, който иска да го използва без граници :). Можете да видите кода в PasteBin като кликнете тук, или просто да го копирате от тук:

<?php
/* Pagination script v0.1
 * Author: Yasen Georgiev
 * Email: avbincco@gmail.com
 * Web site: http://ygeorgiev.com/
 * License: MIT - http://ygeorgiev.com/licenses/MIT-LICENSE
*/

$commentsPerPage = 5; // Items per page
$currentPage = (int)$_GET['p']; // Your pagination's GET parameter
$getNumRows = mysql_num_rows(mysql_query('SELECT `column` FROM `table`')); // Set your Query to get count of the results in table
$totalPages = $getNumRows/$commentsPerPage;
$intvalPages = intval($totalPages);
$lastPage = ceil($getNumRows / $commentsPerPage);
$paginationPath = 'page.php?id='.(int)$_GET['id'].'&p='; //Set your URL path

if($totalPages-$intvalPages>0) {
    $totalPages = $intvalPages+1;
}

if($currentPage <= 1 || $currentPage>$totalPages) {
    $start = 0;
    $end = $commentsPerPage;
    $currentPage = "1";
} else {
    $start = ($currentPage-1)*$commentsPerPage+1;
    $end = $currentPage*$commentsPerPage;
}
if($lastPage>1) {
    if($currentPage > 1) {
        $pagesNum .= '<a href="'.$paginationPath.($currentPage-1).'">« Previous page</a> ';
    }
    if($lastPage <= 10) {
        for ($i = 1; $i <= $lastPage; $i++) {
            $pagesNum .= '<a href="'.$paginationPath.$i.'">'.$i.'</a> | ';
        }
    } else {
        if($currentPage <= 5) {
            for($i = 1; $i <= 10; $i++) {
                $pagesNum .= ' | <a href="'.$paginationPath.$i.'">'.$i.'</a> ';
            }
            $pagesNum .= ' | ... | <a href="'.$paginationPath.$lastPage.'">'.$lastPage.'</a> | ';
        } elseif($currentPage > 5 && $currentPage < ($lastPage-5)) {
            $pagesNum .= ' | <a href="'.$paginationPath.'1">1</a> | ... | ';
            for($i = $currentPage-3; $i <= $currentPage+3; $i++) {
                $pagesNum .= '<a href="'.$paginationPath.$i.'">'.$i.'</a> | ';
            }
            $pagesNum .= ' ... | <a href="'.$paginationPath.$lastPage.'">'.$lastPage.'</a> | ';
        } elseif($currentPage >= ($lastPage-5)) {
            $pagesNum .= ' | <a href="'.$paginationPath.'1">1</a> | ... | ';
            if($currentPage < ($lastPage-2)) {
                for($i = $currentPage-3; $i <= $currentPage + 3; $i++) {
                    $pagesNum .= '<a href="'.$paginationPath.$i.'">'.$i.'</a> | ';
                }
            } else {
                for($i = $lastPage - 5; $i <= $lastPage; $i++) {
                    $pagesNum .= '<a href="'.$paginationPath.$i.'">'.$i.'</a> | ';
                }
            }
        }
    }
    if($currentPage < $lastPage) {
        $pagesNum .= ' <a href="'.$paginationPath.($currentPage+1).'">Next page »</a>';
    }
    $nomeration = str_replace('<a href="'.$paginationPath.$currentPage.'">'.$currentPage.'</a>','<b>'.$currentPage.'</b>',$pagesNum);
}

echo $nomeration; //Show the pagination
?>

Warning: Undefined variable $wp_sh_class_name in /home/ygeorgi/public_html/blog_old/wp-content/plugins/wp-syntaxhighlighter/wp-syntaxhighlighter.php on line 1002

Warning: Undefined variable $wp_sh_class_name in /home/ygeorgi/public_html/blog_old/wp-content/plugins/wp-syntaxhighlighter/wp-syntaxhighlighter.php on line 1002

Fatal error: Uncaught Error: Undefined constant "XML" in /home/ygeorgi/public_html/blog_old/wp-content/plugins/wp-syntaxhighlighter/wp-syntaxhighlighter.php:1048 Stack trace: #0 /home/ygeorgi/public_html/blog_old/wp-content/plugins/wp-syntaxhighlighter/wp-syntaxhighlighter.php(979): wp_sh_load_scripts_on_footer() #1 /home/ygeorgi/public_html/blog_old/wp-includes/class-wp-hook.php(308): wp_sh_check_valid_tag('') #2 /home/ygeorgi/public_html/blog_old/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters(NULL, Array) #3 /home/ygeorgi/public_html/blog_old/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #4 /home/ygeorgi/public_html/blog_old/wp-includes/general-template.php(3059): do_action('wp_footer') #5 /home/ygeorgi/public_html/blog_old/wp-content/themes/ygeorgiev2014/footer.php(16): wp_footer() #6 /home/ygeorgi/public_html/blog_old/wp-includes/template.php(783): require_once('/home/ygeorgi/p...') #7 /home/ygeorgi/public_html/blog_old/wp-includes/template.php(718): load_template('/home/ygeorgi/p...', true, Array) #8 /home/ygeorgi/public_html/blog_old/wp-includes/general-template.php(92): locate_template(Array, true, true, Array) #9 /home/ygeorgi/public_html/blog_old/wp-content/themes/ygeorgiev2014/index.php(102): get_footer() #10 /home/ygeorgi/public_html/blog_old/wp-includes/template-loader.php(106): include('/home/ygeorgi/p...') #11 /home/ygeorgi/public_html/blog_old/wp-blog-header.php(19): require_once('/home/ygeorgi/p...') #12 /home/ygeorgi/public_html/blog_old/index.php(17): require('/home/ygeorgi/p...') #13 {main} thrown in /home/ygeorgi/public_html/blog_old/wp-content/plugins/wp-syntaxhighlighter/wp-syntaxhighlighter.php on line 1048