Pull to refresh
14
0
Илья Чеглеев @discourage

User

Send message
Войп-сервер не должен быть виден снаружи, это делает его гарантированно недоступным для атаки на подбор паролей или на использование уязвимостей. Связь с другими серверами должна обеспечиваться посредством VPN, которая объединяет локальные сети разных офисов. Ну и за троянами внутри тоже стоит присматривать, дабы не шастали совсем уж свободно. Уже несколько лет вполне безбедно работает подобная конфигурация на asterisk (обновленный до 1.6), маршрутизация на DUNDi, подсети объединены через центральный впн-сервер на OpenVPN.
Если немного заморочиться с модификаторами, то как раз получается очень удобно. Я использовал 2 модификатора, 7 клавиш приемов (итого 21 клавиша), бегал на джойстике. Еще оставалось 3 кнопки для: карта/квесты/инвентарь. В однопользовательских РПГ, наоборот, никакого смысла от него нету. У меня этот девайс уже года 1.5 пылится на столе без дела.
Давно пора. Хотя на фоне тотальной loudness war, лучше бы они лейблам разослали инструкцию о вреде излишней компрессии.
habrahabr.ru/blogs/zend_framework/111918/#comment_3575966
О которых говорилось выше :)
Здесь исключительно о «примере #19»
Не аналогичный. Вопрос экранирования, в приведенном примере #19, не решается. В этом можно легко убедится, немного преобразим пример #19:
$maximumPrice = 500;
$prodGrade = 'A';
$prod = 'Apple';

$select = $db->select()
                      ->from('products',
                            array('product_id', 'product_name', 'price'))
                      ->where("product_grade = $prodGrade OR price > $maximumPrice")
                      ->where('product_name = ?', $prod);
echo $select;


На выходе мы получим

SELECT `products`.`product_id`, `products`.`product_name`, `products`.`price` 
FROM `products` 
WHERE (product_grade = A OR price > 500) AND (product_name = 'Apple')


Как можно заметить экранирование здесь не работает.
можно еще попробовать через quoteInto()
$this->select()
     ->where( "sex = ?", "male" )
     ->where( $this->quoteInto("age > ?", 18) . ' or ' . $this->quoteInto("hobby = ?", "sport"));
Win32 без плясок с бубном не адресует более ~3гб оперативной памяти, в то же время может быть запущено одновременно несколько приложений, для каждого из которых будет предоставлено до 2(3) Гб виртуального адресного пространства. Отключать своп в 32-разрядной системе крайне не рекомендуется, из-за вполне вероятного риска нехватки оперативной памяти.
В реальных условиях надо учитывать, что если человеку приходится регулярно делать подобные наклейки, например в лаборатории, ему надо:
1. Подготовить список надписей, вероятно пройтись по помещению или, например, по складу, написать ручкой
2. Дойти до компьютера, подготовить шаблон. Занести вручную все надписи
3. Вырезать бумажки
4. Снова идти по всем помещениям и приклеивать с помощью скотча, в надежде на то, что ни одна бумажка не испортится и не придется перепечатать. (или готовить запасные изначально)

Все это займет, предположим, час для 30 наклеек. Если час, среднего специалиста (не в Москве) стоит 250 рублей — принтер уже может конкурировать с ручным трудом по себестоимости. При заказе таких устройств по нормальным ценам, профит становится очевидным.
Самое страшное, когда приходят с копи-пастом какого-нибудь шаблонного технического задания, найденного на просторах сети, с минимальными изменениями. Или когда бизнес-аналитика компании-исполнителя просят подготовить развернутое техническое задание по результатам получасового совещания с заказчиком.
habrahabr.ru/blogs/the_future_is_here/27830/ не так эстетично, зато функционально :)
А в чем «вырвиглазность»? Хотя должен признать — сам пример специфичен, работа с матрицей 4х4 не очень хорошо воспринимается взглядом. Код примера был написан и отлажен примерно за час-полтора, вычислительные функции хранились давно, все «подводные камни», например, необходимость экстраполяции на 1 шаг по краям, были известны до этого.
Вы невнимательно прочитали. В статье описаны оба подхода. Коэффициенты, нужны для оптимизации расчетов, например, Если у вас шаг сетки 100 пикселей, то решением «в лоб» придется выполнить примерно в 10 000 раз больше операций.
Как вы заметили я указал ссылку на первоисточник и сразу уточнил, что здесь будет разбор статьи и ни слова не сказано о том, что алгоритм был реализован с нуля. Теоретическая часть статьи введена для тех, кому интересна работа самого алгоритма. К сожалению, русскоязычного подробного описания реализации данного алгоритма я не нашел, поэтому за основу был взят вышеуказанный материал, от себя прокомментировав важные, как мне показалось, моменты. Практическую реализацию подготовил специально для публикации, стараясь обеспечить легкость чтения кода. Если вы считаете, что приведенный пример можно существенно улучшить, то поделитесь, я к обоснованной критике всегда относился с уважением.
4 цикла исключительно для наглядности реализации цветовых переходов. Еще одна особенность: когда я делал полупрозрачную палитру, для каждого цвета выставлял немного различающиеся значения для альфа-канала, для улучшения восприятия градиента.
Отчасти согласен, однако и этот подход не лишен недостатков. Аппроксимация бессмысленна, если точки слабо влияют друг на друга или не влияют вовсе, если существуют локальные пики, которые может сгладить аппроксимация. Для более точного расчета, например, распределения химических веществ в природных средах строится модель для каждого вещества, с учетом метеопараметров, параметров рельефа и специфики заданного вещества. В онлайне такие вещи не считаются, потому что даже на очень мощных компьютерах сколь-нибудь достоверная модель может рассчитываться несколько минут и даже часов (в зависимости от площади территории). Для визуализации регулярных отчетов, данные по которым проверяют специалисты в ручную — может сгодиться и интерполяция.
Да, гладкость бикубической интерполяции на самом деле ниже чем у кубической. Непрерывность второй производной не обеспечивается. Обеспечивается непрерывность первых частных производных и смешанной частной производной.
Если не сложно не могли бы поделиться алгоритмом получения изолиний из готового изображения? Пробовал поиском граничных точек, сначала делал выборку по вертикали, потом по горизонтали, получалась довольно замыленная линия, требующая постпроцессинга для сглаживания. Сам в последствии выбрал и реализовал классический алгоритм: с помощью вышеуказанного алгоритма вычислял узловые точки с шагом примерно 5 пикселей, потом находил ребра с пересечениями и достраивал линии с помощью билинейной интерполяции.
По времени работы: на домашнем компьютере 2 Мпикс картинка генерируется чуть менее 5 секунд.
На самом деле PHP уже давно байткод интерпретатор. Для конкретной задачи производительности хватало, с учетом кеширования. Почему без встроенных функций GD и Imagick написал ниже. habrahabr.ru/blogs/php/111402/#comment_3553499
Подобный вариант рассматривался, но этот же массив данных использовался еще для построения карт изолиний. Не спорю, что можно было бы реализовать попиксельное преобразование результата Imagic'а, но любопытство взяло верх.
1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Fullstack Developer, Product Manager