See You On The Other Side

Voices, a thousand, thousand voices
Whispering, the time has passed for choices
Golden days are passing over, yeah

regexp и парные скобки

Из строки «The {World {is}} beautifull» нужно достать максимальную подстроку ограниченную парными скобками.
Решение:

$string="The {World {is}} beautifull";
if (preg_match("#\{((?>[^{}]+)|(?R))*\}#", $string,$m)){
    print "matched: ".$m[0];
}

REGex и экранированные символы

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

// сам regexp
// /"(?>\\"|.)*?"/

$pattern= '/"(?>\\"|.)*?"/';
$string = 'some "text \"word\""';
if (preg_match($pattern,$string)){
    print "TRUE";
}

Вечер в центре

пример создания excel документа

Создание и заполнение документа excel используя openXML SDK.
SDK берем тут, скачиваем тот что поменьше. И подключаем библиотеки в наш проект.

До конца с форматом openxml и возможностями SDK я разобраться не успел, но создать простой лист и заполнить его данными получилось.
На выходе будем иметь вот это:

Подробнее »

Весна!

Ну вот, мы и дожили до весны,
И сей факт очень приятен.

java + regexp

Регулярные выражения в java это мощный инструмент работы с текстом.
Возникла необходимость получить данные из формата json, стандартных классов не нашел. А для моей задачи возможности json_simple были избыточны.
И вот родился такой небольшой парсер.

public void parse(){
		Pattern p = Pattern.compile("\\{GsearchResultClass=GimageSearch, width=([0-9]+?), height=([0-9]+?), imageId=(.+?), tbWidth=([0-9]+?), tbHeight=([0-9]+?), unescapedUrl=(.+?), url=(.+?), visibleUrl=(.+?), title=(.+?), titleNoFormatting=(.+?), originalContextUrl=(.+?), content=(.+?), tbUrl=(.+?)\\}");
		Matcher m=p.matcher(this.str);		
		while(m.find()) {
		    System.out.println("1: " + m.group(1));
		    System.out.println("2: " + m.group(2));
		    System.out.println("3: " + m.group(3));
		    System.out.println("4: " + m.group(4));
		    System.out.println("5: " + m.group(5));
		    System.out.println("6: " + m.group(6));
		    System.out.println("7: " + m.group(7));
		    System.out.println("8: " + m.group(8));
		    System.out.println("9: " + m.group(9));
		    System.out.println("10: " + m.group(10));
		    System.out.println("11: " + m.group(11));
		    System.out.println("12: " + m.group(12));
		    System.out.println("13: " + m.group(13));
		    System.out.println("------------------------------");
		}

	}

Январь

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

Под толстым снежным покрывалом
Укрыты летние дожди.
И мысли, что порой бывало
Кружили головы и дни.

Зима, чисты ее признания,
Она горит кристаллом льда
Полны красот очарования
И заворожены леса.

Yii, первые шаги

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

в классе CWebApplication, есть публичное свойство defaultController, по умолчанию равное site, задать новое значение можно в файле конфигурации. Примерно так:

//config/main.php
return array(
	//...
    'defaultController'=>'otherControler',
	//...
}

обход «блокировка транзитных пакетов»


На заметку:
для доступа к интернету из виртуальной машины не через её NAT в правилах Outpost Firewall (v 7.) нужно прописать следующее.
в меню НАСТРОЙКИ — БРАНДМАУЭР — СЕТЕВЫЕ ПРАВИЛА — СИСТЕМНЫЕ ПРАВИЛА — НИЗКОУРОВНЕВЫЕ ПРАВИЛА
добавить 2 правила

1-ое
— где тип протокола IP (отметить протоколы)

  • ICMP
  • TCP
  • UDP

— удаленый адрес (адрес виртуальной машины)
— разрешить

2-ое
— где тип протокола IP (отметить протоколы)

  • ICMP
  • TCP
  • UDP

— локальный адрес (адрес виртуальной машины)
— разрешить