0

Sharing Carbonated Beverage со вкусом персика

После долгого перерыва, экспортная рубрика снова вещает о вкусняшках из-за границы. И сегодняшний выпуск начну с китайской газировки Sharing.

… Читать дальше

0

Перетасовать и раздеть в python

Две быстростроки питонокода (не считая импортных, ок). Первая располагает элементы списка в случайном порядке, вторая выкидывает все html-теги (вернее вообще любые теги) из строки.

import random
random.shuffle(list)
import re
text = re.sub('<.*?>', '', text_with_tags)

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

2

Узнать размер директории

$ du -hs /path/to/folder
UPDATE: (from Mayoi Hachikuji)
Чтобы узнать размер нескольких объектов (включая директории), а также их сумму, используем флаг -c. Работает также с масками.

$ du -shc ./dir1 ./dir2 ./dir3
0

Операторы JavaScript

Небольшая памятка по операторам JavaScript.
… Читать дальше

0

Hokkaido Butter Caramel

Ну, хватит о напитках, теперь немного о вкусняшках. Подопытным экземпляром стали японские конфетки 北海道バターキャラメル, карамель из сливочного масла прямиком с острова Хоккайдо.

… Читать дальше

0

Asahi — природная вода с ванадием из горы Фудзи

А теперь минералочка 富士山のバナジウム天然水 (перевод в названии %) ).

… Читать дальше

0

Pfanner – чай бутылочный

Снова Pfanner, но на этот раз чай в бутылке. Заявленный вкус — лимон-лайм.

… Читать дальше

0

Pfanner — сокосодержащий напиток

Герой этого поста — сокосодержащий напиток Pfanner из Автрии. Причём 2 вкуса: манго-маракуя и чёрная смородина.

… Читать дальше

0

Rotbäckchen — Румяные щёчки

Первый экспортный пост про немецкий сок в стеклянных бутылочках — Rotbäckchen ака «Румяные щёчки»

… Читать дальше

0

Еда!

Сегодня начинаю новую рубрику EXPORT. Суть такова: я покупаю какую-нибудь нямку, на упаковке которой нет ни слова на русском, и на которой наклеена наклейка с русским описанием. Затем приношу домой, фотографирую, употребляю по назначению и постю свои ощущения, преобразованные в текст, в бложик. Зачем? Не знаю… Наверное, просто так, just for funlulz. Пик рилейтед.

 

PS: «Почему не IMPORT», спросите вы? Хз, мне слово EXPORT больше нравится.

0

Быстрая замена X=>Y и Y=>X в строке не используя регулярные выражения

Когда-то на чаны вбросили такую задачку: «в произвольной строке с любыми символами, используя только строковые замены, заменить символ X на символ Y и символ Y на символ X». И Анон нашёл решение:

my $line = $ARGV[0];
print( $line , "\n\r" );
$line =~ s/d/dd/g;
$line =~ s/x/xdx/g;
$line =~ s/y/ydy/g;
$line =~ s/xdx/y/g;
$line =~ s/ydy/x/g;
$line =~ s/dd/d/g;
print ( $line , "\n\r" );

И оно даже работает:

$ perl ./replace.pl xdxddxdyddydxdddxxxyyydyxdx
xdxddxdyddydxdddxxxyyydyxdx
ydyddydxddxdydddyyyxxxdxydy

Как видно, цель достигается за 6 строковых замен. Однако есть алгоритм, который добивается тех же результатов за 4 замены:

$line =~ s/z/zz/g;
$line =~ s/x/zx/g;
$line =~ s/zz/x/g;
$line =~ s/zx/z/g;

3

Как я VirtualBox ставил

Речь сегодня пойдёт о виртуальной машине от компаии Oracle — VirtualBox.

Продукт достаточно хороший, не громоздкий, обладает всеми необходимыми функциями. Однако, самое весомое его преимущество (по сравнению с той же VMware) — он бесплатный.

На Windows он работает сразу «из коробки». Установил, запустил, создал/подключил виртуальный HDD и вперде!

В Linux же, как обычно, нужно немного (или много) изъебнуться. Установку VB в Ubuntu/Debian я как раз и буду описывать.

Итак, поехали: … Читать дальше

0

fatal error: Python.h: No such file or directory

У меня такая ошибка возникла при попытке установить сторонний модуль питона через PIP. Решение у проблемы элементарное — поставить dev-пакет к своей версии питона. Для debian/ubuntu это может выглядеть так:

$ sudo apt-get install python2.7-dev

Источники:
Alex Sleat — How To Fix: fatal error: Python.h: No such file or directory

0

Смена версии Python по умолчанию

Не всегда между старшей и младшей версиями какого-либо программного продукта есть обратная совместимость. Если под одной версией работает нормально, то под другой может и не заработать вовсе.

С подобной проблемой я как раз и столкнулся. Django для своей работы требовал Python 2.6, однако в убунточке по умолчанию стоит Python 2.7. Казалось бы, ничего сложного, доствь 2.6 и всё ок. Но нет. Даже поставив рядом 2.6 Django всё равно брал версию, которая стоит по умолчанию, т.е. 2.7. Выход из данной ситуации простой — понизить версию питона ручками. Итак, поехали:

1) Открываем с правами рута файл /usr/share/python/debian_defaults и меняем версию по умолчанию на python2.6.

2) Далее, в директории /usr/bin/ ищем файл python и переименовываем его:

$ sudo mv /usr/bin/python /usr/bin/python27

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

3) В той же директории создаём символьную ссылку на исполняемый файл Python 2.6 с именем python (как изначально и было).

$ sudo ln -s /usr/bin/python2.6 /usr/bin/python

4) Перезагружаемся.

Теперь по умолчанию используется Python 2.6.

PS:
После понижения версии Python могут перестать работать некоторые приложения (например у меня после понижения отказался работать установщик проприетарных драйверов Jockey), которые настроены так, чтобы использовать версию Python по умолчанию, и если версия python по умолчанию их не удовлетворяет — они не работают. Лечится это тем же способом, но только наоборот. Поэму неиспользуемые символьные ссылки на python лучше не удалять. И ещё: при понижении версии, все модули, поставленные через PIP, придётся устанавливать заново.

Источники:
Change the default python version in ubuntu

0

The Bijin Tokei on the side bar

Какой самый главный элемент у хомячкового лытдыбра? Конечно же ЧАСИКИ!
Прикрутил в сайд бар когда-то выдранный откуда-то виджет bijin-tokei. Применив немного магии^Wджаваскрипта вычистил проприетарщину и подправил стиль. Хоть и получился быдлокод, но оно таки работает.

Алсо, по совету Xyanide запилил нативный твиттеро-виджет. Ну и ещё сменил цветовую схему хайлайтера кода.

Как-то так. Обустройство уютненького бложика продолжается.

1

Бложик: веселье продолжается

Запилил хайлайтер кода wp-codecolorer и твиттеропанель (( wp-to-twitter )).
Хайлайтер ок, а вот твиттеропанели пришлось править мозг^Wстили. Ну, вроде как теперь нормально. Наполнегие уютной дняффки продолжается…

0

PostgreSQL: value too long for type character varying

Импортировал я однажды базу данных PostgreSQL (в кодировке utf-8, конечно же) под управлением ubuntu, и всё шло хорошо, CREATE’ы выполнялись, индексы создавались… И тут, не пойми откуда, стали сыпаться ошибки вида «DatabaseError: value too long for type character varying(50)». Вариант о действительном наличии в запросе значений длиннее, чем положено, сразу отметается, т.к. в Debian всё отлично импортировалось. Значит, косячит PostgreSQL.

Дело в том, что шаблонная база данных template1, копированием которой создаются новые базы данных по умолчанию, изначально имела кодировку не utf-8. Следовательно, для корректного импорта нам нужно её перекодировать.

Для этого подключимся к базе данных и выполним несколько запросов.

$ psql -U postgres

Даём разрешение на подключение к базе данных template0.

UPDATE pg_database SET datallowconn = TRUE WHERE datname = 'template0';

Переключаемся к базе данных template0.

\c template0

Удалаяем опцию «это шаблон» у базы данных template1.

UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';

Удаляем template1.

DROP DATABASE template1;

Создаём новую базу с именем template1 по шаблону template0 с кодировкой UNICODE.

CREATE DATABASE template1 WITH template = template0 encoding = 'UNICODE';

Устанавливаем базе template1 флаг шаблона.

UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';

Переключаемся к базе данных template1.

\c template1

Запрещаем подключения к template0.

UPDATE pg_database SET datallowconn = FALSE WHERE datname = 'template0';

Теперь проблем с кодировкой не будет.

PS:
Если нет желания или необходимости трогать базу template1, то можно попробовать просто создать базу с указанием шаблона template0.

CREATE DATABASE %dbname% TEMPLATE template0;

Источники:

  1. StackOverflow: postgresql — Django fixture fails, stating "DatabaseError: value too long for type character varying(50)";
  2. PostgreSQL — Управление базами данных.
1

SMF 1.1 => SMF 2.0

Небольшое руководство о том, как обновить Simple Machune Forum c версии 1.1 (или 1.0) до 2.0.
На сервере имеем: Linux CentOS, nginx 0.98, MySQL 5.1.53, PHP 5.2.

Поехали.

  1. Делаем бэкап папки с форумам.
  2. Делаем бэкап базы данных.
  3. Очищаем таблицы с поисковым кэшем.
    mysql> USE %database_with_smf_name%
    mysql> TRUNCATE TABLE smf_log_search_messages;
    mysql> TRUNCATE TABLE smf_log_search_results;
    mysql> TRUNCATE TABLE smf_log_search_subjects;
    mysql> TRUNCATE TABLE smf_log_search_topics;

    Примечание: чтобы не возникло ошибки при обновлении, создайте в каждой из таблиц по одной пустой записи

  4. Теперь, скачиваем с оф.сайта пакет обновлений SMF 2.0 (Lagre upgrade). Помимо этого стоит скачать нужные языковые паки (русский). Распаковываем и перемешиваем. Готовую «смесь» загружаем на сервер в директорию с форумом (с перезаписью существующих файлов).
  5. Запускаем в браузере скрипт http://domain.com/path_to_smf/upgrade.php, и, следуя указаниям, обновляем форум.
    Примечание 1: в случае, если в корне форумной директории присутствует файл установки (install.php), то вас автоматически перенаправит на него. Для апгрейда форума удалите файл установки.
    Примечание 2: для UNIX-подобных систем — файл /Settings.php и директория /cache/должны быть доступны для записи всем.
  6. ???????
  7. PROFIT!

Возможные ошибки:

1) После обновления, при попытки зайти на форум, появится надпись «Невозможно загрузить ‘main’ шаблон.». Это означает, что по какой-то причине дирректория с темой форума по умолчанию пропала из /Themes/, просто верните её на место (Мы же сделали бэкапы, правильно?) и всё заработает.

2) Весь кириллистический текст, полученный из базы данных, будет похож на квадратики или на знаки вопросов в тёмных ромбиках. Это означает, что где-то ломается исходная кодировка.
Сначала идём в базу данных, в таблицу smf_settings, и ищем там строку, у которой поле variable равняется ‘global_character_set’. Если его там нет, то вставляем строку с таким параметром, где в поле value записываем ‘UTF-8’ (Мы же всегда используем UTF-8, правда?).
Теперь проверяем форум. Если русские буквы в названии тем видны — обновление завершено, поздравляю. Если нет… используем brute force!
Открываем файл /Sources/Subs-Db-mysql.php. Находим функцию smf_db_initiate и в самый её конец, перед оператором return, вставляем одну строку:

@mysql_query("SET NAMES UTF8", $connection);

Сохраняем. Проверяем форум — всё работает.

Источники:

  1. Официальное руководство на английском языке
  2. Обновление smf 1.0.*, smf 1.1.* -SMF 2.0 — Тема на русскоязычном форуме SMF
  3. Upgrade SMF 1.1.8 to SMF 2.0 RC3
0

Регулярные выражения, php и баксы…

Внезапно обнаружил так(ой|ую) (баг|фичу). Если в php, в регулярном выражении нужно (для сравнения/замены/…), чтобы в самом выражении присутствовал символ $ (естественно, экранированный), то его в обязательном порядке нужно помещать в квадратные скобки, иначе соответствующий выражению входной текст не будет соответствовать ему.

ADD: проверено для PHP Version 5.3.1 под венду, позже проверю под 5.3.6 под Линукс, может пофиксили уже.

Пример такой:

$var = "$3";
echo '<br>first regexp: ';
if (preg_match("/^\$[0-9]+$/",$var))
    echo 'passed';
else
    echo 'not passed';
echo '<br>second regexp: ';
if (preg_match("/^[\$]{1}[0-9]+$/",$var))
    echo 'passed';
else
    echo ' not passed';

Получим:

first regexp: not passed
second regexp: passed
0

phpBB3 – «Общая ошибка Could not get style data»

При переносе форума phpBB3 на хостинг под управлением Linux может возникнуть такая ошибка. А решается она просто — достаточно установить права на директорию cache и всему её содержимому для записи всем (как вариант, содержимое можно просто удалить).

$ chmod -R 777 /path/to/phpbb3/cache/
Страницы ... 1 2 3 4 5