Архивы автора: Scotch

Ошибка обновления файлов проводника

Наткнулся на странный глюк — создаешь, переименовываешь или удаляешь файл в проводнике или на рабочем столе, а изменение происходит только после нажатия   обновить из контекстного меня или кнопки F5.

Например, переименовал файл word, щелкаешь на файл, открывается word с ошибкой о не существовании файла.

Помогло создание и запуск reg-файла.

1
2
3
4
5
6
7
Windows Registry Editor Version 5.00
 
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoSimpleNetIDList"=dword:00000001
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer]
"Max Cached Icons"="12000"
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoSimpleNetIDList"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer]
"Max Cached Icons"="12000"

Перезагрузка.

ЧПУ для сайта php+mysql часть 1

Копирование полей в базе mysql

Для реализации мне потребовалось создать в базе поле titleEn c английским вариантом русского заголовка страницы title.

в phpmyadmin создаем новое поле titleEn в нужной таблице.

И копируем туда данные из русской версии заголовков:

1
UPDATE `table_name` SET `titleEn`=`title`
UPDATE `table_name` SET `titleEn`=`title`

 Транслитерация заголовков в базе

Для перевода используем простую функцию

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function translitIt($str){
$tr = array(
"А"=>"a","Б"=>"b","В"=>"v","Г"=>"g","Д"=>"d",
"Е"=>"e","Ё"=>"yo","Ж"=>"j","З"=>"z","И"=>"i",
"Й"=>"y","К"=>"k","Л"=>"l","М"=>"m","Н"=>"n",
"О"=>"o","П"=>"p","Р"=>"r","С"=>"s","Т"=>"t",
"У"=>"u","Ф"=>"f","Х"=>"h","Ц"=>"c","Ч"=>"ch",
"Ш"=>"sh","Щ"=>"sch","Ъ"=>"","Ы"=>"yi","Ь"=>"",
"Э"=>"e","Ю"=>"yu","Я"=>"ya","а"=>"a","б"=>"b",
"в"=>"v","г"=>"g","д"=>"d","е"=>"e","ё"=>"yo","ж"=>"j",
"з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
"ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
"ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya",
" "=> "-", "."=> "", "/"=> "-"
);
return strtr($str,$tr);
}
function translitIt($str){
$tr = array(
"А"=>"a","Б"=>"b","В"=>"v","Г"=>"g","Д"=>"d",
"Е"=>"e","Ё"=>"yo","Ж"=>"j","З"=>"z","И"=>"i",
"Й"=>"y","К"=>"k","Л"=>"l","М"=>"m","Н"=>"n",
"О"=>"o","П"=>"p","Р"=>"r","С"=>"s","Т"=>"t",
"У"=>"u","Ф"=>"f","Х"=>"h","Ц"=>"c","Ч"=>"ch",
"Ш"=>"sh","Щ"=>"sch","Ъ"=>"","Ы"=>"yi","Ь"=>"",
"Э"=>"e","Ю"=>"yu","Я"=>"ya","а"=>"a","б"=>"b",
"в"=>"v","г"=>"g","д"=>"d","е"=>"e","ё"=>"yo","ж"=>"j",
"з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
"ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
"ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya",
" "=> "-", "."=> "", "/"=> "-"
);
return strtr($str,$tr);
}

После чего убираем лишние символы

1
2
$fl = translitIt($fl);
$fl = preg_replace('/[^A-Za-z0-9_\-]/', '', $fl);}
$fl = translitIt($fl);
$fl = preg_replace('/[^A-Za-z0-9_\-]/', '', $fl);}

Заголовок получает вид: kak-propisat-klyuch-v-standartnoy-signalizacii из исходного Как прописать ключ в стандартной сигнализации

Автоматизируем процесс

Можно создать скрипт, для автоматической замены всего поля таблицы на транслит

Полезные для этого дела запросы к базе:

Вывод всех таблиц в базе database_name

1
$sql = "SHOW TABLES FROM database_name";
$sql = "SHOW TABLES FROM database_name";

Вывод всех полей в таблице table_name

1
$sql = "SHOW COLUMNS FROM `{table_name}`";
$sql = "SHOW COLUMNS FROM `{table_name}`";

и соответственно запись новых значений в поля базы
Обновление в таблице
table_name установить значение поля field равным fieldvalue где значение поля field равно fieldrus(то есть старому значению)

1
$editfl = mysql_query ("UPDATE table_name SET field='fieldvalue' WHERE field='fieldrus'");
$editfl = mysql_query ("UPDATE table_name SET field='fieldvalue' WHERE field='fieldrus'");

Далее

Теперь мы имеем валидный адрес для каждой страницы сайта, к которому мы можем обращатся через базу и настроить красивые url’ы через rewrite_modeule apache. to be continued…

 

Информер погоды через openweathermap.org

Наткнулся на набор бесплатных картинок с погодными условиями. Пришла в голову мысль сделать информер погоды со своими иконками погоды. С яндексом подружить не удалось, но попался сайт http://openweathermap.org/. Есть открытый API, многое правда самому пришлось додумывать)

Узнаем id нужного города, получаем xml файл с погодой,  закидываем данные в массив, раскладываем данные по переменным.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
$city2_id=524901; // id города openweather.org
$data_file2="http://api.openweathermap.org/data/2.5/weather?id=$city2_id&mode=xml&lang=ru&units=metric"; // адрес xml файла
$data_file2 = file_get_contents($data_file2,0); //получаем данные о погоде из xml файла
$xml2 = new SimplexmlElement($data_file2); //помещаем данные в массив
$city2= $xml2->city[name];//забиваем необходимые данные в переменные
$temperarure = $xml2->temperature[value];
$weather_id = $xml2->weather[number];
$weather_icon = $xml2->weather[icon];
$weather_type = $xml2->weather[value];
$pressure = $xml2->pressure[value];
$humidity = $xml2->humidity[value];
$sunrise = $xml2->city->sun[rise];
$sunset = $xml2->city->sun[set];
$windspeed = $xml2->wind->speed[value];
$windcode = $xml2->wind->direction[code];
?>
<?
$city2_id=524901; // id города openweather.org
$data_file2="http://api.openweathermap.org/data/2.5/weather?id=$city2_id&mode=xml&lang=ru&units=metric"; // адрес xml файла
$data_file2 = file_get_contents($data_file2,0); //получаем данные о погоде из xml файла
$xml2 = new SimplexmlElement($data_file2); //помещаем данные в массив
$city2= $xml2->city[name];//забиваем необходимые данные в переменные
$temperarure = $xml2->temperature[value];
$weather_id = $xml2->weather[number];
$weather_icon = $xml2->weather[icon];
$weather_type = $xml2->weather[value];
$pressure = $xml2->pressure[value];
$humidity = $xml2->humidity[value];
$sunrise = $xml2->city->sun[rise];
$sunset = $xml2->city->sun[set];
$windspeed = $xml2->wind->speed[value];
$windcode = $xml2->wind->direction;
?>

Выполняем нужные преобразования  с данными,

1
2
3
4
5
6
7
8
<?
if ($temperarure>0) {$temperarure='+'.$temperarure;}// Если значение температуры положительно, для наглядности добавляем "+"
$pressure = $pressure * 0.75006375541921; //переводим из hPa в mmHg
$pressure = round($pressure); //округляем
$temperarure = round($temperarure);
$sunrise = date('H:i',strtotime("+4 hours", strtotime($sunrise)));//меняем формат даты и прибавляем 4 часа
$sunset = date('H:i',strtotime("+4 hours", strtotime($sunset)));
?>
<?
if ($temperarure>0) {$temperarure='+'.$temperarure;}// Если значение температуры положительно, для наглядности добавляем "+"
$pressure = $pressure * 0.75006375541921; //переводим из hPa в mmHg
$pressure = round($pressure); //округляем
$temperarure = round($temperarure);
$sunrise = date('H:i',strtotime("+4 hours", strtotime($sunrise)));//меняем формат даты и прибавляем 4 часа
$sunset = date('H:i',strtotime("+4 hours", strtotime($sunset)));
?>

Формируем вывод и выводим все это дело

1
2
3
4
5
6
<?
$title = "Город: ".$city2."\n".
$weather_type." \nДавление: ".$pressure." мм рт. ст.\nВетер: ".$wind[trim ($windcode)].", ".$windspeed." м/с \nВлажность: ".$humidity."% \nВосход: ".$sunrise."\nЗакат: ".$sunset;//формируем данные для вывода в title картинки
echo ("<img src=\"/blocks/weather/images/$weather_icon.png\" alt=\"$weather_type\" title=\"$title\" >"); //путь к кртинкам должен быть абсолютным
echo ("$temperarure<sup>o</sup>C<br>");//выводим все безобразие
?>
<?
$title = "Город: ".$city2."\n".
$weather_type." \nДавление: ".$pressure." мм рт. ст.\nВетер: ".$wind[trim ($windcode)].", ".$windspeed." м/с \nВлажность: ".$humidity."% \nВосход: ".$sunrise."\nЗакат: ".$sunset;//формируем данные для вывода в title картинки
echo ("<img src=\"/blocks/weather/images/$weather_icon.png\" alt=\"$weather_type\" title=\"$title\" >"); //путь к кртинкам должен быть абсолютным
echo ("$temperarure<sup>o</sup>C<br>");//выводим все безобразие
?>

Стандартные картинки подменяем своим, не меняя имени.

13d 11d 10n 10d 09n 09d04n 04d 03n 03d 02n 02d 01n 01d

У меня получилось вот так:

1
http://web.scgarage.ru/blocks/weather/index.php
http://web.scgarage.ru/blocks/weather/index.php

При наведении на иконку, отображается дополнительная информация.

Команды консоли *Nix

Собираю команды, для их запоминания

История авторизации

1
last
last

Cron

1
crontab -u user  -l
crontab -u user  -l

посмотреть cron задания для пользователя

Пользователи

1
useradd user_name
useradd user_name

создать

1
passwd user_name
passwd user_name

 поменять пароль

1
useradd -G groupname user_name
useradd -G groupname user_name

 добавить в группу

1
groupadd groupname
groupadd groupname

 создать группу

Загрузка процессора и пямяти

1
top
top
1
htop
htop

(yum install htop)

Поиск

1
find / -name config -print
find / -name config -print
Команда означает следующее: искать файлы с именем config (-name config), начиная с каталога / (первый параметр команды find) и выводить имена файлов на экран (аргумент -print). Отмечу, что поиск рекурсивный, то есть при поиске просматриваются все вложенные директории. Как видите все просто. Теперь рассмотрим синтаксис команды и перейдем к обзору ее основных аргументов.

поиск в файлах

1
find /путь/ -type f -exec grep "текст" {} \;
find /путь/ -type f -exec grep "текст" {} \;
1
grep -rl 'текст' /путь/
grep -rl 'текст' /путь/

Создание символьной ссылки

1
ln -s куда_указывает где_размещается
ln -s куда_указывает где_размещается

Просмотр свободной памяти

1
free -m
free -m

и

1
cat /proc/meminfo
cat /proc/meminfo

Сделать скрипт исполняемым

1
sudo chmod +x script.sh
sudo chmod +x script.sh

или

1
sudo chmod 755 script.sh
sudo chmod 755 script.sh

Права на папки

сменить права на все файлы в папке scotch

1
chmod -R 755 /home/scotch
chmod -R 755 /home/scotch

сменить владельца и группу для каталога

chown -R scotch:users /home/scotch

Удалить каталог

со всем содержимым

1
rm -rf /dir1 /dir2
rm -rf /dir1 /dir2

Свободное место на дисках

1
df -h
df -h

Отображение размера всех папок

1
du -sh *
du -sh *

Размер папок от корня

1
du -hx --max-depth=1 /
du -hx --max-depth=1 /

Тип ФС

1
df -T
df -T

Информация о жестких дисках

1
fdisk -l
fdisk -l

Просмотр файлов без комментариев

1
grep -v -E "^;|^$" /usr/local/lib/php.ini
grep -v -E "^;|^$" /usr/local/lib/php.ini

или так:

1
 grep -v -E "#|^$" /usr/local/apache2/conf/httpd.conf
 grep -v -E "#|^$" /usr/local/apache2/conf/httpd.conf

^# и #. Первое это все строки начинающиеся с #, второе все строки содержащие #.

Просмотр размера папок

1
du -sh *
du -sh *

Информация о системе

1
sensors
sensors
1
dmidecode -t 4 
dmidecode -t 4 

— информация о процессоре

1
dmidecode -t 17
dmidecode -t 17

— информация о памяти

1
dmesg | grep CPU
dmesg | grep CPU

— информация о процессоре

Автоматизация юзабилити чистой OS

Наткнулся на полезный сервис: выбираем необходимые программы, нажимаем кнопку и получаем готовый инсталлятор программ актуальных версий.

Адрес: http://ninite.com

пробуем)

2013-05-17_105639

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

Импорт / Экспорт базы mysql > консоль

Импорт базы данных

В принципе можно воспользоваться командой :

1
mysql -u root -p root_pass db_name < db_name.sql
mysql -u root -p root_pass db_name < db_name.sql

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

Самым лучшим выходом из ситуации будет ипморт напрямую через cli MySQL :

Заходим в MySQL:

1
mysql -u Login -p DB_name -h Host 
mysql -u Login -p DB_name -h Host 

(вместо Login и DB_name вводим данные пользователя БД и хост, например localhost)

Выбираем базу данных:

1
 use db_name 
 use db_name 

(вместо db_name вводим название БД)

Делаем импорт файла в выбранную бд:

1
source db_name.sql 
source db_name.sql 

(вместо db_name.sql вводим название файла дампа БД или путь до файла, если вы находитесь не в той папке, где лежит файл)

Экспорт базы данных

Делаем экспорт посредством удобного mysqldump :

1
mysqldump -uLogin -pPassword db_name > db_name.sql
mysqldump -uLogin -pPassword db_name > db_name.sql

Да поможет вам phpmyadmin)))

Connectify hotspot обновления

Как то мне понадобилось организовать wi-fi между телефоном и компьютером на работе. Подвернулась небольшая софтина для создания программной точки доступа — Connectify. Установилась она без проблем, нашлись драйвера на «семерку» для старого usb-свистка от dlink. И все работало долгое время….

Утилита при каждом запуске начала писать о доступности новой версии и в конце концов я сдался и нажал кнопку «обновить»…))) Зря я это сделал, т.к. после обновления оказалось что она перестала быть полнофункциональной бесплатно. И wi-fi соединение разрывалось через определенное время.

Мне эта ситуация не понравилась и я решил вернутся на старую версию. которая не просила денег и честно выполняла свои функции. Но тут начались танцы с бубнами О-О!!

Удалятся она не захотела, инсталляция в лоб старой версии тоже не проходила. Вырезать ее пришлось удалением каталога и удалением всех упоминаний в реестре в ручную… После перезапуска слетели все настройки сетевых адаптеров((. После оперативного вмешательства старая версия найденная на hdd встала….. но в упор не хотела видеть проводной сетевой адаптер. Корректная деинсталляция и последующая установка дала еще более «крутой» результат — программа написала, что она «Connectify hotspot has been blocked»

1

Обновление драйверов всех сетевых адаптеров, выключение брандмауэра и антивируса не помогали. Кроме того перестал включаться беспроводной адаптер… Хотелось уже снести эту дрянь и искать альтернативу. Но тут я решил еще раз проверить протоколы адаптеров)))

2

У беспроводного сетевого подключения было две службы «Connectify LightWeight Filter». После удаления двух и установки одной, тоже самое и на проводном адаптере, программа ожила))) После перезагрузки и настройки wi-fi точки заново все заработало. Повыносила она голову конечно…

Добавляем строчку в файл C:/windows/system32/drivers/etc/hosts

127.0.0.1 updates.connectify.me 

Чтобы программа не доставала обновлением.

Скачать ConnectifyHotspotInstaller версия 3.7.1, которая работает стабильно и без вымогательства.

 

2015-12-28_080427