• Как составить запрос на добавление данных в таблицу или обновление двух и более столбцов?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    create table info (
      ID int generated always as identity, 
      FirstName text, 
      LastName text, 
      Year int2, 
      Mounth int2,
      primary key (FirstName, LastName)
    );
    
    INSERT INTO info (FirstName, LastName, Year, Mounth) VALUES ('Дима', 'Скрипов', 1999, 12)
    ON CONFLICT (FirstName, LastName) DO UPDATE SET 
    	Year = excluded.Year,
    	Mounth = excluded.Mounth;


    SQL editor online
    Ответ написан
    Комментировать
  • С чего начать разработку ПО?

    GavriKos
    @GavriKos
    Для алгоритма - есть блок-схемы и псевдоязыки.
    Для структуры программы - есть UML-диаграммы.

    И для того и для другого есть тулзы, и то и другое можно упростить под себя и задачи.
    Ответ написан
    Комментировать
  • Как разработать графический конструктор отчётов для пользователей?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Я бы сначала определил, реально ли нужен пользователям данный функционал. Обычно пользователи разного рода систем учета к самостоятельному программированию чего-то там относятся крайне скептически, что понятно.
    Ответ написан
    2 комментария
  • Удаление данных с жесткого диска для продажи?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Если поставить Linux или BSD несколько раз на диски. Поставить и удалить, и заново поставить, то будет же уже другая файловая система, и возможности вытащить файлы даже программами (старые, которые были под Windows) не будет?

    Смысла большого нет, информация о старой ФС - это несколько байт в начале диска.

    Есть маленькая консольная программа sdelete которая умеет многократно затирать диски, ей и воспользуйтесь.
    Ответ написан
    1 комментарий
  • Внезапно начались фризы и спад производительности, в чем причина?

    fruworg
    @fruworg
    Для начала замерьте температуры в стресс тесте/играх. АИДОЙ 64, например.
    Ответ написан
    Комментировать
  • Что эффективнее работает Join Composite Key или Primary Key?

    tsklab
    @tsklab Куратор тега SQL Server
    Здесь отвечаю на вопросы.
    Точного ответа нет. Даже если в какой-то момент что-то будет быстрее, в зависимости от использования, будут построены кэши и статистики и следующий запрос будет работать по-другому (включите статистику клиента: он покажет изменения от запроса к запросу +/- красный/зелёный).
    Это MS SQL, вы никогда не сможет сделать лучше его оптимизатора. Помочь можно: есть "Помощник по настройке ядра СУБД". Или самый первый уровень: включите действительный план выполнения и статистику активных запросов— если у оптимизатора будет предложение, оно будет зелёным цветом в виде сценария CREATE (только подставите названия объектов).

    Да и использование datetime в качестве первичного ключа (только сейчас дошло) — не допустимо:
    тестируем

    CREATE TABLE [dbo].[Table_5](
    	[ID] [datetime] NOT NULL,
    	[Name] [varchar](50) NOT NULL,
     CONSTRAINT [PK_Table_5] PRIMARY KEY CLUSTERED 
    (
    	[ID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
    ) ON [PRIMARY]
    GO
    
    ALTER TABLE [dbo].[Table_5] ADD  CONSTRAINT [DF_Table_5_ID]  DEFAULT (getdate()) FOR [ID]
    GO

    Попробуем добавить:
    INSERT INTO Table_5 (Name)
      SELECT TOP(5) 'TEST' + CAST(ROW_NUMBER() OVER(ORDER BY id) AS VARCHAR)
             FROM sysobjects

    Не получается:
    Нарушено "PK_Table_5" ограничения PRIMARY KEY. 
    Не удается вставить повторяющийся ключ в объект"dbo.Table_5". 
    Повторяющееся значение ключа: (ноя 12 2021  3:06PM).


    Более подробно: системный таймер Windows, по-умолчанию, срабатывает 1000/64 раз в секунду, а точность datetime 1000/300, что должно было бы обеспечить уникальность последовательных значений. Но MS SQL, с помощью timeBeginPeriod, увеличивает частоту срабатывания таймера до 1000/1000. То есть при записи в datetime и округления до его точности, значения потеряют уникальность. Это известная коллизия этого типа данных не позволяет использовать его, как первичный ключ. В 1С есть специальная обработка для построения хронологических цепочек (например, что бы различать оплату и аванс относительно отгрузки), которая устанавливает на документах несовпадающее время.
    1) 1 PK - Int, 2) 1 PK - Datetime, 3) Year, Month - int Composite Key, 4) Year, Month, Day - int Composite Key
    datetime - это int+int. В первом — дата, во втором — время, которое, исходя из 3 и 4 пункта использовано не будет (и эти пункты излишни, естественно). Если вы хотите использовать дату как первичный ключ — используйте тип данных date (3 байта).
    Ответ написан
    3 комментария
  • Как узнать с какого IP авторизовался пользователь (IIS + 1C)?

    @Dementor
    программист, архитектор, аналитик
    В базе 1С - нигде.
    Так как туда ходит не пользователь, а IIS со своего хоста.

    Кто с каких IP подключался можно увидеть только в логах IIS.
    Ответ написан
    Комментировать
  • Как в безопасном режиме Windows с поддержкой командной строки провернуть экран?

    borisdenis
    @borisdenis
    Ленив и вреден...
    Безопасный режим на то и безопасный, что в нём загружается минимально возможный набор только стандартных драйверов обеспечивающих работу ОС с целью восстановления. Драйвер видеокарты загружается только базовый, без всяких свистоперделок, он не умеет поворачивать экран. Так что никак.
    Ответ написан
    2 комментария
  • Как писать условие if если очень много значений для проверки, а нужно чтобы они за экран не залезали, не превращались в очень длинную строку?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это очень хороший вопрос!

    Для длинных условий можно и нужно использовать такую замечательную практику, как именованные условия!
    В большинстве случаев, когда условия не зависят друг от друга, можно просто присвоить результат вычисления условия переменной с обязательно говорящим именем, и дальше уже использовать эти переменные:

    $dateIsValid = $obj->getDate() >= getCurrentDate();
    $balanceOk = $obj->getBalance() > 0;
    // Любые другие условия
    if ($dateIsValid && $balanceOK) ...


    Это повышает читабельность не только сокращая само тело условного оператора, но в первую очередь превращая его в связный текст!

    Если же условия зависят друг от друга, то можно оформлять их в виде функций (методов). И тогда они не будут выполнены, если до них не дойдет очередь.
    Ответ написан
  • Как вставить fk на запись, добавленную в этой же транзакции?

    Melkij
    @Melkij
    PostgreSQL DBA
    это происходит в одной транзакции и видимо данные еще не видны

    Предположение ошибочно.
    Перепроверяйте внимательнее, что именно делаете. В частности, действительно ли в той же самой транзакции, говорит ли ошибка именно про это ограничение или может быть про другое.
    Ответ написан
    2 комментария
  • Как вывести значение поля до выполнения UPDATE, вместе со значением после UPDATE?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    Упрощенный вариант - использовать в запросе таблицы со своим алиасом

    UPDATE users x
    SET    step = 'confirmed'
    FROM   users y
    WHERE  x.number = y.number
    AND    x.number = 1
    RETURNING y.number AS number, y.step AS old_step, x.step;


    PostgreSQL fiddle
    Ответ написан
    2 комментария
  • Обращение к записи БД требует некоторой обработки. Что лучше: обработать в скрипте, который обратился, или в хранимой процедуре в БД?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Прежде чем всё это усложнять описанным вами способом, необходимо определиться с ожидаемыми количествами. Насколько много всего будет переменных, насколько много может быть этих объектов, какие ожидаются частоты этих ваших обращений.
    Ещё нужно определиться как вы планируете редактировать наборы изменяемых переменных. Запишете прямо в БД руками, или нужно делать API для редактирования списков?
    Вы собираетесь скрипт запускать при каждом поступлении новой порции данных? Может правильнее запустить его на ожидание порций из пайпа? Или АПИ сделать поверх http.

    По существу вопроса. Минус хранимых процедур в том, что это код, который хранится вместе с данными. Нужно делать отдельные специфические "приседания", чтобы правильно деплоить и обновлять такой код, хранить его в системе контроля версий, мигрировать от версии к версии...
    Быстродействие в обоих случаях будет зависеть от конкретных действий, которые вы будете каждый раз повторять при "обращениях". Однако при наличии "бутылочного горлышка" в этом месте при реализации через хранимые процедуры вы уже мало что там можете сделать. А вот в коде на питоне можно при необходимости добавить воркеров и таски на длительные операции передавать им через очередь.

    В целом задача звучит так, будто делать её надо максимально простым способом без предварительной оптимизации, которая, скорее всего, и не пригодится. Оптимизировать нужно по факту, когда понятно станет где будут проблемные места.
    Ответ написан
    Комментировать
  • Как настроить доступ к таблице в MS SQL Server?

    Mikhail_E
    @Mikhail_E
    1С, SQL
    Если кратко да - можно, эта тема называется "Ownership Chains"
    (Разделение доступа и наследование разрешений)
    Ответ написан
    1 комментарий
  • Как лучше копировать файлы с умирающего диска?

    Zoominger
    @Zoominger
    System Integrator
    Я для этих целей использовал загрузочный LiveCD с Linux, снимал образ диска через dd-rescue, потом подрубал образ этого диска в нормальной системе, делал chkdsk и вытягивал то, что можно вытянуть. Рекомендую.
    Ответ написан
    Комментировать
  • В 40 лет планирую поменять сферу деятельности с 1С на Android? Сколько на старте смогу зарабатывать?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    Открой вакансии, посмотри сколько зарабатывают джуны на Андроиде.

    Неужели за 18 лет активной ИТ деятельности не наработались навыки гугления дорожных карт? Или есть мысли что на тостере составят индивидуальный гороскоп с учетом личных привязанностей? 40 лет, а вопросы как у 15-летнего.

    Нет, никто не даст тебе 2к со старта.
    Нет, на андроиде тех, кто ищет себе позицию разработчика не будет зарабатывать много даже мидером, потому что разработка там не слишком сложная, конкуренция высокая.
    Те, кто смог попасть в совладельцы либо написать и вывести в топы свое приложение - это уже совсем другой случай, но там самостоятельности в деятельности нужно еще больше.

    На 40летних смотрят нормально. И вообще эта тенденция о малолетних сеньорах существует только в СНГ, где коммерческая разработка более-менее началась после 2000-2005, а не в 1980-м и раньше, как зарубежом.
    Поэтому разработчиков, которые до этого момента что-то активно разрабатывали за деньги очень немного, еще и большинство из них уехало. Вот и выходит что, скажем, 50-летних разработчиков, которые сразу начали именно как разработчики и уже 30 лет как разрабатывают - в xUSSR ну может пару тысяч. Но это потихоньку меняется - подрастают люди, стареют.

    Практику в Андроид получить очень легко.
    Берешь и пишешь софт. Андроид купить несложно, время найти после работы - это уже неизвестно, ваше личное.
    Можно джава, можно котлин, я бы ратовал за джаву - в случае чего всегда можно в ентерпрайз сдвинуться.
    И берешь юнити и пишешь для своих же детей развивающие игрушки, или что-нить еще, в зависимости от возраста. Так первый опыт и получишь.
    Ответ написан
    13 комментариев
  • Как сделать полный бекап сайта через rsync?

    shambler81
    @shambler81 Куратор тега Linux
    на сервер куда передаешь создадим папочку mkdir /tmp/11
    tar cvfz - /var/www/site.ru/ |ssh root@111.111.111.111  "cd /tmp/11;tar xvfz -"


    собственно все!
    сайт переехал и уже в распакованном виде при этом архив не занимал места нигде ни на том ни на том сервере, но тем не менее через интернет передавался в 1 файле.

    tar cvfz - /var/www/site.ru/- Архивировать папочку
    | передать
    ssh root@111.111.111.111  "cd /tmp/ - на другой сервер

    ;tar xvfz -" распаковать.

    В результате сайт будет паковаться и передаваться на сторонний сервер в архиве, то есть не по 1 файллу а в архиве.
    Но сохраняться он будет сразу на той стороне, при этом каждый файл будет сразу и распаковываться.
    То есть он будет передаваться со скоростью передачи 1 ффайла ( быстро) но при этом бэкапа как такового не будет существовать
    Ответ написан
    6 комментариев
  • Как производить массовые выплаты для физ. лиц и и не привлекать налоговую?

    LoliDeveloper
    @LoliDeveloper
    Линейная алгебра как смысл жизни
    Платить налоги
    Ответ написан
    Комментировать
  • Какой алгоритм применить для решения задачи?

    @dmshar
    А в чем проблема?
    1. Выбрать некоторое множество скриптов так, что-бы сумма времен их работы была максимально близка но меньше 24 часов.
    2. Выбранные скрипты формируют отдельную последовательность скриптов. Выбросить выбранные скрипты из рассматриваемого пула.
    3. Если пул скриптов не пуст - перейти к п.1. В противном случае - закончить.
    Получаем некое количество последовательностей скриптов. Каждая такая последовательность запускается параллельно и независимо от других. Элементы в каждой из этих последовательностей можно запускать в произвольном порядке.
    Количество таких последовательностей - минимально возможное. А следовательно, минимально и количество скриптов, которые будут работать параллельно.

    Поскольку скриптов пусть несколько десятков, а планирование - статичное, т.е. "один раз и надолго вперед", пункт первый можно даже перебором сделать.
    Но вообще говоря задача сводиться в проблеме заполнения ранцев - известная задача исследования операций.

    P.S. Ни к Матстатистике ни к Python задача отношения не имеет. Да и к Аналитике - тоже. Типичная задача исследования операций.
    Ответ написан
    Комментировать
  • Законно ли писать программы, конфликтующие с авторским правом, только для личного пользования?

    Jump
    @Jump
    Системный администратор со стажем.
    Законно ли писать программы, конфликтующие с авторским правом
    Таких программ не существует.
    Программа не может конфликтовать с авторским правом.

    Если я хочу, например, сделать программу, парсющую видео с ютуба и проигрывающая это видео без рекламы, без лишнего дёргания JS в браузере и без использования кучи прочих ненужных служб.
    Хотите -делайте. Дело нужное. Если сделайте можете опубликовать.
    Только непонятно каким боком это относится к вопросу.

    Но если его использовать только для себя и правоохраниели об этом узнают, то какие последствия?
    Ну кто его знает. Вот если правоохранители узнают что вы пользуетесь электрочайником для нагрева воды какие будут последствия? Вот примерно такие будут и в этом случае?
    Ответ написан
    Комментировать