x1 = (-b + sqrt(D)) / (2 * a);
x2 = (-b - sqrt(D)) / (2 * a);
V Pythonu je doporučeno používat k odsazení čtyři mezery. Pokud se tím řídíš, není co zkazit.
Narozdíl od KIIVa si myslím, že to není bazírování, ale dobrý zvyk, který vede k přehlednějšímu kódu. I v ostatních jazycích programátoři odsazují podle nějakých pravidel, jinak by se v tom jeden nevyznal.
Viz http://www.python.org/dev/peps/pep-0008/#indentation
Pokud by ti to pořád nefungovalo, poděl se o kód.
#3 grosssss
Ale, pán je troll? ;)
Na dlouhou odpověď není čas, tak alespoň jednu krátkou radu: začni odělovat logiku aplikace od jejího vykreslování. Prostě nejde rvát PHP, HTML, CSS i JavaScript do jednoho souboru. A pokud tuhle radu vezmeš vážně, zjistíš, že v čistém PHP to není úplně snadné a nakonec (snad) skončíš u nějakého frameworku :)
Většinou se k tomu využívá tzv. responzivní design. Nedávno tu o tom byl článek, a tenhle už je trochu starší. Případně je možné využít některý z jichž připravených frameworků.
Takových aplikací už je celá řada... Napsat vlastní systém je podstatně dražší ;)
#1 MajuJoe
Na severu to ale nefrčí (konkrétně chyba: "syntax error, unexpected '['"). Na lokálu používám PHP 5.4.4 a na serveru PHP 5.3.10. Je možné, že chybu způsobují rozdílné verze nebo např. něco v konfiguraci php?
Ano, je to vlastnost, která byla přidána v PHP 5.4.
#8 peter
Sorry, nedá mi to - vím, že tohle vlákno je o něčem jiném než o Pythonu, ale... To jsou vyložené bláboly a páté přes déváté :)
Většina z toho, co tvrdíš, je přinejmenším sporná, ne-li úplně chybná. Dokumentace Pythonu není možná tolik vhodná pro lepiče kódu, kterým nestačí popis toho, co funkce dělá a potřebují mít co zkopírovat.
Na různé frameworky spoléhá leckdo. Kvalitní framework je pokrytý testy, bezpečnostní otázky řeší lépe a rychleji, než by to jedinec sám dokázal.
Mimochodem Python je o čtyři roky starší než PHP ;) (zdroj Wiki)
Tvrdit, že autoři .NET nerozumí html a javascriptu je přinejmenším úsměvné :) Stejně tak tvé výroky k Javě. Na ten tvůj framework bych byl docela zvědavý ;)
#4 Šťouchal
Rozvedu, rád. Dokonce jsem už měl na tohle téma připravený článek, ale pak vyšel tenhle od Honzy Javorka, tak budu ten svůj muset přepsat, aby se tolik nepřekrývaly.
Musím uznat, že za posledních pár verzí se PHP znatelně posunulo. Jenže já se rozhodoval v době, kdy ještě nebyly namespace, composer byl možná v plenkách a PHP trpělo hroznou vnitřní roztříštěností. Plus pár vlastností jazyka, které se sice dají přežít, ale nejsou příjemné.
První krok byl, že jsem začal zkoušet frameworky - v PHP to bylo Nette, v Pythonu Pylons a pak hlavně Django. Možná to bylo spíše subjektivní, ale ty v Pythonu mi sedly mnohem víc. U Nette mi přišla adresářová struktura příliš roztahaná a v té době byla ještě mizerná dokumentace.
A co v současnosti vidím za hlavní výhody?
Kdybych měl uvést jeden hlavní důvod, proč mne PHP brzdilo, tak je to asi právě nedostatkem různých balíčků, kvůli kterým jsem vždy musel znovu vynalézat kolo.
Pokud ti mohu dát radu, tak Python alespoň zkus. Nejsem fanatik a netvrdím, že je to ta nejlepší volba a jediná správná ;) Ale kolik jazyků umíš, tolikrát jsi člověkem a každý další trochu rozšíří tvé programátorské obzory. Plus to, že to může být i tvoje jistá konkurenční výhoda :) A u PHP můžeš zůstat.
U Gitu používáme trochu upravené gitflow workflow. S tím, že na commity v production branchi máme navázaný hook, který nám změny automaticky deployne na server.
Nemáš zač ;)
1/ co vám nejvíce pomohlo se zlepšením efektivity při práci (rád uslyším jak obecné typy, tak tipy zaměřené na technologie - primárně PHP).
Z těch technických věcí:
a z těch netechnických:
#18 wannabewebguy
Divil by ses, ale podobné problémy se objevují i v poměrně velkých open-source projektech a co jsem měl možnost nahlédnout, tak i v komerčních věcech. Míchání logiky a vykreslování aplikace, šíleně dlouhé řádky, zneužívání potlačení chyb...
#16 wannabewebguy
Pokud je to s tebou takto, nebudu tě dál odrazovat, pevně věřím, že časem přejdeš stejně k něčemu lepšímu :)
Špatnými praktikami se myslí například používání globálních proměnných, nevyužívání MVC struktury, nepochopení fungování proměnných (které jsou vlastně pouze odkazem), psaní netestovatelného kódu a vůbec netestování a dalších. A samozřejmě to, že si každý píše jak chce a standardy se nedodržují.
#14 null_while
Je fakt, že PHP podporuje škaredění kódu a nevypracovává dobré programovací zvyky.
To je asi ten hlavní důvod (je i řada dalších). Myslím, že nikdo neříká, že by v něm nešlo ledacos napsat. Když bych chtěl být přehnaně metaforický, tak mohu dodat, že ruční pilkou strom taky po čase pokácíš, nicméně s motorovkou to jde snáze ;)
#12 wannabewebguy
Jestli nevadí, klidně si můžeme tykat ;)
K výuce PHP na VŠ mám jistou skepsi, nicméně je to určitě lepší než nic. Jen tak pro zajímavost - můžu se zeptat, co a kde studuješ?
Pokud umíš Javu, máš přehled o datových typech, objektech, dědičnosti, testování a podobných věcech, ve kterých je Java silná, a budeš se toho držet i v PHP, tak tě to nezkazí. Nicméně pokud si v Javě moc jistý nejsi, tak bych zvažoval spíše prohloubit své znalosti tohoto jazyka.
Jasný, máš pravdu, že PHP všichni umí. Ale určitě na tom nestaví. Konkrétně já třeba stavím na tom, co jsem se naučil v Pascalu - ač ho mám rád ještě méně než PHP :) A taky Céčku, Pythonu, Haskellu a pár dalších.
#10 wannabewebguy
Jenže problém s PHP je, že se v něm naučíš spoustu zlozvyků (pokud nemáš někoho, kdo tě bude nutit se jich vyvarovat) a budeš se jich těžko zbavovat. Já taky začínal na PHP, vím o čem mluvím ;)
Takže moje rada zní, ušetřete si pár let života a začněte s něčím jiným :)
P.S.: doporučuji zaregistrovat se na Devel.cz a pročíst si pár dalších komentářů k této otázce. Ať máte i jiný názor, než můj.
#6 Markaos
Jasný, záleží na tom, co chceš dělat. Pokud webovky za deset tisíc, tak opravdu nic jiného než PHP a základní příkazy v JS, případně v kombinaci s jQuery potřebovat nebudeš.
Pokud ale chceš pracovat v nějaké slušné firmě, tak není důvod se PHP držet. Jsou tu mnohem lepší, žádanější a konečně i pro programátora příjemnější cesty - Python, Ruby, dotNet...
#7 survik1
Pozor, JS je také serverový jazyk. A dokonce čím dál oblíbenější.
Třídami se statickými proměnnými. Výhoda je v tom, že mohu dědit a udržovat tak snáze více různých nastavení. Klasicky mám strukturu takovouto:
config.php
settings/base.php
settings/local.php
settings/production.php
V configu pak něco jako:
class Config extends Settings\LocalSettings {}
//class Config extends Settings\ProductionSettings {}
a v jednotlivých settings/*.php něco na tento způsob:
namespace Settings;
class LocalSettings extends BaseSettings {
static $debug = True;
}
A přístup na požadovanou vlastnost je pak jednoduchý:
echo \Config::$debug;
#1 Dominik
Je to možné. Banky většinou pro podobné účely nabízí nějaké API. V tomhle směru mám dobrou zkušenost s Fio.
#1 mathematicus
Pokud na to máš náladu, baví tě to a nevadí ti číst si dokumentaci v angličtině, doporučuji vyzkoušet Arch. Gentoo je taky fajn, ale čekat, až se každý program zkompiluje, je na nic, pokud tomu nerozumíš natolik, aby ti to k něčemu bylo. Ale jak psal Kéfas, ono je to v podstatě jedno. A potom si vyber, to co ti bude nejsympatičtější.
PS: Rozbeham na linuxe programy CAD pripadne Photoshop, 3d Max na nejakom emulatore, ako na win virtualboxe??? Aka je funkcnost toho programu potom??
Pokud se budeš hodně snažit, tak se ti to asi povede. Ale většinou to je spíš než k práci k utrápení. Windows ve virtuálu pořád není to samé, co Windows normálně. Většinou nejrozumnější řešení bývá mít dualboot.
#3 Pixtr
Já jsem to s těma vlastníma funkcema myslel spíš tak jako že při porovnání PHP a ASP.NET se každý zastává ASP tím, že se nemusí psát dlouhé funkce a že ASP umí všechno samo a tak....
Ono totiž ASP.NET je už jazyk (ASP) + framework (.NET).
Nad frameworkem jsem samozřejmě přemýšlel, jen se bojím že jeho pochopení a naučení my zabere takovou dobu jako kdybych si vlastni framework napsal postupně sám. Mám totiž jasnou představu co mají, které objekty dělat. Framework využiji asi spíš na pár složitějších funkcí.
To frameworky špatně chápeš. Nejsou dobré kvůli složitějším funkcím. Ale kvůli každodennímu programování, ve kterém ti usnadní spoustu práce. Navíc ti dají určitou základní strukturu aplikace, díky které se bez větší snahy dokážeš i po roce v aplikaci vyznat.
Vsadím se, že framework bys nenapsal, rozhodně ne kvalitní a za čas, který bys potřeboval k naučení jeho základů. Frameworky za tebe řeší spoustu věcí. Od bezpečnosti, přes spolupráci s databází, konfiguraci...
#1 Pixtr
Nakonec jsem se rozhodl pro PHP, JS a AJAX jelikož si funkce a objekty stejně chci naprogramovat od začátku sám.
Proč? Málokdo už nepíše webové aplikace pomocí některého z frameworků. Snad jen Jakub Vrána ;)
Otázku bych však měl zda je nějaký velký rozdíl v rychlosti aplikace, která je napsaná v PHP a nebo v ASP? Popřípadě jestli ASP umí něco co PHP nedokáže? (vše v rámci výsledného kódu na stránce, ne z hlediska programování)
Rozdíl v rychlostech je zanedbatelný. Věci náročnější na výpočty se stejně musejí psát v něčem jiném (typicky v céčku) a tak většinou rychlost aplikace závisí na rychlost SQL dotazů. A pokud se rozumně cachuje, tak už použitý jazyk nehraje téměř roli.
Dále bych chtěl znát Váš názor na získávání parametrů pro nastavení celého projektu z database (MySQL) nebo souboru INI. Co je podle Vás rychlejší a elegantnější? Bude se jednat především o cesty k layout souborům, uživatelské úrovně a tak dále
To je těžké říct - něco patří do databáze, něco do konfiguráku. Cesty bych do databáze nerval. Na to se hodí naučit se nějaký ten framework. Člověk tak alespoň trochu zjistí "jak se co dělá".
To jsou takzvané sitelinks a Google si je vytváří automaticky u webů, u kterých si myslí, že to má smysl. Pokud máš kvalitní web, patrně je časem získáš.
Jediný způsob, jak je ovlivnit, je přes webmaster tools. Tam můžeš nastavit ty, které nechceš aby se zobrazovaly.
Mimochodem pokud to děláš jen kvůli "SEO", tak se na to vykašli.
Zvláště pokud ten web už nějakou dobu běží. Pak to rozhodně nepomůže, spíše uškodí. Vyhledávače nemají rády veškeré změny adres a nějakou dobu jim bude trvat, než to zaindexují. Neboli se tvé stránky mohou ještě propadnout. A pokud nemáš v současnosti adresy kdovíjak strašlivě udělané, ani potom si moc nepolepšíš.
Pěkné adresy jsou sice hezké na pokoukání, ale pro vyhledávače nemají valný význam. Kdysi kdosi od Google dokonce prohlásil, že lépe indexují nepěkné adresy. Nevím, nakolik to platí a článek už asi nedohledám. A pokud by to mělo být kvůli lidem - ti si sotva zapamatují základní adresu webu, něco víc už si nezapamatují ani náhodou, ať už je to pěkné, nebo není.
#1 elijax
Snad všechny kompilátory vypisují, proč se program nepodařilo zkompilovat. Zkus zapátrat ve výpisu. Pokud ti nebude jasné, co chyba znamená, zkus zagooglit, nebo se zde zeptat.
Třeba všechny řádky:
interval_1=interval_1+1;
jsou špatně. Mělo by tam být := namísto =.
Příště prosím umisťuj svůj zdrojový kód do bloku pro zvýrazněnou syntaxi:
.
#1 Alrick
Máš opravdu jistotu, že chyba je v cyklu? Jako první bych zkontroloval, že se ti správně předávají x a y. Zkoušel jsem téměř identický kód na svém jednoduchém modelu a fungoval bez problémů.
Zdrojové kódy prosím dávej do vlastního bloku se zvýrazněnou syntaxí:
.
#12 remmidemmi
Mám za to, že při instalaci lze vybrat jazyk. Jinak není problém přenastavit jazyk i po instalaci (ale je to trochu komplikovanější, než ho správně vybrat hned na začátku).
Pokud myslíš LibreOffice, tak ano, je kompatibilní s OO.org. Ono je až na detaily téměř identické.
#5 Yohaku
Otevírající závorky tam máš:
if($_POST['submit']:
Alespoň u mne to vyhazuje syntax error. Správně by mělo být:
if($_POST['submit']):
Kdyby to bylo jednou, tak to chápu jako překlep, ale máš to tam dvakrát za sebou.
Také ti tam jednou chybí endif.
Mimochodem, co tě vede psát styl dvojtečka-endif? V PHP se většinou píše C stylem:
if ($a == $b) {
echo "Je to stejne!";
} else {
echo "Je to jine.";
}
#3 Yohaku
Ou, to vypadá nebezpečně. Kromě toho, že máš zvláštní styl zápisu, který snad ani nemůže fungovat (neukončovat závorky v podmínkách, zápis á la Python (nebo spíše Pascal?), nekontrolování existence $_POST pomocí isset...), je kód náchylný k SQL injection.
#9 remmidemmi
http://www.ubuntu.cz/
Škoda psát, co už je dobře napsáno jinde ;) Stačilo by malinko zapátrat.
#6 kocourOggy
Tak to zhruba je. No vlastně jen skoro. Implicitně je z globální proměnné povolené pouze čtení, ne zápis. Protože přepisovat si globální proměnné nadělá spoustu zmatku a je to opravdu něco, čemu by se řádný programátor měl vyhnout.
Nicméně pro úplnost, možné je i to. Je potřeba použít klíčové slovíčko global.
def fce_3():
global spam
print spam
spam = 1
print spam
To samozřejmě pozmění globální proměnnou:
>>> spam = 2
>>> print spam
2
>>> fce_3()
2
1
>>> print spam
1
Koukám, že už to přede mnou napsal Wrunx, sorry, přehlédl jsem.
#4 Unrealsk
Jaký odkaz je nefunkční?
Ke stažení 64bitového Lazara pro Windows jsem proklikal sem a jde mi stáhnout bez problémů.
Stejně tak samotný Free Pascal, pokud bys nechtěl IDE.
#3 Martin
select clanek_id, count(komentar_id) pocet from komentare group by clanok_id order by pocet desc
Případně do toho můžeš zakomponovat i načtení článků.
Ale jak už psal KIIV - je lepší si v tabulce u článků vytvořit kolonku s počtem komentářů.
Tak už jsem nalezl!
Výtvor z dílny Microsoftu - http://zoom.it
#1 kocourOggy
To jsem prohlásil asi já, že? :)
Bude to znít asi trochu hloupě, ale já nějak nevím, co si pod lepením kódu mam představit. Znamená to, že bych neměl používat funkce jako seznam.reverse() a místo toho použít svoje řešení jako je třeba toto:
Vůbec ne. Používat všech funkcí a možností jazyka je jenom správně.
Lepením kódu jsem myslel spíše způsob programování, kdy na internetu najdu nějaký kód, který dělá přibližně to, co potřebuji, přilepím ho do svého programu, kosmeticky si ho doupravím a mám hotovo. A už se netrápím tím, co vlastně kód dělá, nakolik je efektivní apod.
Ono i u těch vestavěných funkcích (jako např. zmíněný reverse) je dobré vědět, co dělají a jak rychlé to asi může být. Není na škodu, když si je člověk umí napsat sám, ale v naprosté většině případů to není vhodné - zvláště u interpretovaných jazyků. Vestavěné funkce jsou vesměs psány nějakým nízkoúrovňovým jazykem (u Pythonu třeba v C) a běhají rychleji, než kdyby byly napsány v samotném jazyce.
Nechtěl bys sem dát víc podrobností?
Myslím, že je důležité učit se programovat a ne pouze lepit kód.
Některé programovací jazyky k tomu svádějí více, některé méně. Vesměs všechny interpretované jazyky (PHP, Python...) ti dovolí lepit hodně. V Céčku tolik lepit nejde a proto se zdá být trochu obtížnějším. Jinak řečeno, začni v čem chceš a co se ti bude líbit, ale dej si pozor na to, abys vždycky věděl, co do programu píšeš - aby se ti z toho nestaly řádky plné volání neznámých cizích funkcích, o kterých nemáš tušení, jak fungují.
K tomu bych doporučil začít i s teorií - základní algoritmy, grafy, dynamické programování. Pro středoškoláky existuje korespondenční seminář KSP. Pořádají jednou za půl roku soustředění, na jaře je pro začátečníky, takže pokud chceš rychle kopnout dopředu, doporučuji ti jet. Ještě máš šanci se na jarní dostat.
K nastudování bych pak doporučil kspácké kuchařky, z tištěné literatury knížku od pana Töpfera.
#1 Washix
Časem jsem sesbíral sbírku úloh...
Ještě doporučení - pokud sem budeš vkládat zdrojové kódy, je na to v editoru speciální tlačítko (<?), aby to vypadalo trochu lépe a přehledněji ;)
Na zjišťování jestli je na konci lomítko nebo ne, je regulární výraz celkem brutální
if ( preg_match ("/\/$/", $dirname) == 0 )
Mnohem rychlejší bude něco takového (nezkoušel jsem, možná bude potřeba opravit):
if ( $dirname[strlen($dirname)-1] != '/' )
(Ale možná by nebylo od věci změřit, jak rychle obě varianty běhají. Občas bývají výsledky nečekané.)
Nechce se mi vůbec přemýšlet nad tím, k čemu je to dobré ;)
Ale po letmém zkouknutí: vůbec se mi nelíbí množství potlačování chyb. Pokud něco ukládám do souboru a nevím jestli se to povedlo nebo ne, je to k ničemu. Potřebuji mít jistotu. Jinak řečeno, zavináče bych používal co možná nejméně.
Ještě bych doporučil použití funkcí file_get_contents a file_put_contents.
#5 stif
To už se tu probíralo mnohokrát a nikdy jsme se na tom neshodli ;) Osobně si myslím, že se vhodnost liší případ od případu.
Pokud si někdo rád hraje s pájkou, pak bych doporučil třeba C, i když pro začátečníka není nejsnazší na pochopení. Pokud by rád webové aplikace, tak třeba Python nebo Ruby. Pokud míří výše, nebránil bych se Javě. Stejně se pravděpodobně časem naučí jazyků více (nebo alespoň jejich základů).
Pokud bys chtěl více názorů, zkus zagooglit...
#1 stif
Výhoda Lazara je jednoznačná - cena. Navíc dává možnost vytvářet i komerční aplikace, což tuším základní licence Delphi nedává (nejsem si úplně jistý). Takže pro začátečníka bych se nebál využít levnější alternativu. Těžko narazí na něco, co by mohl v Lazarusu postrádat.
Druhou otázkou je, jestli začátečníkovi doporučit k učení Pascal...