Записи по категории “Без рубрики”.

VLC

К вечной теме, на чем смотреть видео и слушать аудио. Ок?

Имхо для Linux систем VLC не подходит, ну никак! После мытарства по его плейлисту, который просто отвратителен в пользовании, я решил забить на него. Даже скины, которые на вид привлекательно изменяли внешность плеера, не помогут.

Два если:

- хотите слушать музыку, то поставьте foobar2000, да придется ставить wine, но линуксоиды? у кого он не стоит? -) Или можно поставить amarok, в общем для прослушивания музыки в линуксе достаточно софта, а вот с поддержкой cue не так уж и много, и все хромают когда в листе русские названия. А я любитель русского рока и lossless форматов :)

- хотите посмотреть видео, то пересоберите mplayer с выводом графики через видеокарту, потому что процессор со скаченными HD фильмам просто тупит. Да и вообще mplayer приятнее и пошустрее VLC.

Разбиение объектов на “равные” части

Предлагаю вашему вниманию небольшой снипет, который мы написали, когда понадобилось сделать вывод объектов по колонкам.

  1. from django import template
  2.  
  3.  
  4. register = template.Library()
  5.  
  6.  
  7. class SplitObjectsNode(template.Node):
  8.     def __init__(self, objects, list):
  9.         self._objects = template.Variable(objects)
  10.         self._list = list
  11.  
  12.     def render(self, context):
  13.         import math
  14.         columns_count = len(self._list)
  15.         objects = self._objects.resolve(context)
  16.  
  17.         for item in self._list:
  18.             context[item] = []
  19.  
  20.         if len(objects) == 0:
  21.             return
  22.  
  23.         dec = float(len(list(objects))) / columns_count
  24.         mid = int(math.ceil(dec))
  25.         pass_part = len(list(objects)) % columns_count
  26.         count_full_cols = columns_count – pass_part
  27.  
  28.         idx = 0
  29.         index = 0
  30.         for item in self._list:
  31.             step = mid
  32.             if idx >= pass_part and pass_part != 0:
  33.                 step = mid – 1
  34.             context[item] = objects[index: step + index]
  35.             index += step
  36.             idx += 1
  37.         return
  38.  
  39.  
  40. @register.tag
  41. def split_objects(parser, token):
  42.     """                                                                                                                                                                                                      
  43.    Split content of the objects to equal parts. Number of parts is a count of passed arguments to tag.                                                                                                      
  44.                                                                                                                                                                                                            
  45.    Example:                                                                                                                                                                                                
  46.    {% split_objects objects col1 col2 col3 %}                                                                                                                                                              
  47.    <table><tr><td>                                                                                                                                                                                          
  48.    {% for item in col1 %} {{ item.title }} {% endfor %}                                                                                                                                                    
  49.    </td><td>                                                                                                                                                                                                
  50.    {% for item in col2 %} {{ item.title }} {% endfor %}                                                                                                                                                    
  51.    </td><td>                                                                                                                                                                                                
  52.    {% for item in col3 %} {{ item.title }} {% endfor %}                                                                                                                                                    
  53.    </td></tr></table>                                                                                                                                                                                      
  54.    """
  55.     parts = token.contents.split()
  56.     if len(parts) < 3:
  57.         raise template.TemplateSyntaxError, "Tag should get at the least 3 arguments. Example usage is {% split_objects objects col1 col2 %}"
  58.  
  59.     tagname = parts.pop(0)
  60.     objects = parts.pop(0)
  61.     return SplitObjectsNode(objects, parts)

Zenwalk и мысль о укомплектованном пакете.

Сегодня установил себе на рабочий компьютер довольно занятный дистрибутив Zenwalk . Понравилось что зен это полноценный домашний десктоп да и еще к тому же абсолютно не избалованный гномами и кедами, и несет на своем борту такой легкий оконный менеджер xfce.

Очередным сюрпризом после установки явилось то, что версия питона стояла 2.6, так что обновлять его мне не пришлось, а сразу пошли установки пакетов – django, wxWidgets, wxPython, и еще всякого по мелочи.

Ну и плюс как обычно сделал себе полный набор девелоперского софта – Eclipse, lighttpd, php, mysql. Подумалось то что каждыйраз когда идет настройка новой оси или не совсем новой, то такие действия я повторяю из раза в раз. Пришла мысль сделать какой то пакет который бы при установке сразу же имел все необходимые мне вещи.

Возможно примусь за это в скором времени.

Загрузка файлов на сервер

В последнее время перешел с GUI аплоада на утилиту rsync. А что? Очень даже удобно если набросать для проекта скрипт обновления. Но в простом случае я просто делаю что то вроде этого

rsync ~/workspace/example.php username@example.com:/var/www/example.com

Но можно и все содержимое каталога

rsync -r ~/workspace/* username@example.com:/var/www/example.com

Переход с Python 2.5 на Python 2.6

Решили перевести наш сервер на версию Python 2.6. Замечу что до этого использовали 2.5, что как оказалось является довольно устаревшей. Ну решили – начал переводить.

Казалось бы что сложного, но Gentoo всячески отказывалась принимать версию из-за того что она была замаскирована. Что это означает я даже не подозреваю, поэтому раз через emerge не хотела, то решил просто собрать исходники.

Скачал необходимую версию питона, скомпилил – все отлично, осталось перевести ссылку python и python-config на новую версию.

# rm /usr/bin/python /usr/bin/python-config
# ln -s /usr/local/bin/python2.6 /usr/bin/python
# ln -s /usr/local/bin/python2.6-config /usr/bin/python-config

Все отличненько и

# python --version

вернула 2.6.2, осталось пересобрать mod_python, чтобы он использовал обновленный питон. Сделал через обычный emerge.

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

Перевод Drupal на BigStreet

Была поставлена задача перевести существующую базу с Drupal’а на BigStreet. Скажу сразу что скрипт писался исключительно в личных целях и на скорую руку.

Скрипт генерирует необходимые SQL запросы для их выполнения над базой BigStreet. Будьте осторожны в плане того что он не смотрит какие id у вас уже есть в существующей базе и некоторые запросы просто выдадут ошибку.

Я не учитывал комментарии незарегистрированных пользователей, поэтому если используете скрипт и вам они просто необходимы то можете немного дописать скрипт или сам БигСтрит на поддержку анонимных комментаторов.

Ну и собственно сам скрипт можно взять отсюда.

Скрипт можно выполнять через командную строку перенаправив вывод в отдельный файл.

Диверсанты

Каким то чудом на меня легла обязанность администратора в нашей фирме, в принципе доволен, всегда любил чо нить пошаманить с бубном. И вот на днях случилась заморочка, которая ввела меня – неопытного начинающего администратора в ступор.

После поднятия NAT на Gentoo Linux, самым неведомым образом стал пропадать интернет, стал шурстить и дошурстил google до дырок. С сетевого адреса через утилиту arping удалось выявить виновника такого поведения, звонок в службу поддержки и выдача чужого MAC адреса поставила точку на наших бедах (ох надеюсь что это так)

Итак, если у вас пропадает интернет и появляется только после рестарта интерфейса, то будьте готовы что кто то использует ваш IP.

Исключительно эта ситуация касается только для выделенных внешних IP.

ТвинБот

Этот робот стал моим кумиром)

Что он делает один в парке читать тут

Музей народной архитектуры

Был на этих выходных в Пирогово, это под Киевом, место довольно красивое. Смотрел на дома от 17 до 20 столетия. И ведь еще простоят много лет и даже жить в некоторых можно.

Посмотрел на ветряные мельницы, водяные, был внутри хозяйства зажиточного крестьянина, заходил в церковь, походил по болотной местности, что лежит вообще за пределами музея.

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

Шизофреник

Насколько простым и гениальным может быть лого? А вот я вам скажу) Лично мне оно понравилось

А вот собсно место, откуда чесно взял.