суббота, 18 марта 2017 г.

Берегитесь приложения Aword

В прошлом году купил подписку на приложение Aword ("Английский Язык Для Начинающих Aword: Учить Слова" в iTunes Store), несмотря на море глюков в каждой версии. Недавно попытался поставить на другое устройство - списки слов синхронизируются, а вот подписка неактивна и пользоваться приложением нельзя. Вероятнее всего, что и на первом устройстве после переустановки или обновления работать не будет. Написал в поддержку - порекомендовали повторить все действия (нажать кнопку синхронизации подписки и т.п.), что ни к какому результату не привело, после чего на повторные письма просто не отвечают. Видимо, раз я уже оплатил - я им больше не интересен. Купил подписку жене - подписка не активировалась, поддержка отказывается решать проблему (а вы нам чек об оплате покажите?) это при том, что приложение зарегистрировано на тот же Apple ID, на который куплена подписка). Чек отправили, ждем ответа (интересно, теперь учредительные документы Apple потребуют или гарантийного письма от гендиректора Apple?). Стоимость подписки, кстати, почти удвоилась за прошедшие несколько месяцев. Видимо, ребята совсем зажрались и работать уже не хотят категорически. Обидно, да. Так что кому рекомендовал приложение - извините, теперь лучше с ним не связываться.

вторник, 7 марта 2017 г.

Отдайте все ваши деньги flops.ru и PayOnline

Столкнулся с ситуацией, когда мне нужно оплатить услуги хостинга flops.ru из-за пределов России. От меня в ультимативной форме они потребовали конфиденциальную информацию, которую не имеют никакого права даже спрашивать. Полагаю, это является мошенничеством:


..., 07.03.2017, 15:54
Похоже на шантаж - если я не предоставлю свои конфиденциальные данные, то вы удалите мой сервер?! Понятно, попрошу друзей оплатить мой аккаунт и перенесу все данные от вас на другой хостинг.
support@flops.ru , 07.03.2017, 15:44
К сожалению, в противном случае мы не можем Вам поспособствовать провести платеж.
..., 07.03.2017, 15:21
Извините, с какой стати я буду предоставлять сканы карты и паспорта какой-то шарашке PayOnline?!! С этими данными они могут вывести все деньги с моего счета. За то что вы предлагаете мне сделать - по правилам альфабанк и система мастеркард может вообще заблокировать процессинг для этого самого PayOnline (посредник обязан обеспечить безопасность платежей и не имеет права хранить реквизиты карт).
support@flops.ru , 07.03.2017, 13:59
Добрый день!
Получили ответ от PayOnline:
Для открытия коридора необходимо предоставить сканы карты держателя карты с обеих сторон и скан паспорта.
· Сканы должны быть четкими, разборчивыми и цветными, края карты не должны быть обрезанными;
· На скане карты с лицевой стороны обязательно должны быть читаемы первые 6 и последние 4 цифры номера карты и срок действия карты;
· На скане карты с лицевой стороны обязательно должно быть читаемо имя держателя карты;
· На скане карты на оборотной стороне должна присутствовать и быть читаема подпись держателя карты.
· Код CVV2/CVC2 можно закрыть
После предоставления копий, направим их в Службу PayOnline.
... , 06.03.2017, 18:49
...
support@flops.ru , 06.03.2017, 18:27
В таком случае, мы откроем для Вас персональный платежный коридор.
Укажите, пожалуйста, имя держателя карты точно как на карте. Завтра напишем Вам, как откроется коридор.




суббота, 21 ноября 2015 г.

В коллекцию идиотизмов

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

Цитирую (вдруг прочитают мой пост и сотрут от греха подальше свой перл на хабре):

Вот пример такой задачки, который может быть использован в ходе телефонного интервью или беседы с эйчаром на первом уровне. 
Напишите функцию merge, которая обрабатывает два сортированных списка и выдает сортированный список объединений элементов двух списков. 
К примеру:
merge ([1, 7, 11, 17], [3, 5, 13]) //=> [1, 3, 5, 7, 11, 13, 17]...
Если использовать язык с удобной семантикой для работы со списками и особенно не задумываться об использовании памяти и общей производительности, то код решения будет простым:
function merge (originalA, originalB) { const merged = [], tempA = originalA.slice(0), tempB = originalB.slice(0); while (tempA.length > 0 && tempB.length > 0) { merged.push( tempA[0] < tempB[0] ? tempA.shift() : tempB.shift() ); } return merged.concat(tempA).concat(tempB);}

Признаться, задачу я не понял - что такое список объединений? Видимо это что-то посложнее, чем просто список, наверное, вложенный список... но в качестве эталонного результата показан простой список. Мда.. Ну раз нам предложен эталонный код - тот еще код, ну да простим, то мы его опробуем на удовлетворяющих условию задачи двух сортированных массивах:

merge ([1, 7, 11, 17], [13, 5, 3])
// => [1, 7, 11, 13, 5, 3, 17]

Что мы видим? На выходе получаем не сортированный массив! То есть с таким пафосом предложенное решение не работает. Получается, что если кто решит правильно - в этой конторе не нанимают. Иначе специалист по найму персонала обидится... Да, статья переводная, но в корпоративном блоге размещена, значит, соответствует политике компании. А вы хотите стать клиентом такой конторы? Лично я - не хочу.

P.S. Да, к статье уже куча комментариев, половина комментаторов сразу себя как экспертов позиционируют и умные слова говорят, но при этом даже не видят, что король-то голый... то есть код не работает. Наверное, им стоит отправиться на собеседование в ту контору, которая разместила этот пост ;)

суббота, 2 февраля 2013 г.

Быдлокод? Быдлоинтернет от ДОМРУ!

Мало того, что у замечательной компании "ДОМ.RU В НИЖНЕМ НОВГОРОДЕ" постоянные проблемы с интернетом, а DNS сервера постоянно отваливаются. Они еще и считать не умеют и назойливо выдают страницу следующего содержания:

Мы благодарны Вам за то, что остаетесь с нами!

На сегодняшний день у Вас сформировалась задолженность, в результате которой, мы были вынуждены снизить Вам скорость доступа к услуге Интернет.
Ваш комфорт очень важен для нас, для того, чтобы пользоваться услугой с прежней скоростью, предлагаем Вам оплатить задолженность.
Ваша задолженность за услуги связи составляет 0,00 рублей.
Ага, наш комфорт им очень важен, потому просто так обрезают скорость доступа в инет, предъявляют претензии и разве что в рояль не насрали. При этом ежемесячная оплата увеличилась - в этом месяце счет за то же самое "комплексное предложение" заметно поболее, чем в предыдущие. При просмотре номера договора и баланса капча: "ebonite". Это они про себя, наверное?

P.S. Вчера через форму обратной связи на сайте отправил ДОМРУ жалобу. Как вы думаете, какой ответ? Правильно, никакого, видимо, некогда им абонентами заниматься, пиариться некогда будет.

P.P.S. Попробовал воспользоваться на сайте ДОМРУ их услугой "Онлайн консультант". Открылось эдакое окошко чата, в котором кроме меня никого нет... оказывается, по мнению компании отвечать вовсе не обязательно... пусть абоненты пишут что хотят, душу отводят. Нет, серьезно, они там сдурели поголовно?

Upd. Сегодня, 6 февраля, меня снова порадовали этим же сообщением. Интересно, это уже можно квалифицировать как вымогательство?

среда, 23 января 2013 г.

Представляете? Да!

Делал заказ на http://www.technopark.ru и при оформлении заказа увидел в "Редактировании персональных данных" потрясающую опцию: "Я представляю юр. лицо". Если честно -  я, хотя и являюсь _представителем_ юр. лица, скорее, _представляю_ себе море-океан, пальмы и песчаный пляж :D Если уж представлять что-то, то только лучшее! Интересно, русский язык в России совсем уже знать необязательно?!

среда, 4 июля 2012 г.

Unsupported Hardware watermark

Вылезло вдруг эдакое чудо - в правом нижнем углу экрана квадратик с сообщением "AMD Unsupported Hardware". Оказалось, дело в дровах для видеокарты, и решилось с помощью скрипта отсюда: Unsupported Hardware watermark

понедельник, 4 июня 2012 г.

Анонс: открытое ПО GeoMed3D для построения 3D модели недр

Выложил часть своих наработок, связанных с восстановлением 3D модели недр по космоснимкам. Софт написан на ANSI C под OC linux (32 и 64 разрядные). Source-пакет и бинарная сборка под 32 бит linux Deian прилагаются. http://mobigroup.ru/debian/pool-squeeze/main/g/geomed3d-bin/ Документацию пока не выкладывал, равно как и примеры снимков. Ежели у кого есть снимки, которые можно опубликовать и по которым получаются интересные результаты - выкладывайте здесь ссылки, с описанием, что на снимке, кому он принадлежит и под какой лицензией публикуется. Скрипт для построения вертикального разреза приведен ниже:
#!/bin/sh
# скрипт построения вертикального разреза
# глубина в метрах = 0.7*R*(разрешение исходного изображения)
# для работы скрипта нужен установленный ImageMagick и пакет geomed3d
set -e

# исходное изображение
IMAGE=sample.tif
# размер исходного изображения, пикселов
WIDTH=3217
HEIGHT=2782
# глубина построения разреза, шагов
R=300

# удалить файлы предыдущего запуска
rm -f v_min.grad.tif v_mode.grad.tif

# преобразуем исходное изображение в RAW массив
convert -depth 8 "$IMAGE" gray:in.raw
# строим маску
geomed3d_mask $WIDTH $HEIGHT 0 0.5 1 0.5 > v_mask
# размер маски в пикселях (каждому пикселу соответствует отдельная строка в файле маски)
LENGTH=$(cat v_mask | wc -l)
# построить вертикальное сечение (фокальная статистика)
cat v_mask | geomed3d $WIDTH 0 $R in.raw v_min.raw v_mode.raw
# определим размерности полученного массива
W=$LENGTH
H=$((R+1))
# посчитать градиент
geomed3d_grad $LENGTH v_min.raw        v_min.grad.raw
geomed3d_grad $LENGTH v_mode.raw       v_mode.grad.raw
# для просмотра
convert -size ${W}x${H} -depth 8 gray:v_min.grad.raw  v_min.grad.tif
convert -size ${W}x${H} -depth 8 gray:v_mode.grad.raw v_mode.grad.tif

# удалить временные файлы
rm -f in.raw v_mask v_min.raw v_mode.raw v_min.grad.raw v_mode.grad.raw

# готово! смотреть файлы v_min.grad.tif и v_mode.grad.tif
Также анонсировал здесь: http://gis-lab.info/forum/viewtopic.php?f=20&t=10754
Для интересующихся на форуме выкладываю "Использование фотополимеризующихся композиций для записи и восстановления распределения интенсивности" (http://zalil.ru/33382501), где я и начинал заниматься вопросами рассеяния на различных неоднородностях. Смотрите 2-ю главу "Спектры рассеяния на собственных неоднородностях ФПК" и главу 3 "Восстановление изображения с транспарантов, записанных на ФПК". Фотополимеризующаяся композиция (ФПК) - двухкомпонентная среда (мономер и полимер, при конверсии мономера образуется полимер), для которой можно и матмодель сделать, и проверить результат в лаборатории. Далее, выкладываю проведенную по гранту компании LG работу "Получение коллимированных пучков после прохождения сферического волнового фронта через фазовую зонную пластинку" (http://zalil.ru/33382544), где изучается и моделируется уже дифракция. Как видим, то, что в геологии называется "малые кольцевые структуры" хорошо изучено и часто встречается. Далее открывайте Фивенского (благо здесь уже и скан выложен, спасибо!). После чего смотрите результаты, полученные специалистами ООО "ГеоКосмоМониторинг". И наконец, можете изучить исходники и запустить анонсированную в топике программу.

Upd. Сборка под виндоус анонсированных утилит: http://zalil.ru/33381973 Для поддержки функций memory mapping использован проект mman-win32.

Upd. Сделал краткое объяснение моего представления о физ. механизме образования кольцевых неоднородностей, раз на форуме так хотят его услышать:

Я полагаю, регистрируемую картинку подземных неоднородностей на поверхности дают значительно более мощные относительно среднего фона сейсмоволны при землетрясениях, нежели чем картинка проявляется как результат накопления изменений от воздействия среднего фона. За несколько десятилетий, которые называет Фивенский минимальным сроком "проявления" малых кольцевых структур, землетрясения амплитудой 8 баллов и выше происходят практически везде (из вики: "За год на Земле происходит примерно: 1 землетрясение с магнитудой 8,0 и выше;10 — с магнитудой 7,0—7,9;100 — с магнитудой 6,0—6,9; 1000 — с магнитудой 5,0—5,9."), что соответствует амплитуде вертикальных колебаний поверхности уже не микроны, а сантиметры, метры и даже десятки метров, причем одна мощная волна с рассеянием на подземных неоднородностях даст интерференционную картину аналогично когерентному источнику (тогда как при среднем сейсмическом фоне когерентности нет). Такой механизм образования кольцевых структур мне представляется намного более вероятным, и дает ответ на вопрос, откуда же берется когерентность сейсмоволн - я вообще не встречал нигде попытки объяснить эту самую когерентность, про которую все упоминают, так как без нее ничего не получается. Итак, землетрясение - это процесс записи на поверхности Земли интерферограммы ее внутреннего строения. Спектры рассеивания (или, что эквивалентно, угловое распределение энергии рассеянной волны) продуцируют образование кольцевых структур на поверхности, причем изотропные неоднородности продуцируют кольца, анизотропные - "полумесяцы", как можно увидеть в моей работе по спектрам рассеивания. Соответственно, картина геологического строения может производиться путем восстановления записанной на поверхности интерферограммы. Технически это реализуется путем поиска кольцевых структур и дальнейшего анализа их характеристик.

пятница, 1 июня 2012 г.

geomed3d-tclshp package for Shapefile creation from Tcl scripts

Понадобилось мне создавать шейпфайлы, попробовал делать это через gdal (типы полей в DBF, похоже, всегда строковые, не подходит, да и не понравилось - нужно создавать XML файл, в котором прописывать имена файлов, и проч. непотребства совершать) и Spatialite (типы полей могут быть и числовые, но все равно не устраивает - сложно и не быстро). Опробовав два вышеназванных пути, сделал свой пакет GeoMed3dSHP для языка Tcl (получается вдвое быстрее, чем делать то же через Spatialite). Пример использования:
rm -f test.* && tclsh8.5
package require GeoMed3dSHP
set id [SHPCreateFiles test]
SHPWritePoint $id 374868.671871 2828378.81973 100.0 777
SHPWritePoint $id 374868.671871 2828378.81973 100.0 888
SHPCloseFiles $id
exit
Ну и заодно расширение GeoMed3dDBF для создания только DBF файлов:
rm -f test.* && tclsh8.5
lappend auto_path .
package require GeoMed3dDBF
set id [DBFCreateFile test]
DBFWrite $id 374868.671871 2828378.81973 100.0 777
DBFWrite $id 374868.671871 2828378.81973 100.0 888
DBFCloseFile $id
exit
Типы полей в DBF фиксированы, ибо мне так надо :) При необходимости поправить тип/количество полей в DBF в исходнике сложностей не вызывает.

вторник, 24 января 2012 г.

Сканер CanoScan LiDE 210 в debian


Взял себе на днях CanoScan LiDE 210 взамен CanoScan LiDE 90, для которого поддержку так и не сделали в линуксе, а танцы с бубном мне надоели. Итак, подключил CanoScan LiDE 210, запустил xsane - все работает. Не настраивал вообще ничего, только установил xsane. Сканер шустрый и достаточно тихий. С поддержкой кнопок (в терминологии разработчиков sane - sensors) все хреново, как обычно, но есть финт ушами:
$ scanimage -d "genesys:`sane-find-scanner|grep CanoScan|cut -d' ' -f 10`" -A|grep '\[hardware\]'|grep "\[yes\]"|wc -l
0
а теперь нажимаем любую кнопку:
$ scanimage -d "genesys:`sane-find-scanner|grep CanoScan|cut -d' ' -f 10`" -A|grep '\[hardware\]'|grep "\[yes\]"|wc -l
1
Одна из кнопок сканера не вызывает никакой реакции, остальные работают (хотя их названия в выводе scanimage -A перепутаны). Так что несложно сделать скрипт для пакетного сканирования, реагирующий на кнопки:
scan.sh
#!/bin/bash

SCANNER=`sane-find-scanner|grep CanoScan|cut -d' ' -f 10`
if [ -z $SCANNER ]
then
    echo "Scanner not found!"
    exit 1
fi
SCANNER="genesys:$SCANNER"

counter=1
while true
do
    BUTTON=`scanimage -d "$SCANNER" -A | grep '\[hardware\]' | grep "\[yes\]" | wc -l`
    if [ $BUTTON == 1 ]
    then
        echo -n "Start scan image $counter ..."
        scanimage -d "$SCANNER" --resolution 75 --mode Color --depth 16 --format png > $counter.png.tmp
        mv $counter.png.tmp $counter.png
        echo " complete"
        counter=$(($counter+1))
    fi
done
Собственно, запускаем вышеуказанный скрипт и жмем любую кнопку на сканере после помещения в него очередного документа.

суббота, 17 декабря 2011 г.

Открытый софт для научных расчетов

Задачки у меня бывают разные, кратенькое описание того, что может потребоваться я приводил здесь:

Дело происходит в Linux Debian, соответственно, интересует софт, который устанавливается из стандартного репозитория (что подразумевает опенсорсность). 

Для начала я протестировал двумерное Фурье преобразование (прямое и обратное) на широко известном тестовом изображении Lenna. Заодно в процессе поиска нужных функций увидел заметки об истории этого изображения Просто Лена и Обработка изображений: кто такая Лена

Выбор софта для такой типичной задачки вполне себе наличествует:
На практике же оказалось не так радужно, как хотелось бы. Из того, что есть в дебиане, работает "из коробки" только пакет octave. Зато для него можно установить множество расширений - например, необходимый мне пакет octave-image. Если же расширения нет в дебиан, можно установить из репозитория octave. Например, если мы хотим поставить последнюю версию разширения для работы с изображениями, качаем архив image-1.0.15.tar.gz: и далее в текущей директории выполняем:

aptitude install octave3.2-headers 
sudo octave
pkg install image-1.0.15.tar.gz
exit

Как видим, впечатление octave производит самое приятное. К сожалению, не умеет задействовать несколько ядер процессора, это досадно.

Далее я занялся тем, для чего, собственно, и подбирал софт. А именно, построением 3D модели земных недр по космоснимкам высокого разрешения. Несколько ссылок из предметной области:


На 32-бит хосте обработка космоснимка порядка 60 Мб размером требует около 1 Гб ОЗУ. Если же выполнять передискретизацию (скажем, уменьшить матрицу значений в 3 или 5 раз), то и намного меньше. Для Landsat 7 панхроматический снимок будет имеет вдвое большее разрешение и примерно вчетверо больший размер, так что 60 Мб снимок видимого и ИК диапазонов  соответствует примерно 250 Мб панхроматическому. Значит,  8 Гб ОЗУ на 64 бит хосте должно хватить и на обработку панхромата без передискретизации. Интересно, удастся ли это сделать на 32 бит хосте. Скоро проверю и это, как отлажу расчет на ближнем ИК диапазоне. Update. На 32-бит хосте панхроматический снимок прочитать не удалось - octave сообщает, что невозможно выделить требуемый объем памяти.

Статьи и документация по Octave плюс еще некоторые полезные ссылки:

(C) Alexey Pechnikov aka MBG, mobigroup.ru