LINUX.ORG.RU

Сообщения SaBo

 

sip-proxy server

Форум — Admin

Посоветуйте, пожалуйста, какой-то простой SIP Proxy Server, который мог бы провести авторизацию SIP и, если пользователь корректный, проксировать подключение к SIP-серверу.

Я так понял, что мне подходит Siproxd, но, может быть, есть еще какие-то варианты.

 ,

SaBo
()

Template в разделяемой библиотеке

Форум — Development

Не могу понять почему, при использовании внутри разделяемой библиотеки шаблона, я получаю ошибку линковщика «undefined reference».

Разделяемая библиотека состоит из двух классов.

Внешний класс Lib:

lib.h:

#ifndef LIB_H
#define LIB_H

#include "Lib_global.h"

class LIB_EXPORT Lib
{
public:
    Lib();
    void test();
};

#endif // LIB_H

lib.cpp:

#include "lib.h"
#include "stream.h"

Lib::Lib() {}

void Lib::test()
{
    Stream<int> s;
    s.test();
}

Внутренний шаблон класса Stream:

stream.h:

#ifndef STREAM_H
#define STREAM_H

template<class T>
class Stream
{
public:
    Stream();
    void test();
};

#endif // STREAM_H

stream.cpp:

#include "stream.h"
#include <iostream>

template<class T>
Stream<T>::Stream()
{
}

template<class T>
void Stream<T>::test()
{
    std::cout << "stream test" << std::endl;
}

Класс Lib создается в приложении:

main.cpp:

#include <lib.h>

int main()
{
    Lib l;
    l.test();
    return 0;
}

Сборка библиотеки происходит без ошибок. При сборке приложения я получаю ошибку:

g++  -o App main.o   -L/home/sabo/Workspace/TestCppLib/build-TestCppLib-Desktop-Debug/App/../Lib/ -lLib   
/usr/bin/ld: /home/sabo/Workspace/TestCppLib/build-TestCppLib-Desktop-Debug/App/../Lib//libLib.so: undefined reference to `Stream<int>::Stream()'
/usr/bin/ld: /home/sabo/Workspace/TestCppLib/build-TestCppLib-Desktop-Debug/App/../Lib//libLib.so: undefined reference to `Stream<int>::test()'

Откуда вообще берется ошибка в методе который (в моем представлении) уже успешно скомпилирован при компиляции библиотеки? Я же наружу никак этот шаблон не пробрасываю, main.cpp вообще ничего о нем знать не должен, в заголовках этот шаблон нигде не подключается.

 , ,

SaBo
()

Как синхронизировать таймзону между фронтендом и бэкендом?

Форум — Development

Часовые пояса часто заставляют задуматься как с ними правильно работать. В большинстве случаев при проектировании API принято использовать или unixtime или датувремя с указанием часового пояса, но мой вопрос не про это.

Мой вопрос относится к API для фронтенда (т.е. речь идет не про RESTful API для server-to-server взаимодействия, а про API для фронтендов к которому одно из приоритетных требований - это минимизация количества запросов).

Например, есть метод который должен выдать список задач на сегодня. Понятие «сегодня» зависит от текущей таймзоны. Как бэкенду определить текущую таймзону фронтенда? Мои варианты:

  1. Посмотреть в профиле пользователя, какая там указана таймзона. С профилем есть две проблемы: во-первых, пользователи очень редко выбирают свою таймзону, во-вторых, даже если пользователь указал правильную таймзону в профиле (или, например, её удалось как-то автоматически определить при регистрации), пользователь может поехать (или вообще переехать) в другой часовой пояс.

  2. В метод списка задач на сегодня нужно явно передать таймзону, что-то вроде: GET /tasks/today?offset=+03:00 ИМХО выглядит как какой-то костыль.

  3. Добавить ко всем запросам в API заголовок что-то вроде Current-User-Offset: +03:00 Если заголовок не передан, ориентироваться на значение по умолчанию (например, на таймзону из профиля).

  4. API спроектирован неправильно, таких проблем быть вообще не должно. Например, нужен метод с получением списка задач, а какие из задач отнести к «сегодняшним» решает фронтенд.

 ,

SaBo
()

Зачем в Ubuntu нужен пакет linux-modules-iwlwifi

Форум — General

Этот пакет, например, предоставляет модуль iwlwifi:

/lib/modules/5.15.0-46-generic/ubuntu/iwlwifi/iwlwifi.ko

Но iwlwifi уже есть в linux-modules-extra-5.15.0-46-generic:

/lib/modules/5.15.0-46-generic/kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko

Зачем нужен linux-modules-iwlwifi? (особенно меня это интересует для Intel(R) Dual Band Wireless AC 8265)

Я так понимаю чтобы не ставить все модули из linux-modules-extra, а ставить по отдельности.

 ,

SaBo
()

Выбор материнской платы

Форум — Talks

Собираю ПК в качестве резервного на случай поломки основного ноутбука, никак не могу понять что происходит с материнскими платами, один мусор.

Из пожеланий:

  1. Под процессор Core i5;
  2. Совместимость с онтопиком (например, сетевая);
  3. Пассивное охлаждение (мост или что там ЦП питает);
  4. Вероятно, нужен VGA;
  5. Хотелось бы 4 слота памяти под дальнейший апгрейд (правда я читаю что с частотой 3200 могут работать только два слота из четырех);
  6. Минимум 4 SATA.

Еще не понимаю будет ли работать SMART если взять SSD под M2.

Формфактор не важен.

М.б. есть какие-то удачные, проверенные модели? Из того что вижу я, это или какой-то мусор или отзывы не очень.

Бюджет до 10т.р.

 

SaBo
()

Почему в nvidia-settings нельзя выбрать Intel?

Форум — Desktop

В разделе «PRIME Profiles» есть три варианта на выбор:

  • NVIDIA (Performance Mode)
  • NVIDIA On-Daemond
  • Intel (Power Saving Mode)

Так вот пункт «Intel (Power Saving Mode)» задисейблен, его нельзя выбрать, при этом через sudo prime-select intel активируется встроенная видеокарта.

https://ibb.co/xq4Xkz0

Выбор Intel вообще убрали из Nvidia Settings или выбирать Intel по сравнению с NVIDIA On-Daemond нет особого смысла?

Драйвер Nvidia v470.129.06.

 ,

SaBo
()

Мой жесткий диск все?

Форум — Talks

Никогда не умел правильно интерпретировать данные в SMART, помогите, пожалуйста.

dmesg сыпет такими ошибками:

[ 3722.629428] sd 2:0:0:0: [sda] tag#0 FAILED Result: hostbyte=DID_TIME_OUT driverbyte=DRIVER_OK
[ 3722.629440] sd 2:0:0:0: [sda] tag#0 CDB: Read(10) 28 00 5b b1 d1 e0 00 00 20 00
[ 3722.629449] blk_update_request: I/O error, dev sda, sector 1538380256 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 0

Вот что пишет SMART:

> sudo smartctl -a /dev/sda
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-5.4.0-104-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Device Model:     ST2000LX001-1RG174
Serial Number:    WCC333GY
LU WWN Device Id: 5 000c50 0a904f7fc
Firmware Version: SDM1
User Capacity:    2 000 398 934 016 bytes [2,00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5400 rpm
Form Factor:      2.5 inches
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ACS-3 T13/2161-D revision 3b
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Wed Mar  9 16:09:30 2022 MSK
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART Status command failed: Время ожидания соединения истекло
SMART overall-health self-assessment test result: PASSED
Warning: This result is based on an Attribute check.

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                                        was never started.
                                        Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever 
                                        been run.
Total time to complete Offline 
data collection:                (    0) seconds.
Offline data collection
capabilities:                    (0x71) SMART execute Offline immediate.
                                        No Auto Offline data collection support.
                                        Suspend Offline collection upon new
                                        command.
                                        No Offline surface scan supported.
                                        Self-test supported.
                                        Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine 
recommended polling time:        (   1) minutes.
Extended self-test routine
recommended polling time:        ( 340) minutes.
Conveyance self-test routine
recommended polling time:        (   2) minutes.
SCT capabilities:              (0x3035) SCT Status supported.
                                        SCT Feature Control supported.
                                        SCT Data Table supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   052   050   006    Pre-fail  Always       -       52941296
  3 Spin_Up_Time            0x0003   099   099   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   095   095   020    Old_age   Always       -       5453
  5 Reallocated_Sector_Ct   0x0033   096   096   036    Pre-fail  Always       -       2130
  7 Seek_Error_Rate         0x000f   084   060   045    Pre-fail  Always       -       225700323
  9 Power_On_Hours          0x0032   063   063   000    Old_age   Always       -       32909 (15 223 0)
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   098   098   020    Old_age   Always       -       2336
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   099   099   000    Old_age   Always       -       1
188 Command_Timeout         0x0032   100   096   000    Old_age   Always       -       64425689111
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   065   049   040    Old_age   Always       -       35 (Min/Max 29/42)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       28
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       53
193 Load_Cycle_Count        0x0032   097   097   000    Old_age   Always       -       7513
194 Temperature_Celsius     0x0022   035   051   000    Old_age   Always       -       35 (0 13 0 0 0)
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       31264 (253 103 0)
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       27001987924
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       13582862458
254 Free_Fall_Sensor        0x0032   100   100   000    Old_age   Always       -       0

SMART Error Log Version: 1
ATA Error Count: 20 (device log contains only the most recent five errors)
        CR = Command Register [HEX]
        FR = Features Register [HEX]
        SC = Sector Count Register [HEX]
        SN = Sector Number Register [HEX]
        CL = Cylinder Low Register [HEX]
        CH = Cylinder High Register [HEX]
        DH = Device/Head Register [HEX]
        DC = Device Command Register [HEX]
        ER = Error register [HEX]
        ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 20 occurred at disk power-on lifetime: 14757 hours (614 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 ff ff ff 0f  Error: UNC at LBA = 0x0fffffff = 268435455

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 00 08 ff ff ff 4f 00   4d+05:41:24.059  READ FPDMA QUEUED
  61 00 10 ff ff ff 4f 00   4d+05:41:24.059  WRITE FPDMA QUEUED
  ef 10 02 00 00 00 a0 00   4d+05:41:24.050  SET FEATURES [Enable SATA feature]
  27 00 00 00 00 00 e0 00   4d+05:41:23.979  READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]
  ec 00 00 00 00 00 a0 00   4d+05:41:23.940  IDENTIFY DEVICE

Error 19 occurred at disk power-on lifetime: 14757 hours (614 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 ff ff ff 0f  Error: WP at LBA = 0x0fffffff = 268435455

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  61 00 10 ff ff ff 4f 00   4d+05:41:21.725  WRITE FPDMA QUEUED
  60 00 08 ff ff ff 4f 00   4d+05:41:21.236  READ FPDMA QUEUED
  61 00 08 ff ff ff 4f 00   4d+05:41:18.909  WRITE FPDMA QUEUED
  ef 10 03 00 00 00 a0 00   4d+05:41:16.229  SET FEATURES [Enable SATA feature]
  ef 10 02 00 00 00 a0 00   4d+05:41:16.220  SET FEATURES [Enable SATA feature]

Error 18 occurred at disk power-on lifetime: 14757 hours (614 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 ff ff ff 0f  Error: UNC at LBA = 0x0fffffff = 268435455

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 00 08 ff ff ff 4f 00   4d+05:41:13.148  READ FPDMA QUEUED
  ef 10 03 00 00 00 a0 00   4d+05:41:13.139  SET FEATURES [Enable SATA feature]
  ef 10 02 00 00 00 a0 00   4d+05:41:13.129  SET FEATURES [Enable SATA feature]
  27 00 00 00 00 00 e0 00   4d+05:41:13.103  READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]
  ec 00 00 00 00 00 a0 00   4d+05:41:13.058  IDENTIFY DEVICE

Error 17 occurred at disk power-on lifetime: 14757 hours (614 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 ff ff ff 0f  Error: UNC at LBA = 0x0fffffff = 268435455

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 00 08 ff ff ff 4f 00   4d+05:41:10.035  READ FPDMA QUEUED
  ea 00 00 00 00 00 a0 00   4d+05:41:09.784  FLUSH CACHE EXT
  61 00 08 ff ff ff 4f 00   4d+05:41:09.784  WRITE FPDMA QUEUED
  ea 00 00 00 00 00 a0 00   4d+05:41:09.784  FLUSH CACHE EXT
  ea 00 00 00 00 00 a0 00   4d+05:41:09.697  FLUSH CACHE EXT

Error 16 occurred at disk power-on lifetime: 14757 hours (614 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 ff ff ff 0f  Error: WP at LBA = 0x0fffffff = 268435455

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  61 00 08 ff ff ff 4f 00   4d+05:41:03.552  WRITE FPDMA QUEUED
  60 00 08 ff ff ff 4f 00   4d+05:41:02.207  READ FPDMA QUEUED
  ef 10 02 00 00 00 a0 00   4d+05:41:02.198  SET FEATURES [Enable SATA feature]
  27 00 00 00 00 00 e0 00   4d+05:41:02.127  READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]
  ec 00 00 00 00 00 a0 00   4d+05:41:02.088  IDENTIFY DEVICE

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Aborted by host               10%     32907         -
# 2  Short offline       Aborted by host               10%     32907         -
# 3  Short offline       Completed without error       00%       205         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

 ,

SaBo
()

Какой роутер сейчас считается мейнстримом для OpenWrt?

Форум — Talks

Роутер нужен для квартиры. Из требований только поддержка WiFi 5 ГГц и способность вытягивать одновременно 10 устройств по WiFi.

 

SaBo
()

Вызов функции по ссылке с передачей всех аргументов

Форум — Development

Каким образом можно вызвать функцию по ссылке с передачей всех аргументов?

На данный момент у меня получился такой код:

#define EXTERN_DLL_EXPORT extern "C" __declspec(dllexport)

typedef void*(*any_fptr)(...);

EXTERN_DLL_EXPORT void* invoke5(const any_fptr &fptr, void** arg1, void** arg2, void** arg3, void** arg4, void** arg5) {
  return fptr(arg1, arg2, arg3, arg4, arg5);
}

EXTERN_DLL_EXPORT void* invoke10(const any_fptr &fptr, void** arg1, void** arg2, void** arg3, void** arg4, void** arg5, void** arg6, void** arg7, void** arg8, void** arg9, void** arg10) {
  return fptr(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10);
}

Опытным путем установлено, что необязательно указывать все аргументы функций invoke5 / invoke10, т.е. вот так invoke работает:

invoke5(&fptr, arg1, arg2);
invoke10(&fptr, arg1, arg2, arg3);

Хочу сделать реализацию красивее, что-то вроде:

EXTERN_DLL_EXPORT void* invoke(const any_fptr &fptr, void** args...) {
  return fptr(args);
}

Но не понимаю как это сделать без шаблонов.

Функция invoke обязательно должна экспортироваться.

 ,

SaBo
()

Вызов управляемого метода .NET из неуправляемого

Форум — Development

Пытаюсь вызвать управляемый метод .NET (C#) из неуправляемого (C++). Делаю по этой и этой инструкциям.

Управляемая библиотека:

namespace TestLib
{
    public static class Class1
    {


        public static int Method1(System.IntPtr arg, int argLength)
        {
            return 1;
        }

        public static int Method1(int a)
        {
            return 2;
        }

    }
}

Вызов методов:

const char_t* type_name = L"TestLib.Class1, TestLib";
const char_t* method_name = L"Method1";
//
component_entry_point_fn method1_cep = nullptr;
std::cout << "Get  Method1(IntPtr, int): " << load_assembly_and_get_function_pointer_fptr(
    dotnetlib_path,
    type_name,
    method_name,
    nullptr,
    nullptr,
    (void**)&method1_cep
) << std::endl;
//
std::cout << "Call Method1(IntPtr, int): " << method1_cep(nullptr, 0) << std::endl;
//
method1_fn method1_int = nullptr;
std::cout << "Get  Method1(int): " << load_assembly_and_get_function_pointer_fptr(
    dotnetlib_path,
    type_name,
    method_name,
    L"Method1(int)",
    nullptr,
    (void**)&method1_int
) << std::endl;
//
std::cout << "Call Method1(int) : " << method1_int(2) << std::endl;

Вывод:

Get  Method1(IntPtr, int): 0
Call Method1(IntPtr, int): 1
Get  Method1(int): -2146233054
Exception

Т.е. получение и вызов метода Method1(System.IntPtr arg, int argLength) (без указания сигнатуры) проходит успешно. Я же хочу вызывать методы с указанием сигнатуры, но по какой-то причине hostfxr не может найти метод Method1(int).

В чём может быть проблема?

Из документации

  • method_name - Name of the method on the type_name to find. The method must be static and must match the signature of delegate_type_name.
  • delegate_type_name - Assembly qualified delegate type name for the method signature

 

SaBo
()

Встретил девушку, теперь хочу перейти с Java на C#

Форум — Talks

Это нормально? Что это значит?

 , ,

SaBo
()

Что можете сказать плохого про Nokia 7.2?

Форум — Talks

В связи с медленным помиранием кнопочной звонилки, есть идея приобрести смартфон.

Из пожеланий:

  • NFC;
  • Сканер отпечатка;
  • По-возможности длительная работа;
  • Не менее 4ГБ ОЗУ;
  • Приличная камера для фотографий раз в месяц;
  • Android не менее 9 версии.

Из всего обилия вариантов приглянулся Nokia 7.2.

Радует Android без предустановленного шлака.

Но вот, думаю, может за эту цену (17-20т.р.) можно взять что-то лучше из китайцев?

 , ,

SaBo
()

for vs foreach

Форум — Development

Что работает потенциально быстрее: for или forEach?

for (Object item : items) { ... }
// VS
items.forEach(item -> { ... });

Логика мне подсказывает, что между ними нет разницы (вообще). Интуитивно кажется, что если кто-то и будет быстрее, то for.

Попробовал запустить такой тест:

public class TestApplication {

  public static void main(final String[] args) {
    final List<String> items = new ArrayList<>();
    for (int i = 0; i < 10000000; i++) {
      items.add(String.format("Item #%d", i));
    }

    final AtomicInteger payload = new AtomicInteger();

    // test 1
    long testStart = System.currentTimeMillis();
    for (final String item : items) {
      payload.addAndGet(1);
    }
    long testStop = System.currentTimeMillis();
    System.out.println(String.format("Test 1 (for):     %d", testStop - testStart));

    // test 2
    testStart = System.currentTimeMillis();
    items.forEach(item -> {
      payload.addAndGet(1);
    });
    testStop = System.currentTimeMillis();
    System.out.println(String.format("Test 2 (forEach): %d", testStop - testStart));

    // test 3
    testStart = System.currentTimeMillis();
    for (final String item : items) {
      payload.addAndGet(1);
    }
    testStop = System.currentTimeMillis();
    System.out.println(String.format("Test 3 (for):     %d", testStop - testStart));

    // test 4
    testStart = System.currentTimeMillis();
    items.forEach(item -> {
      payload.addAndGet(1);
    });
    testStop = System.currentTimeMillis();
    System.out.println(String.format("Test 4 (forEach): %d", testStop - testStart));
  }

}

Результат:

Test 1 (for):     171
Test 2 (forEach): 162
Test 3 (for):     162
Test 4 (forEach): 145

(вывод по результатам нескольких запусков: forEach, как правило, работает быстрее for на ~ несколько миллисекунд)

Если убрать payload (запустить пустые циклы), то результат примерно такой (forEach опять быстрее):

Test 1 (for):     76
Test 2 (forEach): 73
Test 3 (for):     78
Test 4 (forEach): 70

Если заменить ArrayList на HashSet, то результаты примерно одинаковые (то for быстрее то forEach):

Test 1 (for):     431
Test 2 (forEach): 421
Test 3 (for):     368
Test 4 (forEach): 386

 , , ,

SaBo
()

Java desktop GUI framework?

Форум — Development

Меня очень раздражает Swing, но альтернатив ему не вижу. Может быть, что-то упускаю?

Смотрю в сторону JavaFX, но совсем не ясно что с ним будет через пару лет.

P.S. Будет приложение выглядеть нативно под каждой платформой или нет - без разницы.

 , ,

SaBo
()

Sane очень медленно сканирует

Форум — Desktop

У меня МФУ HP LaserJet Pro MFP M28-M31, подключено по WiFi.

При сканировании с Android'а - сканирование происходит практически моментально. При сканировании из sane - чувствуются ощутимые задержки (от нажатия на кнопку «сканировать» до начала сканирования проходит секунд 40).

Версии:

  • hplip 3.18.12 (последняя);
  • sane 1.0.27 (последняя).

При старте sane выдаёт такие ошибки:

Dec 17 02:50:55 sabo-probook perl: io/hpmud/model.c 532: no laserjet_mfp_m28-m31 attributes found in /usr/share/hplip/data/models/models.dat
Dec 17 02:50:55 sabo-probook perl: io/hpmud/model.c 543: no laserjet_mfp_m28-m31 attributes found in /usr/share/hplip/data/models/unreleased/unreleased.dat
Dec 17 02:51:00 sabo-probook perl: scan/sane/escl.c 418: escl_open() session=(nil)
Dec 17 02:51:00 sabo-probook perl: common/utils.c 245: unable to load library libm.so: /usr/lib/x86_64-linux-gnu/libm.so: неверный заголовок ELF
...

При сканировании такие:

...
Dec 17 02:49:19 sabo-probook scanimage: io/hpmud/jd.c 694: timeout read_channel sec=10 hp:/net/HP_LaserJet_MFP_M28-M31?ip=192.168.12.4
Dec 17 02:49:29 sabo-probook scanimage: io/hpmud/jd.c 694: timeout read_channel sec=10 hp:/net/HP_LaserJet_MFP_M28-M31?ip=192.168.12.4
Dec 17 02:49:29 sabo-probook scanimage: http.c 153: hpmud_read_channel failed retrying (2) more times)
...

В какую сторону копать? Может ли sane вообще работать быстрее?

 , ,

SaBo
()

Почему openjdk версии 10 в ubuntu называется openjdk-11-jdk?

Форум — Talks

Может быть, вопрос тупой по этому в толксах.

openjdk-11-jdk выдает такую версию:

> /usr/lib/jvm/java-11-openjdk-amd64/bin/java -version 
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.2)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.2, mixed mode)

Если посмотреть на исходники пакета, то там тоже openjdk 10 версии.

В чем прикол?

 ,

SaBo
()

WestCall SPb продался дом.ру

Форум — Talks

Странно, что не видно особого бургута на эту тему, предлагаю начать.

Насколько криво был осуществлён перенос - даже писать не хочу. Но за то в качестве компенсации за доставленные неудобства мне предложили антивирус за 1 руб. / мес.

Читаю договор (опубликован на сайте):

4.1. При пользовании Услугами связи Оператора связи Абонент принимает на себя обязательства.

4.1.5.3. Размещение в любой конференции Usenet или другой конференции, форуме или электронном списке рассылки статей, которые не соответствуют тематике данной конференции или списка рассылки (offtopic). Здесь и далее под конференцией понимаются телеконференции (группы новостей) Usenet и другие конференции, форумы и электронные списки рассылки.

Теперь мне нельзя флудить на любимом ЛОРчике :(

Дальше вообще глаза на лоб вылезли:

4.2. Абоненту запрещается:

4.2.7.6. самостоятельная настройка Абонентом на компьютере Абонента соединения с беспроводным маршрутизатором Wi-Fi, а также иная несогласованная с Оператором связи настройка оборудования Абонента.

Но как оказалось, это всего лишь подпункт этого:

4.2.7. Абонент обязан принять надлежащие меры по такой настройке своих ресурсов, которая препятствовала бы недобросовестному использованию этих ресурсов третьими лицами, а также оперативно реагировать при обнаружении случаев такого использования. Примерами потенциально проблемной настройки сетевых ресурсов и иного оборудования являются:

Но желание согласовывать каждое подключение по WiFi появилось (письменно, в двух экземплярах).

Но больше всего у меня пригорает о того, что нигде, собственно, не указана скорость (кроме маркетинговых «до»), кроме этого:

3.2. Полоса пропускания абонентской линии зависит от выбранного тарифа и стандарта подключения. Для Gigabit Ethenet составляет не более 1 Гбит/с, для Fast Ethernet - не более 100 Мбит/с

При этом сам дом.ру спокойно торгует тарифами «до 500МБ/с».

Когда подключался к WestCall очень был рад, что не вляпаюсь в эти всякие «домы» и «эмтээсы». Но нет, вот он - пожалуйста.

 

SaBo
()

Почему интерфейс в networkd висит в статусе configuring?

Форум — Admin
> sudo networkctl -a status
● 1: lo
       Link File: /lib/systemd/network/99-default.link
    Network File: n/a
            Type: loopback
           State: carrier (unmanaged)
         Address: 127.0.0.1
                  ::1

● 2: ens3
       Link File: /lib/systemd/network/99-default.link
    Network File: /etc/systemd/network/80-ens3.network
            Type: ether
           State: routable (configuring)
            Path: pci-0000:00:03.0
          Driver: virtio_net
          Vendor: Red Hat, Inc
           Model: Virtio network device
      HW Address: 52:54:00:26:6e:e2
         Address: 192.168.1.12
                  fe80::5054:ff:fe26:6ee2
         Gateway: 192.168.1.1
             DNS: 192.168.1.1
                  fe80::c24a:ff:fe4d:4b18
> cat /etc/systemd/network/80-ens3.network 
[Match]
Name=ens3

[Network]
DHCP=ipv4

[DHCPv4]
UseHostname=false

Как понять, что он пытается сконфигурировать? Предполагаю, что пытается настроить IPv6...

 

SaBo
()

Как фильтровать DTO?

Форум — Development

Возьму за основу такую модель и сервис:

public interface Project {
    String getName();
    Customer getCustomer();
    Employee getManager();
    ProjectStatus getStatus();
}

public interface ProjectService {
    List<Project> getProjects();
    List<Project> getProjects(Customer customer);
    List<Project> getProjects(Employee manager);
}

Как только Project начнёт обрастать дополнительными атрибутами, появится необходимость фильтровать и сортировать список проектов по разным критериям. Но описывать вручную все возможные комбинацию (особенно с учётом and и or) мне кажется нецелесообразным.

Есть ли какие-то готовые проекты типа hibernate-jpamodelgen и JpaSpecification, но заточенные именно на DTO?

 ,

SaBo
()

libvirt autostart с задержкой

Форум — Admin

Можно ли в libvirt как-то указать через какое время после загрузки системы автоматически запускать виртуальные машины?

Кроме как вот такого хака:

[Service]
ExecStartPre=/bin/sleep 30
ExecStart=/usr/sbin/libvirtd
ничего в голову не приходит.

Но этот подход плох тем, что, насколько я понимаю, при

> sudo systemctl restart libvirtd.service

Будет такая же задержка.

А мне нужно настроить автостарт машин с задержкой именно после загрузки системы, а не при перезапуске libvirtd или старте машины вручную.

 

SaBo
()

RSS подписка на новые темы