Сервис Интернет Объявлений

 
23
Апрель
2013

Начальный аттестат Webmoney нахаляву




Я принимаю WebmoneyВот я и получил начальный аттестат Webmoney.  В отличие от формального, он позволяет организовывать настоящие формы приема вебмаников на своем сайте. Получил я его нахаляву, в обход аттестованных представителей и уполномоченных, которые просят за это ничем не обоснованную сумму денег.

Как же получить начальный аттестат Webmoney совершенно бесплатно украинскому пользователю?

Все очень просто. Кто внимательный и читает новости Вебмани, тот сам найдет ответ. А для вечноторопящихся граждан я расскажу как в этом очерке.

Для начала нужно иметь какую-либо сумму на своем кошельке. Пусть это будет 50 гривен + комиссионные.

Далее мы заказываем вывод средств через систему «СОФТ», «Аваль-Экспресс» или «Быстрые деньги».  Лично я выводил через первую в одном из отделений UniCredit Bank. для вывода сперва заполняете все данные на сайте вебмани. А затем получаете СМС, идете в банк и заполняете форму-бланк. В моем случае я не располагал всеми данными, но служащий отделения банка оказалась очень любезна (!) и помогла (!!!) заполнить форму.

Согласно условий, начальный аттестат выдается автоматически по прошествии 2 месяцев после транзакции.  При условии, что все паспортные данные указаны правильно и честно.

Ровно через два месяца я напомнил «хозяевам», что они должны мне аттестат. И они любезно сказали «ждите». И таки сдержали слово. На кипер пришло несколько сообщений: отправить копию паспорта, акцептировать договор.

И вот, долгожданное сообщение:

Уважаемый участник системы WebMoney Transfer!
На основе данных, сообщенных Вами при пополнении кошелька Вашего WMID#…, центр аттестации системы WebMoney Transfer выдал Вам начальный аттестат.

Приятно. Теперь осталось разобраться с внедрением формы, все протестировать и установить где следует.

 

Между прочим, Вы знаете что должно прилагаться к дневнику по практике менеджмента? Кликайте и получайте помощь высококвалифицированных специалистов в заполнении дневника по преддипломной практике менеджера. И это все с протоколом заседания!

А для безопасности, красоты и удобства рекомендую ворота, которые можно лицезреть на сайте http://евроворота56.рф/garage_gates. Ворота обладают повышенной долговечностью, классным дизайном и эргономикой. А главное, они сохранят ваш автомобиль в сохранности.

29
Январь
2013

Параллельные (фоновые) процессы в PHP

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

Второе применение — системные ответы платежным системам об успешности операции. В данном случае при длительной обработке запроса (записи в БД, отправка письма, СМС…), удаленный сервер может и не дождаться своевременного ответа (в виде сгенерированной страницы) и свалиться в таймаут.

Порывшись в интернетах и перебрав массу вариантов, я пришел к следующему решению.

Берем функцию:

function launchBackgroundProcess($call,$file=false,$errors=false)
{
      if (PHP_OS == 'WINNT' || PHP_OS == 'WIN32')
      {
      $handle=popen('start /MIN '.$call, "r");
      if($handle===false)
      trigger_error("Can't start process $call",E_USER_ERROR);
      else pclose($handle);
      }
      else{
      $add = "";
      if($file===false){
      $file = '/dev/null';
      }
      if($errors!==false){
      $add = " 2> ".$errors;
      }
      exec($cmd = ($call.' > '.$file.$add.' &'));
      }
}

И обращаемся к ней:

launchBackgroundProcess('wget http://yoursite.com/yourfile.php');

В файле http://yoursite.com/yourfile.php находятся все хроноемкие процессы, которые нужно выполнить в фоне, но результат которых уже не будет возвращен в сформированную страницу.
Причем, можно передавать GET-параметры:

launchBackgroundProcess('wget http://yoursite.com/yourfile.php?param1=val1');

Учтите, что функция exec() очень часто пребывает в отключенном состоянии из-за режима безопасности на вашем хостинге. Если не работает — пишите в саппорт.

09
Январь
2013

PHP, SMTP и BCC. Отправка почты Гугла через PHP.

Итак, столкнулся с проблемой быстрой отправки электронной почты средствами PHP.
Встроенная функция mail() работает и вроде-бы не теряет письма. Но задержки с отправкой оставляют желать лучшего, т.к. среднее время доставки составляет около 2 минут.
Согласитесь, за две минуты пользователь может подумать, что сайт не работает и просто уйти. А когда все-таки получит уведомление (и если оно не попадет в СПАМ), то вряд ли вернется и продолжит работу.

В таких случаях нужно пользоваться отдельным SMTP сервером для быстрой и качественной отправки. Можно даже воспользоваться платными сервисами СМС-рассылок, но здесь я буду рассматривать именно бесплатный вариант. А конкретнее — почту от Google.

Эксперименты по отправке почты с SMTP я ставил на Google Apps, предварительно повесив на него один из своих доменов. Бесплатная версия позволяет зарегистрировать до 10 корпоративных почтовых ящиков вида myname@mydomain.com. Почту можно отправлять с каждого из этих ящиков, отправителем будет именно тот ящик, с которого отправили. Кое-кто считает это недостатком отдельного SMTP-сервера. Но мне и не нужно указывать произвольного отправителя. Поэтому регистрируем «красивый» е-мейл и продолжаем кодить.

Для отправки писем через PHP и гугловский SMTP я использовал компонент PEAR.
По этой теме уже многое исписано, дублировать здесь я не намерен.

От себя добавлю ту инфу, которую не так просто нарыть: правильную отправку скрытого письма BCC (blind carbon copy).

Кое-кто советует в массиве $headers прописать элемент BCC. Но мои эксперименты показали, что это не работает.

Выход: нужно создать массив получателей.

Например, так:

$recipients[«To»] = $to;

$recipients[«Bcc»] = $bcc;

А отправку производить следующим образом:   $mail = $smtp->send($recipients, $headers, $message);

Только в такой комбинации я отправил письмо получателю и сохранил резервную копию на теневом ящике.

Вот и все, о чем я хотел сказать в рамках этого Очерка.

А на заметку владельцам легендарных Крайслеров рекомендую полезную ссылку http://www.g-parts.ru/chrysler/ , посвященную ремонту, обслуживанию и диагностике этих американских каров.

 

 

 

04
Январь
2013

Полезное: регулярки

Буквально вчера столкнулся с необходимостью сформировать внешний PHP-массив из Экзелевского столбца чисел. Чисел было достаточно много.
Кто не вкурсе — объясняю. PHP-массив должен быть записан в формате
«число1″,
«число2″,

«число n»

В исходном варианте у меня не было кавычек и запятых.

Что делать? Ведь чисел много. Проставлять ручками все это = себя не уважать.

Выход: регулярные выражения.

Открываем Notepad ++ и вставляем туда исходный столбец.

Далее заходим Search — Replace и ставим селектор на Regular expression.
Сперва проставим кавычки.
В поле Find what пишем выражение (.+) , а в Replace with — «\1″ .
Давим Replace all. Вуаля: каждая строка обрела свои кавычки.

Далее простановка запятых.
В поле Find what пишем \n или \r , а в Replace with — ,.
Если все сделано правильно, то после каждого значения, после закрывающейся кавычки появится запятая.

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

Но если Вам этого покажется маловато, тогда рекомендую выполнить тюнинг Тойота прадо 150 у настоящих профессионалов. Тогда уж точно настроение выше крышы!

04
Декабрь
2012

MYSQL: меняем несколько столбцов местами

Периодически возникает необходимость подвигать столбцы таблицах SQL. Это актуально, когда нужен определенный порядок вывода элементов массива, полученных из таблиц базы данных. Либо Вам просто нужно получить заголовки столбцов в определенном порядке.
В панели управления MySQL вручную перетаскивать столбцы пока невозможно.
Но это можно сделать «ручками» через команды.
Переходим на вкладку SQL и пишем

ALTER TABLE `mytable`
MODIFY COLUMN `name` VARCHAR(255) NOT NULL AFTER `telephone`,
MODIFY COLUMN `surname` VARCHAR(255) NOT NULL AFTER `name`,
MODIFY COLUMN `company` VARCHAR(255) NOT NULL AFTER `surname`;

Эта команда построит вряд столбцы name, surname, company в аккурат после столбца telephone в таблице mytable.

Учтите: названия таблиц и колонок заключаются в обратную кавычку (расположена на Ё). При больших объёмах перемещений вся процедура может затянуться. При этом БД будет времено недоступна.

Кстати, делать эту процедуру рекомендуется с хорошим настроением и соответствующим внешним видом. Первым делом нужно сделать Глянцевание со скидкой в салоне красоты Онтарио. После такой процедуры — никакие PHP и MySQL не страшны. Точнее, не нужны :)

21
Октябрь
2012

Создание заготовок и дизайнов e-mail писем на HTML

дизайн шаблона html письмаВсем привет
Вчера стал вопрос об автоматической отправке писем посредством PHP.

На тему PHP-отправки сказано уже очень много, Гугл точно знает. Я лишь остановлюсь на дизайне e-mail письма.

Письма обладают архаичной HTML-структурой, базирующейся на таблицах. Поэтому никаких div’ов и css’ов. Только таблицы и инлайн-стили.

В Интернете есть статьи на тему ручного создания заготовок-темплейтов под письма. Там же перечисляются рекомендации, ограничения , условия использования и прочая ерунда.

Но готовых шаблонов писем мне так быстро найти не удалось.
Зато наткнулся на один зарубежный сервис, специализирующийся на рассылке писем. В его Веб-интерфейсе по адресу campaignmonitor.com/gallery/ можно найти действительно привлекательные шаблоны писем. Для использования шаблонов можно скопировать их в тело PHP-кода и вручную вписать нужный текст.

Можно поступить другим путем: зарегистрироваться на этом сайте. После регистрации Вы сможете создавать письма, выбирать шаблоны и дизайн. Также сможете формировать списки рассылок и так далее. Но, честно сказать, интерфейс сайта мне не понравился. Как по мне, он очень запутанный, отсутствует легкость, свобода и интуитивность.

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

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

Кстати, если Вам необходимо разместить объявление по Москве, могу предложить хороший сайтец Dorus.ru. Особенно меня порадовало оформление сайта и его шапки, конкретика и недвузначность рубрик, а также возможность смены регионов.
С другой стороны, администраторы доски могли бы позаботится об удобстве подачи: ниспадающий список выбора рубрик — это очень неудобный вариант. Ведь Вам нужно прокручивать список, видимая область которого очень мала. Благо, подать объявление можно из нужной рубрики, предварительно изучив предложения конкурентов… или будущих партнеров.

14
Октябрь
2012

Аккумуляторы BTY. — Дайте мне БТР!

китайские аккумуляторыНе прошло и полгода, как испортился мой фотоаппарат из-за потекших брендовых батареек Duracell.
Ранее я использовал аккумуляторы GP, которые оказались дорогими и отстойными. Больше всего доставало, когда один из четырех аккумуляторов выходил из строя, убивая работоспособность всей системы источников питания.
Еще юзал аккумы от Sony. В принципе, терпимо. Но не вспомню, куда я их потерял.

Недавно узрел на Ебае недорогие китайские аккумуляторы BTY 3000 по смешной цене, порядка 8 долляров за 12 штук. Доставка бесплатная. Хотя шли они больше месяца. Я не ждал от них чего-то выдающегося. Но и того, что получил также не ждал.

С первого прикосновения и осязания я понял: что-то здесь не чисто. Уж больно они легкие на подъем.
Процесс зарядки также протекал очень быстро. Каждому аккумулятору понадобилось порядка 20 минут чтобы полностью заправиться.

Но так как выбор сделан и любопытство донимало, решено было идти в бой. И я взял дюжину этих «патронов» с собою в Крым. Фотоаппарат — старичок Canon S3 IS.

Комплекта этих чудо-мега-емкостных аккумов хватило на снимков 50, не более. Во время похода на Аю-Даг приходилось производить замену комплекта. Хотя иногда помогала простая перестановка элементов питания между собой.

В качестве выводов могу сказать следующее:

  • BTY — типичный Китай для лоха. Но очень дешевый. Годится для комплектации продуктов, которые должны идти с аккумуляторами. Считай такой себе демо-аккумулятор
  • Если и буду покупать себе фотик — буду выбирать со встроенным Литий-Ионным или Литий-Полимерным аккумулятором. Его заряд легче отслеживать, он и сам легче при тех же параметрах.
  • Продавцу поставил нейтрально-отрицательный отзыв. За неправдивое описание товара. Так емкость этих аккумуляторов ну никак не дотягивает до 3000mAh. Кстати, на самих аккумуляторах о mAh вообще ничего не говорится. Там просто написано BTY — 3000. И думай, что хош. Я быотделил дробную часть перед последним нулем: 300,0mAh. Напомнило мощность на магнитофонах, измеряемую в PMPO или RMS.

И на последок: Продавайте или покупайте товары через доски объявлений. Вы уже сейчас можете подать бесплатное объявление в Тамбове при помощи компьютера, Интернета и фантазии. Рекомендую это сделать как можно быстрее, но не раньше, чем Вы ознакомитесь с правилами написания и подачи объявлений.

13
Октябрь
2012

Совет вечера: почему не работает <body onload=…()> и как это лечить

Задача: надо организовать автоматический запуск джаваскрипта при загрузке страницы.
Вы уже прочли о том, что можно его тупо вписать в через onload.

Например, имеем простой скрипт подсчета символов в текстовом поле

<script type="text/javascript">		
            function countChar() {
                //подсчет символов в теле объявления
               var input_1 = document.getElementById("input_1");
               text_out.innerHTML = "Введено символов: " +  input_1.value.length;
            }
</script>

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

Пишем:

<body onload="countChar();">

Должно работать сразу.
Но бывают проблемы, которые можно решить задержкой исполнения джаваскрипта.

Пишем:

<body onload="setTimeout('countChar()',101)">

101 — это задержка, которую можно регулировать под себя.
В результате получаем рабочий скрипт.

Если же выполнение скрипта не началось, возможно, у вас присутствуют конфликты библиотек и прочие неприятности. В любом случае, если скрипт выполняется по событию (onclick), то работать должен и в случае onload.

А чтобы вы не скучали при всей этой процедуре, рекомендую скачать Сумерки Сага Рассвет Часть 2 и включить в плеере в соседнем окошке. Да не достанут вас вампиры :)

02
Октябрь
2012

Ограничение GET-запросов

В ходе моих экспериментов с PHP обнаружилась интересная особенность-ограничение гет-запросов.

При попытке передать в GET-запросе строку ‘update mysql database anyword‘ сервер выдает 404 ошибку.

При общении с админами хостинга выяснилось, что это у них такая защита от возможных хакеров. Разумеется, это ограничение установлено не везде, но принять к сведению это нужно. Чтобы не ломать голову полдня в поисках ошибки в коде :(

30
Сентябрь
2012

Алгоритм поиска нечетких совпадений в PHP

Нечеткий поиск фраз в PHPВсем привет!
Сегодня речь пойдет о нечетких совпадениях в PHP.
В сети можно найти достаточно примеров поиска отдельных слов и сравнения целых текстов.
Но моя задача выглядит так: определить, принадлежит ли текст одной из Веб-страниц.
Или, наоборот: имеется Веб-страница и несколько текстов. Определить, какой текст расположен на этой Веб странице.

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

Где это нужно? Да везде. В частности, при поиске возможного плагиата, при генерации Мета-тегов и т.д.

Таким образом, мы имеем дело с двумя задачами.

  • 1. Из множества текстов найти такие, которые могут содержать искомый фрагмент;
  • 2. Выбрать тот текст, который действительно с большой вероятностью содержит искомый фрагмент текста.

Я не буду приводить здесь PHP-код. Но дам наводку, как поступать. Учтите, в РНР я недавно.

Первым делом подготавливаем две строковые переменные: одну с искомым тестом, вторую — с текстом, где нужно будет искать. Удаляем из этих строк все символы, разметку и пробелы. Т.е. оставляем две строки, состоящие только из букв и цифр русского и английского языков.

Затем ограничиваем поиск до размеров искомой строки и прогоняем циклом по всему тексту. Используем встроенную функцию levenshtein() для сравнения. Выбираем тот фрагмент, где levenshtein() дает наименьшее число. Это число показывает количество изменений, необходимых сделать для преобразования одного текста в другой.
Заносим выбранный фрагмент (длиною в искомую строку) в отдельную переменную или массив.

Имея много текстов, и упаковав все это в один большой цикл, мы сможем получить несколько значений levenshtein(). Где значение меньше — тот текст и ближе к искомому. Но ,согласитесь, не факт, что текст окажется совпадающим.

Для окончательной проверки текстов на реальную похожесть воспользуемся PHP-функцией similar_text(), которая и покажет нам в процентах сходство текстов.
В зависимости от специфики текста, можно сказать, что тексты со схожестью 80% и выше можно считать одинаковыми.

При реализации этого алгоритма нужно учитывать, что levenshtein() не работает со строками длиннее 255 символов. Так что, продумайте этот момент и разбейте на подстроки, если это нужно.
Также учтите, что перебор может занять много времени. Сократить время перебора поможет увеличение шага сравнения строк. Но здесь Вы приносите в жертву точность.
Хотя, для нечеткого поиска и точность будет нечеткой.

П.С. А ВЫ знали, что дорожные блокираторы могут быть установлены на любой дороге и смогут задержать даже военную технику?