Pull to refresh
35
0
Сергей Данилов @danx

User

Send message

Правильная миграция с MyISAM на InnoDB

Reading time 7 min
Views 30K
Давайте я отвлеку вас от котиков и расскажу, основываясь на своём опыте, какие подводные камни появляются при переходе с MyISAM на InnoDB, и как их избежать. Код приложения будет на PHP.

Этот пост я решил написать, прочитав огромное количество неправильных ответов на запрос из сабжа в интернете. По всему интернету разбросаны неграмотные или не полные ответы, в результате чего складывается впечатление о том, что смигрировать вашу базу данных на InnoDB — это очень просто. Нет, это не просто! Итак, начнем!

Зачем переходить на InnoDB


С этим вопросом, я думаю, всем всё ясно. Объяснять не буду — преимуществам InnoDB посвящены куча статей в интернете. Если ты читаешь эти строки, то значит ты осознанно пришел к этой мысли о переводе своего хозяйства на InnoDB, и ты, хабраюзер, гуглишь) Надеюсь, эта статья — то, что тебе надо.

Подготовительный этап

1. Из банального — это обеспечить необходимое количество свободного места на диске, где у нас развернута база. InnoDB занимает примерно в 1,5 раза больше места, чем MyISAM.

2. Очень важный момент — он вам пригодится в будущем при траблшутинге перформанс ишшусов в базе. Нужно прокомментировать каждый SQL запрос в вашем приложении с использованием уникального идентификатора, например, порядкового номера. Если у вас сотни или тысячи SQL запросов, то как вы жили до сих пор без этого?

SELECT /*017*/ client_id, money, lastname FROM clients WHERE money > 100;

Читать дальше →
Total votes 25: ↑16 and ↓9 +7
Comments 35

Ломаем BIOS: включение поддержки виртуализации VT-x на нетбуке Acer Aspire One

Reading time 7 min
Views 317K
В данной статье мы расскажем вам пошагово о том, как допилить напильником свой нетбук или ноутбук, в котором по какому-то недоразумению выключен и залочен в таком состоянии бит 2 в MSR 0x3A — попросту говоря, у вас есть в процессоре поддержка виртуализации, но она заблокирована биосом.

ПРЕДУПРЕЖДЕНИЕ: всё, описанное в этой статье, рассчитано на то, что вы знаете, что делаете. Всё на свой страх и риск! Если не уверены — не пытайтесь повторить это дома.

Итак, в чем же проблема?


Проблема, которую мы будем решать, для конечного пользователя компьютера выглядит так: При использовании гипервизора второго типа (например, VirtualBox)
  • вы не можете запускать виртуалки с более, чем одним процессором
  • вы не можете запускать 64-битные гостевые операционные системы внутри 32-битной хост ОС.


Вот такое сообщение вы можете видеть при попытке запуска виртуалки с числом процессоров, большим чем 1:
image

Аналогичное сообщение об ошибке вы также получаете, если собираетесь запускать 64-битную виртуальную машину (например, Debian amd64) с 32-разнядной хост ОС, например WinXP.

Можно ли вылечить это?


На этот вопрос можно ответить, проверив некоторые биты в некоторых словах состояния процессора. Самый простой способ убедиться, что в вашем случае проблема лечится — это посмотреть на то, что показывает программа SecurAble. В моем случае это выглядело так:
image

Итак, если у вас программа показывает такую же картинку, как показанная выше, то вы можете вылечить эту проблему. Однако нюанс заключается в том, что это установить нужный бит в регистре процессора можно только в БИОСе, поскольку вредный БИОС вашего ноутбука его выставляет в ноль, потом включает блокирующий бит и изменение этого бита более невозможно (до перезагрузки компа, где БИОС во время POST опять его сбросит и залочит).

Биос на нетбуке Acer Aspire производства Insyde, настройки его очень скудны и по F2 естественно мы не можем зайти в программу редактирования настроек БИОСа и включить виртуализацию там. Это было бы слишком просто.

Поэтому, мы будем дизассемблировать БИОС и менять его код, чтобы у нас бит был выставлен в 1. Если готовы, то читаем далее.
Читать дальше →
Total votes 131: ↑126 and ↓5 +121
Comments 56

AviSynth + VirtualDub: Извлекаем аудио в командной строке

Reading time 2 min
Views 3.1K
Мне как-то потребовалось извлечь аудио из *.FLV файлов. Графические видеоредакторы мне показались для этой цели слижком уж неподходящими, поэтому я решил написать свою собственную утилиту, делающую извлечение звука из любых медиафайлов, в командной строке.
Я пользовался только опенсорсными продуктами.

Итак, что нам потребуется:
  • набор кодеков, такой как K-Lite Codec Pack
  • видеоредактор Virtual Dub
  • AVISynth


Шаг 1. Устанавливаем K-Lite Codec Pack, Virtual Dub и AVISynth.

Шаг 2. Пишем вот такой скрипт на BAT-языке командного процессора cmd.exe:

@echo off
@rem (C) danx
set VD=VirtualDub.audio.
echo VirtualDub.Open(VirtualDub.params[0],"",0); > 1.jobs
echo %VD%SetSource(1); >> 1.jobs
echo %VD%SetMode(1); >> 1.jobs
echo %VD%SetInterleave(1,500,1,0,0); >> 1.jobs
echo %VD%SetClipMode(1,1); >> 1.jobs
echo %VD%SetConversion(44100,0,1,0,1); >> 1.jobs
echo %VD%SetVolume(); >> 1.jobs
echo %VD%SetCompression(); >> 1.jobs
echo %VD%EnableFilterGraph(0); >> 1.jobs
echo %VD%filters.Clear(); >> 1.jobs
echo VirtualDub.SaveWAV(VirtualDub.params[1]); >> 1.jobs
echo VirtualDub.Close(); >> 1.jobs
FOR %%i IN (*.*) do (
  if not exist %%~ni.wav (
    echo.
    echo Re-compressing %%i
    echo c = DirectShowSource^("%%i"^) > 3.avs
    echo AudioDub^(BlankClip^(length=c.FrameCount^), c^) >> 3.avs
    "C:\Program Files\VirtulDub\vdub.exe" /i 1.jobs 3.avs %%~ni.wav >nul
  )
)
del /q /s 3.avs >nul 2>&1
del /q /s 1.jobs >nul 2>&1


Читать дальше →
Total votes 13: ↑8 and ↓5 +3
Comments 11

Репликация базы данных PostgreSQL на основе SymmetricDS

Reading time 10 min
Views 20K
В этой статье я расскажу, как настроить репликацию баз данных для PostgreSQL. Для экспериментов будем использовать дистрибутив линукса CentOS 5.3, хотя это не принципиально. будем использовать версию PostgreSQL 8.4.7 и SymmetricDS-2.2.2.

Что такое репликация?

По сути, это механизм автоматической синхронизации содержимого баз данных, работающих на разных серверах. В результате репликации эти базы данных содержат абсолютно идентичные данные. Это нужно например для того, чтобы обеспечить отказоустойчивость системы (в случае падения первого сервера баз данных в работу вступает второй), или чтобы осуществить балансировку нагрузки — разных клиентов могут обслуживать разные сервера.

Для репликации нужно как минимум два сервера баз данных, поэтому готовим два одинаковых сервера с базой данных PostgreSQL на каждом. У первого будет IP адрес 10.0.2.20, у второго — 10.0.2.21, у обоих гейтвей 10.0.2.2.
Можно обойтись виртуальной машиной, например VirtualBox, создать в ней два виртуальных сервера и запустить их на своем собственном компе.

В приведенных командах первым символом будет стоять знак # либо $, эти знаки означают, что команда запускается из-под root или из-под обычного пользователя, соответственно.
Итак, какие действия нужно предпринять:
Читать дальше →
Total votes 25: ↑23 and ↓2 +21
Comments 29

Information

Rating
Does not participate
Location
Нижний Новгород, Нижегородская обл., Россия
Date of birth
Registered
Activity