четверг, 15 марта 2012 г.

twitter bootstrap: ширина модального окна

Многие не без причины любят twitter bootstrap. Среди его плагинов есть Modal dialog. И он замечателен. А если знать как модифицировать его ширину, жизнь становится вообще сказкой. No exception.

Вот как это можно сделать:

 $('#feedback-modal').modal({
        backdrop: true,
        keyboard: true
    }).css({
        width: 'auto',
        'margin-left': function () {
            return -($(this).width() / 2);
        }
    });

Рецепт подкинул некто rviscomi, вот здесь: https://github.com/twitter/bootstrap/issues/675#issuecomment-3664958.

четверг, 1 марта 2012 г.

haskell: (+1) - функция, (-1) - число

Именно это надо знать, чтобы не попасть в смешную ситуацию с вызовом анонимной "функции". Итак, вот что говорит prelude:

Prelude> :t (+1)
(+1) :: Num a => a -> a

Prelude> :t (-1)
(-1) :: Num a => a

четверг, 1 декабря 2011 г.

linux: свободное место на диске (df - disk free)

df -h

С помощью этой команды вы можете получить отчет об использовании дисков: сколько места на осталось на диске, сколько места занято — и все в приятном читабельном виде (ключ -h, то есть human readable — именно для этого)

Пример:

$ df -h
Файловая система      Разм  Исп  Дост  Исп% смонтирована на
/dev/sda2              20G  4,6G   14G  25% /
tmpfs                 5,0M     0  5,0M   0% /lib/init/rw
udev                  989M     0  989M   0% /dev
tmpfs                 398M  856K  397M   1% /var/run/shm
tmpfs                 199M  932K  198M   1% /var/run
/dev/sda3              25G  3,6G   20G  16% /home
/dev/sdb1             466G  166G  300G  36% /media/WD

пятница, 16 сентября 2011 г.

ssh вход без пароля

Чтобы заходить по ssh на какой-то сервер (SOME_HOST), мы должны сделать примерно следующее:

cat ~/.ssh/id_rsa.pub | ssh login@SOME_HOST 'cat >> .ssh/authorized_keys'

То есть дописать наш публичный ключик в .ssh/authorized_keys на сервере. Разумеется, необходимо позаботиться, чтобы эти файлы и каталоги существовали. Чуть подробнее об этом: http://linuxproblem.org/art_9.html.

update:

Анонимный читатель сообщил более простой способ входа без пароля — посредством утилиты ssh-copy-id:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

суббота, 20 августа 2011 г.

Подсветка синтаксиса

Подсветка синтаксиса – это то, без чего нам теперь уже не обойтись и мы, конечно, благодарны средам разработки, которые одарили нас этим чудом. Но как экспортировать эти чудеса в html для интернетов? Есть несколько способов:
  1. Воспользоваться самой IDE. Так вы получите подсветку в стиле, привычном для вас и, возможно, ваших коллег (или соучастников сообщества, в которое вы обратились),  Например, JetBrains Pycharm (а также NetBeans) предлагает удобную подсветку синтаксиса с возможностью выбрать кусок текста, который надо подсветить.

    Минус: стили подсветки не инлайнятся и в код вашего сообщения, если вы куда-то этот код отправляете, необходимо вставлять также и блок со стилем. Это не всегда удобно (например, мне сейчас пришлось так сделать).
    def setUp(self): 
            self.group = TestGroup() 
            self.moderation_rules = ModerationRule.get_many(data_getter=lambda x: moderation_rules)
    
    
  2. Использовать редактор VIM.
    Не все знают, что в vim есть поддержка экспорта в HTML. Для этого существует команда :TOhtml, которая генерирует html-код в стиле vim и выводит его в отдельном "окне", что позволяет его сохранить (:w).
      Плюсы:
    • Имеется почти на каждом компьютере с unix-подобной ОС.
    • VIM такой VIM. Все-таки vim - это круто. Когда вы его используете, вы как бы соприкасаетесь с историей (жаль, это нужно далеко не всегда).
      Минусы:
    • Вам в 80% случаях придется не по вкусу то, что он нагенерировал (или вы собираетесь вставить код на какой-нибудь черный фон?).
    • Непонятно, как изменить цветовую схему того, что он выдает.

  3. Использовать сервис в интернете для подсветки синтаксиса. Например, tohtml.com (а вообще их более 9000). Это, наверное, самый оптимальный вариант, так как код, изготовляемый сервисом, уже готов для вставки в различные формы на форумах, блогах итд.
      Плюсы:
    • Код здесь получается довольно приятным по цвету и все стили - инлайнятся, поэтому не нужно вставлять никаких дополнительных блоков
    • Поддерживается множество языков программирования, а также множество вариантов расцветки.
    • Не нужно иметь IDE под рукой - сервис работает достаточно быстро и, разумеется, везде, где есть интернет.
      Минусы:
    • Возможно, вам покажется непривычной расцветка кода, которую вам предложит сервис
    * более удобные реализации данной фичи есть, например, в редакторе kate (но это потребует кучу библиотек для KDE).


пятница, 19 августа 2011 г.

Vim: как заменить табы на пробелы

Достаточно простой способ замены табов на пробелы предлагает vim. Для этого нужно:
  1. Воспользоваться опцией expandtab, которая позволяет при нажатии на клавишу TAB вставлять в текст пробелы. Делается это так:
    :set expandtab
  2. Набрать команду retab
  3. :retab
Взято отсюда.

среда, 6 июля 2011 г.

Jetbrains Pycharm: полуавтоматическое обновление

В Pycharm есть очень много полезных фич, но лично мне не хватает автоматического обновления. К счастью, это очень просто лечится примерно таким bash-скриптом.

#!/bin/sh

if [ $1 ]
then
    VER=$1
else
    echo "Which version of pycharm ide do you want do download?"
    read VER
fi

NAME=PyCharm-$VER.tar.gz
EXTRACTED=pycharm-$VER

cd ~/bin
wget -c http://download.jetbrains.com/python/$NAME
tar xzf $NAME
unlink pycharm
ln -s $EXTRACTED pycharm

Использование:
sh ./download_pycharm.sh 1.5.2
либо
sh ./download_pycharm.sh

Как видим, скрипт получает от нас номер нужной версии Pycharm, либо сам спрашивает. скачать. Затем, он выкачивает архив, распаковывает и складывает в подкаталог bin нашего домашнего каталога + играет с символическими ссылками, чтобы в ~/bin/pycharm можно было всегда найти свежую версию IDE.

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

понедельник, 16 мая 2011 г.

Глобальный 301 редирект на/с "www." версию домена в nginx

Для чего если можно просто указать все версии домена в server_name? Чтоб не слетали куки. А то авторизованный на example.com человек оказывается не авторизован на www.example.com куда его привела скажем ссылка из уведомления о новом ответе на форуме. Это очень раздражает.

Подчтеннейшая публика! Предлагаю Вам вариант универсального редиректа на все виртуальные серваки управляемые целевым nginx'ом.

В общем для мазохистов-любителей длинных имён и прочих эмо есть вариант редиректа с без "www" на "www":

server {
  server_name ~^(?!www\.);
  rewrite ^ http://www.$host$request_uri permanent;
}

да, почему-то принято упоминать, что автор решения Игорь Сысоев.

Для прочих же, кто не стремится нажимать лишние клавиши преобразование из "www" в без "www"

server {
  server_name ~^(?=www\.);
  if ( $host ~* "www.(.*)"){
    set $unwww $1;
  }
  rewrite ^ $scheme://$unwww$request_uri permanent;
}

Автор решения Ваш покорный слуга :)

ВНИМАНИЕ! Всё это дело вставляется в начало блока http файла nginx.conf и не забываем убирать в конфах виртуальных серваков из server_name вариант с/без "www" (убираем то, с чего редиректим), а то не сработает!