matlab

matlab

Cu siguranta ca nu este o noutate pentru nimeni notiunea de cross compilare(sau daca este…corss compilare=compilare pentru o masina cu o arhitectura diferita de cea pe care ruleaza compilatorul ) sau intreoperabilitate (in doua cuvinte…proces prin care se utilizeaza cod scris in limbaje diferite).

Daca cross compilarea este un process destul de banal, daca ai la indemana uneltele necesare,in sensul ca totul se face “din mouse”. In cazul interoperabilitatii trebuie totusi si ceva cunostinte mai avansate de modul de oparare al limbajelor implicate (ca de ex. conversii de apel ) dar trebuie mentionat ca se poate si metoda mai simpla folosiund asa numitul “limbaj neutru” sau cu alte cuvinte prin dll-uri.

Se poate exporta codul sub forma unor functii intr-un fiser .dll , acesta putand fi importat si folosit in orce limbaj care este capabil sa incarce un dll.Ca si un exmplu, sa zicem, extrem se poate incarca un dll pana si in PHP. Dar o sa insist asupra unui exemplu si mai extrem adica folosirea codului din MATLAB in C++ si invers.

Daca in cazul C++-ului asi putea sa dau o definitie scurta, ei bine, in cazul MATLAB-ului imi este destul de greu deoarece acesta este un adevarat mamut computational ce stie sa faca cam de toate in ce priveste calculul de matematica si inginerie..ca si un exemplu care sa ilustreze forta sa se poate rezolva o integrala in 2 linii de cod… destul de impresionant daca ne gandim la agoritmii din c++ ce rezolva o integrala in cele mai 1000 de linii de cod …dar nu despre asta este vorba.

Pentru a exporta un fiser .m (fiser de cod matlab) se foloseste mcc-ul , un fel de compilator de c,c++,fortran de matlab.

mcc -m -B sgl name of function.m

codul de mai sus transforma un fiser de cod matlab intr-un fiser executabil (.exe)…se poate exporta ca si fisere de librarie (.dll sau .lib) precum urmeaza:

mcc -t -W lib:name of function lib -L C -T link:lib -h libmwsglm.mlib
libmmfile.mlib name of function.m

acest cod generaza: name of function lib.dll, name of function lib.lib, name of function lib.h

Prin acest post vreau cumva sa demonstrez faptul a fi bun programator nu inseamna a stii “perfect” un singur limbaj de programare ci mai de graba de a gasi solutia cea mai eficienta folosind toate limbajele disponibile.

Tagged with:  

Atlas cisc simulator

On October 11, 2009, in Programare, Uncategorized, by andreiT

Un proiect de facultate devenit un simulator in toata regula.Atlas este un simulator pentru un procesor cu unitatea de control microprogramata. Detalii arhitecturale gasesti aici in documentatie iar programul il poti descarca de aici. Intrucat nu am inclus in documentatie un manual de utilizare am sa incerc sa explic aici modul de utilizare si mai ales utilitate lui.

Un pas esential in utilizarea simultatorului este parcurgerea documentatiei ( la urma urmei trebuie sa se inteleaga ce se simuleaza :) ), trebuie sa prezicez ca am plecat de la ipoteaza ca utilizatorul este familiarizat cu conceptele fundamentale de CISC,unitate de control,registre,intrerupere etc.

A. Pasi utilizare

  • 1. Se scrie codul de asamblare ce se doreste executat apoi se apasa butonul Genereaza cod masina . Codul scris de catre utilizator este supus procesului de asamblare rezultand codul masina ce este incarcat in memorie la adresa 0×100, concomitent se reseteaza registrele si se incarca in PC adresa 0×100 (adresa primei instructiuni).
  • 2. Executia pas cu pas
  • 3. Simulatorul poate fi resetat folosind butonul Reseteaza procesor
  • 4. Pentru a genera o intreupere se introduce numarul ei si se apasa butonul Genereaza intrerupere.

B. Intereruperi.

  • Trebuie precizat faptul ca simulatorul include si facilitatea de a simula o intrerupere in timpul executie.
  • De asemenea se ofera utilizatorului posibilitatea de a-si defini propriile rutine de trarea intreruperiilor, rutine care pot fi salvate pentru a fi folosite implicit de catre simulator la fiecare rulare sau doar in timpul executiei curente.

Utilitatea simulatorului este cumva mai mult didactica, dupa cum spuneam este doar un proiect de facultate.

P.S.:Daca va intereseaza.. va pot da si sursele.


Tagged with:  

Wireless signal power detector

On April 23, 2009, in c#, microsoft, wireless, by andreiT

Zilele trecute mi-am cumparat un router wireless nou, unul care sa bata o distanta mai mare pentru a-mi oferi un grad mai mare de portabilitate, curios de performantele noului router am cautat pe net un tool care sa imi indice putere semnalului si calitatea deoarece eram nemultumit de cel existent in sistemul de operare . Dupa cateva minute de cautare pe google in care nu am gasit nimic (nimic care sa ma satisfaca) imi suflec manecile si ma hotarasc sa imi scriu propriul programul care sa imi calculeze calitatea si puterea semnalului, dupa cate ore de programare am schitat un programel care m-am gandit ca poate ar mai putea fi util cuiva. Daca sunteti intersati aplicatia o puteti descarca de aici

In sfarsit am reusit sa imi fac timpul necersar pentru a publica primul proiect, este vorba de un utilitar ce va permite sa va conectati de oriunde si oricand la computerul de acasa/la servici si sa preluati controlul, de asemenea ar putea fi folosit ca si o unealta pentru a supraveghea activitatea ce se


inteprinde pe un calculator.
Trasaturi:

Criptarea traficului
Suport pentru control mouse si tastatura
Suport pentru WOL (wake on lan) momentan doar pentru pachet magic
Calitate inalta a imaginii.

Mai multe aici

Componente vizuale in c#

On March 1, 2009, in c#, microsoft, Programare, Uncategorized, by andreiT
C#

C#

Desi nu imi place trebuie sa reunosc ca limbajul de la Microsoft c#, principalul rival al lui Java, este o adevarata “unealta” atunci cand vine vorba de productivitate si viteza in a realiza un program, iar paltforma .net este o adevarata “lada plina de unelte” in sensul ca aici poti gasi o sumedenie de clase gata facute pentru tine ce asteapta sa le folosesti. O sa incerca sa ilustrez cele mentionate printr-un exemplu practic si anume o componenta vizuala pe care o putem folosi ori de cate ori dorim in orice proiect. Pentru cei care au mai relizat astfel de compoente in alte limbaje cum ar fi c++ sau vb se se poate observa simplitatea cu care realizam o munca relativ complexa daca stam sa ne gandim la principiile care stau la baza unei componente vizuale.

Prima componenta vizuala in c#

P.S. Pentru cei care probabil ca va inrebati de unde vine numele asta de c# (citit c sharp) iata raspunsul aici

Tagged with:  

Windows sub licenta GNOT

On January 29, 2009, in microsoft, umor, Uncategorized, by andreiT

In sfarsit Windows este open-source. Codul sura este redat mai jos. Deja ne putem face o imagine la cum ar arata sursa la Windows 7 :D .

Tagged with:  

Prototipuri in JAVASCRIPT

On January 19, 2009, in javascript, Programare, web app, by andreiT

Desi javascript nu suporta clase totusi se poate poate programa obiectual si anume folosind prototipuri. Javascript este un limbaj in care gasesti atat cele mai mari idiotenii posibile care s-au putut inventa in vre-un limbaj de programare cat si unele cu adevarat geniale, printre acestea se numara faptul ca un obiect in Javascript este un container generic la care ii poti adauga oricand o noua proprietate sau “metoda”. Mai jos este un exemplu de “clasa” (un echivelent al unei clase din limbaje care suporta asa ceva) ce incapsuleaza mecanismul cunoscut si sub denumirea de AJAX.

Pentru cei care nu stiu AJAX este un mecanism de comunicare asicrona cu server-ul, adica pentru a aduce informatie nu este necesara un refresh de pagina.

Continue reading »

Tagged with:  

Web browser in 2 pasi

On January 17, 2009, in java, others, by andreiT

Recent intr-un proiect am avut nevoie de un web browser propriu. In loc sa folosesc un activeX de Internet Explo(r/d)er am ales sa imi constriuesc propria componenta din mai multe considerente: in primul rand proiectul era in Java si nu doream sa folosesc JNI (java native interface- pentru cei care nu sunt familiarizati cu termenul in doua cuvinte este vorba de o tehnologie ce va permite sa accesati cod nativ din programele de java.) si al doilea motiv era ca nu aveam nevoie de un web browser foarte complex care sa suporte ‘nspe mii de plugin-uri.
Iata un exemplu minimal :

import javax.swing.event.HyperlinkEvent;
import javax.swing.*;
import java.io.*;
import javax.swing.event.HyperlinkListener;

public class SimpleWebBrowser {
static JEditorPane jep = new JEditorPane();
public static void main(String[] args) {

String initialPage = “http://www.google.ro/”;
if (args.length > 0) initialPage = args[0];

jep.setEditable(false);

jep.addHyperlinkListener(new HyperlinkListener() {

public void hyperlinkUpdate(HyperlinkEvent e) {
try {
jep.setPage(e.getURL());
} catch (IOException ex) {
Logger.getLogger(SimpleWebBrowser.class.getName()).log(Level.SEVERE, null, ex);
}
}
});

try {
jep.setPage(initialPage);
}
catch (IOException e) {
System.err.println(“Usage: java SimpleWebBrowser url”);
System.err.println(e);
System.exit(-1);
}

JScrollPane scrollPane = new JScrollPane(jep);
JFrame f = new JFrame(“Simple Web Browser”);
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
f.getContentPane().add(scrollPane);
f.setSize(512, 342);
f.show();

}

}

Si iata cum ar arata “miniborwser-ul”

Tagged with:  

Javscript si fractali

On December 30, 2008, in Uncategorized, by andreiT

Desi un limbaj destul de nabagat in seama de majoritatea programatoriilor Javascript incepe sa isi arate adevarata valoare odata cu dezvoltarea aplicatiilor web. Am ramas destul de mirat intr-un mod placut de http://azarask.in/projects/algorithm-ink un site ce ofera un engine de generare a fractaliilor 2d in browser. M-am intersat mai mult si se pare ca engine-ul respectiv este open source, se poate descarca de la http://azarask.in/projects/algorithm.tar.gz .

 

Reveal password

On December 1, 2008, in hacks, microsoft, Programare, by andreiT

Pentru astazi va propun un mic tutorial in care o sa va arat cum se ‘dezvaluie’ un string dintr-un input de pe orice forumlar care este mascat..ma refer la campurile acelea in care se introduce parola.
Ideia de baza este una foarte simpla tot ce trebuie sa facem este sa luam fiecare proces in parte si daca acesta contine un fomular ce are campuri mascate atunci le dezvaluim( trimitem un mesaj catre componenta pentru a reseta carcaterul de masca).Haideti sa aruncam o privire la cod, am incercat sa ma folosesc doar de WinAPI pentru a evita eventualele dependente de platforme sau mai stiu eu ce.

//declarare functii
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam);
BOOL CALLBACK EnumWindowsProc2(HWND hwnd,LPARAM lParam);

//functia principala
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
EnumWindows(EnumWindowsProc,0);
return 0;
}

BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
// se ‘enumereaza’ toate procesele ce contin ferstre
EnumChildWindows(hwnd,EnumWindowsProc2,lParam);
return TRUE;
}

BOOL CALLBACK EnumWindowsProc2(HWND hwnd,LPARAM)
{
//se reseteaza caracterul de masca pentru input-ul de parola
::SendMessage(hwnd,EM_SETPASSWORDCHAR,0,0);
InvalidateRect(hwnd,NULL,FALSE);
return TRUE;
}

Iata o demonstratie:


Singura remarca care s-ar putea face este ca programul nu functioneaza pentru procesele care contin formulare ierarhizate pe mai mult de 2 nivele. Acest neajuns se poate rezolva printr-o tehnica mult mai avansata ,care cere anumite cunostiinte destul de serioase despre sistemul de operare, si anume DLL injection, tehnica pe care sper sa am timp sa o abordez ceva mai pe larg in masura in care timpul mi-o permite si mai ales daca sunt cititori intersati :D .

Tagged with: