miercuri, 31 octombrie 2018

TED - Cateva dezbateri despre Inteligența artificială

marți, 30 octombrie 2018

Bec inteligent TP-Link LB100, LED, Wi-Fi, cu lumina reglabila - review

Descriere produs: Bec inteligent TP-Link LB100, LED, Wi-Fi, cu lumina reglabila
Automatizarea casei mele avansează cu încă o componentă inteligentă, un bec LED inteligent controlat prin WiFi. Becul a fost foarte usor de instalat. Aplicația Kasa l-a identificat foarte repede, și în nu mai mult de 60 sec am reușit sa folosesc becul. Intensitea luminoasa se poate controla foarte usor pentru a induce o atmosfera mai romantica :D . Acest bec se poate și programa să se aprindă sau să se stingă la ore prestabilite, si cred că această funcționalitate este foarte utilă dacă plec de acasă vreo cateva zile. Este un produs foarte bun și fiabil. Probabil o să încerc să controlez becul cu Amazon Alexa sau Google Assistant, dar asta în viitor. Utilizarea becului LB100 este ușoară și simplă. Un lucru care îmi place foarte mult este capacitatea de a adăuga widget-ul pe ecranul de start. Cu widget-ul de pe ecranul de start, am putut accesa butoanele On / Off fără a lansa aplicația. Deși este banal, acest lucru duce mult la eficientizarea utilizării. În ceea ce privește răspunsul, pornirea / oprirea becului prin widget durează aproximativ 1-2 secunde. Nimic mai important, dar mi-aș fi dorit să fie mai rapid. Cu toate acestea, dacă ați făcut-o prin aplicația în sine, răspunsul a fost instantaneu.

In lista din aplicația Kasa am acum și becul din camera mare, pe lângă cafetiera din bucatarie :
Se poate controla luminozitate,și se poate activa sau dezactiva la ore fixe:
Becul calculează și consumul de energie:

Documentatie:
Manual LB100(E26)_V2_Quick Installation Guide
User guide

Componente:
Bec inteligent TP-Link LB100, LED, Wi-Fi, cu lumina reglabila


Specificatii tehnice:

  • Tip soclu E27 (dulie normală)
  • Conectivitate Wireless (wifi)
  • Forma bec Glob Utilizat pentru Interior
  • Durata de viata 15000 h
  • Putere 8 W
  • Tensiune alimentare 220 V
  • Putere echivalenta 50 W
  • Tip lumina Calda Temperatura culoare 2700 k
  • Flux luminos 600 lm

Recomand ! O seară plăcută tuturor !

joi, 25 octombrie 2018

The Story of Mel, a Real Programmer

The story was copied from https://www.cs.utah.edu/~elb/folklore/mel.html

         Real Programmers write in FORTRAN.

     Maybe they do now,
     in this decadent era of
     Lite beer, hand calculators, and "user-friendly" software
     but back in the Good Old Days,
     when the term "software" sounded funny
     and Real Computers were made out of drums and vacuum tubes,
     Real Programmers wrote in machine code.
     Not FORTRAN.  Not RATFOR.  Not, even, assembly language.
     Machine Code.
     Raw, unadorned, inscrutable hexadecimal numbers.
     Directly.

     Lest a whole new generation of programmers
     grow up in ignorance of this glorious past,
     I feel duty-bound to describe,
     as best I can through the generation gap,
     how a Real Programmer wrote code.
     I'll call him Mel,
     because that was his name.

     I first met Mel when I went to work for Royal McBee Computer Corp.,
     a now-defunct subsidiary of the typewriter company.
     The firm manufactured the LGP-30,
     a small, cheap (by the standards of the day)
     drum-memory computer,
     and had just started to manufacture
     the RPC-4000, a much-improved,
     bigger, better, faster --- drum-memory computer.
     Cores cost too much,
     and weren't here to stay, anyway.
     (That's why you haven't heard of the company,
     or the computer.)

     I had been hired to write a FORTRAN compiler
     for this new marvel and Mel was my guide to its wonders.
     Mel didn't approve of compilers.

     "If a program can't rewrite its own code",
     he asked, "what good is it?"

     Mel had written,
     in hexadecimal,
     the most popular computer program the company owned.
     It ran on the LGP-30
     and played blackjack with potential customers
     at computer shows.
     Its effect was always dramatic.
     The LGP-30 booth was packed at every show,
     and the IBM salesmen stood around
     talking to each other.
     Whether or not this actually sold computers
     was a question we never discussed.

     Mel's job was to re-write
     the blackjack program for the RPC-4000.
     (Port?  What does that mean?)
     The new computer had a one-plus-one
     addressing scheme,
     in which each machine instruction,
     in addition to the operation code
     and the address of the needed operand,
     had a second address that indicated where, on the revolving drum,
     the next instruction was located.

     In modern parlance,
     every single instruction was followed by a GO TO!
     Put *that* in Pascal's pipe and smoke it.

     Mel loved the RPC-4000
     because he could optimize his code:
     that is, locate instructions on the drum
     so that just as one finished its job,
     the next would be just arriving at the "read head"
     and available for immediate execution.
     There was a program to do that job,
     an "optimizing assembler",
     but Mel refused to use it.

     "You never know where it's going to put things",
     he explained, "so you'd have to use separate constants".

     It was a long time before I understood that remark.
     Since Mel knew the numerical value
     of every operation code,
     and assigned his own drum addresses,
     every instruction he wrote could also be considered
     a numerical constant.
     He could pick up an earlier "add" instruction, say,
     and multiply by it,
     if it had the right numeric value.
     His code was not easy for someone else to modify.

     I compared Mel's hand-optimized programs
     with the same code massaged by the optimizing assembler program,
     and Mel's always ran faster.
     That was because the "top-down" method of program design
     hadn't been invented yet,
     and Mel wouldn't have used it anyway.
     He wrote the innermost parts of his program loops first,
     so they would get first choice
     of the optimum address locations on the drum.
     The optimizing assembler wasn't smart enough to do it that way.

     Mel never wrote time-delay loops, either,
     even when the balky Flexowriter
     required a delay between output characters to work right.
     He just located instructions on the drum
     so each successive one was just *past* the read head
     when it was needed;
     the drum had to execute another complete revolution
     to find the next instruction.
     He coined an unforgettable term for this procedure.
     Although "optimum" is an absolute term,
     like "unique", it became common verbal practice
     to make it relative:
     "not quite optimum" or "less optimum"
     or "not very optimum".
     Mel called the maximum time-delay locations
     the "most pessimum".

     After he finished the blackjack program
     and got it to run
     ("Even the initializer is optimized",
     he said proudly),
     he got a Change Request from the sales department.
     The program used an elegant (optimized)
     random number generator
     to shuffle the "cards" and deal from the "deck",
     and some of the salesmen felt it was too fair,
     since sometimes the customers lost.
     They wanted Mel to modify the program
     so, at the setting of a sense switch on the console,
     they could change the odds and let the customer win.

     Mel balked.
     He felt this was patently dishonest,
     which it was,
     and that it impinged on his personal integrity as a programmer,
     which it did,
     so he refused to do it.
     The Head Salesman talked to Mel,
     as did the Big Boss and, at the boss's urging,
     a few Fellow Programmers.
     Mel finally gave in and wrote the code,
     but he got the test backwards,
     and, when the sense switch was turned on,
     the program would cheat, winning every time.
     Mel was delighted with this,
     claiming his subconscious was uncontrollably ethical,
     and adamantly refused to fix it.

     After Mel had left the company for greener pa$ture$,
     the Big Boss asked me to look at the code
     and see if I could find the test and reverse it.
     Somewhat reluctantly, I agreed to look.
     Tracking Mel's code was a real adventure.

     I have often felt that programming is an art form,
     whose real value can only be appreciated
     by another versed in the same arcane art;
     there are lovely gems and brilliant coups
     hidden from human view and admiration, sometimes forever,
     by the very nature of the process.
     You can learn a lot about an individual
     just by reading through his code,
     even in hexadecimal.
     Mel was, I think, an unsung genius.

     Perhaps my greatest shock came
     when I found an innocent loop that had no test in it.
     No test.  *None*.
     Common sense said it had to be a closed loop,
     where the program would circle, forever, endlessly.
     Program control passed right through it, however,
     and safely out the other side.
     It took me two weeks to figure it out.

     The RPC-4000 computer had a really modern facility
     called an index register.
     It allowed the programmer to write a program loop
     that used an indexed instruction inside;
     each time through,
     the number in the index register
     was added to the address of that instruction,
     so it would refer
     to the next datum in a series.
     He had only to increment the index register
     each time through.
     Mel never used it.

     Instead, he would pull the instruction into a machine register,
     add one to its address,
     and store it back.
     He would then execute the modified instruction
     right from the register.
     The loop was written so this additional execution time
     was taken into account ---
     just as this instruction finished,
     the next one was right under the drum's read head,
     ready to go.
     But the loop had no test in it.

     The vital clue came when I noticed
     the index register bit,
     the bit that lay between the address
     and the operation code in the instruction word,
     was turned on ---
     yet Mel never used the index register,
     leaving it zero all the time.
     When the light went on it nearly blinded me.

     He had located the data he was working on
     near the top of memory ---
     the largest locations the instructions could address ---
     so, after the last datum was handled,
     incrementing the instruction address
     would make it overflow.
     The carry would add one to the
     operation code, changing it to the next one in the instruction set:
     a jump instruction.
     Sure enough, the next program instruction was
     in address location zero,
     and the program went happily on its way.

     I haven't kept in touch with Mel,
     so I don't know if he ever gave in to the flood of
     change that has washed over programming techniques
     since those long-gone days.
     I like to think he didn't.
     In any event,
     I was impressed enough that I quit looking for the
     offending test,
     telling the Big Boss I couldn't find it.
     He didn't seem surprised.

     When I left the company,
     the blackjack program would still cheat
     if you turned on the right sense switch,
     and I think that's how it should be.
     I didn't feel comfortable
     hacking up the code of a Real Programmer.

marți, 23 octombrie 2018

Programe si applicatii web pentru planificarea proiectelor

Am făcut o listă cu cele mai folosite și mai performante programe pentru planificarea  si controlul proiectelor:

1. GanttProject: instrument pentru crearea planului unui proiect
Fondată în 2003, GanttProject este unul dintre instrumentele cele mai  folosite de pe lista noastra. A trecut prin multe lansări în ultimii 15 ani, cel mai recent fiind în mai 2018 (GanttProject 2.8.8).

Puteți descărca GanttProject de la furnizor sau GitHub și SourceForge.

Este ideal pentru întreprinderile mici care au nevoie de capacități de planificare a proiectelor, de gestionare a resurselor și de gestionare a sarcinilor, dar care au, de asemenea, un personal IT care poate supraveghea punerea în aplicare și rezolvarea problemelor.

GanttProject este scris în Java (necesită Java RunTime) și este compatibil cu sistemele de operare Windows, OSX și Linux.

Capacitățile sale includ gestionarea sarcinilor, gestionarea resurselor și planificarea proiectelor, utilizând diagrame Gantt și diagrame PERT. Utilizatorii pot exporta date în .csv și pot genera rapoarte PDF sumare.

2. OpenProject: soluție robustă pentru managementul de proiectelor
OpenProject Community este o soluție robustă de management de proiect scrisă în Ruby on Rails și compatibilă cu sistemele de operare Linux.

Capabilitățile gratuite în comunitatea OpenProject includ gestionarea sarcinilor, urmărirea timpului, colaborarea în echipă, planificarea proiectelor utilizând diagramele Gantt, bugetarea și raportarea. De asemenea, sprijină managementul proiectelor Agile și oferă panouri de sarcini, backlog-uri, urmărirea bug-urilor și roadmapping.

Utilizatorii pot face upgrade la o licență plătită dacă doresc să utilizeze OpenProject în cloud sau ca o întreprindere. Planurile plătite oferă capacități suplimentare, inclusiv personalizarea, securitatea și suportul.

OpenProject a fost înființat în 2012 și pune în circulație noile versiuni cel puțin o dată pe lună, cel mai recent fiind în mai 2018 (OpenProject 7.4.5).

Puteți descărca sau achiziționa OpenProject direct de la furnizor sau descărcați și instalați de pe GitHub și SourceForge.

3.Asana este platforma de management a proiectelor pe care echipele o folosesc pentru a se concentra pe obiectivele, proiectele și sarcinile zilnice care îți dezvoltă afacerea.

4. Jira Software - Planificați, urmăriți și lansați software de clasă mondială cu instrumentul # 1 de dezvoltare software utilizat de echipe care folosesc conceptul Agile.

5. Microsoft Project - Simplificați managementul proiectelor, resurselor și portofoliului cu Microsoft Project, care va ajuta sa urmariți proiectele cu succes.

6. TeamGantt este soluția foarte faină care aduce software-ul de planificare a proiectului online. Acum puteți planifica și gestiona proiectele dvs. cu acest software de gantt ușor de utilizat. Invită colegii, colegii și prietenii să vă vadă și să editeze graficul dvs. TeamGantt este simplu și distractiv.

7. Redmine este o aplicație web flexibilă de gestionare a proiectelor. Scrisă utilizând cadrul Ruby on Rails, este o bază de date cross-platform și cross-database.

8. Wrike - Programul de colaborare bazat pe cloud și software-ul de management al proiectelor care se scaleaza pentru întreaga echipă în orice afacere.

9. Bitrix24 - Soluție intranet la cheie pentru companii mici și mijlocii, proiectată pentru o colaborare eficientă, comunicare, rețele sociale, proces de afaceri și managementul cunoștințelor. Permite o mai bună continuitate a cunoștințelor prin mutarea datelor din silozuri de rețea și unități locale într-un depozit centralizat bine protejat. Wikis, blogurile și forumurile asigură baze de cunoștințe bazate pe socialitate pentru îmbunătățirea muncii în echipă.

10. Targetprocess - este un instrument specializat de management al proiectelor care se pretează bine cadrelor de management agile de proiecte, cum ar fi panourile Kanban și Scrum. Instrumentul oferă funcționalități cum ar fi fluxurile de lucru personalizate, planificarea capacității echipei, urmărirea timpului și gestionarea problemelor.
Versiunea gratuită vă permite să creați până la 1.000 de proiecte și oferă suport de bază care include chat live și o bază de cunoștințe.







Programe si applicatii web pentru versionare

Am facut o lista cu cele mai folosite si mai performante programe pentru versionare si managementul proiectelor:

1. Git este un sistem de control al versiunii distribuit gratuit și open source proiectat să gestioneze totul, de la proiecte mici până la foarte mari, cu viteză și eficiență. Git este ușor de învățat și are o amprentă minusculă, cu performanță fulger. Acesta scoate în evidență instrumentele SCM precum Subversion, CVS, Perforce și ClearCase cu funcții cum ar fi ramificația locală ieftină, zonele de așteptare convenabile și mai multe fluxuri de lucru.

2. Mercurial SCM - Mercurial este un instrument gratuit de gestionare a sursei de control al surselor. Efectuează eficient proiecte de orice dimensiune și oferă o interfață ușoară și intuitivă.

3. Plastic SCM  este un sistem de control al versiunilor care vă va ajuta să dezvoltați noi caracteristici în paralel, să vă distribuiți, să îmbinați în timp și să nu stricati niciodată vreun build. Ideal pentru proiecte mari distribuite.

4. Helix Core este o platformă de control și colaborare pentru versiunea industrială care suportă fluxuri flexibile de lucru. Helix Core elimină complexitatea dezvoltării de produse pe scară largă și distribuită - permițându-vă să construiți mai rapid produse protejând în același timp IP-ul dvs.

5. Subversion este un sistem de control al versiunii open source. Fondată în 2000 de CollabNet, Inc., proiectul Subversion și software-ul au cunoscut un succes incredibil în ultimul deceniu. Subversion s-a bucurat și continuă să se bucure de adoptarea pe scară largă atât în arena open source, cât și în lumea corporațiilor.

6. AWS CodeCommit este un serviciu de control al surselor complet gestionat care găzduiește repositories securizate bazate pe Git. Ea facilitează colaborarea echipelor într-un ecosistem sigur și foarte scalabil. CodeCommit elimină necesitatea de a utiliza propriul sistem de control al surselor sau vă faceți griji în legătură cu scalarea infrastructurii sale. Aveți posibilitatea să utilizați CodeCommit pentru a stoca în siguranță orice de la codul sursă la fișiere binare și funcționează perfect cu instrumentele existente Git.

7. Kiln e un sistem de control al versiunilor bazat pe Git și Mercurial, care ofera găzduirea codului sursă utilizate de peste 20.000 de echipe de dezvoltare software pentru a-și gestiona codul, a îmbunătăți calitatea cu recenzii de cod, a organiza proiecte, a urmări schimbările și a colabora.

8. IBM Rational ClearCase este o soluție profesionala de gestionare a configurației software care oferă control al versiunii, gestionarea spațiului de lucru, suport pentru dezvoltare paralelă și construirea auditului.

9. AccuRev este un instrument de gestionare a configurației software care abordează medii complexe de dezvoltare paralelă și distribuită cu arhitectura bazată pe flux, pentru a accelera procesul de dezvoltare și pentru a îmbunătăți reutilizarea surselor.

10. ArX este un sistem de control al versiunii (VCS), cum ar fi CVS, Subversion sau arc GNU. Administrează "arhive" (colecții de fișiere), cum ar fi fișiere de cod sursă pentru un proiect software. Acesta urmărește istoricul fiecărui fișier, împreună cu schimbarea comentariilor, etichetelor de versiune, forks și sucursale etc. Poate stoca fișiere și documente de orice fel, dar cele mai mari beneficii sunt cu fișiere text, mai degrabă decât fișiere binare.


luni, 22 octombrie 2018

Casti bluetooth Sennheiser HD 4.50 BTNC cu Noise cancellation review

Descriere: Casti bluetooth Sennheiser HD 4.50 BTNC cu Active Noise-cancelling (tehnologia NoiseGard).
Mi-am cumpărat mai deunăzi niște căști super meseriașe facute de Sennheiser. Cred ca firma asta devine una din favoritele mele. Vreau să vă aduc la cunoștință că sunt geniale :D. Imaginează-ți gălăgie, hărmălaie, sunet de motoare de avion etc.., și le pui pe urechi și se face liniște. Sunetul este clar și puternic, si fara distorsiuni. Butoanele de control nu sunt prea inspirat pozitionate, dar dupa un timp te obisnuiesti cu ele. Conectarea cu smartphone-ul , laptopul si alte device-uri a fost foarte simplă (vezi in manual - primul link de mai jos). De exemplu pentru smartphone conectarea este super rapidă datorita tehnologiei NFC, doar le apropii să se cunoască și se împerechează instant :D. Căștile vin din fabrică cu un cablu audio, un cablu de încărcare și o borsetă foarte utilă. Sunt prevăzute cu pernițe foarte moi și confortabile, de fapt nici nu le simti pe urechi pentru că sunt si foarte ușoare, doar 238 g. Din punctul meu de vedere sunt o achiziție foarte bună și din perspectiva preț calitate. Recomand!

Documentatie:
Casti bluetooth Sennheiser HD 4.50 BTNC cu Noise-cancelling
Manual HD450 BTNC
Noise-cancelling_headphones
Active_noise_control
Ambient_noise_reduction


Sumarul specificațiilor tehnice:
Baterie: Li-ion Polymer
Codecs: AptX
Design pliabil
Functie Active Noise Cancelling (tehnologia NoiseGard)
Functie NFC pentru conectarea facila
Controlul pieselor si al apelurilor prin butonul de pe casti
Durata de viata a bateriei: pana la 25 de ore
Posibilitatea conectarii unui cablu
Doua Microfoane Omnidirectionale


Contact cu urechea: over ear
Impedanta nominala: 18 ohm
Raspuns in frecventa: 18 - 22,000 Hz
SPL: 113dB (Pasiv: 1kHz/1Vrms)
THD: <0.5% (1kHz/100dB)
Greutate: 238 g

Cum arată căștile pliate, nu cred ca au cel mai bun design de pliere , dar se potrivesc perfect in borsetă , iar borseta îi asigura o compactare și implicit intră foarte simplu in orice rucsac:
O descriere din avion despre tehnologia Noise-cancelling:
Cum se activeaza Noise Cancelling: