Пришла мне как то идея зарегистрировать личный именной домен для объедения разной личной информации, портфолио и так далее. Из свободных удалось зарегистрировать evstepanov.ru (так как Евгений Валерьевич я). Первым делом я принялся к созданию галереи под фотографии, которая пока находится в разработке. Там я буду выкладывать свои работы, которые не стыдно показать, качественная обработка и красивые кадры. Была взята готовая галерея, в которой пришлось править css, заменять шрифты и иконки навигации, изменять и добавлять некоторые элементы, да еще и добавляются туда фотографии путем правки index.html и ручным копированием файлов в директории. В будущем планирую сделать на php админку с загрузкой и вставкой фотографии.
Этот блог делался для того, чтобы не захламлять ЖЖ разными заметками на IT тему. Хорошо ведь, когда давно не делал что то, но есть где посмотреть. Например полгода назад приходилось настраивать OpenVPN сервер и клиент, конечно же через полгода уже все забудется, а вспоминать и гуглить как примерно должен выглядеть конфиг не всегда охота, а тут оп готовый и проверенный лично.
Заработала правда Эгея (движок этого блога) далеко не сразу.
Сначала не загружались картинки по средствам движка. Вместо отображения картинки были только надписи "picture.jpg".
После переустановки nginx из исходных файлов на самую последнюю версию, картинки заработали.
Конфигурировал перед сборкой так:
./configure --with-pcre=/home/deterrent/nginx/pcre-8.37 --with-http_ssl_module --conf-path=/etc/nginx/nginx.conf
Не сразу удалось сделать, чтобы заработал ЧПУ так как нужно.
Оказалось что конфигурация в документации к Эгее правильная (в конце полный конфиг). Но так же нужно в /user/config.php добавить строчку
$_config['url_composition'] = 'synthetic';
А потом почистить кэш, дописав в урл /?go=@sync/
А вот рабочий конфиг nginx
server {
listen 80;
server_name example.com*.example.com;
keepalive_timeout 70;
Для автоматического монтирования расшаренной папки "storage" которая находится на "192.168.10.1" при загрузке системы сначала нужно установить **cifs-utils** и **samba**
apt-get install cifs-utils
apt-get install samba samba-client
Потом в **/etc/fstab** добавляем строчку
//192.168.10.1/storage /mnt/keenetic/ cifs user=smbrouter,password=Abc123
Если доступ к шаре без пароля, то параметры **user** и **password** можно не писать.
**Директория в mnt должна быть создана**, а назвать ее можно как угодно. У меня она названа **keenetic** так как **192.168.10.1** это роутер, в который воткнута флешка.
А чтоб систему не перезапускать чтоб шара примонтировалась, можно примонтировать вручную.
mount -t cifs //192.168.10.1/storage /mnt/keenetic -o user=smbrouter,password=Abc123
А на случай если нужно отмонтировать, то все просто.
umount /mnt/keenetic
Резервное копирование сайтов и баз с сервера на флешку в роутере
Как оказалось, при одновременном включении сервера и роутера, сервер стартует значительно быстрее чем роутер.
Когда пытается примонтироваться флешка из **fstab** (об этом я писал ((http://blog.evstepanov.ru/all/montirovanie-samba-i-windows-shary-v-linux/ тут)) ) ресурс просто недоступен.
Было решено убрать автоматическое монтирование **smb** ресурса из **fstab** и прописать монтирование в начале **bash** скрипта и размонтирование его в конце.
В итоге я закомментировал строчку в **fstab**.
Получился такой вот баш скрипт
#!/bin/bashmount -t cifs //192.168.10.1/storage /mnt/keenetic -o user=smbrouter,password=тутпароль
export WWWDIR="/home/deterrent/www/"
export BACKUPDIR="/mnt/keenetic/backup"
export DATA=`date +%Y-%m-%d`
rm -rf $BACKUPDIR/04
mv $BACKUPDIR/03 $BACKUPDIR/04
mv $BACKUPDIR/02 $BACKUPDIR/03
mv $BACKUPDIR/01 $BACKUPDIR/02
mkdir $BACKUPDIR/01
cd $WWWDIR
tar -czf $BACKUPDIR/01/siteone-$DATA.tar.gz siteone.ru/
tar -czf $BACKUPDIR/01/sitetwo-$DATA.tar.gz sitetwo.ru/
tar -czf $BACKUPDIR/01/sitethree-$DATA.tar.gz sitethree.ru/
tar -czf $BACKUPDIR/01/sitefour-$DATA.tar.gz sitefour.ru/
Директории **"backup", "01", "02", "03" и "04"** должны быть созданы.
Скрипт удаляет 04 папку, а 03 переименовывает в 04.
Далее переименовывает 02 в 03, 01 в 02, а 01 создает заново и бэкапит в нее.
Поэтому получается, что есть всегда новый бэкап и 3 предыдущих.
В имя каждого файла подставляется дата создания.
Сначала можно запустить **backup.sh** вручную и посмотреть что получиться вообще.
И сразу стает понятно, что в пароле есть символ ; который **mysqldump** понимает как конец команды, как и сам **mysql**.
Поэтому убираем **"пар;оль" в кавычки**, тогда все работает нормально.
Ну и под конец
crontab -e
И добавляем строчку в конец
30 04 * * * /home/deterrent/backup/backup.sh
В данном случае скрипт будет запускаться **каждый день в 4:30 утра**. Получается бэкапы будут делаться ежедневно.
Если нужно поставить другое время запуска, не каждый день например. То можно почитать о кроне например ((http://www.codenet.ru/webmast/php/cron.php тут)) .
"Дизайнер Мирослав Витула представил свое видение анимации смены ориентации экрана в стиле Material Design"
Галерея моих фотографий
Доделал галерею для лучших своих фоторабот.
http://photo.evstepanov.ru/
За основу была взята бесплатная галерея на jquery. Но пришлось её "допиливать", заменил иконки навигации, уменьшил превьюшки, добавил блок с информацией и кнопку которая показывает этот блок и много еще по мелочи.
По плану сделать на php движок под эту галерею для загрузки фотографий из "админки" и автоматического создания миниатюр. Возможно добавлю разделы.
Открыть страницу на весь экран (JavaScript)
fs.jpg
Чтобы открыть браузер на весь экран (Почти как при нажатии F11) Можно сделать так:
Цвет бэкграунда нужен потому, что по умолчанию страничка в браузере белая, а при открытии на весь экран будет черная, и черный текст просто не будет видно.
Фуллскрин
При клике по надписи "Фуллскрин" вызывается функция:
function fscr() {
obj_div=document.getElementById("fullscreen");
if (obj_div.requestFullscreen) {
obj_div.requestFullscreen();
}
else if (obj_div.msRequestFullscreen) {
obj_div.msRequestFullscreen();
}
else if (obj_div.mozRequestFullScreen) {
obj_div.mozRequestFullScreen();
}
else if (obj_div.webkitRequestFullscreen) {
obj_div.webkitRequestFullscreen();
} else {
console.log("Fullscreen API is not supported");
}
}
Проверено на FireFox, Opera, Google Chrome, Yandex browser.
На этой страничке ((https://msdn.microsoft.com/ru-ru/library/dn265028%28v=vs.85%29.aspx Microsoft Developer Network)) можно почитать о фуллскрине и найти более продвинутые примеры.
');
$startdata=$i+24;
$startdollar=$i+94;
$data=substr($yapage, $startdata, 8);
$dollar=substr($yapage, $startdollar, 7);
echo "Курс USD на ".$data." составляет ".$dollar." руб.";
?>
Заметки по Photoshop
1) Лечащая кисть (Healing Brush) должна быть с жёсткими краями, иначе может потеряться текстура.
2) Для высветления можно рисовать не по прозрачному слою белой кистью, а по слою залитым 50% серого (Shift+F5), который переключен в Soft Light. На таком слое хорошо видно отрисовку, если включить только его отображение. (По пустому слою рисовать белой или черной кистью оказывается лучше.)
3) Выделение и осветление глаз можно сделать так: Выделяем глаза и Ctrl+J копируем на новый слой. Этот слой переводим в режим Screen. (Либо весь слой в скин, а рисуем глаза по маске).
IGIT Related Posts With Thumb. Could not find the internal image you specified.
Плагин для вордпреса "IGIT Related Posts With Thumb" перестал показывать картинки, а если зайти по урлу напрямую, то там "Could not find the internal image you specified." Хотя кэш плагина был доступен для записи.
Для выяснения причины сначала поставил в timthumb.php
define ('DEBUG_ON', true); define ('DEBUG_LEVEL', 3);
И увидел в логах
/usr/local/nginx/html/wp-content/uploads/2012/12/SGS_II_GT-I9100_HK-220x350.jpg
Ну и так далее.
echo $_SERVER['DOCUMENT_ROOT'];
показывало /usr/local/nginx/html
Хотя сайт находится в /home/username/www/sitename.ru
Решение оказалось простое.
location ~ \\.php$ {
root /home/username/www/sitename.ru;
Ранее не был указан путь в этом разделе конфига.
Факторы ранжирования
Periodic_Table_of_SEO_Full.png
Nginx и rewrite правила для ЧПУ
Для того чтоб заходя по ссылке
http://evstepanov.ru/abc/defg/h
Открывалось то же самое что и по ссылке
http://evstepanov.ru/weather/1.php?cat=abc&name=defg&id=h
В конфиг сайта у nginx надо написать такое правило
if (!-e $request_filename){
rewrite ^/([^/]*)/([^/]*)/([^/]*)$ /weather/1.php?cat=$1&name=$2&id=$3 last;
}
Полезные ссылки:
Онлайн генератор правил для Apache Mod Rewrite
http://phpguru.com.ua/servis/revritegen/
http://www.generateit.net/mod-rewrite/index.php
htaccess-конвертер для nginx
http://winginx.com/ru/htaccess
Изменение и сохранение CSS на лету из браузера
В Google Chrome по кнопке F12 появляется панель разработчика, которая оказалась значительно удобнее чем Firebug в FireFox'e.
Но главная фишка, можно изменять свойства любого стиля прям в браузере (как и в Firebug), а изменения автоматически сохраняются в файле стиля.
Для этого нужно добавить директорию с файлами.
addfolder.png
А потом указать какие файлы используются.
maptoresource.png
Более подробная информация тут:
https://developer.chrome.com/devtools/docs/workspaces
найти все строки, кроме тех, где встречается "слово"
^(?>(?!слово).)*$
API Яндекс переводчика
Получаем вот тут ключик
https://tech.yandex.ru/keys/get/?service=trnsl
Потом делаем так (первый вариант JSON второй Xml)
https://translate.yandex.net/api/v1.5/tr.json/translate?key=$key&text=$text&lang=ru
https://translate.yandex.net/api/v1.5/tr/translate?key=$key&text=$text&lang=ru
Более подробно тут:
https://tech.yandex.ru/translate/doc/dg/reference/translate-docpage/
function tree($data, $mom, $level){
foreach($data as $row){
if($row['mother']==$mom){
echo str_repeat("- ",$level).$row['name']." ";
tree($data,$row['id'],$level+1);
}
}
}
tree($data, 0, 0);
echo "";
echo "
";
print_r ($data);
echo "
";
Субдомены в nginx
Нужно например для городов, чтоб по урлу **city.site.ru** заходило на **site.ru** внутри скрипта возвращало **city**
Должна быть прописана * (звездочка) в записи А для домена.
В конфиге nginx тоже должна быть звездочка
server_name site.ru *.site.ru;
А внутри скрипта, значение субомена получаем так:
echo str_replace(".site.ru" ,"" , $_SERVER['HTTP_HOST']);
Samba - сетевой диск к серверу
Создаем шару на сервере и подключаем как сетевой диск в Windows
Ставим в **linux debian** самбу
apt-get install samba
Добавляем (уже существующего) юзера в самбу
smbpasswd -a deterrent
Добавляем в **smb.conf**
[www]
\ path = /home/deterrent/www
\ force group = deterrent
\ force user = deterrent
\ writeable = yes
потом
/etc/init.d/samba restart
Готово!
Twitter API загружаем картинки в твит
Решил написать эту заметку, так как довольно много времени потратил на реализацию создания записи в твиттере через API.
Точнее с постингом в твиттер через API никаких проблем не было, а вот чтобы создать запись с прикрепленной картинкой - пришлось помучаться.
Как бы я не пытался, но **statuses/update_with_media** нивкакую не хотела работать.
Пробовал разные библиотеки для работы с API Twitter из PHP, такие как **tmhOAuth** и **TwitterOAuth**, но нет.
Хотя и там и там обычный текст, через **statuses/update** постился без проблем.
Как потом я понял, **statuses/update_with_media** устарело, хотя в русскоязычном интернете было описание только таким способом. Много было примеров, но ни один мне не помог. На помощь приходит english and google.com :)
# Как всё-таки это сделать?
1) Качаем библиотеку TwitterOAuth с ((https://github.com/abraham/twitteroauth/releases Гитхаба))
Я скачал версию 0.6.4, так как подключал библиотеку вручную. На сайте((https://twitteroauth.com/ TwitterOAuth)) в описании Manual install пишут - "Download the ((https://github.com/abraham/twitteroauth/releases latest release))". Просто лень было ставить через Composer ;)
2) Кидаем содержимое архива в корень проекта, в директорию **twitteroauth**
3) Подключаем
require "twitteroauth/autoload.php";
use Abraham\\TwitterOAuth\\TwitterOAuth;
3) Из созданного на ((https://apps.twitter.com apps.twitter.com)) приложения, копируем токены сюда:
define("CONSUMER_KEY", "xxxxx");
define("CONSUMER_SECRET", "xxxxx");
define("OAUTH_TOKEN", "xxxxx");
define("OAUTH_SECRET", "xxxxx");
5) Переменные с путями к картинкам (очень важно чтоб путь был указан верно, в данном случае картинки в корне проекта)
$image_one = "one.jpg";
$image_two = "two.jpg";
6) Сначала загружаем картинки. В переменные $media1 и $media2 передается информация, среди которой есть id этих картинок после загрузки.
$media1 = $connection->upload('media/upload', ['media' => $image_one]);
$media2 = $connection->upload('media/upload', ['media' => $image_two]);
7) Задаем параметры, где 'status' - это текст сообщения, а в 'media_ids' передаются те самые id картинок.
$parameters = [
'status' => 'привет я текст',
'media_ids' => implode(',', [$media1->media_id_string, $media2->media_id_string])
];
8) Остается запостить твит вот так:
$result = $connection->post('statuses/update', $parameters);
P.S. если помогла моя заметка, оставьте пожалуйста комментарий ;)
Xiaomi Yi описание параметров скриптов
t ia2 -awb [gl_dgain]:.show the global_dgain value.. [gl_dgain][value]:.set the global_dgain value....
t ia2 -awb [skip]:.disable skip frames.. [skip][value]:.set the skip frames...
t ia2 -awb [prt][0~20]:.print tile AWB gain.....
t ia2 -awb [y]:.print tile Y value..
t ia2 -awb [luma]:.print tile luma info.....
t ia2 -awb [video]:.show video AWB info.....
t ia2 -awb [info]:.show AWB info....
t ia2 -awb [on|off]:.turn on/off AWB...
t ia2 -sc [video]:.show scene mode info..=Y–ê. t cal -sc [0|1|2|......]:.set the scene mode
t ia2 -adj tidx [ev_idx][nf_idx][shutter_idx] :.set video ev_idx, nf_idx and shutter idx, -1 is disable.....
t ia2 -adj twb [r_gain][b_gain] :.set WB table r gain and b gain, -1 is disable.....
t ia2 -adj piv [tsk_enable]:.piv capture param,tsk_enable : 0|1....
t ia2 -frc [frate]: frame rate change . frate: target frame rate .Usage:
t ia2 -frc dly [dly]: set dly time in ms . dly: delay time in ms ....
t ia2 -eis status: DIS/EIS get status.
t ia2 -eis get_motion: Get motion info.
t ia2 -eis on: DIS/EIS enable.
t ia2 -eis off: DIS/EIS disable.
t ia2 -eis dz_off: DIS/EIS restore full view.
t ia2 -eis set_range [min][max]: DIS/EIS set moving range..[min]: minima range..[max]: maxima range.
t ia2 -eis offset [mov_x][mov_y]: Change window offset..[mov_x]: pixels to shift(translational) in x direction..[mov_y]: pixels to shift(translational) in y direction.
ia2 -eis skew [skew_x][skew_y]: Change window skew..[skew_x]: pixels to shift(horizontal rolling shutter) in x direction..[skew_y]: pixels to shift(vertical rolling shutter) in y direction.
t ia2 -eis mc_ctrl [en]: EIS MC enable/disable..[en] = [0|1], 0:disable, 1:enable.
t ia2 -eis rsc_ctrl [en]: EIS RSC enable/disable..[en] = [0|1], 0:disable, 1:enable.....
t ia2 -eis log [file][sec][save_flag]: Log gyro data..[file]: filename(include filepath) to store..[sec]: seconds to log..[save_flag]: 0:save now, 1:save later.
t ia2 -eis save_file [file]: Save gyro data..[file]: filename(include filepath) to store....
t ia2 -ae exp[iso|agc][-shutter_idx][mode] :.set still exposure.....t
t ia2 -ae still :.show still AE info....
t ia2 -ae face :.show face info....—ò–∞Y–ê.–±Y–ê.
t ia2 -ae sensor :.show sensor info.....
t ia2 -ae zoom :.show zoom info.....
t ia2 -ae luma :.show luma_idx and ev_no info...
t ia2 -ae iris :.show iris info.....
t ia2 -ae vr :..show version number.....
t ia2 -ae info :.show AE exposure info..
t ia2 -ae still_iso :.set still_iso.....
t ia2 -ae still_shutter :.set still_shutter.....
t ia2 -ae still_iris :.set still_iris...
t ia2 -ae flash_psg :.set preflash_strength_gain, unit : 1024...
t ia2 -ae flash_fbc :.set flash_base_calibration, unit : 1024...
t ia2 -ae pm [mode] [strange] :.set P mode..
t ia2 -ae [on|off] :.turn on/off AE
t ia2 -adj ae :.disable ae target... ae [target]:.set ae target...
t ia2 -adj awb :.disable awb ratio.. awb [][][][][][]:.set awb ratio..
t ia2 -adj blc :.disable blc.... blc [][][][][][][][][][][][]:.set blc....
t ia2 -adj ev :.disable ev_color.... ev [][][][][][][]:.set ev_color..
t ia2 -adj dzoom :.show video Dzoom filter value.... dzoom [on|off] :.turn on/off Dzoom... dzoom [info] :.show video Dzoom info.....
t ia2 -adj [video|still] :.show ADJ info...,CY–êtCY–ê–∞CY–ê.
t ia2 -adj gamma [0~255] :.set gamma value..
t ia2 -adj l_expo [0~255] :.set l_expo value....
t ia2 -adj autoknee [0~255] :.set autoknee value....
t ia2 -adj vr :.show version number.....
t ia2 -adj reset :.reset ADJ....
t ia2 -adj binning :.show curre
still scene_mode : %d.... still curr_scene_mode : %d...
t ia2 -sc [video]:.show scene mode info..=Y–ê.
t cal -sc [0|1|2|......]:.set the scene mode.... 
t cal -blc [mode]: raw capture and calculate average pixel value
t cal -blc [mode][config]: calculate average pixel value for different config..mode = [0..3], 0:VIDEO, 1:FAST STILL 2:LOW-ISO STILL 3:HIGH-ISO STILL..config = [1..3]:.
t cal -blc [mode] 1 [frame_percent]: [0..100] calculate average for some part of frame avoid edges.
t cal -blc [mode] 2 [tile_width][tile_height]: calculate average for each tile with specific size.
t cal -blc [mode] 3 [tile_num_row][tile_num_col]: calculate average for each tile in a row and column..BLC: parameter [frame_percent] error, should be none or [0..100]....
t cal -raw [mode] [count] [compress]: raw caputre..mode = [0..8], 0:VIDEO.. 2:LOW-ISO STILL.. 3:HIGH-ISO STILL.. 4:MID-ISO STILL.. 5:LOW-ISO MULTI-CAP STILL.. 6:HIGH-ISO MULTI-CAP STILL.. 7:MID-ISO MULTI-CAP STILL.. 8:MULTI-FRAME HIGH-ISO CAPTURE (old pipe only).. 9:VIDEO HDR(dump Raw, idsp config only)..count = number of pictures to capture..compress = [0, 1] optional, capture and dump the compressed raw....
t cal -rawext [mode][frame][mainwin_w][mainwin_h]: raw caputre..mode = [0..3], 0:VIDEO, 1:FAST STILL 2:LOW-ISO STILL 3:HIGH-ISO STILL..frame = number of frame to capture..mainwin_w = main window width..mainwin_h = main window height....
t cal -rawenc [filepath] : raw encode flow..filepath = file path for configuration file.....
t cal -ituner load [filepath] : Load configuration file.
t cal -ituner save [filepath] : Save configuration file.
t cal -ituner debug [0|1] : turn on/off debug message.
t cal -ituner load [chan_id][filepath] : Load dual chan configuration file.
t cal -ituner save [chan_id][filepath] : Save dual chan configuration file.....
t cal -mgr cmd [cali_cmd]: calibration cmd i/f (arg num<15).t cal -mgr path : specify calibation script path....
t cal -fpn init : re-init FPN to normal condition.
t cal -fpn reload : (the same as t cal -fpn init).
t cal -fpn info : print FPN information.t cal -fpn debug [0/1] : toggle APP-level FPN debug information.
t cal -fpn set [buf_idx] [byte_value] : Set FPN map to value.
t cal -fpn rd [buf_idx] [file_name] : Read FPN map from file.
t cal -fpn rdbmp [buf_idx] [file_name] : Read FPN map from bmp file.
t cal -fpn save [buf_idx] [file_name] : Save FPN map to file.
t cal -fpn savebmp [buf_idx] [file_name] : Save FPN map to bmp file.
t cal -fpn predict [buf_idx]: Predict packed size of FPN map to NAND.
t cal -fpn sensor_cal [type] [mode] : capture raw image for FPN/Vignette.
t cal -fpn dump [buf_idx] [method] [filename]: Dump badpixel location(0:terminal 1:coordination 2:bit file 3:bmp file).
t cal -fpn rotation : FPN map rotation.
t cal -fpn enable [0/1]..
t cal -fpn sensor_cal [type] [mode] : capture raw image for FPN/Vignette....
t cal -vnc_spec: Generate Vignette calibration table.
t cal -vnc_spec [raw encode text flag] [filename spec] [raw_input filename ] [raw_output filename] ....[raw encode text flag] = 0 or 1.
t cal -vnc_spec [raw encode text flag] [filename spec] [raw_input filename ] [raw_output filename] .....Error : CENTER_X out of the range ((IMG_W*3/8) < CENTER_X < (IMG_W*5/8))....Error : CENTER_Y out of the range ((IMG_H*3/8) < CENTER_Y < (IMG_H*5/8))....[raw encode text flag] = .idea WARP ==> 0: raw encode disable , 1: raw encode enable, 99: generate the raw with distortion .keep view angle WARPP (keep x & y )==> 20 raw encode disable, 21: raw encode enable .
t cal -warp_spec [raw encode text flag] [filename spec] [raw_input filename ] [raw_output filename] .....
t cal -warp_spec: Generate WARP calibration table.t cal -warp_spec [raw encode text flag] [filename spec] [raw_input filename ] [raw_output filename] ..Command Error..
t cal -task vig blend [0|1]: disable|enable vignette blend task.
t cal -task vig luma [0|1]: disable|enable vignette postproc task.
t cal -task vig vig_luma_table: change vignette postproc task luma table.
t cal -task warp blend [0|1]: disable|enable warp blend task.
t cal -task ca blend [0|1]: disable|enable ca blend task.....[swin_info] start_x = %u, start_y = %u, width = %u, height = %u, downsample = %u....Addrees of gain tables (R, Ge, Go, B) = (0x%X, 0x%X, 0x%X, 0x%X)....
t cal -vnc status: Print Vignette site status.
t cal -vnc info: Print Vignette calibration info.
t cal -vnc vig_rotate mode enable sel_side [mode:0:flip_180,1:up_down mirror,2:L/R mirror,Enable:1,0:right 1:left]...
t cal -warp status: Print WARP site status.
t cal -warp select [enable] [id0] [id1] [wgt_0] [decay_ratio]: select warp table; wgt_0, decay_ratio must <= 0x10000.....
t cal -ca status: Print CA site status.
t cal -ca select [enable] [id0] [id1] [wgt_0] [decay_ratio]: select ca table; wgt_0, decay_ratio must <= 0x10000.....
t cal -gen_ca: Generate CA calibration table.
t cal -gen_ca [raw encode text flag] [filename spec] [raw_input filename ] [raw_output filename] ..[raw encode text flag] = 0 or 1 .
t cal -gen_ca [raw encode text flag] [filename spec] [raw_input filename ] [raw_output filename] ..Error : CA_CENTER_X out of the range ((CA_IMG_W*3/8) < CA_CENTER_X < (CA_IMG_W*5/8))....Error : CA_CENTER_Y out of the range ((CA_IMG_H*3/8) < CA_CENTER_Y < (CA_IMG_H*5/8))....Select Method #%d for generating table, Decay-ratio = %d, r-ratio = %d..Usage: t %s -jqlt: get the capture jpg quality. t %s -jqlt [jpg_quality] : set capture jpg quality....Usage: t %s -bmp: get dump bmp enable. t %s -bmp [enable] : set dump bmp enbale...Usage: t %s -msc [status]: notify app. that usb cable is removed /inserted..status = [0/1], 0:removed.. 1:inserted...t cal -merge_bin [ca/warp] [filename] [filename] [filename] .... : combine ca/warp binary for amba calibration.t cal -merge_bin [ca/warp] merge [filename] [num]: the file name is warp0.bin warp1.bin .... warp7.bin [filename]= driver:warp [num]= 8. ...Usage: t cal [OPTION] VALUE....Supported options:..-3a: AAA control..-3a_test: AAA stat regression test..-sc: Scene mode control..-de: Digital effect control..-ae: AE info..-me: Manual exposure..-raw: raw capture..-rawenc: raw encode with manual main window width/heigh..-ituner: ituner tool..-mgr: Calibration manager CLI tool..-fpn: FPN tool..-vnc: Vignette tool..-vnc_spec: for warp by spec..-task: WARP decay ratio en/disable..-warp: WARP tool..-warp_spec: for warp by spec..-ca: CA tool..-gen_ca: Gen CA tool..-jqlt: Set capture jpg quality..-bmp: Set dump bmp enalbe..-usb: Set remove/insert sdcard....calib_ituner_execute....
Routing NAT
route.jpg
Имеем сервер (Windows Server 2012 R2) с 2 интерфейсами (в локальную сеть с интернетом и в защищенную корпоративную сеть), а также удаленный ip адрес (пусть будет **23.23.23.100**), на котором расположен web портал для работы.
Сам сервер не раздает интернет и в свою очередь подключен к роутеру **192.168.0.1**
На сервере в локальную сеть и интернет прописано:
192.168.0.5
255.255.255.0
192.168.0.1
8.8.8.8
8.8.4.4
На втором интерфейсе прописан ip адрес корпоративной сети:
10.10.10.5
255.255.255.0
Теперь нужно добраться до адреса внутри корпоративной сети **23.23.23.100**, а так как интерфейс в локальную сеть имеет шлюз, то по умолчанию все неизвестные адреса отправляются туда. Нужно указать, что **23.23.23.100** должен пойти через **10.10.10.1** (это шлюз внутри корпоративной сети).
route add -p 23.23.23.100 mask 255.255.255.0 10.10.10.1
Теперь пинг до 23.23.23.100 идет!
# Как заставить клиента в сети ходить через сервер на этот адрес **23.23.23.100**?
Первым делом, на клиенте, говорим, что **23.23.23.100** должен пойти через сервер:
route add -p 23.23.23.100 mask 255.255.255.0 192.168.0.5
Теперь клиент **192.168.0.23** знает, что достучаться до **23.23.23.100** надо через сервер, да и сервер знает, что надо этот запрос отправлять на шлюз корпоративной сети, но вот только сам **23.23.23.100** не знает, что ответ должен прийти клиенту, а прописать обратный маршрут на **23.23.23.100** нет возможности. Поэтому будем использовать NAT.
Кстати обратный маршрут, не единственная проблема, по которой это не будет работать. Сам сервер не будет маршрутизировать, так как на нем эта функция еще не включена.
Добавляем роль на сервере. Выбираем там "Удаленный доступ" в которой выбираем "Маршрутизация".
После установки роли, в панели управления - администрирование, запускаем оболочку "Маршрутизация и удаленный доступ".
Там щелкаем правой кнопкой по серверу и выбираем "Настроить и включить маршрутизацию и удаленный доступ".
Там выбираем "Особая конфигурация" - ставим галочки на "Преобразование сетевых адресов NAT" и "Маршрутизация локальной сети".
После этого почему-то перестает пинговаться **23.23.23.100** судя по всему, ранее созданный маршрут через **route add** перестает работать после установки роли маршрутизации на сервере.
В оболочке маршрутизации заходим в "Статические маршруты" и добавляем этот же маршрут.
Выбираем интерфейс корпоративной сети, далее все то же самое, что и в:
route add -p 23.23.23.100 mask 255.255.255.0 10.10.10.1
Пинг до **23.23.23.100** снова появился.
Теперь чтобы заработало на клиенте (ведь маршрут на клиенте уже прописан через сервер), достаточно добавить в "Преобразование сетевых адресов NAT" интерфейс корпоративной сети, выбрать "Общий интерфейс подключен к интернету" и поставить галочку "Включить NAT на данном интерфейсе".
Все, теперь любой клиент в сети может добраться до этого адреса, главное не забывать у клиента прописать маршрут:
route add -p 23.23.23.100 mask 255.255.255.0 192.168.0.5
*.BAT для бэкапа баз 1С
**Вариант 1**
chcp 1251
@echo off
"C:\\Programs\\System\\7-Zip\\7z.exe" a -t7z "H:\\БэкапТест\\C-1С_Тест-backup-%date%.7z" -mx3 "C:\\1С_Тест\\ИПСтепановЕВ82" -ssw
**Вариант 2**
chcp 1251
@echo off
setlocal
set bindir=C:\\Program Files (x86)\\1cv82\\8.2.19.106\\bin
set basedir=C:\\1С_Тест\\ИПСтепановЕВ82
set backupdir=H:\\БэкапТест
mkdir %backupdir%\\%date%-82
"%bindir%\\1cv8.exe" CONFIG /F "%basedir%" /DisableStartupMessages /DumpIB "%backupdir%\\%date%-82\\1c82_%date%.dt" /OUT "%backupdir%\\%date%-82\\backup.log" -NoTruncate
endlocal
Крым (часть 1)
Крым (часть 2)
Восстановление блога (Или Битрикс + Эгея)
Вчера заметил что при добавление новой записи здесь и сохранении записи, обрезается заголовок.
Т.е. он бы отобразился в данном случае примерно так "Восстановление бло".
Долго копал, выяснилось, что настраивал сервер под битрикс и в php.ini задал параметр
mbstring.func_overload = 2
Этого требует битрикс. Из за этого и стали такие глюки в Эгее.
По умолчанию в php.ini эта строка имеет такой вид
;mbstring.func_overload = 0
Т.е. она закомментированная. И если ее привести к такому виду, то Эгея работает, а битрикс начинает ругаться в проверке.
Чтоб заставить работать параметр для каждого сайта отдельно, нужно в конфиге nginix (для сайта на битриксе, в /etc/nginx/sites-available) прописать
fastcgi_param PHP_VALUE "mbstring.func_overload=2";
Тогда сайт на битриксе начинает работать как нужно и не выводить ошибок.
Но происходит интересное с Эгеей. Если сделать /etc/init.d/php-fpm restart то Эгея работает нормально, пока нет активности на сайте с битриксом. Как только открыл страничку на битриксе, применяется параметр прописанный в конфиге для сайта битрикса и распространяется на сайт Эгеи. Видимо это связано с тем, что по умолчанию в php.ini этот параметр вообще закомментирован.
Исправляется это прописыванием
fastcgi_param PHP_VALUE "mbstring.func_overload=0";
В конфиге для Эгеи
Полностью этот кусок выглядит так:
location ~ \\.php$ {
root\ \ /home/deterrent/www/blog.evstepanov.ru;
fastcgi_pass\ unix:/var/run/php5-fpm.sock;
fastcgi_param\ PHP_VALUE\ "mbstring.func_overload=0";
fastcgi_param\ SCRIPT_FILENAME\ /home/deterrent/www/blog.evstepanov.ru/$fastcgi_script_name;
include >\ fastcgi_params;
}
После любых правок в конфигах nginx естественно нужно рестартить его /etc/init.d/nginx restart
Так как я файлики восстанавливал из бэкапа, пришлось задавать права доступа.
egeya.png
Так выглядит рекомендация установки прав доступа на директории во время установки Эгеи.
Настройте права на сервере
Пожалуйста, дайте права на запись здесь:
/user/
/user/caches/
/user/backup/
/pictures/
/pictures/thumbs/
/audio/
Но у меня не установка, а восстановление из бэкапа.
Права задал как на скрине, в блоге вроде все работает как нужно, но при логине в блог, он ругался на то, что не может сохранить данные авторизации. Вылечилось установкой chmod 777 -R user т.е. на дирикторию user и все что есть внутри.
Update
Когда начил править эту запись, вылезла еще и эта ошибка:
error-egeya.png
Сделал chmod 777 -R pictures и эта ошибка пропала.
Убрать значек Яндекс Диск и Фото iCloud из моего компьютера
В реестре тут:
HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace
удаляему дирикторию, в которой есть запись "яндекс диск"
а тут Фото iCloud аналогично удаляем
Компьютер\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{F0D63F85-37EC-4097-B30D-61B4A8917118}
Значки вновь появляются при обновлении программ.
Настройка PHP для Windows
**Редакция php.ini:**
Найдите строку:
post_max_size = 8M
- Увеличьте до 16 Мбайт максимальный размер данных принимаемых методом POST, изменив ее на:
post_max_size = 16M
Найдите строку:
;include_path = ".;c:\\php\\includes"
- Раскомментируйте ее, убрав перед строкой символ точки с запятой.
- (Внимание исключение! Обратные косые черты при указании пути):
include_path = ".;c:\\php\\includes"
- Создайте пустой каталог "C:\\php\\includes", для хранения подключаемых классов.
Найдите строку:
extension_dir = "./"
- Установите значением данной директивы путь к папке с расширениями:
extension_dir = "C:/php/ext"
Найдите строку:
;upload_tmp_dir =
- Раскомментируйте ее и укажите в значении следующий путь:
upload_tmp_dir = "C:/php/upload"
- Создайте пустую папку "C:\\php\\upload", для хранения временных файлов загружаемых через HTTP.
Найдите строку:
upload_max_filesize = 2M
- Увеличьте максимально допустимый размер загружаемых файлов до 16 Мбайт:
upload_max_filesize = 16M
Подключите, расскомментировав, данные библиотеки расширений:
extension=php_bz2.dll
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
Найдите строку:
;date.timezone =
- Раскомментируйте и установите значением часовой пояс вашего местоположения (список часовых поясов можно найти в документации):
date.timezone = "Europe/Moscow"
Найдите строку:
;session.save_path = "/tmp"
- Раскомментируйте и установите значением данной директивы такой путь:
session.save_path = "C:/php/tmp"
- Создайте пустую папку "C:\\php\\tmp" для хранения временных файлов сессий.
**Сохраните изменения и закройте файл php.ini.**
Далее необходимо добавить каталог с установленным PHP интерпретатором в PATH операционной системы. Для чего пройдите по пути "Start" ("Пуск") -> "Control Panel" ("Панель управления") -> "System" ("Система"), откройте вкладку "Advanced" ("Дополнительно"), нажмите кнопку "Environment Variables" ("Переменные среды"), в разделе "System Variables" ("Системные переменные") сделайте двойной щелчок на строке "Path", добавьте в поле "Variable Value" ("Значение переменной"), к тому что там уже существует, путь к каталогу с установленным PHP, например, "C:\\php" (без кавычек). Обратите внимание на то что символ точки с запятой разделяет пути. Чтобы внесенные изменения вступили в силу, перезагрузите операционную систему.
Пример строки Path:
//%SystemRoot%\\system32;%SystemRoot%;%SystemRoot%\\System32\\Wbem;C:\\php;C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin//
Установка и настройка PHP интерпретатора – завершена.
WordPress Загрузка не удалась. cURL error 23: Failed writing body (639 != 807)
И опять все портит битрикс на сервере.
Как и ((http://blog.evstepanov.ru/all/vosstanovlenie-bloga-ili-bitriks-i-egeya/ в случае с установкой Эгеи)), в конфиге сайта должно быть прописано
После данных манипуляций, ошибка **cURL error 23: Failed writing body (639 != 807)**, при обновлении плагинов и движка, пропадает.
«No input file specified» вместо 404 ошибки в Nginx
Если при обращении к несуществующему filename.php выдается ошибка **No input file specified**
Значит FastCGI отдает ошибки напрямую в браузер. Для включения обработки ошибки сервером с возвратом директивы **error_page**, в конфиге сайта (в **location ~ \\.php$ {}**) нужно добавить:
Можно не указывать параметр **file**, но тогда файл **ftpd.passwd** создается в той директории, в которой выполняете комманду. Так же я не указал **gid**, так как он автоматом будет такой же как **uid**, а **33** это юзер и группа **www-data**. Почему такие указал? Потому что сайт на битриксе, распаковывается из скрипта восстановления и все файлы сайта имеют юзера и группу **www-data**.
Получается, что юзер-пароль только для фтп, но **uid** и **gid** могут указывать на реального пользователя и группу, а любые изменения по фтп, будут от того пользователя, которому принадлежит этот **uid**.