Archívum - 2011
július 3
Haladó PHP: kb. '1' == '2' ...parser bug?
<?php
$s1 = '00050003000500000008000100000000';
$s2 = '00050003000500000008000200000000';
var_dump((string)$s1 == (string)$s2? 'y' : 'n');
?>
Ez Ubuntu Linux alatt, 5.3.5-ös PHP-val fordult elő (semmi extra modul, hacsak az xdebug annak nem számít). Érdeklődve kérdezem: elmagyarázná valaki, hogyan lehetséges ez?
Megjegyzés: ez a kimenet felvet bizonyos kérdéseket azért az MD5 hash-ek összehasonlításakor is...
A konkrét feladatban egyébként arra lenne szükségem, hogy a két stringből melyik a "kisebb" és melyik a "nagyobb", vagy persze adott esetben egyenlőek-e. Verziószámokat szeretnék ellenőrizni úgy, hogy a fentihez hasonló normál alakra hozom őket, elkerülve azt, hogy külön erre a problémára egy osztályt kelljen írnom és implementálni kelljen minden komparáló operátorra egy metódust.
Előre is köszi a segítséget!
Jó az, ha a leszármazott más típussal tér vissza, mint a szülő?
Okoz-e valakinek lelki sérülést egy olyan húzás, ha a szülő osztály egy metódusa más típusú értéket ad vissza, mint a leszármazotté? :-)
(szóval, hibának számít-e, ha ilyet teszek?)
Visszatértem az alapokhoz és újra 0-ról próbálom felépíteni a kis oldalamat. Itt kaptam valakitől az ötletet, hogy a rekordok kezelésére nem ártana egy absztrakt osztály, aminek a kiterjesztésével hozhatom létre a tényleges adatokhoz szükséges osztályokat.Ez így mennyire gázos?
Normális körülmények közt a fenti szülő és leszármazott működése csak annyiban tér el egymástól, hogy a gyerek osztály végrehajt egy ellenőrzést a beolvasott adatokon és exceptiont dob, ha egynél több sort talált a kulcsához. Ha nem írom felül a getData-t, akkor a visszaadott értékre mindig kétdimenziós tömbként kellene hivatkozni, ami kényelmetlen lenne.
De egyáltalán az, hogy az egyedi kulcsból létrejövő objektumokat külön kezelem, ez mint elképzelés elfogadható?
(RDBMS-t használva nincs sok értelme, hiszen ráhúzok a megfelelő mezőre egy unique key-t és nem kell tovább foglalkozni vele, de gondolok arra az esetre, ha mondjuk rámjön a hülyeség és mondjuk CSV file-t akarok "adatbázis" helyett használni)
■ (szóval, hibának számít-e, ha ilyet teszek?)
Visszatértem az alapokhoz és újra 0-ról próbálom felépíteni a kis oldalamat. Itt kaptam valakitől az ötletet, hogy a rekordok kezelésére nem ártana egy absztrakt osztály, aminek a kiterjesztésével hozhatom létre a tényleges adatokhoz szükséges osztályokat.
abstract class RecordHandler {
protected $buffer=array(); # Ide kerülnek a beolvasott adatok
# Egy tömbelem=egy sor, minden sor egy-egy tömb,
# melyben egy-egy elem=a sor egy mezője
...
public function getData(){
...
return $buffer;
}
...
}
# ez egy olyan osztály, amely biztosítja, hogy az objektum csak akkor jöjjön
# létre, ha a létrehozásához megadott kulcshoz max. 1 sor/rekord tartozik
# a tárolóban (ami nem feltétlenül RDBMS, ezért a körülményes megfogalmazás)
abstract class UniqRecordHandler extends RecordHandler {
...
public function getData(){
...
return $buffer[0];
}
}
Normális körülmények közt a fenti szülő és leszármazott működése csak annyiban tér el egymástól, hogy a gyerek osztály végrehajt egy ellenőrzést a beolvasott adatokon és exceptiont dob, ha egynél több sort talált a kulcsához. Ha nem írom felül a getData-t, akkor a visszaadott értékre mindig kétdimenziós tömbként kellene hivatkozni, ami kényelmetlen lenne.
De egyáltalán az, hogy az egyedi kulcsból létrejövő objektumokat külön kezelem, ez mint elképzelés elfogadható?
(RDBMS-t használva nincs sok értelme, hiszen ráhúzok a megfelelő mezőre egy unique key-t és nem kell tovább foglalkozni vele, de gondolok arra az esetre, ha mondjuk rámjön a hülyeség és mondjuk CSV file-t akarok "adatbázis" helyett használni)
Web Workers in IE10: Background JavaScript Makes Web Apps Faster
A 10-es verziótól kezdve az IE-ben is elérhetőek a workerek
■ Django multiblog
Sziasztok!
Djangoban szeretnék segítséget kérni. VPS-en szeretnénk blogolni három barátommal, ez a része rendben van, mindent sikeresen beállítottunk. Regisztráció nem lesz, az adminban létrehoztam a felhasználókat.
Amin nem sikerül túllépni az a blog app. Rongyosra olvastam a tutorialokat de vagy nem az én esetemről szól vagy annyira sok a kód, hogy nem vagyok képes kibogarászni, hogy voltaképp melyik része kéne nekem a megértéséhez.Tudom most nagyon sokat kérek de ha valaki lenne szíves ehhez a models.py-hez egy views.py, forms.py és egy templates/post.html-t mutatni annak nagyon örülnék. A post.html-be mehetne a <form> és a beküldött tartalom is, az átláthatóság kedvéért.
Annyi lenne a lényeg, hogy hármónk blogja külön lenne, tehát ha én írok egy bejegyzést akkor az csak az én oldalamon látszódjon és oda csak én tudjak beküldeni tartalmat.
Lehet túl sokat kérek. Nem szeretnék senkivel megíratni egy multiblogot, csak kéne egy nagyon alap multiblog app, hogy megértsem. Köszönöm ha tudsz segíteni.
■ Djangoban szeretnék segítséget kérni. VPS-en szeretnénk blogolni három barátommal, ez a része rendben van, mindent sikeresen beállítottunk. Regisztráció nem lesz, az adminban létrehoztam a felhasználókat.
Amin nem sikerül túllépni az a blog app. Rongyosra olvastam a tutorialokat de vagy nem az én esetemről szól vagy annyira sok a kód, hogy nem vagyok képes kibogarászni, hogy voltaképp melyik része kéne nekem a megértéséhez.
# models.py
from django.db import models
from django.contrib.auth.models import User
class Post(models.Model):
title = models.CharField(max_length=100)
body = models.TextField()
user = models.ForeignKey(User)
Annyi lenne a lényeg, hogy hármónk blogja külön lenne, tehát ha én írok egy bejegyzést akkor az csak az én oldalamon látszódjon és oda csak én tudjak beküldeni tartalmat.
Lehet túl sokat kérek. Nem szeretnék senkivel megíratni egy multiblogot, csak kéne egy nagyon alap multiblog app, hogy megértsem. Köszönöm ha tudsz segíteni.
Törlés megerősitése
Lécci segítsetek! Van egy oldal ahol a törléshez megerősítés kéne, de ha a mégse gombra kattintok akkor is törli azt a sort (adatbázisról van szó). itt a script: és a php (ez a button oldali rész):
■ <script type="text/javascript">
function elhagyod()
{
var elhagy=confirm("Valóban törlöd a bejegyzést?");
if (elhagy==true)
{
window.open("delete.php","_self");
}
else
{
return false
}
}
</script>
<?php
require_once("../include/dbconn.php");
$p="SELECT * FROM `news`";
$e=mysql_query($p);
echo '<p><a href="news.php?i=0"><img src="img/psd-new-button.png" alt="Hír feltöltése" border="none" /></a></p>';
echo '<table id="newstb" cellpadding="0" cellspacing="0" border="0" class="display">';
echo '<thead>
<tr>
<th>ID</th>
<th>Cím</th>
<th>Tartalom</th>
<th>Írta</th>
<th>Létrehozva</th>
<th>Módosítás</th>
</tr>
</thead>';
echo '<tbody>';
while ($row=mysql_fetch_assoc($e))
{
echo '<tr>
<td>'.$row['id'].'</td>
<td>'.$row['title'].'</td>
<td>'.$row['content'].'</td>
<td>'.$row['name'].'</td>
<td>'.$row['date'].'</td>
<td><a href="modification.php?id='.$row['id'].'"><img src="img/psd-m-button.png" alt="módosítás"></a><a href="delete.php?id='.$row['id'].'" onclick="elhagyod()"><img src="img/psd-m-button.png" alt="delete"></a></td>
</tr>';
}
echo '</tbody>';
echo '</table>';
}?>
Buffer.prototype = new Array();
Helló guruk!
Az Array osztályt szeretném kiterjeszteni, egy buffer-t szeretnék html elemeknek, amit css selector-okkal tudok feltölteni és arra gondoltam az alap Array tökéletes alap lenne, de pl a splice metódusnál a length tulajdonság változik csak rendesen az elemek, indexek ott maradnak ha nem szurok be új elemet (mondjuk ezt ki lehet küszöbölni), de azért érdekelne, hogy, valaki próbált már ilyesmit? Csak szeretném elkerülni a napig tartó tesztelést minden böngészőn azért kérdezem, hogy lehet e így csinálni működnek e a örökölt metódusok?
■ Az Array osztályt szeretném kiterjeszteni, egy buffer-t szeretnék html elemeknek, amit css selector-okkal tudok feltölteni és arra gondoltam az alap Array tökéletes alap lenne, de pl a splice metódusnál a length tulajdonság változik csak rendesen az elemek, indexek ott maradnak ha nem szurok be új elemet (mondjuk ezt ki lehet küszöbölni), de azért érdekelne, hogy, valaki próbált már ilyesmit? Csak szeretném elkerülni a napig tartó tesztelést minden böngészőn azért kérdezem, hogy lehet e így csinálni működnek e a örökölt metódusok?
Netbeans + Zend FW + PhpUnit
Sziasztok!
Netbeans + zend + phpunit telepítésével küzdök. Most próbálok áttérni IDE-re az idétlenkedésről.
Van egy godaddy accountom, és oda szeretnék egy zend-es weblapot. A gondom első körben a verziókkal van, godaddynél 5.2.14 van, a zend pedig 5.2.4-et követel. Nyilán a 14>4, viszont 100%-ig biztos akarok lenni, hogy tényleg így kell nézni, és nem azt, hogy 1-essel kezdődik a 14. :-) Szóval arra vagyok kíváncsi, hogy szerintetek is elfut e az accon?
Azzal kapcsolatban is van kérdésem, hogy hogyan tudnék közbeiktatni egy teszt szervert? Netbeans-nél nekem úgy jött le, hogy megadok egy ftp szervert, aztán oda felmásolja valahogyan a projekt fájljait, de mondjuk ha localhostot adom meg, akkor nem történik semmi a projekt fájljaival, nem jelennek meg a mappájukban, ahol kéne. Számomra ez elég érthetetlen, pedig biztosan van logikus magyarázat, ugye? :D
Phpunit-ig még nem jutottam el, láttam, hogy van hozzá seleniumos kiterjesztés is, ami jó előjel, de úgy néz ki ott is gondok lesznek majd a telepítéssel. Egyelőre bemásoltam a kiterjesztéseket, de a dbunit-hoz külön bat fájl volt a packban, amit majd valszeg kézzel kell hívogatnom, mert a netbeans nem ismeri csak a phpunit bat-ját... (Egyelőre még nem néztem meg, hogy ez a dbunit mire jó, nem tudom elképzelni, hogy az adatbázis tesztelést hogyan lehet automatizálással segíteni, de biztos van valami megoldás erre is, különben nem lenne ilyen stuff :D)
■ Netbeans + zend + phpunit telepítésével küzdök. Most próbálok áttérni IDE-re az idétlenkedésről.
Van egy godaddy accountom, és oda szeretnék egy zend-es weblapot. A gondom első körben a verziókkal van, godaddynél 5.2.14 van, a zend pedig 5.2.4-et követel. Nyilán a 14>4, viszont 100%-ig biztos akarok lenni, hogy tényleg így kell nézni, és nem azt, hogy 1-essel kezdődik a 14. :-) Szóval arra vagyok kíváncsi, hogy szerintetek is elfut e az accon?
Azzal kapcsolatban is van kérdésem, hogy hogyan tudnék közbeiktatni egy teszt szervert? Netbeans-nél nekem úgy jött le, hogy megadok egy ftp szervert, aztán oda felmásolja valahogyan a projekt fájljait, de mondjuk ha localhostot adom meg, akkor nem történik semmi a projekt fájljaival, nem jelennek meg a mappájukban, ahol kéne. Számomra ez elég érthetetlen, pedig biztosan van logikus magyarázat, ugye? :D
Phpunit-ig még nem jutottam el, láttam, hogy van hozzá seleniumos kiterjesztés is, ami jó előjel, de úgy néz ki ott is gondok lesznek majd a telepítéssel. Egyelőre bemásoltam a kiterjesztéseket, de a dbunit-hoz külön bat fájl volt a packban, amit majd valszeg kézzel kell hívogatnom, mert a netbeans nem ismeri csak a phpunit bat-ját... (Egyelőre még nem néztem meg, hogy ez a dbunit mire jó, nem tudom elképzelni, hogy az adatbázis tesztelést hogyan lehet automatizálással segíteni, de biztos van valami megoldás erre is, különben nem lenne ilyen stuff :D)
július 1
MySQL: rendezés GROUP BY előtt
Szevasztok!
Szeretnék kérni egy kis segítséget, mert elakadtam.
Adott egy képalbum. Szeretném kiválasztani a legjobb képeket felhasználónként csoportosítva, egy konkrétan megadott albumon belül.
A tábla - a kérdésben említett része - így néz ki:
Ebből szeretnék egy ilyesmit:
Attól, hogy *-ot kérek le és, hogy a GROUP és az ORDER fordítva van, kérlek Titeket, tekintsünk el.
Az érthetőség miatt írtam így.
Köszönöm a segítséget előre is!
■ Szeretnék kérni egy kis segítséget, mert elakadtam.
Adott egy képalbum. Szeretném kiválasztani a legjobb képeket felhasználónként csoportosítva, egy konkrétan megadott albumon belül.
A tábla - a kérdésben említett része - így néz ki:
userid | albumid | rating |
---|---|---|
1 | 1 | 5 |
1 | 1 | 3 |
2 | 1 | 5 |
2 | 1 | 3 |
1 | 2 | 5 |
1 | 2 | 2 |
Ebből szeretnék egy ilyesmit:
SELECT * FROM table WHERE albumid = 1 ORDER BY rating DESC GROUP BY userid
userid | albumid | rating |
---|---|---|
1 | 1 | 5 |
2 | 1 | 5 |
Attól, hogy *-ot kérek le és, hogy a GROUP és az ORDER fordítva van, kérlek Titeket, tekintsünk el.
Az érthetőség miatt írtam így.
Köszönöm a segítséget előre is!