Od soboty do úterý probíhá v Hamburku konference 39C3 (Chaos Communication Congress) věnovaná také počítačové bezpečnosti nebo hardwaru. Program (jiná verze) slibuje řadu zajímavých přednášek. Streamy a záznamy budou k dispozici na media.ccc.de.
Byl představen nový Xserver Phoenix, kompletně od nuly vyvíjený v programovacím jazyce Zig. Projekt Phoenix si klade za cíl být moderní alternativou k X.Org serveru.
XLibre Xserver byl 21. prosince vydán ve verzi 25.1.0, 'winter solstice release'. Od založení tohoto forku X.Org serveru se jedná o vůbec první novou minor verzi (inkrementovalo se to druhé číslo v číselném kódu verze).
Wayback byl vydán ve verzi 0.3. Wayback je "tak akorát Waylandu, aby fungoval Xwayland". Jedná se o kompatibilní vrstvu umožňující běh plnohodnotných X11 desktopových prostředí s využitím komponent z Waylandu. Cílem je nakonec nahradit klasický server X.Org, a tím snížit zátěž údržby aplikací X11.
Byla vydána verze 4.0.0 programovacího jazyka Ruby (Wikipedie). S Ruby Box a ZJIT. Ruby lze vyzkoušet na webové stránce TryRuby. U příležitosti 30. narozenin, první veřejná verze Ruby 0.95 byla oznámena 21. prosince 1995, proběhl redesign webových stránek.
Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.
Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.
Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.
Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.
Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.
#!/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: