Как стать автором
Обновить
10
0
Александр Винокуров @aleksandrvin

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

Отправить сообщение
В общем, ИМХО, самый главный недостаток это отсутствие операции отношения порядка
Да — тоже подумалось:
  • IP адреса — это GPS координаты;
  • IPv6 — это W3W;
  • И ко всему этому нужен будет FQDN, ибо A.B.C.D может совершенно ничего общего не иметь с A.B.C.(D+1)!
Ха, это проблема «Not Invented Here» — «Долой существующую систему координат и адресов, их придумали какие-то м**ки». Ну и пусть, что Невский пр., 30 отличается от Невский пр., 29 какими-то 50 м, а от локации «Невский пр.» (если вы забыли номер дома) не далее, чем на 3.5км… это же сущий пустяк: когда у вас есть Нуль-Т, то погрешность в 12 000 км… а что это?
«Новый миллениум!», главное, чтобы дефолт-планетой не ошиблись… а три слова — не так и важно будет после открытия телепорта
Вкратце:
  1. Ошибки — суть не ошибки, а возникающие ситуации;
  2. Не надо создавать аксиомы в коде.


Подробнее:

Изучая LISP (место для начала холивара) можно найти такую интересную фичу, как «condition system». Рискну привести здесь цитату из викиучебника:
Common Lisp has an extremely advanced condition system. The condition system allows the program to deal with exceptional situations, or situations which are outside the normal operation of the program as defined by the programmer. A common example of an exceptional situation is an error, however the Common Lisp condition system encompasses much more than error handling.

The condition system can be broken into three parts, signalling or raising conditions, handling conditions, and providing recovery from conditions. Almost every modern programming language offers the first two protocols, but very few offer the last (or distinguish between the last two). This last protocol, providing restarts, or ways for the program to recover, is in some ways the most important aspect of Common Lisp condition handling.


Короче:
  1. все эти «ошибки» — есть частные случаи «ситуаций», которые возникают при выполнении функций программ, но есть и другие варианты;
  2. по протоколу, для обработки «ситуаций» нужно: её (1) обнаружить, (2) обработать и (3) предоставить возможность продолжить выполнение функции с места обнаружения или других заданных мест.


Очень немногие современные языки программирования предлагают возможность «recovery from conditions», а без неё сам протокол (читай обработка «ошибок») становится ущербным.

И получаются программы, как:
  • солдаты новобранцы — совершенно не понимающие, что делать, если что-то пошло не так (такие программы молча или громко падают),
  • либо как морские пехотинцы, которых учили несколько лет и которые могут и знают, как решать все проблемы самим, без чьей-либо помощи (такие программы упадут только когда их явно убьют, а до тех пор будут делать вид, что проблемы нет и не будут задавать интерактивных вопросов пользователю).


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

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

Рассмотрим пример с
open('test.txt', 'r')

— что может случиться? — нет файла, нет прав, нет свободных дескрипторов, ошибка устройства...

— что можно поделать? — банально: прекратить выполнение программы, решить проблему: положить файл, дать права, закрыть неиспользуемые дескрипторы, перемонтировать устройство,… а еще: предложить другое имя файла, напечатать содержимое файла в консоли,… а зачем вообще этот файл открывать — мы же конфиг из него хотели прочитать, тогда: вернуть из текущей функции дефолтный конфиг, или напечатать в консоли конфиг, распарсить и вернуть его из функции,… ха, ну и конечно же попробовать выполнить функцию ещё раз!

Что, TL;DR? — слишком много кода писать для обработки ошибок? — да можно забить на обработку ошибок совсем (самый лёгкий путь) — тогда LISP, для лентяев, предложит вашим пользователям дефолтные рестарты:
error opening #P"test.txt":
  No such file or directory
   [Condition of type SB-INT:SIMPLE-FILE-ERROR]
 
Restarts:
 0: [TRY-DIFFERENT-FILE] TRY-DIFFERENT-FILE
 1: [RETRY] Retry SLIME REPL evaluation request.
 2: [ABORT] Return to SLIME's top level.
 3: [TERMINATE-THREAD] Terminate this thread (#<THREAD "repl-thread" RUNNING {BA80BC1}>
Nginx не балансировщик, а web-сервер. Haproxy же балансировщик. Если нет времени на изучение haproxy, а nginx знаком, то поначалу можно решать задачу им.

Когда в 2012-м делали сравнение в компании, то получили слегка лучшие результаты для haproxy, зато увидели скудные возможности настроек по части балансировки.

Ставим nginx с кэшем и статикой перед haproxy, за которым логика на бэкендах.
Вы про это?
Zero-copy forwarding is possible using the splice() system call under Linux, and results in real zero-copy starting with Linux 3.5. This allows a small sub-3 Watt device such as a Seagate Dockstar to forward HTTP traffic at one gigabit/s.
Источник: www.haproxy.org/#feat

В nginx 1.7.8 splice не обнаружен:
-*- mode: grep; default-directory: "~/Downloads/nginx-1.7.8/nginx-1.7.8/" -*-
Grep started at Thu Dec  4 10:02:25

find . -type f -exec grep -nHi -e splice {} +

Grep finished with no matches found at Thu Dec  4 10:02:25
Сейчас вы всё ещё в Ванкувере обитаете, так? Это ваш первый стартап? Или первый глобальный?
"— Поскольку это наш первый полет, мы подумали, что, возможно, вы захотите вместе с нами насладиться видом из кабины пилотов и увидеть, что происходит на самом деле, когда мы взлетаем.
Пред нами простиралась взлетно-посадочная полоса. Скорость движения самолета по ней начала увеличиваться, гудронированное шоссе под ветровым стеклом стало мелькать все быстрее, пока белые пунктирные линии не начали сливаться. Но пилоты, похоже, не собирались приступать к своим обязанностям: вместо того, чтобы сосредоточенно смотреть вперед и управлять самолетом, они поглядывали друг на друга и улыбались. У одного были под фуражкой очень длинные волосы, другой оказался западным индийцем. Мы с грохотом неслись по взлетно-посадочной полосе, но пилоты ничего не предпринимали. Они просто не обращали на это никакого внимания. Все, кто смотрел на экран, затаили дыхание: все это напоминало полет сумасшедших самоубийц, организованный лунатиком Брэнсоном"
Теряя Невинность, Автобиография, Ричард Бренсон
Не согласен, по ссылкам в форумах указывают, что все доки полученные от клиента загоняются в компьютер и тот должен всё сравнить до запятой. Так что условно «нагибать» можно много кого: программиста, что накосячил, менеджера, тётю с небольшой ЗП, и дальше по списку, в зависимости от вооброжения.

PS. Желаю успехов гр. Агаркину Д.Б.
PPS. А Тинькову желаю не принимать лично, — как говориться, «ничего личного, только бизнес».
Вот, немного чуть ниже.

1. Нужно разделять представление для человека и для машины

2. Для машины нужен API доступа к данным ОПСОСа

3. Все сервисы используют только этот API, никаких обходных путей нет

4. Для человека нужно сделать SSO, чтобы не было такого, что:
в одном месте есть капча, а в другом нет; кто-то говорит «от 6 до 20 цифр», а кто-то «от 3 до 128»
SSO сделает любую аутентификацию в одном месте и авторизацию доступа к API для разных дочерних сервисов контролируемой. Сервисы эти пароль ваш не спрашивают и не получают, а получают токен доступа OAuth v.2, через механизм п.5 и то только с вашего согласия

5. Добавляем OAuth v.2 к API и идентифицируем каждого клиента API (это и машины M2M и сервисы типа UMS и AnyBalance), тогда в «СервисГиде» можно будет отменить разрешение клиенту-сервису UMS на доступ к API чтения/создания СМС абонента

6. Когда всё вышесказанное будет сделано, нужно будет выделить два типа доступа к API: "в присутствии пользователя" и "в оффлайне (сервис ходит на API, даже тогда, когда пользователь отлогинен от сервера аутентификации)", и при выдаче токена доступа «СервисГид» должен человеку-клиенту сказать, какой тип доступа клиент-сервис запрашивает, чтобы человек сам решал — хочет ли он, чтобы какой-то сервер стороннего сервиса мог видеть его СМС в его отсутствии или нет (наример для AnyBalance хватит и первого типа доступа)

7. Теперь, когда сервер аутентификации один и пароль никому не раздаётся, ни в какие формы (кроме одной единственной на единственном сервере аутентификации) не вводится, можно отдаться целиком обезопасиванию аутентификации последней-единственной формы ввода пароля:

— сделать его передачу только по HTTPS и только в теле HTTP запроса
— сделать его запрос как можно редким (т.е. фактически сделать использование пароля максимально редким), поддерживая сессионные куки и контролируя постоянство условий среды при которых данный конкретно пользователь пользуется сессией (при изменении контролируемых условий — спрашивать подтверждение пароля у пользователя)

8. И несмотря на п.7, для изменения конфигурации в «СервисГид» (образно говоря, для выполнения операций «записи»), как то: подписка на сервисы, смена тарифного плана, смена типа уведомлений — для всего этого сделать повторную проверку пароля даже для действующей сессии. А для особенно критичных операций — подтверждение по паролю и по коду СМС.

Чем не конструктив? И да, это касается всей тройки.
Тут должен быть OAuth v.2 и никакой капчи для API. Она останется только для человека, смотрите API того-же Гугла…
К передаче кредов (пароля, кода и прочее равное) для доступа к критичной информации, какой является СМС в наше время, должно относиться с повышенной осторожностью.

1. В открытом виде (HTTP вместо HTTPS) передавать нельзя!
2. В URL запроса (а не в теле запроса) передавать нельзя, чтобы избежать попадания в логи Web и прокси-серверов!

ОПСОС-ы и уважаемый Мегафон в частности, давно стали платформой для управления персональными данными пользователей — граждан РФ:
64 742 073 абонента в апреле
Если кто-то сомневается, то подумайте: как мы получаем коды подтверждения от банков, коды для восстановления паролей вконтакте, facebook, gmail…

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

При всём при этом, сам факт возможности настолько древней и беззащитной авторизации к настолько ценным функциям указанной платформы вызывает шок. Как можно так безответственно относиться к 64 миллионам?!

Сколько ещё вы будете играть в игры со спичками на бензоколонке?
Страна непуганных идиотов

Это не новая дыра в безопасности, это роспись в несостоятельности, ИМХО!
Вы можете сравнить себя с www.kaspersky.ru/ddos-prevention?
Все банально: я недавно купил iPhone ;)
И с другой семантикой: теги надо закрывать самому.
Не парсится вот это:
<head><html>

Тысяча извинений!
-- не парсится, пардон.
Да, к такому тоже приходил, и без _ похоже не решаемая задача :)

— не парсится
Если заметить, что практически в любом месте foo можно вставлять любой код и вызов любой другой функции и полученная функция foo будет практически одноранговой частью текстового редактора в котором всё это и делается набирается, — то получается, что такие вещи есть не везде.

Плюс, каждый «чих» в emacs имеет свою функцию с именем, точнее каждую функцию можно вызвать.

Ещё одна возможность, которая меня поразила: Wdired mode, не знаю получится ли увидеть то, не *что* становится возможно сделать с её помощью (это можно сделать ещё тысячами способов), а то *как* это можно сделать: lazy редактор каталогов файловой системы.
1

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность