misc/class
lib/jquery_pnotify, lib/moment, lib/lodash, misc/notification, site/engine, misc/social
if( $.browser.msie && $.browser.version <= 8 ) include('lib/respond'); $._social.__cfg = {"init":[{"service":"basic"},{"fb_app_id":"1997094873850041","service":"fb"},{"vk_app_id":"2978320","service":"vk"},{"service":"twi"}],"like":[{"service":"fb"},{"service":"vk"},{"via":"","channel":"","hash_tag":"","service":"twi"}]}; window._SiteEngine = new classes.SiteEngine( { user_id: 0, controller: 'homepage', action: 'index', content_css_version: '1459538664', social_enabled: 0} );

Faiwer

Блог web-программиста

IT Regexp - вырезать слова менее Х символов

8 декабря 2010

Недавно столкнулся с задачей - как при помощи регулярных выражений вырезать из строки все слова короче 3 символов (может быть применено, к примеру, при составлении запроса поиска слов в бд). Долго поламав над этим голову, наткнулся на такое вот решение:

s = 'aa bbb c d e ff gggg qq';
s = (' '+s+' ').replace(/ +/g,' ');
s.replace(/ \S{1,2} /g,'').replace(/ +/g,' ').trim();

  1. Добавляем по одному пробелу в начало и конец строки. Это необходимо для упрощения дальнейшего regexp-а, т.к. позволяет избежать дополнительной проверки при идентификации слова;
  2. Дублируем все пробелы, специально для того, чтобы при вырезании коротких слов, оставшиеся не склеивались;
  3. Вырезаем всё, что подходит под описание - 1 пробел + 1 или 2 не пробела + 1 пробел. И в итоге у нас остаётся строка, в которой наличиствуют только многочисленные пробелы и слова, подходящие под запрос
  4. Убираем лишние пробелы, при помощи / +/g , и дело в шляпе :)

Строго НЕ рекомендую использовать сий метод хоть где-либо, где необходима адекватная производительность. К примеру, того же самого можно достичь в php, используя explode, foreach и mb_strlen. Ну и на последок, для тех, кому регулярные выражения кажутся совсем уж дремучим лесом, следующее выражение позволяет просто вырезать все слова из строки:

s.match(/\S+/g)
Если перевести его на русский язык, получим:

  1. первый и последний / означают то, что между ними находится регулярное выражение
  2. флаг g, сообщает о том, что применить regexp следует многократно, если его убрать, то вы получите только первое слово
  3. \S - означает, что нас интересуют все символы, не являющиеся пробелами, табуляциями или переводом строки
  4. \S+ - говорит о том, что должен быть хотя бы 1 символ, но можно и более. Если убрать +, то вы получите список всех пробельных символов в строке, если оставить, то парсер regexp-движка, наткнувшись на первый не пробельный символ, будет искать их далее вплоть до того, пока не закончится строка, или попадётся любой символ не подходящий под \S, то есть пробел, табуляция или перевод строки.

 Если эта тема вас заинтересовала, то рекомендую ознакомиться со следующим руководством phpclub.ru.

Прочее Правильные схемы

8 декабря 2010

К 20 летию независимости (то есть к 16.12.11) обещают таки достроить и ввести в эксплуатацию первую ветку многострадального Алматинского метро. Текущая схема метро - идеальна, она является пределом лаконичности :) Подробнее о метро здесь и здесь.

IT NetBeans for PHP

29 ноября 2010

Раньше для php я использовал NotePad++ (то есть редактор текста с подсветкой кода и слабым автокомплитом), но надоело. Захотелось чего то вкусного. Немного погуглив выбрал NetBeans (вспомнив тёрки Eclipse с C++ откинул сий вариант сразу же). И не пожалел.

подробности…

IT Заметки про MediaWiki #1

13 октября 2010

Плагины

Плагины (Extentions) - позволяют добавить движку какой-либо дополнительный функционал. Например возможность встраивания в статьи видео с youtube-а. Для установки этого плагина необходимо:

  • Закинуть файл (или папку с файлами, что реже) в директорию /extensions
  • Открыть файл LocalSettings.php и добавить в конец require_once("$IP/extensions/YouTube.php"); где в скобках указывается главный файл плагина

В случае youtube плагина, видео можно встроить в статью просто применив конструкцию <youtube>ссылка на ролик</youtube> в своей статье. Есть и более функциональные плагины для этой цели, которые поддерживают сразу несколько видео-хостингов, да и к тому же позволяют менять размер встраиваемого объекта, но в моём случае они почему то взбунтовались... В прочем это отдельная история. Рекомендую также установить плагин ParserFunctions, он понадобиться вам для написания шаблонов (мини-программирование), и Cite, который позволит легко и красиво организовать список сносок, разбрасывая их посреди статьи.

подробности…

Прочее Система образования РК

12 октября 2010

Прочитав топик про кредитную систему образования от IIapTu3aH, удивился тому, насколько сильно отличается образование в КарГТУ и КазНТУ, или же, насколько сильно разнятся наши взгляды. Сначала хотел ответить большим комментарием, но со временем он перерос во что то большее, ввиду чего я решил запилить этот пост (кстати первый). Речь пойдёт о той самой кредитной системе, но в условиях КазНТУ. Доподлинно точно мне известно, что почти такая же ситуация (со своими нюансами конечно) творится и в КазГУАИЭС. Сложно судить насколько сильна была старая система образования, особенно в виду современных реалий. Но вот новая не выдерживает никакой критики. Она просто НИ КА КАЯ. Допустим даже, что университет и не должен давать каких либо выдающихся знаний, но ведь всеми пропагандируется то, что он должен учить людей "учиться", добывать кровью и потом знания и умения. Ничего подобного в  КазНТУ я не вижу.

подробности…