rolisz's site

Filmele iernii

Cred că am descoperit un tipar nou de posturi: un review cu filmele la care m-am uitat în ultimul anotimp. În vacanța de iarnă nu m-am uitat la prea multe filme, dar după sesiune să zicem că am recuperat.

  • Let the Bullets Fly - Îi film chinezesc. Sense, it doesn't make too much. Sunt niște bandiți, care apoi răpesc gu­ver­na­torul unei provincii, dar care în realitate e doar un  conman, și merg în locul lui. Și apoi iar se prefac că îs bandiți. Și mafioții din oraș se îmbracă continue.

Viață de student: desert

De anul trecut am început să îi zic la mami să mă învețe să fac una-alta prin bucătărie, că mi-or prinde bine aceste cunoștințe la Cluj, ca student. La capitolul mâncăruri nu prea am trecut de nivelul cartofi pai, omletă, macaroane cu brânză (asta deja aici am „învățat”), dar la capitolul prăjituri stăteam un pic mai bine: cred că am făcut și ceva prăjitura cu două blaturi :> :>. Din păcate, unde stau nu am cuptor, așa că all those skills have been useless so far. :( Până acum trebuia să mă mulțumesc cu dulciuri mai „ele­mentare”: chestii gata făcute de la magazin, budincă (că se face pe aragaz), continue.

Instalare Linux pe mașină virtuală

Cum la SO [1. Sisteme de operare, Cătă dragă ], mare parte din timp vom lucra în Linux, vom avea nevoie de el instalat pe cal­cu­la­toare. O opțiune ar fi să instalăm pe o partiție separată și să facem dual-boot. Cum nu toți pot face asta (coughno driverscoughNVidia Optimuscough) sau nu toți au chef (ma­jori­tatea colegilor mei) sau și-au aranjat deja partiția de Windows încercând să facă asta, o să prezint o altă metodă, care este destul de bună în ma­jori­tatea cazurilor: instalarea pe o mașină virtuală. Aceasta va fi suficientă pentru a învăța chestiile de care avem nevoie, dar dacă cineva vrea să se ocupe de low-latency audio continue.

Personal update

Definiția originală a blogului este „personal journal published on the World Wide Web”. Pe blogul acesta printre altele și eu vroiam să public și lucruri personale, dar în ultima vreme... nu mi-a prea ieșit. Ultimele 8 posturi toate sunt despre in­for­mat­ică, fizică, statistică sau orarul de la facultate. Toate lucruri foarte in­tere­sante și nu îmi pare rău că le-am postat, dar cum mai mulți prieteni din Marghita mi-au zis că „nu am intrat de ... pe blogul tău” sau că „intru pe blogul tău doar să îți fac vizite și când văd că ultimul post este despre ... dau click pe X”, am decis să încerc să mai scot continue.

Olimpiada județeană de fizică

Ah, fizică... ce amintiri plăcute din liceu... când ne-o trolluit în mod epic Paul să stăm afară din cămin pâna pe la 1 noaptea... îngrășatul porcului în ajun de baraj (hey, it always worked)... trans­portul de persoane cu sau fără pat... fun times.

Din păcate, deja am cam uitat mare parte din ce știam. Uitându-mă peste subiectele de anul acesta, un lucru mi-a sărit imediat în ochi: Subiectul de la a 10a o fost dat de prof. Davinei și dr. Davidescu (are 4 pagini, font cursiv la titluri și ceva personaj dubaș numit Octavian). Subiectul de a 9a are 5/6 probleme de optică => autorul este domnul Uliu (și continue.

Simplu calculator în Python - partea 3

Acest post face parte dintr-o serie în care eu fac un mic calculator în Python.

Data trecută am construit arborele sintactic core­spun­ză­tor expresiei, iar acuma îl vom evalua. Aceasta este mult mai simplu decât parsarea, așa că hai să scăpăm. În final vom face apoi un REPL (read, evaluate, print loop), deci vom face o „consola” pentru cal­cu­la­torul nostru. Aceasta este utilă pentru a putea beneficia de atribuirea de valori, că altfel ele se pierd după fiecare execuție.

Să începem cu testele:

from interpreter import interpreter
from tokenizer import Tokenizer
from tree import parseTree

pT = parseTree()
tok = Tokenizer()
interp = interpreter()
Tree = pT.buildParseTree(tok.tokenize("1+2"))
assert(interp.evaluate(Tree) == 3)
Tree = pT.buildParseTree(tok.tokenize("(5+(2\*3+2))-3\*((5+6)/2-4)"))
assert(interp.evaluate(Tree) == 8.5)
Tree = pT.buildParseTree(tok.tokenize("x = 2"))
assert(interp.evaluate(Tree) 
continue.

Simplu calculator în Python - partea 2

Acest post face parte dintr-o serie în care eu fac un mic calculator în Python Data trecută ne-am ocupat de împărțirea stringului rezultat în bucăți elementare. Acum vom trece la următoarea parte: parsarea. Aceasta ne va da structura expresiei pe care vrem să o evaluăm. Dacă în urma to­k­enizării obțineam erori dacă stringul conținea caractere invalide, acum vom obține erori dacă tokenele noastre nu sunt în ordinea potrivită (dacă avem doi operatori unul după altul de exemplu) sau dacă nu sunt suficienți operanzi (numărul de paranteze deschise nu coincide cu cele închise). Este important de menționat că deocamdată nu atribuim semantică tokenelor, ci doar sintaxă. Regulile de ordine de efectuare a op­er­ați­ilor continue.

Simplu calculator în Python - partea 1

De mai multă vreme tot mă bate gândul să fac ceva in­ter­pre­ta­tor pentru un limbaj mai simplu. Ca o primă aventurare în lumea in­ter­pretării șirurilor de caractere ca in­strucți­u­ni pentru calculator, m-am decis să fac un simplu „cal­cu­la­tor” în Python, care să aibă și suport pentru câteva funcții matematice și pentru variabile.

Basically, ce urmăresc eu e să am un mic progrămel care știe să facă ur­mă­toarele:

7+10*sin(pi/2)/2-3^2  # să dea 3
x = 127-30*ln(e)      # x să aibă valoarea 97
y = x^2 - 60/30*(6+x) # y să aibă 9203

Definiția riguroasă a sintaxei pe care o acceptă programul este următoarea:

<Number> = [0-9]+.?[0-9]* <Identifier> 
continue.

Statistici si grafice în R

Să presupunem că avem un fișier text care conține notele unor elevi de la 3 examene. Fișierul are următoarea structură:


Grupa 1 2 2 Nota1 4 continue.

Scurtă introducere în R

R este un limbaj de programare făcut în primul rând pentru a face calcule statistice și pentru a vizualiza acestea. Are aproape 20 de ani (1993) și este cel mai folosit limbaj pentru data mining.[1. Rexer Analytics] Este desigur cross-platform, merge nativ și pe Windows, Linux, Mac OS X.

El vine gata integrat cu "IDE", deși acesta e cam nașpa (no au­to­com­plete, no keyboard text selection, etc.). Există și al­ter­na­tive cum ar fi RStudio sau RKWard. Pentru scopul acestui tutorial, îi cam totuna ce folosiți, limbajul contează.

Operații se pot introduce în linia de comandă și rezultatul este afișat imediat:

> 10 + 2*5
[1] 20
> sqrt(49) + log(10)
[1] 9.302585

Operatorul de atribuire este... <-. continue.