» »

[Python] Ali se da narediti...

[Python] Ali se da narediti...

Rias Gremory ::

Zanima me če se da v Pythonu narediti kakšen bolj enostaven overclocking programček ki ima tudi možnost nastavljanja obratov ventilatorjev?


Da ne bom ustvarjal nove teme imam še eno vprašanje (to vprašanje se ne nanaša na python). Zanima me kakšno znanje je potrebno za pisanje gonilnikov?

Lp, LinksysOne
Mirno gledamo, kako naš svet propada,
saj za časa našega življenja ne bo popolnoma propadel.

smoke ::

Za prvo vprašanje odgovora ne vem, lahko ti pa povem za gonilnike. Vbistvu morš znat celotno arhitekturo sistema na kterem razvijaš gonilnike. Torej kako sistem komunicira z gonilniki pošiljanje podatkov napravi, handlanje interruptov, ki jih naprava nazaj pošlje itd. Če razvijaš na windowsih rabiš vedet še kako so sami driverji zgrajeni (Windows Driver Model). Imajo namreč točno določeno strukturo in sicer: main funkcijo, ki se imenuje DriverEntry, Dispatch procedure (to so procedure, s katerimi tvoj gonilnik handla requeste poslane napravi), Unload funkcija (ta naredi vso potrebno deinicializacijo, se pravi sprostitev pomnilnika, ki ga je driver alociral za delo z neko napravo v primeru da se naprava uninstalira s sistema), itd. Jezik uporabljen za pisanje gonilnikov je C (ne C++) ali seveda x86 assembly.

To bi bilo nakratko to. Če te še kaj zanima pa le vprašaj :)

technolog ::

Python za kakršnekoli sistemske in low-level stvari? Ne!

brodul ::

Ful odvisno od operacijskega sistema.
To naceloma velja za linux:
Naceloma v pythonu ne bos mogel pisat gonilnikov, bos pa lahko nadzoroval hitrost in spisal GUI, sam naceloma se bos moral nahookati na kak C program ali pa kernel API. To je najlazje in najbolj IMO racionalno.
Npr. https://wiki.archlinux.org/index.php/Fa...
Pac kernel, da noge narazen in potem lahko tam saris in nastavljas hitrost ne da bi si lomil zobe.

Ce te zanima globlje je smoke dobro napisal. Drugace pa "use the source" (no vsaj v linux lahko to reces).
Pac naceloma je to na zacetku prevelik task. Potem pa itak vzames drugo hackarsko pravilo "No problem should ever have to be solved twice.". Pa se vprasas, koliko ti bo to v sloveniji koristilo. Pomoje bolj pisati gonilnike za arm ali avr.

Za windowse ne vem.

Ce se bos odlocil pisati v C ali C++, ti bo python zelo koristil saj je odlicen glue jezik.
Pretending to be a mature adult is so exhausting.

Rias Gremory ::

@smoke
Sigurno te bom še kdaj rabil pri teh stvareh ker vidim da imaš znanje o tem. Sam se šele učim pythona in bi ga rad obvladal ker mi je lahek. Potem ko bom že bolj vešč o programiranju bi se pa lotil pisanja gonilnikov, predvsem imam željo da bi pisal gonilnike za grafične kartice (btw vem da obstajajo custom napisani gamerski/OC driverji za grafične (http://www.omegadrivers.net/ ) in me zanima kako oni vedo kaj morajo napisati za ATI oz. Nvidio? To je vprašanje bolj radovedne narave tako da bo preprost odgovor ok).


Imam še eno čudno vprašanje za vse. Na primer da hočem napisati nek program, kako točno vem kaj moram napisati? Velikokrat kdo reče da naj za začetek pogleda izvorno kodo, ampak kaj pa če ta stvar še ni bila prej napisana? Na primer da se lotim pisanja P2P odjemalca (like utorrent) in prej ni bil napisan, kako bom vedel kaj moram napisati?
Kar hočem povedati je da hočem napisati nekaj vendar pri tem ne gledati source kod, hočem da je vsa koda moj izdelek.
Kakor sem rekel čudno (butasto) vprašanje in zato upam bo odgovor ok, ker sem še nov v teh vodah.

EDIT: Aja, naj še povem da sem na Ubuntuju in da bom za začetek programiral samo za njega.

Lp, LinksysOne
Mirno gledamo, kako naš svet propada,
saj za časa našega življenja ne bo popolnoma propadel.

Zgodovina sprememb…

Senitel ::

Rias Gremory je izjavil:

Potem ko bom že bolj vešč o programiranju bi se pa lotil pisanja gonilnikov, predvsem imam željo da bi pisal gonilnike za grafične kartice (btw vem da obstajajo custom napisani gamerski/OC driverji za grafične (http://www.omegadrivers.net/ ) in me zanima kako oni vedo kaj morajo napisati za ATI oz. Nvidio? To je vprašanje bolj radovedne narave tako da bo preprost odgovor ok).

Omega driverji niso iz 0 napisani na novo. Gre samo za driverje od NV/AMD, kjer so spremenili določene nastavitve za GPU, ki so sicer zapisane v registru.

Rias Gremory ::

Potem so spremenjene samo nastavitve (hitrost ventilatorjev, clock jedra itd.) ki omogočajo da se iztisne več iz same grafične kartice če prav razumem.
Mirno gledamo, kako naš svet propada,
saj za časa našega življenja ne bo popolnoma propadel.

System ::

Da.

Senitel ::

+ določene interne nastavitve (recimo glede AA, LOD,...)

smoke ::

LinksysOne, ena možnost je da je res tak kot je reko Senitel možno pa je, da so napisali filter driver, ki se priklopi na sklad gonilnikov ki upravljajo z grafično kartico. To je recimo pravilen način za dodajanje funkcionalnosti neki napravi. Sicer pa grafični gonilniki niso tak problem za napisat, ker imaš točno določen model, ki mu more tak driver ustrezat. Imenuje se Miniport. S tem je Microsoft hotel olajšati delo programerjem grafičnim gonilnikov in preprečiti podvojevanje kode. Deluje pa tako: V sistemu že obstaja en video gonilnik, ki je vbistvu univerzalen in sicer videoprt.sys in je vbistvu wrapper za dejanski gonilnik. Miniport driver (se pravi driver specifičen za nek tip grafičnih - npr AMD, Nvidia) ima vbistvu importane funkcije samo od videoprt.sys driverja kar pomeni da vbistvu sistem ko hoče nekaj izrisati na zaslon pokliče vbistvu videoprt.sys in ta nato pokliče miniport driver ki dejansko izriše nekaj.

Naj še omenim, da to velja za Windows sistem, nimam pojma kak linux to dela.

Upam da sem bil razumljiv.

Lep pozdrav,
smoke

brodul ::

Rias Gremory je izjavil:

@smoke

Imam še eno čudno vprašanje za vse. Na primer da hočem napisati nek program, kako točno vem kaj moram napisati? Velikokrat kdo reče da naj za začetek pogleda izvorno kodo, ampak kaj pa če ta stvar še ni bila prej napisana? Na primer da se lotim pisanja P2P odjemalca (like utorrent) in prej ni bil napisan, kako bom vedel kaj moram napisati?
Kar hočem povedati je da hočem napisati nekaj vendar pri tem ne gledati source kod, hočem da je vsa koda moj izdelek.
Kakor sem rekel čudno (butasto) vprašanje in zato upam bo odgovor ok, ker sem še nov v teh vodah.

EDIT: Aja, naj še povem da sem na Ubuntuju in da bom za začetek programiral samo za njega.

Lp, LinksysOne


Naprej moras vedeti kaksen problem resujes ter katere tehnologije so navoljo, da problem resis. Pri bittorentu (podobno je pri ostalih stvareh) je bilo treba najprej premislit in napisat specifikacijo http://www.bittorrent.org/beps/bep_0003.... Ne bos sel pa nanovo izumljat IP. In ce zelis sedaj razviti aplikacijo/knjiznico preberes specifikacijo. Ce zelis recmo na Ubuntu razviti aplikacijo lahko vzames knjiznico, ki rihta taksne zadeve (libTorrent). Ali pa vzames python module, ki se sklicujejo na to knjiznico. Oz ves, da je bil bittorrent protokol najprej implementiran v pythonu (pred Cjem) http://pypi.python.org/pypi/BitTorrent-... .

Ce hoces resevati nek problem bos rabil 3 projekte, ki si jih slabo reseval in si iz njih potegnil kaj je slabo.

Pac sam si izberes na katerem nivoju bos zacel. Naceloma si na zacetku postavis prevelike cilje, in neracionalno je na zacetku pisati protokole, ker realno nimas/nimam znanja, da bi to spisal v doglednem casu.

P.S.
Tole je ena seminarska na FE:
http://www.kiberpipa.org/~brodul/chip/A...
Malo je Cja in malo Pythona.

BTW si iz Ljubljane?
Pretending to be a mature adult is so exhausting.

Rias Gremory ::

@Senitel
Hvala da si mi pojasnil. :)

@smoke
Zdaj že malo bolj razumem. Btw ali ta videoprt.sys microsoft sproti piše oz. osvežuje zaradi novih grafičnih kartic ki sproti prihajajo ven? Ali pa imajo nek standard ki je enak pri vseh grafičnih karticah da se ta univerzalen gonilnik razume z kartico?

@brodul
Hvala za obrazložitev ker zdaj zgleda vse bolj jasno. Za začetek bi rad naredil generator gesel, ki bi te vprašal koliko mestno naj bo geslo in ali naj bodo notri znaki in črke in številke in potem bi generator vse te podatke vključil v generiranje ki bi bilo naključno.

Ja, sem iz Ljubljane oz. sem iz Vižmarj (to je blizu Šentvida).
Mirno gledamo, kako naš svet propada,
saj za časa našega življenja ne bo popolnoma propadel.

smoke ::

LinksysOne, ne, to je glih poanta takega sistema. Videoprt.sys je vedno enak medtem ko se miniport driver od proizvajalca do proizvajalca spreminja (ne dela vsaka grafična enako, če me razumeš). Ampak z vidika windowsov stvar vedno dela, ker videoprt.sys vbistvu vedno pokliče miniport in ta potem izriše stvar na zaslon. Funkcije v videoprt.sys so vbistvu wrapperji za dejanske funkcije, ki nekaj naredijo, in te so v miniportu.

Lep pozdrav

brodul ::

Rias Gremory je izjavil:


@brodul
Hvala za obrazložitev ker zdaj zgleda vse bolj jasno. Za začetek bi rad naredil generator gesel, ki bi te vprašal koliko mestno naj bo geslo in ali naj bodo notri znaki in črke in številke in potem bi generator vse te podatke vključil v generiranje ki bi bilo naključno.

Ja, sem iz Ljubljane oz. sem iz Vižmarj (to je blizu Šentvida).


Super izbral si si problem, ki je zelo zanimiv. Tukaj se lahko vprasas kje racunalnik dobi random stevilko.
Oz kako je to v pythonu implementirano. http://docs.python.org/library/random.h... (hint: napisi v terminal cat /dev/urandom | tr -dc 'a-zA-Z0-9'). Ker reci racunalniku naj ti da neko nakljucno stevilko ni tako enostavno. Seveda potem ko programiras enostavno vzames import random.

Glede na to da si iz Ljubljane te lahko povabim na tole: http://www.kiberpipa.org/sl/event/djang...
Na tem dogodku bodo sami python programerji, ki delajo v pythonu spletne strani. Sicer bo za tebe cel kup novih stvari, ampak bo zagotovo dobra izkusnja, ce gres tja malo poslusat. Stvar je brezplacna (tako kot skoraj vse v Kiberpipi). Ce te pa kdo vprasa kaj tam delas, pa reci da si nov v programiranju.
Kiberpipa se pa nahaja tukaj: http://www.kiberpipa.org/sl/kjesmo/ (pod kavarno Metropol)
Mene sicer ne bo, ker imam izpit.

BTW: tole je naredil kolega za diplomsko in je moral spisal driverje za linux
Pretending to be a mature adult is so exhausting.

Rias Gremory ::

@smoke
Razumem, videoprt.sys je v bistvu osnova ki "pokliče" driverje oz. dejanske funkcije kot si sam rekel.

@brodul
Upam da bom čim prej oz. dokaj hitro naredil tale generator in bom posredoval kodo. Sem napisal tisto v terminal in zgleda kot matrica :P
Bom prišel v Kiberpipo sigurno ker sem bil zadnjič na Ubuntu prevajanju in sem bil takrat tudi prvič v Kiberpipi in ko je bilo konec sem se spraševal kdaj bo spet kaj zanimivega. :D Tako da sigurno pridem ker v šoli še ni hudo.
Zakon diplomsko je imel tvoj frend :)
Mirno gledamo, kako naš svet propada,
saj za časa našega življenja ne bo popolnoma propadel.

techfreak :) ::

brodul je izjavil:

BTW: tole je naredil kolega za diplomsko in je moral spisal driverje za linux

Je bilo pisanje gonilnikov pomemben del diplomske ali je imel kakšen drug razlog za to? Pri svojih projektih sem do zdaj še vedno uporabil libusb, ki deluje tako na Linuxu kot Windowsu in nisem še nikoli imel potrebe po tem, da bi svoje gonilnike pisal.

brodul ::

Kolikor vem je bil na strani kjer so gumbi arm (tak zelo beden za ~10 eur board http://www.olimex.com/dev/lpc-p1343.htm... pa je slo na USB.
Slo je pa primarno za pisanje driverjev. Kej vec detailov pa nebi vedel.
Pretending to be a mature adult is so exhausting.

brodul ::

Link sem storasto prilepil:
http://www.olimex.com/dev/lpc-p1343.html
Pretending to be a mature adult is so exhausting.

Rias Gremory ::

Eto me, bil na predavanju.
Po resnici povedano sem razumel bolj malo :8) + sem mislil da jih bo več moje starosti, ker sem star 16 in sem bil po moje najmlajši :P.
Ampak bom še kdaj prišel, ko se bom naučil python bom pa itak več razumel :D.
Mirno gledamo, kako naš svet propada,
saj za časa našega življenja ne bo popolnoma propadel.

Rias Gremory ::

No nekaj mi je uspelo spacat, vendar je praktično nič :(
import random

print('This is password generator.')
letters=random.choice('abcdefghijlkmnoprstuvzyqwABCDEFGHIJKLMNOPRSTUVZYQW')
numbers=random.choice([1,2,3,4,5,6,7,8,9,0])
print letters
print numbers


mogoče bom pa čez vikend že naredu tole :)
zdaj moram še narediti da uporabnika vpraša koliko mestno naj bo geslo in on odgovori z številko (seveda bom najbrž omejil, najmanjša vrednost bo 5 najvišja pa 30) zdaj moram edino pogruntat kako to naredit in še znake moram dat not.

Btw piše kje na netu kako šumnike uporabljat v pythonu?
Mirno gledamo, kako naš svet propada,
saj za časa našega življenja ne bo popolnoma propadel.

Zgodovina sprememb…

FrEaKmAn ::

tole deluje

http://codepad.org/lTmAKlzg
# coding: utf-8

import random
 
print('This is password generator.')
letters=random.choice('abcčdefghijlkmnoprsštuvzžyqwABCČDEFGHIJKLMNOPRSŠTUVZŽYQW')
numbers=random.choice([1,2,3,4,5,6,7,8,9,0])
print letters
print numbers

brodul ::

Rias Gremory je izjavil:

Eto me, bil na predavanju.
Po resnici povedano sem razumel bolj malo :8) + sem mislil da jih bo več moje starosti, ker sem star 16 in sem bil po moje najmlajši :P.
Ampak bom še kdaj prišel, ko se bom naučil python bom pa itak več razumel :D.

No nasljednic ti bom delal druzbo.
To da si razumel bolj malo je razumljivo in nad vse dobro. Saj lahko napredujes le, ce se druzis z boljsimi od tebe. Z gotovostjo ti je kaksna stvar ustala v usesu, hkrati pa si videl kaj folk v Sloveniji kaj dela z python. :D
Pretending to be a mature adult is so exhausting.

Rias Gremory ::

Prišel sem do sem:
import random

print('This is password generator.')
lenght = int(raw_input('Enter maximum lenght of your password as integer: '))
letters = random.choice('abcdefghijlkmnoprstuvzyqwABCDEFGHIJKLMNOPRSTUVZYQW')
numbers = random.choice([1,2,3,4,5,6,7,8,9,0])
special = random.choice(['!','@','.',';','?',',','$','@','*'])
print letters, numbers, special


Zanima me če sem prav začel z tem:
lenght = int(raw_input('Enter maximum lenght of your password as integer: '))
Mirno gledamo, kako naš svet propada,
saj za časa našega življenja ne bo popolnoma propadel.

jype ::

Lahko bi rekel tudi

length = input('Enter maximum length of your password as integer: ')

Pa angleška beseda je length, a property of all things long, ne lenght.

Pa z "import string" pridobiš tele reči:
string.digits
string.letters
string.punctuation

Pa zgornja koda izbere samo po en znak iz vsake serije, kar pomeni, da letters, numbers in special vsebujejo samo po en naključno izbran znak.

Rias Gremory ::

Hvala za popravek.

Bom probal ta import.
Vem da mi izbere samo en naključno izbran znak, zato zdaj iščem rešitev, da bo uporabnik vnesel število ki bo določilo koliko mestno naj bo geslo.
Hvala za pomoč.
Mirno gledamo, kako naš svet propada,
saj za časa našega življenja ne bo popolnoma propadel.

Zgodovina sprememb…

jype ::

A želiš, da ti napišem in razložim rešitev, ali bi raje sam prišel do nje?

Rias Gremory ::

No pa daj prosim. :D
Btw ali sem do zdaj razmišljal v pravo smer?
Mirno gledamo, kako naš svet propada,
saj za časa našega življenja ne bo popolnoma propadel.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Python - pomoč (strani: 1 2 3 )

Oddelek: Programiranje
10317173 (7921) black ice
»

[Python] Domači nalogi

Oddelek: Programiranje
332857 (1747) ragezor
»

Budilka na racunalniku?

Oddelek: Programska oprema
131757 (1632) Janac
»

[FASM] Kernel (strani: 1 2 )

Oddelek: Programiranje
674037 (2846) DustWolf
»

Python - problem

Oddelek: Programiranje
132700 (2430) slevin

Več podobnih tem