to post messages and comments.

← All posts tagged programming

Буду и сюда постить "хорошие статьи/книги" по понедельникам.

При программировании в языках с неизменяемыми структурами данных, часто применяются методы работающие со структурой в-целом. Такие техники позволяют писать программу, как объединение более простых подпрограмм. Однако этот подход может ухудшать производительность, т.к. заставяет создавать огромные структуры данных, для решения это проблемы используется оптимизации deforestation (и fusion), основанная на правилах перезаписи выражений. При этой оптимизации удаляются промежуточные структуры и при компиляции код обрабатывающий сложную структуру превращается в настолько же эффективный, как код написанный на С, но при этом более поддерживаемый. В диссертации Дункана Котса рассматриваются различные такие правила (со ссылками на статьи о них), а так же дается доказательство корректности, и минимальные требования к языку, в котором эффективно принимать данные правила.

D. Coutts, “Stream Fusion: Practical shortcut fusion for coinductive sequence types,” 2010.

<rubber-duck-mode>
А как бы задавать неявные методы для решения ОДЕ, так чтобы пользователь мог задать стратегию решения?
После размышления, у меня ощущение, что если в явном методе я могу возвращать (в простом случае без доп структуры):
phi :: x -> f x -> f x
то для неявного я должен писать:
phi :: x -> (f x, f x) -> f x

где теперь мне на вход подается начальная координата и первое приближение, и в ответ я выдаю набор следующих координат. Вроде в этом случае вся свобода, которая должна быть остается в руках у пользователя, можно и начальное приближение удобным способом выбирать, и решать хочется ли fixed point или newton iteration или вообще заанролить метод на нужную глубину.
</rubber-duck-mode>

а в чем плюсы от того, чтобы пытаться угадать порт, который открывать, вместо того, чтобы передать 0 и посмотреть, что ведро выдало? Уже не в первой библиотеке встречаю такой идиотизм. При этом они действительно открывают любой порт, а не только в какой-то области или т.п.

А какой у нас сейчас state of the art для авторизации на связанных сайтах. Есть один главный сайт foo.bar.com, есть N сервисов (только web sockets) на которые юзверь так же может посылаться. На foo.bar.com есть авторизация через oauth, так же проверяются права на то, какие сервисы есть права и где они живут и туда посылается юзверь.

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

кто хочет поработать на благо военки в славном городе гатчине (от питера добраться просто) за какие-то 80-90к (если все уметь) или на сколько-то меньше, если быть готовым учиться. Делать так чтобы корабли меньше тонули, а на складах было меньше ЧП, ну или хотя бы чтобы об этом узнали все кому следует знать. Там всякие C + возможно что-то более высокоуровневое можно.
Говорят секретности или нет или та, что проблем с загран паспортом и выездами не будет.

Есть key value база данных. В ней среди прочего хранятся квадраты как (TopLeft_x, TopLeft_y, Width, Height)+всякие даные; в данный момент ключем является форма квадрата, т.е. сериализация этих самых (x,y,w,h); вопрос, есть ли идеи как это складывать таким образом, чтобы можно было эффективно выгружать интересные квадраты, т.е. те которые пересекаются с заданным?

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

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