Данные имеют переменный размер, и от них берется хеш. Получается, что время на проверку одного значения nonce, а значит, и сложность майнинга (выраженная в тактах процессора, а не в терахешах) зависит от длины данных. Если майнер получает вознаграждение за блок, не зависящее от длины блока, то выгоднее майнить короткие блоки. Транзакции так и будут висеть в мемпуле, пока майнеры зарабатывают на пустых блоках.
В Биткойне эта проблема решена. Там есть block header, длина которого всегда 80 байт, и он включает в себя nonce и Merkle root, т.е. другой хеш. Merkle root верифицирует данные любого размера, но его не надо пересчитывать при смене nonce.
Если надо и ID от сервера, и идемпотентность, то почему бы не отделить получение ID от создания объекта?
Мне сразу Хабр приходит на ум. Мы сначала создаем черновик статьи. При этом сервер назначает ему ID. Это не идемпотентно, но лишний черновик - не проблема. Он может вечно жить своей тайной жизнью и никому не мешать. А на этапе публикации у нас уже есть ID.
Хотя такой забытый черновик всё же может вызвать некоторые сложности, если в таблице есть поля, которые FOREIGN KEY и при этом NOT NULL
У меня тоже был Pentium 200 MMX. А модем назывался Acorp и подключался через COM-порт, что круче, потому что никаких драйверов не надо.
Судя по звуку на видео, они используют тональный набор и номер всего из двух цифр. В девяностые набор был только импульсный, только хардкор. Команда ATDP нужна, а не просто ATD.
Документы Офиса 2007 и более поздних - это XML в зипе. Для них не надо специальных библиотек. Нужна только распаковка zip и парсинг XML. Дальше просто берем для корневого элемента innerText.
Вот так это выглядит на C#:
using System;
using System.IO;
using System.IO.Compression;
using System.Xml;
namespace DocxToText
{
class Program
{
static void Main(string[] args)
{
string docxFilePath = args[0];
XmlDocument doc = new XmlDocument();
using (ZipArchive arch = ZipFile.OpenRead(docxFilePath))
{
ZipArchiveEntry ent = arch.GetEntry("word/document.xml");
using (Stream readStream = ent.Open())
{
doc.Load(readStream);
}
}
string text = doc.DocumentElement.InnerText;
Console.WriteLine(text);
}
}
}
Есть, конечно, у такого подхода недостатки: InnerText не содержит пробелов на месте границ тегов. Т.е. абзацы склеены не просто в одну строку, а еще и без пробела.
Кроме того, грузить весь документ в память абсолютно незачем.
Обе проблемы решаются SAX-парсером.
А как у вашего конвертера потребление памяти зависит от размера документа?
А еще надо же платить налоги с этих фиктивных продаж
Когда банк блокирует счет "для безопасности" можно спросить "для чьей безопасности?"
А вот и не факт. Рассмотрим предложение:
Ваш Гена возмутился бы "Не хожу я в ваш офис и не собираюсь". Слово "ты" в данном случае переменная.
А еще мы, программисты, говорим, например
Здесь "мы" - это и не я, и не ты, и вообще не люди, а код
Данные имеют переменный размер, и от них берется хеш. Получается, что время на проверку одного значения nonce, а значит, и сложность майнинга (выраженная в тактах процессора, а не в терахешах) зависит от длины данных. Если майнер получает вознаграждение за блок, не зависящее от длины блока, то выгоднее майнить короткие блоки. Транзакции так и будут висеть в мемпуле, пока майнеры зарабатывают на пустых блоках.
В Биткойне эта проблема решена. Там есть block header, длина которого всегда 80 байт, и он включает в себя nonce и Merkle root, т.е. другой хеш. Merkle root верифицирует данные любого размера, но его не надо пересчитывать при смене nonce.
Если надо и ID от сервера, и идемпотентность, то почему бы не отделить получение ID от создания объекта?
Мне сразу Хабр приходит на ум. Мы сначала создаем черновик статьи. При этом сервер назначает ему ID. Это не идемпотентно, но лишний черновик - не проблема. Он может вечно жить своей тайной жизнью и никому не мешать. А на этапе публикации у нас уже есть ID.
Хотя такой забытый черновик всё же может вызвать некоторые сложности, если в таблице есть поля, которые FOREIGN KEY и при этом NOT NULL
Неукоснительно соблюдаем взаимоисключающие параграфы
(источник)
У меня тоже был Pentium 200 MMX. А модем назывался Acorp и подключался через COM-порт, что круче, потому что никаких драйверов не надо.
Судя по звуку на видео, они используют тональный набор и номер всего из двух цифр. В девяностые набор был только импульсный, только хардкор. Команда ATDP нужна, а не просто ATD.
Ну да. Есть права, а есть фактическое влияние
Равноправие - оно как вечный двигатель - классная вещь, которой, к сожалению, не существует
Я бы это понял как "ассемблер, только с фигурными скобочками"
Я так и не понял, что практически значит "доверяет программисту"
А зачем сложности с WITH RECURSIVE? С generate_series() еще проще всё будет
640 килобайт хватит всем
Вспомним еще ксерокопирование с помощью стекла и лампы
Икея в России, чтобы не платить взятки, питалась от дизеля несколько лет, начиная с 2006 года. Учитесь
Документы Офиса 2007 и более поздних - это XML в зипе. Для них не надо специальных библиотек. Нужна только распаковка zip и парсинг XML. Дальше просто берем для корневого элемента innerText.
Вот так это выглядит на C#:
Есть, конечно, у такого подхода недостатки: InnerText не содержит пробелов на месте границ тегов. Т.е. абзацы склеены не просто в одну строку, а еще и без пробела.
Кроме того, грузить весь документ в память абсолютно незачем.
Обе проблемы решаются SAX-парсером.
А как у вашего конвертера потребление памяти зависит от размера документа?
То есть, листочек не клеится к монитору, а отправляется продавцу/разработчику
Да как вам сказать... По пяти лайкам много чего о вас могли узнать еще в 2013. Сейчас вовсю делают нейроинтерфейсы. Они пока еще требуют контакта
При любом экономическом кризисе надо пополнять бюджет всеми доступными способами