24 biblioteki PHP, które warto poznać

PHP Libraries

Muszę to napisać – to niezwykłe być dzisiaj deweloperem języka PHP. Dlaczego? Każdego dnia na światło dzienne wychodzi bardzo dużo użytecznych bibliotek i narzędzi, które usprawniają oraz przyspieszają naszą pracę. W dobie Composera oraz Githuba ich odkrycie nie jest już trudnym zadaniem.

Dzisiejszy wpis będzie właśnie o takich bibliotekach. Poniżej przedstawiam listę 24 narzędzi, które powinniście poznać. Jeżeli uważacie, że powinienem dodać do tej listy coś jeszcze, to dajcie oczywiście znać w komentarzach pod wpisem.

  1. Dispatch – Micro Framework

    Dispatch jest mini frameworkiem. Nie udostępnia on pełnej struktury MVC, ale daje możliwość tworzenia reguł URL oraz lepszą organizację naszej aplikacji. Nadaje się świetnie do prostych projektów oraz API.

    // include the library
    include 'dispatch.php';
    
    // define your routes
    get('/greet', function () {
        // render a view
        render('greet-form');
    });
    
    // post handler
    post('/greet', function () {
        $name = from($_POST, 'name');
        // render a view while passing some locals
        render('greet-show', array('name' => $name));
    });
    
    // serve your site
    dispatch();
  2. Klein – Lightning fast router for PHP

    Klein (PHP 5.3+) jest kolejną biblioteką, która pozwala tworzyć routing URL w prosty i przyjemny sposób. Ma ona bardziej specyficzną składnię niżeli Dispatch, ale jest też bardzo szybka.

    respond('GET', '/posts', $callback);
    respond('POST', '/posts/create', $callback);
    respond('PUT', '/posts/[i:id]', $callback);
    respond('DELETE', '/posts/[i:id]', $callback);
    
    // To match multiple request methods:
    respond(array('POST','GET'), $route, $callback);
    
    // Or you might want to handle the requests in the same place
    respond('/posts/[create|edit:action]?/[i:id]?', function ($request, $response) {
        switch ($request->action) {
            // do something
        }
    });
  3. Ham – Routing Library with Caching

    Ham, to kolejny lekki sposób na definicję naszych URL, ale daje nam coś jeszcze. Wykorzystuje on mechanizm XCache oraz APC do cachowania, co pozwala na znacznie szybsze działanie całości.

    require '../ham/ham.php';
    
    $app = new Ham('example');
    $app->config_from_file('settings.php');
    
    $app->route('/pork', function($app) {
        return "Delicious pork.";
    });
    
    $hello = function($app, $name='world') {
        return $app->render('hello.html', array(
            'name' => $name
        ));
    };
    $app->route('/hello/<string>', $hello);
    $app->route('/', $hello);
    
    $app->run();
  4. Assetic – Asset Management

    Assetic jest biblioteką do zarządzania dodatkowymi komponentami. Pozwala na łączenie oraz minimalizację skryptów JavaScript oraz arkuszy CSS. Zmniejsza tym samym ilość zapytań generowanych do serwera oraz redukuje ilość przesyłanych danych do klienta.

    use Assetic\\Asset\\AssetCollection;
    use Assetic\\Asset\\FileAsset;
    use Assetic\\Asset\\GlobAsset;
    
    $js = new AssetCollection(array(
        new GlobAsset('/path/to/js/*'),
        new FileAsset('/path/to/another.js'),
    ));
    
    // the code is merged when the asset is dumped
    echo $js->dump();
  5. ImageWorkshop – Image Manipulation with Layers

    ImageWorkshop – biblioteka Open Source do manipulacji obrazkami na warstwach. Pozwala zmieniać rozmiar obrazków, przycinać, tworzyć miniatury, dodawać znaki wodne i wiele wiele więcej. Jest to nieco lżejsza  wersja biblioteki Imagine.

    // We initialize the norway layer from the picture norway.jpg
    $norwayLayer = ImageWorkshop::initFromPath('/path/to/images/norway.jpg'); 
    
    // We initialize the watermark layer from the picture watermark.png
    $watermarkLayer = ImageWorkshop::initFromPath('/path/to/images/watermark.png'); 
    
    $image = $norwayLayer->getResult(); // This is the generated image ! 
    
    header('Content-type: image/jpeg');
    imagejpeg($image, null, 95); // We choose to show a JPG with a quality of 95%
    exit;
  6. Snappy – Snapshot/PDF Library

    Snappy pozwoli nam na stworzenie snapshotów z dokumentów PDF, HTML, czy nawet bezpośrednio z adresu URL. Biblioteka wykorzystuje wkhtmltopdf, które dostępne jest na Linuxa, Windowsa oraz OSX.

    require_once '/path/to/snappy/src/autoload.php'; 
    
    use Knp\\Snappy\\Pdf; 
    
    // Initialize the library with the
    // path to the wkhtmltopdf binary:
    $snappy = new Pdf('/usr/local/bin/wkhtmltopdf'); 
    
    // Display the resulting pdf in the browser
    // by setting the Content-type header to pdf: 
    
    header('Content-Type: application/pdf');
    header('Content-Disposition: attachment; filename="file.pdf"'); 
    
    echo $snappy->getOutput('http://www.github.com');
  7. Idiorm – Lightweight ORM Library

    Idiorm to lekka biblioteka ORM. W sposób obiektowy pozwala ona tworzyć zapytania języka SQL bazując na PDO.

    $user = ORM::for_table('user')
        ->where_equal('username', 'j4mie')
        ->find_one();
    
    $user->first_name = 'Jamie';
    $user->save();
    
    $tweets = ORM::for_table('tweet')
        ->select('tweet.*')
        ->join('user', array(
            'user.id', '=', 'tweet.user_id'
        ))
        ->where_equal('user.username', 'j4mie')
        ->find_many();
    
    foreach ($tweets as $tweet) {
        echo $tweet->text;
    }
  8. Underscore – PHP’s Utility Belt

    Underscore to odpowiednik Underscore.js dla jezyka PHP. Biblioteka w zasadzie w 100% pokrywa się z oryginałem z języka JavaScript. Jest to rozwinięcie składni języka o nowe funkcje, które pozwalają manipulować danymi. Są to funkcje znane i zaczerpnięte z języków funkcyjnych, takich jak na przykład Scala, czy Python.

    __::each(array(1, 2, 3), function($num) { echo $num . ','; }); // 1,2,3,
    
    $multiplier = 2;
    __::each(array(1, 2, 3), function($num, $index) use ($multiplier) {
      echo $index . '=' . ($num * $multiplier) . ',';
    });
    // prints: 0=2,1=4,2=6,
    
    __::reduce(array(1, 2, 3), function($memo, $num) { return $memo + $num; }, 0); // 6
    
    __::find(array(1, 2, 3, 4), function($num) { return $num % 2 === 0; }); // 2
    
    __::filter(array(1, 2, 3, 4), function($num) { return $num % 2 === 0; }); // array(2, 4)
  9. Requests – Easy HTTP Requests

    Requests to tak naprawdę nakładka na cURL pozwalająca wykonywać zapytania HTTP bezpośrednio w języku PHP.

    $headers = array('Accept' => 'application/json');
    $options = array('auth' => array('user', 'pass'));
    $request = Requests::get('https://api.github.com/gists', $headers, $options);
    
    var_dump($request->status_code);
    // int(200)
    
    var_dump($request->headers['content-type']);
    // string(31) "application/json; charset=utf-8"
    
    var_dump($request->body);
    // string(26891) "[…]"
  10. Buzz – Simple HTTP Request Library

    Buzz – kolejna biblioteka PHP do wykonywania zapytań HTTP, będąca tym samym nakładką na cURL. Korzystam z niej często w różnych projektach, ale ostatnio coraz częściej wykorzystuję Guzzle.

    $request = new Buzz\\Message\\Request('HEAD', '/', 'http://google.com');
    $response = new Buzz\\Message\\Response();
    
    $client = new Buzz\\Client\\FileGetContents();
    $client->send($request, $response);
    
    echo $request;
    echo $response;
  11. Goutte – Web Scraping Library

    Goutte – biblioteka, która pozwala pobierać konkretne elementy z innych stron. Posiada API, które daje nam metody do pobierania konkretnych danych. Spójrzcie na przykład poniżej.

    require_once '/path/to/goutte.phar'; 
    
    use Goutte\\Client; 
    
    $client = new Client();
    $crawler = $client->request('GET', 'http://www.symfony-project.org/'); 
    
    // Click on links: 
    
    $link = $crawler->selectLink('Plugins')->link();
    $crawler = $client->click($link); 
    
    // Extract data with a CSS-like syntax: 
    
    $t = $crawler->filter('#data')->text(); 
    
    echo "Here is the text: $t";
  12. Carbon – DateTime Library

    Carbon jest API, a zarazem rozszerzeniem dla DateTime. Biblioteka udostępnia szereg nowych metod do operowania na obiektach daty i czasu. Istnieje jeszcze ‘fork’ projektu na Githubie, który wydaje się być bardziej i częściej rozwijany niż sam pierwowzór – Datum.

    printf("Right now is %s", Carbon::now()->toDateTimeString());
    printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver'));
    
    $tomorrow = Carbon::now()->addDay();
    $lastWeek = Carbon::now()->subWeek();
    $nextSummerOlympics = Carbon::createFromDate(2012)->addYears(4);
    
    $officialDate = Carbon::now()->toRFC2822String();
    
    $howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;
    
    $noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London');
    
    $endOfWorld = Carbon::createFromDate(2012, 12, 21, 'GMT');
    
    // comparisons are always done in UTC
    if (Carbon::now()->gte($endOfWorld)) {
        die();
    }
    
    if (Carbon::now()->isWeekend()) {
        echo 'Party!';
    }
    
    echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago'
  13. Ubench – Micro Benchmarking Library

    Ubench to mikro framework do przeprowadzania testów wydajnościowych w naszym kodzie PHP. Pozwala monitorować zużycie pamięci oraz czas wykonania.

    use Ubench\\Ubench;
    
    $bench = new Ubench;
    
    $bench->start();
    
    // Execute some code
    
    $bench->end();
    
    // Get elapsed time and memory
    echo $bench->getTime(); // 156ms or 1.123s
    echo $bench->getTime(true); // elapsed microtime in float
    echo $bench->getTime(false, '%d%s'); // 156ms or 1s
    
    echo $bench->getMemoryPeak(); // 152B or 90.00Kb or 15.23Mb
    echo $bench->getMemoryPeak(true); // memory peak in bytes
    echo $bench->getMemoryPeak(false, '%.3f%s'); // 152B or 90.152Kb or 15.234Mb
    
    // Returns the memory usage at the end mark
    echo $bench->getMemoryUsage(); // 152B or 90.00Kb or 15.23Mb
  14. Validation – Input Validation Engine

    Validation – chyba najlepsza i najbardziej kompleksowa biblioteka do walidacji danych w języku PHP. Zresztą spójrzcie sami na przykład:

    use Respect\\Validation\\Validator as v; 
    
    // Simple Validation 
    
    $number = 123;
    v::numeric()->validate($number); //true 
    
    // Chained Validation 
    
    $usernameValidator = v::alnum()->noWhitespace()->length(1,15);
    $usernameValidator->validate('alganet'); //true 
    
    // Validating Object Attributes 
    
    $user = new stdClass;
    $user->name = 'Alexandre';
    $user->birthdate = '1987-07-01'; 
    
    // Validate its attributes in a single chain: 
    
    $userValidator = v::attribute('name', v::string()->length(1,32))
                      ->attribute('birthdate', v::date()->minimumAge(18)); 
    
    $userValidator->validate($user); //true
  15. Filterus – Filtering Library

    Filterus jest kolejną biblioteką do walidacji danych, ale pozwala wyłącznie na.. walidację danych i ich filtrację.

    $f = Filter::factory('string,max:5');
    $str = 'This is a test string'; 
    
    $f->validate($str); // false
    $f->filter($str); // 'This '
  16. Faker – Fake Data Generator

    Faker pozwala na generowanie przykładowych danych na potrzeby naszych projektów. Wykorzystany może być na przykład do wypełnienia naszej bazy danych przykładowymi danymi.

    // require the Faker autoloader
    require_once '/path/to/Faker/src/autoload.php';
    
    // use the factory to create a Faker\Generator instance
    $faker = Faker\\Factory::create();
    
    // generate data by accessing properties
    echo $faker->name; // 'Lucy Cechtelar';
    
    echo $faker->address;
      // "426 Jordy Lodge
      // Cartwrightshire, SC 88120-6700"
    
    echo $faker->text;
      // Sint velit eveniet. Rerum atque repellat voluptatem quia ...
  17. Mustache.php – Elegant Templating Library

    Mustache, to popularny silnik do tworzenia szablonów. Wyobraźcie sobie Smarty lub Twig, ale w nieco lżejszej formie.

    $m = new Mustache_Engine;
    echo $m->render('Hello {{planet}}', array('planet' => 'World!')); // "Hello World!"
  18. Gaufrette – File System Abstraction Layer

    Gaufrette, to pewien sposób abstrakcyjna warstwa do operowania naszym systemem plików. Pozwala na pracę z lokalnymi plikami, serwerami FTP, a nawet chmurą Amazon S3. Uwalnia pisanie projektów od niskopoziomowego myślenia w tym obszarze. Udostępnia także mechanizmy cachowania z wykorzystaniem pamięci.

    use Gaufrette\\Filesystem;
    use Gaufrette\\Adapter\\Ftp as FtpAdapter;
    use Gaufrette\\Adapter\\Local as LocalAdapter; 
    
    // Local files:
    $adapter = new LocalAdapter('/var/media'); 
    
    // Optionally use an FTP adapter:
    // $ftp = new FtpAdapter($path, $host, $username, $password, $port); 
    
    // Initialize the filesystem:
    $filesystem = new Filesystem($adapter); 
    
    // Use it: 
    
    $content = $filesystem->read('myFile');
    $content = 'Hello I am the new content';
    $filesystem->write('myFile', $content);
  19. Omnipay – Payment Processing Library

    Omnipay jest biblioteką, która jest w zasadzie klientem dla wielu systemów płatności. Wykorzystuje ona API udostępniane przez dostawców usług płatności by dać nam jednolity interfejs.

    use Omnipay\\CreditCard;
    use Omnipay\\GatewayFactory;
    
    $gateway = GatewayFactory::create('Stripe');
    $gateway->setApiKey('abc123');
    
    $formData = ['number' => '4111111111111111', 'expiryMonth' => 6, 'expiryYear' => 2016];
    $response = $gateway->purchase(['amount' => 1000, 'card' => $formData]);
    
    if ($response->isSuccessful()) {
        // payment was successful: update database
        print_r($response);
    } elseif ($response->isRedirect()) {
        // redirect to offsite payment gateway
        $response->redirect();
    } else {
        // payment failed: display message to customer
        exit($response->getMessage());
    }
  20. Upload – For Handling File Uploads

    Upload, to biblioteka, która – jak nie trudno się domyślić po nazwie – upraszcza ‘upload’ plików na serwer wraz z walidacją przesyłanych danych.

    $storage = new \\Upload\\Storage\\FileSystem('/path/to/directory');
    $file = new \\Upload\\File('foo', $storage);
    
    // Validate file upload
    $file->addValidations(array(
        // Ensure file is of type "image/png"
        new \\Upload\\Validation\\Mimetype('image/png'),
    
        // Ensure file is no larger than 5M (use "B", "K", M", or "G")
        new \\Upload\\Validation\\Size('5M')
    ));
    
    // Try to upload file
    try {
        // Success!
        $file->upload();
    } catch (\Exception $e) {
        // Fail!
        $errors = $file->getErrors();
    }
  21. HTMLPurifier – HTML XSS Protection

    HTMLPurifier, to biblioteka, która ochronić ma nas przed atakami typu XSS. Zapewnia ochronę poprzez filtrację przesyłanych danych z użyciem parserów oraz zdefiniowanych list szkodliwych wywołań.

    require_once '/path/to/HTMLPurifier.auto.php';
    
    $config = HTMLPurifier_Config::createDefault();
    $purifier = new HTMLPurifier($config);
    $clean_html = $purifier->purify($dirty_html);
  22. ColorJizz-PHP – Color Manipulation Library

    ColorJizz pozwala nam na przechodzenie pomiędzy różnymi formatami reprezentacji poszczególnych kolorów. Hex -> CMYK przestaje być już problemem i vice versa.

    use MischiefCollective\\ColorJizz\\Formats\\Hex;
    
    $red_hex = new Hex(0xFF0000);
    $red_cmyk = $hex->toCMYK();
    echo $red_cmyk; // 0,1,1,0
    
    echo Hex::fromString('red')->hue(-20)->greyscale(); // 555555
  23. PHP Geo – Geo Location Library

    PHP Geo, to biblioteka pozwalająca na obliczanie odległości pomiędzy dwoma punktami na mapie z bardzo dużą precyzją.

    use Location\\Coordinate;
    use Location\\Distance\\Vincenty;
    
    $coordinate1 = new Coordinate(19.820664, -155.468066); // Mauna Kea Summit
    $coordinate2 = new Coordinate(20.709722, -156.253333); // Haleakala Summit
    
    $calculator = new Vincenty();
    $distance = $calculator->getDistance($coordinate1, $coordinate2);
    // returns 128130.850 (meters; ≈128 kilometers)
  24. ShellWrap – Beautiful Shell Wrapper

    ShellWrap, to biblioteka będąca nakładką na komendy w systemie Linux / Unix. Pozwala ona na ich bezpośrednie wykonanie oraz pobranie rezultatu w kodzie PHP.

    require 'ShellWrap.php';
    use \\MrRio\\ShellWrap as sh; 
    
    // List all files in current dir
    echo sh::ls(); 
    
    // Checkout a branch in git
    sh::git('checkout', 'master'); 
    
    // You can also pipe the output of one command, into another
    // This downloads example.com through cURL, follows location, then pipes through grep to
    // filter for 'html'
    echo sh::grep('html', sh::curl('http://example.com', array(
        'location' => true
    ))); 
    
    // Touch a file to create it
    sh::touch('file.html'); 
    
    // Remove file
    sh::rm('file.html'); 
    
    // Remove file again (this fails, and throws an exception because the file doesn't exist) 
    
    try {
        sh::rm('file.html');
    } catch (Exception $e) {
        echo 'Caught failing sh::rm() call';
    }

Mobilna detekcja – lekka i przyjemna z PHP

PHP Mobile Detect

Jeżeli pracujemy nad projektami stron / aplikacji internetowych, które mają być również dostępne na urządzeniach mobilnych, to w 99% przypadków zmuszeni jesteśmy do konkretnej identyfikacji urządzeń. Pozwala nam to dostosować układ strony pod konkretny smartfon, tablet, czy inne urządzenie przenośne. Zwykle chcemy także wiedzieć jakie funkcje dostępne są na danym urządzeniu oraz z jakim oprogramowaniem i w jakiej wersji mamy do czynienia.

Pisałem już wprawdzie o detekcji mobilnej przeglądarki, ale w tym przypadku możemy skorzystać z potężnej biblioteki, jaką jest WURFL (o niej również pisałem WURFL – dodatkowa porcja informacji), ale jest to straszny kombajn, który pozwala na bardzo dużo i tak naprawdę w typowych projektach nie wykorzystamy nawet połowy jego możliwości. Jeżeli zależy nam na “lekkości” oraz prostocie wykorzystywanej biblioteki, to z pewnością warto zwrócić uwagę na Mobile Detect. Samą bibliotekę znalazłem w zakamarkach Githuba – polecam notabene tam zaglądać, bo czasami naprawdę fajne rzeczy można znaleźć.

Przykładowe wykorzystanie

include 'Mobile_Detect.php';
$detect = new Mobile_Detect();

// Check for any mobile device.
if ($detect->isMobile())

// Check for any tablet.
if ($detect->isTablet())

// Check for any mobile device, excluding tablets.
if ($detect->isMobile() && !$detect->isTablet())

I trochę bardziej konkretny przykład kodu

// Alternative to $detect->isAndroidOS()
$detect->is('AndroidOS');

// Batch usage
foreach($userAgents as $userAgent){
  $detect->setUserAgent($userAgent);
  $isMobile = $detect->isMobile();
}

// Version check.
$detect->version('iPad'); // 4.3 (float)

Możecie się także zapoznać z DEMEM, które przedstawia użycie biblioteki, a ją samą pobrać spod adresu: https://github.com/serbanghita/Mobile-Detect

Dobrze, że istnieje Open Source :)

Roundup #4 – Metro UI CSS, Smart Time Ago, Royal Slider, BBSearch, MDMagick, Bootswatch, Document-Bootstrap, DownloadBuilder, Strapdown, FileDrop

Roundup #4 - Metro UI CSS, Smart Time Ago, Royal Slider, BBSearch, MDMagick, Document-Bootstrap, DownloadBuilder, Strapdown

Nazbierało się trochę tego przez ostatnie dwa dni. Staram się i tak wybierać tylko niektóre i co ciekawsze projekty, bo nie byłbym w stanie opisać tutaj wszystkiego. Zapraszam do lektury kolejnego Roundup.

Metro UI CSS

Framework Metro UI CSS, który stworzony został przez jednego z twórców interfejsu Metro dla nadchodzącego Windows 8. Jest to zbiór klas CSS i elementów UI, które pozwalają zbudować genialnie wyglądający interfejs w oparciu o Metro. Posiada wsparcie dla przeglądarek: IE 9+, Chrome, Opera, Safari oraz Firefox.

Metro UI CSS – A set of styles to create a site similar to the Windows 8 Metro UI


Smart Time Ago

Dodatek do jQuery, który wykorzystując znacznik <time> z  HTML5 i funkcję JavaScript do pokazania nam ilości minionego czasu od danej daty i godziny.

 <time class="timeago" datetime="2012-07-18T07:51:50Z">about 8 hours ago</time>

Smart Time Ago – A jQuery Plugin For Relative Timestamps


Royal Slider

Jedno z wielu narzędzi do pokazu slajdów. Zbudowane w oparciu o CSS3, HTML5 oraz samą bibliotekę jQuery. Potrafi obsłużyć praktycznie każdy element na stronie – od zwykłych obrazków, po treść w formie HTML i filmiki wideo. Oprócz tego, że Royal Slider jest bardzo rozbudowany i posiada bardzo dużo ciekawych opcji, to na dodatek prezentuje się bardzo efektownie. Poza tym – wykorzystuje technikę responsive, a więc Royal Slider może być użyty do budowy wersji mobilnych stron.

Royal Slider – A Powerful, Professional And Responsive jQuery Slider


BBSearch

Narzędzie zbudowane w oparciu o JavaScript. Powoduje zamianę elementu <input> na interaktywne pole do automatycznego wyszukiwania oraz zwracania wyników na bazie Backbone.

Współpracuje także z JSONP API, takimi jak Github, czy Twitter. Przykładowe wykorzystanie można zobaczyć na stronie autora.

$('#search-input-1').bbsearch({
  url: 'https://api.github.com/legacy/repos/search/#bbsearch-query#?callback=?&'
, itemTemplate: '<p>[@<%= owner %>] <a href="<%= url %>"><%= name %></a></p>'
, resultsElement: $('#results-1')
, parse: function(response) { return response.data.repositories; }
});

MDMagick

Bardzo proste i łatwe w integracji narzędzie, zbudowane przez tego samego autora, który stworzył wyżej wspomiane BBSearch. Pozwala na przekształcenie elementów takich jak <input>, czy <textarea> w interaktywny edytor WYSIWYG treści HTML w oparciu o Markdown, który znamy chociażby z Github’a.

$('.css-selector').mdmagick();

Autor na swojej stronie prezentuje przykładowe wykorzystanie MDMagick i muszę stwierdzić, że prezentuje się ono bardzo ciekawie.


Bootswatch

Katalog darmowych szablonów do Twitter Bootstrap. Możemy dzięki temu zaoszczędzić sporo czasu na tworzenie własnego wyglądu i skorzystać z już gotowej paczki. Całość prezentuje się naprawdę dobrze.


Document-Bootstrap

Kolejny ciekawy projekt, który wykorzystując JavaScript, bibliotekę jQuery i ponownie Twitter Bootstrap daje nam tak zwany Boilerplate do tworzenia prostych i przyjemnych dla oka stron, gdzie opisywać możemy swoje projekty. Jest to skierowane głównie do deweloperów, takich jak autorzy tych wszystkich projektów, które tutaj prezentuję. Pozwala im to zaoszczędzić sporo czasu na tworzeniu takich dokumentów od nowa. Jest to też alternatwa dla Github Pages.


DownloadBuilder

Projekt wykorzystujący HTML 5 File System API do łączenia wielu plików w jeden. Mam tutaj na myśli łączenie wielu plików CSS czy JavaScript. Wpiera także łączenie plików hostowanych bezpośrednio na Github’ie. Zapytania Ajax/JSONP trzymane są w cache przy użyciu sessionStorage.


Strapdown

Strapdown.js – Creating elegant Markdown documents couldn’t be simpler

To kolejny projekt wykorzystujący Markdown do budowania prostych stron do opisu projektów. Jest to bardzo podobne narzędzie do Document-Bootstrap i na dodatek wykorzystujące Bootswatch, które także wspomniane zostało wyżej.


FileDrop

Cross-Browser Drag ‘n’ Drop File Uploader: FileDrop

Bardzo “lekka” biblioteka JavaScript do tak zwanego Drag ‘n’ Drop jeśli chodzi o uploader plików w przeglądarce. Jak sam autor przyznaje – nie wymaga wsparcia żadnych frameworków JavaScript. Wspiera za to szereg przeglądarek: Firefox 3.6, Internet Explorer 6, Google Chrome 7, SRWare Iron 4, Apple Safari 5 and Opera 11.61.


[1], [2], [3]

Roundup #2 – Circle Hover, AuthManager, HTML5 File Upload, CSSComb, HubSearch, canvas-charts, Motown

Roundup #2Circle Hover

Serwis Codrops jak zawsze dostarcza nam ciekawych artykułów. Tym razem jest to tutorial o tym, jak stworzyć ciekawe efekty :hover w formie kółek z wykorzystaniem animacji CSS oraz przejść 3D w CSS3.


AuthManager - Open Source User Authentication & Management

AuthManager

Jest to bilbioteka Open Source dla PHP. W oparciu o bazę MySQL pozwala ona na autentykację oraz zarządzanie użytkownikami, wykorzystując przy tym możliwości jakie daje nam integracja z serwisami społecznościowymi, takimi jak Facebook. Jest to narzędzie bardzo podobne do innej biblioteki dla PHP, jaką jest HybridAuth.

  • Protect your content with just few lines of code.
  • Login via Facebook Connect.
  • Spam protection using reCAPTCHA.
  • Google Analytics integration.
  • User access logs.
  • Email Templates.
  • Translation ready. Can be translated in any language.

Create a HTML5 Drag & Drop File Uploader with jQuery

HTML5 File Upload

Kolejny tutorial. Serwis InsertHTML opublikował poradnik, który pokazuje nam jak za pomocą HTML5, jQuery i kilku linijek w PHP możemy zbudować upload plików wykorzystujący technikę Drag & Drop oraz Local Storage z HTML5.


Greatest tool for sorting CSS properties in specific order

CSSComb

Jestem pewien, że każda osoba, która związana jest z pisaniem styli w CSS doceni to narzędzie. W Internecie jest wiele podobnych, darmowych serwisów, które są w stanie uporządkować nieco nasz arkusz styli. Żaden jednak nie potrafi zrobić tego w określonym porządku i wedle określonych zasad, które sami jesteśmy stanie stworzyć. To podejście stara się zmienić serwis CSSComb, który pozwala na sortowanie i robienie porządku w naszym ‘styles.css’ wedle określonej kolejności, którą definiujemy w prosty sposób przed samym użyciem narzędzia.


HubSearch is a GitHub search interface built with Bootstrap, Underscore, jQuery

HubSearch

Jest to niezależny interfejs dla GitHuba zbudowany przy użyciu między innymi Backbone, Underscore i jQuery. Pozwala na przeszukiwanie repozytoriów pod kątem konkretnego języka i słów kluczowych.


canvas-charts

Biblioteka JavaScript, która – wykorzystując HTML5 Canvas API – pozwala na budowanie wykresów. Typy tworzonych grafów to nic innego jak dodatkowe pluginy, które możemy dołączyć do interfejsu renderowania w naszym kodzie.


Motown

Kolejna biblioteka, dająca tym razem możliwość tworzenia interfejsów opartych o Metro, które pojawi się nam jesienią razem z najnowszym Windows 8. Całość zbudowana została przy użyciu  HTML, CSS i JavaScript.


[1], [2], [3], [4], [5]