Pull to refresh
60
Shader, a.k.a@Hesed

Администратор, программист

18
Subscribers
Send message

Vaultwarden (раньше назывался bitwarden_rs). Bitwarden хоть и имеет лицензию, позволяющую поставить его бесплатно, как self-hosted решение, всё же коммерческий продукт.

Во-первых, он намного более прожорливый в плане ресурсов - мой домашний Vaultwarden на один контейнер с чуть больше чем сотней записей ест 130 Мб памяти, Bitwarden со старта хочет полгигабайта и может отожраться почти до гигабайта.

Во-вторых, Bitwarden некоторые довольно удобные фишки закрыл за платной подпиской. Например, генерацию TOTP кодов и тот самый Emergency access, когда моё доверенное лицо получит доступ к базе, если со мной что-то произойдёт.

В-третьих, все дополнительные плюшки в виде расширения браузера и десктопного приложения полностью совместимы с Vaultwarden.

Так что я не нашёл причин ставить платный официальный warden. Экономный, так же, как официальный, умеет работать с разными базами данных, есть API, плагины и приложения работают без проблем, есть поддержка двухфакторки, TOTP. Слегка упоротый в плане концепций и настройки после keepass'а, конечно, но разобраться вполне можно.

У keepass есть один существенный недостаток - нет разграничения прав доступа. Если есть некие credentials, к которым нужен совместный доступ, то kbdx не подойдёт.

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

Плюс, у warden'a есть шикарная опция Emergency Access, которая позволяет назначенной учётной записи получить доступ ко всей базе, если с главным администратором что-то произойдёт. Так я могу быть уверен, что некоторые важные доступы не будут утрачены.

Доступ не пожалован, понеже оне, права твои, куцые суть.

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

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

Алекс из цитаты - голландец. Так что нет, не США. Совместное предприятие Нидерланды + Прибалтика.

Как-раз таки по правилам - да. Только будет "моя жена - прекрасный специалист".

"Жена" - подлежащее, "прекрасный специалист" - составное именное сказуемое с нулевой связкой. Именная часть выражена существительным "специалист". Цитирую правила:

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

---

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

Мой обожаемый Питер Гамильтон и то сдался - в последнем цикле "Salvation Sequence" вписал gender-fluid расу "омни", которая могла пол менять по желанию. В русском переводе тоже все обращения к представителям этой расы через "мы множественное" прописаны. На обоих языках читается крайне странно.

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

Чат на трёх человек, работаем вместе уже пятый год. Скришот лень редактировать, поэтому текстом, но цитаты скопированы без изменений, только имена другие.

Nina: What about last candidate? How did interview go? I didn't get feedback from Hesed.

Alex: They are back on Monday, so I don't have a direct answer now.

Ладно, допустим, меня в этот момент в чате не было теперь так принято. Но вот тут я был онлайн, и всё равно в третьем лице.

Nina: Will Hesed work on skill matrix or we should assign it to someone else?

Alex: Ask them if any help is needed :)

Hesed: Them? I'm working on it all alone! :)

Да, я раз-другой свожу это к шутке в надежде, что народ перестанет страдать фигнёй. И мы не стартап контора, где на входе спрашивают pronouns и обязывают их везде указывать. Тот же человек без проблем использовал he/she ещё пару лет назад. Но, как показывает практика, эти языковые приколы прилипают, как вирус.

<sarcasm>У многих ещё "Зелёный слоник" в культурный код прошит, с репликой "Кто они-то? К кому ты обращаешься? Я один здесь, чёрт побери!"</sarcasm>. Раз Вы не смотрели "Молчание ягнят", то и это тоже почти наверняка. Но в отличие от "Ягнят", пожалуйста, не смотрите "Слоника", и вообще забудьте что я сказал, не хочу грех на душу брать. Я это для посвящённой аудитории оставлю.

В сообщениях, обращениях и т.п. singular they применяем и применяли задолго до набившей оскомину "повесточки" - это вполне нормальная грамматическая форма. Некоторые пытались сопротивляться используя he or she, или даже дурацкую форму (s)he, но это крайне несуразно смотрится.

Отторжение идёт отчасти потому, что singular they начали лепить всюду, включая переписку с человеком, пол которого заведомо известен. Периодически одёргиваю излишне толерантных. Сначала шуточно, мол "я тут один, не вижу никаких they", потом напрямую прошу перестать страдать фигнёй. И, подчеркну, речь не о первом контакте вслепую, когда пол не определить по имени, этим начали страдать люди, с которыми я работаю пятый год.

Праиндоевропейский мягкий К/Г стабильно превращался в русский С/З и английский H/K, что мы можем видеть на примерах слов Сто – Hundred (изначальный корень k‌m‌tóm), Знать – Know (k‌neu) и так далее. Это называется разделение между satem и centum языками.

Ага, а потом сатемные языки, т.е. всё по восточную сторону изоглоссы кентум-сатем решили, что им слишком скучно живётся и нарисовали вторую изоглоссу - RUKI, также известную как "закон Педерсена".

Это правило описывает переход *s -> *š -> *h, если перед ним стоял один из звуков семейства r,u,k,i. Получается, что уходя от праиндоевропейского *ḱ некоторые языки сделали полный разворот и вернулись к тому, с чего начали - велярному спиранту -h. Как носителя всех трёх языков из правой части таблички, меня это весьма забавляет:

Праиндоевропейский > праслав. > лит.   > лат.   > рус. 
---------------------------------------------------------
*wṛsus  > *wirxus  > *vьrxъ   > viršùs > virsma > верх  
*saṷsos > *soṷxos  > *suxъ    > sausas > sauss  > сухой 
*teisos > *teixos  > тихъ     > tiesus > taisns > тихий 

Относительно недавно спорил с одним человеком на тему бесящих "особенностей" использования паролей. В моём личном топе - обязательная замена пароля раз в N дней, запрет на переиспользование предыдущих паролей и запрет на замену пароля, который похож на старый (инкремент цифры, добавление одного спецсимвола).

И если предыдущие пароли пусть хранятся в виде хэшей, а "похожесть" пароля относительно текущего пусть определяют по расстоянию Левенштейна (введите старый, введите новый - оп, нет, слишком малое расстояние), то абсолютный топ у меня занял один местный банк, который при смене пароля, заявил что новый пароль слишком похож на один из предыдущих. А откуда вы знаете мой предыдущий пароль? А?!

К сожалению, российские реалии зачастую продиктованы приказами ФСТЭК, которые регламентируют и частоту смены, и вариативность символов. Рекомендации NIST SP 800-63B в этом плане, на мой взгляд, куда удачнее и логичнее.

Было бы интересно увидеть сравнение категорий персональных данных. Так, GDPR имеет две глобальные категории - обычные персональные данные и чувствительные/особые. Так, например, вероисповедание, сексуальная ориентация, членство в профсоюзах и политические взгляды попадают в категорию особых (и, соответственно, особо охраняемых данных), а вот номера кредитных карт и сумм на банковских счетах - нет, то обычные ПД. Спасибо, что хоть биометрию и медицину тоже в "особые" добавили.

Не поймите меня неправильно, мне нравится идея и принцип KISS, скорость и оптимизация. Но зачем на алтарь производительности класть чистоту кода и его читабельность? Знаете, PHP ведь неплохо так эволюционировал. Зачем до сих пор писать на PHP 7.0 и делать вид, что кроме апача ничего не существует?

Я уж не говорю про визуальное восприятие кода. Вы ведь в курсе, что от уменьшения количества пробелов и переносов строк код не будет работать быстрее, да? Вместо того, чтобы экономить на скобках, можно сэкономить пару тактов процессора на вызове функций is_ и всяких strlen, если добавлять бэкслэш к некоторым функциям.

При этом, если во главу угла ставится производительность, то какой функционал у счётчика онлайн посетителей? Просто показывать циферку как в нулевых? И ладно бы просто циферку, но online_users.last_activity сломается при переходе на зимнее время, потому что время хранится без таймзоны.

Доходит до смешного, вроде того, что в выводятся неэкранированные http заголовки, у форм нет csrf, кукисы задаются и проверяются абы как. Я уже не говорю про условия запросов по неиндексированным полям, неэкранированный вывод, забытые биндинги в execute(). Добавлять зип бомбы и honeypot'ы, но иметь уязвимости уровня path traversal и банальных инклюдов - это мощно.

В общем, мы имеем набор скриптов "CMS на инклюдах и глобальных переменных", которая ломается из-за хардкода слэша вместо DIRECTORY_SEPARATOR и работает только при установке в корень, а при установке в папку ссылки ломаются из-за россыпи других хардкодов слэшей в <a> и <link>.

Собственно, мы имеем удовольствие лицезреть причину, по которой PHP получил имидж плохого языка. Спасибо за креатив. Максимальный репост, звёзд и форков на гх, чтобы как можно больше нейросетей "обучилось" на таком коде и моя работа стала ещё более ценной.

Мы с женой объединили наши две соседние квартиры. Делали всё по нормативам и законам, с проектом, экспертизой, укреплением и т.п. Одним из шагов подготовки был сбор подписей жильцов дома, что 50% +1 человек согласны с проектом объединения и не имеют претензий-возражений.

И мне вот интересно, у нас микро-хрущ, всего три подъезда. Обойти пришлось всех, заняло пару вечеров. А что делать с гига-хрущами в этом случае? Сразу вешаться, или броадкастом рассылать?

Забавно, насколько у меня это зеркально :) В моём случае "эффект второго фреймворка", а точнее не второго, а N-го был однозначно со знаком минус. К моменту моего знакомства с джанго, я уже долгое время работал с MVC фреймворками. Не только PHP, хотя именно на Yii1/2 у меня были самые-самые проекты, которыми я до сих пор горжусь. Но джанго мне откровенно сломал мозг банально своим MVT и тем, что привычные концепции означают совсем другое.

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

Совсем недавно писал пет-проект и всерьёз рассматривал вернуться к привычному Yii2, а за на тот момент ещё не-релизнутый третий браться не решился. А тут такой новогодний подарок! Искренне желаю Yii успехов в новом году!

Интересно, как выбирался диапазон? Какую то статистику использования собирали?

По официальной документации: "The values for NSMALLPOSINTS and NSMALLNEGINTS are chosen based on the most commonly used integers in typical Python programs".

Но я бы сказал, что никакого анализа не проводилось, этим диапазонам сто лет в обед, вряд ли кто-то парсил тонну исходных кодов в то время, чтобы собрать статистику. Скорее всего, это интуитивно выбранный диапазон для целочисленных и битовых масок, ну и всяких флагов вдобавок.

И вариант для звезды героя-героя: будет ли интернирование для строки "интернирование"?

Кроличья нора на самом деле довольно глубока. Пример из моего комментария выше сработает в интерактивном интерпретаторе. Однако, если создать файл с таким же содержанием a=1 b=1 c=1111 d=1111 print(a is b) print(c is d), то ответ будет... True True. И это интересный вопрос для продолжения обсуждения.

Причина тому кроется в том, что в интерактивном режиме каждая строка обрабатывается отдельно в момент ввода, тогда как файл будет обработан целиком. И если сделать dis.dis() и func_code.co_consts() на функцию, которая содержит кусок кода выше, то будет видно, что LOAD_CONST, STORE_FASTинстанцируют только один объект.

---

Что касается интернирования строк, то я лично такой вопрос на собеседованиях не встречал и сам не задавал (впрочем, вопрос про целочисленные приколы я тоже не задавал). Но оно есть и в нём интересно покопаться.

>>> a = 'hello'
>>> b = 'hello'
>>> a is b
 True
>>> c = 'hello world'
>>> d = 'hello world'
>>> c is d
 False

Интернируются строки длиной до 4096 (лимит, опять же менялся), не содержащие пробелы, символы за пределами буквенного диапазона ascii и т.п. Поэтому "интернирование" не попадает и интернировано не будет, а вот английское слово сработает - дискриминация :). При этом подчёркивание интернируется, а дефис нет. Помнить всё это бессмысленно, практической пользы это несёт мало, разве что показывает, что кандидат копался под капотом Python и умеет пользоваться dis.dis().

В довесок к цепочным присваиваниям и тождественности любят спрашивать почему a и b ссылаются на один объект, а c и d на разные, хотя объявлены они одинаково.

>>> a = 1
>>> b = 1
>>> c = 1111
>>> d = 1111

a is b # True
c is d # False

>>> id(a)
140712275936168
>>> id(b)
140712275936168

>>> id(c)
1894793473328
>>> id(d)
1894793471632
  • Ответ: может что-то про интернирование? И вообще нефиг использовать is для проверки скалярных значений.

  • Ответ со звёздочкой: CPython заранее создаёт объекты для чисел в определённом диапазоне. Эдакий кэш.

    • Ответ с двумя звёздочками, если называется диапазон (до 3.13 включительно это от -5 до 256).

    • Ответ со звездой героя: диапазон менялся по ходу разработки, от -5:128 до текущего -5:256, а скоро он будет от -5 до 1024.

Если покопаться в недрах ПО для игровых устройств, можно потерять веру в человечество. Логитековский G-Hub в какой-то момент у меня стал затирать настройки при обновлении и я искал, как их бэкапить. Нашёл. В SQLite файле, в котором есть одна единственная таблица с одним единственным текстовым полем, лежит конфиг в виде JSON'а. Смерть кощеева какая-то.

А поверх click'а можно воткнуть Trogon и одним декоратором сконвертировать CLI-приложение в удобный TUI (текстовый GUI), с дропдаунами, валидаторами и т.п., который к тому же обратно совместим с консольным вызовом, т.е. можно вызывать в "консольном" виде, или в виде интерактивного интерфейса.

1
23 ...

Information

Rating
4,646-th
Location
Даугавпилс, Латвия, Латвия
Registered
Activity

Specialization

Системный инженер, DevOps-инженер
Ведущий
Разработка программного обеспечения
Базы данных
PHP
Python
DevOps
Системное администрирование
Linux
Сетевые технологии
Проектирование архитектуры приложений