логин: 
<< предыдущая заметкаследующая заметка >>
09 ноября 2011
новости жизни: как пишутся стихи и прочая ерунда

Как пишутся стихи

В прошлый четверг я так и не сдал колонку в F5. И не только из-за того, что болел и была нулевая работоспособность, а из-за ряда стратегических ошибок. Например, ошибка — позавтракать. Работать можно только на голодный желудок, а поесть уже вечером, когда работа сдана. Другая ошибка связана с неправильно выбранным размером. Об этом имеет смысл рассказать подробнее.

Тема была — появление 7-миллиардного жителя Земли. Идею для стиха я, подумав, выбрал тоже не самую удачную — обыграть, сколько из этих жителей составляет какой-то их процент. Сколько женщин, мужчин, сколько это пидарасов (если их 7%, как говорит статистика). Поэтому файлик стиха начался кодом, который я планировал использовать вместо калькулятора всякий раз, когда мне потребуется очередная цифра:

#!/usr/bin/php

<?php
$nas=7000000000;
echo (($nas*0.07)/1000000)." mln\n";
exit;
?>

Танцуй, душа, слагайте песни барды!
Недавно в новостях сказали всем:
нас, жителей планеты, миллиардов —
отныне семь!

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

Дело в том, что такой ритм подразумевает «частушку» — то есть, каждый куплет должен представлять собой один тезис, и заканчиваться ударной шуткой, на худой конец — просто высказыванием, подводящим черту. Это значит, что нельзя, например, сделать заход на шутку в три куплета — каждый будет требовать интонационной развязки. В результате родилось несколько вступительных четверостиший, до выхода на тему так и не дошло, и стих остался незаконченным:

Танцуй, душа, слагайте песни барды!
Недавно в новостях сказали всем:
нас, жителей планеты, миллиардов —
отныне семь!

Семь миллиардов жителей планеты!
Детей, парней, девчонок — в общем, всех!
Мы молодцы, товарищи! Ведь это —
большой успех!

Сегодня мы, как говорят в науке, —
на пике взлета, остром, как кинжал!
Товарищи, пожмем друг другу руки!
Всем, кто рожал!

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

На круглой диаграмме нашу дольку
не превосходит ни один зверёк!
Нас обгоняет в численности только —
стафилококк.

Так хочется воскликнуть «Слава богу!»
Так хочется скандировать «Ура!»
Нас, жителей Земли, не просто много.
Нас — до хера!


Полезная работа по дому

Как у наших у ворот — открытый код / открытый код!
А потом наоборот — открытый код / открытый код!

Поскольку я активно выздоравливаю, появились силы, я занялся полезной работой. За день я: побегал по дому с перфоратором, повесил карнизы, ноутбук на стену, короба для проводов, и еще много полезных вещей прикрепил к стене.

Вдобавок наконец занялся сервером и с помощью умных советов Морозовского, Serge и gvs навел порядок на винчестерах. Оказывается, при переезде с винчестера на винчестер не все можно скопировать, что копируется. Я даже положу здесь эту ценную команду себе на память: tar cf — -C /path_from . | tar xvpf — -C /path_to

В результате у меня в сервере стоит 1Тб+2Тб+2ТБ (последний я успел хапнуть буквально за неделю до наводнений), ну а два Сегейта по 500Гб выкинуты из корпуса нафиг, и я теперь думаю, какое им бы найти применение. Добрый Морозовский советует разобрать на блины и делать подвеску для кухонных ножей из магнитиков. Ужос.

Хотел сделать архивный винт, подключил к Линуксу, выяснилось дивное: вы не поверите, Линукс не умеет работать с партицией UFS! Читал в интернете, говорят, какие-то из Линуксов умеют, но только на чтение. И если пересобрать ядро. Я в ахуе. Это ж открытый код самой родственной Линуксу системы! Поддержка NTFS — и то сделана, а UFS — не умеет? Позор. Что я могу сказать? См. эпиграф.


Ну и традиционные вопросы по говнокодингу

1. Давно хотел спросить. Как мне написать regexp типа такого: /<([^]+)>/s, но только для сущностей, больше, чем один символ? В смысле, найти текст, который бы не содержал не символов '>' и '<', а определенной текстовой конструкции. В принципе, задача найти вложенный тэг "нужное" между двумя ограничителями: {# ерунда {# нужное #} ерунда #}

Несколько лет назад, когда приезжал брат Санек из Штатов (а он знает всё, у меня такое впечатление), я ему задал это вопрос, пока мы пили чай и болтали. Он сказал, что так сходу за чашкой чая не скажет, но может спросить в Штатах у мужика, который создал язык regexp, потому что в одном отделе работают. Я застеснялся. Зря наверно ;) Но интересно, что прошли годы, а вопрос остался.

2. Подскажите, а какую версию Хакинтоша нынче модно ставить? Ну не на магнитики же пускать Сигейт 500Гб, лучше Хакинтош попробовать. Какой модный в этом сезоне, киньте ссылку?

3. Ну и последнее. Поскольку loginza.ru оказалась пидорской поделкой, позволяющей логиниться с любого аккаунта, хоть самого создателя Фейсбука, я зарекся доверять сторонним библиотекам и виджетам, и понял, что надо все делать руками, только тогда будет толк и надежность. Если у вас есть код API авторизации в фейсбуках и прочих говноклассниках, подскажите. В смысле, такое API, которое посылает посетителя на сервер Фейсбука, а оттуда он, если авторизован, приходит обратно с токеном, который мне остается только проверить. Я слышал, что такое есть, но разобраться не смог в силу незнания иностранных варварских языков.

4. Ну а заодно посоветуйте, если есть простой OpeniD-Server в одном файле, который бы просто отвечал по openid, что такой юзер есть. Сервер — это чтобы мой движок сам мог раздавать openid зарегистрированным посетителям. В принципе, я ковырял самую известную и самую простую библиотеку phpMyID, но там, чтобы понять, родной ли юзер делает запрос, зачем-то сделана собственная авторизация через какой-то ужасный digest-протокол, который у меня на мобилке (и еще много где) не работает. При том, что авторизация мне нахуй не нужна — движок сам разберется, родной юзер или нет, мне нужно только, чтобы процедура давала ответ вовне — мол, да, авторзацию по Опенид прошел.

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий
Windows Opera
2
0
anonymous
Про регэксп не совсем понял задачу, но вот этот разбирает указанный пример:
\{#.*?\{#(.*?)#}.*?#}

Для фейсбука скорей-всего придется регистирировать свое приложение, чтобы была возможность проверять аккаунт пользователя фейсбука.
Linux Firefox
 Москва
0
0
Leonid Kaganov
1. О! Спасибо. Это я, похоже, просто туплю. Конечно же .+?, сам всегда пользую, а тут что-то заклинило.

Но тогда еще один вопрос: а можно как-то задать этому preg_replace, чтобы он, произведя замену, начинал поиск по тексту не дальше, а заново с начала, пока не останется ничего для замены?

2. Да я уже понял, что каждое говно потребует зарегистрироваться. А где надо регистрировать АПИ и как?
Windows Opera
1
0
anonymous
1. Наверное проще цикл самому организовать

2. Знаю только про фейсбук. Для него надо:
- зарегестрировать аккаунт на фейсбуке.
- зарегистировать свое приложение под этим аккаунтом. Приложение регистрируется на определенный домен.
- получить appId и secret
Собсвтенно фейсбук предоставляет АПИ на различных языках, в том числе и для пхп.
Я уже не сильно помню. Могу покопаться в старом проекте, и выслать логику связанную с логином на фейсбуке.

P.S. Почему-то все-время слетает мой логин, нужно заново логиниться после обновления страницы.
Linux Firefox
 Москва
0
0
Leonid Kaganov
1. Цикл у меня сейчас и организован, я просто думал, что есть решение, а я туп.

2. Буду очень благодарен, если найдете!
Windows Firefox
0
0
V.exeR
Ллео, я же для Фейсбука и Вконтакта даже исходники выкладывал. Проспал все? :)
Linux Firefox
 Москва
0
0
Leonid Kaganov
UPD: Нет, вы не правы, .*? не годится конечно же, снова туплю.

В строке "{# первый {# второй #} третий #}" оно найдет не "второй", а "первый {# второй". Честно отработает типо. А надо - чтобы нашло вхождение, не содержащее ни конструкции {#, ни #}.
Windows Opera
0
0
anonymous
Отчего же?
Писал регэксп на Regexp Coach, проверил на php, работает как надо:
<?
$matches = array();
preg_match('/\{#.*?\{#(.*?)#}.*?#}/', '{# first {# seconds #} third #}', $matches);
print_r($matches);

результат:
Array
(
[0] => {# first {# seconds #} third #}
[1] => seconds
)
Windows Opera
0
0
anonymous
Но как указали ниже, регэксп не годится для разбора рекурсивных выражений. Для этого нужно писать свой синтаксический анализатор, но в вашем случае не составит труда распарсить модули из строки без всяких регэкспов.
Linux Firefox
 Москва
0
0
Leonid Kaganov
Это как?
Linux Firefox
 Москва
0
0
Leonid Kaganov
Простите, что вы делаете? Вы задаете свою жесткую конструкцию вида {# ааа {# ббб #} ввв #}. А если она будет другой? Если будет лишь один {# ааа #} - не сработает вообще. А если будет {# ааа {# ббб {# ггг #}#} ввв #} - выдаст "ббб {# ггг".
Windows Opera
1
0
anonymous
ну да, поэтому регэкспы здесь и не годятся
Windows Opera
 Обнинск
1
0
Wgent.com (#1016461)
Сталкиваясь с рекурсивным вложением, я применяю не совсем корректный трюк - инвалидирую уже найденные цепочки, заменяя двухсимвольные разделители односимвольными из таких знаков, которые очень надеюсь в реальном тексте не встретить:
$s="{# первый {# второй #} третий #}";
$s=str_replace( "{#", "‡", str_replace("#}", "†", $s) );
while( preg_match_all("/‡[^†]*†/Usi", $s, $matches, PREG_SET_ORDER) )
for($i=count($matches)-1; $i>=0; $i--)
$s=str_replace( $matches[$i], SomeFunction($matches[$i][0]), $s);
Либо вообще стараюсь не использовать ограничители из более чем одного символа.
Windows Safari Chrome
2
0
Евгений
Спасибо. Я очень очень очень сильно ржал.
Windows Safari Chrome
2
0
Вип Вап (#1194432)
Мух все-равно больше.
Windows Safari Chrome
0
0
Евгений
Не находит что-то в re, это, кажется, с восклицательным знаком:
(!:text)
UFS? А что, вот эта штука:
/lib/modules/`uname -r`/kernel/fs/ufs/ufs.ko
не работает? Или это что-то другое?

Я бы попробовал, но не на чем. Разве что поставить FreeBSD в виртуалку...
Linux Firefox
 Москва
0
0
Leonid Kaganov
Модуль и впрямь есть!

[[email protected] ~]$ sudo ls /lib/modules/3.0.3-std-def-alt0.M60P.1/kernel/fs/ufs/
ufs.ko

Но почему он не грузится и что с ним дальше делать? В маунтах тоже не видно:

[[email protected] ~]# mount
mount mount.crypt mount.encfs13 mount.nfs mount.ntfs-3g
mount.aufs mount.crypt_LUKS mount.fuse mount.nfs4 mountpoint
mount.cifs mount.crypto_LUKS mount.lowntfs-3g mount.ntfs
Linux Safari Chrome
0
0
thesame.ml
А mount -t ufs ... не работает?
Linux Firefox
 Москва
0
0
Leonid Kaganov
Отвечает, что неизвестный тип файловой системы.
Linux Firefox
0
0
Пётр (#1016705)
А если сделать "modprobe ufs" и потом mount -t ufs?
Linux Safari Chrome
0
0
thesame.ml
А, ещё и тип указать надо. Вобщем, примерно так:
mount -t ufs -o ufstype=ти /dev/чётам /mnt/чётам
типы перечислены в man mount
Mac Firefox
0
0
anon (#1265657)
% apt-get install ufsutils

ну или аналоги
Linux Firefox
 Москва
0
0
Leonid Kaganov
[[email protected] linux]# apt-get install ufsutils
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
E: Невозможно найти пакет ufsutils
Mac Firefox
0
0
anon (#1265657)
Ну так в дебиане пакет называется, вашем дистрибутиве может же и по-другому. Вообще, файловые системы, поддерживаемые ядром можно глянуть в /proc/filesystems. Если (после modprobe ufs) ufs там есть, то дело, возможно, в отсутствии нужных библиотек/executables. В дебиане, в частности, барахло для ufs лежит в пакете ufsutils. Попробуйте apt-cache search ufs и поискать там что-нибудь в стиле ufsutils или ufsprogs.
Windows Safari Chrome
 Красноярск
7
1
__sleeper_
По мне так вполне законченный стих.
Mac Safari Chrome
1
0
Так и не смог залогиниться со своим сайтом bolknote.ru, говорит, что или что-то там протухло или это не мой URL.

Вместо логинзы попробуй вот это: http://www.google.ru/friendconnect/admin/site/

Рекомендую.
Linux Firefox
 Москва
0
0
Leonid Kaganov
Попробовал, но абсолютно не понял, каким образом этот виджет способен сообщить моему серверу lleo.me/login.php, что данный посетитель является таким-то.

Похоже, это какая-то глюкалка сама в себе, кнопочка гугля, не имеющая никакого отношения к серверному программированию.
Mac Safari
 Москва
2
0
[email protected] (user/TE0I0TEJIb)
По поводу хакинтоша:
Все таки Mac OS не линукс и понятии "сборка" здесь другое.
Сборки это образ обычного установочного диска OSX с подготовленными дровами для PC.
Но сейчас сборки почти не делаются, тк появился способ установить систему с оригин образа и установить именно те дрова, которые те нужны (а то после сборок мусора много всякого). Драйвера в OSX выглядят как kext файлы (на самом деле это папки)
На самом деле вариантов очень много и все зависит от того, какой у тебя процессор. У тебя я так понимаю Intel Core Duo, так что советую способ с iBoot (http://tonymacx86.blogspot.com/2010/04/iboot-multibeast-inst[...])
Впринцепе можно скачать и сборку, на рутрэкере есть раздел Хакинтош
Если будут вопросы - пиши на имэйл, я хакинтошник уже года 3
Linux Firefox
 Москва
0
0
Leonid Kaganov
У меня в данном случае Intel Core 2 Duo 1.86GHz / Gigabyte G33M

По ссылке прошел, скачал iBoot-3.2.0.zip и зачем-то iBoot-Legacy-2.7.2.zip

Я правильно понимаю, что мне следует купить саму iOS Leopard http://store.apple.com/us/product/MAC_OS_X_SNGL за 29$? Это мне нравится.
Linux Safari Chrome
1
0
kirushik
Абсолютно всё равно, покупать её или скачать с торрентов — при установке МакОС на компьютер, не произведённый в Apple, вы всё равно нарушаете лицензию.

Вроде есть на торрентах готовые образу для установки МакОСа на обычные компы, и из них iAtkos хвалят больше всех.
Но я кроме как внутри виртуалки нигде не пробовал.
Там-то понятно что всё работает.
Linux Firefox
 Москва
1
0
Leonid Kaganov
Послушайте, но 29$ - разве жалко отдать Apple?
Linux Safari Chrome
2
0
kirushik
Можно отдать, можно не отдавать.
Всё равно подобная инсталляция одинаково незаконна.

Я не то чтобы отговаривал кому-то какие-то деньги платить. Не о том речь.
Скорее о том, что Вам, Леонид, с Вашим хакинтошем в Эппл не будут рады.
Windows Firefox
 Санкт-Петербург
0
0
вин (#1241751)
Я бы порекомендовал сначала протестировать совместимость с помощью образа с торрентов, а потом покупать - дабы не брать кота в мешке. И волки сыты, и овцы целы.
Linux Safari Chrome
0
0
kirushik
Блин.
Хром 15, Дебиан Тестинг.

После нажатия кнопочки «send» не происходит ничего, и хочется жать её ещё и ещё.

В консоли джаваскрипта — 405 ошибок в main.js
Windows IE
0
0
D.iK.iJ
Ого!
Mac Firefox
 Сумы
0
0
jankkhvej (#1238197)
У вас похоже старое железо для сборок iBoot, вам надо внимательно там почитать, возможно придётся использовать iBoot legacy...
Тони затачивает свои загрузчики для тех конфигураций, которые у него там в блоге описаны. На других чипсетах возможны проблемы с USB, video, сетью и так далее.

Почитайте ещё Тутубалина - http://blog.lexa.ru/mac/hackintosh
Он там рекомендует сборки ModUSB.
Linux Firefox
 Москва
0
0
Leonid Kaganov
Но на этом железе работает Хакинтош очень старой версии.
Windows Firefox
0
2
tamargochi (#1021298)
ICQ надо было и вовсе отключить.
Linux Firefox
 Москва
2
0
Leonid Kaganov
Чего отключить?
аську :)
Windows Opera
5
0
Nevermind (#1020125)
По поводу регекспов: регексп написать можно, но вообще вы сейчас делаете большую ошибку. Не надо разбирать текст со вложенными тегами регекспами. Они для этого не предназначены.

Вот например: http://stackoverflow.com/questions/1732348/regex-match-open-[...] (это про HTML, но любой другой язык разметки, который позволяет вложенные теги, вызовет те же проблемы)
Linux Firefox
 Москва
0
0
Leonid Kaganov
Сорри, я не читаю на иностранном.

Суть такая: в движке есть понятие модулей. Например:
{_CENTER: текст _} - вывести текст по центру. Или:
{_TABLE:
товар | цена | количество
молоко | 27 | 2
хлеб | 20 | 1
_} - нарисовать простенькую табличку по графам

При этом модули могут быть вложенные:
{_CENTER:{_TABLE:
товар | цена | количество
молоко | 27 | 2
хлеб | 20 | 1_}

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

Испокон веков у меня используется такая конструкция, которая меня приводит в уныние, ибо ацки бездарна, хоть и работает:

function modules($s) {
$s_old=''; $stop=100; while($s!=$s_old && --$stop) {
$s=str_replace("{_","{",str_replace("_}","}",$s));
$s_old=$s;
$s=preg_replace_callback("/{([^{}]+)}/s","module",$s);
}
return $s;
}

Сейчас я пересматриваю понятие модулей в движке - мне понадобились модули уже в ваших комментариях или условные ветвления во всех системных шаблонах, которые тоже теперь будут отдельными. Хочу понять для себя эту простейшую штуку.
Windows Firefox
16
0
1 (#1238062)
перевод вышеприсланной статьи:

(X)HTML нельзя парсить регулярными выражениями. Потому что невозможно распарсить HTML регулярным выражением. Регулярные выражения — недостаточно мощный инструмент для того, чтобы понимать конструкции HTML'я. HTML не является регулярным языком, он является контекстно-свободным языком. Никто не может распарсить HTML с помощью регулярных выражений. Регулярные выражения не способны выдавать значащий результат из html-каши. Каждый раз, когда вы пытаетесь парсить HTML c помощью регулярных выражений, Бог убивает котёнка, Noam Chomsky просыпается и плачет, а Российский Хакер Хэлл ломает ваши веб-сайты. Попытка распарсить HTML регулярными выражениями призывают на землю души умерших говнокодеров. Регулярные выражения и HTML-парсер подходят друг другу как селёдка и молоко. Пытаясь парсить HTML с помощью регэкспов, вы совершаете инцест, взываете к духу Древних, привлекаете внимание Того Кого нельзя называть, из-за этого погибли дин?завры, из-за этого пала Римская Империя, разрушен Карфаген. За попытку распарсить HTML р*гулярным выражением чуть не закида?? камнями даже И?????????Eсуса. П???йтесь ш???? ло?а с??лько же ???но то у?? ??
Linux Firefox
 Москва
0
0
Leonid Kaganov
А кто вообще сказал, что речь про HTML? У меня совершенно не HTML, а свой собственный тэг в своих собственных данных, не имеющий к "html-каше" никакого отношения.
Windows Opera
2
0
anonymous
Разница то какая. И там и у вас есть набор вложеннных тегов.
В общем не парьтесь, если у вас есть функция, которая все делает, хоть она и смахивает на хак.

ЗЫ письмо отправил
Windows Safari Chrome
1
1
Sol
Не знаю кто такой "Noam Chomsky"...

Гугл-переводчик это место мне перевел так:
"Каждый раз при попытке разбора HTML с использованием регулярных выражений, нечестивый ребенок плачет кровью девственниц"

рыдаю...

p.s. Леонид, отправленный пост теряет все форматирование - съел все переводы строки
Windows Safari Chrome
 Новосибирск
0
0
Anton (#1095337)
> При этом модули могут быть вложенные

preg_match('/\{_([A-Za-z]*)\:(.*)\_}/s', $text, $matches);
Может, так?
В $matches[1] - название модуля.
В $matches[2] - параметры.
Windows Opera
 Обнинск
1
0
Wgent.com (#1016461)
Вообще-то, JFYI,
preg_match('/\{_([A-Za-z]*):(.*)\_}/s', $text, $matches);
это
preg_match('/\{_([a-z]*):(.*)\_}/si', $text, $matches);
а если убрать ошибки, то
preg_match('/\{_([a-z]*):(.*)_\}/Usi', $text, $matches);
И всё равно, это не будет работать, если какой-то свечёй в тексте случайно окажется левая последовательность знаков "_}".
Радикальное решение, вообще-то, таково:
Использовать вместо своевыдуманного языка разметки нормальный XML и функции хотя бы SimpleXML и не фачить себе моск.

(Чую, ща мну закидают тапками за идею использования SimpleXML вместо нормальных DOM-функций)
Linux Firefox
 Москва
0
1
Leonid Kaganov
Еще раз говорю: всем спасибо, мне уже все объяснили ключевое про регекспы. Напишу две строчки на substr/strpos как будет минутка.

Чую, сейчас за неработающими regexp длиной в километр посыпятся предложения подключить "вот эту готовую библиотеку", задействовать парсер XML, использовать JSON, Pyton и Haskell.
Windows Safari Chrome
 Новосибирск
0
0
Anton (#1095337)
Не, вот так надо:
preg_match_all('/\{_[A-Za-z]*:.*\_}/sU', $text, $matches);
Тогда в $matches[0] будут лежать строки вида "{_НАЗВАНИЕШАБЛОНА: ПАРАМЕТРЫ_}". У них можно выкинуть первые два и последние два символа и разбить по первому двоеточию.
Linux Firefox
 Москва
1
0
Leonid Kaganov
А у меня бывают модули и без двоеточия. Ладно, забейте, сделаю через strpos/substr, быстрее будет.
Windows Safari Chrome
 Новосибирск
0
0
Anton (#1095337)
Да, это тоже неправильный код. :( {_ CENTER: 123 _}
Windows Firefox
2
0
[email protected]Владимир Палант (blog)
Если правильно понял про регексп, то /&lt;(.(?!text))+&gt;/ - найдет текст между &lt; и &gt;, не содержащий слова "text". Но это лучше не делать, быстродействие будет жутким. Лучше найти все строки между &lt; и &gt; и проверять функцией, есть ли в них слово "text" (на PHP можно с помощью preg_replace_callback).

Про Фейсбук послал на почту.
Windows Firefox
3
0
Redy (#1016750)
Так вы стихи, стало быть, пишете в столбик и только потом переводите в неудобочитаемый сплошной текст? А зачем?
Linux Firefox
 Москва
1
0
Leonid Kaganov
Например, затем, что колонка в газете F5 - блок на 3000 символов, а не восемь столбиков для куплетов.
Windows Firefox
7
0
ЖК
Ну вот. Наконец-то хоть одна рациональная причина для такой нетрадиционной записи стихов.
Linux Safari Chrome
5
0
Д.С. (#1018858)
А у него в движке в коментах тоже все переводы строк пропадают. Вестимо, это как-то связано.
Windows Firefox
0
0
МуZыка
А меня стих очень порадовал! Или может так на настроение легло)))
Windows Firefox
3
0
Litho (#1232310)
Мои познания о регэкспах, так что я могу сказать глупость, но для данного конкретного случая (все строки, начинающиеся на {#, заканчивающиеся на #}, и не содержащие этих строк внутри), как насчет такого:
\{#((\{+[^#\{])|(#+((\{+[^#\{])|[^#\{\}]))|[^#\{])*#+\}
Linux Firefox
 Москва
4
0
Leonid Kaganov
Пойду-ка я лучше использую substr, глядя на такое :)
Linux Firefox
0
0
Пётр (#1016705)
Скажите, а при выполнении этого кода защита "rm -rf /" от удаления корневой папки корректно обходится? :-)
Linux Firefox
 Москва
5
4
Leonid Kaganov
У меня этот код тоже не работает:

[[email protected]]# rm -f /
rm: невозможно удалить «/»: Это каталог
[[email protected]]# rm -f /*
[[email protected]]#

Блин ненавижу Линукс, ничиво не работает!!!
Windows Firefox
5
0
Torvin
куда флажок -r потеряли?
Windows Firefox
3
0
Aleksandr
Только на этой странице после поста вроде бы о поэзии и творчестве может идти несколько килобайт зубодробительных обсуждений на разных языках программирования...
Linux Firefox
10
0
Пётр (#1016705)
Мы ни при чём! Хозяин блога начал регулярно выражаться в самом посте!
Windows Opera
 Обнинск
0
1
Wgent.com (#1016461)
Боян же:
"Это канал анимэ? Подскажите пожалуйста, как пропатчить KDE под FreeBSD?"
Linux Firefox
1
0
ximaera (#551697)
Что касается регекспа, то на Python это делается так:

.*\{#(((?!#}|{#).)*)#\}.*

Например:
>>> re.match(r'.*\{#(((?!#}|{#).)*)#\}.*', '{# some shit {# what I need #} #}').groups()
(' what I need ', ' ')
>>> re.match(r'.*\{#(((?!#}|{#).)*)#\}.*', '{# aaa {# bbb {# ggg #}#} vvv #}').groups()
(' ggg ', ' ')
>>>

На PHP сами переписывайте. Догадываюсь, что переписывание сведётся к правильной расстановке обратных слешей.
Linux Firefox
1
0
ximaera (#551697)
'(?!abc)' даёт 0-позиционный матч в случае, если точно в данном месте строки нельзя сматчить 'abc'. Соответственно, '(?!#}|{#)' даёт матч в той позиции, где далее нет ни '#}', ни '{#'.

Конструкцией '(?!#}|{#).' мы проверяем, что перед данным символом, обозначаемым точкой, в данной группе не стоит '#}|{#'. А потом берём сколько угодно таких символов подряд -- '((?!#}|{#).)*'.
Windows Firefox
2
0
Владимир Кузьминых
3. А uLogin пробовал? Я понимаю, зарок есть зарок, но автор пишет, что сделал виджет, устав бороться с логинзой.

http://habrahabr.ru/blogs/webdev/130893/
Linux Firefox
 Москва
0
1
Leonid Kaganov
Осподи, какое счастье!
Вот только боюсь, что и там дыры...
Windows Firefox
0
0
Ошка (oshkins)
А подзамка теперь (после ре-авторизации) не будет видно, да? Жалко, мне нравилось.
Windows IE
 Москва
0
0
Андрей (#1240825)
Залогиниться не получается. В окошке логина ровно секунду видно содержимое (textbox логина и выбор соцсетей/OpenID), затем всё пропадает, окошко становится девственно белым. Иногда удаётся успеть кликнуть на textbox, но это не спасает. IE8, XP
Windows IE
 Москва
0
0
Андрей (#1240825)
В окошке добавления комментариев такой фигни нет
Linux Ubuntu Safari Chrome
0
0
[email protected] (oreolek.ru)
Я знаю только API вконтактика. В контактe нужно:
- аккаунт
- зарегистрировать своё приложение как домен
- получить коды разработчика

В интернете и специальных группах для разработчиков можно найти код для PHP.
Windows Safari Chrome
0
0
Mike (hist_kai)
Нужно чуть больше информации про поиск между тегами. С конкретными примерами, что ищется, где, и что должно получиться в итоге.
Linux Firefox
0
0
George Kouryachy
[email protected]:~> grep ufs /etc/fstab
Linux Firefox
0
0
George Kouryachy
/dev/disk/by-id/ata-ST3120827AS_5MS080CB-part9 /mnt/FreeBSD ufs ro,ufstype=ufs2 0 0
Linux Firefox
 Москва
0
0
Leonid Kaganov
Рад, что твой диск с твоей геометрией у тебя работает хотя бы в ReadOnly :)
Windows Firefox
0
1
kababok (#1241190)
А-а-а-а, Ллео, почему Николя в 20:36 по Берлину Ломоносова читает?!!!

чем вызвано именно это время?! %)

Ладно, в Москве в этот момент 23:36.

Но, почему?!!! 8)
Windows Firefox
5
0
denies
Про стихи. Вот что писал АС Пушкин на эту тему:


Вечерняя заря в пучине догорала,

Над мрачной Эльбою носилась тишина,

Сквозь тучи бледные тихонько пробегала
Туманная луна;
Уже на западе седой, одетый мглою,
С равниной синих вод сливался небосклон.
Один во тьме ночной над дикою скалою
Сидел Наполеон.
В уме губителя теснились мрачны думы,
Он новую в мечтах Европе цепь ковал
И, к дальним берегам возведши взор угрюмый,
Свирепо прошептал:

Тут соседствуют шестистопный хорей и трехстопный; у тебя пятистопный и двустопный. Не согласен, что ошибка с размером "стратегическая". Прием науке известный, хоть и не избитый, и песня Баратынского тому подтверждение.

Во-первых, ты все равно пишешь (демонстрируешь написанное) "в строчку", и вполне мог бы поиграть количеством стоп, усекая когда до 4х, когда до 3х, а когда и до двух - никто не заметил бы подвоха. Во-вторых можно было бы после двустопной строки пустить пятистопную с цезурой после третьей. Она бы добила обрезанную строку до полной ритмически. Содержательно же ее можно было бы начать с союза или прилагательного, привязанного к предыдущему существительному. В-третьих, оно и так не особо и разваливается.

Скорее всего неудача вызвана тем, что сработала твоя установка не писать на трагические темы. А экспоненциальный рост популяции человека с учетом конечности и ограниченности природных ресурсов в долгосрочной перспективе (а может и раньше) не предвещает человечеству ничего хорошего. Я в школе двойку по биологии получил, за то что сказал, что население земли "4 млрд. с лишним", а население к тому моменту перевалило через 5 млрд. (обидно было, я лазил в книжки в библиотеке и читал это там, но видно источник устарел). А теперь уже 7. Сколько будет еще лет через 20 и что они все будут делать, если в метро с утра и так уже не войти?

Я тоже пытался откликнуться на данное событие, немного в другом ключе, но не сумел, ибо нахожусь в глубоком творческом кризисе. Уверен, что и у тебя не вышло отнюдь не из-за размера... Удачи.
Windows Firefox
0
0
denies
не знаю, куда подевались все ентеры :(
Linux Safari Chrome
0
1
Павел Пеников (#1028624)
Авторизуюсь через Гуглю, пишет "empty session. try again"
Windows Firefox
0
0
Clancy
/\{#([^#]+)#\}/
Windows Firefox
0
0
Tameo
3) по сервисам:
Вконтакте - заводите аккаунт, создаете приложение, используете APP_ID приложения для взаимодействия с API
Одноглазники - заводите аккаунт, потом на их dev-сайте заполняете специальную формочку "хочу стать разработчиком". Получаете положительные ответ саппорта, после чего можно создавать приложение
Твиттер - не пробовал, но должно быть гуманно ( по крайней мере кнопочка "Твитнуть" подключается вполне внятно)
Фейсбук - заводите аккаунт, пробуете создать приложение, получаете пинка под зад и письмо от саппорта "Ну-ка, покажи скан паспорта!". На этом я застрял.
Windows Safari Chrome
2
0
[email protected] (myid.config.php)
А в чём заключается смысл демонстрации всем того, на что у них нет прав? ("Fatal Error." "Только для админа.")
Windows Firefox
 Донецк
0
0
Lintruder (#1070465)
www.freenas.org
прекрасно понимает UFS и
с радостью поглотит твои 500гиговые сигейты.

Управление с русифицированной вебморды. Из плюшек: запуск с флешки, шифрование встроенное(правда,АФАИР, только для всего диска,а не для разделов, и надо ставить 7 версию) в восьмой, вроде, нету пока шифрования, но зато есть файловая система ZFS - вся такая ошибкоустойчивая. Её на зеркале тестил:несколько раз в момент записи провода питания выдергивал , а ей хоть бы хны, а вот на UFS - рейд деградировал с 99,9% вероятностью после сбоя питания при записи
Linux Firefox
0
0
null
Это у вас ZFS ещё не разваливался. Вот когда развалится - восстанавливать его будет ой как непросто. А во FreeBSD он может развалиться фактически на ровном месте.
Linux Firefox
 Донецк
0
0
Lintruder X58C (#1249091)
Пруф?
Да и с чего ему разваливаться? Разве что от неумелых действий пользователя. В зеркале он на FreeNAS 8 - там ZFS уже имеет статус штатной фичи, а не экспериментальной, а загрузка с флешки.
И потом, управление через вебморду даёт меньше шансов что-то сломать.
И на совсем крайний случай - "у меня проездной"(бэкапы на зеркале UFS Freenas7):)
Linux Safari Chrome
 Mountain View
0
0
Alexander Levitsky
У меня примерно 5 лет опыта с ZFS, правда на Opensolaris. За это время с системой чего только не происходило, и матери горели и блоки питания и дураки вытаскивали не тот диск при крахе диска. Происходили переезды на другие версии солярки. С массивом не случилось ничего. Похоже ZFS и вправду неубиваемая.
Linux Safari Chrome
 Mountain View
0
0
Alexander Levitsky
Но если бы я был писатель, то давно забил бы хуй на местный storage и делал всё в Google docs.
Windows Firefox
0
0
den
Ну а для чего еще винты приспособить, как под хранилища данных (музыковидео), или бэкапов, на полочке?
Windows Firefox
1
1
Propir (#1241434)
Леонид, а почему вы в столбик пишите, а потом в строчку переделываете?
Windows Firefox
0
0
vlasovzloy (#1241458)
их не 7%, а на порядок больше. а из 2-х блинов я сделал зеркальце для бритья, склеил суперклеем
Windows Firefox
1
0
Me (#1244907)
На порядок - это 70% что ли?
Windows Firefox
0
0
игорь (maamont)
Наконец-то удалось снова-пере-за-логинться!!
Windows Firefox
0
0
Вероника (#1246043)
Тест тест
Linux Safari Chrome
 Mountain View
1
0
Alexander Levitsky
Как у вас тут интересно :) Целая regex война.
Санёк сразу по возвращению от тебя домой перешёл работать в Google и контакт с Larry Wall на ежедневной основе пропал.
Люди, которые говорят, что нельзя разобрать вложеный синтаксис регексами правы, для этого нужно lex/yacc. Но тебе наверняка такая сложность не нужна, видимо легче подойти творчески к проблеме.
В своё время подобную задачу мне удалось решить рекурсивно вызывая функцию, которая ищет в текущей строке подстроку удовлетворяющую регексу. Получился depth-first traversal.
Windows Opera
0
0
261 (#1257087)
lex/yacc для задачи ЛЛео как из пушки по тараканам..

несложный лексер на четыре токена + банальная рекурсия в качестве парсера.

задачка по основам программирования, раздел "рекурсия".
Windows Opera
 Обнинск
0
0
Ой
Windows Firefox
0
0
Dmitry X
Хакинтош лучше всего ставить из оригинального Retail-образа. В сборки пихают много всего, и это "многое все" может здорово конфликтовать (я про драйверы).

Общий алгоритм (все делается из под Мака или хакинтоша):

0) Берем флешку на 16 ГБ
1) Качаем DMG-образ оригинальной Mac OS X 10.6.3
2) Форматируем флешку в HFS+
3) Восстанавливаем через "Дисковую утилиту" содержимое DMG-образа на флешку
4) На всякий случай для флешки делаем через консоль enableOwnership командой diskutil
5) Качаем свежий загрузчик (хамелеон)
6) Запихиваем на флешку загрузчик (делается это в три-четыре команды fdisk)
7) Создаем на флешке директорию Extra
8) Помещаем в директорию Extra текстовый файл com.apple.Boot.plist (читаем маны что туда писать)
9) Создаем на флешке директорию KextBackup
10) Временно переносим в нее конфликтные kext-файлы (на самом деле это директории, но это не столь важно) из директории ...FLASH/System/Library/Extensions
11) Создаем в директории Extra поддиректорию Extensions
12) Кладем в нее необходимые kext-файлы (зависит от материнской платы, читаем маны какие файлы нужны); если для материнки есть проверенный DSDT-файл, то его тоже суем сюда, и прописываем в com.apple.Boot.plist
13) Через "Дисковую утилиту" выполняем для флешки команду "восстановить права доступа"
14) Вытаскиваем флешку из Мака, втыкаем в будущий хакинтош и пробуем грузиться в инсталлятор; если инсталлятор загрузился нормально, значит и установленная система тоже скорее всего загрузится нормально.
15) После завершения установки снова грузимся с флешки, если загрузилось, то делаем те же процедуры по п.6,7,8,11,12 но уже по отношению к партиции с установленной Mac OS X.
16) Обновляем систему; если стоит кастомное ядро, то оно должно иметь другое имя (не mach_kernel) и должно быть прописано в com.apple.Boot.plist

По поводу п.8: желательно вписать ключ "-v", в стартовые параметры для ядра, чтобы видеть из-за какого драйвера выбивает kernel panic. Также желательно отключить графический режим для загрузчика (как это сделать написано в README хамелеона), ибо в некоторых случаях GUI не показывает набираемые символы.

Лично я успешно поставил хак Snow Leopard 10.6.8. Без бубна, из скиллов применялись: вдумчивое чтение документации и хреновенький уровень английского языка.
Mac Firefox
 Chatham
1
2
Роман (#1251048)
Хакинтов - это верный способ убить кучу времени на полную и абсолютную ерунду. Это все равно что пытаться установить в дешевую стиральную машину микропрограмму от самой навороченной. Это даже хуже чем пересобирать ядро линукса.

Может это и интересно, но какой смысл? Убедится что драйвера будут глючить до посинения, а необходимость обновлений будет вызывать судороги и ночные кошмары?

Собственно список из 16 пунктов просто кричит о том, что хакинтош не нужно трогать.
Nokia-E90 Safari
 Москва
0
0
[email protected] dsdfsf (lleo)
А у меня жена четыре года на нем работает.
Mac Safari
3
4
Sergii Pravdzivyi
Спасибо, блять, за «куку» в 4 часа ночи, в половину громкости ноута, которую я забыл выключить после просмотра фильма. За такое убивать надо.

всего комментариев: 157

<< предыдущая заметка следующая заметка >>