Programming and Exciting Things

Изтриване на event логовете от Windows

Published on 20.10.2012

Едно от нещата които обичам е автоматизацията. Тук след като с едно python скриптче съм си "прегледал" windows логовете трябва някак си да ги затрия :). За целта ползвам:

 for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1" 
според документацията на msdn това трябва да може да се ползва на Windows 7, Windows Server 2008 R2, Windows Server 2012, Windows Vista.

Повече информация за wevtutil

[php] Facebook Notifications API

Published on 02.10.2012

Въпреки че в момента Notifications API-то на Facebook e във beta може да се ползва от приложения за изпращане на съобщения към потребителите.
С използването open graph api то им това се случва доста лесно.

$app_id = YOUR_APP_ID;
$app_secret = YOUR_APP_SECRET;
$facebook = new Facebook(array(
  'appId'  => $app_id,
  'secret' => $app_secret,
));
$token = $app_id.'|'.$app_secret;
$params = array(
	'access_token'	=>	$token,
	'href'			=>	'?goto=http://yuksbg.net/',
	'template'		=>	'Спам съобщение'
);
$result = $ap->api('/TO_FACEBOOK_USER_ID/notifications/','post',$params)		
var_dump($result);
Ако всичко е наред и приложението има права резултата трябва да бъде:
(array) Array
(
    [success] => 1
)

LessCss mixins - gradient

Published on 30.09.2012

Един мъничък mixin за Lesscss който генерира (почти) всички варианти за css3 градиенти: [css] .gradient_(@from,@to){ background: @from; -o-background-size: 100% 100%; -moz-background-size: 100% 100%; -webkit-background-size: 100% 100%; background-size: 100% 100%; background: -webkit-gradient( linear, left top, left bottom, from(@from), to(@to) ); background: -webkit-linear-gradient( top, @from, @to ); background: -moz-linear-gradient( top, @from, @to ); background: -o-linear-gradient( top, @from, @to ); background: linear-gradient( top, @from, @to ); } [/css]
Използва се по познатия начин:
[css] .gradient_(#efebec,#e1e1e1); [/css]

[js] Google Maps fit Bounds

Published on 21.09.2012

Задачата е следната:
В google maps карта да се показват marker-и и според това къде са разположени маркерите да се zoom-ва автоматично. Решението като цяло е елементарно. Използваме fitBounds :) ето и малко код:
създаваме маркери:

var markserLatLng = []
make_marker = function(lat,lng) {
	latlng = new google.maps.LatLng(lat,lng);
	marker = new google.maps.Marker({
				position: latlng,
				map: map,
				draggable:false
	});
	markserLatLng.push(latlng);
}

setFitMe = function(){
	var bounds = new google.maps.LatLngBounds ();
	for (var i = 0, LtLgLen = markserLatLng.length; i < LtLgLen; i++) {
	 	  bounds.extend (markserLatLng[i]);
	}
	map.fitBounds (bounds);
};


След като си добавим маркерите "извикваме" функцията
 setFitMe(); 

Python стартиране на 1 инстанция

Published on 04.09.2012

Проблем: от едно приложение трябва да има само 1 стартирана инстанция.
Решението:

import os,psutil
def write_pidfile_or_die(path_to_pidfile):
    if os.path.exists(path_to_pidfile):
        pid = int(open(path_to_pidfile).read())
        if psutil.pid_exists(pid):
            raise SystemExit
        else:
            os.remove(path_to_pidfile)
    open(path_to_pidfile, 'w').write(str(os.getpid()))
    return path_to_pidfile

temp_dir = os.environ['APPDATA'] + '/SOME_DIR'
write_pidfile_or_die(temp_dir+'/pidfun.pid')	
като идеята е следната:
при стартиране на приложението проверяваме файла и PID-а дали съществува, ако съществува SystemExit, ако не съществува записваме сегашния pid