Excel: как заменить множество ячеек сохранив значения старых

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

Просто выставить фильтр и вставить новые данные не получится т.к. вставка в Excel происходит построчно во все ячейки, а не только в зафильтрованные.  Читать дальше

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, только более стандартизирован и стабилен.  Читать дальше

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

DOWNLOAD/OPEN

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

Oracle DB: разные хинты

использование sqlldr для загрузки данных в базу

sqlldr  – SQL*Loader. Позволяет загружать данные в базу из файла, например csv. Пример использования есть тут.

По умолчанию для работы пользователя с sqlldr пользователя нужно добавить в группу dba или запускать sqlldr из под sudo.  Читать дальше

Как сбросить пароль Windows на ноутбуке с запароленным BIOS

Знакомые дали залоченный по BIOS ноут Acer Aspire ONE, просил пароль для входа, а после перезагрузки опять просил пароль и ОС не загружал. В менюшках удалось выйти на запрос master пароля с сгенерированным кодом блокировки на экране. На сайте  ввел код с экрана 59351360, он выдал мастер 46039966.  Читать дальше

Huawei Honor 8 – телефон, который стоит своих денег

Затестил Huawei Honor 8 с поездки в Шэнчжэнь.

Впечатления от него позитивные, считаю, что совсем не зря на Ya-market у него оценка 4,5.

Плюсы:

  • Быстрый (4×2 core CPU, 4гб ОП)
  • Смарт-кнопка с отпечатком пальца (дактилоскопический датчик) и возможностью биндинга любых приложений на нее (контакты, фонарик, пульт, etc)
  • ИК-передатчик для управления пультом и приемник для возможности тонкой настройки (ставишь реальный пульт напротив датчика, принимаешь сигнал, биндишь к кнопке в виртуальном пульте – круто!)
  Читать дальше

Email разные заметки (mta, mda, msa, mua, pop, imap; mutt, mail, ssmt; Cisco ESA, Outlook)

Терминология, протоколы, описание работы
  • Mail Transfer Agent (MTA) – это mail server (mail router, mail exchanger or MX, SMTP gateway), MTA (почтовый сервер) отвечает за передачу сообщений от отправителя получателю. В DNS для обозначения MTA для доменов используется запись MX. Для MX записи так же можно задать значение preference для нескольких записей, если компания использует несколько mail серверов (отказоустойчивость и балансировка).
  Читать дальше

Start-stop-daemon ubuntu/debian

Альтернативы Start-stop-daemon хорошо расписал тут.

Запуск процесса в фон в виде демона позволяет не держать постоянной открытой tty-консоль или вкладку в терминале. Использовал start-stop-daemon для запуска bearerbox/smsbox kannel, разных прочих самописных демонов.

Особенности:

  • в скрипте, по аналогии с cron-скриптами нужно указывать полные пути
  • обязательно указание интерпретатора
  • убить демон можно найдя его в ps -aux и убить pid
start-stop-daemon -Sbvx /home/redkin.p/bin/TEST
  Читать дальше

Работа с утилитой join, ошибка join is not sorted (данные файла не отсортированы)

Join – полезная утилита для объединения нескольких текстовых файлов по какому-то общему идентификатору. Название намекает на аналогию с функцией join в SQL.

~$ cat >1
asd 1
bsd 2
csd 3
~$ cat >2
asd test
bsd testtest
csd testtesttest

~$ join 1 2
asd 1 test
bsd 2 testtest
csd 3 testtesttest
Delimeter

join -t”;” – задаем разделитель для csv.  Читать дальше