Search
Write a publication
Pull to refresh
99
0
Дима Семьюшкин @Devgru

Веб-разработчик

Send message

Обработка ошибок и исключений в PHP

Reading time6 min
Views39K
Эта «небольшая» статейка является развитием темы затронутой в этой статье.
Как известно, PHP зародился довольно давно и уже тогда возник вопрос, что делать с возникающими ошибками. Perl, который является несомненным прародителем PHP по умолчанию не имел какой-либо системы обработки ошибок. При возникновении любой ошибки сервер выбрасывал 500-ю ошибку и на этом все заканчивалось. Поэтому Warnings, Fatal Errors и Notices были настоящим прорывом в облегчении и без того нелегкого труда программиста. Однако время шло, механизмы PHP не менялись, а технологии, как известно, на месте стоять не любят.
Читать дальше →

Когда критическая ошибка приносит радость…

Reading time1 min
Views2K
Прочитав недавно на пьяную голову «Обработка ошибок и исключений в PHP», решил применить полученные знания на практике. Честно, ещё 6 часов назад не знал, куда это меня приведёт, но в итоге теперь мои скрипты при ошибка зажигают вот такой симпотный экран:


Хотите узнать, как я этого добился?

39-й способ скругления блока. Один тэг, одна картинка.

Reading time2 min
Views1.3K
Пару дней назад наткнулся на статью про 38 способов скругления блоков. Очень понравилось. Однако там я не встретил способа, которым пользуюсь уже около года. Он не требует лишних тэгов и требует загрузки только одной картинки (спрайт). Работает во всех современных баузерах и IE6+
Читать дальше →

Что делать с триллионом фотографий в Интернет?

Reading time2 min
Views1.8K
Разработка новых подходов к поиску фотографий в Интернет становится сейчас более чем перспективным направлением:

Просто потому что 100 миллиардов изображений появляются ежегодно.

Этому способствует 750 миллионов мобильных телефонов, приобретаемых нами, а также 100 миллионов цифровых фотоаппаратов, уходящих с прилавков ежегодно. В ближайшем будущем тот же Google планирует насчитывать в своем индексе 1 триллион изображений.

Компании улучшают текстовый поиск (Picsearch.com, Facesaerch.com). Другие работают с визуальными запросами (в качестве запроса — изображение, а не текст) или пытаются сочетать текст и картинку (Riya, Picollator.ru).

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

Производительность кодирования и декодирования serialize и json — часть вторая

Reading time2 min
Views3.4K
Первая часть моей публикации получила ряд конструктивных комментариев, которые дали толчок разобраться в проблеме более детально.

Новые графики, комментарии и выводы

Основы Python — кратко. Часть 4. Генераторы списков

Reading time3 min
Views221K
List comprehensions

Продолжим наш цикл уроков. Добрый день.

Генерация списков

Генерация списков (не знаю как адекватно перевести на русский list comprehensions) — яркий пример «синтаксического сахара». То есть конструкции, без которой легко можно обойтись, но с ней намного лучше :) Генераторы списков, как это не странно, предназначены для удобной обработки списков, к которой можно отнести и создание новых списков, и модификацию существующих.
Допустим, нам необходимо получить список нечетных чисел, не превышающих 25.
В принципе, только познакомившись с работой команды xrange решить эту проблему несложно.

>>> res = []
>>> for x in xrange(1, 25, 2):
...     res.append(x)
...
>>> print res 

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

Анонс сервиса — менеджера персональной информации

Reading time3 min
Views1.7K
Сразу скажу, проект в состоянии «Скоро можно пробовать», цена вопроса — около 2-х недель. В этом посте я опишу и покажу, что это будет за сервис.


Вдохновители


Основой данной идеи послужили: evernote, за свежий подход к хранению контента; todoist, за удобный древовидный способ хранения задач, где каждый элемент может стать контейнером для таких же элементов; как ни странно, outlook, за возможность хранения всего в одном месте, и еще куча сайтов и сервисов около GTD направленности.

Что получилось?


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

pChart — строим графики и диаграммы на PHP

Reading time1 min
Views64K
pChart — это PHP-библиотека для создания графиков, гистограмм и диаграмм. В отличие от большинства схожих библиотек, pChart бесплатна (распространяется под GPL лицензией). Из бесплатных главный соперник — Google Chart API.

Помимо класса, который рендерит изображения, есть классы для подготовки данных для построения графиков, а так же встроенный механизм кэширования.

Несколько примеров работы pChart

Верстаем пиксел в пиксел: кроссбраузерный аналог PixelPerfect

Reading time2 min
Views36K
Нет, с твоим монитором всё в порядке, %username%
Довольно часто некоторые заказчики, отдавая макет сайта на вёрстку, требуют попиксельно достоверной точности в разметке во всех браузерах.

Проверить такое соответствие достаточно легко — нужно сделать скриншот сайта и совместить его с графическим макетом, например, в Photoshop'е.

Но вот только в процессе вёрстки использовать такой приём не очень удобно.

Что же делать трудяге-верстальщику?

Полупрозрачный блок со скругленными углами

Reading time1 min
Views2.7K
Хочу представить на суд общественности свой вариант реализации полупрозрачного блока со скругленными углами. Кроссбраузерно, полностью резиново. На все про все 3 div'а. Интригует?
Читать дальше →

Расставив все элементарные точки над «семантикой»

Reading time6 min
Views2.5K
читайте уже наконеч что-то умное
Как сказал Robots: « а если без шуток, …, дилетантам лучше читать и учиться, а создание топиков оставить профессионалам.»

В ходе многих статей, которые в последствии назывались «непрофессиональными», расставляю для будущих писателей все точки над… Дабы больше не возникало нареканий в вашу сторону.

Не раз боролся Delka (Зенич Игорь) за семантичность кода, который пишут в статьях и который в последствии может использоваться как некий учебник для начинающих, тем самым осуществляя нарастание ошибок.

В этой статье я объединил (скомпилировал) уже изложенные мысли (!) многих людей, но почему-то так и не донесенные до большинства. (www.flack.ru, www.pepelsbey.net и некоторые другие)

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

Y Combinator и 30 идей или рынков, в которые мы готовы инвестировать. Вольный перевод, часть 1.

Reading time7 min
Views819
Сегодня поговорим о стартапах. Инициатором этой статьи стал материал от известнейшего венчурного инвестора, Поля Грехема (Paul Graham), который руководит уже известным нам фондом Y Combinator (о котором мы писали, да и в России уже появились фонды, в той или иной мере копирующие его бизнес-модель, например, addVenture, JumpIDEA, inVenture). Теперь он описал своё виденье рынка и указал на тридцать тем или скорее очертил круг интересов и рынков, в которые они готовы вкладывать. Впрочем, как правильный и успешный инвестор, он не ограничивается ими и готов рассматривать любую интересную идею (о чем и указывает в конце материала). Далее я переведу и попробую самостоятельно проанализировать эти рынки, а также позволю себе добавить и свои взгляды, указав на дополнительные интересные и перспективные направления. Это не дословный перевод, поэтому для тех, кто хочет изучить именно оригинал, вот ссылка на англоязычный источник.

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

Vim magic — Регистры

Reading time4 min
Views17K
Про регистры в Vim уже писали в предыдущих постах, но я решил собрать инфу воедино и немного дополнить. Прочитав эту статью, вы станете настоящими мастерами копи-пастинга (в хорошем смысле этого слова) :)

Сложно представить себе работу в редакторе без использования операций скопировать/вырезать/вставить. Vim предоставляет очень мощные средства, для этого. Итак, регистры — это то, куда Vim складывает те куски текста, которые вы копируете с помощью y или удаляете с помощью c или d, но не только. Есть ещё несколько специальных регистров, куда Vim помещает, например, текст, который вы искали с помощью / или текст, который вы drag-n-dropнули в окно редактора. Чтобы указать, что вы хотите скопировать или удалить текст в определенный регистр, нужно указать его имя перед командой. Например, «ayy скопирует строку целиком в регистр »a. Но не во все регистры можно писать, некоторые из них только для чтения (и даже есть один только для записи).

Ещё немного особой, Vimовской магии, связанной с регистрами, для затравки, чтобы было не лень дочитать до конца:
— Vim хранит небольшую историю удалений, так что вы можете вставить удалённый ранее текст, даже если после этого вы удаляли или копировали другой текст.
— Vim предоставляет вам 26 именованных «буфера обмена», в которые можно надолго складывать текст и он не будет потерян при операциях копирования или удаления.
— Vim может копировать или удалять текст, не затирая содержимое регистра, а дополняя его.

Овладеть особой магией регистров

Конвертация базы из Windows1251 в UTF8

Reading time3 min
Views37K
Всем привет. Столкнулся с вопросом конвертации базы из CP1251 в UTF8.
Полазив по просторам Интернета не нашел готового скрита (видимо плохо искал).
Вот решил написать свой скриптп. Конвертация происходит безо всяких дампов базы. Решены проблемы с символами е = ё и т.д.

продолжение под катом
Читать дальше →

Open Source и бизнес: Начало

Reading time4 min
Views3.6K
После прошлой моей статьи Open Source и бизнес, у меня, как и у многих появились вопросы. Ко мне обратились с просьбой делиться мнениями и опытом, по мере моего продвижения. Поэтому я решил начать серию статей о создании бизнеса на рынке Open Source. Так как в России данный рынок развит не так сильно, как за рубежом, то я думаю, что этот вопрос стоит внимания.

Благодаря комментарию AllySanders, я почерпнул для себя немного из данного руководства, но большая часть книги «Руководство по получению прибыли от Свободных и Открытых Проектов», Джона Эндрюса, расчитана не для России и трудно применима к нашей среде. Поэтому давайте рассмотрим и разберём все аспекты данного бизнеса.
Читать дальше →

О таких разных «френдах». Не обманывайся!

Reading time3 min
Views736

Здравствуй.

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

В чем первоначальная идея социальных сетей? Как мне кажется — объединить друзей для лучшего взаимодействия, не растерять контакты и быть всегда в курсе дел и на связи. Сейчас, зачастую, «друзьями» называют всех кого не попадя, вплоть до незнакомцев, постучавшихся к тебе в контакты и которого ты отметил как друга. Такая разношерстная аудитория просто обязана быть причесанной и разложенной по полкам.
Читать дальше →

Фонетический поиск

Reading time4 min
Views16K
Пару лет назад была задача написать для одного из сайтов такой поиск, который бы распознавал опечатки и предлагал бы исправленные запросы. Было перепробовано несколько вариантов, об одном из которых я и хотел тут написать. Поиск на основе звучания слов может стирать языковые границы, поскольку имена собственные на разных языках созвучны. Например, ищешь «Арнольд Шварцнеггер» на русском — находишь «Arnold Schwarzenegger» на английском, или ищешь «Michael Jordan» — находишь «Майкл Джордан», или ищешь «Чак Норрис» — и вдруг он сам тебя находит. Помимо поиска созвучных слов этот метод нивелирует большое количество опечаток. А то че-то задолбала попса, надо больше про инсайд…

...больше про инсайд

DIV-ная верстка, footer прижат

Reading time2 min
Views5.1K
Много способов прижатия футера к нижней кромке окна уже изобретено и описано, стОит только погуглить. Но хочется поделиться тем, к чему пришёл самостоятельно (пришлось изобретать, т.к. не было инета под рукой :))…

Сначала пошёл ошибочным путём: основной DIV с контентом — 100% по высоте, а хидер и футер спозиционированы абсолютно. Выглядит нормально во всех браузерах, но в ИЕ6 вылезал косяк — при динамической смене контента (через javascript) футер оставался на своем месте, т.е. не перемещался вслед за кромкой окна. Поэтому сделал так: DIV с основным контентом, DIV-футер с отрицательным margin-top, DIV-хидер с абсолютным позиционированием. Нарисовался очевидный плюс данного способа: основной контент страницы в HTML-коде максимально приближен к началу документа.
Дальше код и комментарии

Резиновая верстка — линейная зависимость горизонтального положения DIV-ов

Reading time2 min
Views12K
Задача: менять горизонтальное положение блочных элементов по линейной зависимости при изменении размера окна браузера.
Решение: термин «пропорциональность» подразумевает линейную зависимость двух параметров. Вспоминаем школьный курс геометрии: линейная зависимость — это прямая, её уравнение выглядит следующим образом: Y=aX+b. Для построения уравнения прямой необходимо и достаточно знать координаты двух точек, принадлежащих этой прямой. Если принять за Y горизонтальное положение блока, а за X — ширину окна, то задача сводится к определению параметров a и b.
Читать дальше →

Information

Rating
9,111-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity