Добавить обложку
+31

Даниил Масленников

Зарегистрировался

Контакты

19 комментариев

Какая у вас система паролей?
5
base64(hmac(<секретное_слово>, <название_сайта>)). Можно обойтись base64(md5(<секретное_слово> + <название_сайта>)). Секретов можно выбрать столько, сколько удобно помнить, хэши и кодирование тоже на свой вкус, вместо названияразвернуть

base64(hmac(<секретное_слово>, <название_сайта>)). Можно обойтись base64(md5(<секретное_слово> + <название_сайта>)). Секретов можно выбрать столько, сколько удобно помнить, хэши и кодирование тоже на свой вкус, вместо названия сайта можно взять логин\почту\etc. Из минусов - неудобно вводить с телефона и в публичных местах, если под рукой скрипта нет, длина пароля почти не регулируется.

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

Какую самую странную дичь из мира программирования вы знаете?
3
Если кто забыл\не знал про то, почему это так работает: "a ^= b ^= a ^= b" вычисляется справа налево. a1 <- a ^ b b1 <- b ^ a1 - т.е. b1 <- b ^ (a ^ b ) a2 <- a1 ^ b1 - т.е. (a ^ b) ^ (b ^ a ^ b) b1 - это новое значение b, иразвернуть

Если кто забыл\не знал про то, почему это так работает:
"a ^= b ^= a ^= b" вычисляется справа налево.
a1 <- a ^ b
b1 <- b ^ a1 - т.е. b1 <- b ^ (a ^ b )
a2 <- a1 ^ b1 - т.е. (a ^ b) ^ (b ^ a ^ b)
b1 - это новое значение b, и a2 - новое значение a.
xor - операция ассоциативная и коммутативная, т.е. все скобки можно выкинуть и вычислять выражение в любом удобном порядке. Напоминаю, что
0 ^ 0 = 0
1 ^ 0 = 0 ^ 1 = 1
1 ^ 1 = 0.
Кроме того, есть интересные свойства(чекайте по табличке истинности выше):
x ^ x = 0 (всегда)
x ^ 0 = x
Получаем,
b ^ (a ^ b ) = b ^ b ^ a = 0 ^ a = a - это новое значение b.
(a ^ b) ^ (b ^ b ^ a) = (a ^ a) ^ (b ^ b) ^ b = 0 ^ 0 ^ b = 0 ^ b = b - это новое значение a.

У нас теперь есть публичный API
2

Задачи-то может и не было, а невозможность потрогать методы из swagger-ui печалит. Ну и насчет правильности методов: (-1, 0, 1) в id комментария явно на правду не похоже.

Microsoft добавила в бета-версию Windows 10 отображение на ПК уведомлений с Android
0
В Gnome тоже есть, через экстеншон GSConnect (https://extensions.gnome.org/extension/1319/gsconnect/). Про десктопную Ubuntu уже пару релизов (18.10, 19.04) обещают, что оно установлено будет прямо из коробки.

В Gnome тоже есть, через экстеншон GSConnect (https://extensions.gnome.org/extension/1319/gsconnect/). Про десктопную Ubuntu уже пару релизов (18.10, 19.04) обещают, что оно установлено будет прямо из коробки.

Угадываем, у чего завтра просрочится сертификат
0

Кстати, интересно, почему ни один из перечисленных доменов не перенаправляет с http на https?

А вы используете продукты JetBrains?
0
Сейчас пользуюсь IDEA по студенческой лицензии. В All Products Pack не вижу особого смысла, потому что почти под все нужные мне языки(python, go, иногда js) есть плагины под IDEA Ultimate, которые полностью содержат функционал соответствующих IDE (pycharm, goland, webstorm).

Сейчас пользуюсь IDEA по студенческой лицензии. В All Products Pack не вижу особого смысла, потому что почти под все нужные мне языки(python, go, иногда js) есть плагины под IDEA Ultimate, которые полностью содержат функционал соответствующих IDE (pycharm, goland, webstorm).

А вы используете продукты JetBrains?
0
Нет, как раз таки полностю. Цитирую для python (https://plugins.jetbrains.com/plugin/631-python): "The feature set of the plugin corresponds to PyCharm IDE Professional Edition." И дляразвернуть

Нет, как раз таки полностю. Цитирую для python (https://plugins.jetbrains.com/plugin/631-python):
"The feature set of the plugin corresponds to PyCharm IDE Professional Edition."
И для Go(https://plugins.jetbrains.com/plugin/9568-go):
"This plugin extends IntelliJ platform with Go-specific coding assistance and tool integrations, and has everything you could find in GoLand."
Авторы этих плагинов - сами Intellij, если что. Аналогичные плагины есть для php, ruby, swift. И, кстати, в IDEA можно писать под Android без Android Studio.
Необходимость в All Products Pack я вижу только в том случае, если нужны инструменты под языки, которых в IDEA нет - всякий .NET, С++, ObjC.

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "i", "ps": "cndo", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "i", "ps": "cndo", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfk" } } }, { "id": 6, "disable": true, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byswn", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "cndo", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223677-0", "render_to": "inpage_VI-223677-0-130073047", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=cndo&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudv", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "ccydt", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fzvc" } } } ]
Узнавайте важные новости первыми
Подписаться на push-уведомления