воскресенье, 30 ноября 2014 г.

Как написать чат в командном файле (CMD, BAT)

Как написать чат в командном файле (CMD, BAT)



@rem BatChat
@echo off
cls
pushd "%~dp0"
echo Current DIR: "%CD%"
if "%~1" == "talk_widget" goto talker


rem ================================================

rem ////////////////////

:auth
echo Enter chat filename to connect ("abc" for example):
set /p chat=^>
echo Enter your nick:
set /p nick=^>
start call %0 talk_widget %chat% %nick%


rem ////////////////////

:listener

cls
call title "| Chat: %chat% | User: %nick% |"
if exist %chat%_history type %chat%_history
if not exist %chat% echo. 2>%chat%



:listener_loop

ping 127.0.0.1 -n 1 -w 20 > nul
set oldtext=%text%
set /p text=<%chat%
if not "%text%" == "%oldtext%" echo %text%
goto listener_loop

rem ////////////////////



rem ================================================



rem ////////////////////
rem // %2 - chat name //
rem // %3 - user nick //
rem ////////////////////

:talker
set chat=%~2
set nick=%~3

cls
call title "| Chat: %chat% | User: %nick% |"
call ::cs_in
echo (%TIME% %nick% connected)>%chat%
call ::cs_out
echo (%TIME% %nick% connected)>>%chat%_history


:talker_loop
cls
echo Dear %nick%, type message to send:
set /p msg=^>
call ::cs_in
echo [%TIME% %nick%]: %msg%>%chat%
call ::cs_out
echo [%TIME% %nick%]: %msg%>>%chat%_history
goto talker_loop
rem ////////////////////


rem ================================================


rem ////////////////////
:cs_in

if exist "%chat%_cs" ping 127.0.0.1 -n 1 -w 50 > nul
set cs_value=%RANDOM%



:cs_in_loop
echo %cs_value%>%chat%_cs
set /p ret=<%chat%_cs
if "%ret%" == "%cs_value%" exit /b
ping 127.0.0.1 -n 1 -w 10 > nul
goto :cs_in_loop

rem ////////////////////


rem ////////////////////

:cs_out
del %chat%_cs
exit /b

rem ////////////////////



rem ================================================

Парсинг Я-новостей на PHP


 Парсинг Я-новостей 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
        <title>Парсинг Я.Новости</title>
        <meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body>

<?php

function curlFunc($url){
 $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
 curl_close($ch);
return $result;

}



function getYandexNews($q){
            $q = str_replace(" ","+",$q);
$h = curlFunc('http://news.yandex.ru/yandsearch?text='.$q.'&rpt=nnews2');

preg_match_all('/<a onclick="(.*?)" href="(.*?)"(.*?)class="title">(.*?)<\/a>(.*?)<span class="info">(.*?)<p>(.*?)<\/p>/is', $h, $matches);

$SStr = '';
for($i=1;$i<sizeof($matches[1]);$i++){

   if(!empty($matches[2][$i])){

         $SStr .= '<li><a href="'.trim(strip_tags($matches[2][$i])).'" target="_blank">'.trim(strip_tags($matches[4][$i])).'</a><br />

         '.$matches[7][$i].'

         <small>'.$lm.'</small>

         </li>';

         }

}

return  $SStr;

}

echo getYandexNews('Zapros');
?>

</body>
</html>

Счетчик введенных символов JQUERY




<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>textArea</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
   <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
</head>
<body>

<div><textarea id="messageText" cols="45" rows="15"></textarea></div>

<div>Количество символов: <span id="symbolsCounter"></span></div>

 
<script type="text/javascript">
$(function() {
    var ta = $("#messageText");
    var counter = $("#symbolsCounter");
    counter.html(ta.val().length);
    if ($.browser.mozilla && $.browser.version.substr(0,3)=="1.9") {
        ta.bind("input", function() {
            updateCounter();
        });
    }
    else {
        ta.bind("keyup", function() {
            updateCounter();
        });
    }



    function updateCounter() {
        counter.html(ta.val().length);
        var split = ta.val().split("\n");
        if (split.length > 15) {
            ta.attr("rows", split.length);
        }
    }
});
</script>
</body>
</html> 

пятница, 14 ноября 2014 г.

Парсим текст и сохраняем через FTP-соединение на PHP


Парсим текст и сохраняем через FTP-соединение на PHP

 

 /* получаем содержимое нужной нам страницы в переменную $content (обратите внимание, – мы используем для этого функцию file_get_contents. Она может работать с удаленными URL только если в настройках PHP установлена опция allow_url_fopen) */
$content = file_get_contents('http://news.yandex.ru/');
// Определяем позицию строки, до которой нужно все отрезать (используем функцию strpos()).
$pos = strpos($content, '<h2>Главные новости</h2>');
/*Отрезаем все, что идет до нужной нам позиции (функция substr в данном случае принимает два параметра: строка для обработки и //номер позиции. Функция вернет строку, НАЧИНАЯ с указанной позиции) */
$content = substr($content, $pos);
// Точно таким же образом находим позицию второй строки
$pos = strpos($content, '<hr>');
// Отрезаем нужное количество символов от нулевого
$content = substr($content, 0, $pos);
// не выводим полученную строку.
// echo $content;

// Отрезаем нужное количество символов от нулевого
$content = substr($content, 0, $pos);
// преобразовываем ссылку
$content = str_replace("href=\"/society/", "href=\"http://novostey.com/society/", $content);
// преобразовываем изображение
$content = str_replace("src=\"/thumbs/", "src=\"http://novostey.com/thumbs/", $content);
// создаем файл index.html
$fps = fopen("index.html","w+");
// записываем в index.html обработанную информацию
fwrite($fps,$content);
// закрываем файл index.html
fclose($fps);
// подключаемся к FTP
// переменные для логина
$ftphost = "ftp.narod.ru";
$user = "phpelse";
$password = "phpelse7";
// открываем FTP соединение, в случае неудачи останавливаем работу сценария
$fp = ftp_connect($ftphost) or die ("Не могу соединиться c FTP сервером");
// логинимся
$connect = ftp_login($fp, $user, $password);
// проверяем успешность входа
if($connect) echo "OK – мы вошли как $user ";
else
echo "Ошибка входа на FTP сервер";
ftp_pasv($fp, TRUE);
$indexfile = fopen("index.html", "r"); // открываем нужный файл для чтения
$loadfile = ftp_fput($fp, "index.html", $indexfile, FTP_ASCII); // передаем его на FTP
fclose($indexfile); // закрываем файл
// закрываем FTP соединение
ftp_close($fp);

вторник, 28 октября 2014 г.

Комбинации клавиш в Delphi


Комбинации клавиш в Delphi

Клавиши редактора кода
Клавиша Назначение Версия
Ctrl + J   Выбор code-template. Вставка шаблона кода. Можно вставлять типовые шаблоны, а можно написать свои собственные. При нажатии Ctrl + J, будет показан список шаблонов. Либо можно набрать несколько букв из имени шаблона, чтобы ограничить выбор, либо полное имя шаблона и нажать комбинацию - шаблон сразу вставится. 5
Например набираем try и жмём. Нам предложат варианты конструкции try. Или набираем classc, жмём - получаем готовую заготовку для описания класса.
Ctrl + Shift + C   Class Completion. Одна из важнейших комбинаций при описании класса. Закончив базовое описание класса, нажимаем комбинацию. Автоматически создадутся все описанные методы в разделе implementation, для всехproperty создадутся приватные поля и сеттеры. 5
Ctrl + Shift + V   Автоматическое объявление переменной. При написании функции можно написать код, не прописывая заранее переменные в var. Потом установить курсор на переменную и нажать данную комбинацию. Автоматически будет создан раздел var (при необходимости), и в нём будет помещено описание переменной. В случае, когда по коду нельзя точно определить тип переменной, будет вызвано уточняющее окошко. Впрочем оно редко ошибается с типом и я обычно сразу подтверждаю по Enter. 2006
Ctrl + пробел Вызов CodeCompletion (того, который автоматом появляется после нажатия точки после имени объекта/класса).  5
При нажатии на пустом месте, показывает объекты/класса/функции/процедуры/методы и т.д., которые мы можем использовать в данном месте.
При нажатии в объявлении класса, показывает методы, которые можно пронаследовать от родительского класса.
Ctrl + Shift + пробел   Показывает всплывающий хинт, подсказывающий параметры функции. 5
Ctrl + Shift + Enter   Если встать на имя функции и нажать комбинацию, то будут найдены все места в проекте, где она используется. 2005
Ctrl + Shift + G   Вставить GUID
Ctrl + Shift + T   Вставляет в текущую позицию заметку ToDo. Все расставленные заметочки можно потом смотреть черезToDo-List и осуществлять навигацию по ним.  5
Для тех, кто не в курсе - ToDo означает "Нужно сделать". То есть расставляем себе заметочки, что тут нужно сто-то сделать или доработать.
Ctrl + Shift + A   Добавляет в uses нужный модуль. Например у Вас есть код, но дельфи ругается, что она не знает, что это за функция или константа и т.п. Просто ставим на неё курсор и жмём комбинацию. Дельфи сама найдёт модуль, где она объявлена и добавит его в uses 2005
Ctrl+O+O   Вставить в код директивы компилятора, соответствующие текущим настройкам проекта 5
Клавиши редактирования
Клавиша Назначение Версия
Ctrl + T   Удалить слово в позиции курсора 5
Ctrl + Y   Удалить текущую строку 5
Ctrl + Shift + Y   Удалить текст от позиции курсора до конца строки 5
Ctrl+N   Вставить строку 5
Ctrl + Shift + I   Увеличить отступ выбранного текста от левого края 5
Ctrl + Shift + U   Уменьшить отступ выбранного текста 5
Ctrl + /   Закомментировать или раскомментировать выделенный блок текста 2005
Ctrl + Shift + R   Начать/завершить запись макроса 1
Ctrl + Shift + P   Воспроизвести макрос 1
Ctrl+K+E   Перевести слово в нижний регистр 5
Ctrl+K+F   Перевести слово в верхний регистр 5
Shift + Навигация   Выделить часть кода (Shift + мышь,вверх, влево, Home и т.д) 1
Shift + Alt + Навигация   Аналогично предыдущей, но выделяет прямоугольную часть кода. 1
Ctrl+O+C   Включить режим блочного выделения 1
Ctrl+O+K   Включить режим поточного выделения 1
Ctrl + Del   Удалить выделенное 1
Ctrl + BackSpace   Стересть слово перед курсором 1
Клавиши навигации по коду
Клавиша Назначение Версия
Ctrl + F   Поиск 3
F3   Продолжение поиска 3
Ctrl + E   Инкрементный поиск. Поиск без диалога - нажимаете комбинацию и начинаете набирать текст. Навигация сама побежит по коду в поисках слова. Если слово найдено, но нужно найти в другом месте - также работает F3. 5
Alt + [   Ищет открывающую скобку для закрывающей скобки, перед которой стоит курсор 5
Alt + ]   Ищет закрывающую скобку для открывающей скобки, перед которой стоит курсор 5
Alt + Влево   Назад по истории перемещений. Возвращает в то место кода, откуда мы перешли. 7
Alt + Вправо   Вперёд по истории перемещений. Результат обратный предыдущей комбинации. Действует только после её использования. 7
Alt + Вверх   Выполняет действие, аналогичное удержанию Ctrl + клик мышкой по слову - происходит переход на его декларацию. Например, установив курсор на словоTLabel и нажав комбинацию, мы попадём туда, где описан класс TLabel. Данный переход помещается в историю перемещений. Вернуться обратно можно по Alt + Влево. 7
Ctrl + Shift + Вверх   Переход между описанием процедуры/функции/метода в и его/её реализацией 5
Ctrl + Shift + Вниз   Аналогично предыдущей 5
Ctrl + Alt + Верх   Переход к реализации предыдущего метода класса (в алфавитном порядке). То есть, просматривая код метода, мы можем перейти к реализации предыдущего (по алфавиту) метода этого же класса 2006
Ctrl + Alt + Вниз   Переход к реализации следующего метода класса (в алфавитном порядке). 2006
Ctrl + Alt + Home   Переход к реализации первого метода класса (в алфавитном порядке) 2006
Ctrl + Alt + End   Переход к реализации последнего метода класса (в алфавитном порядке) 2006
Ctrl + F12   Открывает окно со списком юнитов проекта. 1
Shift + F12   Открывает окно со списком форм 1
Ctrl + Tab   Переход к следующему открытому юниту в порядке следования их на закладках 1
Ctrl + Shift + Tab   Переход к предыдущему открытому юниту в порядке следования их на закладках 1
Ctrl + Alt + F12   Выпадающее меню со списком открытых юнитов 2006
Ctrl + F4   Закрыть текущий юнит 1
Alt + G   Перейти на строку с номером ... 1
Ctrl + Вверх   Скролит экран на строку вверх 1
Ctrl + Вниз   Скролит экран на строку вниз 1
CodeFolding   Ниже клавиши, относящиеся к сворачиванию кода в Delphi 2005 и выше 2005
Ctrl+Shift K+A   Развернуть всё 2005
Ctrl+Shift K+E   Свернуть блок кода 2005
Ctrl+Shift K+U   Развернуть блок кода 2005
Ctrl+Shift K+T   Переключение состояния свёрнутый/развёрнутый 2005
Ctrl+Shift K+O   Выключить CodeFolding 2005
Клавиши общей навигации
Клавиша Назначение Версия
F12   Переключение между окном кода и визуальным редактором формы 3
Alt + F12   Переключение на просмотр формы в текстовом виде (dfm) и обратно 3
F11   Переключиться на Object Inspector 3
Ctrl + Alt + F11   Открыть менеджер проектов 5
Shift + Alt + F11   Открыть окно структуры 2005
Ctrl + Alt + P   Переключиться на палитру инструментов 2005
Ctrl + Shift + B   Открывает на окно эксплорера проекта 5
Ctrl + Alt + V   Открыть окно лога событий 5
Ctrl + Shift + F   Найти в файлах. Производит поиск выражения в файлах проекта, в каталоге и т.п. по выбору. 5
Alt + F7   Переход к предыдущему найденному при помощи Ctrl + Shift + F 5
Alt + F8   Переход к следующему найденному при помощи Ctrl + Shift + F 5
Ctrl + Enter   При нажатии на юните из списка uses, открывает его на новой закладке. При нажатии в другом месте, происходит вызов команды Open главного меню. 5
Alt + F11   Если открыт юнит, эта комбинация покажет диалог добавления юнита, где можно будет выбрать, к каким модулям его добавить 5
Клавиши отладки
Клавиша Назначение Версия
F9   Запуск программы. (неожиданно, правда? :) ) Также продолжает выполнение программы после остановки на брекпоинтах, либо после возникновения исключений. 1
Ctrl + F9   Компиляция программы без запуска 1
Shift + F9   Билд проекта. Билд отличается от компиляции тем, что производит перекомпиляцию всех модулей проекта. Обычная компиляция компилирует только изменённые модули. Также билд увеличивает номер билда в версии программы, если в настройках указана данная опция. 5
Ctrl + Shift + F9   Запуск программы с отключенным отладчиком. Аналогично простому запуску exe файла. Функции отладки отключены. Используется, если вы хотите прогнать программу в рабочем режиме, не останавливаясь на брекпоинтах и обработанных исключениях. 2005
F5   Установить брекпоинт (точку останова). Программа, дойдя до данной точки, остановит выполнение для дальнейших инструкций 1
F4   Запустить программу и приостановить выполнение в заданной точке 1
F8   Выполнить следующий шаг программы без захода в функции/процедуры. 1
F7   Выполнить следующий шаг программы с заходом в функцию/процедуру 1
Shift + F7   Трассировка до следующей выполняемой строки 5
Shift + F8   Выполнить до возврата из функции/процедуры. Программа выполнит все действия и снова остановится после возврата из неё. 5
Ctrl + F2   Прервать выполнение программы 5
Ctrl + F7   Выполнить собственный код дельфи во время отладки. В коде можно модифицировать любые переменные, доступные в данном месте кода. 2005
Ctrl + F5   Если курсор установлен на переменной, то она будет добавлена в Watch List 5
Ctrl + Alt + W   Показывает Watch List. Предназначен для отображения текущего значений переменных и их модификации. 5
Ctrl + Shift + B   Показать список всех расставленных в проекте брекпоинтов с возможностью навигации по ним 5
Ctrl + Alt + S   Показывает стэк вызова, который показывает, откуда мы сюда пришли 5
Ctrl + Alt + L   Открывает окно локальных переменных. В нём отображаются значения всех локальных переменных функции во время отладки 5
Ctrl + Alt + T   Открывает окно тредов. Во время отладки в нём перечислены все треды приложения и их состояние 5
Ctrl + Alt + C   Открывает окно CPU. В этом окне можно смотреть и отлаживать код в ассемблерном представлении. По сути встроенный asm отладчик. Причём, используя F7 можно зайти даже в код API функций и посмотреть, что там и куда идёт. 5


понедельник, 1 сентября 2014 г.

Как вводить символы, отсутствующие на клавиатуре?


Как вводить символы, отсутствующие на клавиатуре?


Представим банальную ситуацию: вам нужно ввести в какой-либо текст специальный символ, но на клавиатуре нет клавиши с таким символом. Как быть?
Если вы работаете в текстовом редакторе Word, то никаких проблем нет: выбираете меню Вставка –> Символ… В открывшемся диалоговом окне Символ выбираете нужный символ, нажимаете клавишу Вставить (можно осуществить вставку двойным щелчком левой кнопки мыши по выбранному символу).
А если вы работаете в «непродвинутом» текстовом редакторе, например, в Блокноте (кстати, программу Блокнот очень удобно использовать именно как блокнот – для текущих записей и заметок. Т.к. он «весит» меньше, чем Word, то быстрее загружается и работать в нем быстрее)? Как быть?
Выход есть, и он всегда под рукой! Нажмите и удерживайте клавишу Alt, а на дополнительной цифровой клавиатуре (цифровой блок расположен в правой части клавиатуры) набирайте код символа. Когда вы отпустите клавишу Alt, в текст будет вставлен нужный символ.

Коды некоторых символов перечислены ниже:
0123 (или 123) {
0124 (или 124) |
0125 (или 125) }
0126 (или 126) ~
0130 ‚ нижняя одинарная кавычка
0132 „ открывающая «лапка»
0133 … многоточие
0134 † крестик (dagger)
0135 ‡ двойной крестик (double dagger)
0136 € символ евро
0137 ‰ символ промилле
0139 ‹ левый «уголок»
0143 Џ
0145 ‘ верхняя одинарная кавычка (перевернутый апостроф)
0146 ’ апостроф
0147 “ закрывающая «лапка»
0148 ” английская закрывающая «лапка»
0149 • «жирная» точка по центру
0150 – короткое тире (минус)
0151 — тире
0153 ™ символ trade mark
0155 › правый «уголок»
0159 џ
0166 ¦
0167 § параграф
0169 © символ копирайта
0171 « открывающая «ёлочка»
0172 ¬
0174 ®
0176 ° символ градуса
0177 ±
0181 µ
0182 ¶
0183 · точка по центру
0185 №
0187 » закрывающая «ёлочка»
Знание этих кодов (или хотя бы наличие «под рукой» отпечатанного листка с этими кодами) позволяет повысить скорость работы на клавиатуре даже в Word'е.
Примечание
Должен быть включен цифровой блок клавиатуры (если он не включен, включите его нажатием клавиши NumLock).

вдогонку

alt + 7 = •            
alt + 20 = ¶
alt + 21 = §              



понедельник, 28 июля 2014 г.

Как настроить Cron Daemon


Как настроить Cron Daemon на веб-хосте?




<user@web> /usr/bin/php -c -f /var/www/vhosts/example.com/httpdocs/post/index.php


1 1 * * 1 wget -qO- 'http://example.com/import/index.php?login=user&password=pass'


*/15 * * * * /usr/bin/php /home/userprofile/example.com/poster.php



Помощь в заполнении

минуты, часы, дни, месяцы, дни_недели и команда

Например: (команда выполняется ежеминутно, * - означает любое число, разделяйте пробелами)

* * * * * /usr/bin/php /home/user/html/cron.php - напрямую через php
* * * * * wget -qO- http://example.com/cron.php - через www запрос

Пути к файлам для запуска

/usr/bin/php - путь к php версии по умолчанию, PHP 5.4 и новее
/usr/bin/php53/php - путь к старой версии PHP 5.3
/usr/bin/php52/php - путь к старой версии PHP 5.2
/usr/bin/perl - путь к интерпретатору Perl


 -=время выполнения=-
 * * * * *  - каждую минуту
 1,15,30,45 * * * * - в указанные минуты
 */5 * * * * - каждые 5 мин
 */15 * * * * - каждые 15 мин
 */30 * * * * - каждые полчаса
 1 * * * * - каждый час
 1 1 * * * - раз в день
 1 1 1 * * - раз в месяц
 1 1 1 1 * - раз в год
 1 1 * * 1 - раз в неделю, в понедельник




* * * * * выполняемая команда
- - - - -
| | | | |
| | | | ----- День недели (1 - 7)
| | | ------- Месяц (1 - 12)
| | --------- День (1 - 31)
| ----------- Час (0 - 23)
------------- Минута (0 - 59)


Период выполнения cron задается в 6 колонках. Первые пять колонок задают время выполнения (Минута, Час, День, Месяц, День недели), в них может находиться число, список чисел, разделённых запятыми, диапазон чисел, разделённых тире или символ '*'.



Например, если написать так в планировщике, то скрипт будет выполняться  во вторую минуту каждого часа:
2 * * * * /usr/bin/php blablabla.php


для настройки выполнения каждые два часа надо выставить 0 */2 * * *

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

Постоянные читатели

Популярные сообщения