Все публикации
Шагает время листопада +2
Разное
Доброе время суток. Я тут подумал: раз в "Разное" выкладывают все подряд, почему и мне не выложить,к примеру,стихи? Буду на досуге выкладывать и буду благодарен за теплые отзывы. Если конечно такие будут)))
Шагает время листопада,
С деревьев падает листва
И опускаясь в ритме вальса,
Их кружат медленно ветра.
Земля укрылась покрывалом,
Сквозь ветви голые скользит
Чуть теплый луч от Солнца
Хотя и он уж холодит.
Теперь длиннее стали ночи.
В объятьях лунной тишины,
Под шорох тех,уже упавших
Танцуя падают листы.
Шагает время листопада
И с дерев осыпалась листва,
Их опуская в ритме вальса
Кружили медленно ветра.
Как выбрать хостинг? -6
Хостинги
Как выбрать хостинг?
В наши дни в Интернете работают сотни хостинг-провайдеров. Плюс ситуации - обширный выбор услуг, но не все так просто. Дело в том, что многие из них представляют собой школьников или студентов, арендовавших, например, в Голландии самый дешёвый сервер и решивших подзаработать в период каникул. У таких «хостеров» нет ни лицензий, ни адекватной поддержки, ни тем более офиса. То есть, если что-то случится с вашими сайтами или в один «прекрасный» день они просто перестанут работать, пожаловаться будет особо некому.
Здесь собраны основные моменты, которые стоит учитывать при выборе хостинга сайта:
Первое, что необходимо сделать — определиться с параметрами хостинга: какое количество сайтов вам нужно разместить, какой объем дискового пространства им требуется и сколько вы готовы за это платить. Выберите компании, которые подходят под эти запросы.
Хостинг-компания должна работать не первый день, то есть иметь хотя бы несколько десятков клиентов, доверивших им свои сайты. Узнать это можно запросив данные у поддержки, либо через Whois доменов.
Рекомендуется, чтобы у выбранной вами хостинговой компании был физический адрес (офлайновый офис). Ищите на сайте разделы «О компании», «Контакты», «Лицензии» и т.п.
Перед заказом хостинга пообщайтесь со службой технической поддержки. Ответы, как по ICQ и онлайн-чату на сайте, так по электронной почте и тикет-системе, должны приходить в разумные сроки, быть полезными и грамотными.
Если заинтересовавшая вас хостинговая компания предлагает бесплатный тестовый период, то не пренебрегайте возможностью им воспользоваться. За отведенные 5−20 дней вы сможете понять, как будет работать на нем ваш сайт и подходит ли вам этот хостинг.
Большинство хостинг-провайдеров при заказе у них услуг дают в подарок домен для вашего сайта. Уточните на чьё имя он будет зарегистрирован и сколько будет стоить его продление в дальнейшем. Скорее всего через год вам придётся отдать за него около 500 рублей — в таком случае от этого «бонусного домена» лучше вообще отказаться. Домены .RU лучше регистрировать самостоятельно, например, на хостинге Pride-host.ru от 99 рублей.
Обратите внимание на дизайн сайта хостинг-компании. Если на нем присутствуют стандартные шаблонные элементы (типа кнопок «Оператор онлайн» и т.п.), если он неаккуратен и сделан кое-как, вполне вероятно, что и услуги такого «провайдера» будут такими же некачественными.
Исходя из этой статьи мы нашли подходящий под все вышеперечисленные условия хостинг. Поддержка работает 24/7, отвечают быстро как в биллинге, так и по почте.
Никаких «левых» названий или услуг. Все четко, понятно и просто. Именно за это нам и приглянулся данный проект. Хотелось бы выделить, что у них присутствуют акции, сейчас это логотип по вашему ТЗ (тех. заданию) и домен .ru или .рф с последующим продлением в 99 рублей/год.
В заключение хотелось бы сказать, что при выборе хостинга стоит смотреть и на отзывы клиентов. Их можно поискать на таких проектах, как Hostdb.
Модульное тестирование +3
ООП
Введение
Модульное тестирование это то, чем вы пользуетесь постоянно во время разработки и даже не замечаете этого. В процессе написания кода вы по многу раз запускаете его, чтобы убедится в том, что он работает ожидаемым образом. Так почему бы не автоматизировать этот процесс? Для этих целей применяется "Автоматизированное модульное тестирование" (АМТ) и "Модульные тесты".
АМТ решает следующие важные задачи:
* Позволяет выявить ошибку на раннем этапе разработки, до того, как код уйдет в работу. Своевременное выявление ошибки так же упрощает ее локализацию и исправление
* Позволяет быстро удостоверится в том, что вносимые в систему изменения не поломали старый код
* Облегчает процесс изучения системы новыми разработчиками
Но не следует забывать, что АМТ, как и код системы, требует поддержки и модернизации, что отнимает время у разработчика.
Фреймворк xUnit, часто применяется для создания АМТ во многих языках программирования. Для PHP так же существует его разновидность - PHPUnit. Работу с ним я и опишу в данной статье.
Установка PHPUnit
Для установки фреймворка PHPUnit воспользуйтесь следующей командой (для Linux систем):
wget https://phar.phpunit.de/phpunit.phar chmod +x phpunit.phar mv phpunit.phar /usr/local/bin/phpunit
Эта команда загрузит фреймворк, распространяемый в виде PHAR-пакета, предоставит ему права на выполнение и переместит его в соответствующий каталог.
Основы модульного тестирования
АМТ представляет собой множество классов, каждый из которых тестирует конкретную логику системы. Все эти классы должны наследоваться от базового класса PHPUnit_Framework_TestCase и содержать один или более методов, имя которых начинается с test.
Рассмотрим пример создания собственного класса для автоматизированного модульного тестирования. Представим что у нас есть следующий класс, реализующий простой стек:
class MyStack implements Countable{
private $store;
public function __construct(){
$this->store = [];
}
public function push($value){
array_push($this->store, $value);
}
public function pop(){
return array_pop($this->store);
}
public function count(){
return count($this->store);
}
}
Для тестирования этого класса мы используем следующий модульный тест:
class MyStackTest extends PHPUnit_Framework_TestCase{
public function testConstruct(){
$stack = new MyStack();
$this->assertEquals(0, count($stack));
}
public function testPush(){
$stack = new MyStack();
$stack->push(5);
$this->assertEquals(1, count($stack));
}
public function testPop(){
$stack = new MyStack();
$stack->push(5);
$this->assertEquals(5, $stack->pop());
$this->assertEquals(0, count($stack));
}
}
Все что вам нужно знать, для понимания этого кода, это метод assertEquals. Он является частью любого модульного теста и проверяет, равен ли первый аргумент второму, и если нет, то тест считается не пройденным.
Для запуска этого теста выполните команду:
phpunit MyStackTest.php
Шаблоны тестирования
Применяя АМТ старайтесь использовать следующие шаблоны:
* Структурируйте тесты - помните, что любой тест всегда состоит из предусловий, вызова и проверки постусловий
public function testPop(){
// Предусловия
$stack = new MyStack();
// Вызов
$stack->push(5);
// Проверка постусловий
$this->assertEquals(5, $stack->pop());
$this->assertEquals(0, count($stack));
}
* Понятные имена для тестов - старайтесь именовать методы теста так, чтобы было понятно, что они проверяют. Так, метод testPop можно было бы переименовать в testPop_shouldSliceCurrentStackValue* Применение фабрик в тесте - если в одном тесте вы часто создаете один и тот же объект, выделите его состояние в метод-фабрику. Так, код $stack = new MyStack можно было бы обернуть в метод createStack и использовать в тестах следующим образом: $stack = $this->createStack()
* Не проверяйте с помощью тестов внутреннюю логику класса, только постусловия. Другими словами тесту не нужно знать как именно работает класс, достаточно проверить, что при некоторых предусловиях и вызове всегда достигаются данные постусловия
* Не повторяйтесь. Как и при разработке приложения, старайтесь не заниматься "программированием через копипаст" во время написания тестов. Помните, что вы должны их сопровождать, а повторяющийся код сделает сопровождение сложным
* Пишите тесты так, чтобы после их прочтения было понятно, что делает тестируемый класс. Запомните - тесты это особая документация, отвечающая на вопрос: "Что должен и что не должен делать класс"
Послесловие
Я намерено упростил статью, выбросив из нее множество важных деталей, таких как Mock-объекты и тестирование исключений. Если вас заинтересовала тема модульного тестирования, обязательно обратитесь к следующей литературе:
* http://www.ozon.ru/context/detail/id/1501671/
* http://www.ozon.ru/context/detail/id/4127815/
Очередной костыль экранирования mysqli запросов +3
PHP
Доброе утро!
костыль
<?php
class MysqliEsc {
protected $link = null;
public function __construct($host, $user, $password, $database, $port = 3306, $socket = null) {
$this->link = new \mysqli($host, $user, $password, $database, $port, $socket);
}
/**
*
* @param string $sql sql запрос вида select * from таблица where поле = (%s, %i...)
* @param array $params Массив!!! с параметрами (параметром)
* @return \mysqli_result
*/
public function query($sql, array $params = []) {
if ($params) {
$sql = vsprintf($sql, array_filter($params, function ($param){
return $this->link->real_escape_string($param);
}));
}
return $this->link->query($sql);
}
}
Использование
<?php
$db = new MysqliEsc('localhost', 'root', '', 'silex');
var_dump($db->query('select * from users where id = %i', [1])->fetch_array());
вернет
array (size=22)
0 => string '1' (length=1)
'id' => string '1' (length=1)
1 => string 'srv16rus@gmail.com' (length=18)
'email' => string 'srv16rus@gmail.com' (length=18)
2 => string 'HQZgK/c3tX6LXvqaPZowmQ+uyKtr4HjjMs9QMe6ZNYx6GHTa+hOV06N/tm7DSWqRFJLhiC+WySIVoZmnrzqGzg==' (length=88)
'password' => string 'HQZgK/c3tX6LXvqaPZowmQ+uyKtr4HjjMs9QMe6ZNYx6GHTa+hOV06N/tm7DSWqRFJLhiC+WySIVoZmnrzqGzg==' (length=88)
3 => string 'lapn8gh0q1ccww0so4g8k4oog80soc0' (length=31)
'salt' => string 'lapn8gh0q1ccww0so4g8k4oog80soc0' (length=31)
4 => string 'ROLE_USER' (length=9)
'roles' => string 'ROLE_USER' (length=9)
5 => string 'mmmmmmmmmmm' (length=11)
'name' => string 'mmmmmmmmmmm' (length=11)
6 => string '1419016035' (length=10)
'time_created' => string '1419016035' (length=10)
7 => null
'username' => null
8 => string '1' (length=1)
'isEnabled' => string '1' (length=1)
9 => null
'confirmationToken' => null
10 => null
'timePasswordResetRequested' => null
UPD Предложение от Башка:
<?php
class MyMysqli extends mysqli{
public function myQuery($query, $params){
$stmt = $this->prepare($query);
$p = array_values($params);
array_unshift($p, array_keys($params));
call_user_func_array([$stmt, 'bind_param'], $p);
$result = $stmt->execute();
$stmt->close();
return $result;
}
}
$mysql = new MyMysqli("localhost", "my_user", "my_password", "world");
$mysql->myQuery('SELECT * FROM users WHERE login = ?', ['s' => 'admin']);
одностраничники приносящие доход -1
Заработок
И так, дети мои. Решили заработать немного денежек? Сейчас я вам расскажу как это сделать на одностраничнике.
Сперва решаем как будем монетезировать, способов много. СРА, файлообменники, платные архивы. Это при раскладе того что мы будем делать не сдл, а именно одностраничник под нч для заработка.
Идём в вордстат, ищем нч низко конкурентный, под него делаем шаблон, не стоит брать паблик, или хотя бы переделайте его, яша быстрее его полюбит. Пишем текст с ключевиками (2-3) вхождения, 1000-1500 Символов. Снизу разборчивая кнопка скачать/заказать в зависимости от способа монетизации. Дальше заливаем ссылку в твиттер, чтобы яшка проиндексировал наш сайт. Можно оставить пару ссылок в блогах, прогнать по соцкам.
Один парень имеет 100 таких сайтов и монетезирует через ФО, 67 сайтов из ста в топе по нч, общий объём трафика 1000-1500 в день. Прибыль за 40 дней составила +-900$
Этот способ подойдёт для новичков, я же советую создать 1 сдл с 1000 страниц под нч и зарабатывать на ггл, сапе, тизерках . сдл вечен, если не борщить с рекламой, а вот одностраничники под ключи нет.
Расписал бы всё подробнее, но с мобилы это не реально
Школота негодуЭт -2
Разное
Как-то раз в одной из далеких-далеких галактик. В недалеком для нас 2009 году. Один 15 летний ушл*пок подал гениальную (по его мнению) идею своему 16 летнему другу ушл*пку о том, как можно грести бабло в интернете чуть ли не лопатой. И весь труд состоял лишь создании г*вносайтов и дальнейшей их продаже л*хам. Но наши ушл*пки и подумать не могли, что таких же у*бков, как они, почти весь "тырнет". Они ж ведь были уверены что они одни такие уникальные и умные, что додумались до этого. Но "тупая" школота, как известно никогда не задумывается о важных деталях любой работы или профессии. И потому наши горе-герои просто горели оптимизмом. Им бы позавидовал даже Стив мать его Джобс ! Им грезилось, как уже на следующий день они проснутся мультимиллиардерами, владельцами самых-самых п*здатых соц. сетей, что даже Марк Цукерберг им будет целовать задницу) Но что-то бл*дь не заладилось у них. И снова вместо работы над своими ошибками и переосмысления о труде и вознаграждении, наши герои сделали твердый вывод, что это мир ополчился против них. Да-да, вот так, весь гр*банный мир видите ли не позволял им войти в историю влиятельных и богатых людей))) Очень быстро, надежда вера в успех у первого ушл*пка иссякла и желания что-то делать дальше пропало. Второй же ушл*пок продолжал клепать г*вносайты с некой долей одержимости. Ну, не мог ду*ачок отпустить эту мечту. Он все еще болел этой мечтой. В его больном воображении продолжала играть сценка где он в огромной яхте в окружении гарема красавиц, которые делают ему "хорошо"))) Почти сутки просидел наш глупец за ноутбуком своего отца устанавливая голые бесплатные движки, а затем пичкая на свой г*вносайтики различный мусор без какой либо определенной тематики. Он просто брал и загружал фильмы низкого качества, убогие гифки и картинки, музыку с низкими битрейтами (лишь бы весили немного думал он), а также тонны порнографии даже не задумываясь над тем, что их может обнаружить отец если зайдет посмотреть историю посещенных страниц, но нашего подростка это них*я не волновало. И уже к полуночи порядком устав он выключил ноутбук и лег спать. А проснувшись утром он первым же делом ринулся было к ноутбуку, но его не было на месте. Поняв, что сесть за нотик он сможет только вечером, ибо его забрал с собой батя на работу. Нашему юнцу пришла неплохая идея, что он может посмотреть свои "шедевры" и в интернет-клубе. Но для начала он направился в туалет, чтобы совершить свой обыденный ритуал с которого начиналось его каждое утро. Через пять минут он уже сидел на крышке унитаза с блаженным лицом и довольной улыбкой вытирая туалетной бумагой бледную слизь со своей натертой красной ладони.
Продолжение следует...
Аквариум - это ваш кусочек океана -10
Разное
Существование аквариума накладывает на владельцев квартиры неизбежную поруку. Зачастую, не что иное как аквариум занимает важное пространство в любом интерьере, а поэтому, его убранство должно смотреться безупречным.
Допустим, что вам посчастливилось заказать аквариум в интернет-магазине, докупить нужное оборудование. Не урегулированным оказывается только один вопрос – декорирование. Не имеет значения, какой именно формы аквариум вы заказали: круглый аквариум из акрила или квадратный из силикатного стекла. Самое важное, подобрать такие детали декора, которые будут выглядеть естественно в сложившейся фауне.
При выборе искусственных компонентов, стоит узнавать поведенческие мотивы рыб, обусловленные их естественным местом проживания. Невзирая на факт, что рыбы были выращены в закрытом пространстве, их поведение останется отголоском природных инстинктов.
Какие декоративные детали приобрести?
Коралловые рифы для аквариума, коралловые конструкции. Это украшение монтируется напрямую в чаше аквариума, и отлично совмещается с разного рода барельефами, растительностью и иными вариантами.
Из чего выполнены части декора?
По большей части, из экологически чистых композитных элементов. Даже после частого использования такие вещества не выделяют в воду химикатов, которые могут плохо подействовать на образ жизни рыбок или прочих подводных обитателей.
Выгода коралловых рифов из композитов:
- надежность;
- экологичность;
- элементарный уход;
- невысокая стоимость и, как результат, возможность постоянной смены конструкций для обновления дизайна аквариума.
Уход за аквариумом
В случае, если вы собираетесь наслаждаться подводным царством аквариума как можно больше, нужно будет обеспечить частый уход за организацией в аквариуме порядка.
Из каких частей состоит уход?
- Поддержание чистоты аквариума.
- Осмотр здоровья обитателей.
- Исправное питание, лечение.
- Жизнеспособность флоры.
- Починка неполадок с оборудованием.
Все эти мероприятия могут быть направлены специалисту, который начнет проводить плановое обслуживание и проведет срочные мероприятия в рамках абонентской платы. Источник http://pervostat.ru/.
Зачем нужен линукс +8
Разное
Вот зачем нужен Линукс. С одного женского форума:
Много перечитывала форум, про все эти мужские ухищрения: стирает смски, второй мобильник заводит, ставит в компьютере пароли, ходит с телефоном в туалет и в ванную...только чтобы скрыть свои подлые делишки!!! Но мой пошел дальше.Все началось с того, что он купил мне маленький ноутбук, красивого белоснежного цвета, сделал в квартире вай-фай. Это для того, чтобы ты могла чаще находится в Интернете и смотреть порно оналйн -- говорил он. Я сначла обрадовалась как дура. Много времени сидела в интернете. Как-то раз захотела залезть в его компьютер.Для профилактики )))) НО!!!! ЭТОТ *** все там переделал!!! я даже не поняла сначала!! Все по другому было!! Одна подруга, у которой муж сисадмин, сказал, что мой ненаглядный поставил Линукс!! Когда я его спросила, зачем ты это сделал!?? Он ответил, что Линукс ему удобнее!! На самом деле же он это специально сделал, чтобы я не смогла ВООБЩЕ пользоваться его компьютером! Мало того, в мобильнике теперь тоже все по-другому, говорит что ИЗМЕНИЛ ПРОШИВКУ!! Теперь там совершенно не понятно как смотреть смски и сделанные вызовы, причем я точно знаю, что он шляется со своими дурами с работы!! А поймать я его теперь не могу!!! ПОМОГТЕ!! ЧТО ДЕЛАТЬ??!!!!!!!
301 редирект при переезде +5
SEO
Очень важно настроить правильно 301 редирект при переезде на новый домен, что бы сохранить все показатели.
1.Для склейки доменов для яндекса важно что бы файлы robots.txt на обоих сайтах были идентичными, тогда домен склеивается за 1 - 2 выдачи, придет сообщение на яндекс вебмастер.
Пример
User-agent: Yandex Disallow: Host: www.newsite.comТак будет выглядеть robots.txt на обоих сайтах
2. Настраиваем непосредственно сам 301 редирект, прописываем в файле .htaccess
RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]
RewriteRule ^([^/]+) $1 [L]
RewriteCond %{HTTP_HOST} !^www.site.com [NC]
RewriteRule ^(.*)$ http://www.newsite.com$1 [R=301,L]
На файл robots.txt редирект не настраивается, он исключается и должен быть доступен по адсресу старого домена/ Проверить доступность можно в яндекс вебмастере. Если все сделано правильно домены будут склеены.
Google повышает сайты с HTTPS в выдаче +1
SEO
Google начнёт использовать HTTPS в качестве фактора положения сайта в своей поисковой выдаче — этот шаг должен побудить измениться веб-разработчиков, которые не спешили с повышенными мерами безопасности или которые сомневались, насколько это важно для их сайта,
Поддержка HTTPS не будет иметь такого же веса, как например качество контента, и в первое время новый критерий будет затрагивать не более 1 % всех глобальных запросов — таким образом Google даёт веб-мастерам время на переход на HTTPS. Однако со временем эффект шифрования на поисковую выдачу будет усиливаться, по мере того как компания уделяет всё большее значение безопасности сайтов.
Google также обещает опубликовать серию статей об эффективном применении TLS (HTTPS также известен как HTTP над TLS или Transport Layer Security), так что разработчики сайтов смогут лучше понять, что они должны сделать для того, чтобы реализовать технологию, и каких ошибок можно избежать. Эти советы будут включать такие вопросы, как какой тип сертификата необходим, как использовать относительные URL-адреса для ресурсов на том же защищённом домене, передовой опыт по индексации сайтов и многое другое.
Кроме того, Google советует веб-разработчикам проверить свои сайты с HTTPS с помощью инструмента Qualys Lab ,В случае возникновения вопросов компания предлагает обращаться в свой где её сотрудники уже участвуют в активных дискуссиях с сообществом.
Объявление привлекло много откликов от разработчиков сайтов и участников SEO-отрасли — например, ссылок в блоге Google набрал больше 1000 комментариев. По большей части, сообщество, кажется, поддерживает нововведение или по крайней мере признаёт, что они ожидали чего-то подобного и не удивлены.
Сам Google в последние месяцы предпринимал шаги, чтобы лучше защитить собственный трафик, в том числе включив шифрование трафика между своими серверами. Gmail mafoz.com также теперь всегда использует зашифрованное HTTPS-соединение, что защищает письма от перехвата на пути между компьютером пользователя и серверами Google. HTTPS и шифрование сайтов существуют уже многие годы, но, видимо, последние разоблачения о государственных масштабах слежки за пользователями наконец-то подталкивают сообщество к повышенному вниманию к своей безопасности.
