Почему на официальном сайте PostgreSQL находится документ выставляющий PostgreSQL в самом невыгодном свете и при этом восхваляющий Oracle? И почему там товарный знак оракла на каждой странице?
https://www.postgresql.org/message-id/attachment/43080/PostgreSQL_Oracle.pdf
Уважаемые знатоки! При синхронизации базы данных MyTetra *.xml c github указывает на ошибку - error converting to DOM, parse error at line 401, column 2: error occurred while parsing content.
Как исправить? (ОС Ubuntu 16.04)
Есть ноут Acer a315-41G на ryzen 5 2500 c Vega8. Стоит Ubuntu 18.04 подключен ppa padoka, vainfo выдает вот это:
libva info: VA-API version 1.1.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_1
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.1 (libva 2.1.0)
vainfo: Driver version: Mesa Gallium driver 19.3.0-devel - padoka PPA for AMD RAVEN (DRM 3.27.0, 5.0.0-32-generic, LLVM 10.0.0)
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile2 : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
В Chrome все включено, chrome://gpu выдает
Canvas: Hardware accelerated
Flash: Hardware accelerated
Flash Stage3D: Hardware accelerated
Flash Stage3D Baseline profile: Hardware accelerated
Compositing: Hardware accelerated
Multiple Raster Threads: Enabled
Out-of-process Rasterization: Hardware accelerated
Hardware Protected Video Decode: Hardware accelerated
Rasterization: Hardware accelerated
Skia Renderer: Enabled
Video Decode: Hardware accelerated
Viz Display Compositor: Enabled
Viz Hit-test Surface Layer: Enabled
WebGL: Hardware accelerated
WebGL2: Hardware accelerated
Но что я ни делал ни ютуб ни твитч не используют аппаратное декодирование видео, chrome://media-internals для них выдает
video_decoder FFmpegVideoDecoder
Я уже перечитал все статьи, пробовал патченный chromium, ничего не помогает. Кто-то смог это побороть?
Здравствуй, ЛОР. Хотелось бы услышать от людей, что крутятся в сфере разработки, как это все должно происходить?
Интересует именно вхождение в профессию. Например, устраиваясь на нынешнюю работу (очень далёкую от АйТи), я пришел полным нулём, меня быстро обучили и сейчас работаю на вполне хорошем уровне знаний.
А что же нужно для того, чтобы устроиться в сфере программистом ? Быть может в СПб даже кто взял бы меня в стажёры?
Прошу прощения за сумбур, просто вопросов миллион, искал за какую мысль зацепиться.
Подскажите пожалуйста, как выдать права пользователю на шару подключенную по sshfs, что-то в гугле не могу найти.
Суть вопроса
Есть панель управления хостингом на CentOS, которая автоматически, при создании нового сайта создает пользователя от имени которого все выполняется, допустим пусть будет lor и создает папку - /home/lor/sites/example.ru
Появилась необходимость перенести эту папку на внешнее хранилище (NAS), чтобы «сайт» работал с него, при этом конфиги трогать нельзя.
До меня дошло только то, что можно эту папку примонтировать.
sshfs -o nonempty [email protected]:/lor/ /home/lor/sites/example.ru/
В этом случае файловый менеджер панели видит содержимое на NAS, а nginx при попытке захода на example.ru явит 404 ошибку.
Пыталась назначить права на папку через chown, но ошибка
chown: changing ownership of ‘/home/lor/sites/example.ru/’: Permission denied
Пролюбила весь день, но с места не сдвинулась.
В общем может кто сталкивался с подобной задачей - как примонтировать папку по sshfs, выдать не нее права пользователю (права должны быть и у панели и у пользователя), а еще потом права на файлы раздать. Или может есть более элегантное решение?
Есть api метод, в нем к примеру есть 2 эксепшна с возвратом 202 ответа, либо 2 ответа с 200м, так вот как правильно обрабатывать такие ситуации? В плане документации к примеру?
Заставить их регистрироваться на сайте.
Создать сайт без https http://xn--b1afankxqj2c.xn--p1ai/index.php/registratsiya
Спермбанк мобильный не спермбанчит. При входе отваливается, говорит либо, что интернет не интернетит (хотя с этим все нормально), либо просто неопределенная ошибка.
Сделал снапшот лвм раздела debian-lvm-snap. После некоторых изменений решил откатить lvconvert --merge /dev/lvm/debian-lvm-snap. Но он так медленно его обединял, что я прервал процесс:
lvm/debian-lvm: Merged: 87,45%
lvm/debian-lvm: Merged: 87,46%
^C Interrupted...
Giving up waiting for lock.
Can't get lock for lvm
Can't reread VG for lvm/debian-lvm
debian-lvm-snap - пропал из разделов. debian-lvm цел, я его примонтеровал, данные на месте, только вопрос какие могут быть последствия?
С каких пор слова кал и говно стали не цензурными?
просто их кал не конкретно-способен и для такси с едой все используют кал яндекса. Вот и решили запихать свои говно-сервисы в своё единственное успешное приложение, чтобы у людей не было возможность выбирать сорта говна, а чтобы жрали сразу все с лопаты
или я задел чувства мейл/Яндекс фанатика?
Всем салют.
У меня есть бегущая строка из светодиодов, взаимодействие происходит
через плату, все это китайское конечно (тему уже создавал).
Для нее есть тулза (одна) - Плеер: задать нужные параметры и наслаждаться. Возможности довольно широки но требуется автоматизация, иначе никак.
В доментах что я находил, ни слова об этом нет.
Оборудование я поменять не могу (приобретено клиентом и уже смонтировано).
Я снифал протокол но он слишком сложный: пакетов много, попытки «притвориться» плеером результата не дают.
Подскажите, хотяб, что-то удобнее Вайршарка для этого дела.
Пока пытаюсь анализировать протокол через сравнение цепочек Вайршарка, но слишком много мусора.
Данные как бинарные так и XML.
Может я просто чего-то не знаю?
Поставил pidgin-whatsapp плагин для пиджина, а учётная запись ватсаппа спрашивает у меня логин и пароль. Какие ещё логин и пароль, где их брать то? Кто знает?
нужно понимать на каком из них возникли события и или читать/писать или закрывать все. это такое спец прокси.
вопрос: как это реализовать на golang? как тут проще и стандартней всего заюзать select/poll/epoll?
Есть проект https://github.com/leo-project/leofs
Не удается установить LeoFS Storage System на несколько нод через их официальный ansible playbook https://github.com/leo-project/leofs_ansible/issues/4
Есть вот такая немного запутанная инструкция
https://leo-project.net/leofs/docs/admin/system_admin/multiple_nodes/
Нужно написать инструкцию по настройке кластера LeoFS Storage System на несколько нод для S3 для CentOS 7.
Заказ тут https://freelansim.ru/tasks/274743
Продолжая свой рассказ о безопасности операционных систем семейства Linux, сегодня мы поговорим о том как выполняется установка Dr Web Linux на примере Ubuntu. Казалось бы, для этой ОС не должно существовать вирусов, однако, в силу стремительно растущей популярности продукта от Canonical Ltd. и Linux в целом, злоумышленники начали разрабатывать вредоносное программное обеспечение и для нее. Далее переходим непосредственно к процессу инсталляции нашего антивируса. Для наглядности процесса мы поделим его на несколько основных этапов. Как установить Dr Web на Ubuntu Шаг 1. Добавление репозитория Программное обеспечение компании Доктор Веб для Linux находится в специальном репозитории разработчиков. Когда мы добавим его в
Запись Как установить Dr.Web в Ubuntu впервые появилась Losst.
https://midnight-commander.org/ticket/3165
Интересно, почему этот патч не приняли?
Я его адаптировал для современной версии mc:
diff -rU 3 a/lib/util.c b/lib/util.c
--- a/lib/util.c 2019-10-13 18:40:47.000000000 +0000
+++ b/lib/util.c 2019-11-08 14:56:06.000000000 +0000
@@ -415,7 +415,8 @@
*/
void
-size_trunc_len (char *buffer, unsigned int len, uintmax_t size, int units, gboolean use_si)
+size_trunc_len (char *buffer, unsigned int len, uintmax_t size, int units, gboolean use_si,
+ gboolean human_readable)
{
/* Avoid taking power for every file. */
/* *INDENT-OFF* */
@@ -456,6 +457,8 @@
static const char *const suffix_lc[] = { "", "k", "m", "g", "t", "p", "e", "z", "y", NULL };
const char *const *sfx = use_si ? suffix_lc : suffix;
+ unsigned base = use_si ? 1000 : 1024;
+ unsigned human_digits;
int j = 0;
if (len == 0)
@@ -486,6 +489,9 @@
size += size_remain; /* Re-add remainder lost by division/multiplication */
}
+ if (human_readable && len < 5)
+ human_readable = FALSE; /* Human readable form needs 5 characters */
+
for (j = units; sfx[j] != NULL; j++)
{
if (size == 0)
@@ -503,11 +509,28 @@
break;
}
- if (size < power10[len - (j > 0 ? 1 : 0)])
+#define DIV_ROUND(a, b) (((a) + ((b)/2))/(b))
+ if ((!human_readable && size < power10[len - (j > 0 ? 1 : 0)]) ||
+ (human_readable && size < 1000))
+ {
+ g_snprintf (buffer, len + 1, "%" PRIuMAX "%s", size, sfx[j]);
+ break;
+ }
+ else if (human_readable && DIV_ROUND (size, 10) < base && sfx[j + 1])
+ {
+ human_digits = DIV_ROUND (size, 10) * 1000 / base; /* 0 - 999 */
+ g_snprintf (buffer, len + 1, "%u.%02u%s",
+ human_digits / 100, human_digits % 100, sfx[j + 1]);
+ break;
+ }
+ else if (human_readable && DIV_ROUND (size, 100) < base && sfx[j + 1])
{
- g_snprintf (buffer, len + 1, "%" PRIuMAX "%s", size, sfx[j]);
+ human_digits = DIV_ROUND (size, 100) * 1000 / base; /* 0 - 999 */
+ g_snprintf (buffer, len + 1, "%u.%01u%s",
+ human_digits / 10, human_digits % 10, sfx[j + 1]);
break;
}
+#undef DIV_ROUND
/* Powers of 1000 or 1024, with rounding. */
if (use_si)
diff -rU 3 a/lib/util.h b/lib/util.h
--- a/lib/util.h 2019-10-13 18:40:47.000000000 +0000
+++ b/lib/util.h 2019-11-08 14:57:06.000000000 +0000
@@ -154,7 +154,7 @@
* not including trailing 0. BUFFER should be at least LEN+1 long.
*
* Units: size units (0=bytes, 1=Kbytes, 2=Mbytes, etc.) */
-void size_trunc_len (char *buffer, unsigned int len, uintmax_t size, int units, gboolean use_si);
+void size_trunc_len (char *buffer, unsigned int len, uintmax_t size, int units, gboolean use_si, gboolean human_readable);
const char *string_perm (mode_t mode_bits);
const char *extension (const char *);
diff -rU 3 a/src/filemanager/boxes.c b/src/filemanager/boxes.c
--- a/src/filemanager/boxes.c 2019-10-13 18:40:47.000000000 +0000
+++ b/src/filemanager/boxes.c 2019-11-08 14:57:59.000000000 +0000
@@ -646,6 +646,7 @@
QUICK_START_GROUPBOX (N_("Main options"
),
QUICK_CHECKBOX (N_("Show mi&ni-status"
, &panels_options.show_mini_info, NULL),
QUICK_CHECKBOX (N_("Use SI si&ze units"
, &panels_options.kilobyte_si, NULL),
+ QUICK_CHECKBOX (N_("Human readable &size"
, &panels_options.human_readable, NULL),
QUICK_CHECKBOX (N_("Mi&x all files"
, &panels_options.mix_all_files, NULL),
QUICK_CHECKBOX (N_("Show &backup files"
, &panels_options.show_backups, NULL),
QUICK_CHECKBOX (N_("Show &hidden files"
, &panels_options.show_dot_files, NULL),
diff -rU 3 a/src/filemanager/chown.c b/src/filemanager/chown.c
--- a/src/filemanager/chown.c 2019-10-13 18:40:47.000000000 +0000
+++ b/src/filemanager/chown.c 2019-11-08 14:58:34.000000000 +0000
@@ -438,7 +438,7 @@
chown_label (0, str_trunc (fname, GW - 4));
chown_label (1, str_trunc (get_owner (sf_stat.st_uid), GW - 4));
chown_label (2, str_trunc (get_group (sf_stat.st_gid), GW - 4));
- size_trunc_len (buffer, GW - 4, sf_stat.st_size, 0, panels_options.kilobyte_si);
+ size_trunc_len (buffer, GW - 4, sf_stat.st_size, 0, panels_options.kilobyte_si, panels_options.human_readable);
chown_label (3, buffer);
chown_label (4, string_perm (sf_stat.st_mode));
diff -rU 3 a/src/filemanager/filegui.c b/src/filemanager/filegui.c
--- a/src/filemanager/filegui.c 2019-10-13 18:40:47.000000000 +0000
+++ b/src/filemanager/filegui.c 2019-11-08 15:03:18.000000000 +0000
@@ -524,7 +524,7 @@
vfs_path_free (p);
g_free (s1);
/* new file size */
- size_trunc_len (s2, sizeof (s2), ui->src_stat->st_size, 0, panels_options.kilobyte_si);
+ size_trunc_len (s2, sizeof (s2), ui->src_stat->st_size, 0, panels_options.kilobyte_si, panels_options.human_readable);
NEW_LABEL (2, s2);
/* new file modification date & time */
s1 = (char *) file_date (ui->src_stat->st_mtime);
@@ -539,7 +539,7 @@
vfs_path_free (p);
g_free (s1);
/* existing file size */
- size_trunc_len (s2, sizeof (s2), ui->dst_stat->st_size, 0, panels_options.kilobyte_si);
+ size_trunc_len (s2, sizeof (s2), ui->dst_stat->st_size, 0, panels_options.kilobyte_si, panels_options.human_readable);
NEW_LABEL (6, s2);
/* existing file modification date & time */
s1 = (char *) file_date (ui->dst_stat->st_mtime);
@@ -1090,13 +1090,13 @@
if (ui->total_bytes_label != NULL)
{
- size_trunc_len (buffer2, 5, tctx->copied_bytes, 0, panels_options.kilobyte_si);
+ size_trunc_len (buffer2, 5, tctx->copied_bytes, 0, panels_options.kilobyte_si, panels_options.human_readable);
if (!ctx->progress_totals_computed)
g_snprintf (buffer, sizeof (buffer), _(" Total: %s "
, buffer2);
else
{
- size_trunc_len (buffer3, 5, ctx->progress_bytes, 0, panels_options.kilobyte_si);
+ size_trunc_len (buffer3, 5, ctx->progress_bytes, 0, panels_options.kilobyte_si, panels_options.human_readable);
g_snprintf (buffer, sizeof (buffer), _(" Total: %s/%s "
, buffer2, buffer3);
}
diff -rU 3 a/src/filemanager/info.c b/src/filemanager/info.c
--- a/src/filemanager/info.c 2019-10-13 18:40:47.000000000 +0000
+++ b/src/filemanager/info.c 2019-11-08 15:03:49.000000000 +0000
@@ -178,8 +178,8 @@
{
char buffer1[6], buffer2[6];
- size_trunc_len (buffer1, 5, myfs_stats.avail, 1, panels_options.kilobyte_si);
- size_trunc_len (buffer2, 5, myfs_stats.total, 1, panels_options.kilobyte_si);
+ size_trunc_len (buffer1, 5, myfs_stats.avail, 1, panels_options.kilobyte_si, panels_options.human_readable);
+ size_trunc_len (buffer2, 5, myfs_stats.total, 1, panels_options.kilobyte_si, panels_options.human_readable);
tty_printf (_("Free space: %s/%s (%d%%)"
, buffer1, buffer2,
myfs_stats.total == 0 ? 0 :
(int) (100 * (long double) myfs_stats.avail / myfs_stats.total));
@@ -237,7 +237,7 @@
#endif
{
char buffer[10];
- size_trunc_len (buffer, 9, st.st_size, 0, panels_options.kilobyte_si);
+ size_trunc_len (buffer, 9, st.st_size, 0, panels_options.kilobyte_si, panels_options.human_readable);
tty_printf (_("Size: %s"
, buffer);
#ifdef HAVE_STRUCT_STAT_ST_BLOCKS
tty_printf (ngettext (" (%lu block)", " (%lu blocks)",
diff -rU 3 a/src/filemanager/panel.c b/src/filemanager/panel.c
--- a/src/filemanager/panel.c 2019-10-13 18:40:47.000000000 +0000
+++ b/src/filemanager/panel.c 2019-11-08 15:04:16.000000000 +0000
@@ -515,7 +515,7 @@
format_device_number (buffer, len + 1, fe->st.st_rdev);
else
#endif
- size_trunc_len (buffer, (unsigned int) len, fe->st.st_size, 0, panels_options.kilobyte_si);
+ size_trunc_len (buffer, (unsigned int) len, fe->st.st_size, 0, panels_options.kilobyte_si, panels_options.human_readable);
return buffer;
}
@@ -1157,9 +1157,9 @@
char buffer1[6], buffer2[6], tmp[BUF_SMALL];
size_trunc_len (buffer1, sizeof (buffer1) - 1, myfs_stats.avail, 1,
- panels_options.kilobyte_si);
+ panels_options.kilobyte_si, panels_options.human_readable);
size_trunc_len (buffer2, sizeof (buffer2) - 1, myfs_stats.total, 1,
- panels_options.kilobyte_si);
+ panels_options.kilobyte_si, panels_options.human_readable);
g_snprintf (tmp, sizeof (tmp), " %s/%s (%d%%) ", buffer1, buffer2,
myfs_stats.total == 0 ? 0 :
(int) (100 * (long double) myfs_stats.avail / myfs_stats.total));
diff -rU 3 a/src/setup.h b/src/setup.h
--- a/src/setup.h 2019-10-13 18:40:47.000000000 +0000
+++ b/src/setup.h 2019-11-08 15:05:51.000000000 +0000
@@ -37,6 +37,7 @@
gboolean show_mini_info; /* If true, show the mini-info on the panel */
gboolean kilobyte_si; /* If TRUE, SI units (1000 based) will be used for larger units
* (kilobyte, megabyte, ...). If FALSE, binary units (1024 based) will be used */
+ gboolean human_readable; /* If TRUE, at most three digits are used to display the size of the files. */
gboolean mix_all_files; /* If FALSE then directories are shown separately from files */
gboolean show_backups; /* If TRUE, show files ending in ~ */
gboolean show_dot_files; /* If TRUE, show files starting with a dot */
diff -rU 3 a/src/viewer/display.c b/src/viewer/display.c
--- a/src/viewer/display.c 2019-10-13 18:40:47.000000000 +0000
+++ b/src/viewer/display.c 2019-11-08 15:06:24.000000000 +0000
@@ -172,7 +172,7 @@
char buffer[BUF_TRUNC_LEN + 1];
size_trunc_len (buffer, BUF_TRUNC_LEN, mcview_get_filesize (view), 0,
- panels_options.kilobyte_si);
+ panels_options.kilobyte_si, panels_options.human_readable);
tty_printf ("%9" PRIuMAX "/%s%s %s", (uintmax_t) view->dpy_end,
buffer, mcview_may_still_grow (view) ? "+" : " ",
#ifdef HAVE_CHARSET
В настройках панели выбираешь опцию «human readable size», работает, на первый взгляд, нормально: https://i.imgur.com/WwthIt7.png
Сбербанк создал самый мощный в России суперкомпьютер, который, как рассчитывает банк, ускорит разработку сервисов и процессов, основанных на искусственном интеллекте. Об этом РБК рассказал исполнительный вице-президент и руководитель блока «Технологии» Сбербанка Давид Рафаловский.
Суперкомпьютер назван Christofari в честь первого клиента Сберкассы Николая Кристофари. Это платформа, где проходит обучение искусственного интеллекта с использованием большого объема данных. Cуперкомпьютер по вычислительной мощности многократно превосходит обычный и способен обрабатывать б