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

Как ускорить работу iMac малой кровью.


"Практика" - просто и дешево:
1. Берем sata3-usb3 box ставим в него SSD не менее 64GB.
 Собранный SATA3-USB3-BOX и коробка от него.

 2. Разбиваем и форматируем "родной" дисковой утилитой. Программы -> Утилиты -> Дисковая утилита. Важно! Нам потребуется "Схема разделов GUID".

 2.1 Выбрать SSD -> выбрать вкладку "Раздел диска".
 2.2 Нажать кнопку "Параметры" в области "Схема разделов:" и выбрать "Схема разделов GUID".
  2.3 В области "Информация о разделе" , набрать имя раздела и выбрать файловую систем Mac OS. Нажать "Применить".

3.  Перезагрузиться, удерживая alt.

3.1 В загрузочном меню выбираем пункт c префиксом "Recovery"


 3.2 В следующем меню нужно выбрать пункт " Переустановить OS X"

3.3 После того, как будет принято лицензионное соглашение и установщик проверит возможность установки, нужно будет выбрать целевой диск установки(SSD диск).

Установка занимает около 20 минут. Когда процесс установки закончится, компьютер перегрузится с SSD. При необходимости в загрузочном меню можно выбрать старый диск и загрузится с HDD(удерживай при загрузке alt).

"Введение" - если вам вдруг станет интересно, как и почему я пришел к такому решению:

При первом знакомстве с iMac, меня разочаровала его производительность. А если точнее - производительность дисковой подсистемы. До того, как он попал мне в руки, я уже пару лет пользовался SSD дисками. А все модели iMac-2013(2014 тоже) кроме топовых(самых дорогих) укомплектованы HDD. А если человек просидел на SSD хотя бы несколько месяцев, ему будет просто физически тяжело работать на HDD.  Было ясно, нужно ставить SSD.

Но проблема в том, что все моно-блоки apple выпуска 2013+ года не так то просто разобрать и еще сложнее собрать обратно. Стекло приклеено, разборных винтов просто нет, все уложено очень плотно(легко повредить). Я нашел в сети несколько роликов, где ребята при помощи фена, гитарных медиаторов, обрезков пластиковых карточек и других подручных средств, разбирают iMac. Нет, этот подход мне, совсем не нравился. Официального сервиса у нас в регионе ,конечно ,нет(если честно, я не уверен в том, что официальный сервис предоставляет такие услуги). Отдавать другим, "не официальным" специалистам, было страшновато, особенно после ознакомления на форумах с подробностями неудачных попыток модификации. В любом случае, все эти варианты  выглядели сомнительно и дорого. 

Шло время, iMac стоял у меня в качестве "второго монитора" , я использовал его для обработки и хранения фото ,  видео ,  других "творческих" задач, которые случаются не так часто. Со временем я пришел к пониманию, что если все это(фото, видео, аудио) я собираюсь хранить на SSD то выйдет слишком дорого. Одних фоток 150GB не говоря уж о аудио/видео. А слот под SATA диск,в этой модели, только один. То есть, если не "колхозить", придеться вынуть терабайтный винт и поставить вместо него 128 или максимум(по бюджету) 256 гиговую ссдеху. Но ее уже будет недостаточно, объем данных уже превысил 256GB.

Обдумывая перспективы, я поначалу "рыл" в сторону thunderbolt sata box, думал повесить на него "родной" терабайтный винт. Но thunderbolt sata box стоит совсем не дешево(~$300-$500+), и как оказалось, не так то их просто купить, то-есть надо было "заказывать". Не найдя ничего подходящего, я оставил эту идею. Да, в то время, с ними была просто беда, сейчас ассортимент стал шире впрочем как и цена :) .
 
Прошло еще какое то время, и однажды, помогая одному хорошему человеку, я освежил знания по спецификации USB. Если честно , я как то всерьез не воспринимал USB, помню, когда то читал о USB3 еще в первых редакциях стандарта(более 5 лет назад) и с тех пор был уверен в том, что стандарт то вроде как бестолковый и довольно унылый. Видимо почитал, поставил где-то в голове крестик и забыл. Однако, внезапно, оказалось, что USB3 уже почти везде и в полный рост. Скорость передачи до 5Gb/s этого достаточно чтобы перекрыть производительность современных SSD, по питанию тоже все отлично, единственное, что меня беспокоило, будет ли реально отрабатывать usb3 sata box эти 5Gb/s и не упрется ли все в какие нибудь подводные камни? Повидал я на своем веку всякое, одно становление стандарта SATA чего стоило, встречались метеринки с шиной 2Gb/s и заявленной SATA3, с USB2 тоже бывали казусы, особенно часто по питанию. Короче говоря, я уже привык слышать заявления, которые на практике почти никогда не бывают оправданы. По этой причине, прямо скажем, я особо не парился, зашел почти в первый попавшийся магазин, спросил что у них есть, и в итоге, взял usb3 stat box примерно за 1000рублей. Как видно, на первой картинке, это вероятно один из самых обычных,  средних, ничем не выделяющийся бокс в море других USB3 боксов для SATA дисков. 

По приходу домой я прогнал на нем несколько тестов , и получил в результате ~410MB/s на чтение и  ~400MB/s запись. Неплохо для 1000 руб. Немного прикинув, я решил попробовать поставить на него систему и поглядеть как это будет работать. Как оказалось, заработало отлично.

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

Минусы тоже есть: например потери по производительности, из-за накладных расходов конвертирования интерфейсов. Хотя порядок этих потерь вряд-ли может быть различим субъективно. Один из USB портов будет постоянно занят. Есть вероятность "выдернуть" "Системный диск" , по ошибке или случайно. Лишний предмет, который будет постоянно лежать на столе(если конечно не придумать куда его спрятать).

P.S.
Конечно если у вас iMac на SSD эта заметка, не для вас.

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

Памятка по mysql

То, чем изредка, но приходится пользоваться. Просто, чтобы не забыть.

shell: 
Основные опции mysql и mysqldump:

-u[пользователь]
-p[пароль]
-h[хост]
-P[порт]

Копирование базы (содержимого одной базы в другую базу):
mysqldump [OPTIONS] db_name_source | mysql [OPTIONS] db_name_dst
Бекап + gzip на лету:
mysqldump [OPTIONS] db_name | gzip > ./file.sql.gz
Восстановление из gzip:
 gzip -c -d ./file.sql.gz | mysql [OPTIONS] db_name
или
 gunzip < ./file.sql.gz | mysql [OPTIONS] db_name

sql:
Добавить текст к содержимому поля:
UPDATE table_name SET field_name=concat(field_name, '<text>');
Поиск и замена текста:
UPDATE table_name SET field_name = REPLACE(field_name, '<find>', '<replace>');
Выбрать определенное количество символов(в примере 100) из поля. Бывает полезно для составления превьюшек большого числа объемистых 'text' полей:
 SELECT LEFT (text,100) FROM table_name;
Другие строковые функции
 
Быстрый фикс для mysql slave(на свой страх и риск!):

mysql> stop slave;
Query OK, 0 rows affected (0.24 sec)

mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
Query OK, 0 rows affected (0.00 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status \G

среда, 23 июля 2014 г.

Шпаргалка: как записать установочный образ FreeBSD(или linux) на usb флешку в OS X и FreeBSD-like системе

Это краткое пошаговое руководство для записи установочного образа FreeBSD из под
Apple Macintosh и других BSD-подобных систем.

1. Скачать подходящий образ http://www.freebsd.org/ru/where.html  (щелкнуть на "ISO" напротив нужной архитектуры и выбрать файл, в названии которого явно присутствует "-memstick.img").

2. Запустить терминал.

3. Выполнить команду:
df -h
и найти путь к файлу устройства и точку монтирования USB флешки ( например файл устройства /dev/disk1s1 ,  точка монтирования /Volumes/MyFlashDrive)

4. Отмонтировать флешку:
sudo diskutil umount /dev/disk1s1
 Eсли все прошло нормально в консоли появится надпись: "Volume MyFlashDrive on disk1s1 unmounted".

5. Закатать образ на флешку:
sudo dd if=~/Downloads/FreeBSD-10.0-RELEASE-amd64-memstick.img of=/dev/disk1s1 bs=10240

Посмотреть текущий прогресс можно нажав Ctrl+t .

Что касается linux дистрибутивов то операции аналогичны , но перед записью на флешку образ нужно конвертировать:
hdiutil convert -format UDRW -o ~/path/to/target.img ~/path/to/ubuntu.iso
Ссылки по теме:
http://www.ubuntu.com/download/desktop/create-a-usb-stick-on-mac-osx

воскресенье, 25 августа 2013 г.

Настройка смены полярности вместо callprogres и busydetect на аналоговых линиях.

Уже довольно давно передо мной стояла задача реализовать автоматизированную систему оповещения на базе asterisk. Для нормальной работы такой системы необходимы определенные условия. Одним из таких условий является однозначное определение факта подъема трубки на принимающей стороне. На аналоговых линиях астериск использует несколько алгоритмов для определения состояния звонка. Настройка callprogres и busydetect для интерфейса dahdi включает алгоритм определения звуковых сигнальных паттернов на линии для определения состояния звонка, этот метод очень популярен, практически все применяют именно его. Но, к сожалению, он не позволяет однозначно определить ровным счетом ничего, то есть нет никакой гарантии, что этот алгоритм не распознает определенную сигнализацию в определенных условиях, либо распознает ее слишком поздно, либо распознает ее там где ее не было. Еще одним недостатком этого подхода является необходимость точного описания паттернов для их обнаружения. Несмотря на то, что в России есть определенные стандарты сигнализации, не всегда операторы в точности их соблюдают, в первую очередь, эти сигналы предназначены для людей, а люди зачастую не предают значения небольшим отличиям в звуке длинного гудка ответа станции или его продолжительности.
Метод определения смены полярности разработан как раз для того, чтобы однозначно обозначить моменты, когда отвечающая сторона подняла трубку и положила ее. Я не буду здесь подробно описывать устройство этого типа сигнализации, информации на эту тему достаточно много в интернете, я сосредоточусь на описании настройки астериска для работы по этой системе и опишу некоторые нюансы.
Предположим в нашем распоряжении имеется сервер с установленным и работающим asterisk(версия 1.8) и настроенным интерфейсом dahdi(версия 2.4), одна, а возможно и несколько аналоговых плат с fxo портами соединенными с оператором. Первым делом необходимо выяснить поддерживает ли ваш оператор эту сигнализацию, а так же добиться от него ее включения на линии.
Проверить видит ли карта переполюсовку можно включив дебуг драйвера dahdi.
echo 1 > /sys/module/dahdi/parameters/debug
После этого действия можно совершить звонок и посмотреть dmesg.
[138842.534627] wctdm24xxp 0000:05:08.0: 4329602929 Polarity reversed (1 -> -1)
[138941.140486] wctdm24xxp 0000:05:08.0: 4329627581 Polarity reversed (-1 -> 1)
Для того, чтобы астериск начал реагировать на смену полярности, необходимо добавить следующие строчки в файл настройки каналов dahdi - chan_dahdi.conf :
answeronpolarityswitch = yes // определяем поднятие трубки при смене полряности
hanguponpolarityswitch = yes // определяем что трубку положили при смене полярности
И тут начинается самое интересное, дело в том, что настройки callprogres и busydetect начинают конфликтовать с настройками answeronpolarityswitch и hanguponpolarityswitch , то есть астериск начинает производить детект дозвона, поднятия трубки и разрыва соединения по всем разрешенным признакам и скорее всего 99% соединений будут разрываться сразу после поднятия трубки на другой стороне. Это означает, что пообщаться по телефону мы сможем только случайно :). Строки с настройками callprogres и busydetect необходимо закомментировать, а еще лучше явно указать запрет использования этих алгоритмов:
callprogres=no
busydetect=no
После всех выше перечисленных действий необходимо выгрузить и загрузить модуль chan_dahdi.so, для этого в консоли астериска набираем:
module unload chan_dahdi.so
module load chan_dahdi.so
К сожалению, использовать команду "module reload chan_dahdi.so" нельзя?! Хоть это и кажется странным и не логичным. "dahdi restart"?!
На сегодняшний день, смена полярности является единственным надежным методом сигнализации поднятия трубки и разрыва соединения для аналоговых линий. Так-же стоит обратить внимание на настройку сигнализации каналов dahdi, в этом примере я использую signalling=fxs_ks .

среда, 20 марта 2013 г.

StarCraft II: Heart of the Swarm! Лучшее что сделали Blizzard за последние годы.

От StarCraft II: Heart of the Swarm много я не ждал , и был практически уверен, что это очередной тухлый DLC, в котором в сотый раз будет перемалываться, притянутый за уши, сюжет и однообразные задания. Купил я его, можно сказать, по привычке :) и не пожалел.
На этот раз Blizzad действительно перешагнули через свою традиционную занудность и выдали 100% эпига.

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

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

Третье, сюжет средний, но впервые за всю историю серии, я могу сказать, что действительно понял о чем эта компания и что происходило с ее героями. Весь сюжет логичен и линия его простая и прямая. Авторы все таки смогли донести до меня, кто такие зерги и как устроено их сообщество. Рисуется альтернативная картина эволюции вида. Я даже порой ловил себя на мысли, что подобная форма жизни (с некоторыми оговорками) вполне могла бы  существовать где нибудь в нашей вселенной :) Кстати, думаю людям из гринписа(или тем кто против технократического пути), стоит поиграть. ;)

Четвертое, музыка! Впервые в игре Blizzard я услышал современную музыку, с качественным НОВЫМ звуком, для серии это настоящий прорыв! Были моменты, когда я прямо заслушивался. Я уж и не чаял, что близы вырвутся из своего занудянского ретро-оркестрового формата.

Пятое, дали погонять героя! Королева клинков жжот просто неподецки. Не то, что-бы это что-то прямо таки новое, но доставляет.

Шестое, юниты , они Новые! Они действительно новые и оригинальные. А мутации юнитов добавляют вариативности в геймплей.

Безусловно, все что делает Blizzard, это проекты высшей пробы, но в последнее время, они меня не радовали. Да я убил дьяблу(3), да я прошел Wings of Liberty, да я скрипя зубами докачался до 90 уровня в WoW. И все эти проекты, наверное, стоят, потраченных на них денег. И все они вроде бы хорошие, и качественные, но...
А Heart of the Swarm - это настоящая игра! Остается только надеяться, что этот свежий тренд Blizzard и дальше будет набирать обороты.

суббота, 16 февраля 2013 г.

Steam в Ubuntu 12.04 беглый взгляд

Не так давно Корпорация Valve объявила о выходе Steam для Linux, если честно , я отнесся к этой новости скептически... но все-таки свершилось! Я не принимал участие в закрытом бета- тестировании и не особо следил за развитием проекта, поэтому рассказывать о том, как проект мутировал со старта до официального релиза ,не буду.  Так или иначе, сейчас Steam для Linux доступен всем и у меня ,наконец ,до него "дошли руки". В Ubuntu 12.04 пакет Steam появился в репозитарии.
Итак, что же мы в итоге имеем, на моей машине установлен процессор core i5-2500 , 8 гигов RAM и видеоадаптер NVIDIA 650Ti. К сожалению, не все игры запустились с пол-оборота, были и те, что запускаться "не захотели", в частности Dwarfs!? и Titan Attacks, разбираться чего им не хватает, я не стал :).

Serious Sam 3: BFE и Anomaly Warzone Earch показали себя отлично, все работает четко, лагов нет.

Solar 2, Trine 2 и Bastion слегка притормаживают, самую малость, это практически незаметно. 

Сам Steam работает так же ме-е-едленно, как и под win, в этом плане прогресса у Valve нет :) 

Список игр для linux пока не велик, но и в нем можно найти несколько занимательных вещей. Буду  надеяться, что проект не стухнет.

понедельник, 6 августа 2012 г.

wav to flac

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

#!/bin/bash
cd /var/spoll/... #путь до директории с файлами звонков
find . -name "*.wav" -exec flac --delete-input-file {} \;  -print

Остается забить его в в кронтаб и дело в шляпе.
/etc/crontab
35 5    * * *   root    /root/conver_wav_to_flac | logger -i -t conver_wav_to_flac