nlothik: (default)
[personal profile] nlothik

Надо было зайти купить пару выключателей с подсветкой в строительном. Выключатели нашлись быстро (дорогие, блин!), иду на кассу. Касс с кассирами — ни одной, ёлки-палки. Одни автоматы. Ну, что делать — встаю в короткую очередь к кассам самообслуживания.

Мимо проходит сотрудница строительного с беджиком «группенфюрер», в смысле — «тимлид». Спрашиваю:

— А почему нет касс с людьми? Мне вот не хочется, чтобы кассиров увольняли, если мы все покупатели пойдём к автоматам.
— А вы никого и не уволите. Проблема не в том, что мы хотим уволить людей.
— А в чём?
— В том, что мы не можем их нанять. Никто не хочет идти работать кассиром. И я могу людей понять: зарплата на этой позиции небольшая, весь день на ногах, и работа, мягко говоря, не самая интересная.
— А может, им денег просто побольше предложить?
— Так мы и так платим уже в два раза с гаком больше минималки! Но вы и меня поймите: сколько, по-вашему, должен зарабатывать человек, все способности которого сводятся к тому, чтобы просканировать штрих-код и сказать «спасибо за покупку»?
— Да… вы правы…
— Вот именно. Не так всё просто.

И, помолчав, добавляет:
— Если вам нужна помощь с кассой-автоматом — я помогу. Я-то пока ещё не автомат.

Permalink to this post

[syndicated profile] bleeping_computer_feed

Posted by Sergiu Gatlan

Internet security watchdog Shadowserver tracks nearly 800,000 IP addresses with Telnet fingerprints amid ongoing attacks exploiting a critical authentication bypass vulnerability in the GNU InetUtils telnetd server. [...]
[syndicated profile] bleeping_computer_feed

Posted by Sponsored by Nudge Security

Okta misconfigurations can quietly weaken identity security as SaaS environments evolve. Nudge Security shows six Okta security settings teams often overlook and how to fix them. [...]
[syndicated profile] bleeping_computer_feed

Posted by Bill Toulas

The defense mechanisms that NPM introduced after the 'Shai-Hulud' supply-chain attacks have weaknesses that allow threat actors to bypass them via Git dependencies. [...]

(no subject)

Jan. 26th, 2026 04:46 pm
kaffeesahne: (2022)
[personal profile] kaffeesahne
Про выставки

Карл Брюлов в Третьяковке

Мы туда выбрались маленькой толпой на зимних каникулах. Вообще, конечно, с каникулами в Москве такое дело: вечно думаешь, что вот я сейчас как вдарю по культуре, да как пройдусь по музеям, а как соберешься купить билет, так оказывается, что все так подумали, и билетов не добыть никак и никаких, а если удастся все-таки урвать, внутри оказываются полновесные толпы.
Но вернемся к Брюлову. Во-первых, я впервые вживую увидела Последний день Помпеи. Оказывается, по многочисленным картинкам в школьных учебниках я совершенно себе не представляла, насколько она огромная. А еще я не замечала, насколько она на самом деле статичная: люди все в драматических выразительных позах, как будто ах, я падаю, ах, я спасаюсь бегством, но на самом деле никто никуда не бежит, все замерли и стоят как мраморные статуи. Мраморные статуи, падающие с крыши – единственное, что там правда движется. Но вообще впечатляет.

А еще, конечно, много парадных портретов. На мужские мне было интересно смотреть, пытаться заглянуть в глаза, представить себе, что это был за человек, как он жил. Женские же все примерно на одно лицо: огромные лемурьи глаза, локоны, слегка наметившиеся усики (тогда так носили), длинная странно выгнутая шея, покатые, словно циркулем рисованные плечи, тоненькая талия. Мои подруги все обсуждали эти талии, мол, как же их, бедняжек, тогда затягивали в корсеты, я же ходила следом и бубнила, что видела с десяток видео разных историков моды, которые дружным строем рассказывают и показывают, что корсет вовсе не был таким пыточным инструментом, каким его принято описывать. Меня в свою очередь интересовали плечи. Хорошо, допустим, красавица в своей жизни ничего тяжелее веера не поднимала, так что мышцы у нее развиты совсем не так, как у современной женщины. Все равно, настолько кругло и покато? Подруги же мои пытались изобразить, что смотри, вот тут немножко сутулишься, шею вот так вот вытягиваешь… А потом мы оказались перед картиной с очередной такой же красавицей, талия, которую можно охватить пальцами, плечи полукругом, шей как у жирафика… а рядом с картиной висел маленький эскизик к ней же, черты лица размыты, а фигура вполне прорисована. Обычная фигура обычной стройной (но не худенькой, что ж тебя не кормят, не тоненькой, как тростиночка) девушки, с плечами обычной для представителя хомо сапиенс формы, с шеей без анатомических аномалий… Не так, чтобы это оказалось шоком, что мы, фильтров в инсте не видели, но забавно.

Еще там кроме парадных портретов были маленькие акварельки с пейзажами, и эскизы, и это тоже прямо интересно. И совсем не похоже на более известное парадное.

***

Прекрасные чудовища в ГМИИ им. Пушкина

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

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

***

Марк Шагал, там же в ГМИИ им. Пушкина

Вообще я Шагала, честно говоря, не очень. У меня нет какого-то обоснования, мол, это плохо и так не надо, просто я на него смотрю, и меня не штырит, так бывает. Но эта выставка мне понравилась. Правда, Шагал на ней ранний, с еще не сложившимся фирменным стилем, так что картины довольно разные, и на них интересно смотреть. А еще интересно смотреть, как молодой художник в поисках собственного стиля переосмыслял все, что плохо лежало, а что лежало хорошо, то перекладывал и переосмыслял. Тут, конечно, надо понимать, что Кса – искусствовед, она уже много лет читает лекции по истории искусства, а я все эти много лет на них исправно хожу. И вот именно на этой выставке оно внезапно выстрелило: вдруг стало понятно, что я смотрю на картину, и как наяву вижу, кому и в чем художник подражал. Ну и раз уж оно так удачно сложилось, мы с Ксой ходили от картины к картине и перебрасывались: «Здравствуй, Сезан! – О, привет, Пикассо! – Слушай… Родченко? А, Кандинский! – А как ты думаешь, он мог видеть Ван Гога? Не мог? Хм, а кажется, что видел…» Прямо такой умной себя чувствуешь, душа радуется.
А еще там картины времен первой мировой, и на них меня поднакрыло. Как-то так вышло, что я очень мало знаю про первую мировую войну. В моем детстве на тебя отовсюду лезла вторая, а первая шла в жесткой сцепке с революцией, и бесшовно перетекала в гражданскую, т.е. было ощущение затяжной мясорубки, но скорее как «тогда так носили», без подробностей. К тому же возрасту, когда я могла бы это у себя в голове разъединить и разобраться, мне настолько обрыдли вся эта тема и все это время, что никуда я разбираться так никогда и не полезла. А тут смотрю на эти картины, болезненные, на проораться, и думаю: вот люди жили. Последнее серьезное общественное потрясение – отмена крепостного права – случилось пятьдесят лет назад, с тех пор все как-то наладилось и устаканилось. Понятно, что и всякие войны и эпидемии, и прочие пакости случались, куда без них, но в целом нормально жили. А тут еще новый, новенький, ненадеванный век. Новые технологии – вы только подумайте, тут тебе и электричество, и телефон с телеграфом, и кино, и воздухоплаванье, это же с ума сойти. Новые идеи, новые пути в искусстве. Голова кружится. И вдруг тебе на эту голову обрушивается небо. Бедные котики. Бедные мы все.

***

Свой человек. Владимир Гиляровский, музей русского импрессионизма

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

Благодаря компоновке по темам, рядом оказались очень разные картины, вот что-то очень классическое, изображение «как в жизни», как на фотографии, а вот что-то из многочисленных задорных -измов того времени. И никто не хуже и не лучше, просто разные, вполне мирно сосуществуют, нам на радость. Много картин художников, о которых я даже и не слышала, хотя, вроде бы, я слышала о многих. Отличные причем картины, я страшно рада, что довелось их увидеть. Одну я даже сфотографировала – надо знать, как я не люблю людей, фотографирующих на выставке все подряд, чтобы оценить, насколько она меня зацепила.
И вот тоже смотришь на этот буйный цветник и думаешь: а спустя каких-нибудь десять лет от этого прекрасного разнообразия останется один только соц.реализм. Эх.

После этой выставки я аж подписалась на канал музея, чтобы не пропустить следующую, мне кажется, у них самые крутые выставки в Москве, но их как-то совсем не рекламируют.
dna2: (Default)
[personal profile] dna2
Представили публике новый номер - Макинтош ламент, основанный на старой мелодии (пиброх) с добавленным гармонированием.
Народ хвалил, даже профмузыканты из публики остались довольны.

Совсем небольшой кусочек, выдранный из Инсты.


don_katalan: (Default)
[personal profile] don_katalan
Alexander Kovalenko

почему «обнулились» возможности «космической сверхдержавы» и что будет дальше


На днях стало известно о провале проекта российского аналога Starlink, ответственность за реализацию которого на себя взяла компания “Бюро 1440”. Она не смогла в течение года произвести первые 16 низкоорбитальных спутников широкополосного доступа в интернет, которые и должны были стать первой рабочей партией на орбите.

Хроника «катастрофы»
Такой результат не удивил. В апреле прошлого года в статье "В России "серьезно озаботились" аналогом Starlink: кому поручен проект и насколько реально переплюнуть детище Маска" я отметил ряд факторов, согласно которым современная российская космическая отрасль никак не сможет потянуть настолько амбициозный и высокотехнологичный проект, как Starlink.
Согласно российским планам, компания "Бюро 1440" (бывший "Мегафон 1440") должна была к 2030 году запустить в космос 292 космических аппарата и 91 на замену тем, которые отслужили свой срок. Стоимость проекта оценивают в 445 миллиардов рублей или почти 5 млрд долларов по неустойчивому курсу.Read more... )

Ы...

Jan. 26th, 2026 07:29 pm
pargentum: (Default)
[personal profile] pargentum
https://hardware.slashdot.org/story/26/01/26/0035209/washington-state-may-mandate-firearm-blueprint-detection-algorithms-for-3d-printers?utm_source=rss1.0mainlinkanon&utm_medium=feed

Интересно представить, какие такой алгоритм мог бы давать ложные сработки.
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

На зимних дорогах под Осануэва, в окрестностях Айзенграта

мамонт

Когда ночь сменилась синими предрассветными сумерками, на дороге попалось нечто совсем уникальное: огромный холм рыжей шерсти, неторопливой трусцой тащивший сани. В зеркале заднего вида мелькнули длинные клыки и хобот.

[syndicated profile] bleeping_computer_feed

Posted by Sergiu Gatlan

CISA has flagged a critical VMware vCenter Server vulnerability as actively exploited and ordered U.S. federal agencies to secure their servers within three weeks. [...]

обед

Jan. 26th, 2026 12:45 pm
ryjii_kot: (Default)
[personal profile] ryjii_kot
Ходили вчера на обед к рыцарям. В этом году они сделали обед позже, обычно он к ближе к рождеству/новому году. Заведение маленькое, но очень приятное. То, что там вкусно готовят, я знала, мы у них берем меню на рождество и пасху, но всегда на вынос, внутри никогда не сидели.
Read more... )

(no subject)

Jan. 26th, 2026 12:53 pm
alvano: (Default)
[personal profile] alvano
Це ж добре, коли ти маєш два кота й можеш висловлюватись про світову політику.
Чі не так?:))
ratomira: (Default)
[personal profile] ratomira
 Вижу, что те, кто в начале полномасштабной войны переехали за границу, думают, что в Украине при отключениях света все сидят в темноте при свечах. Хотя свечи на самом деле в 2026 году - это совсем какой-то крайний вариант. 

Вчера заходила в Аврору, по-прежнему настольные led-лампы с аккумуляторами стоят 200 с чем-то гривен (4-5 евро). Упаковка свечей на 10 дней примерно так же и стоит, поэтому явно выгоднее купить led-лампу. 

Если свет включают хотя бы на 3 часа за сутки, то используются led-лампы на аккумуляторах, которые успевают заряжаться, используются только вечером и горят ярче свечей.

Если блекаут и больше суток нет света, но светит солнце, то эти led-лампы можно подзарядить на солнечной батарее. 

Если led-лампы разрядились, то можно включить гирлянду на USB от павербанка, она мало энергии потребляет, хотя и не так ярко светит.

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

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

Ретро музей в Варне

Jan. 26th, 2026 12:57 pm
slava68: (Default)
[personal profile] slava68
Мне очень понравилось. Даже не ностальгия, нет такого, чтобы хотелось в СССР, где спина не болела и девчонки давали :-)
Прямо ВПЕЧАТЛИЛА сохранность экспонатов. Большинство выглядит лучше, чем в то время с завода выходили. Сама организация выставки - свет не бликует в стёклах витрин, освещение идеальное для фотографии. Размер выставки такой, что два часа времени требуется только чтобы "быстренько пробежаться". Нормально всё рассмотреть, а если ещё и обсудить , то часа 4 надо, не меньше. Экспозиции организованы так, что например, рядом с автомобилем Чайка стоит восковая фигура водителя, ожидающего своего Первого секретаря обкома партии. Меня на такой Чайке отвозили летом в пионерский лагерь в 85-86 году. В то время это не вызвало абсолютно никакого ВАУ-эффекта ни у детей ни у взрослых. Таблички на болгарском языке. Прикольно находить в голове аналогичные фразы из нашего советского прошлого.

Сигареты, которые я курил с третьего по восьмой класс средней школы :-)
Местной Тамбовской Моршанской фабрики :-)


Такой телефончик у нас был, даже номер помню - 3-56-81.


И вот такая машинка была, только белая.
Вот побольше фоток. Рекомендую: https://imgsrc.ru/slava_68/87139156.html
Снимал на телефон, т.к. был не готов к такому мероприятию.

Насколько же легко нам дурили голову в то время, что мы живём в самой лучшей стране, а все остальные страны нам завидуют. Не было доступа ни к какой другой информации. Это сейчас некоторые уже поняли, что "СССР - страна тотальной лжи", но в то время мы никак не осознавали это. "Голоса" появились только в 1987 году и мы слушали их на вот таком радиоприёмнике:


Я, только примерно к 1992 году начал задумываться о том, как живут в других странах. Но реальный "перелом сознания" произошёл только после моей первой поездки в заграницу на обучение по GSM в 1997 году.
У нас была бесплатная связь, т.к. мы работали на АМТС, и я каждый вечер звонил жене и рассказывал, что видел за день. Она тоже с трудом верила. Очень сложно наложить такую новую информацию на имеющийся фундамент знаний. Я ещё и фотографии потом привёз: улицы, дома, машины .... :-))) Так забавно всё это выглядит с сегодняшних вершин.
ratomira: (Default)
[personal profile] ratomira
 Если при отключениях света я просто работаю на ноутбуке и не включаю никакую музыку, видео и прочее, то павербанк для ноутбука разряжается еще медленее: не на 10% в час, а всего на 7% в час. То есть у меня потенциально даже не 10 часов, а 14 часов + сколько еще выдержит сама батарея ноутбука (еще 2-3 часа). С помощью быстрой зарядки павербанк для ноутбука полностью заряжается за 3 часа. 

don_katalan: (Default)
[personal profile] don_katalan
Alexey Kucherenko
Тепер зверну вашу увагу на відверті маніпуляції так званих «антикорупціонерів» на чолі з головою профільного комітету Герусом стосовно скандального аукціону «Енергоатому».
А ви не задавалися в принципі питанням - що це відбувається?!
В умовах жорсткого дефіциту державний монополіст, який тримає 60 відсотків генерації, виходить на так званий «аукціон» та продає електроенергію собівартістю 1.3 грн по ціні 7.5 грн тобто майже в 6 разів собівартості!
І вся ця зграя «антикорупціонерів» якось не звертає абсолютно на це уваги - вони більше стурбовані хто і скільки заробить на перепродажу цієї е/е!
Де відомий «антикорупціонер» Ніколов, де Железняк, де Кудрицький, де Зеркаль, де Герус, де Совсун та Шабунін???!!!
Вони дуже прискіпливі до завищення на 15-20 відсотків цін при закупівлі на тендерах, але не помічають надприбутку в 600 відсотків гіпермонополіста!Read more... )
kampfflieger: (Default)
[personal profile] kampfflieger
В чем, собственно, суть "проблемы нелегальной миграции" в США.
Как мы помним, количество мест в нижней палате от того или иного штата зависит от населения этого штата. Чем больше жителей, тем больше мест. При этом, число мандатов фиксировано - 435. То есть, с изменением демографии общая сумма не меняется (435), но мандаты перераспределяется между штатами. Это происходит каждые 10 лет по итогам регулярной переписи.
Хуже того, "коллегия выборщиков" на выборах президента тоже зависит от населения штата, каждый штат дает в коллегию количество мест = 2 сенатора+количество представителей (депутатов нижней палаты)
Так вот, левацкая политика, проводимая много лет, привела к перетоку населения в "правые" штаты, такие, как Техас или Флорида, которые постоянно увеличивают число своих депутатов и, соответственно, членов коллегии выборщиков.
В ответ демократы начали завоз нелегалов, которые по их задумке должны не только компенсировать эти потери, но и создать ситуацию, в которой демократы всегда побеждали бы на выборах. По этой причине, кстати, демократы категорически против удостоверений личности на выборах, ибо пока еще право голоса связано с гражданством.
Это главная причина. Это вопрос власти. Все остальное, весь этот неомарксизм, и прочая якобы любовь к меньшинствам идет к ней прицепом.
И это кстати, прекрасный пример того, как искусственно созданные и навязываемые силой институты всегда приводят к проблемам. Вроде бы такая невинная вещь, как формула, определяющая число мест в "органе власти", а вокруг - кровь, грязь, ненависть. Не бывает хороших конституций. Не бывает хороших избирательных систем. Все навязанные сверху с помощью силу конструкции, какими бы невинными они не казались, рано или поздно приводят к п-цу.
don_katalan: (Default)
[personal profile] don_katalan
Кcтaти, бля бaнaльнaя (или юля, нe фaкт шo oпeчaткa), в cвoeм зaдaнии из цeнтpa - видoce, гдe oнa oткpoвeннo и ocoзнaннo пытaeтcя oтмыть вcex кaцaпoв, кoтopыx «вынyждaeт» идти yбивaть yкpaинцeв пyтин и oтcyтcтвиe дeнюx, в oчepeднoй paз пoдтвepждaeт тo, o чeм yкpaинцы гoвopят дaвнo:
Пpoблeмa нe в пyтинe, нe-a. Пpoблeмa в тoм, шo нa poccии 140 млн пyтиныx. Ecли этoт пyтин зaвтpa cдoxнeт, тo poccиянe выбepyт тaкoгo жe eбнyтoгo cнoвa.
Xoтя… cтoп. Нe, нe тaкoгo - чyть пoмoлoжe, нo eщe бoлee aгpeccивнoгo, eщe бoлee импepнyтoгo и eщe бoлee oтмopoжeннoгo, чeм нынeшний Кoн Чeн Ый.
A дeньги - этo тaкoe. Ибo в 2008 гoдy pycня, нe cмoтpя нa цeны нa нeфть, cпoкoйнo cxaвaлa тo, шo пидapacы, poccиянe тo ecть, пoпиздили в Гpyзию зaшшышaть xyй пoйми кoгo oт xyй пoйми кoгo. Дeньги - втopичнaя xyйня и нe являютcя ocнoвным фaктopoм тoгo, чтo poccиянe нe пpoтив тoгo, чтoбы пoexaть кyдa-тo кoгo-тo пoyбивaть.
Нy или ктo-тo мoжeт вcпoмнит митинги пpoтив вaгнepoв? Нe cлышy.
Oтoж.Read more... )

(no subject)

Jan. 26th, 2026 11:47 am
norian: (Default)
[personal profile] norian
Гибридная Графовая База Данных (отвертка с моторчиком для моделирования моделей)

День 8. Индексы : дерево поиска, фингеры.

Можно было бы сделать унылое красно-черное бинарное дерево, но лучше попробовать дерево с чанками, которые для улучшения производительности помещаются в кэшлайн подобно чанком цепи индексов. Это называется "n-ary tree" или "m-ary tree" или "N-M tree" в зависимости от фазы луны.

Каждый элемент узлового чанка (ака фингер) содержит минимальный ключ, максимальный ключ и указатель на чанк цепи индексов или чанк дерева поиска. Для унификации операций используются функции-предикаты, которые передаются в качестве параметра.

source egFingers.h

#pragma once
#include <iostream>
#include <fstream>
#include <vector>
#include "egCoreIndexTypes.h"
#include "../service/egByteArray.h"
#include "../service/egFileType.h"
template <typename KeyType> class EgIndexes;
// Finger in the file: KeyMin KeyMax nextChunkOffset isLeaf(root only)
// Chunk in the file:  FingersArray parentFingerOffset chunkIsLeaf fingersCount 
template <typename KeyType> class EgFingers { public: // fingers tree (N-M type) part of indexes-fingers complex
    const egMaxStreamSizeType nextChunkOffsetPosition  = sizeof(KeyType) * 2; //  + sizeof(keysCountType); 
    const egMaxStreamSizeType oneFingerSize        = nextChunkOffsetPosition + sizeof(uint64_t);  // last is next chunk offset
    const egMaxStreamSizeType rootHeaderSize       = oneFingerSize + sizeof(uint8_t); // bool isLeaf as uint8_t
    const egMaxStreamSizeType parentChunkOffsetPosition = egIndexesSpace::egChunkCapacity * oneFingerSize;
    const egMaxStreamSizeType chunkIsLeafPosition  = parentChunkOffsetPosition + sizeof(uint64_t);
    const egMaxStreamSizeType chunkCountPosition   = chunkIsLeafPosition  + sizeof(uint8_t);
    const egMaxStreamSizeType fingersChunkSize     = chunkCountPosition  + + sizeof(keysCountType); // bool isLeaf as uint8_t
    const bool  isRootFinger  = true;  // mnemonic
    const bool  notRootFinger = false; // mnemonic
    bool        rootFingerIsLoaded {false};
    bool        anyMinMaxChanged;
    std::string fingersFileName;
    egFinger<KeyType> rootFinger;
    egFinger<KeyType> parentFinger;
    egFinger<KeyType> currentFinger;
    egFinger<KeyType> newFinger;
    egFinger<KeyType> lastFinger;
    EgIndexes<KeyType>*               indexChunks {nullptr}; // ptr to related indexes object, set by upper IndexesFiles interface class
    std::vector < egFinger<KeyType> > fingersChain;          // store fingers path for update
    EgFileType        fingersFileStream;     // file operations
    EgDataStream*     localStream {nullptr}; // chunk buffer operations
    EgFingers(std::string a_fingersName, EgIndexes<KeyType>* indexChunksPtr);
    ~EgFingers() { delete localStream; }
    inline void InitFinger(egFinger<KeyType>& theFinger);
        // top API
    bool AddNewRootFinger(KeyType& Key, uint64_t indexesChunkOffset);
    bool FindIndexesChunkToInsert(KeyType& Key); // sets currentFinger and fingersChain
    bool UpdateFingersChainUp();        // uses currentFinger and fingersChain
    bool AddNewUpdateCurrentFinger();   // uses current and new fingers and fingersChain
    bool DeleteCurrentFingerByChain();  // uses currentFinger and fingersChain
    bool UpdateFingersByBackptrs();     // uses currentFinger (another index chunk, can't use chain)
    bool DeleteFingerByBackptrs();      // uses currentFinger (another index chunk, can't use chain)
        // files
    bool CheckIfFingerFileExists(){ return fingersFileStream.checkIfExists(); }
    bool DeleteFingersFile();
        // file ops
    inline bool LoadRootFingerFromFile (egFinger<KeyType>& theFinger, bool loadRootIsLeaf);
    inline bool StoreFingerToFile  (egFinger<KeyType>& theFinger);
    inline bool LoadFingersChunk  (uint64_t& chunkOffset); // to localStream-> bufData
    inline bool StoreFingersChunk (uint64_t fingersChunkOffset); // from localStream-> bufData
    inline bool StoreParentChunkOffsetDirect(uint64_t fingersChunkOffset, uint64_t parentChunkOffset);
    void SwapFingers(); // swaps current and new fingers for finger tests (if new key < current key)
        // chunk operations
    inline void ClearFingersChunk ();
    inline void ReadFingerFromChunk (egFinger<KeyType>& theFinger, const int fingerPositionNum);
    inline void WriteFingerToChunk (egFinger<KeyType>& theFinger); // QDataStream &localFingersStream,
    inline void ReadChunkMinMaxToParentFinger (egFinger<KeyType>& theParentFinger);
    inline bool GetParentFingerByOffset(uint64_t fingersChunkOffset, uint64_t nextOffset); // uses current finger
        // finger ops
    inline bool FingerIsRoot(egFinger<KeyType>& theFinger);
    inline void GetCountFromChunk(keysCountType& refCount);
    inline void WriteCountToChunk(keysCountType theCount);
    inline void GetCountDirect(keysCountType& refCount, uint64_t& chunkOffset);
    inline void GetChunkIsLeaf(uint8_t& isLeaf);
    inline void UpdateChunkIsLeaf(const uint8_t chunkIsLeaf);
    inline void GetChunkParentOffset(uint64_t& parentChunkOffset);
    inline void UpdateChunkParentOffset(uint64_t parentChunkOffset);
        // insert ops
    inline bool AppendNewFingersChunk(egFinger<KeyType>& theFinger);
    inline bool AddNewTopLevelChunk(); // ex AddNewSubRootChunk(); FIXME level number used
    inline void MoveTailToInsert(egMaxStreamSizeType fingerPositionBytes, egMaxStreamSizeType bytesToMove);
    inline void SaveLastFingerOfChunk();
    inline bool InsertNewFingerToChunk(); // bool replaceLast InsertSplittedFinger();
    // int SplitFingersChunk(); // TODO
        // update ops
    inline bool UpdateMinMaxByFlags(egFinger<KeyType>& theFinger);
        // delete ops
    inline bool DeleteFingerFromChunk(); // uses current and chunk
    inline bool DeleteFingersChunk(uint64_t fingersChunkOffset);
    inline bool DeleteTopChunk();
        // lookups
    typedef bool (*CompareFunctionType) (KeyType&, KeyType&);
    // static bool CompareEQ (KeyType& currentValue, KeyType& key) {return (currentValue == key);}
    static bool CompareGT (KeyType& currentValue, KeyType& key) {return (currentValue > key);}
    static bool CompareGE (KeyType& currentValue, KeyType& key) {return (currentValue >= key);}
    static bool CompareLT (KeyType& currentValue, KeyType& key) {return (currentValue < key);}
    static bool CompareLE (KeyType& currentValue, KeyType& key) {return (currentValue <= key);}
    inline bool OpenFileStream();
    bool FindIndexChunkEQ(KeyType& Key);    // first finger for key greater or equal then finger's min value
    inline void FindFirstFinger(KeyType& Key, CompareFunctionType predicate);
    inline void FindLastFinger(KeyType& Key, CompareFunctionType predicate);
    bool  FindIndexChunkLess(KeyType& Key, CompareFunctionType predicate);
    bool FindIndexChunkLT(KeyType& Key) { return FindIndexChunkLess(Key, CompareGE); }
    bool FindIndexChunkLE(KeyType& Key) { return FindIndexChunkLess(Key, CompareGT); }
    bool  FindIndexChunkGreater(KeyType& Key, CompareFunctionType predicate);
    bool FindIndexChunkGE(KeyType& Key) { return FindIndexChunkGreater(Key, CompareLT); }
    bool FindIndexChunkGT(KeyType& Key) { return FindIndexChunkGreater(Key, CompareLE); }
        // debug
    void PrintFingerInfo(egFinger<KeyType>& fingerInfo, const std::string theMessage);
};

[syndicated profile] dxdt_feed

Posted by Александр Венедюхин

Сurl отказывается от программы вознаграждений за найденные уязвимости (bug bounty), которая несколько лет работала на базе Hackerone. Основная причина: затапливание “ИИ-помоями” (ложными и абсурдными сообщениями об уязвимостях, сгенерированными ИИ/LLM), которые отнимают очень много ресурсов разработчиков, но не несут с собой ничего полезного для проекта.

Profile

gmz: (Default)
Михалыч

February 2026

S M T W T F S
1234567
891011121314
15161718192021
22232425262728

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 2nd, 2026 04:38 pm
Powered by Dreamwidth Studios