Pull to refresh
4
0.1

Пользователь

Send message
  1. Страна Вина. Мо Янь.

  2. Записки о кошачьем городе. Лао Шэ

  3. Метаморфозы, или Игра в складные картинки. Ван Мэн

  4. Исповедь бывшего хунвейбина. Лян Сяошен

  5. Мужской Характер. Чжан Сяньлян

  6. В долине лотосов. Гу Хуа

  7. Цветы хлопка. Те Нин

  8. Полночь. Мао Дунь

  9. Осень. Ба Цзинь

  10. Человек прежнего течения Хуанхэ. Ван Аньи

Выше список, в свое время делал для издательства список. Если из малой прозы: Лу Синь обязательно, рассказы Ван Мэна тоже. Го Можо и Мао Дунь - по желанию.

Раз уж речь зашла об эффективной реализации Хаффмана, то просто для комплекта оставлю ссылку на блог человека, который реально заморочился производительной реализацией кодирования/декодирования Хаффмана (и не только) на реальном железе.
Там большой цикл постов, предыдущие и следующие статьи несложно найти по истории блога.
Написано очень хорошо и увлекательно, особенно для тех, кто заинтересуется этой темой.
https://fgiesen.wordpress.com/2021/08/30/entropy-coding-in-oodle-data-huffman-coding/

В середине 2000-х читал про производство титановых рам в России. С помощью поисковика освежил память, нашёл статью https://bike4u.ru/articles/1063/ - оказывается, их было несколько, но осталась, вероятно, только королёвская и нижегородский Титан. По остальным сайты не открываются, а темы на Веломании заброшены.

Мастера титановых изделий» (МТИ) http://extreme.udm.ru/mti из Ижевска. С 1993 года начали выпуск элитных титановых велорам и комплектующих к ним, предназначенных для спортсменов и туристов. Имеют хорошую производственную базу и некоторые уникальные технологии. Используют сплавы Grade 9, ОТ4 и ВТ6.

Фирма «РАПИД», (г.Королёв, ул.Лермонтова, д.7) была основана в 1992 году бывшими работниками аэрокосмической отрасли, специалистами из НПО «Энергия». Для трубных конструкций предпочитают сплавы ОТ4-0, ОТ4-1. РАПИД экспортирует свою продукцию - велосипеды и инвалидные коляски в различные страны мира, например: Англию, Германию, Францию, Канаду, Японию. Продукция известна под марками: "КОСМО" (www.kocmo.de), "Titanium Red", в России "Оzon"(www.oldibike.ru).

«Формула Тi», с 1991г. на базе НИАТ (Национального Института Авиационных Технологий) производит титановую велопродукцию, которую отличает превосходная раскатка и широкое применение батированых, в том числе конических, труб. Стандартный сплав ОТ-4. В 1996 году стала представительством американской фирмы “RVT” - ведущего производителя титановых велорам в США. Контроль качества налажен при участии этой фирмы. Одно время ФТи работала исключительно на американский рынок. Постоянные партнеры - американские фирмы: Ti-Cycle, RVT; шведские: Magmaa (http://www.magmaa.com), Peter; чешский велоклуб Budviser. Рамы ФТи были взяты на вооружение многими профессиональными командами, такими как итало-российская «Руслотто».

"Титан-Россия" из Нижнего Новгорода тел.8(8312)73-42-91, на базе "Красного Сормова", отточившего титановую технологию на атомных подлодках "Барракуда". Выпускала рамы и вилки для Италии по дизайну Colnago. Сделано некоторое количество рам под маркой "Атом". Производство ориентировано в основном на сплав ПТ-7М, хотя производились изделия и из ВТ1-1. Прочитать об этой фирме можно здесь: www.business-magazine.ru/newbusiness/33237/

Фирма «ЮСВ» из Нижнего Новгорода (тел.+78312 78-08-98) - производство титановых рам, вилок. В феврале 1996 года рама ЮСВ модели Big Bone под торговой маркой DNA прошла испытательный тест британского бюро стандартизации BSI. Тест показал более высокую надежность изделия, в сравнений с аналогами (на 10%). ЮСВ  выпускал   рамы  для  Pinarello  (IT),  Omega  (UK),  Dean  (US), Schauff(Germany), выноса для Titeс (US), поставщик велосборной Португалии. Принципиальным является то, что ЮСВ с 1998 г. единственное Российское предприятие широко использующее углепластик при конструировании рам. Им   принадлежит   безусловный   мировой   приоритет  в  создании  композитной (титан-углепластик) рамы, представленной на выставке Eurobike в 1998 г.

Еще на Украине есть https://pridebikes.com/ , судя по сайту и обзорам, они более-менее серийно титановые модели выпускают.

Эх, ну поехали.

  1. F+ - "отечественный бренд" китайской нонейм-сборки. Roverbook, DEXP, Elenberg - тысячи их были есть и будут, эти Собственные Торговые Марки. "Красная цена", "365 дней" и иже с ними.

  2. Infinix - хз, ноутбуки не видел, видел ультрабюджетные смартфоны. Все вторично, устаревшие процессоры Mediatek, глючный софт - в общем, ничего удивительного. Один из многих китайских полуподвальных производителей 3 эшелона. Если бы можно было бы встраивать "три симкарты и телевизор" в 2023 году - они бы там были.

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

  4. Realme - не могу сказать ничего про них. Надеюсь, что инжиниринг, поддержка и контроль качества у них будет хотя бы такой же, как у их телефонов. Вполне может стать "топом за свои деньги" в этом случае. Хотя верится в этом с трудом.

  5. Tecno. Скорее всего ОДМ/ОЕМ на основе дизайна какой-нибудь фабрики. Можно поискать по фотографии на алиэкспресс - вероятно встретится и под другими брендами. У клиентов имеется пару штук в конторе, з/у 12В 2А с тонким штекером, лично у меня вызывает весьма странные ощущения не очень качественной - скорее "сырой" вещи.

  6. Thunderobot. Игровые машины под этим брендом - фактически перебрендированный Clevo. Погуглите, убедитесь, что модель, которую вы хотите купить - Clevo, если да - в целом будет качественно, можно смело покупать, разумеется с учетом возможных вопросов гарантии - с ней пока все сложно.

  7. Chuwi. Чуви - это чуви, это сам по себе отдельный мем в узких кругах. Реально очень интересные машинки по разительно (в разы) низкой цене и хоть какому-то качеству в свое время, да еще с необычным соотношением экрана 3:2, подсветкой клавиатуры... И чудовищной лотереей - процент брака высок, гарантия в Китае (нет). В случае получения неудачного экземпляра можно прожечь стул. Более подробно можно причаститься на 4pda.

  8. Echips - первый раз узнал из этой статьи.

  9. Machenike. Игровые ноутбуки. Опять же Clevo (в этом случае goto п.6)., иногда встречается в недорогих конфигурациях Tsinghua Tongfang (THTF) - в этом случае читаем дальше. В дешевых, совсем дешевых - может встретиться даже совсем трэш неизвестного производства. Про него ничего не скажу. Про недорогие конфигурации - Tongfang, в отличии от Clevo, не только производит ноутбуки для "мошенников" и "Maibenben", и раздела китайских ноутбуков на 4pda, но и имеет свой бренд Mechrevo для розницы. Т.е вы можете увидеть один и тот же ноутбук под разными брендами. В целом, по сравнению с Clevo "пожиже", все на уровень ниже - софт управления подсветкам и охлаждением не ахти (очень не ахти, это ужоснах и мучение), некоторые косячки в мелочах эргономики, которые в Clevo за десятилетия уже не встретить, более дешевый и бюджетный пластик. В целом работает, но ощущение почему-то как будто купил Chuwi...

Вообще про потроха всего системного лучше всего читать на osdev, в частности https://wiki.osdev.org/System_Calls

Раз вы уже в танке, то вам не принципиально.

Все сам смотрел, и всё советую. Единственное - мои вкусы довольно специфичны, я в принципе в основном предпочитаю триллеры и хорроры) Ниже как сильно нишевые, так и фильмы для более широкой аудитории вперемешку.

Фильмы:
https://www.kinopoisk.ru/film/944958/ - топовый атмосферный хоррор с корейским колоритом, работает не на скримерах (с него я зашёл в корейское кино вообще)

https://www.kinopoisk.ru/film/1048563/ - с кинопоиска: "Между тихоней и эффектным богачом встает загадочная девушка. Гипнотическая драма по рассказу Харуки Мураками"

https://www.kinopoisk.ru/film/65770/ - Пон Джун-Хо (Паразиты) в моём любимом жанре "триллер про поимку маньяка"

https://www.kinopoisk.ru/film/581844/ - уже другой режиссер в том же жанре

https://www.kinopoisk.ru/film/851960/ - "Служанка". Сложно описать, но смотреть обязательно.

https://www.kinopoisk.ru/film/943897/ - для тех, кто как я любит ужастики про экзорцизм (и посмотрел все с оценкой выше 6, поэтому полез к азиатам)

https://www.kinopoisk.ru/film/909848/ - немного об экоповестке и гуманности от режиссера паразитов (никогда не помешает, правда, фильм хороший). В роли "Круэллы" - Тильда Суинтон.

https://www.kinopoisk.ru/film/983082/ - очень крутой триллер про стареющего маньяка с потерей памяти. В напряжении до самого конца!

https://www.kinopoisk.ru/film/410597/ - драма от Пон Джун-Хо.

https://www.kinopoisk.ru/film/1197741/ - триллер. С кинопоиска: " ... Со-ён потеряла мобильный, поэтому включает городской телефон и начинает получать странные звонки от девушки с просьбами о помощи. Выясняется, что незнакомку зовут Ён-сук, ей тоже 28 лет, и она живёт в этом же доме, но в 1999 году. "

https://www.kinopoisk.ru/film/1112788/ - прикольный фильм про бойца ММА помогающего экзорцистам! (нет, мне правда зашло)

https://www.kinopoisk.ru/film/1048226/ - топчик! Детектив/триллер о сверхъестественном, со смесью буддизма христианства и тд. Секты, загадки, древнее зло - все что нужно для счастья.

Сериал:
https://www.kinopoisk.ru/series/1351060/ - Механика как у кальмаров, но тут про секту и демонов из ада.

Кстати, крутой французский хоррор сериал - Марианн
https://www.kinopoisk.ru/series/1297198/

https://www.kinopoisk.ru/series/1293403/ - Японский сериал про геймеров, попавших в параллельный мир, с механикой кальмара (причём вышел раньше).

Мда, без нетфликса стало явно грустнее, многое я нашёл именно там.

Лучшая лекция про времена в английском языке.

Видео длинное, но вы не пожалеете потраченное время.

Я думаю гораздо правильней было бы публиковать здесь не ссылку на мотивационную статью, а ссылку на реальную статью с анализом тех данных о налогах:
https://www.propublica.org/article/the-secret-irs-files-trove-of-never-before-seen-records-reveal-how-the-wealthiest-avoid-income-tax

Рекомендую прочитать, там нет конкретных "рецептов", а описаны основные способы "уменьшения" налогов, но тем не менее, достаточно интересно. А для тех кому лень и кто верит не первоисточнику, а какому-то чуваку из комментов, вот резюме статьи:

Основная стратегия для уменьшения налогов - не получать доходов. В статье описываются пять основных направления как этого добиваются американские богачи:

1. Зарплата на официальном месте работы минимальна - в статье пишут о ЗП Джобса в 1$ в Аппле как не о жесте доброй воли, а как о способе НЕ получать налогооблагаемого дохода, а вместо реальной ЗП лучше получать активы в виде акций, услуг и материальных ценностей оплачиваемых компанией, естественно это же и про ЗП других (Безосов, Масков, ...), никто из них не получает космических ЗП, так как и налоги на такие зарплаты тоже космические (до ~40% от ЗП), поэтому у всех у них зарплаты обычных типичных клерков +-, а вот плюшки совсем не обычные.

2. Содержание всех своих потребностей кредитами под залог акций. (Это самое офигительное из статьи). И тут есть сразу два момента, где удаётся получить выгоду.
Первый момент - прямой:
вы получаете материальное обеспечение в замен на не материальное - ваши акции по сути это фантики, а вам за них дают в кредит реальные деньги, при чём, ваши акции остаются у вас всё это время (вы ведь не планируете просрочить кредит или ещё что-нибудь что-бы их у вас забрали?), единственное ограничение по сути, это то, что вы не можете взять второй кредит на эти же акции.
Второй момент - косвенный (и тут 2 громадных плюса):
а) полученные по кредиту деньги не облагаются налогом, это же не прибыль, эти деньги вам нужно будет вернуть (ну да, ну да) - то есть на ту же сумму акций вы получаете больше кеша, чем при прямой продаже акций (приблизительно на те самые ~40% налога на прибыль, а это же дофига). То есть - у вас есть 100 акций по 1$ каждая, при прямой продаже вы получаете 100$, но вынуждены заплатить 40% налога и у вас кешем осталось 60$. Но если вы возьмёте кредит в залог этих акций, то вы получите 100$ и вам не нужно платить налог, а акции остались у вас, просто "заблокированы".
б) достаточно часто банки дают смешные процентные ставки на такие кредиты, ведь там речь о суммах в млн или млрд денег, а не эти ваши кредиты 2 тыс на жильё в хрущёвке в центре. Поэтому достаточно часто там могут быть 1-3% (данные о кредитах сложно достать они не централизованы как налоги и 1-3% это из открытых источников (может правда, а может нет), но в любом случае, даже 10% кредитной ставки меньше 40% налога). И добавьте эту отличительную черту денег как Инфляция, с таким смешным процентом сам факт получения кредита уже становиться отличным способом сохранения состояния. И это мы сейчас не говорим о рефинансировании - отличном инструменте продления срока кредита с уменьшение его бремени.

3. Дивиденды по акциям - плохая идея. Здесь всё просто, дивиденды (как и зарплата) - это доход, а с него нужно платить налоги. А мы этого не хотим, поэтому мы пускаем прибыль компании не в дивиденды, а в развитие компании, заодно остальным акционерам показываем график бурного роста, это убедит их повременить с выплатами (приблизительно до никогда) и возможно даже принесёт дополнительные вливания со стороны. В итоге мы получаем, что не выплаченные дивиденды сегодня это рост стоимости акции завтра (компания же растёт), а завтра более ценная акция - это больше денег в кредит во 2-ом пункте.

4. Максимально сократить доход. Если так вышло, что вы получили много дохода, то эти деньги нужно срочно потратить на сферы снижающие % налога - благотворительность. В этой истории много возможных путей - от безобидных, до в принципе не легальных (но это ещё доказать нужно). К примеру можно купить картину, а можно перевести деньги в фонд спасения марсианских страусовидных бегемотов, которым управляет ваш сын/дед/....

5. Наследство. Если вы чувствуете, что вам уже пора, то в первую очередь нужно всё своё налогооблагаемое наследство (налоги по которому нужно будет выплатить уже не вам, а вашим наследникам, (проценты там так же могут достигать 40)) конвертировать в не налогооблагаемое, а ещё лучше в не_наследство. Эта часть самая не прозрачная, тут более менее чётких примеров нет, но приблизительно - вы своё богатство раздаёте всяким управленцам, фондам, что-то продаёте и так далее, в общем делаете всё, что-бы никаких домов/вилл по наследству не было. Фамильный дом никому из ваших наследников не нужен, они сами себе купят тот дом, который им понравится.


Прочитав эту статью стало понятно, почему все крупные игроки в США так трясутся за стоимость акции. Это нам кажется, что это фантики, а на деле, это кеш в почти чистом виде и без налогов.

За анализируемый период налогов выплатили (от объёма богатства):
Баффет - 0.1%
Безос - 0.9%
Блумберг - 1.3%
Маск - 3.2% (Маску в 16-ом году пришлось выплатить много налогов по опционам от Теслы, если бы не это, % налогов был бы около 1)

Сравните это с вашими 10-30% налогов от зарплаты в зависимости от формы юр лица.

TeamViewer — LogMeIn, Remote Desktop Connection, UltraVNC, TightVNC, join.me, Radmin, Anydesk, Ammy, Ассистент, RemoteUtilities, Litemanager, RealVNC, Remote Manipulator System (RMS), Aspia, Getscreen.me или getscreen.ru, Chrome Remote Desktop.
Немного букмарклетов, позволяющий бороться с навязчивостью создателей веб-ресурсов, считающих, что им виднее:

Разрешить операции копирования и вставки на странице:
javascript:(function(w){var%20arr=['contextmenu','copy','cut','paste','mousedown','mouseup','beforeunload','beforeprint'];for(var%20i=0,x;x=arr[i];i++){if(w['on'+x])w['on'+x]=null;w.addEventListener(x,function(e){e.stopPropagation()},true)};for(var%20j=0,f;f=w.frames[j];j++){try{arguments.callee(f)}catch(e){}}})(window);


Сделать доступными заблокированные поля:
javascript:(function(){function process(tag){var i,l,els=document.getElementsByTagName(tag);for(i=0,l=els.length;i<l;i++){els[i].readOnly = null;els[i].disabled = null;}}process('input');process('select');process('textarea');process('button');})()


Показать значения, скрытые за «звёздочками»:
javascript:(function(){var%20s,F,j,f,i;%20s%20=%20"";%20F%20=%20document.forms;%20for(j=0;%20j<F.length;%20++j)%20{%20f%20=%20F[j];%20for%20(i=0;%20i<f.length;%20++i)%20{%20if%20(f[i].type.toLowerCase()%20==%20"password")%20s%20+=%20f[i].value%20+%20"\n";%20}%20}%20if%20(s)%20alert("Passwords%20in%20forms%20on%20this%20page:\n\n"%20+%20s);%20else%20alert("There%20are%20no%20passwords%20in%20forms%20on%20this%20page.");})();


Показать все скрытые поля:
javascript:(function(){var%20i,f,j,e,div,label,ne;%20for(i=0;f=document.forms[i];++i)for(j=0;e=f[j];++j)if(e.type=="hidden"){%20D=document;%20function%20C(t){return%20D.createElement(t);}%20function%20A(a,b){a.appendChild(b);}%20div=C("div");%20label=C("label");%20A(div,%20label);%20A(label,%20D.createTextNode(e.name%20+%20":%20"));%20e.parentNode.insertBefore(div,%20e);%20e.parentNode.removeChild(e);%20ne=C("input");/*for%20ie*/%20ne.type="text";%20ne.value=e.value;%20A(label,%20ne);%20label.style.MozOpacity=".6";%20--j;/*for%20moz*/}})()
Для телефонных спамеров нужно:
— запись звонка;
— копия детализации, где виден этот звонок;
— заявление в свободной форме;
— форма согласия на обработку ПД для ФАС (форма строго определенная).
Подать можно через Госуслуги. Форму согласия на «звонковый» спам не помню, наврерное, как и на SMS-спам pikabu.ru/story/pro_sber_spam_i_aktivnuyu_grazhdanskuyu_pozitsiyu_6550117 Вообще они должны прислать список и образцы документов, если чего-то не хватает в заявлении. И потом надо приготовиться ждать ~год. Да, работают не быстро, но работают.
Parler централизованный (Gab или Minds и то больше подходят на эту роль). Signal тоже и еще номер телефона требует.

Предлагаю совместными усилиями составить список децентрализованных\федеративных проектов в этой ветке, дополняйте.

Мессенджеры:
Tox — p2p мессенджер (текст, аудио, видео)
Matrix — федеративный IM-протокол с клиентами в духе Discord или Slack (текст)
XMPP — без комментариев
Mesh — p2p мессенджер
Keybase — p2p мессенджер

Социальные сети:
Aether — p2p социальная сеть
Diaspora* — федеративный аналог Facebook
Friendica — федеративный аналог Facebook
Mastodon — федеративный аналог Twitter (на основе форка сделан Gab)
GNU Social — федеративный аналог Twitter
Twister — p2p аналог Twitter (проект заброшен, но работает)
Salut à Toi — децентрализованный Twitter на стероидах
Pump.io — федеративная социальная сеть
Patchwork — p2p социальная сеть
Kune — децентрализованная социальная сеть
Secure Scuttlebutt — p2p социальная сеть

Видеохостинги:
DTube — децентрализованный аналог YouTube
PeerTube — децентрализованный аналог YouTube

Поисковые системы:
YaCy — распределенный поисковик

Другое:
GNUNet — децентрализованная сеть
I2P — децентрализованная сеть
Tor — децентрализованная сеть
Freenet — децентрализованная сеть
Zeronet — децентрализованный хостинг
Yggdrasil — меш сеть
Beaker — браузер с поддержкой распределенного хостинга
Phantom — децентрализованный протокол анонимизации трафика
Unhosted — полудецентрализованный протокол хостинга

Драконовая книжка нынче совсем устарела. Очень много времени уделено теоретическим основам компиляторского фронтенда (ДКА, НКА), а всему остальному — мало.


Мои рекомендации по замене (не проверял наличие переводов на русский):


  • Bob Nystrom. Handcrafting Interpreters. Отличная книга, в которой дважды с нуля собирается настоящий интерпретатор, сначала простой на Яве, а потом хардкорный на Си: со сборщиком мусора, с замыканиями и пр. Полученных знаний хватит для написания умеренно-быстрого DSL. Чего будет не хватать после прочтения: типизации, оптимизации, компиляции в машинные коды. Точно пока нет русского перевода.
  • Benjamin C. Pierce. Types and Programming Languages. Серьёзная книга про системы типов. Чего не хватает: практики. К ней просто напрашивается книга-компаньон, в которой к простому интерпретатору прикручивается проверка типов
  • Eli Bendersky. Adventures in JIT compilation. Несколько блогпостов о JIT-компиляции Brainfuck. Даёт хорошее представление о том, что такое компиляция в машинные коды, как работают простейшие оптимизации в компиляторе

Каких книг не хватает (буду рад рекомендациям), от важных к менее важным:


  • Дизайн фронтенда для интеграции с IDE. Парсер правильных программ написать несложно. Парсер неправильных программ написать гораздо сложнее (кто пишет в Экселе на VBA, тот понимает, о чём я). Можно читать исходники компиляторов C# (Roslyn), Elm. Сугубо практическая тема, которой брезгают заниматься профессора CS, но очень необходимая.
  • Оптимизация. Все знают, что компиляторы умеют оптимизировать код, но я не нашёл книги, которая подробно рассказывает о различных представлениях кода, удобных для оптимизации (CPS, SSA), учит переводить в них свой код и содержит в себе каталог основных оптимизационных приёмов
  • Компиляция в машинные коды и линкование. Совсем редкая дисциплина, потому что
    • это не теория, а сугубая практика, зависящая от платформы и ОС
    • есть готовые ассемблеры и линкеры
    • есть "слон в комнате" LLVM, который глупо не использовать в качестве бэкенда, если вам действительно нужен свой компилятор не для саморазвития, а для решения практических задач
  • Алексей Иванов — Честная проза. Его текст про географа использовался в ЕГЭ по русскому языку в не-помню-каком году;
  • Максим Далин Хорошая фэнтези;
  • Сергей Плотников фэнтези, начиная с «Технического задания» — очень качественный текст, а в «Паутине света» глаза частенько спотыкались об ошибки;
  • Анатолий Нейтак — фэнтези и проза, пишет интересно в обоих жанрах;
  • Елена Клещенко Пишет интересно.

А вот всякие Барлионы, серые кочки, Полигоны, и прочие фэнтези-РПГ почти все выкладываются невычитанные, к сожалению. Видимо, «пипл хавает».

Лучше используйте для этих целей AES256, если вам нужно надежно, и RC4, если вам нужно быстро. Используйте HMAC-SHA3, если вам нужна симметричная подпись, или ECDSA, если нужна асимметричная. Используйте ECDH, если вам нужно согласовать симметричный ключ.


То, что вы сделали, просто ужасно — накинуть друг на друга кучку хэшфункций и добавить перестановку на основе значения хэша не делает ваше "шифрование" сколько бы то ни было безопасным, оно даже не делает его шифрованием. Все, что вы сделали, по сути, это слабую KDF-функцию, которую в псевдокоде, продравшись через php, можно представить следующим образом:


def get_pks_sha256(user1_md5, user2_md5, plaintext, salt):
    t = time_ns()

    sec = t // 1000000000
    usec = ((t % 1000000000) % 0x100000) % 0xF4240
    uniqid = sprintf('%08x%05x', sec, usec)

    attach_md5 = md5_hex(
        sha512_hex(utf8_encode(plaintext + uniqid + salt))
        + sha512_hex(utf8_encode(salt))
    )

    return sha512_hex(user1_md5 + attach_md5 + user2_md5)

def kdf(pks_sha512, key):
    ki = 0
    pos = 0

    for i in [0..]:
        ki = (ki + hex2dec(pks_sha512[i % 32])) % len(key)

        d = (i % 2) ? -1 : 1
        pos = (abs(300 * ord(key[ki]) + i * d)) % 2000

        if pos <= 65:
            pos = 65 * max(pos, 1) + 1

        if pos >= 2000:
            pos = 200

        yield pos

Все ваше шифрование заключается в том, что вы xor-ите кодепоинты вашего plaintext с бесконечным выхлопом этой kdf. Не надо так.


Плюс в вашей реализации еще и есть баги, которые вы не заметили — например, salt в конструкторе всегда перезаписывается независимо от его длины. Вы используете хэш в 32 байта, но ходите только по 32 байтам его шестнадцатеричного представления, которое имеет длину в 64 байта, и т.д.


И помните — очень легко сделать алгоритм, который вы сами не сможете взломать. Куда сложнее сделать такой, который не смогут взломать остальные. Потратьте время на обучение криптоанализу, разберитесь с криптографическими примитивами и почему они такие, разберитесь с векторами атак, в том числе по сторонним каналам, и только после этого вы сможете, возможно, обсуждать идеи обоснованно безопасных криптографических алгоритмов, а не просто сваливать все в кучу.

Некрокоммент, но может кому-то будет полезно.


1) Если не хочется заморачиваться с импортами своих .props и .targets файлов в каждый проект, то можно создать файл Directory.Build.props и/или Directory.Build.targets, которые импортируются автоматически.


2) Лучше избегать $(SolutionDir), потому что он существует только если солюшен строится из Студии. На билд-сервере ваши проекты будут строиться голым MSBuild, который использует .sln только чтобы получить список проектов и билд-завсимостей, после чего каждый проект строится изолировано от солюшена. Если надо привязаться к стабильному пути, то лучше использовать $(MSBuildThisFileDirectory), который равен пути к самому props/targets-файлу. Если такой файл лежит рядом c .sln, то это даст надёжный переносимый эквивалент $(SolutionDir).


3) Бывает так, что солюшен не плоский (все проекты в одной папке), а иерархическй, т.е. проекты разбиты по поддиректориям (например, пачка проектов в поддиректории Core, другая пака в поддиректории Client, третья — в поддиректории Server и т.д), и в таком случае на каждом уровне иерархии могут появляться собственные настройки, в дополнение к общим. Например, все проекты в Client подключают один набор заголовочный файлов и библиотек и используют один набор параметров, все проекты в Server — другой набор, и при этом все проекты вообще должны использовать общий solution-wide набор. В таком сценарии можно использовать комбо из приёмов 1 и 2, положив на каждом уровне иерархии по файлику Directory.Build.* примерно такого вида:


<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <!--  Импортируем вышележащий Directory.Build.props, если таковой есть. В самом верхнем файле этого можно не добавлять. -->
  <Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))" />

  <!-- Для удобства делаем короткий алиас для $(MSBuildThisFileDirectory)  -->
  <PropertyGroup>
    <_ThisDir>$(MSBuildThisFileDirectory)</_ThisDir>
  </PropertyGroup>

  <!-- Добавляем параметры, общие для всех подпроектов в данной иерархии -->
  <ItemDefinitionGroup>
    <ClCompile>
      <AdditionalIncludeDirectories>$(_ThisDir)Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ClCompile>
    <ResourceCompile>
      <AdditionalIncludeDirectories>$(_ThisDir)Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>

    ...

  </ItemDefinitionGroup>

</Project>

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


4) Лучше не использовать дефолтные $(OutDir) и $(IntDir), которые по умолчанию гадят прямо в папку проекта (in-source build), и приучиться всегда строить во внешнюю папку (out-of-source build), которая находится за пределами солюшена, и может даже за пределами репозитория.
Во-первых, меньше шансов случайно закоммитить мусор в source control; проще настроить .gitignore.
Во-вторых, облегчается поиск по исходникам без открытия студии (из Far-а, например) — не нужен фильтр для исключеня .exe;.obj;.pch;....
В-третьих, можно быстро сделать clean и освободить кучу места на диске, не открывая студии — достаточно удалить одну-единственную директорию, а не лазить по всему дереву проекта, удаляя папки /Debug, /Release, /obj, /bin, /generated и т.п.
В-четвёртых, на билд-сервере проекты часто билдаются именно out-of-source, валя всё в одну папку, и иногда это тихо ломает ваш in-source билд. Например, два проекта зависят от одной DLL, копируя их каждый в свой output. Но вот версии незаметно разбежались. Пока строим локально из студии, каждый проект получает свою версию, и работает нормально, разработчик считает, что всё отлично. Но когда делатся "сводный" билд в общую папку на билд-сервере, то одна версия может затереть другую, недетерминированным способом (в зависимости от порядка и времени билда каждого проекта), и это может долго оставаться незамеченным. Если делать "сводные" билды сразу, локально, то больше шансов заметить, что разные файлы с одинаковыми именами перетирают друг друга.


Настраивать $(OutDir) тоже удобно одним общим props-файликом вроде такого:


<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <PropertyGroup Label="Output folders">
    <BuildDirSuffix>$(Configuration).$(Platform)\</BuildDirSuffix>
    <IntDir>$(SolutionDir)~output\~intermediate\$(BuildDirSuffix)\</IntDir>
    <OutDir>$(SolutionDir)~output\$(BuildDirSuffix)\</OutDir>
    <OutputPath>$(OutDir)</OutputPath>
  </PropertyGroup>

Здесь использутся $(SolutionDir) потому что эта настройка нужна только для Студии, на билд-сервере путь задаётся билд-конфигурацией. Нужно только удалить $(OutDir) и $(IntDir) из каждого .vcxproj-файла.


Если кому-то всё же неудобно, что все файлы валятся в одну папку, то достаточно изменить BuildDirSuffix на $(Configuration).$(Platform)\$(MSBuildProjectName).


Если же кому-то неудобно искать бинарники вдалеке от сорцов, то в Студии легко создать тул, чтобы открывать целевую папку: "Tools > External Tools > Add", Title="Open target director&y", Command="C:\Windows\explorer.exe", Arguments="$(BinDir)", после чего комбинация "Alt+T-Y" в студии будет мгновенно открывать папку с построенными бинарниками.

Айтишники не делали бэкапы
Учим простую считалочку «3-2-1»: имей 3 копии данных, на 2 географически разнесенных площадках, 1 копию — на другом типе носителя. Чем меньше выполняется это эмпирическое правило, тем выше шанс не восстановиться из резервной копии.

К этому стоит добавить, что управление рисками тоже ни кто не отменял.
realitsm.ru/2015/11/cobit5_for_risk_major_risks и realitsm.ru/2015/08/risk_management_refs
Областью значительных рисков авторы также назвали невыполнение обязательств подрядчиками.

В очередной раз спасибо самому полезному расширению в этой стране, даже не заметил блокировку.


А вообще, удивляюсь, что с ними не сотрудничают… Когда на Кинопоиске встретил интересующий сериал в озвучке от Кубик в кубике, например, был очень рад.

Наконец-то русский перевод веб-сериала канадского писателя Джона Маккрея закончен. Теперь все, кто хотел прочитать, но боялся незаконченности могут наслаждаться.


Приятного чтения!


Оригинал: http://parahumans.wordpress.com/


Перевод: https://fanfics.me/fic68682/

Information

Rating
3,067-th
Location
Россия
Registered
Activity

Specialization

Software Developer