Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.
Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.
Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.
Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.
Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).
OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.
Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.
R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.
IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.
Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.
#!/bin/bash cert="server.crt" key="server.key" cat >/etc/openvpn/server.conf <<EOF proto udp dev tun port 1194 ca ca.crt cert $cert key $key EOF systemctl restart openvpnOtázkou je, zda to je opravdu dobrý nápad a nešlo by to nějak lépe a jednodušeji.
sed '23s/.*/#&/' /etc/openvpn/server.conf && service openvpn restart &
Je jasne, ze zmeny v tomto confe a restart sluzby moze robit len rootsudo
ale zatial neviem ako pridat do urciteho riadku "#" resp. ako editovat konkretny riadoksed -ire "s/^(řádek)$/#\1/"
+ nejaky sleepProč?
$ line=`cat -n /etc/openvpn/server.conf|grep "search text"|awk '{print $1}'` $ echo "je na riadku: $riadok"
$ chmod 700 comment_and_restart uncomment_and_restartSpustenie:
$ ./comment_and_restart
$ ./uncomment_and_restartSubor service.conf
id=persone name=Unknow last_name=LASTSubor config.php
<?php $path_conf="service.conf"; $search="name=Unknow"; ?>Subor comment_and_restart
#!/usr/bin/php <?php include "config.php"; function comment_in_file($path, $search) { /* * Read file */ /* read file as "C array" */ $file=@file($path); if($file === false) { fputs(STDERR, "Error open/read file '$path'\n"); exit(1); } // print_r($file); // vypis na overenie /* * Comming in memory */ $count=count($file); for($a=0;$a<$count; $a++) if(strpos($file[$a], $search) !== false) { if($file[$a][0] != "#") $file[$a]= "#".$file[$a]; else fputs(STDERR, "Warning: Uncomment line $a in '$path'\n"); // break; # uncomment this, if only first searched line } /* * Write from memory to file */ if(file_put_contents($path, $file) === false) { fputs(STDERR, "Error open/write file '$path'\n"); exit(1); } } comment_in_file($path_conf, $search); sleep(2); system("systemctl restart openvpn"); ?>Subor uncomment_and_restart
#!/usr/bin/php <?php include "config.php"; function uncomment_in_file($path, $search) { /* * Read file */ /* nacita pole ako "C array" */ $file=@file($path); if($file === false) { fputs(STDERR, "Error open/read file '$path'\n"); exit(1); } // print_r($file); // vypis na overenie /* * Uncomment in memory */ $count=count($file); for($a=0;$a<$count; $a++) if(strpos($file[$a], $search) !== false) { if($file[$a][0] == "#") $file[$a]= substr($file[$a], 1); else fputs(STDERR, "Warning: Uncomment line $a in '$path'\n"); // break; # uncomment this, if only first searched line } /* * Write from memory to file */ if(file_put_contents($path, $file) === false) { fputs(STDERR, "Error open/write file '$path'\n"); exit(1); } } uncomment_in_file($path_conf, $search) sleep(2); system("systemctl restart openvpn"); ?>
PHP není C, proto je generování chybových hlášek zbytečné a ty zavináče před file() takéNie je. Ale je s nim dost podobny. ... Da sa aj povedal "super C" (pokial viete C). ... A ano. Pouzil som tento pristup, lebo je najlahsi na pochopenie. Pre nezainteresovaneho.
oužíváš cyklus for tam, kde patří foreach - soubor není pole řádek, ale seznam řádekAj tak interne sa musi pouzit nejake for. Jednoduchost. A ulahcuje mi to zmenu riadku. Lebo napr. toto nefunguje:
<?php $array=array("1","2","3","4"); foreach($array as $line) if($line == "3") { echo "set 'X' for value '$line'\n"; $line="X"; } print_r($array); ?>vystup:
set 'X' for value '3' Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )Vdaka za konstr. kritiku.
Máš to rozstrkané ve třech souborech, přitom by stačil jeden parametrizovanýPre jednoduchost. ... Logicku funkcnost si moze sam dat do 1 suboru, alebo napisat. Lahsie napisat "./bla" ako "./rob bla".
Zapomínáš psát složené závorky. Je to sice jen kosmetická vada, ale časem se ti to vymstíAk je 1 podmienka, nepisem ju - moj programatorsky styl.
foreach ($array as &$line)
se už bude chovat správně. Jenže když to chceš mít rychlejší, tak je obvykle výhodnější generovat nový seznam.
<?php $array = array("1", "2", "3", "4"); $output = array(); foreach ($array as $line) { if ($line == "3") { $line="X"; } $output[] = $line; } print_r($output);Jenže PHP umí jít ještě dále:
<?php $array = array("1", "2", "3", "4"); $komentuj = function ($line) { return ($line == "3") ? "X" : $line; }; print_r(array_map($komentuj, $array));
sed -i -e ' /#NastaveniKtereChciMenit/ s/No/Yes/ /#NastaveniKtereChciMenit/ s/^#// /^NastaveniKtereChciTakyMenit/ s/^/#/ /^DalsiNastaveniKtereChciMenit/ s/bila/cerna/ ' /etc/MojeSluzba/konfigurak
Tiskni Sdílej: