Asus Zenbook and DW1560

Странно, но с оригинальным WIFI-Bluetooth адаптером от Intel, беспроводная сеть в Arch Linux все же завелась, а с DW1560 на чипе от Broadcom — нет…

Поначалу я с этим пытался боротся, но все тщетно. Всегда вываливалась ошибка о том, что WPA/PSK авторизация неудачна.

На днях решил покопаться с этой вредностью поплотнее. Как оказалось всего-то было достаточно вырубить опцию Intel AES-NI в биосе :-/. То ли эта хрень работает только с Intel адаптерами, то ли программное обеспечение (или дрова — хз) генерируют хэш неверно или проверяют каким-то особым способом, который не предусмотрен (или забыт).

Так что Arch снова а полете, жив и здоров!

Рубрика: Новости | Оставить комментарий

Asus ZenBook Air

По случаю взял ультрабук от Asus — ZenBook UX310UAK, DDR4 4Gb, 500Gb HDD, 13.3″ IPS 3200×1800, GPU Intel HD 620, Windows 10 на борту.

Недолго думая, докупил к нему SSD m.2 на 120Gb + 8Gb DDR4, поставил на него Manjaro Linux + Gnome — хорошая штука, но впоследствии начал несколько подглючивать интерфейс. Я так и не смог понять почему отваливается отображение ползунков в меню из трея, это привнесло определенный дискомфорт. Надо было ставить как обычно — все руками, Arch Linux + XFCE — в этой конфигурации у меня проблем ранее не было, а Manjaro — это все же готовая сторонняя сборка, основанная на Arch Linux.

Пытался смириться с неудобствами… не получилось. Заказал WiFi+Bluetooth модуль DW1560 NGFF (BCM94352Z), воткнул вместо интеловской (которая, к сожалению, не поддерживается макосью).

Поставил Mac OS X Sierra 10.12.6. Все почти как обычно, дистрибутив на флэшку, кексты — FakeSMC, VoodooPS2Controller (для работы клавиатуры), Lilu (патчит кексты на лету), AppleALC (поддержка звука через Lilu), VoodooI2CVoodooI2CHID (для работы тачпада), BrcmFirmwareData + BrcmPatchRAM2 + BrcmNonPatchRAM2 (для работы bluetooth), AsusNBFnKeys (для управления яркостью экрана, громкостью звука с клавиатуры — работают не все клавиши), ACPIBatteryManager (корректно отображение заряда батареи), LegacyBCM943225HMB (т.к. модуль оказался не совсем тот, который я ожидал, а BCM94352ZAE, оно оказалось не совсем совместимо с дровами, пришлось использовать этот кекст) + пропатчил DSDT.

Весь этот наборчик подкинул в Clover UEFI Bootloader и получился ZenBook Air :)

Из недостатков (в MacOS X):
— работают не все функциональные клавиши управления (возможно я не все для этого сделал и настроил)
— очень тугой тачпад, прямо вообще невозможный (используется тачпад ELAN1200, который общается по какому-то закрытому протоколу, поэтому оно работает как-то не очень удобно, в частности если зажать «кнопку» на тачпаде, то переместить курсор (окошко) нельзя, поэтому внешняя мышь просто маст хэв

Общие недостатки:
— кнопка «Power» на клавиатуре расположена там, где обычно располагается кнопка «Delete»
— курсорные клавиши также неудобны
— один слот для расширения памяти
— клавиатура немного прогибается при наборе текста
— время автономной работы не сильно большое, если не особенно нагружать, то часа 4-5
— под нагрузкой греется свыше 75°С, это касается игр, в остальное время от 40°С до 60°С, не более того

Что порадовало:
— тонкий и легкий, всего 1.4кг
— хорошая матрица
— производительность встроеной видяхи очень даже неплоха
— алюминиевый корпус, хороший теплоотвод
— присутствие USB3.0 как в -A, так и в -C разъемах
— присутствие SDCard ридера
— присутствие HDMI-выхода
— переходник USB-A -> Ethernet RJ45

Рубрика: Новости | Оставить комментарий

Mining test [successful]

На текущий момент копание криптовалюты стало очень сильно выгодно. Даже такие карты как GTX 750, RX 460 сейчас способны приносить прибыль. С прилавков магазинов смели все подходящие видеокарты — RX 470, RX 480, RX 570, даже прожорливую RX 580, GTX 1060, GTX 1070, GTX 1080. Начали раскупать GTX 1050 и RX 460. Ах, да.. также стало довольно сложно найти блоки питания от 700 ватт с сертификатом.

Конечно найти можно, но цены будут абсолютно неадекватными, т.к. и поставщики, и магазины стали жадничать. Геймеры наверное сейчас ненавидят майнеров :).

Решил немного потестить и поучаствовать в этой вакханалии. Хоть для майнинга больше подходят видеокарты от красных, пришлось взять зеленую, ибо красных в наличии (тут и сейчас) не оказалось. Этой картой стала GTX 1060 6Gb.

Не стал заморачиваться с подбором майнера, тупо взял nicehash майнер и поставил копаться. Он сам выбирает наиболее выгодную криптовалюту. В основном копался эфир, зикэш и, периодически процессором копалось монеро. Все это за 10 суток принесло 0.01654913 BTC (45.51 USD, ~2560 RUR — по курсу на тот момент).

Т.к. ваттметра у меня нет, а пихать в разрыв цепи амперметр мне страшно, предположительно вся система отжирала не более 500 ватт (600-700ватт жрет 5 х 1060), за 10 суток электричества сожглось 0.5*24*10 = 120кВт, что примерно стоит 400р.

Тестовый (читай неоптимальный) вывод денег на визу сбербанка принес 2100 RUR, отнимаем затраты на электроэнергию и получаем ~1700 рублей чистой прибыли с одной GTX 1060. Расчетно за 30 дней выгода была бы в районе 5.4к. Средняя длительность окупаемости вложений около 3-4 месяцев. Все зависит от состояния рынка криптовалют.

П.С. по слухам, через пару дней сложность сети биткоин вырастет почти на 10% и его цена станет еще выше, но я не биржевой аналитик… так что для меня это лишь слухи.

Рубрика: Новости | Оставить комментарий

ArchLinux

Замечательный дистрибутив!

Картинок процесса установки нет, лень.


// разбиваем диск, sda1 - /boot, sda2 - /, sda3 - swap
# fdisk /dev/sda

// форматируем
# mkfs.ext2 /dev/sda1
# mkfs.ext4 /dev/sda2
# mkswap /dev/sda3

// монтируем в ФС
# mount /dev/sda2 /mnt
# mkdir /mnt/boot
# mount /dev/sda1 /mnt/boot
# swapon /dev/sda3

// ставим базовый набор пакетов
# pacstrap /mnt base
# genfstab -p /mnt > /mnt/etc/fstab

// немного правим конфиги
# echo ‘arch64’ > /mnt/etc/hostname
# echo ‘KEYMAP=ru’ > /mnt/etc/vconsole.conf
# echo ‘LANG=en_US.UTF-8’ > /mnt/etc/locale.conf
# echo ‘127.0.1.1 arch64.localdomain arch64’ >> /mnt/etc/hosts

// раскомментируем en_US.UTF-8 и ru_RU.UTF-8
# nano /mnt/etc/locale.gen

// «заходим в нашу новую систему»
# arch-chroot /mnt

// меняем пароль рута
# passwd

// заводим нового юзера
# useradd -m -s /bin/bash reddragon
# passwd reddragon

// генерируем локали
# locale-gen

// выставляем локальную зону
# ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime

// ставим недостающие пакеты
# pacman -S wpa_supplicant intel-ucode dialog grub reflector rsync bash-completion grub fakeroot pkg-config sudo —needed

// настраиваем wi-fi соединение
# wpa_passphrase <SSID> <password> > /etc/wpa_supplicant/wpa_supplicant-<wifi-network-device>.conf
# systemctl enable wpa_supplicant@<wifi-network-device>

// ставим дополнительные пакеты
# pacman -S git tmux mercurial make m4 patch binutils automake gcc openssh screenfetch dnsmasq iptables ebtables emacs

// ставим xorg, xfce4, sddm
# pacman -S xorg-server xorg-xinit xterm xf86-video-vesa xfce4 xfce4-goodies mesa-libgl sddm pavucontrol pulseaudio pulseaudio-alsa —needed
# pacman -S libdvdcss sdl libva-vdpau-driver libva-intel-driver —needed

// включаем графическую авторизацию
# systemctl enable sddm

// ставим nvidia-дрова и поддержку nvidia-optimus
# pacman -S nvidia bumblebee primus lib32-primus lib32-nvidia-utils bbswitch nvidia-settings lib32-virtualgl —needed

// включаем сервис
# systemctl enable bumblebeed

// ставим kvm и nfs-сервер
# pacman -S qemu virt-manager virt-viewer vde2 bridge-utils openbsd-netcat dmidecode net-tools nfs-utils—needed
# systemctl enable libvirtd
# systemctl enable nfs-server

// добавляем нашего юзера в группы
# usermod -G wheel,libvirt,bumblebee reddragon

// ставим загрузчик (MBR)
# grub-install /dev/sda
# mkinicpio -p linux
# grub-mkconfig -o /boot/grub/grub.cfg

//  или ставим загрузчик (UEFI)
# bootctl —path=/boot install
# echo ‘default arch64’ > /boot/loader/loader.conf
# echo -e ‘title Arch Linux\nlinux /vmlinuz-linux\ninitrd /initramfs-linux\noptions root=/dev/sda2 rw’ > /boot/loader/entries/arch64.conf

// ставим yaourt
# sudo reddragon
$ git clone https://aur.archlinux.org/package-query.git
$ git clone https://aur.archlinux.org/yaourt.git
$ cd package-query && makepkg -si && cd ..
$ cd yaourt && makepkg -si && cd ..

// необходимо, если /tmp не очень большой
// мне при компиляции телеграма не хватило, оно отожрало около 6 гигов
$ echo ‘TMPDIR=~/tmp’ > ~/.yaourtrc
$ mkdir ~/tmp

// ставим пакеты из AUR
// мессенджеры,
// их можно собирать и из исходников (некоторые из них), если есть время и хочется самую последнюю версию
// телеграм компилится довольно продолжительное время
$ yaourt -S viber skypeforlinux-bin telegram-desktop-bin webtorrent-desktop-bin

// ставим vagrant
$ sudo pacman -S vagrant
$ vagrant plugin install vagrant-rekey-ssh vagrant-mutate

// ниже фикс для vagrant-libvirt
$ sudo mv /opt/vagrant/embedded/lib/libcurl.so{,.backup}
$ sudo mv /opt/vagrant/embedded/lib/libcurl.so.4{,.backup}
$ sudo mv /opt/vagrant/embedded/lib/libcurl.so.4.4.0{,.backup}
$ sudo mv /opt/vagrant/embedded/lib/pkgconfig/libcurl.pc{,.backup}

$ export PATH=/opt/vagrant/embedded/bin:PATH
$ export GEM_HOME=~/.vagrant.d/gems/2.2.5
$ export GEM_PATH=$GEM_HOME:/opt/vagrant/embedded/gems

$ gem uninstall ruby-libvirt
$ gem install ruby-libvirt

$ sudo mv /opt/vagrant/embedded/lib/libcurl.so{.backup,}
$ sudo mv /opt/vagrant/embedded/lib/libcurl.so.4{.backup,}
$ sudo mv /opt/vagrant/embedded/lib/libcurl.so.4.4.0{.backup,}
$ sudo mv /opt/vagrant/embedded/lib/pkgconfig/libcurl.pc{.backup,}

$ mkdir -p ~/tmp/
$ cd ~/tmp/
$ git clone https://github.com/jcf/vagrant-libvirt
$ cd ./vagrant-libvirt/
$ git checkout upgrade-nokogiri
$ gem build vagrant-libvirt.gemspec
$ vagrant plugin install ~/tmp/vagrant-libvirt/vagrant-libvirt-0.0.37.gem

// выходим обратно в админа
$ exit

// ставим разные разности, для стима надо раскомментировать multilib в /etc/pacman.conf
# pacman -S chromium steam

// перегружаемся
# reboot


Рубрика: Новости | Оставить комментарий

Fedora 25 and Vagrant NFS shared folders

Обновил систему на ноутбуке до Fedora 25, и столкнулся с тем, что с настройками по умолчанию vagrant не смог пробросить общий каталог в гостевую систему. Для того, чтобы это исправить необходимо внести одно небольшое изменение в Vagrantfile (это в дополнение ко всем действиям указанным в посте про настройку среды разработки.

Vagrantfile:
...
config.vm.synced_folder ".", "/vagrant", type: "nfs", nfs_udp: false
...

Без указания о неиспользовании протокола UDP, каталог не пробрасывался. Не знаю с чем это связано, может у меня где-то настройки неверны, но это мне помогло.

P.S. Стим через примус тоже не завелся :(, будем разбираться.

Рубрика: Новости | Оставить комментарий

Asus P7H55-M LX revisited

Ранее упоминал о глючности данной материнской платы.

Но, как оказалось, я был неправ. Всему виной, по всей видимости, процессор — i5-650, ибо заменив его на xeon x3440 она замечательно обнаружила все планки, в любой конфигурации, без глюков.

Искать биос с поддержкой xeon не пришлось, все сразу завелось.

Процессор спокойно погнался до 3.6Ггц (штатная 2.93Ггц), c кулером Gammaxx-400 температура не поднималась выше 72˚C (могу ошибаться, записать забыл или забыл где записал), с кулером Gammax-300 под нагрузкой выдало 84˚C.

Рубрика: Новости | Оставить комментарий

Mac OS X Sierra 10.12.4

Обновился с бубном. Для безболезненного обновления необходимо обновить Clover как минимум до ревизии 3994, иначе кексты не загрузятся. После обновления отваливается звук. Конкретно для материнской платы Asus B85-PLUS, следует прописать в EFI/CLOVER/config.plist/Devices/Audio/Inject=1, а после этого запустить патчер от toleda.

Рубрика: Новости | Оставить комментарий

PHP strtotime() revisited

В прошлой записи я упоминал о баге(особенности) функции strtotime(), все же есть workaround:

<?php
date_default_timezone_set('Europe/Moscow');
$today = strtotime('28-04-2013'); // 28-04-2013, воскресенье
$thisWeek = strtotime('last sunday +1 day', $today);
$lastWeek = strtotime('-1 week', $thisWeek);
$nextWeek = strtotime('+1 week', $thisWeek);

echo 'last week - '.$lastWeek.' / '.date('d-m-Y H:i\n',$lastWeek);
echo 'this week - '.$thisWeek.' / '.date('d-m-Y H:i\n',$thisWeek);
echo 'next week - '.$nextWeek.' / '.date('d-m-Y H:i\n',$nextWeek);

результат работы:
last week - 1365969600 / 15-04-2013 00:00
this week - 1366574400 / 22-04-2013 00:00
next week - 1367179200 / 29-04-2013 00:00

Рубрика: Новости | Оставить комментарий

Another tool for downloading youtube videos

До mps-youtube я находил еще одну утилиту — youtube-dl. Не разобравшись с ней отложил ее. Однако что-то mps-youtube сломался и я вновь обратился ко вражескому поисковику за ответом. Как оказалось youtube-dl может выполнять те же операции, которые мне требовались.

Скачать все видео пользователя:

youtube-dl -iw ytuser:<user-id> -o '%(title)s.%(ext)s'

Скачать весь плейлист:

youtube-dl -iw <playlist-id> -o '%(title)s.%(ext)s'

Флаги:

-i - ignore errors, skip unavailable video
-w - do not overwrite files
-o - output filename template

Подробнее в тексте помощи утилиты.

Рубрика: Новости | Оставить комментарий

Successfully updated to El Capitan (10.11.1 — 15B42)

el_capitan

Рубрика: Новости | Оставить комментарий

Fedora 21 as web-developer workstation

То же самое, что и с Ubuntu 14.04. Несколько странно, что в базовую установку не входит компилятор C++ и wget (хотя может это мои глюки).

Скрипт, как и оный в предыдущем посте, предполагает установку на ноутбук с гибридом intel + nvidia, а также устанавливает steam-клиент. Сам steam следует запускать через primus.

Перезагрузка требуется как минимум два раза: первый после апдейта свежеустановленной системы, ибо смена ядра — на данный момент апгредило с 3.17 до 4.1.8, второй — после установки bumblebee, чтобы оно доустановилось.

Vagrant (1.7.2) ставится из репозитория, также как и Ruby (2.1.7). Чтобы vagrant успешно пробрасывал каталог в гостевую систему посредством nfs, следует внести поправки в настройки файрволла. Разрешить пролезать сервисам nfs, mountd и rpcbind, а также открыть UDP-порт 2049.

С моим глючным интернетом установка на ноутбуке с нуля занимает порядка полутора часов. Проверялось на Fedora 21 Xfce x64.

#!/bin/bash

# update
sudo dnf -y update

#### reboot

# install stuff
sudo dnf -y install wget vim tmux git mercurial gcc gcc-c++ make m4 bindfs \
ruby keepassx @virtualization

# install libraries for building python & ruby libs
sudo dnf -y install python-devel libffi-devel openssl-devel ruby-devel \
libstdc++-devel libvirt-devel kernel-devel

# install pip
curl -sSL https://bootstrap.pypa.io/get-pip.py | sudo python

# install python libs
sudo pip install requests[security] uwsgi virtualenv

# enable rpmfusion repository
sudo dnf -y install http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

# install exfat support (rpmfusion)
sudo dnf -y install exfat-utils fuse-exfat

# install additional codecs (rpmfusion)
sudo dnf -y install gstreamer gstreamer-ffmpeg gstreamer-plugins-bad \
gstreamer-plugins-bad-free gstreamer-plugins-bad-nonfree gstreamer-plugins-base \
gstreamer-plugins-good gstreamer-plugins-ugly gstreamer-plugin-crystalhd \
gstreamer1-plugins-bad-freeworld gstreamer1-plugins-bad-free \
gstreamer1-plugins-good gstreamer1-libav ffmpeg freetype-freeworld

# entertainment stuff (rpmfusion)
sudo dnf -y install steam vlc

# install google chrome
sudo dnf -y install --nogpgcheck \
https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

# install skype
sudo dnf -y install --nogpgcheck \
http://download.skype.com/linux/skype-4.3.0.37-fedora.i586.rpm

# vagrant
sudo dnf -y install vagrant

# vagrant libvirt support
vagrant plugin install vagrant-libvirt vagrant-mutate vagrant-rekey-ssh

# vagrant nfs mount tune
sudo systemctl enable nfs-server
sudo systemctl start nfs-server
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-port=2049/udp
sudo firewall-cmd --reload

# enable libvirtd daemon
sudo systemctl enable libvirtd
sudo systemctl start libvirtd

# pull debian 8 virtualbox image
vagrant box add debian/jessie64

# convert virtualbox image to libvirt image
vagrant mutate debian/jessie64 libvirt

# install bumblebee repository
sudo dnf -y install http://install.linux.ncsu.edu/pub/yum/itecs/public/bumblebee/fedora$(rpm -E %fedora)/noarch/bumblebee-release-1.2-1.noarch.rpm \
http://install.linux.ncsu.edu/pub/yum/itecs/public/bumblebee-nonfree/fedora$(rpm -E %fedora)/noarch/bumblebee-nonfree-release-1.2-1.noarch.rpm

# install nvidia optimus support
sudo dnf -y install bumblebee bumblebee-nvidia bbswitch-dkms primus \
VirtualGL.i686 VirtualGL.x86_64 primus.i686

###### reboot

Update: Vagrant 1.7.2 забагован, либо ставить другую версию, либо патчить ручками. Diff для /usr/share/vagrant/plugins/guests/redhat/cap/nfs_client.rb

18,19c18,19
< def self.systemd?
< `ps -o comm= 1`.chomp == 'systemd'
---
> def self.systemd?(machine)
> machine.communicate.test("test $(ps -o comm= 1) == 'systemd'")
23c23
< if systemd?
---
> if systemd?(machine)
Рубрика: Новости | Оставить комментарий

Ubuntu 14.04 LTS as web-developer workstation

Поставил на ноутбук Ubuntu 14.04 LTS вместо Fedora 20. Ниже скрипт, который обновляет систему и ставит базовый набор необходимых инструментов.

#!/bin/bash

# update system
sudo apt-get update && sudo apt-get upgrade

### reboot

# install useful tools
sudo apt-get install vim gcc make m4 bindfs rsync ant tmux git mercurial vlc

# install hfs+ support
sudo apt-get install hfsplus hfsutils hfsprogs

# install libraries needs by python & ruby
sudo apt-get install libffi-dev python-dev libssl-dev zlib1g-dev ruby-dev

# install skype & keepass ... skype pulls mysql as dependency :(
sudo apt-get install skype keepassx

#install chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i ./google-chrome-stable_current_amd64.deb

# install kvm
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder \
bridge-utils virt-manager qemu-system libvirt-dev libxslt-dev \
libxml2-dev

# install pip (python 2.7.6 installed out of box)
sudo curl -sSL https://bootstrap.pypa.io/get-pip.py | python

# install some python libs
sudo pip install requests[security] --upgrade
sudo pip install uwsgi virtualenv

# install rvm (optional) (ruby 1.9.3 installed out of box)
#sudo gpg --keyserver hkp://keys.gnupg.net --recv-keys \
409B6B1796C275462A1703113804BB82D39DC0E3
#sudo curl -sSL https://get.rvm.io | bash -s stable

# install vagrant (old one coz it requires ruby 1.9)
# newer version requires ruby 2.0+
wget https://dl.bintray.com/mitchellh/vagrant/vagrant_1.6.5_x86_64.deb
sudo dpkg -i ./vagrant_1.6.5_x86_64.deb

# install required vagrant plugins
vagrant plugin install vagrant-libvirt
vagrant plugin install vagrant-mutate
vagrant plugin install vagrant-rekey-ssh

# pull debian 8 image
vagrant box add debian/jessie64

# conver to libvirt format
vagrant mutate debian/jessie64 libvirt

# install nvidia optimus support + steam
sudo apt-get install bumblebee bumblebee-nvidia primus mesa-utils steam

### reboot

После этого можно работать с vagrant с использованием kvm. Выглядит это примерно так:

$ vagrant init debian/jessie64
$ vagrant up --provider=libvirt
Bringing machine 'default' up with 'libvirt' provider...
==> default: Creating image (snapshot of base box volume).
==> default: Creating domain with the following settings...
==> default:  -- Name:              v1_default
==> default:  -- Domain type:       kvm
==> default:  -- Cpus:              1
==> default:  -- Memory:            512M
==> default:  -- Management MAC:    
==> default:  -- Loader:            
==> default:  -- Base box:          debian/jessie64
==> default:  -- Storage pool:      default
==> default:  -- Image:             /var/lib/libvirt/images/v1_default.img (10G)
==> default:  -- Volume Cache:      default
==> default:  -- Kernel:            
==> default:  -- Initrd:            
==> default:  -- Graphics Type:     vnc
==> default:  -- Graphics Port:     5900
==> default:  -- Graphics IP:       127.0.0.1
==> default:  -- Graphics Password: Not defined
==> default:  -- Video Type:        cirrus
==> default:  -- Video VRAM:        9216
==> default:  -- Keymap:            en-us
==> default:  -- INPUT:             type=mouse, bus=ps2
==> default:  -- Command line : 
==> default: Creating shared folders metadata...
==> default: Starting domain.
==> default: Waiting for domain to get an IP address...
==> default: Waiting for SSH to become available...
==> default: Configuring and enabling network interfaces...
==> default: Installing rsync to the VM...
==> default: Rsyncing folder: /home/awlee/v1/ => /vagrant
==> default: Replaced insecure vagrant key with less insecure key!

$ vagrant ssh
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Oct 16 22:04:04 2015 from 192.168.121.1
vagrant@debian-jessie:~$

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

Рубрика: Новости | Оставить комментарий