Jan 29

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:
Jan 19

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:
Jan 17

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:
Dec 30

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 .

Dec 01

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:
Nov 24

Desi nu prea obijnuiesc sa ma uit la TV prea des, zilele acestea am vazut un documentar pe arte, un post TV destul de avangardist in felul sau ..dar nu despre asta este vorba. In documentar era vorba despre diverese proiecte hi-tech, printre aceste unul foarte intersant numit Blue brain.
Cica tipii astia ce se ocupa de proiectul respectiv vor sa fac un reverse-enginering pe creierul mamiferelo si sa produca un fel de simulator al neocoretexului folosind un supercomputer.Se vorbea la un moment dat despre posibilitatea de a creea un calculator care este capabil sa invete precum invata un copil sau chear se merge mai departe, teoretic s-ar putea creea un avatat al unei persoane adica proiectia constiintei sale intr-un calculator, evident problema prinicipala ar reprezenta-o interfata intre creierul uman si calculator..dar zic eu ca nu suntem pe departe …si matrix vi se parea pura fictiune :D .
Am gasit pe youtube un filmulet destul de intersant

Asa ca si un fel de concluzie : omul este masura tuturor lucrurilor.

Tagged with:
Nov 17

Un tutorial interesant interactiv dureaza cam 15 minute merita sa incercati ..cine stie poate cineva se va apuca sa programeze masiv in el.La prima vedere limbajul este destul de dragut ..cumva orientat pe cod se vede ca a evoluat din un limbaj de scripting .

http://tryruby.hobix.com/

E Live! Very Happy

Tagged with:
Nov 16

Pentru cei care nu stiu cross site scripting-ul est o vulnerabilitatea de securitate ,specifica aplicatiilor web, ce permite injectare de cod distrugator in paginile web vizualizate de catre utilizator. Ea este o vulnerabilitate client side adica nu are efect propriu-zis asupra informatie de pe server ..ati putea spune ca nu este un pericol din moment ce este client side dar sa ne imaginam urmatoare situatie : ce ar insemna daca pe site-ul unei banci , pe una dintre pagini exista un fromular in care toti clientii sunt rugati sa isi introduca datele personale, iar infromatia se va trimite undeva in internet,..ei bine in acest caz este grav.

Pentru a rezolva problema a inputurilor nesecurizate am realizat utmatoarea Continue reading »

Tagged with:
Nov 16

Daca tot avem fani MS pe aici Laughing hai sa amintim de un nou produs MS, gratuit, pt. cei ce vor sa invete programare, simplu: SmallBasic.

Nu l-am testat insa am citit un pic despre el si am vazut citeva exemple de cod. Targetul sint persoanele ce vor sa invete programare, pornind de la Basic (oarecum), intr-un limbaj ce are cit mai putine cuvinte cheie. Are vreo 4 Mb pt. download insa necesita .NET Framework 3.5 (vezi manualul PDF in eng.).

Avantajul care il vad eu pe linga simplitate e ca ii invata pe oameni programarea cu obiecte (de genul TextWindow.WriteLine() sau GraphicsWindow.Clear() ) ce apoi poate fi usor inteleasa in contextul .NET.

Editorul e foarte simplu, cu help inclus. De exemplu programul gen ‘hello world’ e cam asa:

Cod:
TextWindow.WriteLine(”Hello World”)

Incercati, poate o sa va placa.

Tagged with:
Nov 14

Interesat oarecum de clasamentul actual al limbajelor de programare am inceput sa caut in stanga si in dreapta si printre tonelede informatii inutile afisate de Google am dat si peste un site http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html in care este dat clasamentul cica oficial:

Position
Nov 2008
Position
Nov 2007
Delta in Position Programming Language Ratings
Nov 2008
Delta
Nov 2007
Status
1 1 Java 20.299% -0.24% A
2 2 C 15.276% +1.31% A
3 4 C++ 10.357% +1.61% A
4 3 (Visual) Basic 9.270% -0.96% A
5 5 PHP 8.940% +0.25% A
6 7 Python 5.140% +0.91% A
7 8 C# 4.026% +0.11% A
8 11 Delphi 4.006% +1.55% A
9 6 Perl 3.876% -0.86% A
10 10 JavaScript 2.925% 0.00% A
11 9 Ruby 2.870% -0.21% A
12 12 D 1.442% -0.26% A
13 13 PL/SQL 0.939% -0.24% A
14 14 SAS 0.729% -0.40% A–
15 18 ABAP 0.570% -0.08% B
16 19 Pascal 0.511% -0.13% B
17 17 COBOL 0.510% -0.20% B
18 25 ActionScript 0.506% +0.04% B
19 23 Logo 0.489% -0.04% B
20 16 Lua 0.473% -0.27% B

Pe cat de mare mi-a fost uimirea sa constat ca Java este primul in top pe atat am fost de dezamagit de C# , ma asteptam ca el sa fie folosit de o comunitate mult mai vasta apropiata ca si numar de Java. Poate ca ma asteptam la pre multe :(

preload preload preload