пятница, 18 декабря 2015 г.

Random date update SQL

Для тестов бывает нобходимо забить столбец датой (временем)  в определённом диапазоне

update `article` set date = (
    FROM_UNIXTIME(
        UNIX_TIMESTAMP(NOW()) + FLOOR(0 + (RAND() * 3600*24*3))
    )
);

понедельник, 7 декабря 2015 г.

Лечим Eclipse Mars

Последние версии Eclipse страдают графическими дефектами:
  1. Белый текст на сером фоне в селектрое пример
  2. Странный тултип с подсказкой белый на чёрном
  3. И огромный отступ у кнопок в тулбаре

Сколько багрепортов было создано - исход один.
Сообщество говорит, что во всём виновен Gtk-3 (странно, больше ни кто не жаловался на стили)

Путь исцеления лежит в файле
vi ~/.config/gtk-3.0/gtk.css

Где можно внести следующие правки в формате CSS, далее на вкус и цвет экспериментируйте сами:

GtkToolbar {
    padding: 0.1em;
}

GtkMenuBar {
    padding: 0.1em;
}

GtkMenuItem {
    padding: 0 0.5em;
}

.tooltip {
    background-color: #F0F0F0;
    color: #000;
    text-shadow: none;
    border-radius: 0;
    border: 1px solid #808080;
}

GtkTreeView:selected {
    color: #FFFFFF;
    background-color: #4A90D9;
}

Для отладки в реальном времени следует поставить установить переменную окружения (fish shell):

$  set -x GTK_DEBUG interactive

Там можно отладить полученные стили, однако изменения к тулбару применяются порой только после сброса стиля оформления самого Eclipse либо просто перезапуском оного.

четверг, 12 ноября 2015 г.

XDEBUG configuration

xdebug.remote_enable=on
xdebug.remote_log=/srv/log/xdebug.log
xdebug.remote_host=127.0.0.1
xdebug.remote_handler=dbgp
xdebug.remote_port=9000

xdebug.max_nesting_level=250

xdebug.profiler_output_dir = /srv/log/profiler
xdebug.profiler_output_name = %R.log
xdebug.profiler_enable_trigger = 1

xdebug.trace_output_dir = /srv/log/trace
xdebug.trace_output_name = %R.log
xdebug.trace_enable_trigger = 1
xdebug.trace_format = 1

xdebug.var_display_max_data = 65536

суббота, 7 ноября 2015 г.

Steam linux server



Выкачиваем и распаковываем инсталлер

$ wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz;
$ mkdir steam;
$ cd steam;
$ tar xvzf ../steamcmd_linux.tar.gz;


Если необходимо устанавливаем необходимые пакеты

# yum install glibc.i686 libgcc.i686

Запускаем steam, выполняем установку сервера (id можно подсмотреть тут)

$ ./steamcmd.sh
> login anonymous
> force_install_dir /srv/game
> app_update 232370 validate — hl2dm
> app_update 343050 validate — dst
> quit




Немного настройки

$ cd ./steamapps/common/Half-Life\ 2\ Deathmatch\ Dedicated\ Server/
$ vi hl2mp/cfg/server.cfg




hostname "RedPoint"
sv_downloadurl "http://host.name/half-life2"
mp_timelimit 20
mp_flashlight 1
mp_friendlyfire 1
sv_alltalk 1
sm_enablekillprotection 1




Попробуем запустить

./srcds_run -console -game hl2mp -port 27015 +maxplayers 8 +exec server.cfg +map dm_overwatch




Ставим админку

Выкачиваем MetaMod, SourceMod

cd hl2mp;
tar xvzf ~/Downloads/sourcemod-1.6.2-linux.tar.gz;
tar xvzf ~/Downloads/mmsource-1.10.3-linux.tar.gz;




Даем себе права. Там есть куча примеров, я выбрал по Steam_ID

vi addons/sourcemod/configs/admins_simple.ini


Карты в несжатом виде качаются долго, поэтому их лучше ужимать и перекладывать на другой хост, как и прочие файлы

$ cd hl2mp/maps/
$ mkdir compressed
$ bzip2 *.bsp -k --bes




После директорию можно привязать к символьной ссылкой к хосту, и тянуть сжатые файлы по http

cd /srv/www/host.name/public
ln -s /home/gedweb/hl2/hl2mp/maps/compressed maps

четверг, 5 ноября 2015 г.

Установка lighttp + fpm + mariadb

Установить

yum install lighttpd-fastcgi lighttpd php-fpm mariadb mariadb-server

Создать пользователя и группу host:host

useradd host
usermod -a -G host your_user

Создать директорию хоста и директорию fpm
#mkdir /srv/php-fpm
#mkdir /srv/www
#chmod -R 775 /srv
#chown -R host:host /srv
#chown -R host:host /var/log/lighttpd/
#chown -R host:host /var/lib/php/session

Прописать пользователя и группу в конфигах lighttp, а так же поправить пару параметров

# vi /etc/lighttpd/lighttpd.conf

server.username = "host"
server.groupname = "host"
var.vhosts_dir = "/srv/www"
server.use-ipv6 = "disable"
include_shell "cat /etc/lighttpd/vhosts.d/*.conf"
server.max-fds = 2048
server.max-connections = 1024

Изменяем права лайти на логи:

chown -R host:host /var/log/lighttpd/

Аналогично для php-fpm

# vi /etc/php-fpm.d/www.conf

user = host
group = host

listen = /srv/php-fpm/www.sock

listen.owner = host
listen.group = host
listen.mode = 0660
;listen.acl_users закоментировать

Начиная с PHP 5.6.5 возможно указать несколько пользователей / групп через запятую, что отменяет последние 2 опции выше.

listen.acl_users = host
listen.acl_groups = host

Настраиваем fastcgi в лайти

# vi /etc/lighttpd/conf.d/fastcgi.conf 

fastcgi.server = ( ".php" =>
    ((
        "socket" => "/srv/php-fpm/www.sock",
        "broken-scriptfilename" => "enable",
    ))
)

Включаем необходимые модули и конфигурации

# vi /etc/lighttpd/modules.conf

server.modules = (
  "mod_rewrite",
  "mod_fastcgi",
)

include "conf.d/fastcgi.conf"

Самую малость в php.ini

# vi /etc/php.ini

cgi.fix_pathinfo=0


Ну и создаем виртуальные хосты

# vi /etc/lighttpd/vhosts.d/vhosts.conf

$HTTP["host"] == "gedweb.name" {
    server.name = "blog_prod"
    server.document-root = vhosts_dir + "/gedweb.name/public"
    url.rewrite-if-not-file = (
        "^(.*)$" => "index.php/$1"
    )
}

Для включения CORS в Lighttpd
Раскомментировать mod_setenv в секции modules и добавить строчку в секцию виртуального хоста

setenv.add-response-header = ( "Access-Control-Allow-Origin" => "*" )

Создадим и выберем директорию хранения для MariaDB (MySQL)

mkdir /srv/mariadb

Копируем начальную конфигурацию

# cp /usr/share/mariadb/my-medium.cnf /etc/my.cnf.d/mariadb-server.cnf
# vi /etc/my.cnf.d/mariadb-server.cnf


[mysqld]
thread_cache_size = 1 ; develop mode
datadir = /srv/mariadb

Запускаем

# mysql_install_db
# chown -R mysql:host /srv/mariadb
# chown -R mysql:host /var/log/mariadb

# systemctl start mariadb
# systemctl enable mariadb

# systemctl start lighttpd
# systemctl enable lighttpd

# systemctl start php-fpm
# systemctl enable php-fpm

$ mysql_secure_installation

Даём публичный доступ к 80 порту

# firewall-cmd --get-default-zone
# firewall-cmd --zone=public --add-service=http --permanent
# firewall-cmd --reload
# firewall-cmd --zone=public --list-all

среда, 4 ноября 2015 г.

Nvidia ABI 20 error

Yesterday i upgrade my Fedora 22 to 23 and catch problem with nvidia xorg driver:

This server has a video driver ABI version of 20.0 that this
driver does not officially support.

solve by adding in /etc/X11/xorg.conf

Section "ServerFlags"
 Option "IgnoreABI" "1"
EndSection

суббота, 31 октября 2015 г.

Xbox gamepad on linux

Installing
# dnf install xboxdrv kernel-modules-extra

kernel-modules-extra reuired for creating /dev/input/jsX devices

For autodetect gamepad
# systemctl enable xboxdrv
Disable xpad
# rmmod xpad
# echo 'blacklist xpad' > /etc/modprobe.d/xpad.conf

Manual run gamepad
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 1345:6006 Sino Lite Technology Corp. Defender Wireless Controller

Avalible types can find in
$ man xboxdrv

# xboxdrv --type xbox360 --device-by-id 1345:6006 --force-feedback --silent --mimic-xpad-wireless

вторник, 20 октября 2015 г.

Capistrano conflict fix

You can solve gem conflict used bundler

Here example how uise it:

# gem install bundler
 
$ bundler init
 
Put this into Gemfile 
 
source 'https://rubygems.org'

gem 'capistrano', '~> 2.12.0'
gem 'railsless-deploy', '~> 1.0.2'
 
 
Now intall bundle gems with dependings 
$ bundle install

and run it
$ bundle exec cap deploy

четверг, 2 июля 2015 г.

php UUID

Возникла необходимость генерировать UUID.
Почитав RFC4122 подходящей оказалась v4 (пункт 4.4)

function generateUUIDv4()
{
    $uuid = unpack('h8time_low/S3octet/h12node', random_bytes(16));
    return sprintf("%'08s-%'04x-%'04x-%'04x-%'012s", $uuid['time_low'], $uuid['octet1'],
        $uuid['octet2'] & 0x0fff | 0x4000, $uuid['octet3'] & 0xbfff | 0x8000, $uuid['node']);
}
 

вторник, 16 июня 2015 г.

Linux Cubietruck ARM

Linux Cubietruck

Хотя на серверы принято устанавливать дистрибутивы с длительной поддержкой мой выбор пал на Fedora 21.
Как следствие того, что являюсь приверженцем RPM и пользуюсь этим дистрибутивом на всем своем зоопарке машин.

Итак для того, что бы поставить полноценный линукс на Cubie есть два пути:
Flashing - посредством специальной утилиты
позволяет вшить в NAND требуемую операционку. От нас требуется установить утилиту и заставить её увидеть устройство в режиме флешинга.
Далее клавиатура, любой экран.

Плюсы - полная интеграция с железом, т.к. сборки от производителя.
Недостатки - низкая скорость работы с ФС, устаревшие версии дистрибутивов.

SD Card - сливаем образ на флешку, заливаем boot - вставляем флешку. Инструкции варьируются от дистрибутива к дистрибутиву.
Для данного метода необходим UART иначе черный экран с приглашением ввести логин/пароль в лучшем случае, либо вообще черный экран.

Последний метод более удобен из-за прямого доступа к носителю.

Для начала требуется вылить содержимое образа на флешку.

Находим SD карту среди прочих. Устройство легко выявить по объему диска
# fdisk -l

Выливаем образ на карточку
# xzcat Some_distr.raw.xz | dd of=/dev/sd*; sync

Для Fedora ещё и загрузочную запись добавить вместе с загрузчиком
# dd if=/tmp/root/usr/share/uboot/Cubietruck/u-boot-sunxi-with-spl.bin of=/dev/sd* bs=1024 seek=8 conv=fsync,notrunc

Далее подрубаем UART
Черный - GND
Белый - TX
Зелёный - RX
Красный это Vcc - его не подключаем.

Подключаемся к устройству
screen /dev/ttyUSB0 115200

Вставляем флешку, даем питание и видим в терминале на ПК ход загрузки, а чуть позже меню установки.
Вводим что нас просят и завершаем установку. С этого момента ваш линукс живет на SD карте.

Конечно Cubie интересен наличием SATA. Для использования 3.5' диска понадобится 12В питание, которое должно подаваться только на диск. Кубик питается от 5В. Здесь пригодился старый блок питания от ПК.

Подсоединяем диск к блоку питания и кубик. Красный провод +5В, черный - общий и так на любом проводе.
Берем большой 20pin'овый разъем и соединяем зеленый провод с черным, таким образом блок питания заведётся.

Далее можно перенести ОС на hdd.
Проще всего это сделать со стороннего ПК.

Для начала предварительно размечаем hdd, в моём случае /dev/sda3 будет будующим корнем на hdd.

После копируем root-раздел с SD-карты на жёсткий диск.
# fdisk -h
  /dev/sda3       1.1G  933M  136M  88% /

# dd if=/dev/sdd3 of=/dev/sda3 bs=1500M count=1


Подсматриваем размер раздела, и копируем его на другой раздел

После этого раздел будет 1.1G - вернём преждний размер (выполнить можно на лету уже на arm'e)
resize2fs /dev/sda3

Далее root-раздел необходимо удалить. На этом всё, т.к. мы скопировали раздел вместе с UUID ни каких дополнительных действий не труебуется. Остаётся подключить носители к вашему целевому устройству и запустить дальнейшую установку.

пятница, 12 июня 2015 г.

HL2 DM crosshair hud

Это руководство так же подойдёт для других игр на движке source.

Для начал необходимо извлечь файлы из vpk-архива.
В директории {library}/steamapps/common/you_game/bin присутствует утилита
vpk_linux32

, где {library} - директория вашей библиотеки steam.

Поскольку half-life 2 полузаброшен, то утилита не работает (под windows тоже).
Поэтому возьмём из Team Fortress 2, который Гейб любит больше, т.к. в нём всё хорошо.

Однако тулза на x86 и если у вас x64 требуется дополнительный скрипт с содержимым

DIR="{library}/steamapps/common/Team Fortress 2/bin"
export LD_LIBRARY_PATH=$DIR
exec "$DIR/vpk_linux32" "$@" 

 
после следует извлечь содержимое mod'a, т.е. вашей игры в её же директорию из архива. Выполнив
vpk hl2mp/hl2mp_pak_dir.vpk
После всё содержимое окажется в директории hl2mp_pak_dir.
и её содержимое желательно поднять на уровень выше, туда где лежит сам vpk-файл.
cp -r hl2mp_pak_dir./* . 
 
Теперь самое главное - отключить загрузку vpk.
Исправим в файле hl2mp/gameinfo.txt Меняем эти строки
game+mod   hl2mp/hl2mp_english.vpk
game+mod   hl2mp/hl2mp_pak.vpk
 
На следующую:
game+mod   hl2mp/ 

Далее правим всё, что нам вздумается. Цвет перекрестия в файле hl2mp/resource/clientscheme.res:
// HL1-style HUD colors
"Yellowish"   "255 160 0 255"
"Normal"   "255 208 64 255" // цвет перекрсестия
"Caution"   "255 48 0 255" // слепящий красный
 
Где цвета в формате rgba - меняйте на свой вкус.

среда, 10 июня 2015 г.