суббота, 8 ноября 2014 г.

perl: warning: Setting locale failed.

sudo dpkg-reconfigure nginx

Ответ:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "ru_RU.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory



Решение:


sudo locale-gen ru_RU ru_RU.UTF-8
sudo dpkg-reconfigure locales
sudo dpkg-reconfigure nginx

ssh Доступ по ключу

На локальной машине генерим ключи

ssh-keygen -t rsa

Тут же(на локале) копируем на удаленный сервер

ssh-copy-id -i ~/.ssh/id_rsa user@XX.XX.XX.XX

Готово.



Если ssh-copy-id нет, то копируем ключ руками

scp ~/.ssh/id_rsa.pub  user@XX.XX.XX.XX:~

Авторизуемся на сервере

ssh user@XX.XX.XX.XX


mkdir ~/.ssh
chmod 711 ~/.ssh
mv ~/id_rsa.pub ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys




Вместо XX.XX.XX.XX ip хоста, или домен



После надо выставить  в /etc/ssh/sshd_config
PasswordAuthentication no

Что бы доступ был разрешён только по ключу

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

ubuntu Правильное расставление прав на файлы

Выставим права на чтение для всех файлов

find /home/user -type f -exec chmod 600 {} \;

И права на выполнение для папок(нужно что бы видеть списки файлов)

find /home/user -type d -exec chmod 700 {} \;

среда, 11 июня 2014 г.

YII Invalid argument supplied for foreach _pkAlias

Эта штука выскакивает, если у модели не определен первичный ключ, определите его в базе и сразу все будет норм.

среда, 28 мая 2014 г.

angularjs Добавить зависимость в существующий модуль

Нашел решение здесь http://www.hiddentao.com/archives/2013/11/04/an-improved-angular-module-split-your-modules-into-multiple-files/

(function(angular) {
  var origMethod = angular.module;

  var alreadyRegistered = {};

  /**
   * Register/fetch a module.
   *
   * @param name {string} module name.
   * @param reqs {array} list of modules this module depends upon.
   * @param configFn {function} config function to run when module loads (only applied for the first call to create this module).
   * @returns {*} the created/existing module.
   */
  angular.module = function(name, reqs, configFn) {
   reqs = reqs || [];
   var module = null;

    if (alreadyRegistered[name]) {
      module = origMethod(name);
      module.requires.push.apply(module.requires, reqs);
    } else {
      module = origMethod(name, reqs, configFn);
      alreadyRegistered[name] = module;
    }

    return module;
  };

})(angular);

воскресенье, 27 апреля 2014 г.

Ubuntu Поиск по установленным пакетам

Допустим ищем все пакеты с java:

dpkg -l | grep java

dpkg -l
Выводит все установленные пакеты

grep java
Показывает только пакеты с java в названии

пятница, 25 апреля 2014 г.

пятница, 4 апреля 2014 г.

css Постепенное засветление текста

Для того что бы текст постепенно ушёл в прозрачность надо установить псевдокласс :after и установить у него горизонтальный градиент с прозрачности в цвет фона(например белый):

text:after {
width: 30px;
height: 20px;
display: block;
content: " ";
right: 0;
bottom: 0;
position: absolute;

background: -moz-linear-gradient(right, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 80%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0)), color-stop(80%,rgba(255,255,255,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(right, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 80%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(right, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 80%); /* Opera 11.10+ */
background: -ms-linear-gradient(right, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 80%); /* IE10+ */
background: linear-gradient(to right, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 80%); /* W3C */
}

четверг, 3 апреля 2014 г.

php Перевод времени в другой часовой пояс

Для того что бы перевести время в другой часовой пояс надо создать объект DateTime с текущим часовым поясом, потом присвоить ему другой часовой пояс через setTimezone:

<?php


$localTimezone = new DateTimeZone('Asia/Yekaterinburg');


$destinationTimezone = new DateTimeZone('Europe/Moscow');


$date = new DateTime('2014-12-22 09:00', $localTimezone);

echo $date->format('Y-m-d H:i:s')."\n";


//Переводим в другой часовой пояс


$date->setTimezone($destinationTimezone);

echo $date->format('Y-m-d H:i:s')."\n";

понедельник, 31 марта 2014 г.

angularjs и input type="hidden"

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

<input type="hidden" data-ng-model="mymodel" name="mymodel" />

При отправке формы в mymodel было пусто.
Частично можно решить проблему, если в value скрытого поля вписать {{mymodel}} Но тогда все value будут заполнены начальными моделей. Может тут какая то магия ангулара, я не разобрался.

Решил всё следующим образом:

<input type="text" data-ng-nodel="mymodel" name="mymodel" style="display: hidden">

среда, 5 марта 2014 г.

Ubuntu. Баг с переключением раскладки

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

setxkbmap -layout "us,ru" -option "grp:ctrl_shift_toggle"

Минус в том что индикатор раскладки перестаёт переключатся.

четверг, 20 февраля 2014 г.

Установка debian с usb

  1. Скачиваем boot.img.gz (для AMD64, или для i386).
  2. Распаковываем всё на флешку.
  3. Скачиваем образ дебиана с оф. сайта (любой: загрузочный или полный, CD или DVD. От образа будет зависеть только начальное количество пакетов. Вот например торрент для 1 CD образа для 64 битной системы) Можно даже скачать несколько образов, если они все влезут на флешку.
  4. Копируем образы на флешку.
  5. Всё, флешка для установки дебиана готова.

вторник, 18 февраля 2014 г.

Устройство перестало отвечать или было отключено. samsung galaxy tab

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

ЗЫ: Интересно, что после того как я скопировал таким образом пару файлов, третий скопировался без проблем обычным образом. Остается только надеяться, что эту фичу поправят в будущем, или ее можно будет отключить, весьма раздражают напоминания о том, что планшет "не сможет воспроизвести файлы" =\

пятница, 24 января 2014 г.

YII. PHP Error[2]: Error while sending QUERY packet

Это лечиться пингом сервера.
Для yii в коде пропишите:

Yii::app()->db->active = true;

Или в настройках main.php:

'class' => 'system.db.CDbConnection',
'connectionString' => 'mysql:host=localhost;dbname=some_db',
'emulatePrepare' => true,
'charset' => 'utf8',
 'active' => true, // <= Вот оно

среда, 22 января 2014 г.

angularjs Не отправляет данные через $http.post

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

$scope.data = [];

$http.post('/url', {data: $scope.data}).success(function(response){
      console.log(response);
});


Оказалось, что отправлять данные он не отказывался. Он не мог правильно упаковать $scope.data, который является массивом. Если заменить массив на объект, то все заработает:

$scope.data = {}; // <=== вот оно

$http.post('/url', {data: $scope.data}).success(function(response){
      console.log(response);
});

понедельник, 6 января 2014 г.

mysql Не удаляется внешний ключ

Если внешний ключ не удаляется, а ошибка ни о чём вам не говорит можно выполнить команду SHOW ENGINE INNODB STATUS и посмотреть, что написано после заголовка LATEST FOREIGN KEY ERROR. Там должна быть более внятная информация о том что пошло не так.

Ещё можно посмотреть информацию в SHOW CREATE TABLE tableName, что бы уточнить какие ключи существуют.

пятница, 3 января 2014 г.

nginx Автоматическая генерация поддоменов

Вот конфиг для /etc/nginx/sites-available/default

server {
listen 80;

index index.php;

    server_name example.com *.example.com;
    root /www/$subdomain;
    set $subdomain "";

    if ($host ~* ^([a-z0-9-\.]+)\.localhost$) {
        set $subdomain $1;
    }
    if ($host ~* ^localhost$) {
        set $subdomain "";
    }

charset utf-8;

location / {
try_files $uri $uri/ /index.php;
}

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}



Теперь можно просто создавать в www папки и они будут доступны как поддомены *.localhost

Например:
/www/some
some.localhost


Разумеется предварительно нужно будет поправить /etc/hosts