Společnost Volla Systeme stojící za telefony Volla spustila na Kickstarteru kampaň na podporu tabletu Volla Tablet s Volla OS nebo Ubuntu Touch.
Společnost Boston Dynamics oznámila, že humanoidní hydraulický robot HD Atlas šel do důchodu (YouTube). Nastupuje nová vylepšená elektrická varianta (YouTube).
Desktopové prostředí LXQt (Lightweight Qt Desktop Environment, Wikipedie) vzniklé sloučením projektů Razor-qt a LXDE bylo vydáno ve verzi 2.0.0. Přehled novinek v poznámkách k vydání.
Nejvyšší soud podpořil novináře Českého rozhlasu. Nařídil otevřít spor o uchovávání údajů o komunikaci (data retention). Uvedl, že stát odpovídá za porušení práva EU, pokud neprovede řádnou transpozici příslušné směrnice do vnitrostátního práva.
Minulý týden proběhl u CZ.NIC veřejný test aukcí domén. Včera bylo publikováno vyhodnocení a hlavní výstupy tohoto testu.
Byla vydána nová verze 3.5.0 svobodné implementace protokolu RDP (Remote Desktop Protocol) a RDP klienta FreeRDP. Přehled novinek v ChangeLogu. Opraveno bylo 6 bezpečnostních chyb (CVE-2024-32039, CVE-2024-32040, CVE-2024-32041, CVE-2024-32458, CVE-2024-32459 a CVE-2024-32460).
Google Chrome 124 byl prohlášen za stabilní. Nejnovější stabilní verze 124.0.6367.60 přináší řadu oprav a vylepšení (YouTube). Podrobný přehled v poznámkách k vydání. Opraveno bylo 22 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Byla vydána nová verze 9.3 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Novinkou je vlastní repozitář DietPi APT.
Byl vydán Mozilla Firefox 125.0.1, první verze z nové řady 125. Přehled novinek v poznámkách k vydání, poznámkách k vydání pro firmy a na stránce věnované vývojářům. Vypíchnout lze podporu kodeku AV1 v Encrypted Media Extensions (EME). Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 125.0.1 je již k dispozici také na Flathubu a Snapcraftu.
Valkey, tj. svobodný fork již nesvobodného Redisu, byl vydán v první stabilní verzi 7.2.5.
Google světu ukázal jazyk Dart, jehož účelem je nahradit JavaScript ve webových aplikacích. Veškeré informace a ukázky najdete na dartlang.org. Jazyk se dost podobá Javě, ale zachovává některé rysy JavaScriptu.
Tiskni Sdílej:
Rozšiřitelnost není znásilňování.knihovna od zakladu prekopavajici cely jazyk za ucelem, aby se dal ten jazyk pouzivat k tomu, k cemu byl vubec navrzeny mi prijde opravdu trochu jako zvracenost a znasilneni
Jo, a největší prča na tom je, že ta knihovna nemění vůbec nic.to jo. mimochodem, osobne radsi preferuju dojo, prijde mi takove nejake civilizovanejsi.
Čekal bych, že zrovna ty budeš mít trochu pochopení, v JavaScriptu je pod pár vrstvami špíny a hnusu ukryté Scheme, které by mohly pochopit i masyano, jedna cast meho ja ocenuje, ze tam je opravdu schovany scheme, a ze JS zpristupnuje funkcionalni zpusob programovani i sirokym masam. ale ta druha cast meho ja, ktera v tom obcas musi neco programovat by autory specifikace i s implementatory vymachala v dehtu a peri a hnala je pres cele silicon valley.
Hello world v haxe zkompilovaný do JavaScriptu:
haxeimport js.Lib; class Main { static function main() { Lib.alert("ahoj světe"); } }javascript
$estr = function() { return js.Boot.__string_rec(this,''); } Std = function() { } Std.__name__ = ["Std"]; Std["is"] = function(v,t) { $s.push("Std::is"); var $spos = $s.length; var $tmp = js.Boot.__instanceof(v,t); $s.pop(); return $tmp; $s.pop(); } Std.string = function(s) { $s.push("Std::string"); var $spos = $s.length; var $tmp = js.Boot.__string_rec(s,""); $s.pop(); return $tmp; $s.pop(); } Std["int"] = function(x) { $s.push("Std::int"); var $spos = $s.length; if(x < 0) { var $tmp = Math.ceil(x); $s.pop(); return $tmp; } var $tmp = Math.floor(x); $s.pop(); return $tmp; $s.pop(); } Std.parseInt = function(x) { $s.push("Std::parseInt"); var $spos = $s.length; var v = parseInt(x,10); if(v == 0 && x.charCodeAt(1) == 120) v = parseInt(x); if(isNaN(v)) { $s.pop(); return null; } var $tmp = v; $s.pop(); return $tmp; $s.pop(); } Std.parseFloat = function(x) { $s.push("Std::parseFloat"); var $spos = $s.length; var $tmp = parseFloat(x); $s.pop(); return $tmp; $s.pop(); } Std.random = function(x) { $s.push("Std::random"); var $spos = $s.length; var $tmp = Math.floor(Math.random() * x); $s.pop(); return $tmp; $s.pop(); } Std.prototype.__class__ = Std; IntIter = function(min,max) { if( min === $_ ) return; $s.push("IntIter::new"); var $spos = $s.length; this.min = min; this.max = max; $s.pop(); } IntIter.__name__ = ["IntIter"]; IntIter.prototype.min = null; IntIter.prototype.max = null; IntIter.prototype.hasNext = function() { $s.push("IntIter::hasNext"); var $spos = $s.length; var $tmp = this.min < this.max; $s.pop(); return $tmp; $s.pop(); } IntIter.prototype.next = function() { $s.push("IntIter::next"); var $spos = $s.length; var $tmp = this.min++; $s.pop(); return $tmp; $s.pop(); } IntIter.prototype.__class__ = IntIter; Main = function() { } Main.__name__ = ["Main"]; Main.main = function() { $s.push("Main::main"); var $spos = $s.length; js.Lib.alert("ahoj světe"); $s.pop(); } Main.prototype.__class__ = Main; if(typeof js=='undefined') js = {} js.Lib = function() { } js.Lib.__name__ = ["js","Lib"]; js.Lib.isIE = null; js.Lib.isOpera = null; js.Lib.document = null; js.Lib.window = null; js.Lib.alert = function(v) { $s.push("js.Lib::alert"); var $spos = $s.length; alert(js.Boot.__string_rec(v,"")); $s.pop(); } js.Lib.eval = function(code) { $s.push("js.Lib::eval"); var $spos = $s.length; var $tmp = eval(code); $s.pop(); return $tmp; $s.pop(); } js.Lib.setErrorHandler = function(f) { $s.push("js.Lib::setErrorHandler"); var $spos = $s.length; js.Lib.onerror = f; $s.pop(); } js.Lib.prototype.__class__ = js.Lib; js.Boot = function() { } js.Boot.__name__ = ["js","Boot"]; js.Boot.__unhtml = function(s) { $s.push("js.Boot::__unhtml"); var $spos = $s.length; var $tmp = s.split("&").join("&").split("<").join("<").split(">").join(">"); $s.pop(); return $tmp; $s.pop(); } js.Boot.__trace = function(v,i) { $s.push("js.Boot::__trace"); var $spos = $s.length; var msg = i != null?i.fileName + ":" + i.lineNumber + ": ":""; msg += js.Boot.__unhtml(js.Boot.__string_rec(v,"")) + "<br/>"; var d = document.getElementById("haxe:trace"); if(d == null) alert("No haxe:trace element defined\n" + msg); else d.innerHTML += msg; $s.pop(); } js.Boot.__clear_trace = function() { $s.push("js.Boot::__clear_trace"); var $spos = $s.length; var d = document.getElementById("haxe:trace"); if(d != null) d.innerHTML = ""; $s.pop(); } js.Boot.__closure = function(o,f) { $s.push("js.Boot::__closure"); var $spos = $s.length; var m = o[f]; if(m == null) { $s.pop(); return null; } var f1 = function() { $s.push("js.Boot::__closure@67"); var $spos = $s.length; var $tmp = m.apply(o,arguments); $s.pop(); return $tmp; $s.pop(); }; f1.scope = o; f1.method = m; $s.pop(); return f1; $s.pop(); } js.Boot.__string_rec = function(o,s) { $s.push("js.Boot::__string_rec"); var $spos = $s.length; if(o == null) { $s.pop(); return "null"; } if(s.length >= 5) { $s.pop(); return "<...>"; } var t = typeof(o); if(t == "function" && (o.__name__ != null || o.__ename__ != null)) t = "object"; switch(t) { case "object": if(o instanceof Array) { if(o.__enum__ != null) { if(o.length == 2) { var $tmp = o[0]; $s.pop(); return $tmp; } var str = o[0] + "("; s += "\t"; var _g1 = 2, _g = o.length; while(_g1 < _g) { var i = _g1++; if(i != 2) str += "," + js.Boot.__string_rec(o[i],s); else str += js.Boot.__string_rec(o[i],s); } var $tmp = str + ")"; $s.pop(); return $tmp; } var l = o.length; var i; var str = "["; s += "\t"; var _g = 0; while(_g < l) { var i1 = _g++; str += (i1 > 0?",":"") + js.Boot.__string_rec(o[i1],s); } str += "]"; $s.pop(); return str; } var tostr; try { tostr = o.toString; } catch( e ) { $e = []; while($s.length >= $spos) $e.unshift($s.pop()); $s.push($e[0]); $s.pop(); return "???"; } if(tostr != null && tostr != Object.toString) { var s2 = o.toString(); if(s2 != "[object Object]") { $s.pop(); return s2; } } var k = null; var str = "{\n"; s += "\t"; var hasp = o.hasOwnProperty != null; for( var k in o ) { ; if(hasp && !o.hasOwnProperty(k)) { continue; } if(k == "prototype" || k == "__class__" || k == "__super__" || k == "__interfaces__") { continue; } if(str.length != 2) str += ", \n"; str += s + k + " : " + js.Boot.__string_rec(o[k],s); } s = s.substring(1); str += "\n" + s + "}"; $s.pop(); return str; case "function": $s.pop(); return "<function>"; case "string": $s.pop(); return o; default: var $tmp = String(o); $s.pop(); return $tmp; } $s.pop(); } js.Boot.__interfLoop = function(cc,cl) { $s.push("js.Boot::__interfLoop"); var $spos = $s.length; if(cc == null) { $s.pop(); return false; } if(cc == cl) { $s.pop(); return true; } var intf = cc.__interfaces__; if(intf != null) { var _g1 = 0, _g = intf.length; while(_g1 < _g) { var i = _g1++; var i1 = intf[i]; if(i1 == cl || js.Boot.__interfLoop(i1,cl)) { $s.pop(); return true; } } } var $tmp = js.Boot.__interfLoop(cc.__super__,cl); $s.pop(); return $tmp; $s.pop(); } js.Boot.__instanceof = function(o,cl) { $s.push("js.Boot::__instanceof"); var $spos = $s.length; try { if(o instanceof cl) { if(cl == Array) { var $tmp = o.__enum__ == null; $s.pop(); return $tmp; } $s.pop(); return true; } if(js.Boot.__interfLoop(o.__class__,cl)) { $s.pop(); return true; } } catch( e ) { $e = []; while($s.length >= $spos) $e.unshift($s.pop()); $s.push($e[0]); if(cl == null) { $s.pop(); return false; } } switch(cl) { case Int: var $tmp = Math.ceil(o%2147483648.0) === o; $s.pop(); return $tmp; case Float: var $tmp = typeof(o) == "number"; $s.pop(); return $tmp; case Bool: var $tmp = o === true || o === false; $s.pop(); return $tmp; case String: var $tmp = typeof(o) == "string"; $s.pop(); return $tmp; case Dynamic: $s.pop(); return true; default: if(o == null) { $s.pop(); return false; } var $tmp = o.__enum__ == cl || cl == Class && o.__name__ != null || cl == Enum && o.__ename__ != null; $s.pop(); return $tmp; } $s.pop(); } js.Boot.__init = function() { $s.push("js.Boot::__init"); var $spos = $s.length; js.Lib.isIE = typeof document!='undefined' && document.all != null && typeof window!='undefined' && window.opera == null; js.Lib.isOpera = typeof window!='undefined' && window.opera != null; Array.prototype.copy = Array.prototype.slice; Array.prototype.insert = function(i,x) { $s.push("js.Boot::__init@205"); var $spos = $s.length; this.splice(i,0,x); $s.pop(); }; Array.prototype.remove = Array.prototype.indexOf?function(obj) { $s.push("js.Boot::__init@208"); var $spos = $s.length; var idx = this.indexOf(obj); if(idx == -1) { $s.pop(); return false; } this.splice(idx,1); $s.pop(); return true; $s.pop(); }:function(obj) { $s.push("js.Boot::__init@213"); var $spos = $s.length; var i = 0; var l = this.length; while(i < l) { if(this[i] == obj) { this.splice(i,1); $s.pop(); return true; } i++; } $s.pop(); return false; $s.pop(); }; Array.prototype.iterator = function() { $s.push("js.Boot::__init@225"); var $spos = $s.length; var $tmp = { cur : 0, arr : this, hasNext : function() { $s.push("js.Boot::__init@225@229"); var $spos = $s.length; var $tmp = this.cur < this.arr.length; $s.pop(); return $tmp; $s.pop(); }, next : function() { $s.push("js.Boot::__init@225@232"); var $spos = $s.length; var $tmp = this.arr[this.cur++]; $s.pop(); return $tmp; $s.pop(); }}; $s.pop(); return $tmp; $s.pop(); }; if(String.prototype.cca == null) String.prototype.cca = String.prototype.charCodeAt; String.prototype.charCodeAt = function(i) { $s.push("js.Boot::__init@239"); var $spos = $s.length; var x = this.cca(i); if(x != x) { $s.pop(); return null; } $s.pop(); return x; $s.pop(); }; var oldsub = String.prototype.substr; String.prototype.substr = function(pos,len) { $s.push("js.Boot::__init@246"); var $spos = $s.length; if(pos != null && pos != 0 && len != null && len < 0) { $s.pop(); return ""; } if(len == null) len = this.length; if(pos < 0) { pos = this.length + pos; if(pos < 0) pos = 0; } else if(len < 0) len = this.length + len - pos; var $tmp = oldsub.apply(this,[pos,len]); $s.pop(); return $tmp; $s.pop(); }; $closure = js.Boot.__closure; $s.pop(); } js.Boot.prototype.__class__ = js.Boot; $_ = {} js.Boot.__res = {} $s = []; $e = []; js.Boot.__init(); { String.prototype.__class__ = String; String.__name__ = ["String"]; Array.prototype.__class__ = Array; Array.__name__ = ["Array"]; Int = { __name__ : ["Int"]}; Dynamic = { __name__ : ["Dynamic"]}; Float = Number; Float.__name__ = ["Float"]; Bool = { __ename__ : ["Bool"]}; Class = { __name__ : ["Class"]}; Enum = { }; Void = { __ename__ : ["Void"]}; } { Math.__name__ = ["Math"]; Math.NaN = Number["NaN"]; Math.NEGATIVE_INFINITY = Number["NEGATIVE_INFINITY"]; Math.POSITIVE_INFINITY = Number["POSITIVE_INFINITY"]; Math.isFinite = function(i) { $s.push("js.Boot::__init"); var $spos = $s.length; var $tmp = isFinite(i); $s.pop(); return $tmp; $s.pop(); }; Math.isNaN = function(i) { $s.push("js.Boot::__init"); var $spos = $s.length; var $tmp = isNaN(i); $s.pop(); return $tmp; $s.pop(); }; } { js.Lib.document = document; js.Lib.window = window; onerror = function(msg,url,line) { var stack = $s.copy(); var f = js.Lib.onerror; $s.splice(0,$s.length); if( f == null ) { var i = stack.length; var s = ""; while( --i >= 0 ) s += "Called from "+stack[i]+"\n"; alert(msg+"\n\n"+s); return false; } return f(msg,stack); } } js.Lib.onerror = null; Main.main()