Programare :: DUzun.ME https://dcms.duzun.me/programming.html ro Top 5 Tips & Tricks for Beginning Programmers https://dcms.duzun.me/programming.html?art_id=24#art_24 14.01.2013 24 Top 5 Tips & Tricks for Beginning Programmers

 

1. Never try to understand a long piece of code (or a long program) in one go. Focus on a few statements at a time. If possible, try to take a smaller chunk of the code and run it yourself to see what it does. Experimenting is always good, even if it doesn’t work and you get weird error messages, you’ve learned something!

Top 5 Tips & Tricks for Beginning Programmers

 

Python for  Kids

1. Never try to understand a long piece of code (or a long program) in one go. Focus on a few statements at a time. If possible, try to take a smaller chunk of the code and run it yourself to see what it does. Experimenting is always good, even if it doesn’t work and you get weird error messages, you’ve learned something!

2. Try it yourself. Make sure you try out code examples for yourself (don’t just read about them). Trying something and running it, actually helps it stick in your head. Better yet, if you change things around to see what effect that has, you’ll learn and understand more.

3. If all else fails, sleep on it. Sometimes no amount of brain effort will get you past a difficult or complicated problem. Either you don’t understand something, or a piece of your code won’t work, and you can’t figure out why. If all else fails, try sleeping on it. Or, at the very least, leave it alone for a few hours, and come back to the problem later. When you come to something fresh, often the answer will appear.

4. Never type long sections of code directly into the Shell. In Python, either in the Shell (IDLE) or the Console, you can type and run statements directly and see what happens. But if you’re entering a longer program, either use a text editor or use the Shell’s editor (select File, then New in the Shell). That way you can save your file, run it, and come back and fiddle with the code without having to re-type everything.

5. Pick the right project. If you’re looking for something to put your new-found programming skills to use, don’t think Halo, or Uncharted, or Super Mario Galaxy or Assassins Creed. Don’t even think Angry Birds, or Pocket God, or Rolando. Think arcade games from the 1970’s and 1980’s—games like Galaxian, Centipede, Donkey Kong, and Frogger have simple graphics and basic game mechanics, which makes them great first projects for budding game developers.

Do an internet search for arcade games from that period. Take a look at some examples and then try to write something similar yourself. It’s much more satisfying to take a simple project and actually finish it, rather than a hugely ambitious, complicated project that you never get working.


About the Author

Jason R. Briggs has been a programmer since the age of eight, when he first learned BASIC on a Radio Shack TRS-80. Since then he has written software professionally as a developer and systems architect and served as Contributing Editor for Java Developer's Journal. His articles have appeared in JavaWorld, ONJava and ONLamp. Python for Kids is his first book.

]]>
31.10.2012 https://dcms.duzun.me/programming.html?art_id=23#art_23 31.10.2012 23 Unicode - soluție pentru comunicarea internațională!

O scurtă istorie a Unicode și alte code-page-uri: http://coding.smashingmagazine.com/2012/06/06/all-about-unicode-utf8-character-sets/

Slider cu toate pozițiile Unicode: http://www.babelstone.co.uk/Unicode/unicode.html

Unicode - soluție pentru comunicarea internațională!

O scurtă istorie a Unicode și alte code-page-uri: http://coding.smashingmagazine.com/2012/06/06/all-about-unicode-utf8-character-sets/

Slider cu toate pozițiile Unicode: http://www.babelstone.co.uk/Unicode/unicode.html

]]>
Deosebiri importante intre JavaScript (implementare W3C) si JScript (implementare Microsoft) https://dcms.duzun.me/programming.html?art_id=22#art_22 15.12.2011 22  

Deosebiri importante intre JavaScript  (implementare W3C) si JScript (implementare Microsoft)

Cred că toţi programatorii web ştiu că există două tipuri de browsere: care se conformează cu standardele W3C (printre care Chrome, FireFox, Opera, Safari) şi care nu se conformează (în primul rând Internet Explorer sau IE).

 

Deosebiri importante intre JavaScript  (implementare W3C) si JScript (implementare Microsoft)

Cred că toţi programatorii web ştiu că există două tipuri de browsere: care se conformează cu standardele W3C (printre care Chrome, FireFox, Opera, Safari) şi care nu se conformează (în primul rând Internet Explorer sau IE).

Specificaţiile nu acoperă toate problemele apărute la implementarea limbajului ECMA-262 (altfel spus - JavaScript) în diferite medii. Pe lângă faptul că nu toate browserele se conformează cu acest standard, divergenţe apar şi în problemele asupra cărora specificaţiile nu se pronunţă în vreun fel.

 

Iată câteva dintre aceste divergenţe:

 

  • elem instanceof Object;

În mediul JavaScript din browser există două clase mari de obiecte: DOM şi non-DOM. Obiectele DOM se mai numesc Elemente şi fac parte din structura documentului HTML. Obiectele non-DOM sunt toate celelalte obiecte, toate instanţe indirecte sau directe ale Object.

Apare o întrebare firească: Elementele (obiectele DOM) sunt instante ale Object sau nu?

Raspunsul la această întrebare depinde de mediul ales: IE sau non-IE. Elementele se comporta in toate privintele ca niste obiecte obişnuite (non-DOM), având şi ceva proprietăţi specifice. Deci logic ar fi să fie instanţe ale clasei Object.

Deci, în IE elementele nu sunt instanţe ale Object, şi în general nu sunt instanţe ale căreiva clase în sensul că elem instanceof X === false pentru orice element si orice clasa

 

  • function x() {};
    alert(x.name); // expected 'x', got undefined

Atributul "name" al obiectelor de tip Function nu este un standart ECMA-262, însă a fost introdus de către Mozilla şi acceptat de către toate browserele majore, desigur cu excepţia IE.

 

  • var y = function z(){};
    alert(typeof z); // expected undefined, got 'function'

În toate browserele typeof z == undefined, iar in IE typeof z == 'function'.
Acesta e un subiect mai vast. Expresia de mai sus se numește funcție expresie cu nume (named function expression).

Iată un articol care explică în detalii această problemă și altele similare: NFE.

 

  • var y = function z(){ return z.proprietate; };
    y.proprietate = 'test';
    alert(z()); // Expected 'text', got undefined in IE

Cauza acestui bug e aceeași ca și în exemplul precedent, dar efectul e diferit. În IE y != z, adică avem două obiecte diferite în memorie. Acest fapt poate provoca probleme semnificative în anumite situații.

 

  • var s = 'abcd'; 
    alert(s[1]); // expected 'b', got undefined

În mod normal în toate browserele s[1] == 'b', cu exceptia IE până la versiunea 8, unde s[1] === undefined.

 

  • var a = Array.prototype.slice('abcd');
    alert(a);

Aceasta este o metodă eficientă de obţinere a obiectelor de tip Array din orice obiect ce conţine proprietatea 'length' (de ex. String).
Cu părere de rău nici în IE8 aceasta nu e o metodă în cazul String. În aces caz recomand 'abcd'.split('');

 

  • var a = [1, 2, 3, 4, 5];
    try{ alert(a.indexOf()); } // W3C
    catch(e) { alert(e.description); } // IE

Obiectele de tip String au metoda indexOf. Însă cele de tip Array în IE nu au, deoarece IE foloseşte o versiune mai veche de JScript (1.3, ECMA-262 3rd edition).

 

  • var x = 10;
    function a(){ return x; try{}catch(x){} };
    alert(a()); // Expected 10, got undefined

În browserele W3C a() === 10, însă nu şi în IE... Pentru simplul fapt că există catch(x), variabila x este redeclarata in scopul functiei a(), ca şi cum am avea declaraţia: function a(){ var x; return x; };

 

  • window.b = 1;
    var b = b || 2;

Nu am cercetat până la urma această situaţie, dar în unele imprejurări b == 2, deşi ar trebui sa fie 1.
Am avut o situaţie în care prima instrucţiune se efectua într-un fişier JS, iar a doua în alt fisier JS şi am obţinut efectul nedorit (în IE).

 

Recoman să cercetați tabelul de compatibilitate ES5

 

 
]]>
Operatorul '==' nu este tranzitiv în PHP, JavaScript, ș.a. https://dcms.duzun.me/programming.html?art_id=21#art_21 16.11.2011 21  

Operatorul '==' nu este tranzitiv!

Care este proprietatea tranzitivă a unei relaţii? Dacă '==' ar fi tranzitiv, ar satisface relaţiile: dacă a == b şi b == c, atunci a == c. 
Dar operatorul '==' nu este relaţie binară în sens matematic, ci este un operator al limbajului care în majoritate cazurilor se comportă ca o relaţie de echivalenţă.

 

Operatorul '==' nu este tranzitiv!

Care este proprietatea tranzitivă a unei relaţii? Dacă '==' ar fi tranzitiv, ar satisface relaţiile: dacă a == b şi b == c, atunci a == c. 
Dar operatorul '==' nu este relaţie binară în sens matematic, ci este un operator al limbajului care în majoritate cazurilor se comportă ca o relaţie de echivalenţă.

Iată un exemplu ilustrativ:

<?php
var_export('' == 0);   echo '<br />'; // true
var_export(0 == '0');  echo '<br />'; // true
var_export('0' == ''); echo '<br />'; // false - surpriza :-)
?>
JavaScript:
console.log('' == 0);   // true
console.log(0 == '0');  // true
console.log('0' == ''); // false - surpriza :-)

Poate părea evident, dar iatăa incă un exemplu:

JavaScript:

var a = '', b = 0, c = '0';
console.log(a == b); // true
console.log(b == c); // true
console.log(c == a); // false - ai putea aștepta să fie true

Mai sunt și alte exemple care demonstrează acest lucru, așa că folosiți === când nu sunteți siguri.

Totuși atenție în JS:

NaN !== NaN

 

- - -

]]>
The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) by Joel Spolsky https://dcms.duzun.me/programming.html?art_id=20#art_20 02.07.2011 20
   Nu te-ai întrebat vreodată de ce multe din site-urile româneşti au conţinutul fără diacritice? Răspunsul e simplu. Puţini programatori se aprofundează în "misterele" codificării textului! Se vede că aceasta este problemă nu numai a programatorilor vorbitori de limbă română, dar şi a multor specialişti în domeniu din întreaga comunitate web.



   Nu te-ai întrebat vreodată de ce multe din site-urile româneşti au conţinutul fără diacritice? Răspunsul e simplu. Puţini programatori se aprofundează în "misterele" codificării textului! Se vede că aceasta este problemă nu numai a programatorilor vorbitori de limbă română, dar şi a multor specialişti în domeniu din întreaga comunitate web.

Am găsit un articol interesant pe această temă, întitulat în felul următor:

Minimul absolut pe care  absolut orice dezvoltator de soft trebuie să-l cunoască în mod obligatoriu despre Unicode şi Seturile de caractere (fără scuze!)

de Joel Spolsky

Link: http://www.joelonsoftware.com/articles/Unicode.html

 

Încă un articol interesant la subiect: Character Sets / Character Encoding Issues

]]>
Primul site web din lume! https://dcms.duzun.me/programming.html?art_id=19#art_19 30.06.2011 19 Asa arata primul site de internet. A fost lansat in 6 august 1991.

World Wide Web

The WorldWideWeb (W3) is a wide-area hypermedia information retrieval initiative aiming to give universal access to a large universe of documents.

Asa arata primul site de internet. A fost lansat in 6 august 1991.

World Wide Web

The WorldWideWeb (W3) is a wide-area hypermedia information retrieval initiative aiming to give universal access to a large universe of documents.

Everything there is online about W3 is linked directly or indirectly to this document, including an executive summary of the project, Mailing lists , Policy , November's W3 news , Frequently Asked Questions .

What's out there?
Pointers to the world's online information, subjects , W3 servers, etc.
Help
on the browser you are using
Software Products
A list of W3 project components and their current state. (e.g. Line Mode ,X11 Viola , NeXTStep , Servers , Tools , Mail robot , Library )
Technical
Details of protocols, formats, program internals etc
Bibliography
Paper documentation on W3 and references.
People
A list of some people involved in the project.
History
A summary of the history of the project.
How can I help ?
If you would like to support the web..
Getting code
Getting the code by anonymous FTP , etc.

Sursa: http://www.w3.org/History/19921103-hypertext/hypertext/WWW/TheProject.html

]]>
Timpul necesar pentru diferite operații pe un PC obișnuit https://dcms.duzun.me/programming.html?art_id=18#art_18 24.06.2011 18 execuţia unei intrucţiuni tipice 1/1,000,000,000 sec = 1 nanosec citirea din memoria cache L1 0.5 nanosec branch misprediction 5 nanosec citirea din memoria cache L2 7 nanosec Mutex lock/unlock 25 nanosec citirea din memoria principală 100 nanosec trimiterea a 2K octeţi prin reţea 1Gbps 20,000 nanosec citirea secvenţială a 1MB din memorie 250,000 nanosec citirea de pe o noua locaţie de disc (căutarea) 8,000,000 nanosec citirea secvenţială a 1MB de p disc 20,000,000 nanosec trimiterea unui pachet US spre Europe şi înapoi 150 milliseconds = 150,000,000 nanosec

Sursa: norvig.com

]]>
Culmea optimizării https://dcms.duzun.me/programming.html?art_id=17#art_17 16.02.2011 17
...]]>
  Culmea optimizării este să nu intelegi cum lucrează funcţia imediat după ce ai compus-o. (numaice am păţit-o )


]]>
($i = $j = 0;) sau ($i = 0; $j = 0;) ? - PHP5 https://dcms.duzun.me/programming.html?art_id=16#art_16 29.01.2011 16 Prin ce se deosebeşte în PHP5 expresia

        $i = 0;

        $j = 0;

de expresia

        $i = $j = 0; ?

Prin ce se deosebeşte în PHP5 expresia

        $i = 0;

        $j = 0;

de expresia

        $i = $j = 0; ?

Ca sens prin nimic, însă ca consum de memorie şi funcţionare internă a PHP sunt două expresii total diferite!

De ce?

În primul caz se crează două variabile de tip integer care consumă împreună 8 octeţi (pe un SO de 32 biţi), iar în al doilea caz se alocă spaţiu pentru un singur număr integer - 4 octeţi. Memoria pentru al doilea integer se alocă atunci când cel puţin una din variabile obţine altă valoare.

Dacă valoarea se obţine prin atribuire din altă variabilă ($j = $k;), atunci nu se alocă memorie, pentru că se foloseşte memoria alocată deja pentru variabila cu noua valoare.

 

Concluzie:

În rezultatul execuţiei codului

      for($i=0;$i<100000;$i++) $a[$i] = 0;

tabloul $a consuma mai multă memorie decât în cazul:

      $t = 0;

      for($i=0;$i<100000;$i++) $a[$i] = $t;

Deci deosebirea e esenţială!
 

 Încearcă singur:

<?php

    $mu1 = memory_get_usage();
    $a = array();      
    for($i=0;$i<100000;$i++) $a[$i] = 0;
    $mu2 = memory_get_usage();
    $a = array();
    $t = 0;
    for($i=0;$i<100000;$i++) $a[$i] = $t;
    $mu3 = memory_get_usage();

    echo 'mu1: '. ($mu2 - $mu1)/1024 . '<br />'; // pe SO de 32biti, 8Mo
    echo 'mu2: '. ($mu3 - $mu1)/1024 . '<br />'; // pe SO de 32biti, 5Mo
    echo 'diferenta: ' . ($mu2 - $mu3)/1024;     // pe SO de 32biti, diferenta e 3Mo
?>

]]>
strpos vs stripos - PHP https://dcms.duzun.me/programming.html?art_id=15#art_15 28.01.2011 15 Funcţiile strpos şi stripos (PHP şi nu numai) sunt foarte utile pentru căutarea unui subşir de caractere într-un şir. Nu vreau sa descriu aici cum se folosesc, descrierea detaliată şi exemple puteţi găsi pe site-ul PHP.net. Însă aici vreau să fac o mică observaţie asupra felului cum funcţionează acestea două şi ce probleme pot apărea în special la utilizarea funcţiei stripos.

Funcţiile strpos şi stripos (PHP şi nu numai) sunt foarte utile pentru căutarea unui subşir de caractere într-un şir. Nu vreau sa descriu aici cum se folosesc, descrierea detaliată şi exemple puteţi găsi pe site-ul PHP.net. Însă aici vreau să fac o mică observaţie asupra felului cum funcţionează acestea două şi ce probleme pot apărea în special la utilizarea funcţiei stripos.

Funcţia strpos este foarte rapidă şi recomandată pentru căutarea unui subşir într-un şir.

Funcţia stripos este asemănătoare cu strpos, însă ignoră registrul literelor (majuscule/minuscule). Cât despre performanţă, nu e cea mai bună alegere... De ce?

Să vedem cum lucrează:

    $pos = stripos($str, $substr);

este echivalent cu:

    $str    = strtoupper($str);
    $substr = strtoupper($substr);
    $pos    = strpos($str, $substr);

Parcă nu se petrece nimic deosebit, însă în cazul când $str este destul de mare se pierde mult timp la convertirea în majuscule. Şi dacă stripos este apelată repetat pentru acelaşi şir $str, de fiecare dată se converteşte registrul şirului, deci se face acelaşi lucrul de mai multe ori şi în zadar.

De exemplu, să considerăm următorul cod:

<?php

    $t1 = microtime(1);
    $str = str_repeat('abcdefghijklmnopqrstuvwxyz', 1<<16); // se genereaza un şir de 1.7Mo
    echo strlen($str) . '<BR>';
    $sub = substr($str, rand(0, strlen($str)-10), 10); // un subşir aleator al str de lungimea 10
    for($i=0; $i<1000; $i++) stripos($str, $sub); // apoi sa incercati cu strpos
    echo $sub . '<BR>';
    $t2 = microtime(1);
    echo 'Executat in '. ($t2 - $t1) . ' sec.';

?>

Pe calculatorul meu personal acest cod s-a executat în aproximativ un minut. Însă cu strpos - 0.002 secunde, deosebire radicală!

]]>
Shutdown, Reboot &#351;i Logoff de la linia de comanda https://dcms.duzun.me/programming.html?art_id=13#art_13 19.11.2010 13 O colecţie de comenzi pentru deconectarea PC pentru majoritatea versiunilor de DOS şi Windows şi limbaje de scriptare.
OS (1) Command line Effect Remarks XP Pro NLTEST /server:localhost /shutdown:"Shutting down, just for fun" 60 Shutdown in 1 minute, displaying the "reason" in a popup Use a remote server name instead of localhost to shutdown that remote server. XP Pro NLTEST /server:localhost /shutdown_abort Abort the shutdown in progress Use a remote server name instead of localhost to abort a shutdown in progress on that remote server. XP Pro WMIC OS Where Primary=TRUE Call Shutdown Immediate shutdown Use WMIC's /NODE switch to shutdown a remote computer. XP Pro WMIC OS Where Primary=TRUE Call Reboot Immediate reboot Use WMIC's /NODE switch to reboot a remote computer. XP SHUTDOWN -r -t 10 Delayed reboot Reboot after a 10 seconds delay.
O colecţie de comenzi pentru deconectarea PC pentru majoritatea versiunilor de DOS şi Windows şi limbaje de scriptare.

OS (1) Command line Effect Remarks
XP Pro NLTEST /server:localhost /shutdown:"Shutting down, just for fun" 60 Shutdown in 1 minute, displaying the "reason" in a popup Use a remote server name instead of localhost to shutdown that remote server.
XP Pro NLTEST /server:localhost /shutdown_abort Abort the shutdown in progress Use a remote server name instead of localhost to abort a shutdown in progress on that remote server.
XP Pro WMIC OS Where Primary=TRUE Call Shutdown Immediate shutdown Use WMIC's /NODE switch to shutdown a remote computer.
XP Pro WMIC OS Where Primary=TRUE Call Reboot Immediate reboot Use WMIC's /NODE switch to reboot a remote computer.
XP SHUTDOWN -r -t 10 Delayed reboot Reboot after a 10 seconds delay.
Can be stopped during those 10 seconds using SHUTDOWN -a
XP SHUTDOWN -s -t 01 Delayed shutdown Shutdown after a 1 second delay, NO poweroff.
XP SHUTDOWN -i Interactive use with GUI Can be used to shutdown multiple computers.
TS LOGOFF 16 /SERVER:termserv1 Logoff Logoff session 16 on Terminal Server TERMSERV1.
Use the QUERY USER command to find out which session ID belongs to whom.
Find more Terminal Server commands.
TS TSSHUTDN 45 /SERVER:termserv1 /POWERDOWN /DELAY:20/V Delayed poweroff Notify all users on Terminal Server TERMSERV1, logoff all Terminal Server sessions after 45 seconds, wait another 20 seconds, and then shut down Terminal Server TERMSERV1 and power off.
See my Terminal Server Commands page for the exact syntax.
W2K (5) DEVCON Reboot Reboot Requires Microsoft's DEVCON utility
W2K RUNDLL32 PowrProf.dll, SetSuspendState Activate suspend state  
W2K RUNDLL32 USER32.DLL,LockWorkStation Lock Credits: Steven Clements (posted on alt.msdos.batch.nt)
W2K Learn how to shutdown a remote Windows 2000 computer Shutdown GUI, no command line
NT+ (1) PSSHUTDOWN \\mynt4srv -K -F -T 20 Delayed poweroff Poweroff \\mynt4srv after a 20 seconds delay.
Can be aborted using PSSHUTDOWN \\mynt4srv -A
Uses PSSHUTDOWN.EXE from SysInternalsPS Tools.
NT+ (1) PSSHUTDOWN \\myw2ksrv -O -F -T 0 Logoff Immediately logoff console user on \\myw2ksrv
Uses PSSHUTDOWN.EXE from SysInternalsPS Tools
NT4+RK
W2K+RK
SHUTDOWN /L /R /T:0 /Y Reboot Immediate shutdown & reboot
NT4+RK
W2K+RK
SHUTDOWN /L /T:10 /Y /C Delayed shutdown Shutdown in 10 seconds, close without saving.
Can be stopped during those 10 seconds using SHUTDOWN /A
NT4 See Reboot NT on my Solutions found in alt.msdos.batch page Reboot Reboot immediately
NT4 RUNDLL32 USER32.DLL,ExitWindowsEx
RUNDLL32 USER32.DLL,ExitWindowsEx
Logoff Most systems require the command to be called twice before logging off
Win98/ME RUNDLL32 SHELL32.DLL,SHExitWindowsEx n Any n can be any combination (sum) of the following numbers: (4):
0	Logoff
1	Shutdown
2	Reboot
4	Force
8	Poweroff (if supported by the hardware)
Win98/ME RUNONCE.EXE -q Reboot (4)  
Win98 RUNDLL32 KRNL386.EXE,exitkernel Poweroff Poweroff for ATX boards only, otherwise normal shutdown (3)
Win9* RUNDLL USER.EXE,ExitWindows Shutdown (2)  
Win9* RUNDLL USER.EXE,ExitWindowsExec See Remarks Win95: various results, usualy fast shutdown (and lock PC), sometimes restart Windows, sometimes reboot.
Win98: Restart Windows, sometimes reboot.
Win9* RUNDLL SHELL.DLL,RestartDialog Restart dialog "System Settings Changed, Do you want to restart your computer now?" dialog
Win31* ECHO G=FFFF:0000| DEBUG Task Manager popup And sometimes reboot
DOS ECHO G=FFFF:0000| DEBUG Reboot Warm boot, sometimes cold boot.
May not work with "exotic" memory managers, like Quarterdeck's QEMM or DesqView; in that case, use RESET.COM instead.
PowerShell Stop-Process -processname * Blue Screen Kills all running processes immediately without confirmation, resulting in a "Blue Screen Of Death".
KiXtart $RC = SHUTDOWN( "\\server", "Shutting down...", 10, 1, 0 ) Delayed shutdown Shutdown \\server in 10 seconds, with message, close without saving, no reboot
KiXtart $RC = SHUTDOWN( "\\server", "", 0, 1, 1 ) Reboot Immediate shutdown & reboot \\server, without a message
KiXtart $RC = LOGOFF( 1 ) Logoff Forcing applications to close.
Use 0 instead of 1 if you don't want to force applications to close
KiXtart $RC = SetSystemState( 0 ) Lock Requires KiXtart 4.51 or later
KiXtart $RC = SetSystemState( 1 ) Standby Requires KiXtart 4.51 or later
KiXtart $RC = SetSystemState( 2 ) Hibernate Requires KiXtart 4.51 or later.
KiXtart $RC = SetSystemState( 3, 0 ) Poweroff Power off with prompt to close applications. Use SetSystemState( 3, 1 ) to close applications without prompting.
Requires KiXtart 4.51 or later
Perl InitiateSystemShutdown( $sComputer, $sMessage, $uTimeoutSecs, $bForce, $bReboot )   General syntax (ActivePerl for Windows only)
Perl InitiateSystemShutdown( "", "", 0, 1, 1 ) Reboot Immediate reboot without message, force applications to close without saving data
Perl InitiateSystemShutdown( "", "Going down...", 10, 0, 1 ) Delayed reboot Reboot after 10 seconds, with message and without forcing applications to close
Perl InitiateSystemShutdown( "10.0.1.16", "Sorry", 5, 1, 0 ) Delayed shutdown Shutdown of remote computer after 5 seconds, with message and forced closing of applications
Regina Rexx RC = W32SysShutdown( how [,force] )   General syntax (Regina Rexx for Windows with W32Funcs only).
how can be either Reboot, Logoff, Poweroff or Shutdown.
force can be either Force or Noforce.
Regina Rexx RC = W32SysShutdown( "P", "F" ) Poweroff Immediate shutdown and poweroff, forced closing of application
Regina Rexx RC = W32SysShutdown( "L", "N" ) Logoff Logoff, prompt for saving unsaved data
WSH [1] Set OpSysSet = GetObject("winmgmts:{(Shutdown)}//./root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true")
[2]
[3]
 for each OpSys in OpSysSet
[4]     OpSys.Reboot()
[5] next
Reboot Requires WMI.
Remove [line numbers].
(Found in a forum posting by Alex K. Angelopoulos onwww.developersdex.com)
WSH Replace line 4 in the script above with this one:
[4]     OpSys.Shutdown()
to shut down the PC instead of rebooting it.
Shutdown But no poweroff.
 
See my WSH page for examples on how to reboot or shut down remote computers too.
WSH [1] Const EWX_LOGOFF   = 0
[2]
[3]
 Set wmi = GetObject("winmgmts:{(Shutdown)}")
[4] Set objSet = wmi.InstancesOf("Win32_OperatingSystem")
[5]
[6]
 For Each obj in objSet
[7]     Set os = obj
[8]     Exit For
[9] Next
[10]
[11]
 os.Win32Shutdown EWX_LOGOFF
Logoff Requires WMI.
Remove [line numbers].
(Posted by Michael Harris on microsoft.public.scripting.vbscript)
 
My Logoff.vbs combines this code with that of the reboot and shutdown commands, and allows logoff of remote computers as well.
WSH Set objShell = CreateObject( "Shell.Application" )
Shell.ShutdownWindows
Open the Shutdown dialog Based on the Advanced Stuff listing on groups.msn.com/windowsscript/.
OS/2 START /PM SHUTDOWN && EXIT Shutdown Will still stop and ask for confirmation if a non-PM application is active
OS/2 SETBOOT /B Reboot Unconditional shutdown & reboot from default Boot Manager entry.
(Mailed by Rick Curry)
OS/2 SETBOOT /IBD:C: Reboot Unconditional shutdown & reboot from C: drive
OS/2 SETBOOT /IBA:nonsense Shutdown Unconditional shutdown & failing reboot.
Needs Boot Manager installed.
Will reboot, no questions asked, and then stop if nonsense is an invalid Boot Manager menu entry (which, in this case, is exactly what we want).
OS/2 LOGOFF Logoff Both LAN Server client and Peer

 

Notes: (1) DOS MS-DOS or PC-DOS
  Win31* Windows 3.1, 3.11 or 3.11 for Workgroups
  Win9* Windows 95 or 98
  Win98 Windows 98
  Win98/ME Windows 98 or Windows Millennium Edition (ME)
  NT+ Windows NT 4, 2000 or XP
  NT4 Windows NT 4 (not Windows 2000 or XP)
  NT4+RK Windows NT 4 with Resource Kit
  W2K Windows 2000
  W2K+RK Windows 2000 with Resource Kit
  XP Windows XP
  XP Pro Windows XP Professional and Windows Server 2003
  TS Windows NT 4 Terminal Server Edition or Windows 2000 (Advanced) Server with Terminal Server installed
  PowerShell Windows XP, Server 2003 or Vista with PowerShell installed
  KiXtart Windows (any) with KiXtart
  Perl Windows (any) with ActivePerl
  Regina Rexx Windows (any) with Regina Rexx and W32Funcs
  WSH Windows (32 bits) with Windows Script Host
  OS/2 OS/2 Warp 3 and 4, LAN Server and Warp Server
  (2) Thanks for Bill James and Tom Lavedas, for the information on RUNDLL.
Find more RUNDLL examples I collected on my RUNDLL page.
  (3) Thanks for Sasha Predii for posting this information.
Find more RUNDLL examples I collected on my RUNDLL page.
  (4) See article Q234216 in the Microsoft Knowledge base for more information.
Thanks for Alec Soroudi for pointing out this information.
Windows NT also has a RUNONCE.EXE, but I am not sure what its purpose is -- RUNONCE.EXE -q does not shut down NT.
  (5) Requires Microsoft's DEVCON utility
 
]]>
PHP preg special chars https://dcms.duzun.me/programming.html?art_id=12#art_12 02.09.2010 12 \ ^ . $ | ( ) [ ]
* + ? { } ,
 
Special Character Definitions
\ Quote the next metacharacter
^ Match the beginning of the line
. Match any character (except newline)
$ Match the end of the line (or before newline at the end)
| Alternation
() Grouping
[] Character class
* Match 0 or more times
+ Match 1 or more times
? Match 1 or 0 times
{n} Match exactly n times
{n,} Match at least n times
{n,m} Match at least n but not more than m times
 
More Special Character Stuff
\t tab (HT, TAB)
\n newline (LF, NL)
\r return (CR)
\f form feed (FF)
\a alarm (bell) (BEL)
\e escape (think troff) (ESC)
\033 octal char (think of a PDP-11)
\x1B hex char
\c[ control char
\l lowercase next char (think vi)
\u uppercase next char (think vi)
\L lowercase till \E (think vi)
\U uppercase till \E (think vi)
\E end case modification (think vi)
\Q quote (disable) pattern metacharacters till \E
 
Even More Special Characters
\w Match a "word" character (alphanumeric plus "_")
\W Match a non-word character
\s Match a whitespace character
\S Match a non-whitespace character
\d Match a digit character
\D Match a non-digit character
\b Match a word boundary
\B Match a non-(word boundary)
\A Match only at beginning of string
\Z Match only at end of string, or before newline at the end
\z Match only at end of string
\G Match only where previous m//g left off (works only with /g)
 
]]>
Imagini zbur&#259;toare în orice site! https://dcms.duzun.me/programming.html?art_id=11#art_11 18.08.2010 11 Pentru a face toate imaginile dintr-o pagină web să danseze, copie codul de mai jos în bara de adresă a paginii respective (înlocuind adresa paginii) și apoi apasă <Enter> sau înearcă acum acest "hack" pe această pagină!

Pentru a face toate imaginile dintr-o pagină web să danseze, copie codul de mai jos în bara de adresă a paginii respective (înlocuind adresa paginii) și apoi apasă <Enter> sau înearcă acum acest "hack" pe această pagină!

Sper să-ți placă ;-)

]]>
HTML5 contentEditable face minuni! https://dcms.duzun.me/programming.html?art_id=10#art_10 16.08.2010 10 HTML5 face revoluție pe web!

Recent am descoperit noi posibilități pe care le oferă HTML5, legate de editarea conținutului paginilor web. Nu vreau să descriu prea mult ce am descoperit. Vreau să vă convingeți singuri de puterea acestor noi tehnologii! Doar încercați să editați acest articol (să tapați ceva text sau să adăugați text prin copy&paste...).

HTML5 face revoluție pe web!

Recent am descoperit noi posibilități pe care le oferă HTML5, legate de editarea conținutului paginilor web. Nu vreau să descriu prea mult ce am descoperit. Vreau să vă convingeți singuri de puterea acestor noi tehnologii! Doar încercați să editați acest articol (să tapați ceva text sau să adăugați text prin copy&paste...).

 De asemenea vă recomand să vedeți și acest articol: „Editează orice pagină pe WEB!

 

Ca să aveți cu ce vă juca, ceva text aici: 

 

Lorem Ipsum este pur şi simplu o machetă pentru text a industriei tipografice. Lorem Ipsum a fost macheta standard a industriei încă din secolul al XVI-lea, când un tipograf anonim a luat o planşetă de litere şi le-a amestecat pentru a crea o carte demonstrativă pentru literele respective. Nu doar că a supravieţuit timp de cinci secole, dar şi a facut saltul în tipografia electronică practic neschimbată. A fost popularizată în anii '60 odată cu ieşirea colilor Letraset care conţineau pasaje Lorem Ipsum, iar mai recent, prin programele de publicare pentru calculator, ca Aldus PageMaker care includeau versiuni de Lorem Ipsum.


Iată ce am făcut din google.md :-)

Simțiți-vă liberi să trageți imaginea de mai sus oriunde în cadrul acestui articol!

]]>
JavaScript "v1 ? v2 : v3" vs "v1 && v2 &#x7C;&#x7C; v3" https://dcms.duzun.me/programming.html?art_id=9#art_9 12.08.2010 9 JavaScript - un limbaj script foarte vestit pentru flexibilitatea și „puterea” sa de scriptare!

Deși inspirat din limbajul Java (care la rândul său este inspirat din C/C++), JavaScript (sau JS) are un mare plus de flexibilitate sintactică, dat fiind faptul că este un limbaj de tip script.

JavaScript - un limbaj script foarte vestit pentru flexibilitatea și „puterea” sa de scriptare!

Deși inspirat din limbajul Java (care la rândul său este inspirat din C/C++), JavaScript (sau JS) are un mare plus de flexibilitate sintactică, dat fiind faptul că este un limbaj de tip script.

Iată un bun exemplu care îl face pe JS deosebit față de alte limbaje (chiar de timp script): operatorii logici „&&” și „||".

În limbajele tradiționale (C/C++, PHP, ș.a.) expresiile de genul „v1 && v2” sau „v1 || v2” se evaluează ca booleene (true sau false, 1 sau 0). E bine cunoscut faptul (cel puțin printre programatori) că orice valoare nenulă se evaluează ca true și orice valoare nulă (0, false, null, undefined, '') se evaluează ca false. Atunci de ce să forțăm expresiile de mai sus să se evalueze strict la aceste două valori booleene (true sau false)?! De ce să nu se păstreze valoarea inițială a operanzilor, care n-ar fi ea (null, undefined, '', <not nul>, ...).

Cred că ați prins firul, nu? JS așa si face, nu forțează pe nimeni și nimic, adică expresia „v1 && v2” ia valoarea „v1”, dacă v1 este o valoare nenulă și ia valoarea „v2”, dacă v1 e nul.

Exemplu:

var v = true && 'avioanele nu zboara';
alert(v); // v == 'avioanele nu zboara'
var u = true || 'avioanele zboara';
alert(u); // u == true
v = 123 && ''; // v == '', nu false, ci ''
u = 123 || ''; // u == 123, dar nu true
...

Folosind aceste proprietăți ale operatorilor logici specifice JS, putem emita operatorul ternar „?:” în felul următor:

Expresia „v1 ? v2 : v3” poate fi scrisă „v1 && v2 || v3”.

Dar atenție! Această emitație nu este identică cu operatorul ternar autentic. Iată cum se citesc expresiile de mai sus în limbajul omenesc:

„v1 ? v2 : v3” - dacă v1, atunci v2, altfel v3;

„v1 && v2 || v3” - dacă v1 și v2, atunci v2, altfel v3.

Ați prins firul? Sper că da!

După o mică analiză a ideilor și exemplelor expuse mai sus, conchidem că putem construi noi „operatori” logici în JS, care să răspundă necesităților noastre în fiecare situație concretă. Astfel putem scrie mai puțin cod și realiza mai multă funcționalitate - o trăsătură specifică JS și rar întâlnită în alte limbaje de programare.

Autor: Dumitru Uzun

]]>
Legile lui Murphy (în informatică) https://dcms.duzun.me/programming.html?art_id=8#art_8 07.06.2010 8 Sursa: http://www.link.ro/ 

Un program pentru calculator face ceea ce ii spui tu sa faca, nu ceea ce vrei tu sa faca.

La originea oricarei erori care este atribuita computerului vei gasi cel putin doua greseli umane, incluzand-o pe aceea de a da vina pe computer.

Sursa: http://www.link.ro/ 

Un program pentru calculator face ceea ce ii spui tu sa faca, nu ceea ce vrei tu sa faca.

La originea oricarei erori care este atribuita computerului vei gasi cel putin doua greseli umane, incluzand-o pe aceea de a da vina pe computer.

Erorile nedetectabile sunt infinite in varietate, spre deosebire de erorile detectabile care sunt limitate prin definitie.

Daca constructorii ar face constructiile in felul in care programatorii concep programe, atunci prima ciocanitoare care ar veni, ar distruge civilizatia.

Toate computerele asteapta cu aceiasi viteza.

Unul din motivele pentru care computerele pot sa faca mai multa treaba decat oamenii este faptul ca nu trebuie sa se opreasca pentru a raspunde la telefon.

Definitiile lui Murphy privind sistemele computerizate:
Hardware: Acele parti ale sistemului pe care le poti lovi cu piciorul.
Software: Acele parti ale sistemului care nu functioneaza.
Hard disk: Acea componenta a sistemului care intepeneste in momentul cel mai nepotrivit cu putinta.
Periferica: Acele componente care sunt incompatibile cu sistemul tau.
Imprimanta: Acea componenta a sistemului care se blocheaza cand nu te uiti la ea.
Cablu: Acea parte a sistemului care e prea scurta.
Backup: O operatie care niciodata nu este efectuata la timp.
Restaurare: O precedura care functioneaza perfect pana cand e nevoie de ea.
Memorie: Acea parte a sistemului computerizat care este insuficienta.
Mesaj de eroare: O solicitare de aprobare a distrugerii propriilor tale date.
Fisier: Acea parte a sistemului care nu poate fi gasita.
Procesor: Acea componenta a sistemului computerizat care este depasita tehnologic.

Un afisaj digital furnizeaza informatii gresite cu o precizie mai mare decat a fost posibil anterior.

Daca computerele devin prea puternice, le putem organiza intr-un comitet - asta o sa le termine.

Este mai usor sa adaptezi specificatia la program decat viceversa.

Nu exista limbaj in care sa fie cat de cat dificil sa se scrie un program prost.

Un computer face tot atatea greseli in doua secunde cat doi oameni care lucreaza in douazeci de ani.

Indiferent ce cauti pe internet, cel putin un site pornografic se va potrivi cu criteriile tale de cautare.

Inteligenta artificiala nu se poate compara cu prostia naturala.

]]>
&#536;ablon https://dcms.duzun.me/programming.html?art_id=7#art_7 10.05.2010 7 Iata cum arata un șablon pentru articolele publicate aici. ...]]>

Iata cum arata un șablon pentru articolele publicate aici.

{ART_TITLE}{ART_CTRL}
 {ART_CNT}

{ART_DATE}

{ART_CTRL}
 

Astfel se ajunge la înțelegere între programist și designer. Aceștia doi nu trebuie să se amestece unul în lucrul celuilalt, însă sunt nevoiți să colaboreze.

Designerul are grijă de aspectul exterior al informației și de structura ei (în pagină), iar programistul asigură ca informația din sistem (site) să ajungă în carcasa creată de către designer. Legătura dintre aspect și conținut se realizează în baza „constantelor” de tipul {NUME_CONSTANTĂ}. Acestea sunt înlocuite de către sistem (lucrul programistului) cu conținut relevant. Numele acestor „constante” poate fi oricare (îl definește fie programistul, fie designerul, dacă lucrează împreună la crearea sistemului).

]]>
MID (a, b, c) https://dcms.duzun.me/programming.html?art_id=6#art_6 13.04.2010 6 Fie declarațiile C:

#define MIN(x,y)     (((x) < (y)) ? (x) : (y)) #define MAX(x,y)     (((x) > (y)) ? (x) : (y)) #define MID(x,y,z)   MAX((x), MIN((y), (z)))   Ce greșeli sunt aici și care e soluția ...]]>
Fie declarațiile C:

#define MIN(x,y)     (((x) < (y)) ? (x) : (y))
#define MAX(x,y)     (((x) > (y)) ? (x) : (y))
#define MID(x,y,z)   MAX((x), MIN((y), (z)))
 
Ce greșeli sunt aici și care e soluția?
]]>
Olimpiada la Informatică UST https://dcms.duzun.me/programming.html?art_id=5#art_5 30.03.2010 5 Azi, 30 martie 2010, a avut loc Olimpiada la Informatică în cadrul Universității de Stat din Tiraspol (cu sediul la Chișinău), organizată cu ocazia jubileului de 80 de ani al Universității și de 25 de ani al Catedrei de Informatică și Tehnologii Informaționale.

Azi, 30 martie 2010, a avut loc Olimpiada la Informatică în cadrul Universității de Stat din Tiraspol (cu sediul la Chișinău), organizată cu ocazia jubileului de 80 de ani al Universității și de 25 de ani al Catedrei de Informatică și Tehnologii Informaționale.

La olimpiadă au participat studenții anilor 1, 2, 3 și 4.

Aceasta a fost prima olimpiadă de informatică la care am participat și eu :-)

]]>
Kids Math Software - 3D Shapes https://dcms.duzun.me/programming.html?art_id=4#art_4 25.03.2010 4 Soft 3D pentru copii 


Kids Math Software - 3D Shapes - Funny bloopers R us

...]]>
Soft 3D pentru copii 


Kids Math Software - 3D Shapes - Funny bloopers R us

]]>
Avem nevoie de clase în JavaScript? https://dcms.duzun.me/programming.html?art_id=2#art_2 25.02.2010 2 Avem nevoie de clase în JavaScript ?

În lumea POO (Programării Orientate pe Obiect) există două tipuri de limbaje:

Bazate pe clase, Bazate pe prototipuri (de obiecte).

JS (JavaScript) este unul dintre cele mai vestite și cele mai folosite limbaje POO bazate pe prototipuri din lume (jumate din site-urile de pe web folosesc acest limbaj). Candva era un hobby, iar acum e un instrument indispensabil al programatorilor web. A devenit popular foarte repede tocmai pentru ușurința și puterea pe care o aduce unei aplicații web. Mulți acuză JS că îi lipsesc clasele. Aceasta de regulă o zic cei care n-au „gustat” din frumusetea și puterea acestui limbaj. Sau poate s-au deprins numai cu limbajele statice, bazate pe clase.

Avem nevoie de clase în JavaScript ?

În lumea POO (Programării Orientate pe Obiect) există două tipuri de limbaje:

  1. Bazate pe clase,
  2. Bazate pe prototipuri (de obiecte).

JS (JavaScript) este unul dintre cele mai vestite și cele mai folosite limbaje POO bazate pe prototipuri din lume (jumate din site-urile de pe web folosesc acest limbaj). Candva era un hobby, iar acum e un instrument indispensabil al programatorilor web. A devenit popular foarte repede tocmai pentru ușurința și puterea pe care o aduce unei aplicații web. Mulți acuză JS că îi lipsesc clasele. Aceasta de regulă o zic cei care n-au „gustat” din frumusetea și puterea acestui limbaj. Sau poate s-au deprins numai cu limbajele statice, bazate pe clase.

Pentru ce ar trebui unui limbaj dinamic, fără tipuri de date stricte ale variabilelor, să aibă clase. Clasele sunt tipuri de date, dar un limbaj bazat pe prototipuri are tot ce-i trebuie și fără clase; de altfel nu devenea atât de răspândit JS!

JavaScript 2 vrea să facă o revoluție în vechiul nostru JS 1. Adaugă clase și multe alte noțiuni străine unui limbaj bazat pe prototipuri. Se observă o tendință spre Java. 

Se pune întrebarea: Este nevoie de clase în JS?

Părerea mea este că nu avem nevoie de clase în JS, el se descurcă foarte bine și cu ce are! Clasele vor aduce numai dureri de cap. În loc să se introducă clasele în limbajul JS, mai bine s-ar scrie cărți cum de implementat funcționalitatea unui limbaj bazat pe clase în JS și despre specificul fiecărui tip de limbaje, ca să-i împăcăp pe toți, atât pe începători, cât și pe „veterani”.

Apreciați valoarea membrilor privați prin funcții închidere:

function Point(x, y) { // funcția constructor
  return {
    getX:  function () { return x },
    getY:  function () { return y },
    getXY: function () { return [x, y] }
  }
}
  for(var i = 101, a = []; i > 0; i--  )
     a[i] = new Point(i, i); 
// crearea obiectelor

  for(var i in a) with(document) {
     write(a[i].getXY());
     write('<BR />');
  }

Încercați așa ceva, de ex., în PHP !

Dar sunt și lucruri bune în JavaScript 2... Aici m-am referit doar la introducerea claselor.

Mai multe la acest subiect puteți citi și în engleză.

AutorDumitru Uzun

]]>
Treptele unui proiect de succes ... https://dcms.duzun.me/programming.html?art_id=1#art_1 05.01.2010 1 Fazele unui Proiect (www.possibility.com) Entuziasmul Deziluzionarea Panica Cãutarea vinovatului Pedepsirea inocentului Laudã și onoruri pentru neparticipanți

Fazele unui Proiect (www.possibility.com)

  1. Entuziasmul
  2. Deziluzionarea
  3. Panica
  4. Cãutarea vinovatului
  5. Pedepsirea inocentului
  6. Laudã și onoruri pentru neparticipanți

;-)

]]>