Блог

apt-get не работает (ubuntu)

Если вдруг так приключилось, что apt-get отказывается работать, например, загружается, а потом без лишних слов просто вылетает, то попробуйте очистить кэш apt’а. Мне помогает.

$ sudo rm -rf /var/cache/apt/archives/
bash linux

git и PHPStorm — игнорирование файлов и папок

В PHPStorm, при использовании файла .gitignore будет происходить ошибка — что он не может добавить файлы, которые находятся в этих папках. Это очевидно, но хотелось бы, чтоб он просто не добавлял их и ошибки не показывал. Для этого в этой IDE предусмотрена следующая штука:

File -> Settings -> Version Control -> Ignored Files

И там можно добавить файлы и папки, которые не требуется хранить в контроле версий (например, директории assets и protected/runtime в Yii).

php

Debug в PHPStorm

Устанавливаем xdebug:

$ sudo apt-get install php5-xdebug

В php.ini вставить следующий блок (желательно в самый низ):
ВНИМАНИЕ! У вас путь zend_extension="/usr/lib/php5/20090626/xdebug.so" может отличатся! Необходимо написать путь до xdebug.so.

[XDebug]
zend_extension="/usr/lib/php5/20090626/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_port="9000"
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/tmp"

Перезапускаем apache:

$ sudo /etc/init.d/apache2 restart

Теперь в PHPStorm.
Заходим в настройки, раздел PHP, подраздел Debug. Проверяем, что в XDebug порт должен стоять — 9000. Принимаем все изменения.
Далее заходим в Run/Edit configuration, нажимаем на плюсик, добавляем PHP Web Application. Называем, например, «phpdebug». Напротив Server нажимаем «…».
Пишем имя веб-приложения, которое будем отлаживать, пишем виртуальный хост, в качестве дебаггера — XDebug. Принимаем все изменения.

Теперь ставим брейкпоинт и нажимаем shift+F9.

php

Проверить, установлен ли memcache на сервере

Самый простой способ — выполните на сервере команду:

$ php -i | grep -i memcache

Если вы увидите строки

memcache
memcache support => enabled

и подобные, то все установлено!

bash

WTF JS

Забавный сайт на тему «какого хрена это происходит именно так в JS» 🙂

http://wtfjs.com/

javascript ссылки

Автоматическое создание виртуального хоста в Apache2 на Linux

В данном случае использовалась Ubuntu.

Чтобы автоматически создать виртуальный хост в Apache2, вы можете использовать bash-скрипт. Для этого создайте файл (например, vhost_creator.sh) и вставьте в него следующее содержимое:

#!/bin/bash
echo "Creating Virtual Host"
cd /etc/apache2/sites-available
cat <<EOF >> "$1.conf"
<VirtualHost *:80>
ServerName $1
ServerAlias www.$1
DocumentRoot "/var/www/$1"
<Directory "/var/www/$1">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
EOF
mkdir "/var/www/$1"
cd /etc/apache2/sites-enabled
ln -s "/etc/apache2/sites-available/$1.conf" "$1.conf"
echo "Editing /etc/hosts"
cat <<EOF >> "/etc/hosts"
127.0.0.1 $1
EOF
echo "Set permissions"
chown -R "$2:$2" "/var/www/$1"
echo "Restarting Apache2"
/etc/init.d/apache2 restart
echo "Finished!"
echo "Local address: /var/www/$1"
echo "Web address: http://$1"

Сделайте файл исполняемым и запустите его от имени root’а:

$ chmod a+x ./vhost_creator.sh
$ sudo ./vhost_creator.sh your_vhost your_login

где:
your_vhost — название виртуального хоста, например test.local или mysite.ru (заходить на него вы будете по адресу http://test.local или http://mysite.ru).
your_login — ваша основная учетная запись, например crusat. Этот параметр требуется для установки прав владельца на корневую директорию виртуального хоста.

Последнюю версию данного приложения, вы можете найти на https://github.com/crusat/vhostcreator

bash

Обновление CSS без перезагрузки страницы

Обновление CSS без перезагрузки страницы. Просто вставьте этот код на страницу. Не забудьте обрамить тэгом <script>

var DeveloperTool={
    Init:function(){
        this.headObj = document.getElementsByTagName('html')[0].getElementsByTagName('head')[0];
        return this;
    },
    ReloadAllCSS : function(headObj) {
            console.log('DT:ReloadAllCSS');
            var links = headObj.getElementsByTagName('link');
            for (var i=0 ; i < links.length ; i++){
                var link = links[i];
                this.ReloadCSSLink(link);
            }
        return this;
    },
    ReloadCSSLink : function(item) {
        var value = item.getAttribute('href');
        var cutI = value.lastIndexOf('?');
        if (cutI != -1)
        value = value.substring(0, cutI);
        item.setAttribute('href', value + '?t=' + new Date().valueOf());
        return this;
    },
    ReloadAllCSSThisPage : function() {
        this.ReloadAllCSS(this.headObj);
        return this;
    }
};
setInterval(function(){DeveloperTool.Init().ReloadAllCSSThisPage();},1000);
javascript

YouTube-видео через fancybox

Это делается так.

Ссылка будет вида:

<a class="fancy-video-js" href="http://www.youtube.com/v/iCz8R25hlFI&fs=1&amp;autoplay=1"><img src="http://img.youtube.com/vi/iCz8R25hlFI/1.jpg" /></a>

Ютуб возвращает полноразмерные скриншоты видео по адресу http://img.youtube.com/vi/<код видео>/0.jpg. Вместо 0.jpg может быть 1.jpg, 2.jpg или 3.jpg.

Ссылка стоит на ютуб-видео с небольшими модификациями (сравните с кодом, что получаете при копировании HTML в youtube со ссылкой выше).
Затем вставьте код ниже в ваш <script> блок.

$(document).ready(function() {
    $(".fancy-video-js").click(function() {
        $.fancybox({
            ‘padding’   : 0,
            ‘autoScale’ : false,
            ‘href’  : this.href.replace(new RegExp("watch\\?v=", "i"), ‘v/’),
            ‘type’  : ‘swf’,
            ‘swf’   : {
                ‘wmode’ : ‘transparent’,
                ‘allowfullscreen’   : ‘true’
            }
        });
        return false;
    });
});

javascript

Устанавливаем django на denwer

<p>1. Устанавливаем <a href="http://python.org/download/” target=”_blank” rel=”noopener”>Python</a> (желательно, версию 2.7).<br />2. Правой кнопкой по “Мой компьютер” => Свойства =><br />=> Вкладка “Дополнительно” => Кнопка “Переменные среды” =><br />=> В “Системные переменные” выбираем строку, где слева написано “Path” =><br />=> Кнопка “Изменить” => в самый конец вставляем строку<br />”;C:\Python27\;C:\Python27\Scripts” без кавычек.<br />3. Везде жмем ОК.<br />4. <a href="https://www.djangoproject.com/download/” target=”_blank” rel=”noopener”>Качаем</a> и распаковываем архив с Django.<br />5. Открываем cmd и переходим в папку с Django.<br />6. Набираем “setup.py install”.<br />7. Ждем установки.<br />8. Проверяем, набрав в консоли “python”, затем “import django” и<br />”print django.get_version()”. Если ошибок нет - значит, мы все сделали правильно.<br />9. Устанавливаем <a href=”http://www.denwer.ru/" target=”_blank” rel=”noopener”>Denwer</a>.<br />10. Файл “<a href="http://code.google.com/p/modwsgi/wiki/DownloadTheSoftware?tm=2#Windows_Binary_Downloads” target=”_blank” rel=”noopener”>mod_wsgi.so</a>” копируем в папку “Z:\usr\local\apache\modules”.<br />11. В файле “Z:\usr\local\apache\conf\httpd.conf” после строк “LoadModule”<br />вставляем строку “LoadModule wsgi_module modules/mod_wsgi.so”.<br />12. На этом установка закончена, для настройки самого проекта <a href="https://docs.djangoproject.com/en/1.4/intro/tutorial01/” target=”_blank” rel=”noopener”>обратитесь к документации</a></p>

django

Почему ширина моих highcharts графиков больше (меньше), чем ширина блока?

  1. Не отображайте highcharts-графики в скрытом (display:none) блоке.
  2. Не отображайте highcharts-графики в анимационно-раскрываемом блоке (jquery: $(block).show(500), $(block).slideDown(100)).
javascript