xom`s pinion - Tom Hnatovsky Blog
Aktualizace všech sekvencí v PostgreSQL
Máte v PostgeSQL poslední hodnoty sekvencí, které vám nesedí s daty v tabulkách? Podobnou situaci můžete lehce navodit importním skriptem, který obsahuje hodnoty v polích, která by se měla automaticky plnit dle sekvence..
Jak z takové šlamastiky ven?
SELECT setval('tabulka_sloupec_seq', (SELECT MAX(sloupec) FROM tabulka)+1);
No jo, ale co když je těch tabulek mnoho? V tomto případě oceníte přítomnost plpgsql na serveru a vytvoříte si následující funkci:
CREATE OR REPLACE FUNCTION reset_sequence(table_name text, column_name text, sequence_name text)
RETURNS void AS
$BODY$DECLARE
BEGIN
EXECUTE 'SELECT setval( ''' || sequence_name || ''', ' || '(SELECT MAX(' || column_name || ') FROM ' || table_name || ')' || '+1)';
END;$BODY$
LANGUAGE 'plpgsql';
Funkci poté jednoduše spustíte nad všemi tabulkami pomocí příkazu:
select reset_sequence(table_name, column_name, table_name || '_' || column_name || '_seq') from information_schema.columns where column_default like 'nextval%';
Detekce webkamery pomocí ActionScript 3
Detekce přítomnosti webkamery ve Flashi není zcela triviální. On i počítač bez kamery se totiž tváří, že ji má a že může Flashi dodávat obraz.
První, co programátora napadne je použití konstrukce:
if (Camera.getCamera())
Bohužel právě tento kód kameru vrátí prakticky kdykoliv a jeho přidružené metody také nic moc nenapoví.
Pro detekci webkamery proto doporučuji třídu CameraDetection (ke stažení na GitHubu), která možnosti webkamery řádně otestuje a zjistí skutečný stav.
Implementace je velice jednoduchá, stačí použít následující kód:
import ktu.media.CameraDetection;
import ktu.events.CameraDetectionEvent;
import ktu.media.CameraDetectionResult;
var cd:CameraDetection = new CameraDetection(stage);
cd.addEventListener (CameraDetectionEvent.RESOLVE, onCameraResolve);
cd.begin();
private function onCameraResolve (e:CameraDetectionEvent):void {
switch (e.code) {
case CameraDetectionResult.SUCCESS:
trace("OK");
break;
case CameraDetectionResult.NO_SUCCESS:
trace("Fail");
break;
case CameraDetectionResult.NO_PERMISSION:
trace("Fail");
break;
case CameraDetectionResult.NO_CAMERAS:
trace("Fail");
break;
}
}