?

Log in

Bonjour от Apple

Поимели сегодня траблы по самое небалуйся.

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

задача достаточно нетривиальная и может поставить в тупик - как учесть произвольный порядок необходимых символов? можно, конечно, налепить многокилометровую регулярку, с комбинированием возможных вариантов... а можно воспользоваться поиском с возвратом. наиболее компактное (найденое мною) выражение - выглядит так:

(^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*){8,}

коротко и... ясно? давайте разберемся...

(?=pattern) обозначает опережающую проверку, когда совпадение происходит в позиции, после которой следует pattern, не включая сам pattern в совпадение. т. е. - /a(?=\d)/ совпадает с буквой a, после которой следует цифра, однако в само совпадение - цифра не попадает. При этом - поиск выполняется с возвратом, регулярное выражение как-бы заглядывает вперед - отсюда и название - опережающая :)

в результате получаем:
(?:                   группирующие скобки
       ^              начало строки
       (?=.*[a-z])    есть ли после начала строки любое количество символов и строчная буква?
       (?=.*[A-Z])    есть ли после начала строки любое количество символов и строчная буква?
       (?=.*[0-9])    есть ли после начала строки любое количество символов и цифра?
       .*             произвольное количество любых символов
){8,}               ну и проверка, что все это безобразие - повторяется никак не меньше 8 раз


Да, забыл замое главное. Эта задача представляет собой чисто академический, на мой взгляд, интерес. Гораздо практичнее - написать несколько проверок и объединить их через &&.
Рано или поздно, все совершают одни и те же ошибки. Рецепты для того, чтобы их избежать достаточно просты. Сложность заключается лишь в том, что их нужно соблюдать.

1. Если у вас еще нет ни одного готового проекта - сделайте что-то небольшое за символическую плату, но подойдите к этому серьезно, будто вы пишете коммерческий проект.
ДалееCollapse )
Всегда хорошо иметь свою стратегию: план развития, принципы работы и жизни в целом. Ее необходимо постепенно дорабатывать, корректировать и улучшать, но никогда не менять резко и целиком. Всегда учитывайте, что в каждый конкретный момент вы можете думать немного по-разному. И настоящее "Я" заключается в среднем. Оберегайте это "Я" и не подставляйте его.

Больше информации для новичков по теме будет на бесплатном тренинге "Как начать зарабатывать программисту". На сайте http://www.rich-it.com можно узнать подробнее.
Не секрет для любого программера, что успешная карьера во многом зависит от того, как ее начать. Если изначально направить свои силы в правильное русло - можно сэкономить массу времени и усилий, гораздо быстрее прийти к стабильной зарплате и потребности в себе, как в специалисте. Однако, в самом начале пути, будучи еще студентами и устраиваясь на свою первую работу, программисты совершают одни и те же типичные ошибки, которые приводят к неопределенности и к неумению преподнести себя, как специалиста.

1. Отсутствие цели. Когда программер устраивается работать для того, чтобы решить свои финансовые проблемы в данный момент и ничего больше его не интересует - он может потерять много сил занимаясь совершенно не тем, что ему на самом деле необходимо.
Далее...Collapse )
Заключение:

Не все йогурты одинаково полезны и не каждый начинающий специалист может хорошо преподнести себя. Но тем не менее, всем нам приходится периодически "продавать себя" и всем хотелось бы продать себя подороже. Этому редко учат в институте, но в конце-концов, это также необходимо, как и хорошо разбираться в своей области. И самое главное, если это уметь, то все в конечном счете выигрывают.

Статья взята с www.rich-it.com. Больше по теме можно узнать здесь.

 В зеленоградский офис технологичной и перспективной компании "ИФК Опцион", для создания нового замечательного веб проекта, нацеленного на зарубежный рынок, требуются программисты!

1) ведущий программист, профессионал, который разбирается в сетевом web программировании, знает что такое 100000 хитов в сутки и как защитить сайт от иноземных захватчиков на зарплату 80000 рублей в месяц.

2) помощник ведущего программиста, который знает, что не надо перегружать страничку, чтобы выкинуть продукт из корзины, а также разбирается в ООП на ПХП и желает создать самый лучший интернет-магазин в мире на зарплату 50000 рублей в месяц.

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

Мы Вас ждем.

P.S. Для иногородних - сдаем корпоративные квартиры,  дешево. Только членам профсоюза ;)

С уважением,
Коллектив разработчиков "ИФК Опцион"  (ася 396255537, zelenograd@option.ru)

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

Возникла потребность у друзей в установке web-тикет-системы для фиксирования отношений между клиентами и компанией-исполнителем. Оптимально если PHP/MySQL и бесплатно, с возможностью расширяться.

Есть ли какие-нибудь рекомендации, опыт работы (положительный, отрицательный) и т.д.?

кросспост

joomla

Добрый вечер участникам коммьюнити. У меня вопрос про joomla

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

Дайвинг (заголовок )
дайвинг - это блаблабла (текст по разделу)

Страны (подзаголовок)

Австралия - (Подменю, с текстом внутри)
Бора бора - (Подменю, с текстом внутри)
...

как это сделать?
Не так давно я описал про очевидные (по крайней мере для меня) вещи. Как оказалось заметка была полезной, поэтому как и обещал продолжу писать о простых истинах. И так верстка.

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

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

А сверстать полностью div-ми да еще и кросс браузерно не хватает опыта. Поведение div-ов кажется сложным и непредсказуемым. Толи дело таблица. Разметил шапку, блок контента и футер, указал их высоты и получил во всех браузерах ожидаемый результат. Не приходиться эмулировать для IE свойство min-width, нет проблем с вертикальным выравниванием, при изменении размеров окна верстка не "ползет".

И вот верстальщик приходит к компромиссному варианту. Внутренние div-ы будут грузиться быстро, а таблица одна и она простая, значит должны получить быструю отрисовку страницы с предсказуемостью поведения таблиц.
Это не правильно. Это самообман.

Показываю на примере.
Я написал две небольших тестовых страницы с эмуляцией медленного или нестабильного соединения, когда данные браузеру приходят не сразу. Эта полностью на div-ах:
div-ый вариант,
а эта по схеме "скелет таблица, содержимое div-ы":
табличный вариант.

У меня первый вариант грузится так: шапка на 6-ой секунде, страница полностью на 9-ой. Во всех браузерах. Вариант с таблицей в IE отрисовывается только на 14 секунде, т.е. до тех пор, пока браузер не получил закрывающий тег </table> . В других браузерах ситуация лучше, они пытаются по возможности отрисовать страницу даже не полностью получив саму таблицу. Уже на 6 секунде отрисовывается шапка, но полностью страница загружается лишь на 14 после получения завершающего </table> .

Именно поэтому в контексте оптимизации кода я и считаю такую схему верстки ошибочной. Если же вам совершенно безразлично, как будет грузиться ваша страница в браузере, то можно спокойно разверстывать шаблон таблицами.
Осваивая Haskell, пришлось искать средства для комфортной работы, так как специально заточенных под данный язык IDE нет. Неплохим вариантом была работа в Eclips, но волею судеб пришлось от нее отказаться – по роду деятельности бываю в долгосрочных командировках и не везде она устанавливается с полу-пинка. Потом искал просто добротный редактор хотя бы с подсветкой синтаксиса – нашел JEdit, но потребности росли и занялся проблемой вплотную. И так, какие требования выставляются нашей IDE для Haskell:

* мощный редактор;
* подсветка синтаксиса;
* ведение проектов;
* автодополнение по контексту;
* интеграция с интерпретатором и компилятором с позиционированием ошибок по тексту кода;

И все это можно делать с помощью Vim`а.Collapse )

===========================================================
Mike, как насчет подветки на форуме посвещенной декларативному программированию? Существует огромное множество полезных и интересных языков программирования связанных так или иначе с данной тематикой и в последнее время бурно развивающихся (я имею ввиду haskell, erlang, у lisp открывается второе дыхание, Nemerle, в какой то степени python). Почему не уделить им всем хотя бы одну подветку =)