D7VK byl vydán ve verzi 1.2. Jedná se o fork DXVK implementující překlad volání Direct3D 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.
Byla vydána verze 12.0.0 knihovny libvirt (Wikipedie) zastřešující různé virtualizační technologie a vytvářející jednotné rozhraní pro správu virtuálních strojů. Současně byl ve verzi 12.0.0 vydán související modul pro Python libvirt-python. Přehled novinek v poznámkách k vydání.
CreepyLink.com je nový zkracovač URL adres, 'díky kterému budou vaše odkazy vypadat tak podezřele, jak je to jen možné'. Například odkaz na abclinuxu.cz tento zkracovač převádí do podoby 'https://netflix.web-safe.link/logger_8oIlgs_free_money.php'. Dle prohlášení autora je CreepyLink alternativou ke zkracovači ShadyURL (repozitář na githubu), který dnes již bohužel není v provozu.
Na blogu Raspberry Pi byla představena rozšiřující deska Raspberry Pi AI HAT+ 2 s akcelerátorem Hailo-10 a 8 GB RAM. Na rozdíl od předchozí Raspberry Pi AI HAT+ podporuje generativní AI. Cena desky je 130 dolarů.
Wikipedie slaví 25. výročí svého založení. Vznikla 15. ledna 2001 jako doplňkový projekt k dnes již neexistující encyklopedii Nupedia. Doména wikipedia.org byla zaregistrována 12. ledna 2001. Zítra proběhne v Praze Večer svobodné kultury, který pořádá spolek Wikimedia ČR.
Po více než dvou letech od vydání předchozí verze 2.12 byla vydána nová stabilní verze 2.14 systémového zavaděče GNU GRUB (GRand Unified Bootloader, Wikipedie). Přehled novinek v souboru NEWS a v aktualizované dokumentaci.
Google Chrome 144 byl prohlášen za stabilní. Nejnovější stabilní verze 144.0.7559.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 10 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře (YouTube).
Microsoft zveřejnil zdrojový kód XAML Studia a uvolnil ho pod MIT licencí. XAML Studio je nástroj ze světa Windows, určený pro tvorbu uživatelského rozhraní aplikací pomocí XAML (Extensible Application Markup Language). Stalo se tak zhruba po osmi letech od prvního prohlášení Microsoftu, že se tento kód chystá zveřejnit.
TimeCapsule, 'časová kapsle', je jazykový model trénovaný výhradně na datech z určitých míst a časových období, aby se tak napodobila autentická slovní zásoba, způsob vyjadřování a názory dané doby. Na Hugging face jsou k dispozici modely natrénované na historických textech dostupných v oblasti Londýna mezi lety 1800 až 1875.
Radicle byl vydán ve verzi 1.6.0 s kódovým jménem Amaryllis. Jedná se o distribuovanou alternativu k softwarům pro spolupráci jako např. GitLab.
#!/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.
Neni v tom problem, je to robota vsude vseho na 1-2 minutky, ale chcel som si to este ulahcit (a potrebujem to spravit raz za 2-3 mesiace). Urcite by to bolo pohodlnejsie spustenim skriptu, ale ak to nebude cez skript, tak svet sa nezruti :) + chcel som zistit (naucit sa) ako editovat nejaky config cez skript s root pravami.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: