ugrás a tartalomhoz

Archívum - 2011 - Fórum téma

november 18

Szerializálás: külső referenciák injektálása

inf · 2011. Nov. 18. (P), 02.22
Szeretnék részleteket cachelni az aktuális állapotáról a rendszernek úgy, hogy a visszaállításkor az adott részlet automatikusan visszaépüljön a visszaállításkori rendszerbe. Így egy sokkal bonyolultabb cachelési logika valósítható meg... Gondoltam megosztom, hogy mire jutottam:

class Identity
{
	static protected $instance;
	static public function Instance()
	{
		if (!isset(self::$instance))
			self::$instance=new self();
		return self::$instance;
	}
	
	protected $map=array();
	
	public function hashCode($object)
	{
		$hashCode=spl_object_hash($object);
		$this->map[$hashCode]=$object;
		return $hashCode;
	}
	
	public function objectFromHashCode($hashCode)
	{
		return $this->map[$hashCode];
	}
}

class State
{
	public $value;
	
	public function __construct()
	{
		$this->value=rand(0,111);
	}
}

class MyClass
{
	public $state;
	public $stateHash;
	
	public function __construct()
	{
		$this->changeState();
	}
	
	public function changeState()
	{
		$this->state=new State();
	}
	
	public function __sleep()
	{
		$this->stateHash=Identity::Instance()->hashCode($this->state);
		return array('stateHash');
	}
	
	public function __wakeup()
	{
		$this->state=Identity::Instance()->objectFromHashCode($this->stateHash);
	}
}

$object=new MyClass();
$clone=unserialize(serialize($object));

echo $object->state===$clone->state; //1
Itt a lényeg annyi, hogy lehetséges szerializált objektumokba külső referenciákat injektálni.

november 17

select értékének átadása

Imre84 · 2011. Nov. 17. (Cs), 17.54
Sziasztok!

Két módszerrel is próbáltam kinyerni egy select értékét a torol2() fgv.-nek, de sajna egyik sem vált be. Ebben szorulnék 1 kis segítségre!

(A select innerhtml-lel lett kiíratva, egy másik elem helyére.)

function torol2(nyelv){
alert(nyelv);
}

function torol2(){
var nyelv= document.getElementById("hozzadaott");
alert(nyelv);
}

<select id="hozzadaott" name="ures" multiple='multiple'>
<option value="0">Jelenleg nincs hozzáadva egy nyelv sem!</option>
</select>
</div>
<input type="button" value="Töröl" onclick="torol2(this.form.hozzaadott.value)">
 

GnuPG + PHP

blabla · 2011. Nov. 17. (Cs), 16.46
Sziasztok

PHP-ban szeretnék egy aláírást készíteni, azt beletenni egy xml fileba (azaz valamelyik elementbe) és ezt elküldeni egy webcímre. Az aláírás készítés azonban a PHP GnuPG extensionnel sehogysem sikerül. Azaz az aláírás elkészül, de nem jó.

Tesztként van egy perl script is, ami szintén futás közben állítja elô az aláírást a GnuPG modul sign parancsával:
$gpg->sign(armor => 1,plaintext => "/tmp/".$$.".txt",output =>"/tmp".$$.".out",passphrase=>$gpgpass,'detach-sign'=>1,);
Ez a perl szépen lefut és az aláírás hiteles, mert a távoli szerver fogadja.

A php-ban készült aláírást viszont elutasítja a távoli gép. Azért gondolom, hogy a php-ben az aláíráskészítéssel van a gond, mert ha a perl script által készített aláírást teszem be az xml-be és azt küldöm el a php-ból, akkor minden ok.

A kulcskészítés a php scriptben:

  $res = gnupg_init();
  $info = gnupg_keyinfo($res, '######');
  $fingerprint =  $info[0]['subkeys'][0]['fingerprint'];
  print_r($info);

  gnupg_addsignkey($res,$fingerprint);
  gnupg_setarmor($res,1);
  gnupg_setsignmode($res,GNUPG_SIG_MODE_DETACH);
  $signed = gnupg_sign($res,$xmldata);

  $xmltotal = str_replace("<SIGNATURE>","<SIGNATURE>$signed",$xmldata);
Olyan érzésem van, mintha nem azt a kulcsot használná az aláíráskészítéshez amit kellene. Az addsignkey függvény vajon a publikus vagy a titkos kulcsot használja az aláírás készítéséhez?
Mi lehet a hiba?

Köszönöm
 

Karakter símitási módszerek photoshop mintára (éles, határott, erős...)

kow86 · 2011. Nov. 17. (Cs), 16.45
Sziasztok,

Olyan problémába ütköztem, hogy egy weboldalnál külső betűtípust használok és a weblap design tervében egyes szövegrészekre simítási módszerek vannak alkalmazva mint pl Éles, Határozott...stb és ez miatt nem pont úgy néznek ki a karakterek az oldalon mint photoshopban, erre esetleg tud valaki valami megoldást????

Előre is köszi.
 

CSS vagy Javascript hiba

kalikim · 2011. Nov. 17. (Cs), 16.27
Sziasztok!

Ne haragudjatok, hogy új témát nyitottam, de sajnos sehol nem találtam megoldást a problémámra.
Egy honlapot szerkesztek, melynek a fejlécébe be szeretnék szúrni egy galériát. Ezt a kis bannert már össze is raktam egy üres lapon, ami ebben a formában működik is, viszont mikor beillesztem a weboldalba, akkor már valamiért nem indul el. Szerintetek hol rontottam el? A választ előre is köszönöm.

Üdvözlettel:
Tamás
 

RegEx: html forrásban az új sor gondot okoz

shamanix · 2011. Nov. 17. (Cs), 15.15
Egy html oldal tartalma már változoban van.
Az oldalbol bizonyos kifejezések közti részt keresek.

preg_match('/<div class="tol">(.*?)<div class="ig">/', $oldal, $return);

namost ha a <div class="tol"> kif és a <div class="ig"> kif egy sorban van, akkor visszakapom a kettő közti tartalmat a $return-ben.
viszont ha nem, tehát van új sor karakter is közben, tehát pl van 10sor a 2 kif között akkor nem advissza semmit a fgv.
ezt hogyan oldhanám meg, hogy a (.*?)-vel jelölt tetszőleges string ben az uj sorok is tartozzanak bele? tehát a fgv ne csak egy sorban keressen, hanem amig nem találja meg a zaro kif-t, addig menjen ujabb sorokra is, és adja nekem vissza őket.

ilyeneket próbálok még, de nem jo:
preg_match('/<div class="tol">(.*?|[\n]*)<div class="ig">/', $oldal, $return);

köszi
 

scrollbar szinezés manapság hogyan?

troy1979 · 2011. Nov. 17. (Cs), 12.18
Sziasztok,

Nem tudom, manapság mennyire menő/nem menő a scrollbar szinezés/egyedi scrollbar-ok használata nállam mindenesetre 1 feladat kapcsán igényként merült fel


Azt tudom, hogy évekkel ezelőtt volt néhány IE specifikus css property ami ezt lehetővé tette, ám ezt a többi böngésző nem nagyon támogatta?

Mi a helyzet manapság? Szabvánnyá ( vagy ha nem is szabvánnyá, de más böngészők által is támogatott dologgá ) váltak ezek a dolgok?

Vagy esetleg ha nem is csak css-sel , de pl javascript segitségével tudnám a scrollbar kinézetét az összes böngészőben befolyásolni/egységesiteni?

Vagy esetleg valamilyen html/css/javascript alapú scrollbar megoldást kéne találnom, ami (majdnem) minden böngészőben müködik?

Létezik e esetleg valamilyen GWT (google web toolkit) alapú megoldás a problémára?

(a munka a vaadin/gwt framework-ökre épül)
 

Php-vel régi dbf file beolvasás és karakterkódolás

breakline · 2011. Nov. 17. (Cs), 11.37
Sziasztok

Egy rlgi dbf file-t olvasok be manuálisan, és egy Int típusú mezőt így kapok vissza (Int a mező az adatbázisban, persze a php-ban string):

november 17

Observer és a logika

inf · 2011. Nov. 16. (Sze), 23.25
Elég vicces minta az Observer, legalábbis biztosan nem volt a helyzet magaslatán, aki elnevezte.

Ugye van Observable és Observer a mintában, az érdekessége pedig az, hogy az Observer-t a Subject-hez kell beregisztrálni. Tehát nem a figyelő dönti el, hogy ő most figyel, hanem az megfigyelt dönti el, hogy őt most meg lehet figyelni. Ez pedig szerintem a való élettől elég elrugaszkodott, hacsak nem a pénzbedobós kukkolós fülkéket vette alapul a minta kitalálója... :D

$richMan=new Observer();			//$observer=new ConcreteObserver();
$girl=new Dancer();					//$subject=new Subject();
$girl->getCashFrom($richMan);		//$subject->registerObserver($observer);
$peepShow=new PeepshowEvent($girl);	//$event=new ConcreteEvent($subject);
$girl->perform($peepShow);			//$subject->notifyAll($event);
$richMan->watch($peepShow);			//$observer->notify($event);
Ti milyen más nevet adnátok ennek a mintának, illetve a benne lévő osztályoknak?
 

Oldal töltését jelző "ablak"

attiss94 · 2011. Nov. 16. (Sze), 17.54
Szép napot mindenkinek!
Mozt kezdtem foglalkozni a Javascript-ekkel, de fogalmam sincs arról, hogy hogyan lehetne megoldani a következő problémát: Amíg az oldal be nem tölt jelenjen meg egy ablak, mely jelzi a kliensnek, hogy az oldal tölt, de a hátteret sötétítse le és ne lehessen használni addik az oldalt. Próbáltam sokmindent, de mindig muszáj volt visszatérnem az eredetihez, mert nem működött...

Most így néz ki a kód:

function betolt()
				{
					if (document.getElementById)
						{
							document.getElementById('betolto').style.visibility='hidden';
						}
						else
							{
								if (document.layers)
									{
										document.betolto.visibility = 'hidden';
									}
									else
										{
											document.all.betolto.style.visibility = 'hidden';
										}
							}
				}
Erre nincs valami egyszerű megoldás?
A válaszokat előre is köszönöm!