Thursday, December 1, 2011

PHP fejlesztőkörnyezet kialakítása


Webes fejlesztőkörnyezet kialakítása


1. Lépés:

Egyszerű HTMLCSS JS oldalak fejlesztéséhez nem feltétlenül van szükségünk fejlesztőkörnyezet kialakítására, hiszen a legtöbb böngésző önmagában is képes a helyben tárolt tartalom megjelenítésére,  viszont php futtatásához már más programokra is szükségünk lesz.

Szükségünk van egy webszerverre, amely a kliensektől érkező kéréseket szolgálja ki, általában Apache (Linux vagy Windows), vagy IIS (Windows) nevű kiszolgálókat szoktuk alkalmazni,  éles rendszereknél PHP-hoz általában Linuxon futó Apache -ot szoktak használni, de gond nélkül lehet használni IIS-t (Internet Information Services) is, ha nem csak PHP-t szeretnénk futtatni (IIS-t inkább ASP.NET –es oldalak hosztolására használnak Windows Server-eken).


Ha helyi gépen szeretnénk fejleszteni, és nem szeretnénk vacakolni a PHP, MySQL, Apache beállításával, vagy nem értünk hozzá, akkor letölthetünk egy kompakt csomagot, mely tartalmazza  a fejlesztéshez létfontosságú  eszközöket:

  •           Apache webszervert
  •           PHP futtatásához szükséges értelmezőt
  •           MySQL adatbázismotort

és egyéb eszközöket (ftp szerver, Perl). Ez a csomag mind Windows-ra, mind Linuxra letölthető, de vigyázunk, éles rendszerbe soha ne használjuk, mert biztonsági rések lehetnek benne, ezt a csomagot tipikusan fejlesztésre szánták.

A program neve XAMPP (X: Windows/Linux, A: Apache, M: MySQL, P: PHP, P:Perl), ebben a posztban ennek a telepítését, beállítását mutatom meg Linuxra és Windowsra. Természetesen használhatunk IIS-t is, ezt Windows 7  Professional +  operációs rendszerekhez jár ingyenesen. Telepítéséről és konfigurálásáról ITT lehet olvasni.

XAMPP telepítése Windows rendszerekre:

1.       Töltsük le a http://www.apachefriends.org/en/xampp.html –ról a megfelelő telepítőt.
2.       Indítsuk el a telepítőt: hagyhatunk mindent alapállapotban.
3.       Ha kész a telepítés, és nem indult el magától a control panel, akkor indítsuk el. Ez egy egyszerű és kényelmes kezelőfelület a szolgáltatások beállításához , ki –és bekapcsolásához. Mire jók  a szolgáltatások?
o   Apache: webszerver, php értelmező telepítve van hozzá
o   MySQL: adatbázis motor
o   FileZilla: FTP szerver és kliens
o   Mercury: levelező szerver
o   Tomcat:  Java Servlet és a JavaServer Pages megjelenítéséhez

Ha csak PHP-t szeretnénk használni, akkor elegendő, ha az Apache-ot indítjuk a ,,start” gomb megnyomásával.

Előfordul, hogy nem indul el, vagy a start megnyomása után, néhány másodpercig úgy tűnik, hogy elindult, aztán mégsem. Ez a szerver a 80-as portot használja, így azokat a programokat amik szintén ezt használják le kell állítani, tipikusan ilyen a Skype (de a Skype beállításainál meg lehet változtatni a port számot, így nem ütközik a kettő). Ha esetleg mégis gond lenne, és sehogy sem akar elindulni, akkor megváltoztathatjuk a portot, amit az Apache használ, ilyenkor viszont a böngészőnkben a következő címet kell beírni:

http://localhost:portszam

Tesztelés: Ha nem változtattunk az alap telepítési beállításokon, akkor a C:\xampp könyvtárba települt. Keressük meg a  ,,htdocs”  mappát, általában web szervereknél ez a mappa jelöli a megjelenítendő fájlok mappáját. Nyissuk meg, és hozzunk létre benne egy mappát. A mappában hozzunk létre egy szöveges fájlt, majd nevezzük át index.php-ra. és a tartalma legyen a következő:

 <?php  
      phpinfo();  
 ?>  

Ebben a kódrészletben meghívjuk a phpinfo() függvényt, mely az oldal megnyitásakor lefut, és különböző információkat ad a telepített php-ról. Mentsük el és zárjuk be a fájlt! Nyissuk meg a kedvenc böngészőnket és írjuk be az URL helyére: „http://localhost/mappaneve/index.php”, ha mindent jól csináltunk, akkor kapunk egy igen nagy táblázatot, ahol a telepített php beállításait látjuk, illetve a telepített bővítményeket. Ha ez megjelent, akkor a telepítés sikeres volt, a rendszer elvileg gond nélkül tud php kódot értelmezni.


2. Lépés:

PHP fejlesztés során szükségünk van egy szerkesztő programra, egyszerű, néhány soros oldalakhoz elég akár egy notedpad, de bonyolultabb programok írásakor sokat segíthet egy olyan program, mely áttekinthetővé teszi a kódot. Ezeknek a programoknak a száma végtelen, íme néhány:

Notepad++ : *
Kicsit komolyabb szövegszerkesztő mint a beépített notepad, tud sorokat számozni, illetve képes a különböző szintaktikai elemek színezésére. 1-2 fájlból álló oldalakhoz elég lehet, de minél több fájlból áll az oldal, annál nehezebb lesz átlátni.

Adobe Dreamweaver ***
Az Adobe cég  web fejlesztésre szánt programja, gyorsan meg lehet tanulni a használatát, megbízható, van benne ftp szerver, svn –re tud kapcsolódni, viszont code hinteket nehéz beállítni benne.

PHPDesigner ****
Hasonló a dreaweaverhez, egy kicsit bonyolultabb, viszont kiváló benne a code hinting, hátránya hogy az ftp nehezen beállítható.

NetBeans ***
Ingyenesen letölthető, php mellett számos nyelven lehet programozni benne (java, c, c++).

CodeLobster *****
Az alap verzió ingyenesen letölthető (email-ben kell serialt igényelni, de azonnal megjön), csak a bővítményekért kell fizetni (különböző cms-ek, sql szerverek -re való fejlesztést segítik ezek a kiegészítők, így nincs rájuk szükségünk). Telepítéskor vigyázzunk, hogy a plugin-eket ne pipáljuk ki, különben nem fogadja el az ingyenes serialt.

Google segítségével még n+1 darab ilyen programot találhatunk, illetve a későbbiekben is nagyon nagy segítséget tud nyújtani, ha valamilyen problémába ütközünk.

Ha sikerült telepítenünk a PHP futtatásához szükséges eszközöket, és rendelkezünk egy megfelelő szerkesztővel, akkor készen állunk webes tanulmányaink elkezdéséhez.

Thursday, November 24, 2011

Morse Coder / Encoder / Decoder

A következő linken keresztül le tudod tölteni a morze kódoló / dekódolómat, C nyelven íródott, nagyházi lévén a feladat bonyolultsága érdekében egy csöppet túl lett bonyolítva, de lényegében talán használható is valamire.

Ilyen fát épít fel
Ha csak a futtatható állományra vagy kíváncsi, innen tudod letölteni, a rar kicsomagolása után az első .exe fájl kell neked.

Ha a forráskód is érdekel: Ugyan arról a linkről szerezheted meg, külön be van csomagolva, VS 2010 -es projektfájlokkal, de továbbfejlesztésre nem ajánlom, hiszen -mint említettem- sokkal bonyolultabban lett megírva mint valójában kéne: A morze szótár bináris fával lett ábrázolva, így max. a dekódolás lett gyorsabb, de a morzéra kódolás nagy mértékben lelassult, hiszen a fa végéről kell bejárnunk elemenként. A legegyszerűbb megoldás az lett volna, hogy egy kétdimenziós tömbbe rakom az egészet, így kb. 400 sorból meg lett volna, de az meg nem izgalmas. Sok ötletem lenne, hogy mivel lehetne még feldobni, de sajnos időhiányban szenvedek.

Fejlesztés során felhasznált külső források: DebugMalloc. Ajánlom, mert jó.

[EN]

Little software to code or decode from or to morse. Written in ANSI C, licenced under GPL.



Update: 2012.01.19
A project megtalálható sourceforge-on:
Morse Master

Friday, November 18, 2011

Platformfüggetlen (ANSI) c: clear vagy cls?

Egyszerűbb c program írásakor / tervezésekor felmerülhet, hogy platformfüggetlen programot szeretnénk írni, viszont az alapvető parancssoros megjelenéshez szükség lenne egy olyan képernyőtörlési függvényre, amely Linux és Windows rendszerek alatt is tökéletesen fut.

Mindkét rendszeren a system() függvény végzi a képernyő törlést, viszont más-más paramétert várnak, ezért ha egyszerűség miatt mindenképpen őt szeretnénk használni (és nem egy bonyolultabb grafikus könyvtárat), akkor a következőket kell tennünk:

Makró segítségével meg kell vizsgálni, hogy Linuxon vagy Windowson fordítjuk a kódot, ezt a következőképpen lehet megtenni:


 #ifdef linux  
 void cls()  
 {  
      /* Hasznaljon clear-t ha Linuxon fordul*/  
      system("clear");  
      return;  
 }  
 #endif  
 #ifdef _WIN32  
 void cls()  
 {  
      /* Hasznaljon cls-t ha Windowson (VisualStudio) fordul */  
      system("cls");  
      return;  
 }  
 #endif   

Ezután a programunkban a képernyő törlésére használjuk a cls() függvényt, melynek segítségével platformfüggetlenek maradhatunk.

A #ifdef utáni rész (linux, _WIN32) fordítónként eltérhet, ezért mindenképpen utánna kell nézni, hogy a használt fordító milyen makrót definiál.

Saturday, October 29, 2011

Port 80 is used by System.....

Web Developers could have a lot of problems about developing on localhost, mostly when you have a lot of development tools,such as iis, apache, mysql, mssql, postgresql using the same port.
I had a lot of problems because of it, finally found out how to solve the problem of the used port 80 by the system.

1st: Open a command prompt type it: netstat -o -n -a | findstr 0.0:80
The last column is the process id (PID) of the services witch uses the port. Then start task manager (ctrl+shift+esc) go to processes and click on ,,show processes from all users", and you will find it. (If youd dont have PID column go to->select cloumns and X the process ID).

The biggest problem is when it says its PID 4, witch is in most cases the system.

2nd: In task manager go to services right down: ,,services...". Here you find all the services running, or not on your computer. If you installed visual studio it could install sql server express and some services witch can use port 80. Try to stop them one-by-one and check netstat. If the problem not solved try stopping ,,World Wide Web Publishing Service".

If non of these actions freed up the port, try stopping other processes witch could use that port.

Good Luck!

Wednesday, October 26, 2011

CodeIgniter: tank_auth vs. dx_auth


Welcome!
This post is about codeigniter php frameworks's 2 most used authentication systems, tank and dx auth.


Dx_auth was written by Erick Hartanto and it's based on CL Auth 0.2.5 beta developed by Jason Ashdown. Tank_auth is based on dx_auth, it was written by Ilya Konyukhov.

In both of them you can get the basic authentication features such as login, logout, register, and you can also find optionally CAPTCHA (or reCAPTCHA).





So what are the main differences?



In dx_auth there's a simple admin panel, you can create your own roles with custom permissions. However in tank_auth there are no roles and there's no admin panel, but in my opinion it's not a big problem, you can easily write an admin panel or integrate the roles.

If you want to use CI 2.0 or above, as I recognised, dx_auth is not completely compatible, you have to change the class names in each file from Classname to CI_Classname.

If you have to choose between these two, or other auth systems, I advise to use tank_auth. Dx_auth's role system is not very well designed, there can be security issues, and it uses more tables in database for not usable reason (for most of the  times). It's also not a good choice to avoid DoS and bot attacks, since it uses IP restriction instead of username and IP restriction.


If you are intrested, you can read an all-in comparison of all the authentication systems here.

Sunday, September 25, 2011

Welcome!

Hello,
My name is Daniel Kovacs, I live in Budapest, Hungary, studying Computer Engeneering at BUTE (BME). In this blog I'll write about my experiences in IT (when I'll have some time..).
I'm intersted in building and engeneering computer network infrastructure, linux and windows server administrating, php back-end programming, solving intresting and special problems.

I hope you will find this blog intresting, have a good time!

Daniel

Friday, September 16, 2011

Single NIC for Hyper-V


Imagine the problem: You have a physical server and you decided to use Hyper-V for virtualisation. The problem is, that you have only one NIC(network interface controller) for both host system and hyper-v.
So what we have:

  • Parent Partition: Windows Server 2008 R2 with Hyper-V
  • Child Partition: Windows Server 2008 R2
  • One physical NIC
  • DHCP server


Step 1: Create a Virtual Network in Virtual Network Manager (in Hyper-V manager)

Step 2: Go to your network adapter settings on parent partition (host computer), choose properties. The network manager installed Microsoft Virtual Switch Protocol, and disabled all other protocols. Now, the child partitions can use the network, but your parent partition can’t.

Step 3: You have to enable all the protocols.