Saverio Serravezza a little stupid journal

La radice quadrata inversa veloce (Fast inverse square root)

Un pezzo di codice sorgente di Quake III Arena (1999) che implementa il calcolo della radice quadrata inversa. E’ un codice tanto geniale quanto semplice. Quattro volte più veloce (e con una buona approssimazione) del classico metodo di divisione dei float utilizzato fino ad allora. Usato per calcolare l’angolo realistico di incidenza di luci e ombre, ha rivoluzionato la grafica 3d e tutto il software derivato.

float InvSqrt (float x){
    float xhalf = 0.5f*x;
    int i = *(int*)&x;
    i = 0x5f3759df - (i>>1);
    x = *(float*)&i;
    x = x*(1.5f - xhalf*x*x);
    return x;
}

probabilmente anche le pulci delle pulci hanno le pulci

Tutti gli esempi di dio dei quali sento parlare sono roba inventata da uomini per uomini, parlano la lingua degli uomini. E quindi penso che se esistesse un dio io non lo comprenderei.

Lo sai che le pulci hanno le pulci? Le pulci sotto le ali hanno le pulci.. e probabilmente anche le pulci delle pulci hanno le pulci. E nessuna di queste pulci è cosciente di essere la pulce di una pulce.. e io penso che noi possiamo essere tranquillamente la pulce di una pulce.

E quindi se c’è qualcosa di più grande sopra di noi, noi non siamo in grado di comprenderlo.

14 April 2014, Bucharest

14 April 2014, Bucharest

Bucharest [14-4-2014]

Moria refugees camp, afghan hill, Lesvos Greece October 2015

Moria refugees camp, afghan hill, Lesvos Greece October 2015

Moria refugees camp, Lesvos Greece Moria refugees camp, Lesvos Greece, Lesvos

Mosul, Iraq 12 Jun 2010, breakfast with Peshmerga

Mosul, Iraq 12 Jun 2010, breakfast with Peshmerga

Mosul, Iraq 12 Jun 2010, breakfast with Peshmerga

ioeroaccuauntempoevoinoneravateuncazzo

ioeroaccuauntempoevoinoneravateuncazzo

obsession [9-03-2007]

obsession [9-03-2007]

e abbiamo dimenticato

E abbiamo dimenticato il sapore del pane.. Il rumore degli alberi.. La delicatezza del vento.. Abbiamo dimenticato il nostro nome.

la stanza dei morti - lalish - Iraq 2011

Lalish village - Iraq [6-06-2011]

Lalish village - Iraq [6-06-2011]

python - check if website is online and available

A pythonic way to simple check if a list of website is online. Simply we check the HEAD response from url using httplib.
If we get headers response, well just print it out the headers code and name.
If we get an exception instead, this means the website is Offline, we send email alert.
A more deep usage could be done checking a particular unwanted HTTP status, like 5xx or not found 404.

Here is the simple code:

import httplib
import urllib2
from smtplib import SMTP
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText

## defining email alert message
def email_alert(message, urldown):
	toaddrs = ['recipient@email.com']
	msg = MIMEMultipart()
	msg['Subject'] = 'OFFLINE '+str(urldown)
	msg['From'] = 'Sender Name <sender@email.com>'
	msg['To'] = 'Recipient Name <recipient@email.com>'
	body = str(message)
	msg.attach(MIMEText(body, 'plain'))
	try:
		smtpObj = SMTP('smtp. email.com')
		smtpObj.login('senderusername','password')
		smtpObj.sendmail('Recipient Name <recipient@email.com>', toaddrs, msg.as_string())
		smtpObj.quit()
		print 'Alert Email sent'
	except Exception,e:
		print 'Error: unable to send email',e


## defining dictionary of url to check
urls=[
	'google.com',
	'yahoo.com',
	'gooxxxxxxxgle.com',
	]

## first we check if internet is available
try:
	urllib2.urlopen("http://google.com", timeout=2)
	for url in urls:
		try:
			## check if we get url headers
			conn = httplib.HTTPConnection(url)
			conn.request("HEAD", "/")
			r1 = conn.getresponse()
			## response is ok
			## check if we get a server error 5xx
			if str(r1.status).startswith('5'):
				email_alert(str(r1.status)+ ' '+str(r1.reason), url)
				print url, '--- OFFLINE: ',r1.status, r1.reason
			else:
				print url,' ONLINE: ',r1.status, r1.reason
		except Exception,e:
			## response get an exception, print it and send alert email
			print url, '--- OFFLINE: ',str(e)
			email_alert(str(e), url)
		print '-'*30
except urllib2.URLError:
	# there is no connection
	print 'there is no internet connection'
	

magento - python - reindex only when is needed

As you will know best way to reindex data in Magento is from shell, php cli.
Well,

php /path/to/magento/shell/indexer.php -reindexall

will reindex all data, also when no reindex is needed.. Lot’s of waste of time and cpu load!!
Well.. or you can reindex a index only:

php /path/to/magento/shell/indexer.php --reindex catalog_url

But how to check if you need to reindex that particular index? Simply reading the output of:

php /path/to/magento/shell/indexer.php --status

I use the beautifull python “magento” library to connect with Magento Api and sync with ERP, stocks managements, CMS, etc..
So this solution is “pythonic” and only use php to call shell cli.. but can easily converted in pure php (if really needed.. python is so beautiful..)

## s.s. - s@saverioserravezza.it
## Magento - python/php - reindex only when is needed

import os
import subprocess

## dictionary to convert human index name in shell index name
dict_reind={'ProductAttributes':'catalog_product_attribute','ProductPrices':'catalog_product_price','CatalogURLRewrites':'catalog_url','ProductFlatData':'catalog_product_flat','CategoryFlatData':'catalog_category_flat','CategoryProducts':'catalog_category_product','CatalogSearchIndex':'catalogsearch_fulltext','Stockstatus':'cataloginventory_stock','TagAggregationData':'tag_summary'}

def reindex():
	## check what needed to be reindexed
	needed = subprocess.check_output('php /path/to/magento/shell/indexer.php --status', shell=True)
	needed = needed.replace(' ', '').split('\n')
	for line in needed:
		if line !='':
			if line.split(':')[1]=='RequireReindex':
				needreind=line.split(':')[0]
				print '--->>>> reindexing '+needreind
				os.system('php /var/www/unp/web/shell/indexer.php --reindex '+dict_reind[needreind])
© 2018 saverio serravezza. All rights reserved.