Jeśli przyjdzie nam do głowy skopiowanie struktury widoku view1 do tabeli table1, to po takiej komendzie: CREATE TABLE table1 LIKE view1; dostaniemy komunikat, że to to nie jest BASE TABLE. Jeśli nie jesteśmy amatorami ręcznego klepania danych to można trochę inaczej podejść do tematu: create table table1 select * from view1 where 1 = 0;
Aby przygotować sobie środowisko do pracy czasami trzeba lokalnie uruchomić serwer www. Jak zrobić to szybko i sprawnie? Wpisać w konsoli sudo gedit /etc/apache2/sites-available/strona1 w edytorze wpisać treść <VirtualHost 127.0.1.10:80> ServerName strona1 ServerAdmin root@localhost DocumentRoot /home/user/NetBeansProjects/strona1 <Directory /home/user/NetBeansProjects/strona1> Options FollowSymLinks AllowOverride All </Directory> </VirtualHost> zapisujemy plik i tworzymy link symboliczny sudo ln -s /etc/apache2/sites-available/strona1 /etc/apache2/sites-enabled/strona1 … Continue reading "Apache i virtual host"
rozpakowanie tar -zxvf filename.tar.gz pakowanie tar -czf files.tar.gz *.txt tar czf filename.tar.gz directory rozpakowanie gunzip filename.gz pakowanie gzip -d filename gzip -d filename.gz
Gdy repozytorium wędruje na inny serwer trzeba to zaaktualizować w kopiach roboczych. Ale jak to zrobić? Oto rozwiązanie: svn switch --relocate svn://old.example.pl/trunk svn://new.example.pl/trunk
Czasami potrzeba zrobić zmieniający się obrazek po najechaniu myszką w sposób najprostszy z możliwych. Oto więc on. Najpierw dodajemy krótki skrypt w javascript. function imgChange( o, img ) { o.src = img; } Potem już tylko przy osadzaniu obrazka w html’u. <img onmouseover="imgChange(this, '/img/1b.png')" onmouseout="imgChange(this, '/img/1a.png')" src="/img/1a.png" border="0" />
Jak zrobić przycisk np. pod formularzem który będzie się zmieniał po najechaniu na niego myszką? W tym przykładzie zastosowałem plik graficzny zamiast standardowego przycisku daje to większe możliwości. Przycisk umieszczamy korzystając z html’a: <input id="sa" src="button-off.png" type="image" /> a całym zmienianiem zajmie się jQuery: <script src="jquery_lib.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function () { $("#sa").mouseover(function(){ $("#sa").attr('src', 'button-on.png'); … Continue reading "Jak zrobić zmieniający się przycisk?"
Ciekawostką jest to, że w języku polskim można z dużym prawdopodobieństwem określić płeć osoby na podstawie imienia. Tu mamy przykład jak to zrobić już podczas pobierania danych z bazy. SELECT ... IF( lcase( substr( imie, -1 ) ) = 'a', 'K', 'M' ) AS PLEC ... FROM ...
Czasami przydaje się mieć policzony wiem już przy wyciąganiu danych z bazy. Ten przykład pokazuje jak to zrobić na podstawie daty urodzenia zapisanej w bazie. SELECT ... YEAR( CURRENT_DATE( ) ) - YEAR( data_urodzenia ) AS WIEK ... FROM ... Oczywiście to jest jeden z przykładów zastosowania operacji na datach ale sądzę, że bardzo praktyczny.
Ciekawy pomysł na zastąpienie zwykłej funkcji md5. Zwiększa to mocno bezpieczeństwo takiego hasła. /** * Zwraca hash hasła. * * @param string $password * @return string */ public function getHashPassword($password) { $algorithm = 'sha512'; //algorytm haszowania $hashKey = 'ec457d0a974c48d5685a7efa03d137dc8bbde7e3'; //dodatkowy ciąg znaków komplikujący hasło return hash($algorithm, $password.$hashKey); }
O wersjonowaniu już kiedyś było „Wersjonowanie aplikacji” a tym razem opiszę jak można to robić automatycznie. W wymienionym wyżej artykule był opisany sposób wersjonowania w postaci x.y.z my teraz zajmiemy się pozycją z. Te wcześniejsze powinny być aktualizowane ręcznie ze względu na ich dość duże znaczenie. Można założyć iż ostatnia pozycja oznacza nie wielkie zmiany. … Continue reading "Automatyczne wersjonowanie"
Czasami jest taka sytuacja, że trzeba skasować rekordy z jednej tabeli ale trzeba zachować pewne relacje. W przykładzie poniżej mamy dwie tabele category_person, category i musimy się pozbyć rekordów z pierwszej z nich ale z uwzględnieniem wartości pola z drugiej. DELETE category_person FROM category_person, category WHERE category_person.person_id = 1 AND category.type = 'admin' AND category_person.category_id … Continue reading "Kasowanie z jednej tabeli z uwzględnieniem relacji"
W jednym z wcześniejszych wpisów „Klasa dostępu do bazy danych” użyłem klasy do przechowywania wyników zapytań w cache. Przyszła więc pora na prezentację tej klasy. Przy jej pomocy można do cache zapisywać nie tylko wyniki zapytań sql ale też dowolne inne dane. Wadą tego rozwiązania jest brak automatycznego czyszczenia cache. Może to doprowadzić do wygenerowania … Continue reading "Cache zapytań SQL"
Czasami jest potrzebna szybko gotowa funkcja generowania losowego hasła. Ale tak aby hasło nie było zbyt mocno skomplikowane ale na tyle aby zbyt łatwo nie można było go złamać. Mam nadzieję, że komuś się przyda ten gotowiec. public function generatePassword($limit = 7) { $p = ''; for($i = 1; $i <= $limit; $i++) { switch … Continue reading "Generowanie losowego hasła"
Jest wiele gotowych rozwiązań dostępu do bazy danych ale czasami jest potrzebna prosta przejrzysta klasa. W której można łatwo się rozeznać a jednocześnie jest bardzo elastyczna. A oto moja propozycja. Oto ogólna klasa zapewniejąca dostęp do bazy danych. define("PROGRAM_PATH", str_replace($_SERVER["SCRIPT_NAME"], '', $_SERVER["SCRIPT_FILENAME"])); define("MODEL_PATH", PROGRAM_PATH."/model"); //ustawienia cache define("CACHE_DB", true); define("CACHE_DB_PATH", PROGRAM_PATH."/cache/db"); define("DB_PATH", MODEL_PATH."/db"); //konfiguracja bazy danych … Continue reading "Klasa dostępu do bazy danych"
Kontrola dostępu z angielska ACL (Access Control List) czyli kto? co może? Prawie każdy serwis www który ma możliwość logowania się użytkowników musi mieć ACL. Co to jest i jak działa? Można go podzielić na trzy elementy: zasoby (resources) – dowolny element, to może być cała strona lub jej fragment (np. formularz) a nawet jedna … Continue reading "Kontrola dostępu czyli ACL w praktyce"
Jeżeli odwołujemy się do niezdefiniowanej klasy i zadeklarowaliśmy wcześniej funkcję __autoload() to zostanie ona wywołana a jako parametr zostanie przekazana nazwa niezdefiniowanej klasy. Jeżeli w ciele tej funkcji zadeklarujemy brakującą klasę (np. includując plik zawierający jej definicję) to wszystko będzie ok. Przy pomocy tej funkcji można sobie zapewnić ładowanie klas dopiero wtedy gdy są potrzebne … Continue reading "Funkcja __autoload()"
WebServices składa się z serwera i klienta. Ten pierwszy wykonuje całą pracę i odpowiada na żądania tego drugiego. Klient tylko pyta serwer i otrzymuje odpowiedzi. Oto przykład serwera który posiada dwie funkcje ws_add która dodaje dwa parametry i zwraca wynik oraz ws_date który zwraca aktualną datę w formacie w zależności od parametru: function dateWs($s) { … Continue reading "WebServices w PHP przy użyciu biblioteki NuSOAP"
Taki przykład prostego backupu bazy mysql na serwer ftp. Baza będzie skompresowana do pliku tar.bz. Na serwerze jest struktura katalogów: katalog_główny/dzień_tygodnia np. backupy/2 dla wtorku. itd… oto skrypt: #!/bin/bash # Backup zrzutu bazy na ftp # nazwa=TWOJA_NAZWA_PLIKU_`date +'%d%m%Y_%H%M%S'`.sql MYSQL_HOST=ADRES_SERWERA_MYSQL MYSQL_USER=UŻYTKOWNIK_MYSQL MYSQL_PASS=HASŁO_MYSQL MYSQL_DB=NAZWA_BAZY FTP_HOST=ADRES_SERWERA_FTP FTP_USER=UŻYTKOWNIK_FTP FTP_PASS=HASŁO_FTP FTP_MAIN_DIR=GŁÓWNY_KATALOG_Z_BACKUPAMI LOCAL_DIR=KATALOG_ZE_SKRYPTEM mysqldump --add-locks --routines --triggers --quick -h $MYSQL_HOST -u … Continue reading "linux bash: backup mysql na ftp"
Zgodnie z tradycją od lat w 256 dniu roku (taka ładna okrągła liczba 😉 ) życzę wszystkim kolegom po fachu udanych kodów i optymalnych algorytmów. Dzień Programisty w wikipedii
/* * * Szuka rekursywnie w głąb tablicy * * @param array $haystack tablica * @param string $needle wartość * @param string $index cecha * @return mixed * */ function recursiveArraySearch($haystack, $needle, $index = null) { $aIt = new RecursiveArrayIterator($haystack); $it = new RecursiveIteratorIterator($aIt); while ($it->valid()) { if (((isset($index) AND ($it->key() == $index)) OR (!isset($index))) … Continue reading "Szuka rekursywnie w głąb tablicy"
Jak wykorzystując php zmienić status lub dodać wpis na Facebook? Korzystają z klasy Mini bots napisałem taki prosty skrypcik. define('FACEBOOK_EMAIL_LOGIN', 'xxxxx'); define('FACEBOOK_PASSWORD', 'yyyyy'); define('FACEBOOK_DEBUG', false); require_once 'minibots.class.php'; $m = new Minibots(); if(isset ($_GET['status'])) { $m->setFacebookStatus($_GET['status'], FACEBOOK_EMAIL_LOGIN, FACEBOOK_PASSWORD, FACEBOOK_DEBUG); } if(isset ($_GET['post'])) { $m->postToFacebookPage($_GET['post'], 'wall.php', FACEBOOK_EMAIL_LOGIN, FACEBOOK_PASSWORD, FACEBOOK_DEBUG); }
Coś, co moim zdaniem obok array_merge i array_merge_recursive obowiązkowo powinno być dołączone do PHP a nie jest… Pobrane z php.net z forum: /** * Merges any number of arrays / parameters recursively, replacing * entries with string keys with values from latter arrays. * If the entry or the next value to be assigned is … Continue reading "Rekursywne łączenie tablic bez powtórzeń"
Posiadając w repozytorium svn katalogi na dane tymczasowe lub nie istotne z punktu widzenia wersjonowanego projektu warto oznaczyć taki katalog jako ignorowany. W svn system pomijania danych nie jest idealny ponieważ działa na zasadzie filtrów nakładanych na katalogi. W celu dodania zawartości katalogu należy przypisać maskę ignorowanych plików i podkatalogów. Można to wykonać na dwa … Continue reading "Ignorowanie zmian w katalogu z repozytorium svn"
Jeśli ktoś chciałby kupić sobie jakieś książki by podnieść swoją wiedzę i umiejętności to zapraszam na stronę literatura gdzie można tanio nabyć ciekawe pozycje.
Jest takie coś w MySQL do czego Microsoft jeszcze nie dojrzał i nie wiadomo czy w ogóle dojrzeje. A mianowicie LIMIT – element zapytania pozwalający na wyświetlenie X rekordów od rekordu Y począwszy. To cudo jest odporne na sortowanie, warunki, joiny itd. Idealna sprawa do stronicowania. Przykładowe zapytanie w MySQL: $mysql = "SELECT * … Continue reading "LIMIT w MSSQL"
Jeśli ktoś chciałby kupić sobie jakieś książki by podnieść swoją wiedzę i umiejętności to zapraszam na stronę literatura gdzie można tanio nabyć ciekawe pozycje.
Jeśli potrzebujesz usunąć z całej aplikacji katalogi .svn to tu masz sposób. Wystarczy przejść do katalogu od którego chcesz zacząć i wydać polecenie: find . -name ".svn" | xargs rm -rf zostaną usunięte katalogi .svn we wszystkich podkatalogach od miejsca w którym jesteś.
W jQuery można wygodnie wysyłać dane metodami post i get. Ten przykład wysła dane na podany URL metodą get: $.get("odbierz_dane.php", { 'action': 'comment_add', 'uniq_id': 12345 }, function(r){ }); Jeszcze inny przykład pokazuje że można też odebrać wyniki: $.post("dodaj.php", { 'a': 2, 'b': 3 }, function(r){ $("#wynik").html(r); });
Czasami trzeba wyświetlić małe okienko dialogowe. Można skorzystać z jPrompt. jPrompt('Podaj imię:', '', 'Imię', function(r) { if (r != null) { $.get("zapisz_imie.php", { 'imie': r }, function(r){ }); } }); Powyższy przykład wyświetli okienko z polem do wpisu imienia. Jeśli potem klikniemy „Anuluj” to nic się nie stanie a gdy „OK” to zostanie wysłane dane … Continue reading "Okienko dialogowe w jQuery czyli jak użyć jPrompt?"
Oto kawałek kodu który obsługuje upload plików. Kod html formularza jest bardzo prosty: <form action="upload.php" enctype="multipart/form-data" method="post"> <input name="plik_upload" type="file" /> <input type="submit" value="Upload" /> </form> a tak może wyglądać plik upload.php Jest tu użyta funkcja polskawe opisana we wcześniejszym poście Jak zmienić polskie znaki na polskawe?. Linijka w której jest przypisywana wartość do zmiennej … Continue reading "Obsługa upload plików"
Przykład funkcji usuwającej polskie znaki. function polskawe($text) { $text = str_replace(array('Ą','Ę','Ó','Ś','Ł','Ż','Ź','Ć','Ń'), array('A','E','O','S','L','Z','Z','C','N'), $text); $text = str_replace(array('ą','ę','ó','ś','ł','ż','ź','ć','ń'), array('a','e','o','s','l','z','z','c','n'), $text); return $text; }
[How to insert BLOB data into MSSQL using PHP] Naszukałem się pół dnia jak to zrobić, więc postanowiłem się podzielić, gdyż się udało 🙂 A chodzi o zapisanie obrazka jpg w postaci binarnej do bazy mssql używając php: odczytujemy zawartość jpg (można file_get_content albo jakąś fajną biblioteką do obróbki zdjęć, np. WideImage) jako $content, robimy … Continue reading "Jak zapisać BLOB do bazy MSSQL"
Niby proste ale czasami w ferworze pracy może umknąć, poza tym przyda się początkującym w jQuery. if($(this).attr('checked')) { //checkbox zaznaczony } else { //checkbox nie zaznaczony }
Tworząc klasy w PHP bardzo upierdliwym jest pisanie get’ów i set’ów do nich. Owszem można atrybuty ustawić jako publiczne i z głowy albo użyć magicznych metod __get i __set. Jednak takie bardziej „tradycyjne” podejście też ma wiele zalet. Ale jej główną wadą jest męczące pisanie dlatego można skorzystać z generatora get’ów i set’ów w klasach … Continue reading "Generator get’ów i set’ów w klasach PHP"
Pisząc programy w PHP często jest tak iż na szybko potrzebujemy wyrzucić na ekran wartość jakieś zmiennej. Zend_Debug daje bardzo dobre narzędzie ale ma jeden mały brak. Zdarzało mi się przy wielu zastosowaniach Zend_Debug::dump() zapomnieć gdzie były one powstawiane. Moja modyfikacja wyświetla taką informację poza tym daje jeszcze kilka innych możliwości jak przerwanie pracy po … Continue reading "Zend_Debug::dump() po swojemu"
Gdy już przetestujemy i uruchomimy program często okazuje się po jakimś czasie, że jednak coś przeoczyliśmy. Wtedy bezcenne są logi z działania programu. Wystarczy w trakcie pisania zadbać o logowanie ważniejszych informacji a w miejscach potencjalnych nieprawidłowości napisać jedną linijkę np: [sourcecode lang=”php”]Log::error(‚To jest coś nie tak’);[/sourcecode] dzięki temu wiemy gdzie i kiedy oraz w … Continue reading "Zend_Log po swojemu"
Radosnych Świąt Bożego Narodzenia, rychłego spełnienia każdego marzenia, ciepła, wiary i życzliwości.
Wcześniej opisałem w artykule „Helpery w Zend Framework” jak wykorzystać wbudowane helpery a teraz przyszła pora na zrobienie swojego. W kontrolerze ustawiam ścieżkę do swoich helperów: [sourcecode lang=”php”]$this->view->setHelperPath(‚application/helpers/’, ‚Helper_’);[/sourcecode] Może to być ustawiane w dowolnym innym momencie ważne aby odwołać się do aktualnego widoku ($this-view). Osobiście utworzyłem klasę abstrakcyjną Controller_Abstract która dziedziczy po Zend_Controller_Action a … Continue reading "Własne Helpery w Zend Framework"
Oto przykład jak można skorzystać z gotowych helperów (pomocników) jakie daje nam Zend Framework. Tak wygląda początek każdego mojego pliku widoku (.phtml): [sourcecode lang=”html”] < ?= $this->doctype() ?> < ?= $this->headTitle();?> < ?= $this->headMeta();?> < ?= $this->headStyle();?> < ?= $this->headScript();?> … [/sourcecode] Dzięki temu nie muszę się już martwić o poprawność kodu html i zarządzać … Continue reading "Helpery w Zend Framework"
Ostatnio potrzebowałem wygenerować plik pdf na stronie internetowej. Ponieważ jego zawartość była tworzona dynamicznie musiał być on generowany online. Postanowiłem skorzystać z Zend_Pdf i oto krótka instrukcja jak to zrobić. Przy wykorzystaniu wbudowanych czcionek miałem problem z polskimi znakami więc skopiowałem na serwer plik FreeMono.ttf z mojego komputera i skorzystałem z niego. Przykład ten pokazuje … Continue reading "Generowanie plików PDF w Zend Framework"
Już pomały wchodzi to święto do tradycji. Tak jak w zeszłym roku tak i dziś składam wszystkim kobietą i mężczyzną wykonującym ten trudny i niedoceniany zawód najlepsze życzenia szybkich i krótkich kodów. Dla poprawy nastroju zapraszam do wysłychania pewnej piosenki.
Symptomy Outlook zapisuje załączniki w swoim własnym katalogu temp. Jeśli plików w temp jest za dużo, wówczas zapisywanie przestaje działać. W szczególności dotyczy to załączników o tej samej nazwie, np. jeśli odbierzemy 100 maili od różnych osób, każda podeśle nam plik cv.doc, to 101-go załącznika już nie zapiszemy. Rozwiązanie W Outlooku trzeba tego tempa po … Continue reading "Outlook nie zapisuje załączników"
(opis dla wersji Outlook 2003) Symptomy Podczas próby zaadresowania nowej wiadomości przy użyciu folderu Kontakty może zostać wyświetlony następujący komunikat o błędzie: Wyświetlenie tej listy adresów nie było możliwe. Nie można otworzyć folderu Kontakty skojarzonego z tą listą adresów; mógł zostać usunięty lub przeniesiony, albo nie masz odpowiednich uprawnień. Aby dowiedzieć się, jak usunąć ten … Continue reading "Nie działa książka adresowa Outlook"
Tworzenie dokumentacji do kodu jest bardzo nudne i uciażliwe. Jak można zautomatyzować ten proces? Od dłuższego czasu pewnym standardem jest phpDocumentor. Tworzenie dokumentacji polega na napisanie komentarza w kodzie: /** * */ w takim komentarzy można zawrzeć niżej wymienione znaczniki. Dostępne znaczniki oraz przykłady do nich: @abstract @access @author @category @copyright @deprecated @example @final @filesource … Continue reading "Tworzenie dokumentacji kodu w PHP – phpDocumentor"
Czy można mieć dostęp do dysku innego komputera jak swojego własnego? Tak, wystarczy podmontować go przez ssh. Aby zamontować zdalny system plików musimy mieć pusty katalog (np. /home/user/www ) i wykonujemy takie polecenie sshfs remoteuser@remotehost:/var/www /home/user/www potem możemy swobodnie korzystać z zawartości katalogu /home/user/www który tak naprawde jest /var/www na komputerze o nazwie remotehost. Odmontowanie: … Continue reading "Zdalne montowanie systemu plików przez ssh"
Jak monitorować pracę serwera (komputera domowego) 24h/dobę i to jeszcze tak aby nie spowaliać jego pracy. Kiedyś wydawało mi się to nie realne aż gdy trafiłem na program Munin. Można monitorować wiele elementów które prezentowane są postaci bardzo czytelnych wykresów. Jeżeli domyślna instalacja nie zawiera wszystkiego co chcesz analizować to dodanie nowego plaginu jest bardzo … Continue reading "Monitorowanie komputera – Munin"
Jak szybko zrobić wysłanie danych z formularz przy pomocy technologii ajax w Zend Framework? Należy zrobić taki formularz (formularz.phtml) [sourcecode lang=”html”] Wyślij wiadomość [/sourcecode] Następnie zrobić kontroler odpowiadający URL z atrybutu action formularza (w tym przypadku /test). A tam odbieranie danych, przetworzenie ich i wysłanie kodu html który zostanie wstawiony do div’a o id response. … Continue reading "Wysyłanie formularzy z Zend Framerowk + mintAjax"
Kiedyś na własne potrzeby napisałem sobie skrypt do szybkiego tworzenia repozytoriów. Skrypt należy uruchamiać jako root i podawać jako parametr nazwę nowego repozytorium. Oto on: #!/bin/sh if [ "$(whoami)" != "root" ] ; then echo "Skrypt można uruchomić tylko z prawami root" >&2 exit 1 fi repoDir="/home/svn" cd $repoDir svnadmin create $1 tmpdir="$repoDir/svntemp"; mkdir $tmpdir … Continue reading "Tworzenie nowego repozytorium svn"
W php można zmniejszyć ilość kodu stosująć pewne skróty. Uruchomienie komendy w shell: Skrót: echo `ls -l`; Odpowiednik: echo shell_exec('ls -l'); http://pl.php.net/manual/pl/language.operators.execution.ph Funkcja warunkowa: Skrót: echo $a == 10 ? 'jest 10' : 'nie ma 10'; Odpowiednik: if($a == 10) { echo 'jest 10'; } else { echo 'nie ma 10'; } http://pl.php.net/manual/pl/language.expressions.php Wyświetlenie: Skrót: … Continue reading "Skrócony zapis w php"
Zapraszam do wysłuchania dwóch bardzo ciekawych piosenek. Piosenka o smutnym programiście Ach jak przyjemnie (wersja współczesna) Może ktoś jeszcze zna jakieś utwory artystyczne o podobnej tematyce?
Witam. Napisałem o tym prostym „myku” w konfiguracji, ponieważ naszukałem się tego jak głupi przez dwa dni i dopiero gdzieś tam przez przypadek trafiłem na rozwiązanie. Problem jest następujący: mamy stronę www, serwer apache z modułem rewrite, do tego np. zend framework. Po przejściu na jakąś podstronę serwer generuje nam komunikat 404: strona nie istenieje. … Continue reading "Apache: rewrite i virtual host nie działa"
Jeśli mamy tabelę TEST a w niej kolumnę OPIS i stwierdzimy że w całej tabeli, wszędzie w opisach, wewnątrz tekstu jest np.: „2” zamiast „7” to mozemy to szybko poprawić jednym zapytaniem. Jeśli zrobimy tak: update TEST t set OPIS = (select replace (OPIS, "2", "7") from TEST where id=t.id) dostaniemy piękny komunikat o treści: … Continue reading "MySQL: update pojedynczego znaku, wyrazu w kolumnie"
Mantis Bug Tracker to popularne narzędzie do nadzoru nad rozwojem projektów, zgłaszania błędów itd…. Występuje w dwóch wersjach: stabilnej oraz rozwojowej. Do obu wersji dostępny jest szereg pluginów. Niestety mimo zapewnień twórców wtyczek, że na wersji rozwojowej wszystko działa „cacy” – tak nie jest. Pojawiają się błędy, nie zgadzają się nazwy kolumn w tabelach no … Continue reading "Mantis Bug Tracker: downgrade do wersji stabilnej"
Jakiś czas temu napisałem skrypcik do zdalnego dodawanie zgłoszeń do Mantisa. Teraz go rozwinołem o wykorzystanie WebService. Bazuje on na poprzedniej wersji więc nie będę wszystkiego dokładnie opisywał. Potrzebujemy serwer WebService i jest on w pliku mantis_soap.php który umieszczamy w katalogu głównym Mantisa. mantis_soap.php [sourcecode lang=”php”] < ?php //-------------------------------------------------------------------------------------------------------------- include "config_inc.php"; //-------------------------------------------------------------------------------------------------------------- function sql($sql, $g_hostname, … Continue reading "Dodawanie zgłoszeń do Mantisa przez WebService"
Rozwiązanie to jest proste, wygodne i możliwe do zastosowanie w każdym formularzu. Formularz [sourcecode lang=”html”] < ? $c = new TI_Captcha(); ?>
$oldFile = "testpicture.jpg"; $newFile = "NEW_testpicture.jpg"; $percent = 0.5; list($width, $height) = getimagesize($oldFile); $newWidth = $width * $percent; $newHeight = $height * $percent; $thumb = imagecreatetruecolor($newWidth, $newHeight); $source = imagecreatefromjpeg($oldFile); imagecopyresized($thumb, $source, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height); imagejpeg($thumb, $newFile);
Artykuł pochodzi z http://majareq.viawww.pl/zburzyc-czwarta-sciane/ Jak wiadomo sala teatralna ma 3 ściany dekoracyjne. Jest jednak jeszcze ta czwarta…. niewidoczna ściana oddzielającą aktorów od widzów. Aktorowi nie wolno przez nią przejść i poskarżyć się na niewygody na scenie. Tak samo jest z webmasterami… nie wolno im się skarżyć na niewygody jakie niesie dostosowanie się do wciąż popularnej … Continue reading "Zburzyć czwartą ścianę!"
Artykuł pochodzi ze strony http://wortal.php.pl/wortal/artykuly/pomysly_porady_sugestie_dobre_nawyki/wersjonowanie_aplikacji Wielu z nas pisząc aplikacje używa własnych sposobów nadawania numerów wersji aplikacji/dokumentów. I mimo, że większość jest podobna do siebie to jednak mogą być inaczej interpretowane przez różne osoby. Dlatego przedstawię tutaj wypracowany przeze mnie schemat wersjonowania aplikacji, co pozwoli na pewne ustandaryzowanie nadawania numerów wersjom. Zacznijmy od dwóch podstawowych … Continue reading "Wersjonowanie aplikacji"
Atykuł ten przedstawia jedynie moje rozwiązanie tego problemu. Na początek tworzymy dwie klasy abstrakcyjne po których będziemy dziedziczyć dla każdego przypadku. Klasa dla elementu. abstract class Elements_Abstract { /** * @var Elements_Table_Abstract */ protected $_dbTable = null; /** * @var Zend_Db_Table_Row_Abstract */ protected $_dane = null; /** * Robi INSERT do bazy * * @param … Continue reading "ORM w PHP wykorzystując Zend Framework"
Mając kilka serwisów www chciałem dać użytkownikom możliwość zgłaszania ewentualnych błędów i/lub nowych propozycji. Jednak fajnie by było gdyby wszystkie one były zbierane w jednym miejscu które dawało by możliwość zarządzania nimi. Dobrym programem do zamieszczania takich zgłoszeń jest Mantis ale dodawanie do niego informacji jest dość kłopotliwe zwłaszcza dla mało doświadczonych użytkowników. Dlatego opracowałem … Continue reading "Zdalne dodawanie zgłoszeń do Mantisa"
Dziś jest dzień programisty… w związku z tym chciałem wszystkim związanym z tym zawodem życzyć krótkich i szybkich kodów. A oto psalm programisty .
Kiedyś musiałem wyświetlić nieco statystyk o aplikacji i środowisku w którym pracuje i napisałem taką klasę. Może się komuś przyda. [sourcecode lang=”php”] < ?php class Version { public static function getDateApplicationVersion() { return "2008-09-11 11:10:00"; } public static function getApplicationVersion(){ return "0.1.217"; } public static function getPhpVersion(){ return phpversion(); } public static function getZendFrameworkVersion(){ return … Continue reading "Jak ustalić wersję php, mysql, apache i nie tylko?"
Mój sposób integracji FCKeditor z Zend Framework. Katalog z FCKeditorem jest w /public/js/fckeditor i tam jest plik .htaccess z zawartością: RewriteEngine off Poza tym jest zrobiony katalog /public/images/editor dla zdjęć i innych plików ładowanych z edytora i ten katalog musi mieć prawa 777. I teraz konfiguracja w pliku /public/js/fckeditor/editor/filemanager/connectors/php/config.php należy zmienić: [sourcecode lang=”php”] $Config[„Enabled”] = … Continue reading "FCKeditor w Zend Framework"
Czasami zdaża się pisząc aplikację w php iż gdzieś coś wykonuje się strasznie długo i trzeba zoptymalizować kod. Tylko pytanie gdzie? i co? Do tego może się nam przydać profiler czyli program do analizowania kodu w czasie jego działania.
Zawsze bardzo mi brakowało obsługi gpg w php. Teraz już jest. Można szyfrować, podpisywać i odszyfrowywać przy pomocy kluczy publicznych i prywatnych. Wystarczy taki kod: $res = gnupg_init(); gnupg_addencryptkey($res,"D5DA92C049F421D97C660FE5F1B9B347F0F029BA"); $zaszyfrowane = gnupg_encrypt($res, "To jest próba zaszyfrowania tekstu przez PHP"); $error = gnupg_geterror($res); if($error) { echo $error; } else { echo nl2br($zaszyfrowane); } i gotowe. Po … Continue reading "Szyfrowanie gpg w php"
public class hello_world { public static void main(String[] args) { System.out.println("Hello World!"); } } Kompilacja javac hello_world.java Uruchomienie java hello_world
Backup pojedynczej bazy wraz z danymi: pg_dump -C -f dump.sql -o -v dana_baza Backup wszystkich baz wraz z danymi: pg_dumpall > dump_all.sql Przywracanie całej baz: psql -f dump_all.sql szablon
Krótki opis jak szybko skonfigurować svn (system kontroli wersji).
function Show(idik){ ob = document.getElementById(idik); ob.style.display = ` `; } function Hide(idik){ ob = document.getElementById(idik); ob.style.display = `none`; }
#!/bin/sh mysqldump --host=localhost --user=root --password=haslo --all-databases > all_databases.$(date +%F) tar -zcf /home/mysql/all_databases.$(date +%F).tar.gz /home/mysql/all_databases.$(date +%F) rm /home/mysql/all_databases.$(date +%F) rm $(perl -e 'use POSIX qw(strftime); print strftime "all_databases.%F*",localtime(time-3600*24*7);') A tak się importuje: cat all_databases.2008-04-11 | mysql -u root -p