6 сентября 2013 г.
СпецАвто - Аренда спецтехники в К
СпецАвто - Аренда спецтехники в К: СпецАвто - Аренда спецтехники в Киеве, Хорькове, Донецке. Аренда самосвала, экскаватора, погрузчика и другой техники.
2 сентября 2013 г.
Acer Liquid Galant Duo
Аппаратный WIPE
> Выключите телефон, затем нажмите и удерживайте кнопку питания, пока не почувствуете вибрацию смартфона и/или пока не откроется экран с логотипом Acer. Нажмите и удерживайте кнопки увеличения и уменьшения громкости. Нажимая кнопку увеличения громкости, выберите "Чистая загрузка: Да. Для подтверждения нажмите кнопку камеры."
acer-club.ru/topic/12492-%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC-%D0%B5%D1%81%D0%BB%D0%B8-%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80-%D0%BD%D0%B5-%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B6%D0%B0%D0%B5/page__st__30
> Выключите телефон, затем нажмите и удерживайте кнопку питания, пока не почувствуете вибрацию смартфона и/или пока не откроется экран с логотипом Acer. Нажмите и удерживайте кнопки увеличения и уменьшения громкости. Нажимая кнопку увеличения громкости, выберите "Чистая загрузка: Да. Для подтверждения нажмите кнопку камеры."
acer-club.ru/topic/12492-%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC-%D0%B5%D1%81%D0%BB%D0%B8-%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80-%D0%BD%D0%B5-%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B6%D0%B0%D0%B5/page__st__30
1 сентября 2013 г.
Замена хостинга на digitalocean.com
Пришло время и мне понадобились различные плюшки в виде доступа по ssh к серверу и git.
Необходимо было выбрать что-то недорогое и удобное.
Лучше чем Digital Ocean я ничего не нашел. Сервер настраивается быстро. Установка четкая и продуманная. Цены приемлемые.
У Digital Ocean обширное комьюнити. Есть много полезных статей и туториалов. В принципе, если английский вам не чужд, решение любой проблемы можно найти в статьях.
Лично у меня при установке по всем рекомендациям никаких проблем не возникло. Все завелось с первого раза. Надеюсь что и у вас все получится без проблем.
И напоследок совет. Если у вас нет необходимости в постоянно включенном сервере, то можно сэкономить немного денег. Для этого (все действия выполняются в панели управления DigitalOcean):
1. Выключаем сервер - для этого заходим в свой дроплет и выключаем его (Power Off).
2. Переходим в раздел Images и создаем Snapshot своего дроплета.
3. Удаляем дроплет.
За хранение Snapshot Digital Ocean берет 2 цента в месяц за гигабайт. И больше никакая плата не берется. Восстановить дроплет из снимка дело 1 минуты.
Внимание!!!
Ссылки на Digital Ocean в статье реферальные. Если Вам помогла эта заметка переходите по этим ссылкам.
Если вам эта заметка не помогла, можете смело идти по прямой ссылке.
Необходимо было выбрать что-то недорогое и удобное.
Лучше чем Digital Ocean я ничего не нашел. Сервер настраивается быстро. Установка четкая и продуманная. Цены приемлемые.
У Digital Ocean обширное комьюнити. Есть много полезных статей и туториалов. В принципе, если английский вам не чужд, решение любой проблемы можно найти в статьях.
Кратко по установке:
Настройка имени хоста (добавление домена)Лично у меня при установке по всем рекомендациям никаких проблем не возникло. Все завелось с первого раза. Надеюсь что и у вас все получится без проблем.
И напоследок совет. Если у вас нет необходимости в постоянно включенном сервере, то можно сэкономить немного денег. Для этого (все действия выполняются в панели управления DigitalOcean):
1. Выключаем сервер - для этого заходим в свой дроплет и выключаем его (Power Off).
2. Переходим в раздел Images и создаем Snapshot своего дроплета.
3. Удаляем дроплет.
За хранение Snapshot Digital Ocean берет 2 цента в месяц за гигабайт. И больше никакая плата не берется. Восстановить дроплет из снимка дело 1 минуты.
Внимание!!!
Ссылки на Digital Ocean в статье реферальные. Если Вам помогла эта заметка переходите по этим ссылкам.
Если вам эта заметка не помогла, можете смело идти по прямой ссылке.
28 августа 2013 г.
mongodb aggregate doctrine
//db.PageSerp.aggregate({$match: {page_id: "521cbb536803fade44000016"}}, {$group: {_id: "$keyword_id"}}, {$skip: 4}, {$limit: 2}); /** @var Connection $conn */ $conn = $this->get('doctrine_mongodb')->getConnection(); /** @var \MongoClient $mongo */ $mongo = $conn->getMongo(); if(!$mongo){ $conn->connect(); $mongo = $conn->getMongo(); } /** @var \MongoCollection $coll */ $coll = $mongo->selectDB('nt-us')->selectCollection('PageSerp'); $ops = array( array( '$match' => array('page_id' => '521cbb536803fade44000016'), ), array( '$group' => array('_id' => '$keyword_id'), ), array('$skip' => 2), array('$limit' => 2), ); $res = $coll->aggregate($ops);
19 августа 2013 г.
Установка дополнений для гостевой ОС в VirtualBox
Установка дополнений для гостевой ОС в VirtualBox
Итак, для установки дополнений просто установите несколько пакетов с помощью данной команды:
sudo apt-get install virtualbox-guest-additions virtualbox-guest-dkms virtualbox-guest-x11 virtualbox-guest-utils
После установки пакетов перезагрузите виртуальную машину.
25 июля 2013 г.
Doctrine MongoDB
Проблема
Есть у меня документ такого типа
я делаю удаление парочки se из документа
И сразу же вывод оставшихся se
в итоге получаю
Хотя в базе данные изменились (удалились), получаю я данные без изменений. Долго ковырялся, пока не воспользовался
Это помогло.
Есть у меня документ такого типа
{ "id": "51e939fa6803fa4a05000001", "user_id": 1, "site_id": 16, "url": "www.example.com/en/", "keywords": [ "keyword and 4" ], "se": [ "Google", "Bing Russia", "Google Canada", "Yahoo Australia" ] }
я делаю удаление парочки se из документа
$SiteManager->removeSearchEngines($Site, $externalSe);
И сразу же вывод оставшихся se
$Site->getSe()
в итоге получаю
[ "Google", "Bing Russia", "Google Canada", "Yahoo Australia" ]
Хотя в базе данные изменились (удалились), получаю я данные без изменений. Долго ковырялся, пока не воспользовался
$SiteManager->docManager->refresh($Site);
Это помогло.
Сервис отправки СМС/SMS для программистов
Недавно наткнулся на интересный сервис отправки sms-сообщений. Сервис предоставляет API, которое позволяет интегрировать отправку сообщений в свой сайт.
Тарифы у сервиса довольно вкусные. Решил воспользоваться данным сервисом. Сейчас как раз пишу один проект, думаю интегрировать отправку sms -сообщений в него.
Сервис называется SMS.RU. При регистрации в сервисе по этой ссылке http://micro.sms.ru получите скидку 10%.
Сервис достаточно удобный. Техподдержка отзывчивая. Цены приемлемые (дешевле я не нашел) .
Пользуйтесь, рекомендую.
Тарифы у сервиса довольно вкусные. Решил воспользоваться данным сервисом. Сейчас как раз пишу один проект, думаю интегрировать отправку sms -сообщений в него.
Сервис называется SMS.RU. При регистрации в сервисе по этой ссылке http://micro.sms.ru получите скидку 10%.
Сервис достаточно удобный. Техподдержка отзывчивая. Цены приемлемые (дешевле я не нашел) .
Пользуйтесь, рекомендую.
23 июля 2013 г.
Doctrine Mongodb Запросы(find, insert, update,remove)
find() Запрос по id
$users = $dm->find(‘User’, $id);
$user = $dm->getRepository(‘User’)->find($id);
findBy – Находит множество документов по запросу
$users = $dm->getRepository(‘User’)->findBy(array(‘type’ => ‘employee’));
findOneBy – Находит Один документ по запросу
$user = $dm->getRepository(‘User’)->findOneBy(array(‘username’ => ‘jwage’));
createQueryBuilder() создать новый запрос.
$qb = $dm->createQueryBuilder(‘User’);
getQuery() исполнить запрос на получение
$qb = $dm->createQueryBuilder(‘User’);$query = $qb->getQuery();
execute() исполнить запрос, возвращает курсор для итерации
$users = $query->execute();
getSingleResult() возвращает единственный результат по запросу
$user = $dm->createQueryBuilder(‘User’)
->field(‘username’)->equals(‘jwage’)
->getQuery()
->getSingleResult();
select() выбрать определенные поля
$qb = $dm->createQueryBuilder(‘User’)
->select(‘username’, ‘password’);
$query = $qb->getQuery();
$users = $query->execute();
distinct() получить не повторяющие значения
$ages = $dm->createQueryBuilder(‘User’)
->distinct(‘age’)
->getQuery()
->execute();
hydrate() возвращает масив вместо объектов
$users = $dm->createQueryBuilder(‘User’)
->hydrate(false)
->getQuery()
->execute();
limit() количество возвращаемых заспросов skip() смещение
$blogPosts = $dm->createQueryBuilder(‘BlogPost’)
->limit(20)
->skip(40)
->getQuery()
->execute();
sort() сортировка вывод
$qb = $dm->createQueryBuilder(‘Article’)
->sort(‘createdAt’, ‘desc’);
если необходима дополнительная сортировка
$query->sort(‘featured’, ‘desc’);
map() reduce()
$qb = $this->dm->createQueryBuilder(‘Event’)
->field(‘type’)->equals(‘sale’)
->map(‘function() { emit(this.userId, 1); }’)
->reduce(«function(k, vals) {
var sum = 0;
for (var i in vals) {
sum += vals[i];
}
return sum;
}»);
$query = $qb->getQuery();
$results = $query->execute();
where()
$qb = $dm->createQueryBuilder(‘User’)
->where(«function() { return this.type == ‘admin’; }»);
field() поле
equals() равно
$qb = $dm->createQueryBuilder(‘User’)
->field(‘type’)->equals(‘admin’)
->field(‘active’)->equals(true);
in(array()) равно одному из значений
$qb = $dm->createQueryBuilder(‘Article’)
->field(‘tags.name’)->in(array(‘tag1′, ‘tag2′));
notIn(array()) не равно множеству
$qb = $dm->createQueryBuilder(‘Article’)
->field(‘tags.name’)->notIn(array(‘tag3′));
notEqual() не равно
$qb = $dm->createQueryBuilder(‘User’)
->field(‘type’)->notEqual(‘admin’);
gt() больше
$qb = $dm->createQueryBuilder(‘Account’)
->field(‘amount_due’)->gt(30);
gte() больше или равно
$qb = $dm->createQueryBuilder(‘Account’)
->field(‘amount_due’)->gte(30);
lt() меньше
$qb = $dm->createQueryBuilder(‘Account’)
->field(‘amount_due’)->lt(30);
lte() меньше или равно
$qb = $dm->createQueryBuilder(‘Account’)
->field(‘amount_due’)->lte(30);
range(10, 20) более 10 и меньше 20
$qb = $dm->createQueryBuilder(‘Account’)
->field(‘amount_due’)->range(10, 20);
size(0) размер массива
$qb = $dm->createQueryBuilder(‘Article’)
->field(‘comments’)->size(0);
exists(true) проверяет поле на наличие
$qb = $dm->createQueryBuilder(‘User’)
->field(‘login’)->exists(true);
type(‘integer’) проверяет тип поля возможные значения Double String, Object, Array, Binary data, Object id, Boolean, Date, Null, Regular expression, JavaScript code, Symbol, JavaScript code with scope, 32-bit integer, Timestamp, 64-bit integer, Min key, Max key
$qb = $dm->createQueryBuilder(‘User’)
->field(‘type’)->type(‘integer’);
all(array()) Должны возвращать все значения равны условиям
$qb = $dm->createQueryBuilder(‘User’)
->field(‘groups’)->all(array(‘Group 1′, ‘Group 2′));
mod(‘field’, array()) определяет остаток от деления
$qb = $dm->createQueryBuilder(‘Transaction’)
->field(‘field’)->mod(‘field’, array(10, 1));
set($name, $value, $atomic = true) обновляет значение
$dm->createQueryBuilder(‘User’)
->field(‘password’)->set(‘newpassword’)
->field(‘username’)->equals(‘jwage’)
->getQuery()
->execute();
setNewObj($newObj)
$dm->createQueryBuilder(‘User’)
->setNewObj(array(
‘username’ => ‘jwage’,
‘password’ => ‘password’,
// … other fields
))
->field(‘username’)->equals(‘jwage’)
->getQuery()
->execute();
inc($name, $value) увеличивает значение поля
$dm->createQueryBuilder(‘Package’)
->field(‘id’)->equals(‘theid’)
->field(‘downloads’)->inc(1)
->getQuery()
->execute();
unsetField($`field) удаляет поле
$dm->createQueryBuilder(‘User’)
->field(‘login’)->unsetField()->exists(true)
->getQuery()
->execute();
push($field, $value) добавляет новое значение в массив
$dm->createQueryBuilder(‘Article’)
->field(‘tags’)->push(‘tag5′)
->field(‘id’)->equals(‘theid’)
->getQuery()
->execute();
pushAll($field, array $valueArray) Добавляет несколько значений
$dm->createQueryBuilder(‘Article’)
->field(‘tags’)->pushAll(array(‘tag6′, ‘tag7′))
->field(‘id’)->equals(‘theid’)
->getQuery()
->execute();
addToSet($field, $value) добавляет в массив значение если его нет в массиве
$dm->createQueryBuilder(‘Article’)
->field(‘tags’)->addToSet(‘tag1′)
->field(‘id’)->equals(‘theid’)
->getQuery()
->execute();
addManyToSet($field, array $values) Добавляет несколько значений в массив если их нет в массиве
$dm->createQueryBuilder(‘Article’)
->field(‘tags’)->addManyToSet(array(‘tag6′, ‘tag7′))
->field(‘id’)->equals(‘theid’)
->getQuery()
->execute();
popFirst($field) удаляет первый элемент в массиве
$dm->createQueryBuilder(‘Article’)
->field(‘tags’)->popFirst()
->field(‘id’)->equals(‘theid’)
->getQuery()
->execute();
popLast($field) удаляет последний элемент в массиве
$dm->createQueryBuilder(‘Article’)
->field(‘tags’)->popLast()
->field(‘id’)->equals(‘theid’)
->getQuery()
->execute();
pull($field, $value) удаляет все элементы массива с данным значением
$dm->createQueryBuilder(‘Article’)
->field(‘tags’)->pull(‘tag1′)
->getQuery()
->execute();
pullAll($field, array $valueArray) удаляет все значения в массиве
$dm->createQueryBuilder(‘Article’)
->field(‘tags’)->pullAll(array(‘tag1′, ‘tag2′))
->getQuery()
->execute();
remove() Удаляет документ из коллекции
$dm->createQueryBuilder(‘User’)
->remove()
->field(‘num_logins’)->equals(0)
->getQuery()
->execute();
group(array(), array(‘count’ => 0)) выполняет операцию аналогичной SQL’s GROUP BY
$result = $this->dm->createQueryBuilder(‘DocumentsUser’)
->group(array(), array(‘count’ => 0))
->reduce(‘function (obj, prev) { prev.count++; }’)
->field(‘a’)->gt(1)
->getQuery()
->execute();
10 января 2013 г.
RegExp
Удалить лишние пробелы из текста
$name= preg_replace("/\s{2,}/"," ",$name);
-------------------------------------------------
* Clean url as site URL
* Remove schema part and "www" part from the url
* Remove all path information. Keep only domain information.
* Exaple:
* input url: http://www.example.com/path?param#hash
* result: exaple.com
$trimedUrl = trim($url);
$cleaned = preg_replace('|^(?:\w+?://)?(?:www\.)?([^/]+)/?|i', '$1', $trimedUrl);
-------------------------------------------------
$name= preg_replace("/\s{2,}/"," ",$name);
-------------------------------------------------
* Clean url as site URL
* Remove schema part and "www" part from the url
* Remove all path information. Keep only domain information.
* Exaple:
* input url: http://www.example.com/path?param#hash
* result: exaple.com
$trimedUrl = trim($url);
$cleaned = preg_replace('|^(?:\w+?://)?(?:www\.)?([^/]+)/?|i', '$1', $trimedUrl);
-------------------------------------------------
Подписаться на:
Сообщения (Atom)