PHP: работа с БД Oracle используя расширение oci8 в Ubuntu 14.04

Install
Установка расширения Oci8 для работы с БД Oracle.
Ставим pecl.
sudo apt-get install php-pear php-xml php7.0-xml php7.0-dev 
sudo apt-get install pecl
Через pecl ставим Oci8. При установке указываем путь в oracle lib.
sudo pecl install oci8 
instantclient,/usr/lib/oracle/<ver>/client64/lib
Добавляем extension в php.ini.
<br><br> Читать дальше

PHP: установка php7 на ubuntu 14.04, CentOS 7

PHP7

Является самой актуальной (если не брать во внимание dev версию php 8) и производительной версией php.

Ubuntu 14.04

Установка php7 на Ubuntu 14.04 делается через предварительное добавление app-репозитория ppa:ondrej/php.

sudo apt-get install python-software-properties software-properties-common
sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
sudo apt-get update

Далее удаляем опционально php5 (Purge удалит и конфигурационные файлы).<br><br> Читать дальше

PHP serialize и json

PHP serialize – метод превращения данных (строки, массива) в байт строку с возможностью последующего извлечения через unserialize. Ранее был популярен, но сейчас лучше использовать json:

  1. serialize работает только в php
  2. serialize из коробки имеет проблемы со спец. символами (пример ниже)

Ошибка “Notice: unserialize(): Error at offset 454707 of 455688 bytes in”

Варианты решения:

  1. переделать на json – самый простой и эффективный на практике
  2. использовать DECOCE – учитываем, что не работает с array
  3. использовать REGEXP для удаления “плохих” символов массово – можно потерять часть данных
  4. искать символ(ы)  по значению байта (455688) на которые ругается serialize через dd, sql в базу и прочие шаманства и удалять их направленно

json – по сути аналог serialize, только более стандартизирован и стабилен.<br><br> Читать дальше

PHP: простая файловая шара (upload, download, delete, open)

DOWNLOAD/OPEN

При генерации файла обязательно делаем скобки вокруг “file_name”, иначе в случае если в имени файла есть пробел firefox будет показывать только первое слово, хотя другие браузеры этим страдать не будут. Mozilla давно сказала, что исправлять это не будет т.к. такое поведение соответствует RFC.<br><br> Читать дальше

Ruby: работа с Excel (xls) и CSV с гемами spreadsheet, axlsx

В целом про csv/excel тут.

Для работы с CSV достаточно системной библиотеки CSV.

 

CSV

Работа с CSV

# открываем файл, каждая строка является массивом, каждая ячейкам – элементом массива

csv.foreach("csv.csv") do |line|
puts line.inspect
end

# если нам нужно сохранить весь файл в двумерный массив (array, в нем строки в виде отдельных array) – просто вызываем read.<br><br> Читать дальше

phantomjs – парсинг web с поддержкой js

    • (macbook, phamtomjs) На macook и ios можно запускать shortcuts, там писать код (ниже пример с выгрузкой страницы html с запуском js!) и автоматизировать запуск (на ios через сами shortcuts, на macbook через cron/shorty)
    crontsb -l
    */2 * * * * /Users/rpv/lesta_shortcut.sh
<br><br> Читать дальше

PHP библиотека PHPExcel для работы с Excel

Для работы с Excel использовал библиотеку PHPExcel. Установка простейшая – кладем папку Classes в нужную папку на сервере, указываем корректные пути в include/require.

Примеры кода по чтению/генерации файлов Excel можно посмотреть на github странице библиотеки.

 

Красивости

и этим не ограничивается функционал, это лишь то, что использовал:

  • mergeCells(“cell_range”) – Объединение указанных ячеек в одну.
<br><br> Читать дальше

Excel: использование функции ВПР

Общее

В Excel есть полезная функция – ВПР. Позволяет на основе списка неких идентификаторов извлечь из таблицы значения атрибутов этих идентификаторов.

Сравнение ВПР с другими вариантами решения задачи:

  • ВПР – подходит для небольших объемов данных. По опыту попытка получения данных по 100к значениям в таблице из 300к строк требовала неимоверное время для расчета и в результате пришлось решать задачу по-другому. 
<br><br> Читать дальше

Ruby: парсинг и модификация WEB страниц с Nokogiri и Mechanize

Парсить страницу через curl + regexp можно, но только в простых сценариях. В противном случае проще и надежнее использовать библиотеки.

Mechanize и Nokogiri похожи. Насколько я понимаю Mechanize использует Nokogiri для своей работы. Оба Gem могут использовать html объекты для парсинга/манипуляции (nokogiri так же может работать с xml).<br><br> Читать дальше

Microsoft Word разное (стили и глюки, память на диске и temp)

Повторное использование одной и той же сноски
Повторное использование одной и той же сноски достигается за счет перекрестной ссылки.
word вписать таблицу в страницу по ширине

Очень часто возникает задача вставить таблицу в документ Word из внешнего источника (WEB/Excel). При такой вставке границы таблицы могут заходить за пределы листка.<br><br> Читать дальше