пятница, 25 декабря 2015 г.

Разработка печатной формы "счет-фактура" в формате pdf для сайта на php (tcpdf)

По большому счёту, web-разработкой я не занимаюсь, но иногда приходится "на коленке" писать отдельные модули. Последние полгода я занимаюсь созданием web-фронтэнда к учётной базе 1С для клиентов своего работодателя. О взаимодействии "web-сервисов" 1С и сайта я сейчас распространяться не планирую - может быть напишу отдельную заметку, а сейчас хотел поделиться своим опытом освоения вполне логичной темы развития клиентского портала, а именно - формированием печатных форм документов.Так как клиентский портал я решил писать на PHP (просто из-за того, что этот язык был мне более-менее знаком по моим предыдущим наработкам), то и библиотеки формирования pdf пришлось выбирать из доступных для этого языка. Из всего множества проектов я остановил свой выбор на tcpdf, во-первых, данный проект бесплатен (и для коммерческого использования), во-вторых, для базового "Hello, World!" достаточно написать буквально пару строк "обвязки".
Предлагаемые мной "бланки печатных форм" являются плодом моих размышлений, обмеров линейкой параметров бумажных печатных форм, чтения официальной документации и примеров с сайта проекта, а также помогла статья из первой десятки поисковой выдачи гугла по настройке кириллических шрифтов.

Разработка печатной формы "счет-фактура" в формате pdf для сайта на php (tcpdf)

По большому счёту, web-разработкой я не занимаюсь, но иногда приходится "на коленке" писать отдельные модули. Последние полгода я занимаюсь созданием web-фронтэнда к учётной базе 1С для клиентов своего работодателя. О взаимодействии "web-сервисов" 1С и сайта я сейчас распространяться не планирую - может быть напишу отдельную заметку, а сейчас хотел поделиться своим опытом освоения вполне логичной темы развития клиентского портала, а именно - формированием печатных форм документов.Так как клиентский портал я решил писать на PHP (просто из-за того, что этот язык был мне более-менее знаком по моим предыдущим наработкам), то и библиотеки формирования pdf пришлось выбирать из доступных для этого языка. Из всего множества проектов я остановил свой выбор на tcpdf, во-первых, данный проект бесплатен (и для коммерческого использования), во-вторых, для базового "Hello, World!" достаточно написать буквально пару строк "обвязки".
Предлагаемые мной "бланки печатных форм" являются плодом моих размышлений, обмеров линейкой параметров бумажных печатных форм, чтения официальной документации и примеров с сайта проекта, а также помогла статья из первой десятки поисковой выдачи гугла по настройке кириллических шрифтов.

понедельник, 20 июля 2015 г.

Установка репозитория EPEL в CentOS

Всем, использующим CentOS в качестве серверной платформы, наверняка знаком репозиторий EPEL - он содержит массу полезных пакетов, от phpMyAdmin до zabbix и zarafa... а вот способов его установки почему-то описано видимо-невидимо - от ручного создания файла описания в /etc/yum.repos.d до установки командой "yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm". Не стану спорить о правильности или неправильности всех описываемых методов, но как по мне - намного удобнее подключать этот репозиторий командой "yum install epel-release" - ссылка на актуальный репозиторий EPEL входит в состав активного по умолчанию репозитория CentOS "Extras", так что все копания в настройках репозиториев можно оставить в прошлом... ну и ретроградам, конечно.
P.S.: а вообще, странно, почему в результатах поисковиков так сложно найти описание этого простейшего способа - уже не раз приходилось объяснять коллегам, вынужденным сопровождать CentOS, почему "из коробки" не ставится PMA, и что надо сделать, чтобы его поставить.

среда, 18 марта 2015 г.

"Теория заговора" или "Как я не выкинул смартфон".

Начну издалека - работать со смартфонами я начал ещё в те времена, когда не существовал не только Android и iPhone, но даже не предоставлялся мобильный доступ в интернет ни одним местным оператором сотовой связи. С тех пор изменилось многое, в том числе и отношение к смартфонам - из дорогих безделушек они превратились в абсолютно обыденный, и весьма нужный повседневный инструмент. Моим первым смартфоном, в современном понимании этого слова (а не слайдер с фотоаппаратом и возможностью принимать почту и посещать некоторые сайты, типа Siemens SL40), стал Samsung Galaxy mini, достаточно быстро перекочевавший в пользование моей дочурки, где и погибший в результате одного из летних ливней. Второй смартфон был чуть выше классом - тоже Galaxy, но уже Gio - он через примерно год эксплуатации практически в точности повторил судьбу своего предшественника. На этом этапе я для себя осознал, что "для себя" и "для детей" надо ориентироваться на совершенно разные  модели - себе - выбирать только по характеристикам и удобству, а "детям" - в первую очередь по цене, а там уже и на характеристики можно поглядывать...
Итого, три года назад я купил себе Galaxy Ace2 - на тот момент модель хоть и не была флагманом, но по многим характеристикам (а особенно по качеству фотокамеры) была близка к переднему фронту. Шло время, выходили обновления прошивок, в какой-то момент вместо андроида 2.3 уже стоял 4.1, но к весне прошлого года телефон стал катастрофически глучить, лагать и тормозить - то СМС открывал на просмотр секунд по 15, то просто вываливался из браузера, то ещё какие-нибудь чудачества закатывал, но последней каплей стал самый обидный глюк - при входящем звонке, проводишь по экрану "ответить", бегунок доходит до края экрана - и всё - может секунд через 20 ответить, может уйти в перезагрузку, может зависнуть в таком положении на пару минут. Ладно, подумал я - сам виноват - накопил за годы хлама, что телефон не справляется даже с первой и главной своей задачей - надо сделать сброс на заводские настройки! Сказано - сделано - бэкапы созданы, телефон обнулён. Первая пара дней эксплуатации после сброса дала надежду, что всё исправилось... но не тут-то было! Третий день - потеря сети (с отображением уровня сигнала "уверенный приём"), перезагрузка - сеть есть; четвёртый день - самопроизвольная перезагрузка при попытке позвонить из адресной книги; с пятого и далее - полное воспроизведение поведения "до сброса".
Ясно, подумал я, телефон старый - с современным софтом не справляется (спасибо быдлокодерам, считающим оптимизацию потребления ресурсов уделом слабаков) - нужен новый аппарат. Прикинул ассортимент в магазинах, прикинул свои натянутые отношения с жабой (которая склонна душить при каждом удобном случае), вспомнил как порой был огорчён утром, обнаружив, что забыл поставить телефон на зарядку в ночь, а сейчас хорошо если до работы доехать зарядки хватит, и решил взять Philips Xenium W3568 - пусть и места больше в кармане занимает, и тяжелее своего предшественника, но зато 2 SIM-карты и аккумулятора хватает на 3 дня средненькой эксплуатации (всегда включён 3G, несколько минут разговоров, пара СМСок, просмотр новых писем в клиенте - без картинок). Первое, что было сделано после покупки - установил на "филю" весь софт, имеющийся в "самсе" и задублировал содержимое флэшки (чтобы и музыку послушать можно было) - восторг! всё летает даже без намёка на тормоза! можно даже запустить параллельно музыку, обновление чего-нибудь в PlayMarket и бродить по интернету!!!
С этого момента Philips становится основным "игровым" смартфоном (благо, даже играя по дороге на/с работы, заряда хватает ещё как минимум до следующего вечера), а Samsung готовится занять почётное место на полочке с телефонами "на всякий случай" - как временная замена внезапно сломавшегося или утерянного аппарата. В таком статусе Ace2 дожил до ноября прошлого года, используемый для получения СМС-уведомлений от банков, провайдеров и прочих мосэнергосбытов (симку я ему оставил "информационную" - на неё особо никто не звонит), а в ноябре я решил всё-таки перебраться на более свежее железо - выбрал какой-то Fly (выбирал, кроме цены, по единственному критерию - чтобы камера была с фокусом, а не фиксированная как в W3568), а самсунгу, вместо того, чтобы идти на помойку (таким телефоном даже как временной заменой было пользоваться неохото), было предложено сменить прошивку на неофициальную - я выбрал CyanogenMod, но т.к. "официально" моя модель этим модом не поддерживается, прошивка оказалась "дважды неофициальной" :-) но "наречённому трупу" было уже без разницы. Перешил успешно. Разобрался с пакетом необходимого софта от Google. Синхронизировал адресную книгу и прочие прелести. Восстановил весь используемый на родной прошивке софт... и тут как нарочно у моей дочи в её смартфоне отказал разъём для наушника, а без музыки - ну совсем никак! - пришлось отдавать Fly, а самому полностью пересаживаться на "зомби" - не без опаски, но я вернулся на "это убожество, пусть и с более весёленькой прошивочкой"... и что бы вы думали? - прошло 4 месяца, и мой старый добрый Galaxy Ace2 опять стал моим основным смартфоном - отзывчивость тачскрина поражает (как поражала в первые недели после покупки), перестали тупить не то что звонилка и СМС-читалка - даже браузер работает без нареканий!.. единственное, что сказывается - у трёхлетнего аккумулятора всё же ёмкости уже едва-едва хватает дотянуть до полуночи (при привычном, "умеренном" режиме эксплуатации).
Так, а в чём же "Теория Заговора"? - элементарно - на Philips за это время не вышло ни одной прошивки, так что деградировать там особо нечему (хотя основные приложения да - обновляются регулярно), но в игрушке, которая год назад летала, сейчас даже невозможно текст набрать - тупит, или вообще вышибает. При том, что эта же игрушка ещё осенью на Ace2 едва-едва запускалась, а сейчас работает едва ли не стабильнее, чем на стационарном ПК! Да и с браузером у Филипа всё с каждым днём грустнее и грустнее - иногда чтобы банально закрыть вкладку (авторизация в метро-WiFi), уходит секунд 20 - мне это начинает напоминать поведение самсунга на родной прошивке - осталось начать тормозить при попытке ответить на входящий звонок - и всё, я решу, что как минимум два производителя находятся в тайном сговоре, заключающемся в том, чтобы технически исправные аппараты по прошествии определённого времени (по моим наблюдениям - около года) начинали вызывать недовольство своих владельцев всё большим и большим числом способов...

понедельник, 12 января 2015 г.

Краткий список программ и алгоритмов для восстановления потерянных данных.

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