четверг, 12 января 2017 г.

Zimbra и Ubuntu 16.04

Насколько известно все переходят на SystemD систему инициализации.
В принципе это правильно, но при обновлении Zimbra и Ubuntu 14.04->16.04 столкнулся с тем что старый upstart конфиг от Zimbra нормально не встает.
Пришлось переписать на SystemD сервис.

Проблема выложенного  на github в том, что не стартует сервис logger.
Проблема изза того, что при старте генерится perl класс, который использует внутренние пакеты Zimbra, на которые в переменных нет ссылки.
Решается это подгрузкой переменных среды.

Короче выкладываю рабочий результат. Пользуйте.

[Unit]
Description=Zimbra Collaboration Suite
After=network.target remote-fs.target time-sync.target syslog.target
Conflicts=sendmail.service exim.service postfix.service

[Service]
Type=forking
User=zimbra
Group=zimbra
ExecStart=/bin/bash -c ". /opt/zimbra/.bashrc && /opt/zimbra/bin/zmcontrol start"
ExecStop=/bin/bash -c ". /opt/zimbra/.bashrc && /opt/zimbra/bin/zmcontrol stop"
ExecReload=/bin/bash -c ". /opt/zimbra/.bashrc && /opt/zimbra/bin/zmcontrol restart"
TimeoutSec=500

[Install]
WantedBy=multi-user.target

Такие программисты

Не выдержал... Как же меня бомбит от таких постов на нормальном ресурсе Habrahabr.

Начну пожалуй 
1. "Проблема — «непоследовательное» наследование" - это не проблема. Проблема в коде, который просто недостоин существования в 2017 году. Научитесь писать модульно и вы забудете об этом навсегда.
   "При настройках студии "по умолчанию" важен порядок подключения зависимых скриптов" - не умеете готовить не пользуйтесь.
   Если для сборки проекта используете средство интегрируемое, через костыль (а плагин - это костыль), то как бы может быть разобраться как средство работает в своей среде и насколько ему начхать на ваши Solution и Project в терминах Visual Studio.
   Используйте хотя бы paths в tsconfig.json для маппинга проектов.

2. "Проблема — глобальные переменные" - проблема в руках. Никто в 2017 году не использует глобальные переменные. А если ваш проект экспортирует, то это не должно быть проблемой.
3. "Обратите внимание на длинные относительные пути. Они тут нарочно, чтобы показать, что такое случается" - случается, если используешь не модульную систему. И более скажу, использование регистрозависимых путей может привести к веселым последствиям )) особенно когда будешь собирать под другой системой )

4. "Переписать весь наш код на использование импортов за один подход не представляется возможным. " - сколько не оттягивай процесс, все равно вернешься.
5. Интегрирование чего то куда то ради интегрирования это бред. 

понедельник, 15 декабря 2014 г.

Windows Phone путь в никуда.

По сути работы разрабатываю приложения для мобильных устройств.
Все ничего но вот с Windows Phone изначально какие-то грабли.

Я даже не грешу на встроенный браузер, который на десктопе отстает на круг от своих конкурентов, так на мобильных он отстает на целых два.

Ну да ладно.

Ждал обновления до Windows 8.1. Так даже тут Microsoft наебал. Ладно что оно пришло с полугодовым опозданием, так и тут оказалось, что приложение в телефоне это IE 11, а вот WebView - это IE 10.
Ну насколько надо любить садо мазо, чтобы в одном устройстве было 2 версии IE?
Неудивительно что вся платформа работает соответственно учитывая тот факт, что IE всю жизнь являлся неотъемлемой частью платформы, что на десктопе, что на мобильных.

Ладно поехали далее... XapDeploy работает через раз, то выкидывает ошибку то еще что.

Но еще интереснее феерическое ограничение на 2!!!! приложения от разработчика, то есть если ты работаешь с несколькими продуктами то тебе придется постоянно что нить удалять из телефона иначе оно туда не зальется.

Но перед тем как работать с утройством его нужно еще ЗАРЕГИСТРИРОВАТЬ, причем эта регистрация периодически слетает и её нужно повторять.

Еще интереснее выглядит тот факт, что регистрация не пройдет, если на компе и устройстве разные часовые пояса, хотя в GMT время верное, вот это вообще ЧТО?

Короче платформа оставляет о себе ничего кроме негатива, даже от iPhone с его привязкой к MacOS как средству разработки я не испытываю такого негатива как к этому поделию от Microsoft.

Короче очередной провал в мобильном сегменте, а ведь в свое время я фанател от Windows Mobile.

четверг, 25 сентября 2014 г.

Небулайзер? Только меш!

Дошло у меня дело до покупки небулайзера.
Ребенку врач посоветовал от кашля. Давно думали об этом и даже как то брали у знакомых.
Тут решили все таки купить себе, а то как то напрягает просить у других.

Заказал на Ozon.ru так как цена такая же как везде, зато скидка + доставка по-быстрее.

Ну а пока ждать доставки решили на этот период попросить у знакомых, все таки ребенок то болеет и как бы ему ждать смысла нет.

У знакомых обычный компрессионный небулайзер, ничего сверхестесственного.
С моей точки зрения практично и просто. Мыть элементарно, ухода особого не требует.
Сели, навели лекарство, включили. Ну гудеть я думал будет сильнее, но в принципе не напрягает. Ребенок хоть и посидел немного, но особо его не полюбил, поэтому чтобы лекарство не пропадало решил сам подышать и потом понял почему ребенок шарахнулся от него.
Хоть и смысл любого небулайзера в том, чтобы сделать аэрозоль, но делают они его по разному. Что до компрессионного, то тут аэрозоль делается под воздействием сжатого воздуха. Хоть воздух и подается не прямо в рот, но отраженная струя воздуха имеет место, что я на себе и ощутил, когда после этого 3 дня ходил с ощущением как будто сутки не пил и в горле все пересохло, хотя кашлять особо я и не кашлял до этого, то тут тупо от сушняка подкашливал.

Наконец, приехал мой заказанный ультразвуковой меш-небулайзер. Компактен, бесшумен и нет того эффекта струи воздуха. Ребенок сам взял в руки и ходил дымил с ним по комнате, конечно полный цикл он не продышал, но потом еще стоял просто держа в руках и вдыхал частично струю без маски, которую я снял.
Да, такая вещь требует больше осторожности и ухода, но и преимущества есть. Главное что дышишь просто аэрозолем естественным путем, а не струей воздуха с частицами. Работает от батареек (для противников можно купить аккумуляторы обычные батарейки ну или вообще сетевой блок), поэтому не привязан к месту. Чистка конечно после каждого использования требуется и в принципе в любом небулайзере необходима, ведь пользуется им обычно больной человек, а как лечиться, если там будут оставаться микробы с предыдущего раза. Главное в таких небулайзерах не касаться меш-сетки, ну и хранить бережно.

Собственно меш-небулайзеры стоят дороже, чем компрессионные (от 3000 против 1500-2500 за компрессионные), но они и стоят того.

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

четверг, 29 мая 2014 г.

Цирк должен оставаться "Цирком"

В организации под названием " Кировский государственный цирк" ко всему относятся с юмором, даже к клиентам.

Если театр начинается с "вешалки", то цирк в Кирове начинается с "цирка".

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

Заходим на сайт circuskirov.ru, дизайн фиг с ним (цирк же все таки), но когда пытаешься заказать билеты начинается фееричный пиздец. Я опущу удобство чисто дизайнерское типа чебоксов на схеме цирка и прочее... Начнем с основного, что выдает что у цирка нет и 10000руб. на нормального программиста и немного времени на оформление договора с банком.
Бронируем билеты. И что выдает система? Выдает что вы можете оплатить билеты переводом частному лицу на банковскую карту (указан номер и срок действия... странно что CVC2 не указали, ну и лицо на которое оформлена) по сбербанку... ну куда уж легальный платеж. так только совместные закупки работают.
После этого я должен отзвониться на мобильный номер, чтобы сообщить а собственно за что пришли деньги. Занавес.
Самое веселое, что номер заказа система не сообщает. Оно приходит на почту, о чем пользователь наверное должен догадаться. Ну и конечно его сложно вывести сразу в той фееричной херне что выводят после заказа:

Ваш заказ принят. Билеты необходимо оплатить в течение 48 часов с момента заказа на карту Сбербанка переводом частному лицу в любом отделении Сбербанка или через систему Сбербанк ОнЛ@йн, (номер карты: xxxxxxxxxxxxxxxxxx, (18 цифр) срок действия до: xx/xxxx (включительно)). Если заказ не оплачен вовремя, то он автоматически аннулируется, билеты поступают в продажу. Все неоплаченные брони независимо от момента заказа снимаются за 24 часа до начала мероприятия. После перечисления оплаты Вам необходимо сразу же сообщить об этом по телефону: 8-963-xxx-xx-xx. Билеты можно получить перед мероприятием в кассе продажи забронированных билетов Кировского цирка, назвав свою фамилию, номер заказа и код, который сообщит Вам наш администратор после оплаты заказа. Данная информация продублирована на Вашу электронную почту.

Пометка о сроке действия "включительно" очень облегчает перевод, особенно людям не имеющих с счастью своему никаких отношений с Сбербанком.
Ну вот что сложно было нанять не школьника за еду, а программиста за деньги, чтобы интегрировать онлайн платежную систему и сделать жизнь посетителей хоть чуточку проще.

Короче дальше веселее... Оказывается можно оплатить в кассе. Приходим в кассу. Их там оказывается две. Причем та которая выдает брони закрыта и кассир вызывается по звонку... естественно никакого безнала, только нал.

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


понедельник, 2 декабря 2013 г.

Эпопея с продуктом за который пытаются брать деньги

По работе встала "необходимость" контролировать почтовую переписку.

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

Вроде нашли продукт продаваемый UserGate.
Собственно вот описание http://usergate.ru/products/gatewall_mail_security/.
Понятно что тут подписка, но стоит дешевле и по управляемости получше чем многие конкуренты, которые на деле вообще в этом режиме не умеют перехватывать почту в шлюзе, хотя не понимаю, что в этом сложного?
Перехватывать почту в шлюзе проще некуда. Нужно реализовать бородатый SMTP протокол.

Ну ладно. Сказано сделано. Поставили, тестим.

Вроде на тексте отрабатывает нормально. Шлем вложения.
Оказалось, что файл docx не отработал.
С этого момента началось общение с техподдержкой, которое продолжалось почти 5 месяцев в надежде на то, что мы что-то делаем не так.
Ну ладно... в начале оказалось что они не поддерживают docx. зато работают с odt.
Ну думаю, ведь docx это архив. Наверное и архивы не смотрят. Ну да.. оказалось так.
Общение с ТП навело на ExtensionPack. Который по сути является набором команд выполняемых для файлов с определенным расширением.
За все время мне так и не смогли довести его до ума.

Результат.
Продукт НЕРАБОЧИЙ. С хуя ли я должен платить за него деньги? Да и вообще не понимаю тех кто его купил.

Список НЕРАБОЧИХ фич продукта:
1. Тип вложения не детектится: авторы наивно полагаются на сознательность отправителя.
Переименуй файл zip в doc и все пройдет как по маслу, потому что все фильтры отработают в FAIL. а блокировать почту, где не отработал какой то фильтр вообще бред.
2. Раз тип вложения не детектится, то смысл дальнейшей обработки сводится к нулю
3. Поддержка архивов нулевая.
4. Поддержка форматов чуть больше чем нулевая. Даже Office 2007 и выше полностью не поддерживаются. ExtensionPack - это напильник, который не решит фундаментальных проблем.


Последний ответ ТП:

Приветствую!
0. Извиняюсь за задержку с ответом.
1. Надо поправить исполняемую строку, и все будет работать.
2. Это недокументированные опции и поэтому фактически разработчик сказал мне тестируй сам, файлы бери там, и коммандную строку настраивай сам.
3. Сейчас Mail Security реализуется на новой платформе, под Linux. Пока говорить о сроках рано, но решение явно будет получше текущего в плане функций и управляемости. Вобщем если останутся ещё вопросы, пишите. Постараюсь завтра ответить.

Короче не хватает у них человека, который мыслит как злоумышленник.

Собственно очередной говно-проект очередной говноконторы.

Сколько раз пытался пользоваться например Proxy от Usergate столько же раз плевался и сносил его к хуям, ибо в этой конторе походу все сделано на отъебись.



понедельник, 1 октября 2012 г.

PHP - 10 лет - одна печаль.

Прошло уже 10 лет с тех пор как я начал пользоваться языком PHP, с тех времен много воды утекло, пишу уже частенько на других языках, но есть и старые проекты.
Понадобилось старый проект перенести на юникод в связи с переносом на linux. Короче начался пипец.

1. База сконвертирована в UTF-8 довольно просто и быстро, единственно отдельно пришлось обрабатывать таблицу с бинарными данными, но это мелочи.
2. Файлы PHP и прочее были быстро переведены в UTF-8 и почищены от \r. iconv и perl тут как бы все сделали.
3. Началось безобразие:
  • при обращении к строке по [] естественно отдавался первый байт маркера юникода. пездец приехали... с чего баня то упала? при том что сам интерпретатор работает прекрасно с UTF8 файлами.
  • ну и прочее... strlen и далее... короче все встало колом.
И если функции strlen и прочие можно завернуть через mbstring.func_overload то остальное, как например ucfirst и далее просто пездец
Благо сайт был более менее по божески написан и я смог все завернуть через родные mb_* функции и все заработало. но было убито полсмены.

Из найденного.

ucwords, strtolower,strtoupper - > mb_convert_case
ucfirst -> самопал, ибо нет стандартного
[*] -> самопал
serialize<->unserialize - тоже костыль, ибо мне непонятно нахера в строке считать байты, если строка юникодовая.для бинарных данных я все понимаю, но если это обычная строка???.
preg_* - модификатор u + \w (только английские)  [а-я] - русские ну или класс \p{L} - для тупо буквы.(если нужны цифры то \d)

Короче 10 лет, и никакого сдвига в лучшую сторону.

Вопрос разработчикам: Если внутренняя кодировка UTF-8 (так как сами файлы UTF-8), что за бред использовать для работы со строками стороннее расширение?

Короче вывод. Если вы собрались писать нормальное юникод приложение, то не связывайтесь с PHP. он застыл на этапе 2002 года, а вернее на версии 4.2 + немного классов из 5.
Мое мнение. Нужно бросать что есть и разрабатывать с ноля чистую адекватную версию, потому что поддерживая старое говно расти дальше некуда.

Microsoft смог вовремя отказаться от 1 фреймворка, просчитал ошибки и выстроил замечательный второй (до сих пор не измененный сильно в основе), который не поддерживал старое говно... Здесь необходим такой же путь. Эволюция ни к чему не приведет. Только к латанию одних и тех же дыр от года к году.