Anonymní profil sleepy – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil sleepy – Programujte.comAnonymní profil sleepy – Programujte.com

 

Příspěvky odeslané z IP adresy 158.195.206.–

sleepy
Python › Django User defined permissi…
13. 8. 2014   #192952

Zdravim,

Chcem vo svojom projekte umoznit uzivatelovi vytvorit si a udelit vlastnu permisnu, na urcite view-y. Mam vytvoreny model PermissionProviders, ktory je prepojeny pomocou OneToOneField-u na Permission a ManyToManyField-u na User-ov, ktory mozu danu permission-u udelit inym userom. Ak model PermissionProviders nebude existovat pre dany permission, tento permission moze udelit, len superuser (cize standarden spravanie sa djanga). Tato permisna bude zviazana vzdy s konkretnym linkom, moj napad je zobrat link k danemu view-u, urobit z neho md5 a doplnit ho do codename danej permissiony. Asi takto: 

MD5 = hashlib.md5()
def link_related_permission_required(base_permission, raise_exception):
	def decorator(view_func):
		def _warapped_view(request, *args, **kwargs):
			path = request.get_full_path()
			MD5.update(path)
			path_digest = MD5.hexdigest()
			link_related_permission = '%s@link=%s' % base_permission, path_digest
			if request.user.has_perm(link_related_permission):
				return view_func(request, *args, **kwargs)
			# Zvysok kodu ked nebude splnat podminky,
			# Skopirovany prevazne s user_passes_test dekoratora
		return wraps(view_func)(_wrapped_view)
	return decorator
	

Je to dobry postup, alebo existuje lepsie riesenie?

sleepy
Python › Potřeboval bych pomoc s thre…
13. 8. 2014   #192935

A este netusil som na co je channel 12, tak som ho vynechal z kodu.

sleepy
Python › Potřeboval bych pomoc s thre…
13. 8. 2014   #192934

A ten catch tam ma byt except

sleepy
Python › Potřeboval bych pomoc s thre…
13. 8. 2014   #192933

Po kratuckom prebehnuti si dokumentacie, som si vsimol zopar veci. Ak pouzijes polling a ches viac threadov tak jednotlive thready uspavas na nejaku fixnu dobu napr. 10ms. Aby mohol procesor pracovat na inich veciach. Dalsia moznost je pouzit wait_for_edge() funkciu ktora blokuje applikaciu po dobu pokial nenarazi na hranu. Nemam predstavu, co to je a ako to funguje, zrejme ide o nejaky obvod. Mne osobne sa najviac pacil ten add_event_detect. Skus mozno nieco taketo:

from threading import RLock
try:
	import RPi.GPIO as GPIO
catch RuntimeError:
	print "Error importing RPi.GPIO!  This is probably because you need superuser privileges.  You can achieve this by using 'sudo' to run your script"

GPIO.setmode(GPIO.BOARD)
chanels = [13,15,18,22,12]
for chanel in chanels:
	GPIO.setup(chanel, GPIO.IN)
# ... kod ...
font = pygame.font.Font(None, 40)

class InputRendering(object):

	def __init__(self, input_map):
		self._input_map = input_map
		self._neg_input_number = 15
		self._lock = RLock()
		self.registrate_channels()

	def registrate_channels(self):
		for channel in self._input_map.keys():
			GPIO.add_event_detect(channel, GPIO.BOTH, 
					      callback=self.on_change)

	def release_channels(self):
		for channel in self._input_map.keys():
			GPIO.remove_event_detect(channel)
			GPIO.cleanup(channel)

	def on_change(self, channel):
		with self._lock: # Zamkne sa moznost pristupit k cislu _neg_input_number
			neg_channel_num = ~self._inpu_map[channel] 
			self._neg_input_number &= neg_chanel_num # ponecha vsetko okrem daneho kanalu, ten sa nastavy na 0
			if GPIO.input(channel) == GPIO.HIGH: # ak je dany kanal 1 po precitani nastavy 1 inak ponecha 0
				self._neg_input_number |= self._input_map[chanel]

	def draw(self, screen):
		hex_value = None
		with self._lock
			hex_value = hex(self._neg_input_number ^ 15) # Invertovanie hodnot ak False == GPIO.LOW a True == GPIO.HIGH
		hex_value_str[2].upper()  # Vytiahnes cislo v hex bex 0x: 0xa -> A, 0x3 ->3
		d_text = font.render(hex_value, 1, (0, 191, 255))
		d_text_pos = text.get_rect(centerx = 300, centery = 300)
		screen.blit(d_text, d_text_pos)

input_rend = InputRendering(input_map={18:1, 15:2, 22:4, 13:8})


# tam kde kreslis by som dal nieco taketo

	while True:
		# kod
		screen.fill(black)
		draw_borders()
		# kod
		input_rend.draw(screen)
		pygame.display.filp()

Cerpal som od tialto: http://sourceforge.net/p/raspberry-gpio-python/wiki/Examples/ a tu je nieco k threadingu: https://docs.python.org/2/library/threading.html

sleepy
Python › entry pouze číselné hodnoty
5. 8. 2014   #192636

   

def read_numbers():
	list_of_numbers = []
	while True:
		inp = raw_input()  # cita input
		if inp == 'q':  # ak input sa rovna q citanie sa zastavy a vrati sa list
			break
		try:
			number = int(inp)  # parsuje integer hodnotu zo stringu
		except ValueError:
			continue  # ak sa hodnota nepodoba na integer tak pokracuje v citani a hodnotu nespracovava
		if 1<= number <= 5: # ak je hodnota v rozmedzi 1 .. 5 vlozi sa do listu
			list_of_numbers.append(number)
	return list_of_numbers  # vrati list cisel
sleepy
Java › Nejlepší knihu na Javu
21. 7. 2014   #192307

Urcite nie je zbytocne precitat si mistrovstvy v jave 7, aj ked vysla java 8. Vacsina veci sa nelisi. Mozem ti odporucit effective java od blocha, ale to az budes s javou mierne oboznameny, aby si sa vystrihal zlym navykom. Inak ked chces pisat aplikacie pre android zozen si nejaku knihu o android sdk, precitaj si ich tutorialy a urcite je to velmi dobre dokumentovane.

sleepy
PHP › Propojení Javascriptu s PHP
13. 7. 2014   #192101
sleepy
MySQL › databáze podobná RRD
10. 7. 2014   #191999

Vyhody: uspora casu. Zariadenie na ktorom to bezi nevyzaduje mysql. Nemusi sa ucit SQL (ale to patri do uspory casu). Moze si ulozit {1,2,3,...,n} hodinove priemery a uz ich nemusi nikdy pocitat, aj ked toto sa da aj v mysql. Dokonca ak by chcel nejaky dlhodoby priemer k-hodin kde k == 0 (mod n1) tak mu staci orobit priemer s n1 zaznamov. Tieto zaznami su prirodzene dobre usporiadane a navyse sa uz nebudu menit. Ci uz pouzije csv, xmolocha alebo nieco ine je len na nom. Ale ak mu ide o to naucit sa sql, tak len smelo do toho.

sleepy
MySQL › databáze podobná RRD
10. 7. 2014   #191993

Tomuto sa podla mna hovori ist s kanonom na vrabce. Za 10 rokov budes mat asi oklo 5.3e6 zaznamov. Na tvojom mieste by som to s kludnym svedomim ukladal ako plain text. Ale zalezi o co ti ide. Ak ti ide o to naucit sa nieco s mysql tak potom v poriadku. A tam tiez nemusis nic velmi riesit. Skus floor (dolna cela cast) SELECT avg(teplota), day(ts) as dd, hour(ts) AS hh FROM meteo GROUP BY dd, FLOOR(hh/2);  Aj ked nebude to uplne ono na to aby ti to pocitalo kazde 2 hod od zaciatku by si potreboval vediet kolko bolo hod. na zaciatky a to odratat od sucasneho casu.

sleepy
Java › Jak je to dneska s Javou?
3. 7. 2014   #191842

Ospravedlnujem sa, ale take veci ako mat field nastaveny ako private som neuvazoval a ani to nepouzivam.

sleepy
Java › Jak je to dneska s Javou?
3. 7. 2014   #191841

#174 Flowy
Tak to mi vysvetli ako chces effektive pristupit k fieldom objektu, bez accesorov? Lebo vela krat dany objekt nevie s danym fieldom urobit to co potrebujes aby s nim urobil a bolo by len matuce keby to robit vedel. V okamziku, ked mas interfejsi a pod. hluposti mozes sa posunut na trosku vyssiu uroven programovania. A o tom zatazovani mi mozes rozpravat, ak to co sa deje s danym fieldom trva radovo o vela dlhsie ako samotny pristup. Hmm DI mozno nie je najlepsi model, ale ked robis na niecom vecsom tak si celkom rad, ze take nieco ako DI existuje. A kedze predpokladam, ze si pises testy, tak podobne.

sleepy
Java › Jak je to dneska s Javou?
3. 7. 2014   #191828

#171 ekral
To hadam netvrdi, ze gettery su zle. Vsak to je jedina moznost ako komunikovat s danym objektom. Tam ani DI nepomaha, jedine co zostava je reflexia. Kamarat pise pluginy pre jednu nemenovanu hru, ktora vyuziva obfuskaciu a ukazoval mi tie vtipi (vlastne jedinu moznost ako to vyuzivat) ako niektore veci funguju: if(method.getName().equals("save")){...}. No to DI je prave dobre ak pouzivas niekoho ineho kod. Alebo ak vytvaras api, kniznicu. Mozes vtedy bez problemov testovat a pouzivat Mocked objekty. Nie si jednoducho odkazany na to aby si vedel co implementator pouzije a davas implementatorvi istu volnost. Keby v objekte neboli gettery, tak ten objekt je nepouzitelny. V jave je lepsie snazit sa vytvarat immutable objekty, maju svoje vyhody, ale v mnohych pripadoch sa to neda, alebo by to bolo prilis narocne a zbytocne. Napriklad vytvarat instanciu User za kazdym, ked chces zmenit jeho telefonne cislo. Ale za to telefonnec cislo mozes s kludnym svedomim urobit immutable, lebo v okamiziku ked ho zmenis je to uz ine telefonne cislo. S tou dedicnostou mas tiez pravdu. Dedit len to co sa dedit ma.

sleepy
Java › Jak je to dneska s Javou?
3. 7. 2014   #191824

Nechce sa mi vobec citat cely thread, ale posledny post mi neda: Co je na plytvani objektami zle? Viac pamate ako je pocet telefonnych cisel ti to bez tak nezabere. Neviem ako funguje PhoneHome, PhoneWork, ale extendoval by som ich z phonu, ak kazdy ma mat nejaku rozsirenu funkcionalitu. No ale k niektorym bodom:

  • Testovanie rovnosti definujes hned pre phone v metode equals tak, ze phonenumber == o.phonenumber
  • Ako chces radit telefonne cisla, mozes radit uzivatelov podla mena, ale toto je uplna zbytocnost co si napisal, mozno ak by si mal premennu zastihnutelnost a podla nej
  • Zalezi co chces od kial kopirovat
  • Serializable
  • nepoznam
  • daj dalsie

Napises jeden kostruktor a das tam zavislosti od, ktorych objekt zavisi. Tak nech napr. existuje objekt MessageSender a MessageReciever, ktory vie nejakym sposobom poslat a prijat sms (toto by mohlo byt pre objekt MobilePhone, tu uz sa hodi extendnut). Pouzijes di na to aby si mu tam vlozil objekt MessageSender a MessageReciever. Na normalny telefon (Phone) by sa zase mohlo dat volat cize by mal obsahovat objekt CallProvider, tieto 3 objekty by mohli byt singletony pre celu klientsku aplikaciu (cize nie je nutnost mat pre kazdy phone novu instanciu, lebo vacsinou jeden user nevie telefonovat viac jak na jedno cislo sucastne). Ospravedlnujem sa za chyby a mozno je to troska vytrhnute z kontextu, ale nedalo mi nereagovat. Inak s tou dedicnostou je pravda, tam je treba byt opatrny dedia sa len tried, ktore su urobene na to aby sa z nich dedilo. Na ostatne veci su wrappery, odporucam precitat J. Bloch  Effective java.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý